mirror of
https://github.com/pret/pmd-sky.git
synced 2026-03-21 17:25:15 -05:00
260 lines
5.6 KiB
ArmAsm
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
|