pmd-sky/asm/overlay_31_02382FBC.s
2025-10-22 21:15:44 -04:00

260 lines
5.6 KiB
ArmAsm

.include "asm/macros.inc"
.include "overlay_31_02382FBC.inc"
.text
; https://decomp.me/scratch/jiDJb
arm_func_start HandleStairsMenu
HandleStairsMenu: ; 0x02382FBC
stmdb sp!, {r4, lr}
sub sp, sp, #0x138
ldr r0, _02383218 ; =ov31_0238A2A0
ldr r1, [r0, #4]
ldr r0, [r1, #0xc]
cmp r0, #5
addls pc, pc, r0, lsl #2
b _0238320C
_02382FDC: ; jump table
b _02382FF4 ; case 0
b _0238308C ; case 1
b _0238320C ; case 2
b _02383170 ; case 3
b _023831DC ; case 4
b _0238320C ; case 5
_02382FF4:
ldr r2, [r1, #0x14]
ldr r3, _0238321C ; =DUNGEON_SUBMENU_ITEMS_1
ldr r0, _02383220 ; =DUNGEON_WINDOW_PARAMS_7
add r3, r3, r2, lsl #5
ldr r1, _02383224 ; =0x00400013
mov r2, #0
bl CreateParentMenuFromStringIds
ldr r1, _02383218 ; =ov31_0238A2A0
ldr r3, _02383228 ; =ov31_02389E22
ldr r4, [r1, #4]
mov r2, #0x10
strb r0, [r4, #1]
ldr r0, [r1, #4]
mov r4, #0
ldr r1, [r0, #0x14]
ldr r0, _0238322C ; =DUNGEON_WINDOW_PARAMS_6
mov r1, r1, lsl #2
ldrh r3, [r3, r1]
str r2, [sp, #0xac]
ldr r1, _02383230 ; =0x80000813
strh r3, [sp, #0xa8]
str r4, [sp]
ldr r3, _02383234 ; =StairsSubheadingCallback
add r2, sp, #0xa0
str r4, [sp, #4]
bl CreateAdvancedTextBox
ldr r2, _02383218 ; =ov31_0238A2A0
mov r1, r4
ldr r3, [r2, #4]
strb r0, [r3]
ldr r0, [r2, #4]
ldrsb r0, [r0]
bl SetAdvancedTextBoxField0x1C4
ldr r0, _02383218 ; =ov31_0238A2A0
mov r1, #1
ldr r0, [r0, #4]
str r1, [r0, #0xc]
b _0238320C
_0238308C:
ldrsb r0, [r1, #1]
bl IsParentMenuActive
cmp r0, #0
bne _0238320C
ldr r0, _02383218 ; =ov31_0238A2A0
ldr r0, [r0, #4]
ldrsb r0, [r0, #1]
bl GetSimpleMenuResult__0202AEA4
ldr r1, _02383218 ; =ov31_0238A2A0
ldr r1, [r1, #4]
str r0, [r1, #4]
bl CloseMainStairsMenu
ldr r0, _02383218 ; =ov31_0238A2A0
ldr r1, [r0, #4]
ldr r0, [r1, #4]
add r0, r0, #1
cmp r0, #6
addls pc, pc, r0, lsl #2
b _0238320C
_023830D8: ; jump table
b _02383168 ; case 0
b _0238320C ; case 1
b _023830F4 ; case 2
b _023830F4 ; case 3
b _023830F4 ; case 4
b _023830F4 ; case 5
b _02383144 ; case 6
_023830F4:
ldr r1, [r1, #8]
ldr r0, _02383238 ; =ov29_0237C91C
ldr r4, [r1, #0xb4]
ldrh r1, [r0]
add r0, r4, #0x4a
bl SetMonsterActionFields
mov r0, #0
strb r0, [r4, #0x4e]
strh r0, [r4, #0x50]
strh r0, [r4, #0x52]
strb r0, [r4, #0x54]
strh r0, [r4, #0x56]
strh r0, [r4, #0x58]
bl GetLeader
ldr r0, [r0, #0xb4]
mov r1, #0x26
add r0, r0, #0x4a
bl SetMonsterActionFields
mov r0, #4
b _02383210
_02383144:
bl CloseMainStairsMenu
ldr r0, _02383218 ; =ov31_0238A2A0
mov r3, #2
ldr r2, [r0, #4]
mov r1, #3
str r3, [r2, #0x10]
ldr r0, [r0, #4]
str r1, [r0, #0xc]
b _0238320C
_02383168:
mov r0, #4
b _02383210
_02383170:
ldr r0, [r1, #0x10]
cmp r0, #0
subne r0, r0, #1
strne r0, [r1, #0x10]
bne _0238320C
mov r0, #0x10
str r0, [sp, #0x14]
ldr r1, [r1, #0x14]
ldr r0, _02383228 ; =ov31_02389E22
mov r1, r1, lsl #2
ldrh r1, [r0, r1]
mov ip, #1
ldr r0, _0238323C ; =DUNGEON_WINDOW_PARAMS_5
strh r1, [sp, #0x10]
str ip, [sp]
ldr r1, _02383240 ; =0x00001812
ldr r3, _02383244 ; =ov31_02383248
add r2, sp, #8
str ip, [sp, #4]
bl CreateAdvancedTextBox
ldr r1, _02383218 ; =ov31_0238A2A0
mov r2, #4
ldr r3, [r1, #4]
strb r0, [r3, #2]
ldr r0, [r1, #4]
str r2, [r0, #0xc]
b _0238320C
_023831DC:
ldrsb r0, [r1, #2]
bl IsAdvancedTextBoxActive
cmp r0, #0
bne _0238320C
ldr r0, _02383218 ; =ov31_0238A2A0
ldr r0, [r0, #4]
ldrsb r0, [r0, #2]
bl CloseAdvancedTextBox
ldr r0, _02383218 ; =ov31_0238A2A0
mov r1, #0
ldr r0, [r0, #4]
str r1, [r0, #0xc]
_0238320C:
mov r0, #1
_02383210:
add sp, sp, #0x138
ldmia sp!, {r4, pc}
.align 2, 0
_02383218: .word ov31_0238A2A0
_0238321C: .word DUNGEON_SUBMENU_ITEMS_1
_02383220: .word DUNGEON_WINDOW_PARAMS_7
_02383224: .word 0x00400013
_02383228: .word ov31_02389E22
_0238322C: .word DUNGEON_WINDOW_PARAMS_6
_02383230: .word 0x80000813
_02383234: .word StairsSubheadingCallback
_02383238: .word ov29_0237C91C
_0238323C: .word DUNGEON_WINDOW_PARAMS_5
_02383240: .word 0x00001812
_02383244: .word ov31_02383248
arm_func_end HandleStairsMenu
; https://decomp.me/scratch/VPa2L
arm_func_start ov31_02383248
ov31_02383248: ; 0x02383248
stmdb sp!, {r4, lr}
ldr r1, _02383284 ; =ov31_0238A2A0
ldr r2, _02383288 ; =OVERLAY31_UNKNOWN_STRING_IDS
ldr r1, [r1, #4]
mov r4, r0
ldr r0, [r1, #0x14]
mov r0, r0, lsl #2
ldrh r0, [r2, r0]
bl StringFromId
mov r3, r0
mov r0, r4
mov r1, #4
mov r2, #0x14
bl DrawTextInWindow
ldmia sp!, {r4, pc}
.align 2, 0
_02383284: .word ov31_0238A2A0
_02383288: .word OVERLAY31_UNKNOWN_STRING_IDS
arm_func_end ov31_02383248
; https://decomp.me/scratch/oWQ5d
arm_func_start CloseMainStairsMenu
CloseMainStairsMenu: ; 0x0238328C
stmdb sp!, {r3, lr}
ldr r0, _023832EC ; =ov31_0238A2A0
mvn r1, #1
ldr r0, [r0, #4]
ldrsb r0, [r0]
cmp r0, r1
beq _023832BC
bl CloseAdvancedTextBox
ldr r0, _023832EC ; =ov31_0238A2A0
mvn r1, #1
ldr r0, [r0, #4]
strb r1, [r0]
_023832BC:
ldr r0, _023832EC ; =ov31_0238A2A0
mvn r1, #1
ldr r0, [r0, #4]
ldrsb r0, [r0, #1]
cmp r0, r1
ldmeqia sp!, {r3, pc}
bl CloseParentMenu
ldr r0, _023832EC ; =ov31_0238A2A0
mvn r1, #1
ldr r0, [r0, #4]
strb r1, [r0, #1]
ldmia sp!, {r3, pc}
.align 2, 0
_023832EC: .word ov31_0238A2A0
arm_func_end CloseMainStairsMenu
; https://decomp.me/scratch/MmxLF
arm_func_start FreeStairsMenu
FreeStairsMenu: ; 0x023832F0
stmdb sp!, {r3, lr}
ldr r0, _02383324 ; =ov31_0238A2A0
ldr r0, [r0, #4]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl CloseMainStairsMenu
ldr r0, _02383324 ; =ov31_0238A2A0
ldr r0, [r0, #4]
bl MemFree
ldr r0, _02383324 ; =ov31_0238A2A0
mov r1, #0
str r1, [r0, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_02383324: .word ov31_0238A2A0
arm_func_end FreeStairsMenu