mirror of
https://github.com/pret/pmd-sky.git
synced 2026-03-21 17:25:15 -05:00
8534 lines
167 KiB
ArmAsm
8534 lines
167 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "overlay_31_023838E4.inc"
|
|
|
|
.text
|
|
|
|
; https://decomp.me/scratch/pyVsB
|
|
arm_func_start ItemsMenu
|
|
ItemsMenu: ; 0x023838E4
|
|
#ifdef JAPAN
|
|
#define OV31_023838E4_OFFSET -0xA4
|
|
#else
|
|
#define OV31_023838E4_OFFSET 0
|
|
#endif
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x234
|
|
sub sp, sp, #0x400
|
|
mov r2, #0
|
|
mov r5, r2
|
|
str r2, [sp, #0x30]
|
|
mov sl, r0
|
|
mov sb, r1
|
|
mov r6, r5
|
|
ldr r7, [sl, #0xb4]
|
|
bl ov29_022EBB4C
|
|
mov r0, #0x1280
|
|
mov r1, #8
|
|
bl MemAlloc
|
|
ldr r1, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
mvn r4, #1
|
|
str r0, [r1]
|
|
add r0, r0, #0x1000
|
|
str sl, [r0, #0x19c]
|
|
ldr r0, [r1]
|
|
add r3, r4, #1
|
|
add r0, r0, #0x1000
|
|
strb r4, [r0, #0x193]
|
|
ldr r0, [r1]
|
|
mov r2, #0
|
|
add r0, r0, #0x1000
|
|
strb r4, [r0, #0x192]
|
|
ldr r8, [r1]
|
|
mov r0, #1
|
|
add r8, r8, #0x1000
|
|
strb r4, [r8, #0x194]
|
|
ldr r8, [r1]
|
|
add r8, r8, #0x1000
|
|
strb r4, [r8, #0x195]
|
|
ldr r4, [r1]
|
|
add r4, r4, #0x1000
|
|
str r3, [r4, #0x198]
|
|
ldr r3, [r1]
|
|
add r3, r3, #0x1000
|
|
str r2, [r3, #0x1ac]
|
|
ldr r3, [r1]
|
|
add r3, r3, #0x1000
|
|
strb r0, [r3, #0x1b1]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x1000
|
|
strb r2, [r0, #0x1b2]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x1000
|
|
str r2, [r0, #0x1b4]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x278
|
|
add r0, r0, #0x1000
|
|
bl ov31_02383880
|
|
cmp sb, #0
|
|
beq _02383A1C
|
|
ldrb r0, [sb]
|
|
cmp r0, #0
|
|
beq _023839E4
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
ldr r1, [sb, #4]
|
|
ldr r0, [r0]
|
|
mov r6, #1
|
|
add r0, r0, #0x1000
|
|
str r1, [r0, #0x1b4]
|
|
_023839E4:
|
|
ldrb r0, [sb, #1]
|
|
cmp r0, #0
|
|
ldreq r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
moveq r1, #0
|
|
ldreq r0, [r0]
|
|
addeq r0, r0, #0x1000
|
|
streqb r1, [r0, #0x1b1]
|
|
ldrb r0, [sb, #2]
|
|
cmp r0, #0
|
|
ldrne r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
movne r1, #1
|
|
ldrne r0, [r0]
|
|
addne r0, r0, #0x1000
|
|
strneb r1, [r0, #0x1b2]
|
|
_02383A1C:
|
|
mov r0, #3
|
|
bl Arm9LoadUnkFieldNa0x2029EC8
|
|
mov r1, r0
|
|
ldr r0, _0238489C ; =OVERLAY31_JP_STRING
|
|
bl Debug_Print0
|
|
bl GetNbItemsInBag
|
|
ldr r2, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
cmp r6, #0
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x1000
|
|
str r0, [r1, #0x1a8]
|
|
ldrne r0, [r2]
|
|
movne r1, #0
|
|
addne r0, r0, #0x1000
|
|
strneb r1, [r0, #0x1b3]
|
|
bne _02383A74
|
|
mov r0, sl
|
|
bl ov31_0238372C
|
|
ldr r1, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x1000
|
|
strb r0, [r1, #0x1b3]
|
|
_02383A74:
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
ldr r2, [r0]
|
|
add r0, r2, #0x1000
|
|
ldrb r1, [r0, #0x1b2]
|
|
cmp r1, #0
|
|
ldreq r1, [r0, #0x1a8]
|
|
cmpeq r1, #0
|
|
ldreqb r0, [r0, #0x1b3]
|
|
cmpeq r0, #0
|
|
bne _02383AC4
|
|
ldr r1, _023848A0 ; =0x000008E5
|
|
mov r0, #0
|
|
mov r2, #1
|
|
bl DisplayMessage
|
|
bl ov31_023837C8
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
mov r0, #1
|
|
b _0238511C
|
|
_02383AC4:
|
|
add r0, r2, #0x1000
|
|
ldr r0, [r0, #0x1a8]
|
|
cmp r0, #0
|
|
bne _02383B08
|
|
mov r0, sl
|
|
bl ov31_0238372C
|
|
ldr r2, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
mov r3, #1
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x1000
|
|
strb r0, [r1, #0x1b3]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x1000
|
|
strb r3, [r0, #0x1b2]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x1000
|
|
strb r3, [r0, #0x1b1]
|
|
_02383B08:
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1100
|
|
ldrsb r0, [r0, #0x93]
|
|
cmp r0, r1
|
|
beq _02383B48
|
|
bl IsInventoryMenuActive
|
|
cmp r0, #0
|
|
bne _02383D78
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1100
|
|
ldrsb r0, [r0, #0x93]
|
|
bl ov10_022BCC7C
|
|
b _02383D78
|
|
_02383B48:
|
|
bl GetNbItemsInBag
|
|
ldr r4, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
ldr r1, [r4]
|
|
add r1, r1, #0x1000
|
|
str r0, [r1, #0x1a8]
|
|
ldr r0, [r4]
|
|
add r0, r0, #0x1000
|
|
ldr r0, [r0, #0x1a8]
|
|
cmp r0, #0
|
|
beq _02383C44
|
|
ldr fp, _023848A4 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r8, #0
|
|
_02383B78:
|
|
mov r0, #6
|
|
mul r1, r8, r0
|
|
ldr r0, [fp]
|
|
ldr r2, [r0, #0x384]
|
|
ldrb r0, [r2, r1]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _02383BD8
|
|
ldrb r0, [r2, r1]
|
|
tst r0, #4
|
|
beq _02383BD8
|
|
bic r0, r0, #4
|
|
strb r0, [r2, r1]
|
|
ldr r1, [r4]
|
|
mov r0, #3
|
|
add r1, r1, #0x1000
|
|
str r8, [r1, #0x1ac]
|
|
ldr r1, [r4]
|
|
add r1, r1, #0x1000
|
|
ldr r1, [r1, #0x1ac]
|
|
and r1, r1, #0xff
|
|
bl Arm9StoreUnkFieldNa0x2029ED8
|
|
_02383BD8:
|
|
add r8, r8, #1
|
|
cmp r8, #0x32
|
|
blt _02383B78
|
|
ldr fp, _023848A8 ; =DUNGEON_PTR
|
|
mov r4, #0
|
|
_02383BEC:
|
|
ldr r0, [fp]
|
|
add r0, r0, r4, lsl #2
|
|
add r0, r0, #0x12000
|
|
ldr r8, [r0, #0xb28 + OV31_023838E4_OFFSET]
|
|
mov r0, r8
|
|
bl EntityIsValidOverlay31
|
|
cmp r0, #0
|
|
beq _02383C38
|
|
ldr r1, [r8, #0xb4]
|
|
ldrb r0, [r1, #0x62]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _02383C38
|
|
ldrb r0, [r1, #0x62]
|
|
tst r0, #4
|
|
bicne r0, r0, #4
|
|
strneb r0, [r1, #0x62]
|
|
_02383C38:
|
|
add r4, r4, #1
|
|
cmp r4, #4
|
|
blt _02383BEC
|
|
_02383C44:
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
ldr r4, [r0]
|
|
add r0, r4, #0x1000
|
|
ldrb r1, [r0, #0x1b2]
|
|
cmp r1, #0
|
|
bne _02383D1C
|
|
ldr r0, [r0, #0x1a8]
|
|
cmp r0, #0
|
|
beq _02383D1C
|
|
mov r0, #3
|
|
bl Arm9LoadUnkFieldNa0x2029EC8
|
|
ldr r2, _023848AC ; =ov31_02383478
|
|
add r1, r4, #0x278
|
|
str r2, [sp]
|
|
add r1, r1, #0x1000
|
|
str r1, [sp, #4]
|
|
add r1, r4, #0x1000
|
|
ldrb r2, [r1, #0x1b3]
|
|
ldr r1, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
add r3, r4, #0x1f8
|
|
str r2, [sp, #8]
|
|
ldr r1, [r1]
|
|
mov r2, r0
|
|
add r0, r1, #0x1000
|
|
ldr r0, [r0, #0x1a8]
|
|
mov r1, r6
|
|
add r3, r3, #0x1000
|
|
bl ov10_022BD474
|
|
ldr r1, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
cmp r6, #0
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x1000
|
|
strb r0, [r1, #0x193]
|
|
beq _02383CEC
|
|
ldr r0, _023848B0 ; =DUNGEON_WINDOW_PARAMS_10
|
|
ldr r1, _023848B4 ; =ov31_02383854
|
|
bl CreateTextBox
|
|
ldr r1, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x1000
|
|
strb r0, [r1, #0x194]
|
|
b _02383D78
|
|
_02383CEC:
|
|
ldr r0, _023848B8 ; =DUNGEON_WINDOW_PARAMS_11
|
|
mov r1, #0
|
|
bl CreateTextBox
|
|
ldr r2, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
mvn r3, #0
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x1000
|
|
strb r0, [r1, #0x195]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x1000
|
|
str r3, [r0, #0x198]
|
|
b _02383D78
|
|
_02383D1C:
|
|
ldr r3, _023848BC ; =0x000008E3
|
|
add r0, sp, #0x540
|
|
add r1, r4, #0x278
|
|
strh r3, [r0, #0x64]
|
|
mov r2, #0x10
|
|
str r2, [sp, #0x5a8]
|
|
add r0, r1, #0x1000
|
|
str r0, [sp]
|
|
mov r4, #1
|
|
str r4, [sp, #4]
|
|
add r2, sp, #0x500
|
|
str r4, [sp, #8]
|
|
mov r4, #0
|
|
ldr r0, _023848C0 ; =DUNGEON_WINDOW_PARAMS_12
|
|
ldr r1, _023848C4 ; =0x00400813
|
|
ldr r3, _023848AC ; =ov31_02383478
|
|
add r2, r2, #0x9c
|
|
str r4, [sp, #0xc]
|
|
bl CreateInventoryMenu
|
|
ldr r1, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x1000
|
|
strb r0, [r1, #0x193]
|
|
_02383D78:
|
|
mvn r0, #0
|
|
str r0, [sp, #0x38]
|
|
sub r0, r0, #1
|
|
ldr r4, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
str r0, [sp, #0x3c]
|
|
_02383D8C:
|
|
mov r0, #0x14
|
|
bl AdvanceFrame
|
|
mov r0, #0
|
|
add r1, sp, #0x42
|
|
bl GetPressedButtons
|
|
ldr r1, [r4]
|
|
add r0, r1, #0x1000
|
|
ldrb r0, [r0, #0x1b2]
|
|
cmp r0, #0
|
|
bne _023843D0
|
|
add r0, r1, #0x1100
|
|
ldrsb r0, [r0, #0x93]
|
|
bl ov10_022BCE44
|
|
mov fp, r0
|
|
ldr r0, [r4]
|
|
add r0, r0, #0x1100
|
|
ldrsb r0, [r0, #0x93]
|
|
bl PopInventoryMenuField0x1A3
|
|
str r0, [sp, #0x2c]
|
|
ldr r0, [r4]
|
|
add r1, r0, #0x1100
|
|
ldrsb r8, [r1, #0x95]
|
|
ldr r0, [sp, #0x3c]
|
|
cmp r8, r0
|
|
beq _02384054
|
|
ldrsb r0, [r1, #0x93]
|
|
bl ov10_022BCE44
|
|
cmp r0, #0
|
|
ldr r0, [r4]
|
|
bne _02383F7C
|
|
add r0, r0, #0x1100
|
|
ldrsb r0, [r0, #0x93]
|
|
bl ov10_022BCDA8
|
|
str r0, [sp, #0x34]
|
|
ldr r0, [r4]
|
|
add r1, r0, #0x1000
|
|
ldr r2, [r1, #0x198]
|
|
ldr r0, [sp, #0x34]
|
|
cmp r2, r0
|
|
beq _02384054
|
|
str r0, [r1, #0x198]
|
|
ldr r1, [r4]
|
|
mov r0, r8
|
|
add r1, r1, #0x1000
|
|
ldr r1, [r1, #0x19c]
|
|
str r1, [sp, #0x28]
|
|
bl sub_02027B1C
|
|
ldr r1, [sp, #0x34]
|
|
mov r0, #6
|
|
mul r2, r1, r0
|
|
ldr r0, _023848A4 ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x384]
|
|
add r1, r0, r2
|
|
ldrb r0, [r0, r2]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _02383F28
|
|
ldrb r0, [r1, #1]
|
|
str r0, [sp, #0x10]
|
|
cmp r0, #0
|
|
beq _02383F00
|
|
ldr r1, _023848A8 ; =DUNGEON_PTR
|
|
add r0, sp, #0x400
|
|
ldr r3, [r1]
|
|
ldr r1, [sp, #0x10]
|
|
add r0, r0, #0x4c
|
|
add r1, r3, r1, lsl #2
|
|
add r1, r1, #0x12000
|
|
ldr r1, [r1, #0xb24 + OV31_023838E4_OFFSET]
|
|
mov r2, #0
|
|
bl ov29_022E2A78
|
|
add r0, sp, #0x400
|
|
add r0, r0, #0x4c
|
|
str r0, [sp, #0x584]
|
|
add r0, sp, #0x500
|
|
#ifdef JAPAN
|
|
ldr r2, [sp, #0x38]
|
|
add r0, r0, #0x4c
|
|
str r0, [sp]
|
|
add r0, sp, #0x4c
|
|
mov r1, #0x400
|
|
add r2, r2, #0x1d40
|
|
#else
|
|
add r0, r0, #0x4c
|
|
str r0, [sp]
|
|
ldr r2, _023848C8 ; =0x000008E7
|
|
add r0, sp, #0x4c
|
|
mov r1, #0x400
|
|
#endif
|
|
mov r3, #0
|
|
bl PreprocessStringFromId
|
|
ldr r0, _023848A8 ; =DUNGEON_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [sp, #0x10]
|
|
add r0, r1, r0, lsl #2
|
|
add r0, r0, #0x12000
|
|
ldr r0, [r0, #0xb24 + OV31_023838E4_OFFSET]
|
|
str r0, [sp, #0x28]
|
|
b _02383F34
|
|
_02383F00:
|
|
ldrsh r0, [r1, #4]
|
|
#if defined(EUROPE)
|
|
add r0, r0, #0x4b
|
|
add r0, r0, #0x2f00
|
|
#elif defined(JAPAN)
|
|
add r0, r0, #0x41
|
|
add r0, r0, #0x1d00
|
|
#else
|
|
add r0, r0, #0x49
|
|
add r0, r0, #0x2f00
|
|
#endif
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bl StringFromId
|
|
mov r1, r0
|
|
add r0, sp, #0x4c
|
|
bl strcpy
|
|
b _02383F34
|
|
_02383F28:
|
|
ldr r1, _023848CC ; =ov31_02389F5C
|
|
add r0, sp, #0x4c
|
|
bl strcpy
|
|
_02383F34:
|
|
mov r1, #2
|
|
mov r0, r8
|
|
mov r2, r1
|
|
add r3, sp, #0x4c
|
|
bl DrawTextInWindow
|
|
mov r0, r8
|
|
bl UpdateWindow
|
|
ldr r0, [sp, #0x28]
|
|
mov r1, #0
|
|
mov r2, #1
|
|
bl TryPointCameraToMonster
|
|
ldr r0, [sp, #0x28]
|
|
mov r2, #1
|
|
add r0, r0, #4
|
|
mov r1, #0
|
|
mov r3, r2
|
|
bl DrawTileGrid
|
|
b _02384054
|
|
_02383F7C:
|
|
add r0, r0, #0x1000
|
|
ldr r1, [r0, #0x198]
|
|
cmp r1, #0x7f
|
|
beq _02384054
|
|
ldr r1, [r0, #0x19c]
|
|
ldrsh r0, [r1, #4]
|
|
ldrsh r1, [r1, #6]
|
|
bl GetTile
|
|
ldr r0, [r0, #0x10]
|
|
bl GetItemInfo
|
|
ldrb r1, [r0]
|
|
tst r1, #1
|
|
movne r1, #1
|
|
moveq r1, #0
|
|
tst r1, #0xff
|
|
beq _02383FE4
|
|
ldrsh r0, [r0, #4]
|
|
#if defined(EUROPE)
|
|
add r0, r0, #0x4b
|
|
add r0, r0, #0x2f00
|
|
#elif defined(JAPAN)
|
|
add r0, r0, #0x41
|
|
add r0, r0, #0x1d00
|
|
#else
|
|
add r0, r0, #0x49
|
|
add r0, r0, #0x2f00
|
|
#endif
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bl StringFromId
|
|
mov r1, r0
|
|
add r0, sp, #0x4c
|
|
bl strcpy
|
|
b _02383FF0
|
|
_02383FE4:
|
|
ldr r1, _023848CC ; =ov31_02389F5C
|
|
add r0, sp, #0x4c
|
|
bl strcpy
|
|
_02383FF0:
|
|
mov r0, r8
|
|
bl sub_02027B1C
|
|
mov r1, #2
|
|
mov r0, r8
|
|
mov r2, r1
|
|
add r3, sp, #0x4c
|
|
bl DrawTextInWindow
|
|
mov r0, r8
|
|
bl UpdateWindow
|
|
ldr r0, [r4]
|
|
mov r1, #0
|
|
add r2, r0, #0x1000
|
|
mov r0, #0x7f
|
|
str r0, [r2, #0x198]
|
|
ldr r0, [r4]
|
|
mov r2, #1
|
|
add r0, r0, #0x1000
|
|
ldr r8, [r0, #0x19c]
|
|
mov r0, r8
|
|
bl TryPointCameraToMonster
|
|
mov r2, #1
|
|
add r0, r8, #4
|
|
mov r1, #0
|
|
mov r3, r2
|
|
bl DrawTileGrid
|
|
_02384054:
|
|
ldr r0, [r4]
|
|
add r0, r0, #0x1100
|
|
ldrsb r0, [r0, #0x93]
|
|
bl IsInventoryMenuActive
|
|
cmp r0, #0
|
|
beq _02384088
|
|
ldr r0, [r4]
|
|
add r0, r0, #0x1100
|
|
ldrsb r0, [r0, #0x93]
|
|
bl ov10_022BCDA8
|
|
and r1, r0, #0xff
|
|
mov r0, #3
|
|
bl Arm9StoreUnkFieldNa0x2029ED8
|
|
_02384088:
|
|
ldr r0, [r4]
|
|
add r0, r0, #0x1100
|
|
ldrsb r0, [r0, #0x93]
|
|
bl IsInventoryMenuActive
|
|
cmp r0, #0
|
|
bne _023841A4
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1100
|
|
ldrsb r0, [r0, #0x93]
|
|
bl ov10_022BCDBC
|
|
movs r4, r0
|
|
bmi _0238419C
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
and r1, r4, #0xff
|
|
ldr r2, [r0]
|
|
mov r0, #3
|
|
add r2, r2, #0x1000
|
|
str r4, [r2, #0x1ac]
|
|
bl Arm9StoreUnkFieldNa0x2029ED8
|
|
cmp fp, #0
|
|
bne _02384138
|
|
ldr r1, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
mov r0, #6
|
|
ldr r1, [r1]
|
|
mul r8, r4, r0
|
|
add r0, r1, #0x1000
|
|
ldrb r3, [r0, #0x1b2]
|
|
ldr r2, _023848A4 ; =BAG_ITEMS_PTR_MIRROR
|
|
add r1, sl, #4
|
|
str r3, [sp]
|
|
ldr r2, [r2]
|
|
ldr r0, [r0, #0x1ac]
|
|
ldr r2, [r2, #0x384]
|
|
mov r3, #0
|
|
add r2, r2, r8
|
|
ldrb r2, [r2, #1]
|
|
bl ov29_022EBAB0
|
|
ldr r0, _023848A4 ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x384]
|
|
add r0, r0, r8
|
|
str r0, [sb, #4]
|
|
b _02384194
|
|
_02384138:
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
add r1, sl, #4
|
|
ldr r0, [r0]
|
|
mov r2, #0
|
|
add r0, r0, #0x1000
|
|
ldrb r4, [r0, #0x1b2]
|
|
mov r3, #1
|
|
str r4, [sp]
|
|
ldr r0, [r0, #0x1ac]
|
|
bl ov29_022EBAB0
|
|
ldrsh r0, [sl, #4]
|
|
ldrsh r1, [sl, #6]
|
|
bl GetTile
|
|
ldr r0, [r0, #0x10]
|
|
bl GetItemInfo
|
|
ldrb r1, [r0]
|
|
tst r1, #1
|
|
movne r1, #1
|
|
moveq r1, #0
|
|
tst r1, #0xff
|
|
strne r0, [sb, #4]
|
|
moveq r0, #0
|
|
streq r0, [sb, #4]
|
|
_02384194:
|
|
mov r4, #1
|
|
b _02384438
|
|
_0238419C:
|
|
mov r4, #2
|
|
b _02384438
|
|
_023841A4:
|
|
ldrh r0, [sp, #0x42]
|
|
tst r0, #8
|
|
beq _023842DC
|
|
ldr r0, _023848D0 ; =0x00003F04
|
|
bl PlaySeByIdVolumeWrapper
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1100
|
|
ldrsb r0, [r0, #0x93]
|
|
bl ov10_022BCDF4
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1100
|
|
ldrsb r0, [r0, #0x93]
|
|
bl ov10_022BCDBC
|
|
ldr r2, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x1000
|
|
str r0, [r1, #0x1ac]
|
|
ldr r1, [r2]
|
|
mov r0, #3
|
|
add r1, r1, #0x1000
|
|
ldr r1, [r1, #0x1ac]
|
|
and r1, r1, #0xff
|
|
bl Arm9StoreUnkFieldNa0x2029ED8
|
|
cmp fp, #0
|
|
bne _02384278
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
ldr r3, _023848A4 ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r0, [r0]
|
|
mov r2, #6
|
|
add r0, r0, #0x1000
|
|
ldrb r4, [r0, #0x1b2]
|
|
ldr r0, [r0, #0x1ac]
|
|
add r1, sl, #4
|
|
str r4, [sp]
|
|
ldr r4, [r3]
|
|
mov r3, #0
|
|
ldr r4, [r4, #0x384]
|
|
mla r2, r0, r2, r4
|
|
ldrb r2, [r2, #1]
|
|
bl ov29_022EBAB0
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
ldr r1, _023848A4 ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r0, [r0]
|
|
ldr r1, [r1]
|
|
add r0, r0, #0x1000
|
|
ldr r2, [r1, #0x384]
|
|
ldr r1, [r0, #0x1ac]
|
|
mov r0, #6
|
|
mla r0, r1, r0, r2
|
|
str r0, [sb, #4]
|
|
b _023842D4
|
|
_02384278:
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
add r1, sl, #4
|
|
ldr r0, [r0]
|
|
mov r2, #0
|
|
add r0, r0, #0x1000
|
|
ldrb r4, [r0, #0x1b2]
|
|
mov r3, #1
|
|
str r4, [sp]
|
|
ldr r0, [r0, #0x1ac]
|
|
bl ov29_022EBAB0
|
|
ldrsh r0, [sl, #4]
|
|
ldrsh r1, [sl, #6]
|
|
bl GetTile
|
|
ldr r0, [r0, #0x10]
|
|
bl GetItemInfo
|
|
ldrb r1, [r0]
|
|
tst r1, #1
|
|
movne r1, #1
|
|
moveq r1, #0
|
|
tst r1, #0xff
|
|
strne r0, [sb, #4]
|
|
moveq r0, #0
|
|
streq r0, [sb, #4]
|
|
_023842D4:
|
|
mov r4, #3
|
|
b _02384438
|
|
_023842DC:
|
|
tst r0, #4
|
|
bne _023842F4
|
|
tst r0, #0x800
|
|
ldreq r0, [sp, #0x2c]
|
|
cmpeq r0, #0
|
|
beq _02383D8C
|
|
_023842F4:
|
|
cmp r6, #0
|
|
cmpeq fp, #0
|
|
bne _02383D8C
|
|
ldr r0, [sp, #0x2c]
|
|
cmp r0, #0
|
|
bne _02384314
|
|
mov r0, #5
|
|
bl PlaySeVolumeWrapper
|
|
_02384314:
|
|
bl ov29_02346E5C
|
|
bl SortItemsInBag
|
|
mov r8, #0
|
|
_02384320:
|
|
ldr r0, _023848A8 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, r8, lsl #2
|
|
add r0, r0, #0x12000
|
|
ldr fp, [r0, #0xb28 + OV31_023838E4_OFFSET]
|
|
mov r0, fp
|
|
bl EntityIsValidOverlay31
|
|
cmp r0, #0
|
|
beq _02384374
|
|
ldr r1, [fp, #0xb4]
|
|
ldrb r0, [r1, #0x62]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _02384374
|
|
ldrsh r0, [r1, #0x66]
|
|
cmp r0, #0xb7
|
|
bne _02384374
|
|
add r0, r1, #0x62
|
|
bl ItemZInit
|
|
_02384374:
|
|
add r8, r8, #1
|
|
cmp r8, #4
|
|
blt _02384320
|
|
ldr r0, [r4]
|
|
add r1, r0, #0x1000
|
|
ldr r0, [sp, #0x38]
|
|
str r0, [r1, #0x198]
|
|
bl GetNbItemsInBag
|
|
movs r1, r0
|
|
beq _023843C0
|
|
ldr r0, [r4]
|
|
add r0, r0, #0x1100
|
|
ldrsb r0, [r0, #0x93]
|
|
bl ov10_022BCC60
|
|
ldr r0, [r4]
|
|
add r0, r0, #0x1100
|
|
ldrsb r0, [r0, #0x93]
|
|
bl ov10_022BCCB0
|
|
b _02383D8C
|
|
_023843C0:
|
|
mov r0, #1
|
|
str r0, [sp, #0x30]
|
|
mov r4, #2
|
|
b _02384438
|
|
_023843D0:
|
|
add r0, r1, #0x1100
|
|
ldrsb r0, [r0, #0x93]
|
|
bl ov10_022BCDF4
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
add r1, sl, #4
|
|
ldr r0, [r0]
|
|
mov r2, #0
|
|
add r0, r0, #0x1000
|
|
ldrb r4, [r0, #0x1b2]
|
|
mov r3, #1
|
|
str r4, [sp]
|
|
ldr r0, [r0, #0x1ac]
|
|
bl ov29_022EBAB0
|
|
ldrsh r0, [sl, #4]
|
|
ldrsh r1, [sl, #6]
|
|
bl GetTile
|
|
ldr r0, [r0, #0x10]
|
|
bl GetItemInfo
|
|
ldrb r1, [r0]
|
|
mov r4, #1
|
|
tst r1, #1
|
|
movne r1, #1
|
|
moveq r1, #0
|
|
tst r1, #0xff
|
|
moveq r0, #0
|
|
str r0, [sb, #4]
|
|
_02384438:
|
|
mov r0, #0x14
|
|
bl AdvanceFrame
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
ldr r1, [r0]
|
|
add r0, r1, #0x1000
|
|
ldrb r0, [r0, #0x1b2]
|
|
cmp r0, #0
|
|
bne _02384490
|
|
add r0, r1, #0x1100
|
|
ldrsb r0, [r0, #0x93]
|
|
bl ov10_022BCE44
|
|
cmp r0, #0
|
|
bne _02384490
|
|
ldr r0, _023848A4 ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x384]
|
|
ldrb r0, [r0]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
moveq r4, #2
|
|
_02384490:
|
|
cmp r4, #2
|
|
bne _023844AC
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
mov r5, #1
|
|
b _023850D8
|
|
_023844AC:
|
|
cmp r4, #0
|
|
beq _023850D8
|
|
cmp r4, #3
|
|
bne _023844D8
|
|
add r0, r7, #0x4a
|
|
bl ov29_022EBBE8
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
mov r5, #0
|
|
b _023850D8
|
|
_023844D8:
|
|
cmp r6, #0
|
|
beq _023844FC
|
|
add r0, r7, #0x54
|
|
bl ov29_022EBB68
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
mov r5, #0
|
|
b _023850D8
|
|
_023844FC:
|
|
bl ov29_022EBB8C
|
|
mov r1, r0
|
|
mov r0, sl
|
|
mov r2, #0xa
|
|
bl GetItemToUseByIndex
|
|
mov r8, r0
|
|
ldr r0, [sl, #0xb4]
|
|
str r0, [sp, #0x14]
|
|
bl ov29_022EBA70
|
|
bl ov29_022EBB98
|
|
cmp r0, #0x90
|
|
bhs _023849F4
|
|
bl ov29_022EBB98
|
|
cmp r0, #0x80
|
|
bne _02384598
|
|
ldrsh r1, [r8, #4]
|
|
mov r0, #9
|
|
bl AddDungeonSubMenuOption
|
|
ldrsh r0, [r8, #4]
|
|
bl GetItemCategoryVeneer
|
|
cmp r0, #6
|
|
beq _02384598
|
|
ldr r0, _023848A8 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x75b]
|
|
cmp r0, #0
|
|
beq _02384570
|
|
bl IsBagFull
|
|
b _02384588
|
|
_02384570:
|
|
ldr r0, [sp, #0x14]
|
|
ldrb r0, [r0, #0x62]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
_02384588:
|
|
cmp r0, #0
|
|
beq _02384598
|
|
mov r0, #9
|
|
bl DisableDungeonSubMenuOption
|
|
_02384598:
|
|
bl ov29_022EBB98
|
|
cmp r0, #0x80
|
|
bne _023845C4
|
|
ldr r0, _023848A8 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x75b]
|
|
cmp r0, #0
|
|
beq _023845C4
|
|
ldrsh r1, [r8, #4]
|
|
mov r0, #0xa
|
|
bl AddDungeonSubMenuOption
|
|
_023845C4:
|
|
mov r0, r8
|
|
bl GetItemAction
|
|
movs r4, r0
|
|
beq _02384654
|
|
ldrsh r1, [r8, #4]
|
|
bl AddDungeonSubMenuOption
|
|
ldrb r0, [r8]
|
|
tst r0, #8
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _023845FC
|
|
mov r0, r4
|
|
bl DisableDungeonSubMenuOption
|
|
_023845FC:
|
|
mov r0, r8
|
|
bl ov29_023468FC
|
|
cmp r0, #0
|
|
bne _02384614
|
|
mov r0, r4
|
|
bl DisableDungeonSubMenuOption
|
|
_02384614:
|
|
mov r0, sl
|
|
bl MonsterHasEmbargoStatus
|
|
cmp r0, #0
|
|
bne _02384634
|
|
mov r0, r8
|
|
bl IsItemUnkMissionItem2
|
|
cmp r0, #0
|
|
beq _0238463C
|
|
_02384634:
|
|
mov r0, r4
|
|
bl DisableDungeonSubMenuOption
|
|
_0238463C:
|
|
mov r0, r8
|
|
bl IsItemUsableNow
|
|
cmp r0, #0
|
|
bne _02384654
|
|
mov r0, r4
|
|
bl DisableDungeonSubMenuOption
|
|
_02384654:
|
|
bl ov29_022EBB98
|
|
cmp r0, #0x33
|
|
bhs _02384728
|
|
ldrb r0, [r8, #1]
|
|
cmp r0, #0
|
|
bne _02384728
|
|
ldrsh r0, [r8, #4]
|
|
bl GetItemCategoryVeneer
|
|
cmp r0, #0
|
|
beq _0238468C
|
|
ldrsh r0, [r8, #4]
|
|
bl GetItemCategoryVeneer
|
|
cmp r0, #1
|
|
bne _02384728
|
|
_0238468C:
|
|
ldrb r0, [r8]
|
|
ldrsh r1, [r8, #4]
|
|
tst r0, #0x10
|
|
beq _023846A8
|
|
mov r0, #0x3d
|
|
bl AddDungeonSubMenuOption
|
|
b _023846B0
|
|
_023846A8:
|
|
mov r0, #0x3c
|
|
bl AddDungeonSubMenuOption
|
|
_023846B0:
|
|
ldr r0, _023848A4 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r3, #0
|
|
ldr r4, [r0]
|
|
mov lr, #1
|
|
mov r0, #6
|
|
b _02384720
|
|
_023846C8:
|
|
mul r1, r3, r0
|
|
ldr r2, [r4, #0x384]
|
|
ldrb fp, [r2, r1]
|
|
tst fp, #1
|
|
movne ip, lr
|
|
moveq ip, #0
|
|
tst ip, #0xff
|
|
beq _0238471C
|
|
ldrb r1, [r2, r1]
|
|
tst r1, #0x10
|
|
beq _0238471C
|
|
tst fp, #8
|
|
movne r1, #1
|
|
moveq r1, #0
|
|
tst r1, #0xff
|
|
beq _0238471C
|
|
mov r0, #0x3c
|
|
bl DisableDungeonSubMenuOption
|
|
mov r0, #0x3d
|
|
bl DisableDungeonSubMenuOption
|
|
b _02384728
|
|
_0238471C:
|
|
add r3, r3, #1
|
|
_02384720:
|
|
cmp r3, #0x32
|
|
blt _023846C8
|
|
_02384728:
|
|
bl ov29_022EBB98
|
|
cmp r0, #0x81
|
|
beq _02384804
|
|
bl ov29_022EBB98
|
|
cmp r0, #0x80
|
|
beq _02384860
|
|
ldrsh r1, [r8, #4]
|
|
mov r2, #0
|
|
mov r0, #0x36
|
|
str r2, [sp, #0x18]
|
|
bl AddDungeonSubMenuOption
|
|
mov r4, #0
|
|
_02384758:
|
|
ldr r0, _023848A8 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, r4, lsl #2
|
|
add r0, r0, #0x12000
|
|
ldr r0, [r0, #0xb28 + OV31_023838E4_OFFSET]
|
|
str r0, [sp, #0x1c]
|
|
bl EntityIsValidOverlay31
|
|
cmp r0, #0
|
|
beq _023847A0
|
|
ldr r0, [sp, #0x1c]
|
|
mov r1, #0
|
|
ldr fp, [r0, #0xb4]
|
|
#ifdef JAPAN
|
|
strb r1, [fp, #0x15d]
|
|
#else
|
|
strb r1, [fp, #0x161]
|
|
#endif
|
|
bl CheckVariousConditions__02301624
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
streq r0, [sp, #0x18]
|
|
#ifdef JAPAN
|
|
streqb r0, [fp, #0x15d]
|
|
#else
|
|
streqb r0, [fp, #0x161]
|
|
#endif
|
|
_023847A0:
|
|
add r4, r4, #1
|
|
cmp r4, #4
|
|
blt _02384758
|
|
add r0, sp, #0x40
|
|
bl sub_0204F10C
|
|
cmp r0, #0
|
|
beq _023847EC
|
|
bl GetCurrentBagCapacity
|
|
cmp r0, #2
|
|
bge _023847EC
|
|
ldrsh r0, [sp, #0x40]
|
|
sub r0, r0, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
cmp r0, #1
|
|
movls r0, #0
|
|
strls r0, [sp, #0x18]
|
|
_023847EC:
|
|
ldr r0, [sp, #0x18]
|
|
cmp r0, #0
|
|
bne _02384860
|
|
mov r0, #0x36
|
|
bl DisableDungeonSubMenuOption
|
|
b _02384860
|
|
_02384804:
|
|
ldr r0, _023848A8 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x75b]
|
|
cmp r0, #0
|
|
beq _02384860
|
|
ldrsh r1, [r8, #4]
|
|
mov r0, #0x37
|
|
bl AddDungeonSubMenuOption
|
|
mov r0, r8
|
|
bl IsHeldItemInBag
|
|
cmp r0, #0
|
|
beq _02384840
|
|
ldrsh r1, [r8, #4]
|
|
mov r0, #0x3e
|
|
bl AddDungeonSubMenuOption
|
|
_02384840:
|
|
mov r0, sl
|
|
bl CheckVariousConditions__0230156C
|
|
cmp r0, #0
|
|
beq _02384860
|
|
mov r0, #0x37
|
|
bl DisableDungeonSubMenuOption
|
|
mov r0, #0x3e
|
|
bl DisableDungeonSubMenuOption
|
|
_02384860:
|
|
bl ov29_022EBB98
|
|
cmp r0, #0x33
|
|
bhs _02384908
|
|
ldrsh r0, [sl, #4]
|
|
ldrsh r1, [sl, #6]
|
|
bl GetTile
|
|
mov r4, r0
|
|
ldr r0, [r4, #0x10]
|
|
cmp r0, #0
|
|
bne _023848D4
|
|
ldrsh r1, [r8, #4]
|
|
mov r0, #8
|
|
bl AddDungeonSubMenuOption
|
|
b _02384908
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
#define OV31_023838E4_OFFSET_2 0x1458
|
|
#else
|
|
#define OV31_023838E4_OFFSET_2 0
|
|
#endif
|
|
_02384898: .word OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
_0238489C: .word OVERLAY31_JP_STRING
|
|
_023848A0: .word 0x000008E5 + OV31_023838E4_OFFSET_2
|
|
_023848A4: .word BAG_ITEMS_PTR_MIRROR
|
|
_023848A8: .word DUNGEON_PTR
|
|
_023848AC: .word ov31_02383478
|
|
_023848B0: .word DUNGEON_WINDOW_PARAMS_10
|
|
_023848B4: .word ov31_02383854
|
|
_023848B8: .word DUNGEON_WINDOW_PARAMS_11
|
|
_023848BC: .word 0x000008E3 + OV31_023838E4_OFFSET_2
|
|
_023848C0: .word DUNGEON_WINDOW_PARAMS_12
|
|
_023848C4: .word 0x00400813
|
|
#ifndef JAPAN
|
|
_023848C8: .word 0x000008E7
|
|
#endif
|
|
_023848CC: .word ov31_02389F5C
|
|
_023848D0: .word 0x00003F04
|
|
_023848D4:
|
|
ldr r0, [r0]
|
|
cmp r0, #3
|
|
bne _02384908
|
|
ldrsh r1, [r8, #4]
|
|
mov r0, #0x3a
|
|
bl AddDungeonSubMenuOption
|
|
ldr r0, [r4, #0x10]
|
|
bl ov29_022E1620
|
|
bl IsItemUnkMissionItem2
|
|
cmp r0, #0
|
|
beq _02384908
|
|
mov r0, #0x3a
|
|
bl DisableDungeonSubMenuOption
|
|
_02384908:
|
|
ldrsh r0, [r8, #4]
|
|
bl GetItemCategoryVeneer
|
|
cmp r0, #0
|
|
bne _02384928
|
|
ldrsh r1, [r8, #4]
|
|
mov r0, #0x27
|
|
bl AddDungeonSubMenuOption
|
|
b _02384950
|
|
_02384928:
|
|
ldrsh r0, [r8, #4]
|
|
bl GetItemCategoryVeneer
|
|
cmp r0, #1
|
|
ldrsh r1, [r8, #4]
|
|
bne _02384948
|
|
mov r0, #0x41
|
|
bl AddDungeonSubMenuOption
|
|
b _02384950
|
|
_02384948:
|
|
mov r0, #0xb
|
|
bl AddDungeonSubMenuOption
|
|
_02384950:
|
|
ldr r0, [sp, #0x14]
|
|
bl MonsterCanThrowItems
|
|
cmp r0, #0
|
|
bne _02384978
|
|
mov r0, #0x27
|
|
bl DisableDungeonSubMenuOption
|
|
mov r0, #0x41
|
|
bl DisableDungeonSubMenuOption
|
|
mov r0, #0xb
|
|
bl DisableDungeonSubMenuOption
|
|
_02384978:
|
|
mov r0, sl
|
|
bl MonsterHasEmbargoStatus
|
|
cmp r0, #0
|
|
beq _023849A0
|
|
mov r0, #0x27
|
|
bl DisableDungeonSubMenuOption
|
|
mov r0, #0x41
|
|
bl DisableDungeonSubMenuOption
|
|
mov r0, #0xb
|
|
bl DisableDungeonSubMenuOption
|
|
_023849A0:
|
|
mov r0, r8
|
|
bl IsItemUnkMissionItem2
|
|
cmp r0, #0
|
|
beq _023849D8
|
|
mov r0, #0x27
|
|
bl DisableDungeonSubMenuOption
|
|
mov r0, #0x41
|
|
bl DisableDungeonSubMenuOption
|
|
mov r0, #0xb
|
|
bl DisableDungeonSubMenuOption
|
|
mov r0, #0xa
|
|
bl DisableDungeonSubMenuOption
|
|
mov r0, #9
|
|
bl DisableDungeonSubMenuOption
|
|
_023849D8:
|
|
mov r0, r8
|
|
bl IsItemUsableNow
|
|
cmp r0, #0
|
|
bne _02384C48
|
|
mov r0, #0xb
|
|
bl DisableDungeonSubMenuOption
|
|
b _02384C48
|
|
_023849F4:
|
|
bl ov29_022EBB98
|
|
ldr r1, _023848A8 ; =DUNGEON_PTR
|
|
sub r2, r0, #0x90
|
|
ldr r0, [r1]
|
|
add r0, r0, r2, lsl #2
|
|
add r0, r0, #0x12000
|
|
ldr r0, [r0, #0xb28 + OV31_023838E4_OFFSET]
|
|
str r0, [sp, #0x20]
|
|
bl EntityIsValidOverlay31
|
|
cmp r0, #0
|
|
beq _02384C48
|
|
mov r0, #0
|
|
str r0, [sp, #0x24]
|
|
ldr r0, [sp, #0x20]
|
|
ldr r4, [sp, #0x24]
|
|
mov r1, r0
|
|
ldr fp, [r1, #0xb4]
|
|
bl CheckVariousConditions__0230156C
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
strne r0, [sp, #0x24]
|
|
ldrsh r0, [r8, #4]
|
|
bl GetItemCategoryVeneer
|
|
cmp r0, #5
|
|
ldrsh r0, [r8, #4]
|
|
moveq r4, #1
|
|
bl GetItemCategoryVeneer
|
|
cmp r0, #9
|
|
ldr r0, _023848A8 ; =DUNGEON_PTR
|
|
moveq r4, #1
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x75b]
|
|
cmp r0, #0
|
|
beq _02384AC0
|
|
ldrsh r1, [r8, #4]
|
|
mov r0, #0x37
|
|
bl AddDungeonSubMenuOption
|
|
mov r0, r8
|
|
bl IsHeldItemInBag
|
|
cmp r0, #0
|
|
beq _02384AA4
|
|
ldrsh r1, [r8, #4]
|
|
mov r0, #0x3e
|
|
bl AddDungeonSubMenuOption
|
|
_02384AA4:
|
|
ldr r0, [sp, #0x24]
|
|
cmp r0, #0
|
|
beq _02384AC0
|
|
mov r0, #0x37
|
|
bl DisableDungeonSubMenuOption
|
|
mov r0, #0x3e
|
|
bl DisableDungeonSubMenuOption
|
|
_02384AC0:
|
|
ldrb r0, [fp, #7]
|
|
cmp r0, #0
|
|
beq _02384BEC
|
|
mov r0, r8
|
|
bl GetItemAction
|
|
movs r4, r0
|
|
beq _02384B5C
|
|
ldrsh r1, [r8, #4]
|
|
bl AddDungeonSubMenuOption
|
|
ldrb r0, [r8]
|
|
tst r0, #8
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _02384B04
|
|
mov r0, r4
|
|
bl DisableDungeonSubMenuOption
|
|
_02384B04:
|
|
mov r0, r8
|
|
bl ov29_023468FC
|
|
cmp r0, #0
|
|
bne _02384B1C
|
|
mov r0, r4
|
|
bl DisableDungeonSubMenuOption
|
|
_02384B1C:
|
|
ldr r0, [sp, #0x20]
|
|
bl MonsterHasEmbargoStatus
|
|
cmp r0, #0
|
|
bne _02384B3C
|
|
mov r0, r8
|
|
bl IsItemUnkMissionItem2
|
|
cmp r0, #0
|
|
beq _02384B44
|
|
_02384B3C:
|
|
mov r0, r4
|
|
bl DisableDungeonSubMenuOption
|
|
_02384B44:
|
|
mov r0, r8
|
|
bl IsItemUsableNow
|
|
cmp r0, #0
|
|
bne _02384B5C
|
|
mov r0, r4
|
|
bl DisableDungeonSubMenuOption
|
|
_02384B5C:
|
|
ldrsh r0, [r8, #4]
|
|
bl GetItemCategoryVeneer
|
|
cmp r0, #0
|
|
bne _02384B7C
|
|
ldrsh r1, [r8, #4]
|
|
mov r0, #0x27
|
|
bl AddDungeonSubMenuOption
|
|
b _02384B98
|
|
_02384B7C:
|
|
ldrsh r0, [r8, #4]
|
|
bl GetItemCategoryVeneer
|
|
cmp r0, #1
|
|
bne _02384B98
|
|
ldrsh r1, [r8, #4]
|
|
mov r0, #0x41
|
|
bl AddDungeonSubMenuOption
|
|
_02384B98:
|
|
ldr r0, [sp, #0x14]
|
|
bl MonsterCanThrowItems
|
|
cmp r0, #0
|
|
bne _02384BB8
|
|
mov r0, #0x27
|
|
bl DisableDungeonSubMenuOption
|
|
mov r0, #0x41
|
|
bl DisableDungeonSubMenuOption
|
|
_02384BB8:
|
|
mov r0, sl
|
|
bl MonsterHasEmbargoStatus
|
|
cmp r0, #0
|
|
bne _02384BD8
|
|
mov r0, sl
|
|
bl MonsterHasEmbargoStatus
|
|
cmp r0, #0
|
|
beq _02384C48
|
|
_02384BD8:
|
|
mov r0, #0x27
|
|
bl DisableDungeonSubMenuOption
|
|
mov r0, #0x41
|
|
bl DisableDungeonSubMenuOption
|
|
b _02384C48
|
|
_02384BEC:
|
|
ldrsh r1, [r8, #4]
|
|
mov r0, #0x38
|
|
bl AddDungeonSubMenuOption
|
|
cmp r4, #0
|
|
beq _02384C08
|
|
mov r0, #0x38
|
|
bl DisableDungeonSubMenuOption
|
|
_02384C08:
|
|
ldr r0, [sp, #0x20]
|
|
bl MonsterHasEmbargoStatus
|
|
cmp r0, #0
|
|
bne _02384C28
|
|
mov r0, r8
|
|
bl IsItemUnkMissionItem2
|
|
cmp r0, #0
|
|
beq _02384C30
|
|
_02384C28:
|
|
mov r0, #0x38
|
|
bl DisableDungeonSubMenuOption
|
|
_02384C30:
|
|
mov r0, r8
|
|
bl IsItemUsableNow
|
|
cmp r0, #0
|
|
bne _02384C48
|
|
mov r0, #0x38
|
|
bl DisableDungeonSubMenuOption
|
|
_02384C48:
|
|
ldrsh r1, [r8, #4]
|
|
mov r0, #0xc
|
|
bl AddDungeonSubMenuOption
|
|
bl ov29_022EB9A0
|
|
bl ov29_022EBA84
|
|
mov r2, #0
|
|
ldr r1, _02385128 ; =ov29_0237C91C
|
|
ldr r4, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
b _02384C9C
|
|
_02384C6C:
|
|
add r8, r1, r2, lsl #3
|
|
ldr r3, [r4]
|
|
ldrh r8, [r8, #6]
|
|
add r3, r3, r2, lsl #3
|
|
add r3, r3, #0x1100
|
|
strh r8, [r3, #0x38]
|
|
mov r8, r2, lsl #3
|
|
ldr r3, [r4]
|
|
add r2, r2, #1
|
|
add r3, r3, r8
|
|
add r3, r3, #0x1000
|
|
str r2, [r3, #0x13c]
|
|
_02384C9C:
|
|
cmp r2, r0
|
|
blt _02384C6C
|
|
ldr r3, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
#ifdef JAPAN
|
|
mov r4, #0x1d40
|
|
#else
|
|
ldr r4, _0238512C ; =0x000008E8
|
|
#endif
|
|
ldr r1, [r3]
|
|
mvn r0, #0
|
|
add r1, r1, r2, lsl #3
|
|
add r1, r1, #0x1100
|
|
strh r4, [r1, #0x38]
|
|
ldr r1, [r3]
|
|
mov r4, #0
|
|
add r1, r1, r2, lsl #3
|
|
add r1, r1, #0x1000
|
|
str r0, [r1, #0x13c]
|
|
ldr r1, [r3]
|
|
add r1, r1, r2, lsl #3
|
|
add r1, r1, #0x1100
|
|
strh r4, [r1, #0x40]
|
|
ldr r1, [r3]
|
|
add r1, r1, r2, lsl #3
|
|
add r1, r1, #0x1000
|
|
str r0, [r1, #0x144]
|
|
ldr r0, [r3]
|
|
add r0, r0, #0x92
|
|
add r0, r0, #0x1100
|
|
bl ov29_0234E988
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
mov r2, r4
|
|
ldr r1, [r0]
|
|
add r0, r1, #0x138
|
|
add r1, r1, #0x188
|
|
add r0, r0, #0x1000
|
|
add r1, r1, #0x1000
|
|
bl ov31_0238513C
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
add r2, sp, #0x500
|
|
ldr r1, [r0]
|
|
add r2, r2, #0x9c
|
|
add r0, r1, #0x188
|
|
add r0, r0, #0x1000
|
|
str r0, [sp, #0x5fc]
|
|
add r0, r1, #0x1000
|
|
add r3, r1, #0x138
|
|
ldrb r0, [r0, #0x1b2]
|
|
ldr r1, _02385130 ; =0x00000213
|
|
add r3, r3, #0x1000
|
|
cmp r0, #0
|
|
ldrne r0, _02385134 ; =DUNGEON_WINDOW_PARAMS_13
|
|
ldreq r0, _02385138 ; =DUNGEON_WINDOW_PARAMS_9
|
|
bl CreateParentMenuFromStringIds
|
|
ldr r4, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
mov r8, #0x14
|
|
ldr r1, [r4]
|
|
add r1, r1, #0x1000
|
|
strb r0, [r1, #0x192]
|
|
_02384D78:
|
|
ldr r0, [r4]
|
|
add r0, r0, #0x1100
|
|
ldrsb r0, [r0, #0x92]
|
|
bl IsParentMenuActive
|
|
cmp r0, #0
|
|
bne _02384E24
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1100
|
|
ldrsb r0, [r0, #0x92]
|
|
bl GetSimpleMenuResult__0202AEA4
|
|
cmp r0, #0
|
|
blt _02384E04
|
|
ldr r1, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
sub r2, r0, #1
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x1000
|
|
str r2, [r0, #0x1a4]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x1000
|
|
ldr r0, [r0, #0x1a4]
|
|
bl ov29_022EB804
|
|
cmp r0, #0
|
|
mov r4, #0
|
|
beq _02384E30
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
ldr r2, _02385128 ; =ov29_0237C91C
|
|
ldr r1, [r0]
|
|
add r0, r7, #0x4a
|
|
add r1, r1, #0x1000
|
|
ldr r1, [r1, #0x1a4]
|
|
mov r1, r1, lsl #3
|
|
ldrh r1, [r2, r1]
|
|
bl ov29_022EBBA8
|
|
b _02384E30
|
|
_02384E04:
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
mov r4, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1000
|
|
ldrb r0, [r0, #0x1b2]
|
|
cmp r0, #0
|
|
movne r4, #2
|
|
b _02384E30
|
|
_02384E24:
|
|
mov r0, r8
|
|
bl AdvanceFrame
|
|
b _02384D78
|
|
_02384E30:
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x92
|
|
add r0, r0, #0x1100
|
|
bl ov29_0234E988
|
|
ldr r0, _023848A8 ; =DUNGEON_PTR
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
cmp r4, #1
|
|
add r0, r0, #0x1a000
|
|
#ifdef JAPAN
|
|
strb r1, [r0, #0x1a3]
|
|
#else
|
|
strb r1, [r0, #0x247]
|
|
#endif
|
|
ldreq r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
ldreq r0, [r0]
|
|
addeq r0, r0, #0x1000
|
|
ldreqb r0, [r0, #0x1b2]
|
|
cmpeq r0, #0
|
|
beq _02383B08
|
|
cmp r4, #2
|
|
bne _02384E90
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
mov r5, #1
|
|
b _023850D8
|
|
_02384E90:
|
|
ldrh r0, [r7, #0x4a]
|
|
cmp r0, #0x38
|
|
cmpne r0, #0x37
|
|
cmpne r0, #0x3e
|
|
bne _02384EC4
|
|
bl ov29_022EBB98
|
|
sub r2, r0, #0x90
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
strb r2, [r7, #0x4e]
|
|
bl ov29_022EA428
|
|
mov r5, #0
|
|
b _023850D8
|
|
_02384EC4:
|
|
cmp r0, #0x36
|
|
bne _02384FA0
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1100
|
|
ldrsb r0, [r0, #0x94]
|
|
cmp r0, r1
|
|
beq _02384F00
|
|
bl CloseTextBox2
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1000
|
|
strb r1, [r0, #0x194]
|
|
_02384F00:
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1100
|
|
ldrsb r0, [r0, #0x95]
|
|
cmp r0, r1
|
|
beq _02384F34
|
|
bl CloseTextBox2
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1000
|
|
strb r1, [r0, #0x195]
|
|
_02384F34:
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x93
|
|
add r0, r0, #0x1100
|
|
bl ov31_02383768
|
|
mov r0, #0x62
|
|
bl AdvanceFrame
|
|
add r0, sp, #0x48
|
|
mov r1, #2
|
|
mov r2, #0
|
|
#ifndef JAPAN
|
|
mov r3, #1
|
|
#endif
|
|
bl ov31_023877EC
|
|
cmp r0, #0
|
|
beq _02384F88
|
|
ldr r2, [sp, #0x48]
|
|
mov r0, #0
|
|
mov r1, r0
|
|
strb r2, [r7, #0x54]
|
|
bl ov29_022EA428
|
|
mov r5, #0
|
|
b _023850D8
|
|
_02384F88:
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
mov r0, #1
|
|
bl ResetLeaderActionFields
|
|
b _02383B08
|
|
_02384FA0:
|
|
cmp r0, #0x12
|
|
beq _02384FC0
|
|
add r0, r0, #0xf3
|
|
add r0, r0, #0xff00
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
cmp r0, #1
|
|
bhi _023850C8
|
|
_02384FC0:
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1100
|
|
ldrsb r0, [r0, #0x94]
|
|
cmp r0, r1
|
|
beq _02384FF4
|
|
bl CloseTextBox2
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1000
|
|
strb r1, [r0, #0x194]
|
|
_02384FF4:
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1100
|
|
ldrsb r0, [r0, #0x95]
|
|
cmp r0, r1
|
|
beq _02385028
|
|
bl CloseTextBox2
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1000
|
|
strb r1, [r0, #0x195]
|
|
_02385028:
|
|
ldr r0, _02384898 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x93
|
|
add r0, r0, #0x1100
|
|
bl ov31_02383768
|
|
mov r0, #0x62
|
|
bl AdvanceFrame
|
|
mov r0, #0x62
|
|
bl AdvanceFrame
|
|
#ifdef JAPAN
|
|
add r0, sp, #0x44
|
|
mov r1, #3
|
|
mov r2, #1
|
|
#else
|
|
mov r2, #1
|
|
add r0, sp, #0x44
|
|
mov r1, #3
|
|
mov r3, r2
|
|
#endif
|
|
bl ov31_023877EC
|
|
cmp r0, #0
|
|
beq _023850B0
|
|
ldr r1, [sp, #0x44]
|
|
ldr r0, _023848A8 ; =DUNGEON_PTR
|
|
strb r1, [r7, #0x54]
|
|
ldr r2, [r0]
|
|
ldr r0, [sp, #0x44]
|
|
mov r1, #0
|
|
add r0, r2, r0, lsl #2
|
|
add r0, r0, #0x12000
|
|
ldr r0, [r0, #0xb28 + OV31_023838E4_OFFSET]
|
|
mov r2, #1
|
|
bl TryPointCameraToMonster
|
|
mov r0, #0
|
|
mov r2, #1
|
|
mov r1, r0
|
|
#ifdef JAPAN
|
|
strb r2, [r7, #0x238]
|
|
#else
|
|
strb r2, [r7, #0x23c]
|
|
#endif
|
|
bl ov29_022EA428
|
|
mov r5, #0
|
|
b _023850D8
|
|
_023850B0:
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
mov r0, #1
|
|
bl ResetLeaderActionFields
|
|
b _02383B08
|
|
_023850C8:
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
mov r5, #0
|
|
_023850D8:
|
|
ldr r0, _023848A8 ; =DUNGEON_PTR
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1a000
|
|
strb r1, [r0, #0x247 + OV31_023838E4_OFFSET]
|
|
bl HideTileGrid
|
|
bl ov31_023837C8
|
|
mov r0, #0x14
|
|
bl AdvanceFrame
|
|
ldr r0, [sp, #0x30]
|
|
cmp r0, #0
|
|
beq _02385118
|
|
ldr r1, _023848A0 ; =0x000008E5
|
|
mov r0, #0
|
|
mov r2, #1
|
|
bl DisplayMessage
|
|
_02385118:
|
|
mov r0, r5
|
|
_0238511C:
|
|
add sp, sp, #0x234
|
|
add sp, sp, #0x400
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02385128: .word ov29_0237C91C
|
|
#ifndef JAPAN
|
|
_0238512C: .word 0x000008E8
|
|
#endif
|
|
_02385130: .word 0x00000213
|
|
_02385134: .word DUNGEON_WINDOW_PARAMS_13
|
|
_02385138: .word DUNGEON_WINDOW_PARAMS_9
|
|
arm_func_end ItemsMenu
|
|
|
|
arm_func_start ov31_0238513C
|
|
ov31_0238513C: ; 0x0238513C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
mov r8, r0
|
|
mov r7, r1
|
|
mov r6, r2
|
|
bl ov29_022EBA84
|
|
mov r4, #0
|
|
mov r5, r0
|
|
mov sb, #3
|
|
mov sl, r4
|
|
b _02385190
|
|
_02385164:
|
|
mov r0, r4
|
|
mov r1, r6
|
|
bl ov29_022EB2C8
|
|
mov r1, r4, lsl #3
|
|
strh r0, [r8, r1]
|
|
mov r0, r4
|
|
bl ov29_022EB804
|
|
cmp r0, #0
|
|
strneb sl, [r7, r4]
|
|
streqb sb, [r7, r4]
|
|
add r4, r4, #1
|
|
_02385190:
|
|
cmp r4, r5
|
|
blt _02385164
|
|
#ifdef JAPAN
|
|
mov r1, r4, lsl #3
|
|
mov r2, #0x1d40
|
|
#else
|
|
ldr r2, _023851BC ; =0x000008E8
|
|
mov r1, r4, lsl #3
|
|
#endif
|
|
add r0, r4, #1
|
|
strh r2, [r8, r1]
|
|
mov r1, #0
|
|
strb r1, [r7, r4]
|
|
mov r0, r0, lsl #3
|
|
strh r1, [r8, r0]
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
#ifndef JAPAN
|
|
.align 2, 0
|
|
_023851BC: .word 0x000008E8
|
|
#endif
|
|
arm_func_end ov31_0238513C
|
|
|
|
arm_func_start MovesMenu
|
|
MovesMenu: ; 0x023851C0
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
sub sp, sp, #0xc
|
|
ldr r1, _023853B8 ; =DUNGEON_PTR
|
|
ldrb r4, [r0, #4]
|
|
ldr r0, [r1]
|
|
add r0, r0, r4, lsl #2
|
|
add r0, r0, #0x12000
|
|
#ifdef JAPAN
|
|
ldr r5, [r0, #0xa84]
|
|
#else
|
|
ldr r5, [r0, #0xb28]
|
|
#endif
|
|
str r5, [sp, #8]
|
|
_023851E4:
|
|
mov r6, #0
|
|
ldr sb, _023853B8 ; =DUNGEON_PTR
|
|
mov r7, r6
|
|
mov r8, r6
|
|
_023851F4:
|
|
ldr r0, [sb]
|
|
add r0, r0, r8, lsl #2
|
|
add r0, r0, #0x12000
|
|
#ifdef JAPAN
|
|
ldr r0, [r0, #0xa84]
|
|
#else
|
|
ldr r0, [r0, #0xb28]
|
|
#endif
|
|
bl ov29_02302388
|
|
cmp r0, #0
|
|
beq _0238521C
|
|
cmp r8, r4
|
|
moveq r6, r7
|
|
add r7, r7, #1
|
|
_0238521C:
|
|
add r8, r8, #1
|
|
cmp r8, #4
|
|
blt _023851F4
|
|
ldr r0, [sp, #8]
|
|
mov r1, #0
|
|
mov r2, #1
|
|
bl TryPointCameraToMonster
|
|
ldr r0, [sp, #8]
|
|
mov r2, #1
|
|
mov r3, r2
|
|
add r0, r0, #4
|
|
mov r1, #0
|
|
bl DrawTileGrid
|
|
mov r0, #1
|
|
bl ResetLeaderActionFields
|
|
str r7, [sp]
|
|
mov r1, #0
|
|
mov r3, r6
|
|
add r0, sp, #8
|
|
mov r2, #1
|
|
str r1, [sp, #4]
|
|
bl HandleMovesMenu
|
|
cmp r0, #0
|
|
bne _023853B0
|
|
bl GetLeaderActionId
|
|
cmp r0, #0x1d
|
|
bne _0238529C
|
|
bl GetLeaderAction
|
|
bl ov31_02385FE0
|
|
mov r0, #1
|
|
bl ResetLeaderActionFields
|
|
b _02385380
|
|
_0238529C:
|
|
bl GetLeaderActionId
|
|
cmp r0, #0x1e
|
|
bne _023852CC
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
bl GetLeaderAction
|
|
mov r1, #0
|
|
bl ov31_023860A4
|
|
mov r0, #1
|
|
bl ResetLeaderActionFields
|
|
b _02385380
|
|
_023852CC:
|
|
bl GetLeaderActionId
|
|
cmp r0, #0x33
|
|
bne _023852FC
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
bl GetLeaderAction
|
|
mov r1, #0
|
|
bl ov31_023860A4
|
|
mov r0, #1
|
|
bl ResetLeaderActionFields
|
|
b _02385380
|
|
_023852FC:
|
|
bl GetLeaderActionId
|
|
cmp r0, #0x1f
|
|
bne _02385328
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
bl GetLeaderAction
|
|
bl ov31_0238619C
|
|
mov r0, #1
|
|
bl ResetLeaderActionFields
|
|
b _02385380
|
|
_02385328:
|
|
bl GetLeaderActionId
|
|
cmp r0, #0x20
|
|
bne _02385354
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
bl GetLeaderAction
|
|
bl ov31_02386204
|
|
mov r0, #1
|
|
bl ResetLeaderActionFields
|
|
b _02385380
|
|
_02385354:
|
|
bl GetLeaderActionId
|
|
cmp r0, #0x21
|
|
bne _02385380
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
bl GetLeaderAction
|
|
mov r1, #1
|
|
bl ov31_02386308
|
|
mov r0, #1
|
|
bl ResetLeaderActionFields
|
|
_02385380:
|
|
bl GetLeaderActionId
|
|
cmp r0, #0
|
|
beq _023851E4
|
|
mov r0, r5
|
|
mov r1, #0
|
|
mov r2, #1
|
|
bl TryPointCameraToMonster
|
|
mov r2, #1
|
|
mov r3, r2
|
|
add r0, r5, #4
|
|
mov r1, #0
|
|
bl DrawTileGrid
|
|
_023853B0:
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_023853B8: .word DUNGEON_PTR
|
|
arm_func_end MovesMenu
|
|
|
|
arm_func_start HandleMovesMenuWrapper0
|
|
HandleMovesMenuWrapper0: ; 0x023853BC
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #8
|
|
ldr lr, [sp, #0x10]
|
|
mov ip, #0
|
|
str lr, [sp]
|
|
str ip, [sp, #4]
|
|
bl HandleMovesMenu
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end HandleMovesMenuWrapper0
|
|
|
|
arm_func_start HandleMovesMenuWrapper1
|
|
HandleMovesMenuWrapper1: ; 0x023853E0
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #8
|
|
ldr lr, [sp, #0x10]
|
|
mov ip, #1
|
|
str lr, [sp]
|
|
str ip, [sp, #4]
|
|
bl HandleMovesMenu
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end HandleMovesMenuWrapper1
|
|
|
|
arm_func_start HandleMovesMenu
|
|
HandleMovesMenu: ; 0x02385404
|
|
#ifdef JAPAN
|
|
#define HANDLE_MOVES_MENU_OFFSET -0xA4
|
|
#define HANDLE_MOVES_MENU_OFFSET_2 -4
|
|
#else
|
|
#define HANDLE_MOVES_MENU_OFFSET 0
|
|
#define HANDLE_MOVES_MENU_OFFSET_2 0
|
|
#endif
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x12c
|
|
str r1, [sp, #4]
|
|
str r0, [sp]
|
|
mov r0, #0x14
|
|
mov r1, #8
|
|
str r2, [sp, #8]
|
|
bl MemAlloc
|
|
ldr r1, _02385F70 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
mov r2, #0
|
|
str r0, [r1, #8]
|
|
str r2, [r0, #0x10]
|
|
mov r0, #0x62
|
|
bl AdvanceFrame
|
|
ldr r0, [sp, #0x154]
|
|
cmp r0, #1
|
|
bne _0238547C
|
|
ldr r0, _02385F74 ; =DUNGEON_WINDOW_PARAMS_14
|
|
bl CreateDialogueBox
|
|
mov r1, #0
|
|
str r0, [sp, #0x14]
|
|
bl sub_0202F474
|
|
ldr r0, _02385F78 ; =0x00003FCD
|
|
bl StringFromId
|
|
mov r2, r0
|
|
ldr r0, [sp, #0x14]
|
|
ldr r1, _02385F7C ; =0x00000404
|
|
mov r3, #0
|
|
bl ShowStringInDialogueBox
|
|
b _023854AC
|
|
_0238547C:
|
|
ldr r0, _02385F80 ; =DUNGEON_WINDOW_PARAMS_16
|
|
bl CreateDialogueBox
|
|
mov r1, #0
|
|
str r0, [sp, #0x14]
|
|
bl sub_0202F474
|
|
ldr r0, _02385F84 ; =0x00003FCC
|
|
bl StringFromId
|
|
mov r2, r0
|
|
ldr r0, [sp, #0x14]
|
|
ldr r1, _02385F7C ; =0x00000404
|
|
mov r3, #0
|
|
bl ShowStringInDialogueBox
|
|
_023854AC:
|
|
ldr r0, [sp]
|
|
ldr r6, [r0]
|
|
ldr sl, [r6, #0xb4]
|
|
bl GetLeader
|
|
ldr r7, [r0, #0xb4]
|
|
mov r0, r6
|
|
bl sub_0203F9CC
|
|
mov r8, #0
|
|
ldr sb, _02385F88 ; =DUNGEON_PTR
|
|
mov r4, r8
|
|
add fp, sp, #0x2c
|
|
_023854D8:
|
|
ldr r0, [sb]
|
|
add r0, r0, r4, lsl #2
|
|
add r0, r0, #0x12000
|
|
ldr r0, [r0, #0xb28 + HANDLE_MOVES_MENU_OFFSET]
|
|
bl ov29_02302388
|
|
cmp r0, #0
|
|
beq _02385514
|
|
ldr r0, [sb]
|
|
str r4, [fp, r8, lsl #2]
|
|
add r0, r0, r4, lsl #2
|
|
add r0, r0, #0x12000
|
|
ldr r0, [r0, #0xb28 + HANDLE_MOVES_MENU_OFFSET]
|
|
cmp r6, r0
|
|
streq r8, [sp, #0x10]
|
|
add r8, r8, #1
|
|
_02385514:
|
|
add r4, r4, #1
|
|
cmp r4, #4
|
|
blt _023854D8
|
|
ldr r0, [sp, #0x154]
|
|
ldr r2, [sp, #0x10]
|
|
mov r1, r8
|
|
bl sub_0204018C
|
|
str r0, [sp, #0x18]
|
|
bl sub_02041094
|
|
ldr r1, _02385F70 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
str r0, [r1]
|
|
mov r0, #0x1e
|
|
bl AdvanceFrame
|
|
_02385548:
|
|
mov r4, #0
|
|
str r4, [sp, #0xc]
|
|
mov sb, r4
|
|
bl ov29_022EA62C
|
|
ldr fp, _02385F70 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
_0238555C:
|
|
bl sub_020407EC
|
|
mov r8, r0
|
|
cmp r8, #9
|
|
addls pc, pc, r8, lsl #2
|
|
b _02385680
|
|
_02385570: ; jump table
|
|
b _02385680 ; case 0
|
|
b _0238562C ; case 1
|
|
b _02385678 ; case 2
|
|
b _023855A0 ; case 3
|
|
b _023855A0 ; case 4
|
|
b _023855A8 ; case 5
|
|
b _02385634 ; case 6
|
|
b _0238566C ; case 7
|
|
b _02385650 ; case 8
|
|
b _02385598 ; case 9
|
|
_02385598:
|
|
mov sb, #1
|
|
b _02385680
|
|
_023855A0:
|
|
mov sb, #1
|
|
b _02385680
|
|
_023855A8:
|
|
ldr r0, [sp, #0x18]
|
|
bl GetWindowIdPageStart
|
|
mov r1, #0
|
|
str r1, [fp]
|
|
add r1, sp, #0x2c
|
|
str r0, [sp, #0x10]
|
|
ldr sb, [r1, r0, lsl #2]
|
|
ldr r0, _02385F88 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, sb, lsl #2
|
|
add r0, r0, #0x12000
|
|
ldr r6, [r0, #0xb28 + HANDLE_MOVES_MENU_OFFSET]
|
|
ldr r0, [sp]
|
|
ldr sl, [r6, #0xb4]
|
|
str r6, [r0]
|
|
bl GetLeaderMonster
|
|
strb sb, [r0, #0x4e]
|
|
mov r0, r6
|
|
mov r1, #0
|
|
mov r2, #1
|
|
bl TryPointCameraToMonster
|
|
mov r2, #1
|
|
add r0, r6, #4
|
|
mov r1, #0
|
|
mov r3, r2
|
|
bl DrawTileGrid
|
|
mov r0, #0
|
|
bl ResetLeaderActionFields
|
|
mov r0, r6
|
|
bl sub_0203F9CC
|
|
bl sub_02041178
|
|
mov sb, #1
|
|
b _02385680
|
|
_0238562C:
|
|
mov r4, #1
|
|
b _02385680
|
|
_02385634:
|
|
ldrb r1, [r6, #0x24]
|
|
mov r0, #2
|
|
str r0, [sp, #0xc]
|
|
strb r1, [r7, #0x4e]
|
|
ldr r0, [fp]
|
|
strb r0, [r7, #0x54]
|
|
b _02385680
|
|
_02385650:
|
|
ldrb r1, [r6, #0x24]
|
|
mov r0, #3
|
|
str r0, [sp, #0xc]
|
|
strb r1, [r7, #0x4e]
|
|
ldr r0, [fp]
|
|
strb r0, [r7, #0x54]
|
|
b _02385680
|
|
_0238566C:
|
|
mov r0, #1
|
|
str r0, [sp, #0xc]
|
|
b _02385680
|
|
_02385678:
|
|
bl sub_02041094
|
|
str r0, [fp]
|
|
_02385680:
|
|
cmp r8, #9
|
|
addls pc, pc, r8, lsl #2
|
|
b _023856D0
|
|
_0238568C: ; jump table
|
|
b _023856D0 ; case 0
|
|
b _023856D0 ; case 1
|
|
b _023856D0 ; case 2
|
|
b _023856B4 ; case 3
|
|
b _023856B4 ; case 4
|
|
b _023856C4 ; case 5
|
|
b _023856D0 ; case 6
|
|
b _023856D0 ; case 7
|
|
b _023856D0 ; case 8
|
|
b _023856B4 ; case 9
|
|
_023856B4:
|
|
mov r0, r6
|
|
bl sub_0203FD44
|
|
str r0, [fp]
|
|
b _023856D0
|
|
_023856C4:
|
|
mov r0, r6
|
|
bl sub_0203F9CC
|
|
bl sub_02041178
|
|
_023856D0:
|
|
mov r0, #0x1e
|
|
bl AdvanceFrame
|
|
cmp r8, #0
|
|
beq _0238555C
|
|
cmp r4, #0
|
|
bne _02385EFC
|
|
cmp sb, #0
|
|
bne _02385548
|
|
ldr r0, [sp, #0xc]
|
|
cmp r0, #1
|
|
bne _02385738
|
|
ldr r0, _02385F70 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
ldrb r1, [r6, #0x24]
|
|
ldr r2, [r0]
|
|
add r0, r7, #0x4a
|
|
mov r2, r2, lsl #0x10
|
|
mov r2, r2, asr #0x10
|
|
bl ov29_022EBC2C
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
mov r0, #8
|
|
mov r1, #0x1b
|
|
bl ov29_022EA370
|
|
mov r4, #0
|
|
b _02385EFC
|
|
_02385738:
|
|
ldr r8, [r6, #0xb4]
|
|
ldr r0, _02385F70 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
add sb, r8, #0x124 + HANDLE_MOVES_MENU_OFFSET_2
|
|
ldr fp, [r0]
|
|
bl ov29_022EBA70
|
|
ldrb r0, [r8, #7]
|
|
cmp r0, #0
|
|
beq _023857B0
|
|
ldr r0, [sp, #8]
|
|
cmp r0, #0
|
|
beq _02385770
|
|
mov r0, #0x14
|
|
mov r1, #0
|
|
bl AddDungeonSubMenuOption
|
|
_02385770:
|
|
ldrb r0, [sb, fp, lsl #3]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _023857BC
|
|
ldrb r0, [sb, fp, lsl #3]
|
|
mov r1, #0
|
|
tst r0, #8
|
|
beq _023857A4
|
|
mov r0, #0x33
|
|
bl AddDungeonSubMenuOption
|
|
b _023857BC
|
|
_023857A4:
|
|
mov r0, #0x1e
|
|
bl AddDungeonSubMenuOption
|
|
b _023857BC
|
|
_023857B0:
|
|
mov r0, #0x1f
|
|
mov r1, #0
|
|
bl AddDungeonSubMenuOption
|
|
_023857BC:
|
|
ldr r0, [sp, #4]
|
|
cmp r0, #0
|
|
beq _023857E0
|
|
mov r0, #0x20
|
|
mov r1, #0
|
|
bl AddDungeonSubMenuOption
|
|
mov r0, #0x21
|
|
mov r1, #0
|
|
bl AddDungeonSubMenuOption
|
|
_023857E0:
|
|
mov r0, #0x1d
|
|
mov r1, #0
|
|
bl AddDungeonSubMenuOption
|
|
ldr r0, [sp, #4]
|
|
cmp r0, #0
|
|
bne _02385804
|
|
mov r0, #0x20
|
|
bl DisableDungeonSubMenuOption
|
|
b _0238595C
|
|
_02385804:
|
|
ldr r0, _02385F70 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
ldr fp, [r0]
|
|
add r0, r8, fp, lsl #3
|
|
add r0, r0, #0x100
|
|
ldrh r0, [r0, #0x28 + HANDLE_MOVES_MENU_OFFSET_2]
|
|
mov sb, fp
|
|
bl IsNot2TurnsMoveOrSketch
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
beq _0238592C
|
|
add sb, sb, #1
|
|
b _02385920
|
|
_02385834:
|
|
add r0, r8, sb, lsl #3
|
|
ldrb r0, [r0, #0x124 + HANDLE_MOVES_MENU_OFFSET_2]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _02385928
|
|
add r0, r8, sb, lsl #3
|
|
add r0, r0, #0x100
|
|
ldrh r0, [r0, #0x28 + HANDLE_MOVES_MENU_OFFSET_2]
|
|
bl IsNot2TurnsMoveOrSketch
|
|
cmp r0, #0
|
|
beq _02385928
|
|
add r0, r8, sb, lsl #3
|
|
ldrb r0, [r0, #0x124 + HANDLE_MOVES_MENU_OFFSET_2]
|
|
tst r0, #2
|
|
bne _0238591C
|
|
add r0, sb, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r3, r0, asr #0x10
|
|
b _023858A4
|
|
_02385888:
|
|
add r0, r8, r3, lsl #3
|
|
ldrb r0, [r0, #0x124 + HANDLE_MOVES_MENU_OFFSET_2]
|
|
tst r0, #2
|
|
beq _023858AC
|
|
add r0, r3, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r3, r0, asr #0x10
|
|
_023858A4:
|
|
cmp r3, #4
|
|
blt _02385888
|
|
_023858AC:
|
|
mov r0, fp, lsl #0x10
|
|
mov r2, r0, asr #0x10
|
|
b _0238590C
|
|
_023858B8:
|
|
add r0, r2, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r1, r0, asr #0x10
|
|
add r0, r8, r2, lsl #3
|
|
add sb, r0, #0x100
|
|
b _023858F8
|
|
_023858D0:
|
|
add fp, r8, r1, lsl #3
|
|
add fp, fp, #0x100
|
|
ldrh r0, [sb, #0x28 + HANDLE_MOVES_MENU_OFFSET_2]
|
|
ldrh fp, [fp, #0x28 + HANDLE_MOVES_MENU_OFFSET_2]
|
|
cmp r0, fp
|
|
moveq r0, #0
|
|
beq _0238592C
|
|
add r0, r1, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r1, r0, asr #0x10
|
|
_023858F8:
|
|
cmp r1, r3
|
|
blt _023858D0
|
|
add r0, r2, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r2, r0, asr #0x10
|
|
_0238590C:
|
|
cmp r2, r3
|
|
blt _023858B8
|
|
mov r0, #1
|
|
b _0238592C
|
|
_0238591C:
|
|
add sb, sb, #1
|
|
_02385920:
|
|
cmp sb, #4
|
|
blt _02385834
|
|
_02385928:
|
|
mov r0, #0
|
|
_0238592C:
|
|
cmp r0, #0
|
|
bne _0238593C
|
|
mov r0, #0x20
|
|
bl DisableDungeonSubMenuOption
|
|
_0238593C:
|
|
ldr r1, _02385F70 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
mov r0, r8
|
|
ldr r1, [r1]
|
|
bl ov31_023863F8
|
|
cmp r0, #0
|
|
bne _0238595C
|
|
mov r0, #0x21
|
|
bl DisableDungeonSubMenuOption
|
|
_0238595C:
|
|
ldr r1, _02385F70 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
mov r0, r8
|
|
ldr r1, [r1]
|
|
bl ov31_023863F8
|
|
cmp r0, #0
|
|
bne _0238597C
|
|
mov r0, #0x21
|
|
bl DisableDungeonSubMenuOption
|
|
_0238597C:
|
|
ldr r0, [sp, #8]
|
|
cmp r0, #0
|
|
beq _023859C0
|
|
ldr r0, _02385F70 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
mov r8, #0
|
|
ldr r1, [r0]
|
|
cmp r1, #4
|
|
bge _023859B0
|
|
mov r0, r6
|
|
mov r2, #1
|
|
bl CanAiUseMove
|
|
cmp r0, #0
|
|
movne r8, #1
|
|
_023859B0:
|
|
cmp r8, #0
|
|
#ifdef EUROPE
|
|
bne _023859C0
|
|
mov r0, #0x14
|
|
bl DisableDungeonSubMenuOption
|
|
_023859C0:
|
|
bl ov29_022EB9A0
|
|
mov r0, #0x14
|
|
bl ov29_022EB8B0
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
moveq r8, #0
|
|
beq _023865E4
|
|
bl ov29_022EB804
|
|
mov r8, r0
|
|
_023865E4:
|
|
#else
|
|
bne _023859C0
|
|
mov r0, #0x14
|
|
bl DisableDungeonSubMenuOption
|
|
_023859C0:
|
|
bl ov29_022EB9A0
|
|
#endif
|
|
ldr r0, [sp, #0xc]
|
|
cmp r0, #3
|
|
bne _02385A40
|
|
mov r0, #0x20
|
|
bl ov29_022EB8B0
|
|
mov r5, r0
|
|
bl ov29_022EB804
|
|
cmp r0, #0
|
|
beq _02385A08
|
|
mov r0, r6
|
|
bl GetTeamMemberIndex
|
|
mov r2, r0
|
|
mov r1, r5
|
|
add r0, r7, #0x4a
|
|
bl ov31_02385FA8
|
|
mov r4, #0
|
|
b _02385EFC
|
|
_02385A08:
|
|
mov r0, #0x21
|
|
bl ov29_022EB8B0
|
|
mov r5, r0
|
|
bl ov29_022EB804
|
|
cmp r0, #0
|
|
beq _02385EFC
|
|
mov r0, r6
|
|
bl GetTeamMemberIndex
|
|
mov r2, r0
|
|
mov r1, r5
|
|
add r0, r7, #0x4a
|
|
bl ov31_02385FA8
|
|
mov r4, #0
|
|
b _02385EFC
|
|
_02385A40:
|
|
cmp r0, #2
|
|
bne _02385AF8
|
|
ldrb r0, [sl, #7]
|
|
cmp r0, #0
|
|
beq _02385AC0
|
|
mov r0, #0x1e
|
|
bl ov29_022EB8B0
|
|
mov r5, r0
|
|
bl ov29_022EB804
|
|
cmp r0, #0
|
|
beq _02385A88
|
|
mov r0, r6
|
|
bl GetTeamMemberIndex
|
|
mov r2, r0
|
|
mov r1, r5
|
|
add r0, r7, #0x4a
|
|
bl ov31_02385FA8
|
|
mov r4, #0
|
|
_02385A88:
|
|
mov r0, #0x33
|
|
bl ov29_022EB8B0
|
|
mov r5, r0
|
|
bl ov29_022EB804
|
|
cmp r0, #0
|
|
beq _02385EFC
|
|
mov r0, r6
|
|
bl GetTeamMemberIndex
|
|
mov r2, r0
|
|
mov r1, r5
|
|
add r0, r7, #0x4a
|
|
bl ov31_02385FA8
|
|
mov r4, #0
|
|
b _02385EFC
|
|
_02385AC0:
|
|
mov r0, #0x1f
|
|
bl ov29_022EB8B0
|
|
mov r5, r0
|
|
bl ov29_022EB804
|
|
cmp r0, #0
|
|
beq _02385EFC
|
|
mov r0, r6
|
|
bl GetTeamMemberIndex
|
|
mov r2, r0
|
|
mov r1, r5
|
|
add r0, r7, #0x4a
|
|
bl ov31_02385FA8
|
|
mov r4, #0
|
|
b _02385EFC
|
|
_02385AF8:
|
|
mov r0, #0x62
|
|
bl AdvanceFrame
|
|
add r1, sp, #0x20
|
|
add r0, sp, #0xd4
|
|
mov r2, #0
|
|
str r1, [sp, #0x9c]
|
|
bl ov31_0238513C
|
|
bl ov29_022EBA84
|
|
mov r1, #0
|
|
add r3, sp, #0xd4
|
|
b _02385B30
|
|
_02385B24:
|
|
add r2, r3, r1, lsl #3
|
|
str r1, [r2, #4]
|
|
add r1, r1, #1
|
|
_02385B30:
|
|
cmp r1, r0
|
|
blt _02385B24
|
|
#ifdef JAPAN
|
|
ldr r0, _02385F8C ; =0x00001D34
|
|
add sb, sp, #0xd4
|
|
mov sl, r1, lsl #3
|
|
strh r0, [sb, sl]
|
|
add r8, sb, r1, lsl #3
|
|
mvn r0, #0
|
|
mov r4, #0
|
|
str r0, [r8, #4]
|
|
strh r4, [r8, #8]
|
|
sub r0, r4, #2
|
|
str r0, [r8, #0xc]
|
|
ldrh r0, [r8, #8]
|
|
add r3, sp, #0x20
|
|
ldr r2, _02387200 ; =0x0000087A
|
|
strh r0, [r8, #0x18]
|
|
ldr fp, [r8, #0xc]
|
|
add r0, r3, r1
|
|
str fp, [r8, #0x1c]
|
|
ldrh sl, [sb, sl]
|
|
ldrb fp, [r0, #1]
|
|
mov sb, #0x14
|
|
strh sl, [r8, #0x10]
|
|
strb fp, [r0, #3]
|
|
ldrb sl, [r3, r1]
|
|
ldr fp, [r8, #4]
|
|
ldr r3, _02385F70 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
str fp, [r8, #0x14]
|
|
ldrh fp, [r8, #-8]
|
|
strb sl, [r0, #2]
|
|
ldrb sl, [r0, #-1]
|
|
strh fp, [r8, #8]
|
|
ldr fp, [r8, #-4]
|
|
ldr r3, [r3]
|
|
strb sl, [r0, #1]
|
|
str fp, [r8, #0xc]
|
|
strh r2, [r8, #-8]
|
|
str sb, [r8, #-4]
|
|
cmp r3, #0
|
|
strb r4, [r0, #-1]
|
|
movle r2, #3
|
|
strleb r2, [r0, #-1]
|
|
add r2, r3, #1
|
|
mov r2, r2, lsl #0x10
|
|
mov r4, r2, asr #0x10
|
|
mov r3, #0
|
|
ldr sb, _02387204 ; =0x0000087B
|
|
add r8, sp, #0xd4
|
|
mov r2, r1, lsl #3
|
|
strh sb, [r8, r2]
|
|
add r1, r8, r1, lsl #3
|
|
mov r2, #0x15
|
|
str r2, [r1, #4]
|
|
#else
|
|
#ifdef EUROPE
|
|
ldr r0, _02385F8C ; =0x000008DC
|
|
add sl, sp, #0xd4
|
|
mov fp, r1, lsl #3
|
|
strh r0, [sl, fp]
|
|
mvn r0, #0
|
|
add sb, sl, r1, lsl #3
|
|
str r0, [sb, #4]
|
|
mov ip, #0
|
|
add r2, r0, #0xa40
|
|
strh ip, [sb, #8]
|
|
sub r0, ip, #2
|
|
str r0, [sb, #0xc]
|
|
ldrh r0, [sb, #8]
|
|
add r3, sp, #0x20
|
|
mov lr, #0x14
|
|
#else
|
|
ldr r2, _02385F8C ; =0x000008DC
|
|
add sl, sp, #0xd4
|
|
mov fp, r1, lsl #3
|
|
mvn r0, #0
|
|
strh r2, [sl, fp]
|
|
add sb, sl, r1, lsl #3
|
|
str r0, [sb, #4]
|
|
mov r8, #0
|
|
add r2, r0, #0xa40
|
|
strh r8, [sb, #8]
|
|
sub r0, r8, #2
|
|
str r0, [sb, #0xc]
|
|
ldrh r0, [sb, #8]
|
|
add r3, sp, #0x20
|
|
mov ip, #0x14
|
|
#endif
|
|
strh r0, [sb, #0x18]
|
|
ldr r4, [sb, #0xc]
|
|
add r0, r3, r1
|
|
str r4, [sb, #0x1c]
|
|
ldrh r4, [sl, fp]
|
|
ldrb sl, [r0, #1]
|
|
ldr fp, _02385F70 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
strh r4, [sb, #0x10]
|
|
strb sl, [r0, #3]
|
|
ldrb r4, [r3, r1]
|
|
ldr sl, [sb, #4]
|
|
ldr r3, [fp]
|
|
str sl, [sb, #0x14]
|
|
ldrh sl, [sb, #-8]
|
|
strb r4, [r0, #2]
|
|
ldrb r4, [r0, #-1]
|
|
strh sl, [sb, #8]
|
|
cmp r3, #0
|
|
strb r4, [r0, #1]
|
|
ldr r4, [sb, #-4]
|
|
#ifdef EUROPE
|
|
strb ip, [r0, #-1]
|
|
str r4, [sb, #0xc]
|
|
strh r2, [sb, #-8]
|
|
movle r2, #3
|
|
strleb r2, [r0, #-1]
|
|
add r2, r3, #1
|
|
mov r2, r2, lsl #0x10
|
|
str lr, [sb, #-4]
|
|
mov r4, r2, asr #0x10
|
|
add sb, sp, #0xd4
|
|
mov r2, r1, lsl #3
|
|
mov r3, #0xa40
|
|
strh r3, [sb, r2]
|
|
mov r3, #0
|
|
add r1, sb, r1, lsl #3
|
|
mov r2, #0x15
|
|
str r2, [r1, #4]
|
|
#else
|
|
strb r8, [r0, #-1]
|
|
str r4, [sb, #0xc]
|
|
strh r2, [sb, #-8]
|
|
movle r2, #3
|
|
str ip, [sb, #-4]
|
|
add r8, sp, #0xd4
|
|
strleb r2, [r0, #-1]
|
|
mov sb, r1, lsl #3
|
|
add r2, r8, r1, lsl #3
|
|
add r1, r3, #1
|
|
mov r1, r1, lsl #0x10
|
|
mov r4, r1, asr #0x10
|
|
mov r1, #0xa40
|
|
strh r1, [r8, sb]
|
|
mov r1, #0x15
|
|
mov r3, #0
|
|
str r1, [r2, #4]
|
|
#endif
|
|
#endif
|
|
strb r3, [r0]
|
|
ldr sl, [r6, #0xb4]
|
|
mov r1, r3
|
|
mov r2, #1
|
|
b _02385C58
|
|
_02385C1C:
|
|
#ifdef EUROPE
|
|
add sb, sl, r4, lsl #3
|
|
ldrb sb, [sb, #0x124]
|
|
tst sb, #1
|
|
movne sb, r2
|
|
moveq sb, r1
|
|
tst sb, #0xff
|
|
beq _02385C4C
|
|
add sb, sl, r4, lsl #3
|
|
ldrb sb, [sb, #0x124]
|
|
tst sb, #2
|
|
#else
|
|
add r8, sl, r4, lsl #3
|
|
ldrb r8, [r8, #0x124 + HANDLE_MOVES_MENU_OFFSET_2]
|
|
tst r8, #1
|
|
movne r8, r2
|
|
moveq r8, r1
|
|
tst r8, #0xff
|
|
beq _02385C4C
|
|
add r8, sl, r4, lsl #3
|
|
ldrb r8, [r8, #0x124 + HANDLE_MOVES_MENU_OFFSET_2]
|
|
tst r8, #2
|
|
#endif
|
|
moveq r3, #1
|
|
beq _02385C60
|
|
_02385C4C:
|
|
add r4, r4, #1
|
|
mov r4, r4, lsl #0x10
|
|
mov r4, r4, asr #0x10
|
|
_02385C58:
|
|
cmp r4, #4
|
|
blt _02385C1C
|
|
_02385C60:
|
|
cmp r3, #0
|
|
moveq r1, #3
|
|
streqb r1, [r0]
|
|
ldr r0, _02385F90 ; =DUNGEON_WINDOW_PARAMS_15
|
|
ldr r1, _02385F94 ; =0x80000213
|
|
add r2, sp, #0x3c
|
|
add r3, sp, #0xd4
|
|
bl CreateParentMenuFromStringIds
|
|
strb r0, [sp, #0x1c]
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
#ifdef EUROPE
|
|
add r4, sp, #0xd4
|
|
mov fp, #0x1b
|
|
ldr sb, _02385F98 ; =0x0000099B
|
|
b _02385D0C
|
|
_02385CA0:
|
|
mov r0, fp
|
|
bl AdvanceFrame
|
|
mov r0, #0
|
|
#else
|
|
add r8, sp, #0xd4
|
|
mov sb, #0x1b
|
|
mov fp, #0
|
|
ldr r4, _02385F98 ; =0x0000099B
|
|
b _02385D0C
|
|
_02385CA0:
|
|
mov r0, sb
|
|
bl AdvanceFrame
|
|
mov r0, fp
|
|
#endif
|
|
add r1, sp, #0x1e
|
|
bl GetPressedButtons
|
|
ldrh r0, [sp, #0x1e]
|
|
tst r0, #0x400
|
|
beq _02385D0C
|
|
mov r5, #0
|
|
b _02385CEC
|
|
_02385CC8:
|
|
mov r1, r5, lsl #3
|
|
#ifdef EUROPE
|
|
add r0, r4, r5, lsl #3
|
|
ldr r0, [r0, #4]
|
|
cmp r0, #0
|
|
blt _02385CF4
|
|
cmp r8, #0
|
|
beq _0238690C
|
|
ldrh r0, [r4, r1]
|
|
cmp r0, sb
|
|
beq _02385CF4
|
|
_0238690C:
|
|
#else
|
|
add r0, r8, r5, lsl #3
|
|
ldr r0, [r0, #4]
|
|
cmp r0, #0
|
|
blt _02385CF4
|
|
ldrh r0, [r8, r1]
|
|
cmp r0, r4
|
|
beq _02385CF4
|
|
#endif
|
|
add r5, r5, #1
|
|
_02385CEC:
|
|
cmp r5, #0xa
|
|
blt _02385CC8
|
|
_02385CF4:
|
|
#ifdef EUROPE
|
|
add r0, r4, r5, lsl #3
|
|
#else
|
|
add r0, r8, r5, lsl #3
|
|
#endif
|
|
ldr r0, [r0, #4]
|
|
cmp r0, #0
|
|
blt _02385D0C
|
|
cmp r5, #0xa
|
|
blt _02385D1C
|
|
_02385D0C:
|
|
ldrsb r0, [sp, #0x1c]
|
|
bl IsParentMenuActive
|
|
cmp r0, #0
|
|
bne _02385CA0
|
|
_02385D1C:
|
|
ldrh r0, [sp, #0x1e]
|
|
tst r0, #0x400
|
|
bne _02385D34
|
|
ldrsb r0, [sp, #0x1c]
|
|
bl GetSimpleMenuResult__0202AEA4
|
|
mov r5, r0
|
|
_02385D34:
|
|
ldrsb r0, [sp, #0x1c]
|
|
bl GetWindowIdSelectedItemOnPage
|
|
cmp r0, #0
|
|
ble _02385D78
|
|
mvn r0, #0
|
|
cmp r5, r0
|
|
bne _02385D78
|
|
ldrsb r0, [sp, #0x1c]
|
|
bl GetWindowIdSelectedItemOnPage
|
|
add r1, sp, #0xd4
|
|
mov r0, r0, lsl #3
|
|
ldrh r1, [r1, r0]
|
|
ldr r0, _02385F8C ; =0x000008DC
|
|
cmp r1, r0
|
|
bne _02385D78
|
|
mov r0, #0
|
|
bl PlaySeVolumeWrapper
|
|
_02385D78:
|
|
add r0, sp, #0x1c
|
|
bl ov29_0234E988
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
cmp r5, #0
|
|
blt _02385ED8
|
|
add r0, sp, #0xd4
|
|
mov r1, r5, lsl #3
|
|
ldrh r1, [r0, r1]
|
|
ldr r0, _02385F9C ; =0x000009A8
|
|
cmp r1, r0
|
|
bgt _02385DC8
|
|
sub r0, r0, #3
|
|
subs r0, r1, r0
|
|
addpl pc, pc, r0, lsl #2
|
|
b _02385DE4
|
|
_02385DB8: ; jump table
|
|
b _02385DD4 ; case 0
|
|
b _02385DD4 ; case 1
|
|
b _02385DD4 ; case 2
|
|
b _02385DD4 ; case 3
|
|
_02385DC8:
|
|
ldr r0, _02385FA0 ; =0x000009BA
|
|
cmp r1, r0
|
|
bne _02385DE4
|
|
_02385DD4:
|
|
ldr r0, _02385FA4 ; =0x00003F07
|
|
mov r1, #0x100
|
|
bl sub_02017C74
|
|
b _02385DEC
|
|
_02385DE4:
|
|
mov r0, #0
|
|
bl PlaySeVolumeWrapper
|
|
_02385DEC:
|
|
cmp r5, #0x14
|
|
bne _02385E4C
|
|
mov r0, r6
|
|
bl sub_0203F9CC
|
|
ldr r0, _02385F70 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
ldr r0, [r0]
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
bl sub_020416BC
|
|
ldr r2, _02385F70 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
mov r1, r0, lsl #0x10
|
|
str r0, [r2]
|
|
mov r0, r1, asr #0x10
|
|
bl sub_020410A4
|
|
mov r0, r6
|
|
bl sub_0203FD44
|
|
ldr r1, _02385F70 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
str r0, [r1]
|
|
ldr r0, [sp, #0x18]
|
|
bl sub_020307EC
|
|
bl sub_02041178
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
b _02385548
|
|
_02385E4C:
|
|
cmp r5, #0x15
|
|
bne _02385EAC
|
|
mov r0, r6
|
|
bl sub_0203F9CC
|
|
ldr r0, _02385F70 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
ldr r0, [r0]
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
bl sub_020416DC
|
|
ldr r2, _02385F70 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
mov r1, r0, lsl #0x10
|
|
str r0, [r2]
|
|
mov r0, r1, asr #0x10
|
|
bl sub_020410A4
|
|
mov r0, r6
|
|
bl sub_0203FD44
|
|
ldr r1, _02385F70 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
str r0, [r1]
|
|
ldr r0, [sp, #0x18]
|
|
bl sub_020307EC
|
|
bl sub_02041178
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
b _02385548
|
|
_02385EAC:
|
|
mov r0, r5
|
|
bl ov29_022EB804
|
|
cmp r0, #0
|
|
beq _02385EF0
|
|
mov r0, r6
|
|
bl GetTeamMemberIndex
|
|
mov r2, r0
|
|
mov r1, r5
|
|
add r0, r7, #0x4a
|
|
bl ov31_02385FA8
|
|
b _02385EF0
|
|
_02385ED8:
|
|
ldr r0, [sp, #0x18]
|
|
bl sub_020307EC
|
|
bl sub_02041178
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
b _02385548
|
|
_02385EF0:
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
mov r4, #0
|
|
_02385EFC:
|
|
ldr r0, [sp, #0x18]
|
|
bl CloseAdvancedTextBox2
|
|
ldr r0, [sp, #0x14]
|
|
bl sub_0202F334
|
|
ldr r0, [sp, #0x14]
|
|
bl CloseDialogueBox
|
|
mov r0, #8
|
|
mov r1, #0x1e
|
|
bl ov29_022EA370
|
|
bl HideTileGrid
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
bl sub_020407C0
|
|
ldr r0, _02385F70 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
ldr r0, [r0, #8]
|
|
cmp r0, #0
|
|
beq _02385F50
|
|
bl MemFree
|
|
ldr r0, _02385F70 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
mov r1, #0
|
|
str r1, [r0, #8]
|
|
_02385F50:
|
|
bl GetLeaderMonster
|
|
ldr r1, [sp, #0x10]
|
|
add r2, sp, #0x2c
|
|
ldr r1, [r2, r1, lsl #2]
|
|
strb r1, [r0, #0x4e]
|
|
mov r0, r4
|
|
add sp, sp, #0x12c
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
#if defined(EUROPE)
|
|
#define HANDLE_MOVES_MENU_DATA_OFFSET 2
|
|
#define HANDLE_MOVES_MENU_DATA_OFFSET_2 0
|
|
#elif defined(JAPAN)
|
|
#define HANDLE_MOVES_MENU_DATA_OFFSET 0xA03
|
|
#define HANDLE_MOVES_MENU_DATA_OFFSET_2 0x19D0
|
|
#else
|
|
#define HANDLE_MOVES_MENU_DATA_OFFSET 0
|
|
#define HANDLE_MOVES_MENU_DATA_OFFSET_2 0
|
|
#endif
|
|
_02385F70: .word OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
_02385F74: .word DUNGEON_WINDOW_PARAMS_14
|
|
_02385F78: .word 0x00003FCD + HANDLE_MOVES_MENU_DATA_OFFSET
|
|
_02385F7C: .word 0x00000404
|
|
_02385F80: .word DUNGEON_WINDOW_PARAMS_16
|
|
_02385F84: .word 0x00003FCC + HANDLE_MOVES_MENU_DATA_OFFSET
|
|
_02385F88: .word DUNGEON_PTR
|
|
#ifdef JAPAN
|
|
_02385F8C: .word 0x00001D34
|
|
_02387200: .word 0x0000087A
|
|
_02387204: .word 0x0000087B
|
|
#else
|
|
_02385F8C: .word 0x000008DC
|
|
#endif
|
|
_02385F90: .word DUNGEON_WINDOW_PARAMS_15
|
|
_02385F94: .word 0x80000213
|
|
_02385F98: .word 0x0000099B + HANDLE_MOVES_MENU_DATA_OFFSET_2
|
|
_02385F9C: .word 0x000009A8 + HANDLE_MOVES_MENU_DATA_OFFSET_2
|
|
_02385FA0: .word 0x000009BA + HANDLE_MOVES_MENU_DATA_OFFSET_2
|
|
_02385FA4: .word 0x00003F07
|
|
arm_func_end HandleMovesMenu
|
|
|
|
arm_func_start ov31_02385FA8
|
|
ov31_02385FA8: ; 0x02385FA8
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r3, _02385FD8 ; =ov29_0237C91C
|
|
mov r1, r1, lsl #3
|
|
ldrh r1, [r3, r1]
|
|
mov r5, r0
|
|
mov r4, r2
|
|
bl SetMonsterActionFields
|
|
ldr r0, _02385FDC ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
strb r4, [r5, #4]
|
|
ldr r0, [r0]
|
|
strb r0, [r5, #0xa]
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_02385FD8: .word ov29_0237C91C
|
|
_02385FDC: .word OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
arm_func_end ov31_02385FA8
|
|
|
|
arm_func_start ov31_02385FE0
|
|
ov31_02385FE0: ; 0x02385FE0
|
|
#ifdef JAPAN
|
|
#define OV31_02385FE0_OFFSET -4
|
|
#else
|
|
#define OV31_02385FE0_OFFSET 0
|
|
#endif
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _0238604C ; =DUNGEON_PTR
|
|
ldrb r3, [r0, #4]
|
|
ldr r1, [r1]
|
|
ldrb r2, [r0, #0xa]
|
|
add r1, r1, r3, lsl #2
|
|
add r1, r1, #0x12000
|
|
#ifdef JAPAN
|
|
ldr r1, [r1, #0xa84]
|
|
#else
|
|
ldr r1, [r1, #0xb28]
|
|
#endif
|
|
mov r2, r2, lsl #3
|
|
ldr ip, [r1, #0xb4]
|
|
add r1, ip, #0x26 + OV31_02385FE0_OFFSET
|
|
add r3, r1, #0x100
|
|
ldrh r1, [r3, r2]
|
|
orr r1, r1, #2
|
|
strh r1, [r3, r2]
|
|
ldrb r1, [r0, #0xa]
|
|
cmp r1, #4
|
|
bhs _02386038
|
|
add r0, ip, #0x124 + OV31_02385FE0_OFFSET
|
|
mov r2, #4
|
|
bl ov31_02386050
|
|
ldmia sp!, {r3, pc}
|
|
_02386038:
|
|
add r0, ip, #0x144 + OV31_02385FE0_OFFSET
|
|
mov r1, #0
|
|
mov r2, #1
|
|
bl ov31_02386050
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0238604C: .word DUNGEON_PTR
|
|
arm_func_end ov31_02385FE0
|
|
|
|
arm_func_start ov31_02386050
|
|
ov31_02386050: ; 0x02386050
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r3, r1
|
|
mov r1, r2
|
|
mov r2, r3
|
|
mov r3, #0
|
|
bl sub_020417A8
|
|
mov r5, r0
|
|
mov r4, #0x62
|
|
_02386070:
|
|
bl sub_02041A18
|
|
cmp r0, #0
|
|
beq _0238608C
|
|
bl sub_02041A00
|
|
mov r0, r5
|
|
bl CloseScrollBox
|
|
b _02386098
|
|
_0238608C:
|
|
mov r0, r4
|
|
bl AdvanceFrame
|
|
b _02386070
|
|
_02386098:
|
|
mov r0, #0x62
|
|
bl AdvanceFrame
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end ov31_02386050
|
|
|
|
arm_func_start ov31_023860A4
|
|
ov31_023860A4: ; 0x023860A4
|
|
#ifdef JAPAN
|
|
#define OV31_023860A4_OFFSET -4
|
|
#else
|
|
#define OV31_023860A4_OFFSET 0
|
|
#endif
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldr r2, _02386190 ; =DUNGEON_PTR
|
|
ldrb r3, [r0, #4]
|
|
ldr r4, [r2]
|
|
ldrb r2, [r0, #0xa]
|
|
add r0, r4, r3, lsl #2
|
|
add r0, r0, #0x12000
|
|
#ifdef JAPAN
|
|
ldr r4, [r0, #0xa84]
|
|
#else
|
|
ldr r4, [r0, #0xb28]
|
|
#endif
|
|
mov r8, r1
|
|
ldr r7, [r4, #0xb4]
|
|
mov r6, #0
|
|
add r1, r7, #0x124 + OV31_023860A4_OFFSET
|
|
ldrb r0, [r1, r2, lsl #3]
|
|
mov ip, #0
|
|
add r5, r1, r2, lsl #3
|
|
tst r0, #8
|
|
movne r6, #1
|
|
mov r2, ip
|
|
mov r3, #1
|
|
_023860F0:
|
|
add r0, r7, ip, lsl #3
|
|
ldrb r0, [r0, #0x124 + OV31_023860A4_OFFSET]
|
|
tst r0, #1
|
|
movne r0, r3
|
|
moveq r0, r2
|
|
tst r0, #0xff
|
|
addne r1, r7, ip, lsl #3
|
|
ldrneb r0, [r1, #0x124 + OV31_023860A4_OFFSET]
|
|
add ip, ip, #1
|
|
bicne r0, r0, #8
|
|
strneb r0, [r1, #0x124 + OV31_023860A4_OFFSET]
|
|
cmp ip, #4
|
|
blt _023860F0
|
|
bl GetMessageLogPreprocessorArgs
|
|
ldrh r1, [r5, #4]
|
|
cmp r6, #0
|
|
str r1, [r0, #0x10]
|
|
ldreqb r0, [r5]
|
|
orreq r0, r0, #8
|
|
streqb r0, [r5]
|
|
add r0, r7, #0x124 + OV31_023860A4_OFFSET
|
|
bl AllManip1
|
|
ldrh r0, [r5, #2]
|
|
cmp r8, #0
|
|
orr r0, r0, #2
|
|
strh r0, [r5, #2]
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
|
|
cmp r6, #0
|
|
bne _02386174
|
|
ldr r1, _02386194 ; =0x000008D8
|
|
mov r0, r4
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02386180
|
|
_02386174:
|
|
ldr r1, _02386198 ; =0x000008D9
|
|
mov r0, r4
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
_02386180:
|
|
mov r0, #0x78
|
|
mov r1, #0x1f
|
|
bl ov29_022EA370
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_02386190: .word DUNGEON_PTR
|
|
#ifdef JAPAN
|
|
_02386194: .word 0x00001D30
|
|
_02386198: .word 0x00001D31
|
|
#else
|
|
_02386194: .word 0x000008D8
|
|
_02386198: .word 0x000008D9
|
|
#endif
|
|
arm_func_end ov31_023860A4
|
|
|
|
arm_func_start ov31_0238619C
|
|
ov31_0238619C: ; 0x0238619C
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r1, _02386200 ; =DUNGEON_PTR
|
|
ldrb r2, [r0, #4]
|
|
ldr r1, [r1]
|
|
ldrb r4, [r0, #0xa]
|
|
add r0, r1, r2, lsl #2
|
|
add r0, r0, #0x12000
|
|
#ifdef JAPAN
|
|
ldr r0, [r0, #0xa84]
|
|
ldr r7, [r0, #0xb4]
|
|
add r5, r7, #0x120
|
|
#else
|
|
ldr r0, [r0, #0xb28]
|
|
ldr r7, [r0, #0xb4]
|
|
add r5, r7, #0x124
|
|
#endif
|
|
add r6, r5, r4, lsl #3
|
|
bl GetMessageLogPreprocessorArgs
|
|
mov r1, #0
|
|
mov r2, r6
|
|
mov r3, r1
|
|
bl FormatMoveStringMore
|
|
ldrb r1, [r5, r4, lsl #3]
|
|
mov r0, r5
|
|
eor r1, r1, #4
|
|
strb r1, [r5, r4, lsl #3]
|
|
bl AllManip1
|
|
ldrh r0, [r6, #2]
|
|
orr r0, r0, #2
|
|
strh r0, [r6, #2]
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_02386200: .word DUNGEON_PTR
|
|
arm_func_end ov31_0238619C
|
|
|
|
arm_func_start ov31_02386204
|
|
ov31_02386204: ; 0x02386204
|
|
#ifdef JAPAN
|
|
#define OV31_02386204_OFFSET -4
|
|
#else
|
|
#define OV31_02386204_OFFSET 0
|
|
#endif
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
sub sp, sp, #0xa0
|
|
ldr r1, _02386304 ; =DUNGEON_PTR
|
|
ldrb r2, [r0, #4]
|
|
ldr r1, [r1]
|
|
ldrb r5, [r0, #0xa]
|
|
add r0, r1, r2, lsl #2
|
|
add r0, r0, #0x12000
|
|
#ifdef JAPAN
|
|
ldr r1, [r0, #0xa84]
|
|
#else
|
|
ldr r1, [r0, #0xb28]
|
|
#endif
|
|
add r0, sp, #0
|
|
ldr r4, [r1, #0xb4]
|
|
mov r2, #0
|
|
add r1, r4, #0x124 + OV31_02386204_OFFSET
|
|
add r1, r1, r5, lsl #3
|
|
bl FormatMoveString
|
|
add r0, r4, #0x26 + OV31_02386204_OFFSET
|
|
add r2, r0, #0x100
|
|
mov r1, r5, lsl #3
|
|
ldrh r0, [r2, r1]
|
|
mov r3, #0
|
|
orr r0, r0, #2
|
|
strh r0, [r2, r1]
|
|
mov r1, r3
|
|
mov r2, #1
|
|
b _023862A4
|
|
_02386268:
|
|
add r5, r5, #1
|
|
cmp r5, #4
|
|
bge _023862AC
|
|
add r0, r4, r5, lsl #3
|
|
ldrb r0, [r0, #0x124 + OV31_02386204_OFFSET]
|
|
tst r0, #1
|
|
movne r0, r2
|
|
moveq r0, r1
|
|
tst r0, #0xff
|
|
beq _023862AC
|
|
add r0, r4, r5, lsl #3
|
|
ldrb r0, [r0, #0x124 + OV31_02386204_OFFSET]
|
|
tst r0, #2
|
|
beq _023862AC
|
|
add r3, r3, #1
|
|
_023862A4:
|
|
cmp r3, #4
|
|
blt _02386268
|
|
_023862AC:
|
|
add r0, r4, r5, lsl #3
|
|
ldrb r0, [r0, #0x124 + OV31_02386204_OFFSET]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
moveq r5, #4
|
|
cmp r5, #4
|
|
bge _023862F4
|
|
add ip, r4, #0x124 + OV31_02386204_OFFSET
|
|
ldrb r2, [ip, r5, lsl #3]
|
|
add r0, sp, #0x50
|
|
add r1, ip, r5, lsl #3
|
|
orr r2, r2, #2
|
|
bic r3, r2, #4
|
|
mov r2, #0
|
|
strb r3, [ip, r5, lsl #3]
|
|
bl FormatMoveString
|
|
_023862F4:
|
|
add r0, r4, #0x124 + OV31_02386204_OFFSET
|
|
bl AllManip1
|
|
add sp, sp, #0xa0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_02386304: .word DUNGEON_PTR
|
|
arm_func_end ov31_02386204
|
|
|
|
arm_func_start ov31_02386308
|
|
ov31_02386308: ; 0x02386308
|
|
#ifdef JAPAN
|
|
#define OV31_02386308_OFFSET -4
|
|
#else
|
|
#define OV31_02386308_OFFSET 0
|
|
#endif
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldr r2, _023863EC ; =DUNGEON_PTR
|
|
ldrb r3, [r0, #4]
|
|
ldr r2, [r2]
|
|
ldrb r7, [r0, #0xa]
|
|
add r0, r2, r3, lsl #2
|
|
add r0, r0, #0x12000
|
|
#ifdef JAPAN
|
|
ldr r4, [r0, #0xa84]
|
|
#else
|
|
ldr r4, [r0, #0xb28]
|
|
#endif
|
|
mov r8, r1
|
|
ldr r6, [r4, #0xb4]
|
|
mov r5, #0
|
|
bl GetMessageLogPreprocessorArgs
|
|
add r1, r6, r7, lsl #3
|
|
add r1, r1, #0x100
|
|
ldrh r2, [r1, #0x28 + OV31_02386308_OFFSET]
|
|
mov r3, r7, lsl #3
|
|
add r1, r6, #0x26 + OV31_02386308_OFFSET
|
|
str r2, [r0, #0x10]
|
|
add r2, r1, #0x100
|
|
ldrh r1, [r2, r3]
|
|
add r7, r7, #1
|
|
mov r0, r5
|
|
orr r1, r1, #2
|
|
strh r1, [r2, r3]
|
|
add ip, r6, #0x124 + OV31_02386308_OFFSET
|
|
mov r1, #1
|
|
b _023863A0
|
|
_02386374:
|
|
cmp r7, #4
|
|
bge _023863A8
|
|
ldrb r2, [ip, r7, lsl #3]
|
|
mov r3, r7, lsl #3
|
|
tst r2, #2
|
|
beq _023863A8
|
|
bic r2, r2, #2
|
|
mov r5, r1
|
|
strb r2, [ip, r3]
|
|
add r7, r7, #1
|
|
add r0, r0, #1
|
|
_023863A0:
|
|
cmp r0, #4
|
|
blt _02386374
|
|
_023863A8:
|
|
add r0, r6, #0x124 + OV31_02386308_OFFSET
|
|
bl AllManip1
|
|
cmp r8, #0
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
|
|
cmp r5, #0
|
|
beq _023863D0
|
|
ldr r1, _023863F0 ; =0x000008DA
|
|
mov r0, r4
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _023863DC
|
|
_023863D0:
|
|
ldr r1, _023863F4 ; =0x000008DB
|
|
mov r0, r4
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
_023863DC:
|
|
mov r0, #0x78
|
|
mov r1, #0x1f
|
|
bl ov29_022EA370
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_023863EC: .word DUNGEON_PTR
|
|
#ifdef JAPAN
|
|
_023863F0: .word 0x00001D32
|
|
_023863F4: .word 0x00001D33
|
|
#else
|
|
_023863F0: .word 0x000008DA
|
|
_023863F4: .word 0x000008DB
|
|
#endif
|
|
arm_func_end ov31_02386308
|
|
|
|
arm_func_start ov31_023863F8
|
|
ov31_023863F8: ; 0x023863F8
|
|
stmdb sp!, {r3, lr}
|
|
mov lr, #0
|
|
mov ip, lr
|
|
add r1, r1, #1
|
|
mov r2, #1
|
|
b _02386434
|
|
_02386410:
|
|
cmp r1, #4
|
|
bge _0238643C
|
|
add r3, r0, r1, lsl #3
|
|
#ifdef JAPAN
|
|
ldrb r3, [r3, #0x120]
|
|
#else
|
|
ldrb r3, [r3, #0x124]
|
|
#endif
|
|
tst r3, #2
|
|
beq _0238643C
|
|
mov lr, r2
|
|
add r1, r1, #1
|
|
add ip, ip, #1
|
|
_02386434:
|
|
cmp ip, #4
|
|
blt _02386410
|
|
_0238643C:
|
|
cmp lr, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end ov31_023863F8
|
|
|
|
arm_func_start ov31_02386450
|
|
ov31_02386450: ; 0x02386450
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02386478 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
ldr r0, [r0, #4]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
bl MemFree
|
|
ldr r0, _02386478 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
mov r1, #0
|
|
str r1, [r0, #4]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02386478: .word OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
arm_func_end ov31_02386450
|
|
|
|
arm_func_start ov31_0238647C
|
|
ov31_0238647C: ; 0x0238647C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x114
|
|
mov r6, r0
|
|
mov r5, r1
|
|
str r2, [sp, #4]
|
|
mov r0, #0x284
|
|
mov r1, #8
|
|
str r3, [sp, #8]
|
|
mvn r4, #1
|
|
bl MemAlloc
|
|
ldr r1, _02386B0C ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
mov r2, #0
|
|
str r0, [r1, #4]
|
|
str r2, [r1]
|
|
_023864B4:
|
|
mov r0, #6
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
ldr r0, _02386B10 ; =ov29_0235352C
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x24]
|
|
bl sub_0200B3D4
|
|
mvn sb, #1
|
|
ldr r7, _02386B0C ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
add r8, sb, #1
|
|
add fp, sp, #0xbc
|
|
_023864E0:
|
|
cmp r4, sb
|
|
bne _02386578
|
|
ldr r3, [r6, #0xb4]
|
|
add r0, sp, #0x14
|
|
ldrsh r2, [r3, #2]
|
|
ldrb r3, [r3, #0x48]
|
|
mov r1, #2
|
|
bl sub_02053CA0
|
|
mov r0, r6
|
|
bl sub_0203F9CC
|
|
mov r1, #0
|
|
b _0238652C
|
|
_02386510:
|
|
add r0, r5, r1, lsl #3
|
|
ldrh r0, [r0, #2]
|
|
tst r0, #4
|
|
bne _02386534
|
|
add r0, r1, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r1, r0, asr #0x10
|
|
_0238652C:
|
|
cmp r1, #8
|
|
blt _02386510
|
|
_02386534:
|
|
add r0, r5, r1, lsl #3
|
|
ldrh r0, [r0, #4]
|
|
bl sub_0203FD14
|
|
ldr r0, [sp, #8]
|
|
mov r1, #0
|
|
cmp r0, #0
|
|
add r3, sp, #0x14
|
|
beq _02386568
|
|
mov r0, #2
|
|
mov r2, r1
|
|
bl sub_0204019C
|
|
mov r4, r0
|
|
b _02386578
|
|
_02386568:
|
|
mov r0, #3
|
|
mov r2, r1
|
|
bl sub_0204019C
|
|
mov r4, r0
|
|
_02386578:
|
|
mov r0, #0x1e
|
|
bl AdvanceFrame
|
|
bl sub_020407EC
|
|
mov sl, r0
|
|
bl sub_02041094
|
|
cmp sl, #2
|
|
str r0, [r7]
|
|
moveq sl, #0
|
|
beq _023865B4
|
|
cmp sl, #1
|
|
moveq sl, #1
|
|
beq _023865B4
|
|
cmp sl, #7
|
|
bne _02386578
|
|
mov sl, #2
|
|
_023865B4:
|
|
mov r0, #0x1e
|
|
bl AdvanceFrame
|
|
cmp sl, #1
|
|
ldreq r0, _02386B0C ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
mvneq r1, #0
|
|
streq r1, [r0]
|
|
beq _02386924
|
|
cmp sl, #2
|
|
bne _02386694
|
|
mov r0, r4
|
|
bl SetAdvancedTextBoxState5
|
|
mov r0, #0x1e
|
|
bl AdvanceFrame
|
|
mov r0, r4
|
|
bl CloseAdvancedTextBox
|
|
mov r0, #0x1b
|
|
mov r4, sb
|
|
bl AdvanceFrame
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
ldr r0, [r7]
|
|
cmp r0, #4
|
|
bge _02386664
|
|
ldr r1, [r7]
|
|
mov r0, r5
|
|
mov r2, #4
|
|
bl ov31_02386050
|
|
b _02386674
|
|
_02386664:
|
|
add r0, r5, #0x20
|
|
mov r1, #0
|
|
mov r2, #1
|
|
bl ov31_02386050
|
|
_02386674:
|
|
bl sub_020407C0
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
mov r0, #2
|
|
mov r1, #0x1b
|
|
bl ov29_022EA370
|
|
b _023864E0
|
|
_02386694:
|
|
bl ov29_022EBA70
|
|
mov r0, #0x22
|
|
mov r1, #0
|
|
bl AddDungeonSubMenuOption
|
|
mov r0, #0x21
|
|
mov r1, #0
|
|
bl AddDungeonSubMenuOption
|
|
ldr r0, [r7]
|
|
mov r3, #0
|
|
add r1, r0, #1
|
|
mov r2, r3
|
|
b _023866E4
|
|
_023866C4:
|
|
cmp r1, #8
|
|
bge _023866EC
|
|
ldrb r0, [r5, r1, lsl #3]
|
|
tst r0, #2
|
|
beq _023866EC
|
|
mov r3, #1
|
|
add r1, r1, #1
|
|
add r2, r2, #1
|
|
_023866E4:
|
|
cmp r2, #8
|
|
blt _023866C4
|
|
_023866EC:
|
|
cmp r3, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
bne _02386708
|
|
mov r0, #0x21
|
|
bl DisableDungeonSubMenuOption
|
|
_02386708:
|
|
mov r0, #0x1d
|
|
mov r1, #0
|
|
bl AddDungeonSubMenuOption
|
|
add r0, sp, #0x18
|
|
str r0, [sp, #0x84]
|
|
mov r0, fp
|
|
add r1, sp, #0x18
|
|
mov r2, #0
|
|
bl ov31_0238513C
|
|
bl ov29_022EBA84
|
|
mov r2, #0
|
|
b _0238674C
|
|
_02386738:
|
|
add r1, fp, r2, lsl #3
|
|
str r2, [r1, #4]
|
|
add r1, r2, #1
|
|
mov r1, r1, lsl #0x10
|
|
mov r2, r1, asr #0x10
|
|
_0238674C:
|
|
cmp r2, r0
|
|
blt _02386738
|
|
ldr r0, _02386B14 ; =0x000008DC
|
|
mov r1, r2, lsl #3
|
|
strh r0, [fp, r1]
|
|
add r0, fp, r2, lsl #3
|
|
str r8, [r0, #4]
|
|
add r0, r2, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r2, r0, asr #0x10
|
|
mov r1, r2, lsl #3
|
|
mov r0, #0
|
|
strh r0, [fp, r1]
|
|
add r0, fp, r2, lsl #3
|
|
str r8, [r0, #4]
|
|
ldr r0, _02386B18 ; =DUNGEON_WINDOW_PARAMS_15
|
|
ldr r1, _02386B1C ; =0x00000213
|
|
add r2, sp, #0x24
|
|
mov r3, fp
|
|
bl CreateParentMenuFromStringIds
|
|
str r0, [sp, #0x10]
|
|
_023867A0:
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
ldr r0, [sp, #0x10]
|
|
bl IsParentMenuActive
|
|
cmp r0, #0
|
|
bne _023867A0
|
|
ldr r0, [sp, #0x10]
|
|
bl GetSimpleMenuResult__0202AEA4
|
|
movs sl, r0
|
|
movmi r0, #1
|
|
strmi r0, [sp, #0xc]
|
|
movpl r0, #0
|
|
strpl r0, [sp, #0xc]
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
ldr r0, [sp, #0x10]
|
|
bl CloseParentMenu
|
|
ldr r0, [sp, #0xc]
|
|
cmp r0, #1
|
|
bne _023867F8
|
|
bl sub_020416FC
|
|
b _023864E0
|
|
_023867F8:
|
|
mov r0, #6
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
mov r0, r4
|
|
bl SetAdvancedTextBoxState5
|
|
_0238680C:
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
mov r0, r4
|
|
bl IsAdvancedTextBoxActive
|
|
cmp r0, #0
|
|
bne _0238680C
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
mov r0, r4
|
|
bl CloseAdvancedTextBox
|
|
mov r4, sb
|
|
bl sub_020407C0
|
|
cmp sl, #1
|
|
bne _023868E8
|
|
ldr r0, [r7]
|
|
mov r1, #0
|
|
add r2, r0, #1
|
|
b _023868C0
|
|
_0238689C:
|
|
cmp r2, #8
|
|
bge _023868C8
|
|
ldrb r0, [r5, r2, lsl #3]
|
|
tst r0, #2
|
|
beq _023868C8
|
|
bic r0, r0, #2
|
|
strb r0, [r5, r2, lsl #3]
|
|
add r2, r2, #1
|
|
add r1, r1, #1
|
|
_023868C0:
|
|
cmp r1, #8
|
|
blt _0238689C
|
|
_023868C8:
|
|
mov r0, r5
|
|
bl AllManip2
|
|
ldr r0, [r6, #0xb4]
|
|
mov r1, r5
|
|
#ifdef JAPAN
|
|
add r0, r0, #0x120
|
|
#else
|
|
add r0, r0, #0x124
|
|
#endif
|
|
mov r2, #0x22
|
|
bl memcpy
|
|
b _023864E0
|
|
_023868E8:
|
|
cmp sl, #2
|
|
bne _02386924
|
|
ldr r0, [r7]
|
|
cmp r0, #4
|
|
bge _02386910
|
|
ldr r1, [r7]
|
|
mov r0, r5
|
|
mov r2, #4
|
|
bl ov31_02386050
|
|
b _023864E0
|
|
_02386910:
|
|
add r0, r5, #0x20
|
|
mov r1, #0
|
|
mov r2, #1
|
|
bl ov31_02386050
|
|
b _023864E0
|
|
_02386924:
|
|
mvn r0, #1
|
|
cmp r4, r0
|
|
beq _02386950
|
|
mov r0, r4
|
|
bl SetAdvancedTextBoxState5
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
mov r0, r4
|
|
bl CloseAdvancedTextBox
|
|
mvn r4, #1
|
|
bl sub_020407C0
|
|
_02386950:
|
|
ldr r0, _02386B0C ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
ldr r1, [r0]
|
|
cmp r1, #0
|
|
blt _02386AE8
|
|
ldr r0, [sp, #4]
|
|
cmp r0, #0
|
|
beq _02386A04
|
|
mov r0, r1, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
bl sub_02041154
|
|
mov r1, r0
|
|
mov r0, #0
|
|
bl SetPreprocessorArgsIdVal
|
|
ldr r0, _02386B0C ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
ldr r0, [r0]
|
|
cmp r0, #4
|
|
bge _023869D8
|
|
bl sub_02041364
|
|
cmp r0, #0
|
|
mov r0, #0
|
|
mov r2, #1
|
|
beq _023869C0
|
|
ldr r1, _02386B20 ; =0x000008D6
|
|
mov r3, r0
|
|
str r2, [sp]
|
|
bl YesNoMenu
|
|
mov r7, r0
|
|
b _023869F4
|
|
_023869C0:
|
|
ldr r1, _02386B24 ; =0x000008D7
|
|
mov r3, r0
|
|
str r2, [sp]
|
|
bl YesNoMenu
|
|
mov r7, r0
|
|
b _023869F4
|
|
_023869D8:
|
|
mov r0, #0
|
|
mov r2, #1
|
|
ldr r1, _02386B24 ; =0x000008D7
|
|
mov r3, r0
|
|
str r2, [sp]
|
|
bl YesNoMenu
|
|
mov r7, r0
|
|
_023869F4:
|
|
mov r0, #1
|
|
mov r1, #0
|
|
bl ov29_0233A0E8
|
|
b _02386A08
|
|
_02386A04:
|
|
mov r7, #1
|
|
_02386A08:
|
|
cmp r7, #1
|
|
bne _023864B4
|
|
ldr r0, _02386B0C ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
ldr r0, [r0]
|
|
cmp r0, #4
|
|
movge r1, #0
|
|
strgeb r1, [r5, r0, lsl #3]
|
|
bge _02386AE8
|
|
bl sub_02041484
|
|
bl sub_0203FD38
|
|
mov r1, #0
|
|
mov r2, r1
|
|
mov r3, #1
|
|
b _02386A80
|
|
_02386A40:
|
|
add r8, r0, r1, lsl #3
|
|
add r7, r5, r1, lsl #3
|
|
mov r6, #4
|
|
_02386A4C:
|
|
ldrh r4, [r8], #2
|
|
subs r6, r6, #1
|
|
strh r4, [r7], #2
|
|
bne _02386A4C
|
|
ldrb r4, [r5, r1, lsl #3]
|
|
tst r4, #1
|
|
movne r4, r3
|
|
moveq r4, r2
|
|
tst r4, #0xff
|
|
beq _02386A88
|
|
add r1, r1, #1
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, asr #0x10
|
|
_02386A80:
|
|
cmp r1, #4
|
|
blt _02386A40
|
|
_02386A88:
|
|
mov r6, #4
|
|
_02386A8C:
|
|
add r4, r5, r6, lsl #3
|
|
add r3, r5, r1, lsl #3
|
|
mov r2, #4
|
|
_02386A98:
|
|
ldrh r0, [r4], #2
|
|
subs r2, r2, #1
|
|
strh r0, [r3], #2
|
|
bne _02386A98
|
|
add r0, r6, #1
|
|
mov r0, r0, lsl #0x10
|
|
add r1, r1, #1
|
|
mov r6, r0, asr #0x10
|
|
mov r0, r1, lsl #0x10
|
|
cmp r6, #8
|
|
mov r1, r0, asr #0x10
|
|
blt _02386A8C
|
|
mov r2, #0
|
|
b _02386AE0
|
|
_02386AD0:
|
|
add r0, r1, #1
|
|
mov r0, r0, lsl #0x10
|
|
strb r2, [r5, r1, lsl #3]
|
|
mov r1, r0, asr #0x10
|
|
_02386AE0:
|
|
cmp r1, #8
|
|
blt _02386AD0
|
|
_02386AE8:
|
|
bl ov31_02386450
|
|
ldr r0, _02386B0C ; =OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
movge r0, #1
|
|
movlt r0, #0
|
|
and r0, r0, #0xff
|
|
add sp, sp, #0x114
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
#define OV31_0238647C_OFFSET 0x1458
|
|
#else
|
|
#define OV31_0238647C_OFFSET 0
|
|
#endif
|
|
_02386B0C: .word OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
_02386B10: .word ov29_0235352C
|
|
_02386B14: .word 0x000008DC + OV31_0238647C_OFFSET
|
|
_02386B18: .word DUNGEON_WINDOW_PARAMS_15
|
|
_02386B1C: .word 0x00000213
|
|
_02386B20: .word 0x000008D6 + OV31_0238647C_OFFSET
|
|
_02386B24: .word 0x000008D7 + OV31_0238647C_OFFSET
|
|
arm_func_end ov31_0238647C
|
|
|
|
arm_func_start ov31_02386B28
|
|
ov31_02386B28: ; 0x02386B28
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #0xa4
|
|
ldr r0, _02386C08 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A27C
|
|
ldr r0, [r0]
|
|
ldr r1, [r0, #0x64]
|
|
ldrsh r0, [r1, #4]
|
|
ldrsh r1, [r1, #6]
|
|
bl GetTile
|
|
mov r4, r0
|
|
ldr r0, _02386C0C ; =0x000008D1
|
|
bl StringFromId
|
|
ldr r1, _02386C08 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A27C
|
|
mov r3, r0
|
|
ldr r0, [r1]
|
|
mov r1, #8
|
|
add r0, r0, #0x100
|
|
ldrsb r0, [r0, #0x60]
|
|
mov r2, #2
|
|
bl DrawTextInWindow
|
|
ldr r1, [r4, #0x10]
|
|
cmp r1, #0
|
|
moveq r0, #0
|
|
beq _02386B98
|
|
ldr r0, [r1]
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
_02386B98:
|
|
cmp r0, #0
|
|
beq _02386C00
|
|
add r0, sp, #0x54
|
|
mov r2, #0
|
|
bl ov29_022E2A78
|
|
ldr r0, [r4, #0x10]
|
|
bl ov29_022E1618
|
|
ldrb r1, [r0]
|
|
ldr r0, _02386C10 ; =0x000008D2
|
|
str r1, [sp, #0x14]
|
|
bl StringFromId
|
|
add r1, sp, #4
|
|
mov r2, r0
|
|
str r1, [sp]
|
|
add r0, sp, #0x54
|
|
mov r1, #0x50
|
|
mov r3, #0
|
|
bl PreprocessString
|
|
ldr r0, _02386C08 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A27C
|
|
mov r1, #0x10
|
|
ldr r0, [r0]
|
|
mov r2, #0x12
|
|
add r0, r0, #0x100
|
|
ldrsb r0, [r0, #0x60]
|
|
add r3, sp, #0x54
|
|
bl DrawTextInWindow
|
|
_02386C00:
|
|
add sp, sp, #0xa4
|
|
ldmia sp!, {r3, r4, pc}
|
|
.align 2, 0
|
|
_02386C08: .word OVERLAY31_UNKNOWN_POINTER__NA_238A27C
|
|
#ifdef JAPAN
|
|
_02386C0C: .word 0x00001D29
|
|
_02386C10: .word 0x00001D2A
|
|
#else
|
|
_02386C0C: .word 0x000008D1
|
|
_02386C10: .word 0x000008D2
|
|
#endif
|
|
arm_func_end ov31_02386B28
|
|
|
|
arm_func_start ov31_02386C14
|
|
ov31_02386C14: ; 0x02386C14
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02386C68 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A27C
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x61
|
|
add r0, r0, #0x100
|
|
bl ov29_0234E988
|
|
ldr r0, _02386C68 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A27C
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x100
|
|
ldrsb r0, [r0, #0x60]
|
|
bl sub_0202F954
|
|
mov r0, #0x62
|
|
bl AdvanceFrame
|
|
mov r0, #0x62
|
|
bl AdvanceFrame
|
|
ldr r0, _02386C68 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A27C
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x100
|
|
ldrsb r0, [r0, #0x60]
|
|
bl CloseTextBox
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02386C68: .word OVERLAY31_UNKNOWN_POINTER__NA_238A27C
|
|
arm_func_end ov31_02386C14
|
|
|
|
arm_func_start ov31_02386C6C
|
|
ov31_02386C6C: ; 0x02386C6C
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #0xf4
|
|
mov r5, r0
|
|
mov r0, #0x164
|
|
mov r1, #8
|
|
bl MemAlloc
|
|
ldr r1, _02386F0C ; =OVERLAY31_UNKNOWN_POINTER__NA_238A27C
|
|
str r0, [r1]
|
|
str r5, [r0, #0x64]
|
|
_02386C90:
|
|
bl ov29_022EA62C
|
|
ldr r0, _02386F10 ; =DUNGEON_WINDOW_PARAMS_18
|
|
ldr r1, _02386F14 ; =ov31_02386B28
|
|
bl CreateTextBox
|
|
ldr r1, _02386F0C ; =OVERLAY31_UNKNOWN_POINTER__NA_238A27C
|
|
ldr r1, [r1]
|
|
strb r0, [r1, #0x160]
|
|
bl ov29_022EBA70
|
|
mov r0, #0x25
|
|
mov r1, #0
|
|
bl AddDungeonSubMenuOption
|
|
mov r0, #0xc
|
|
mov r1, #0
|
|
bl AddDungeonSubMenuOption
|
|
bl ov29_022EB9A0
|
|
bl ov29_022EBA84
|
|
mov r1, #0
|
|
ldr r2, _02386F0C ; =OVERLAY31_UNKNOWN_POINTER__NA_238A27C
|
|
b _02386CF0
|
|
_02386CDC:
|
|
ldr r3, [r2]
|
|
add r4, r1, #1
|
|
add r3, r3, r1, lsl #3
|
|
mov r1, r4
|
|
str r4, [r3, #4]
|
|
_02386CF0:
|
|
cmp r1, r0
|
|
blt _02386CDC
|
|
ldr r0, _02386F0C ; =OVERLAY31_UNKNOWN_POINTER__NA_238A27C
|
|
mov r2, #0
|
|
ldr r4, [r0]
|
|
mov r3, r1, lsl #3
|
|
strh r2, [r4, r3]
|
|
ldr r3, [r0]
|
|
sub r4, r2, #1
|
|
add r3, r3, r1, lsl #3
|
|
str r4, [r3, #4]
|
|
ldr r3, [r0]
|
|
add r3, r3, r1, lsl #3
|
|
strh r2, [r3, #8]
|
|
ldr r3, [r0]
|
|
add r1, r3, r1, lsl #3
|
|
str r4, [r1, #0xc]
|
|
ldr r0, [r0]
|
|
add r1, r0, #0x58
|
|
bl ov31_0238513C
|
|
ldr r1, _02386F0C ; =OVERLAY31_UNKNOWN_POINTER__NA_238A27C
|
|
ldr r0, _02386F18 ; =DUNGEON_WINDOW_PARAMS_17
|
|
ldr r3, [r1]
|
|
ldr r1, _02386F1C ; =0x00000213
|
|
add r4, r3, #0x58
|
|
add r2, sp, #0x5c
|
|
str r4, [sp, #0xbc]
|
|
bl CreateParentMenuFromStringIds
|
|
ldr r6, _02386F0C ; =OVERLAY31_UNKNOWN_POINTER__NA_238A27C
|
|
mov r4, #0x2d
|
|
ldr r1, [r6]
|
|
strb r0, [r1, #0x161]
|
|
_02386D70:
|
|
mov r0, r4
|
|
bl AdvanceFrame
|
|
ldr r0, [r6]
|
|
add r0, r0, #0x100
|
|
ldrsb r0, [r0, #0x61]
|
|
bl IsParentMenuActive
|
|
cmp r0, #0
|
|
bne _02386D70
|
|
ldr r0, [r6]
|
|
add r0, r0, #0x100
|
|
ldrsb r0, [r0, #0x61]
|
|
bl GetSimpleMenuResult__0202AEA4
|
|
ldr r1, [r6]
|
|
sub r0, r0, #1
|
|
str r0, [r1, #0x124]
|
|
ldr r0, [r6]
|
|
ldr r0, [r0, #0x124]
|
|
cmp r0, #0
|
|
movlt r6, #1
|
|
blt _02386EBC
|
|
cmp r0, #1
|
|
bne _02386E70
|
|
bl ov31_02386C14
|
|
ldrsh r0, [r5, #4]
|
|
ldrsh r1, [r5, #6]
|
|
bl GetTile
|
|
ldr r0, [r0, #0x10]
|
|
cmp r0, #0
|
|
beq _02386E68
|
|
ldr r1, [r0]
|
|
cmp r1, #2
|
|
bne _02386E68
|
|
bl GetTrapInfo
|
|
ldrb r3, [r0]
|
|
add r2, sp, #0xc
|
|
ldr r1, _02386F20 ; =0x00001013
|
|
str r3, [sp, #0x1c]
|
|
str r2, [sp]
|
|
ldrb r2, [r0]
|
|
ldr r0, _02386F24 ; =DUNGEON_WINDOW_PARAMS_19
|
|
#if defined(EUROPE)
|
|
sub r3, r1, #0x740
|
|
add r2, r2, #0xdc
|
|
add r2, r2, #0x3400
|
|
#elif defined(JAPAN)
|
|
ldr r3, _023881A0 ; =0x00001D2B
|
|
add r2, r2, #0x5f
|
|
add r2, r2, #0x4700
|
|
#else
|
|
sub r3, r1, #0x740
|
|
add r2, r2, #0xda
|
|
add r2, r2, #0x3400
|
|
#endif
|
|
mov r2, r2, lsl #0x10
|
|
mov r2, r2, lsr #0x10
|
|
str r2, [sp, #4]
|
|
mov r2, #0
|
|
str r2, [sp, #8]
|
|
bl CreateScrollBoxSingle
|
|
mov r6, r0
|
|
mov r4, #0x16
|
|
_02386E3C:
|
|
mov r0, r4
|
|
bl AdvanceFrame
|
|
mov r0, r6
|
|
bl IsScrollBoxActive
|
|
cmp r0, #0
|
|
bne _02386E3C
|
|
mov r0, r6
|
|
bl CloseScrollBox
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
_02386E68:
|
|
mov r6, #2
|
|
b _02386EBC
|
|
_02386E70:
|
|
bl ov29_022EB804
|
|
cmp r0, #0
|
|
beq _02386D70
|
|
ldr r0, _02386F0C ; =OVERLAY31_UNKNOWN_POINTER__NA_238A27C
|
|
ldr r4, [r5, #0xb4]
|
|
ldr r0, [r0]
|
|
ldr r1, _02386F28 ; =ov29_0237C91C
|
|
ldr r2, [r0, #0x124]
|
|
add r0, r4, #0x4a
|
|
mov r2, r2, lsl #3
|
|
ldrh r1, [r1, r2]
|
|
bl SetMonsterActionFields
|
|
mov r6, #0
|
|
strb r6, [r4, #0x4e]
|
|
strh r6, [r4, #0x50]
|
|
strh r6, [r4, #0x52]
|
|
strb r6, [r4, #0x54]
|
|
strh r6, [r4, #0x56]
|
|
strh r6, [r4, #0x58]
|
|
_02386EBC:
|
|
mov r0, #0x2d
|
|
bl AdvanceFrame
|
|
cmp r6, #2
|
|
beq _02386C90
|
|
ldr r0, _02386F0C ; =OVERLAY31_UNKNOWN_POINTER__NA_238A27C
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
beq _02386EF8
|
|
bl ov31_02386C14
|
|
ldr r0, _02386F0C ; =OVERLAY31_UNKNOWN_POINTER__NA_238A27C
|
|
ldr r0, [r0]
|
|
bl MemFree
|
|
ldr r0, _02386F0C ; =OVERLAY31_UNKNOWN_POINTER__NA_238A27C
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
_02386EF8:
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
add sp, sp, #0xf4
|
|
ldmia sp!, {r3, r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02386F0C: .word OVERLAY31_UNKNOWN_POINTER__NA_238A27C
|
|
_02386F10: .word DUNGEON_WINDOW_PARAMS_18
|
|
_02386F14: .word ov31_02386B28
|
|
_02386F18: .word DUNGEON_WINDOW_PARAMS_17
|
|
_02386F1C: .word 0x00000213
|
|
_02386F20: .word 0x00001013
|
|
_02386F24: .word DUNGEON_WINDOW_PARAMS_19
|
|
#ifdef JAPAN
|
|
_023881A0: .word 0x00001D2B
|
|
#endif
|
|
_02386F28: .word ov29_0237C91C
|
|
arm_func_end ov31_02386C6C
|
|
|
|
arm_func_start ov31_02386F2C
|
|
ov31_02386F2C: ; 0x02386F2C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02387010 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x294
|
|
add r0, r0, #0x400
|
|
bl ov29_0234E988
|
|
ldr r0, _02387010 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x600
|
|
ldrsb r0, [r0, #0x97]
|
|
cmp r0, r1
|
|
beq _02386F64
|
|
bl CloseAdvancedTextBox
|
|
_02386F64:
|
|
ldr r0, _02387010 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x600
|
|
ldrsb r0, [r0, #0x98]
|
|
cmp r0, r1
|
|
beq _02386F98
|
|
bl CloseAdvancedTextBox
|
|
bl sub_020407C0
|
|
ldr r0, _02387010 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
strb r1, [r0, #0x698]
|
|
_02386F98:
|
|
ldr r0, _02387010 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x600
|
|
ldrsb r0, [r0, #0x96]
|
|
cmp r0, r1
|
|
beq _02386FB8
|
|
bl CloseTextBox
|
|
_02386FB8:
|
|
ldr r0, _02387010 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3a4
|
|
add r0, r0, #0x400
|
|
bl ov31_023899D4
|
|
ldr r0, _02387010 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3a8
|
|
add r0, r0, #0x400
|
|
bl ov31_02388714
|
|
ldr r0, _02387010 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x95
|
|
add r0, r0, #0x600
|
|
bl ov29_0234E988
|
|
ldr r0, _02387010 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r0, [r0]
|
|
bl MemFree
|
|
ldr r0, _02387010 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02387010: .word OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
arm_func_end ov31_02386F2C
|
|
|
|
arm_func_start ov31_02387014
|
|
ov31_02387014: ; 0x02387014
|
|
ldr r1, [r0, #0xb4]
|
|
ldr ip, _02387044 ; =ov31_023899B8
|
|
ldrb r0, [r1, #7]
|
|
mov r2, #1
|
|
cmp r0, #0
|
|
movne r1, #0xb
|
|
ldr r0, _02387048 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldreqb r1, [r1, #0xa8]
|
|
ldr r0, [r0]
|
|
and r1, r1, #0xff
|
|
ldr r0, [r0, #0x7a4]
|
|
bx ip
|
|
.align 2, 0
|
|
_02387044: .word ov31_023899B8
|
|
_02387048: .word OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
arm_func_end ov31_02387014
|
|
|
|
arm_func_start TeamMenu
|
|
TeamMenu: ; 0x0238704C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x13c
|
|
mov sl, r0
|
|
ldr r0, _02387614 ; =0x000007AC
|
|
mov r1, #8
|
|
bl MemAlloc
|
|
ldr r1, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
str r0, [r1]
|
|
bl ov31_023880D8
|
|
ldr r0, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r0, [r0]
|
|
str sl, [r0, #0x69c]
|
|
bl ov29_0234EBCC
|
|
mov r7, #0
|
|
add r0, sp, #0xb0
|
|
mov r1, #1
|
|
mov r2, r7
|
|
mov r3, r7
|
|
str r7, [sp]
|
|
mov r8, r7
|
|
bl ov29_0234EA18
|
|
ldr r2, _0238761C ; =ov31_02387014
|
|
add r0, sp, #0xb0
|
|
mov r1, #0xe
|
|
mov r3, r7
|
|
bl ov31_02388114
|
|
ldr r2, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r1, _02387620 ; =DUNGEON_WINDOW_PARAMS_22
|
|
ldr r3, [r2]
|
|
str r0, [r3, #0x7a8]
|
|
ldr r0, [r2]
|
|
ldr r0, [r0, #0x7a8]
|
|
bl ov31_02388444
|
|
ldr r0, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
add r1, sp, #8
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x7a8]
|
|
bl ov31_02388704
|
|
ldr r1, [sp, #0xc]
|
|
ldr r0, [sp, #0x10]
|
|
add r1, r1, #8
|
|
mov r0, r0, lsl #0x10
|
|
mov r1, r1, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
mov r1, r1, asr #0x10
|
|
bl ov31_0238991C
|
|
ldr r3, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
mov r1, #0xb
|
|
ldr r4, [r3]
|
|
mov r2, r7
|
|
str r0, [r4, #0x7a4]
|
|
ldr r0, [r3]
|
|
ldr r0, [r0, #0x7a4]
|
|
bl ov31_023899B8
|
|
_02387124:
|
|
ldr r0, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x7a8]
|
|
bl ov31_02388534
|
|
ldr r0, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x7a8]
|
|
bl ov31_023886D4
|
|
cmp r0, #1
|
|
moveq r7, #1
|
|
beq _023875D8
|
|
cmp r0, #2
|
|
bne _02387184
|
|
ldr r0, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
mov r8, #1
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x7a8]
|
|
bl ov31_023886DC
|
|
ldr r1, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r2, [r1]
|
|
str r0, [r2, #0x760]
|
|
ldr r0, [r1]
|
|
ldr sb, [r0, #0x760]
|
|
b _023871B0
|
|
_02387184:
|
|
cmp r0, #3
|
|
bne _023871B0
|
|
ldr r0, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x7a8]
|
|
bl ov31_023886DC
|
|
ldr r1, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r2, [r1]
|
|
str r0, [r2, #0x760]
|
|
ldr r0, [r1]
|
|
ldr sb, [r0, #0x760]
|
|
_023871B0:
|
|
bl ov29_022EBA70
|
|
ldr r0, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
add r1, sp, #0xb0
|
|
ldr r2, [r0]
|
|
ldr r0, _02387624 ; =DUNGEON_PTR
|
|
ldr r2, [r2, #0x760]
|
|
ldr r3, [r0]
|
|
add r0, r1, r2, lsl #5
|
|
ldr r1, [r0, #4]
|
|
mov r0, #0x1b
|
|
add r1, r3, r1, lsl #2
|
|
add r1, r1, #0x12000
|
|
#ifdef JAPAN
|
|
ldr r4, [r1, #0xa84]
|
|
#else
|
|
ldr r4, [r1, #0xb28]
|
|
#endif
|
|
mov r1, #0
|
|
ldr r5, [r4, #0xb4]
|
|
bl AddDungeonSubMenuOption
|
|
mov r0, #0x19
|
|
mov r1, #0
|
|
bl AddDungeonSubMenuOption
|
|
ldrb r0, [r5, #7]
|
|
cmp r0, #0
|
|
bne _02387278
|
|
ldr r0, _02387624 ; =DUNGEON_PTR
|
|
ldr r1, [r0]
|
|
ldrb r0, [r1, #0x75d]
|
|
cmp r0, #0
|
|
ldreqb r0, [r1, #0x75e]
|
|
cmpeq r0, #0
|
|
bne _0238726C
|
|
ldrsh r0, [r5, #0xc]
|
|
bl GetActiveTeamMember
|
|
ldrsh r1, [r0, #8]
|
|
ldr r0, _02387628 ; =0x00005AA5
|
|
cmp r1, r0
|
|
beq _0238726C
|
|
ldrb r0, [r5, #0x48]
|
|
bl JoinedAtRangeCheck2Veneer
|
|
cmp r0, #0
|
|
beq _02387260
|
|
ldr r0, _02387624 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x75c]
|
|
cmp r0, #0
|
|
beq _0238726C
|
|
_02387260:
|
|
mov r0, #0x34
|
|
mov r1, #0
|
|
bl AddDungeonSubMenuOption
|
|
_0238726C:
|
|
mov r0, #0x1c
|
|
mov r1, #0
|
|
bl AddDungeonSubMenuOption
|
|
_02387278:
|
|
mov r0, #0x30
|
|
mov r1, #0
|
|
bl AddDungeonSubMenuOption
|
|
mov r0, #0x1a
|
|
mov r1, #0
|
|
bl AddDungeonSubMenuOption
|
|
ldrb r0, [r5, #7]
|
|
cmp r0, #0
|
|
ldreq r0, _02387624 ; =DUNGEON_PTR
|
|
ldreq r1, [r0]
|
|
ldreqb r0, [r1, #0x75e]
|
|
cmpeq r0, #0
|
|
bne _02387320
|
|
ldrb r0, [r1, #0x75c]
|
|
cmp r0, #0
|
|
beq _02387320
|
|
ldrb r0, [r1, #0x748]
|
|
bl GetLeaderChangeFlag
|
|
cmp r0, #0
|
|
beq _02387320
|
|
mov r0, #0x3b
|
|
mov r1, #0
|
|
bl AddDungeonSubMenuOption
|
|
ldrsh r0, [r5, #0xc]
|
|
mov r6, #1
|
|
cmp r0, #4
|
|
movge r6, #0
|
|
bge _023872FC
|
|
bl GetActiveTeamMember
|
|
ldrsh r0, [r0, #8]
|
|
bl ov29_022F9C34
|
|
cmp r0, #0
|
|
movne r6, #0
|
|
_023872FC:
|
|
mov r0, r4
|
|
mov r1, #0
|
|
bl CheckVariousStatuses2__02301244
|
|
cmp r0, #0
|
|
movne r6, #0
|
|
cmp r6, #0
|
|
bne _02387320
|
|
mov r0, #0x3b
|
|
bl DisableDungeonSubMenuOption
|
|
_02387320:
|
|
mov r0, r5
|
|
bl IsExperienceLocked
|
|
cmp r0, #0
|
|
beq _0238735C
|
|
mov r0, #0x19
|
|
bl DisableDungeonSubMenuOption
|
|
mov r0, #0x3b
|
|
bl DisableDungeonSubMenuOption
|
|
mov r0, #0x1a
|
|
bl DisableDungeonSubMenuOption
|
|
mov r0, #0x30
|
|
bl DisableDungeonSubMenuOption
|
|
mov r0, #0x34
|
|
bl DisableDungeonSubMenuOption
|
|
b _02387380
|
|
_0238735C:
|
|
ldrb r0, [r5, #7]
|
|
cmp r0, #0
|
|
beq _02387380
|
|
mov r0, r4
|
|
bl ov29_0234FBD4
|
|
cmp r0, #0
|
|
bne _02387380
|
|
mov r0, #0x1a
|
|
bl DisableDungeonSubMenuOption
|
|
_02387380:
|
|
bl ov29_022EB9A0
|
|
cmp r8, #0
|
|
beq _023873C8
|
|
ldr r0, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r3, [sl, #0xb4]
|
|
ldr r0, [r0]
|
|
add r1, sp, #0xb4
|
|
ldr r2, [r0, #0x760]
|
|
add r0, r3, #0x4a
|
|
ldr r1, [r1, r2, lsl #5]
|
|
bl ov29_022EBA94
|
|
ldr r0, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
mov r7, #0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x294
|
|
add r0, r0, #0x400
|
|
bl ov29_0234E988
|
|
b _023875D8
|
|
_023873C8:
|
|
ldr r0, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
cmp sb, #0
|
|
ldr r0, [r0]
|
|
moveq r2, #1
|
|
add r1, r0, #0x188
|
|
movne r2, #0
|
|
add r0, r0, #0x530
|
|
add r1, r1, #0x400
|
|
bl ov31_0238513C
|
|
bl ov29_022EBA84
|
|
mov r2, #0
|
|
ldr r1, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
b _02387410
|
|
_023873FC:
|
|
ldr r3, [r1]
|
|
add r4, r2, #1
|
|
add r3, r3, r2, lsl #3
|
|
mov r2, r4
|
|
str r4, [r3, #0x534]
|
|
_02387410:
|
|
cmp r2, r0
|
|
blt _023873FC
|
|
ldr r4, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r3, _0238762C ; =0x00000A3C
|
|
ldr r0, [r4]
|
|
mvn r1, #0
|
|
add r0, r0, r2, lsl #3
|
|
add r0, r0, #0x500
|
|
strh r3, [r0, #0x30]
|
|
ldr r0, [r4]
|
|
mov r5, #0
|
|
add r0, r0, r2, lsl #3
|
|
str r1, [r0, #0x534]
|
|
ldr r3, [r4]
|
|
mov r0, #0xa
|
|
add r3, r3, r2, lsl #3
|
|
add r3, r3, #0x500
|
|
strh r5, [r3, #0x38]
|
|
ldr r3, [r4]
|
|
add r2, r3, r2, lsl #3
|
|
str r1, [r2, #0x53c]
|
|
ldr r1, [r4]
|
|
add r1, r1, #0x188
|
|
add r1, r1, #0x400
|
|
str r1, [sp, #0x78]
|
|
bl Arm9LoadUnkFieldNa0x2029EC8
|
|
add r4, r0, #1
|
|
ldr r1, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r0, _02387630 ; =DUNGEON_WINDOW_PARAMS_23
|
|
ldr r3, [r1]
|
|
ldr r1, _02387634 ; =0x00000233
|
|
add r2, sp, #0x18
|
|
add r3, r3, #0x530
|
|
str r4, [sp, #0x18]
|
|
bl CreateParentMenuFromStringIds
|
|
ldr r4, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
mov r6, #0x1b
|
|
ldr r1, [r4]
|
|
add fp, sp, #4
|
|
strb r0, [r1, #0x694]
|
|
_023874B0:
|
|
mov r0, r6
|
|
bl AdvanceFrame
|
|
mov r0, r5
|
|
mov r1, fp
|
|
bl GetPressedButtons
|
|
ldr r0, [r4]
|
|
add r0, r0, #0x600
|
|
ldrsb r0, [r0, #0x94]
|
|
bl IsParentMenuActive
|
|
cmp r0, #0
|
|
ldr r0, [r4]
|
|
add r0, r0, #0x600
|
|
bne _02387578
|
|
ldrsb r0, [r0, #0x94]
|
|
bl GetSimpleMenuResult__0202AEA4
|
|
subs r1, r0, #1
|
|
bmi _0238754C
|
|
ldr r0, [r4]
|
|
str r1, [r0, #0x760]
|
|
ldr r0, [r4]
|
|
ldr r0, [r0, #0x760]
|
|
bl ov29_022EB804
|
|
cmp r0, #0
|
|
beq _023874B0
|
|
ldr r0, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r1, _02387638 ; =ov29_0237C91C
|
|
ldr r0, [r0]
|
|
ldr r5, [sl, #0xb4]
|
|
ldr r2, [r0, #0x760]
|
|
add r0, r5, #0x4a
|
|
mov r2, r2, lsl #3
|
|
ldrh r1, [r1, r2]
|
|
bl SetMonsterActionFields
|
|
add r0, sp, #0xb0
|
|
add r0, r0, sb, lsl #5
|
|
ldr r0, [r0, #4]
|
|
mov r4, #0
|
|
strb r0, [r5, #0x4e]
|
|
b _02387594
|
|
_0238754C:
|
|
ldr r0, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x294
|
|
add r0, r0, #0x400
|
|
bl ov29_0234E988
|
|
ldr r0, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x7a8]
|
|
bl ov31_023886F4
|
|
mov r4, #1
|
|
b _02387594
|
|
_02387578:
|
|
ldrsb r0, [r0, #0x94]
|
|
bl GetWindowIdSelectedItemOnPage
|
|
mov r1, r0
|
|
mov r0, #0xa
|
|
and r1, r1, #0xff
|
|
bl Arm9StoreUnkFieldNa0x2029ED8
|
|
b _023874B0
|
|
_02387594:
|
|
ldr r0, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x294
|
|
add r0, r0, #0x400
|
|
bl ov29_0234E988
|
|
cmp r4, #1
|
|
beq _02387124
|
|
ldr r0, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x95
|
|
add r0, r0, #0x600
|
|
bl ov29_0234E988
|
|
ldr r0, _02387618 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3a4
|
|
add r0, r0, #0x400
|
|
bl ov31_023899D4
|
|
_023875D8:
|
|
cmp r7, #0
|
|
beq _023875F0
|
|
bl GetLeader
|
|
mov r1, #0
|
|
mov r2, #1
|
|
bl TryPointCameraToMonster
|
|
_023875F0:
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
bl ov31_02386F2C
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
mov r0, r7
|
|
add sp, sp, #0x13c
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02387614: .word 0x000007AC
|
|
_02387618: .word OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
_0238761C: .word ov31_02387014
|
|
_02387620: .word DUNGEON_WINDOW_PARAMS_22
|
|
_02387624: .word DUNGEON_PTR
|
|
_02387628: .word 0x00005AA5
|
|
#ifdef JAPAN
|
|
_0238762C: .word 0x00000877
|
|
#else
|
|
_0238762C: .word 0x00000A3C
|
|
#endif
|
|
_02387630: .word DUNGEON_WINDOW_PARAMS_23
|
|
_02387634: .word 0x00000233
|
|
_02387638: .word ov29_0237C91C
|
|
arm_func_end TeamMenu
|
|
|
|
arm_func_start ov31_0238763C
|
|
ov31_0238763C: ; 0x0238763C
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
bxeq lr
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
arm_func_end ov31_0238763C
|
|
|
|
arm_func_start ov31_02387660
|
|
ov31_02387660: ; 0x02387660
|
|
ldr r1, _02387680 ; =DUNGEON_PTR
|
|
ldrb r0, [r0, #4]
|
|
ldr r1, [r1]
|
|
ldr ip, _02387684 ; =ov31_0238948C
|
|
add r0, r1, r0, lsl #2
|
|
add r0, r0, #0x12000
|
|
#ifdef JAPAN
|
|
ldr r0, [r0, #0xa84]
|
|
#else
|
|
ldr r0, [r0, #0xb28]
|
|
#endif
|
|
bx ip
|
|
.align 2, 0
|
|
_02387680: .word DUNGEON_PTR
|
|
_02387684: .word ov31_0238948C
|
|
arm_func_end ov31_02387660
|
|
|
|
arm_func_start ov31_02387688
|
|
ov31_02387688: ; 0x02387688
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x78
|
|
ldr r2, _02387788 ; =DUNGEON_PTR
|
|
ldrb r0, [r0, #4]
|
|
ldr r2, [r2]
|
|
mov r4, r1
|
|
add r0, r2, r0, lsl #2
|
|
add r0, r0, #0x12000
|
|
#ifdef JAPAN
|
|
ldr sb, [r0, #0xa84]
|
|
#else
|
|
ldr sb, [r0, #0xb28]
|
|
#endif
|
|
bl ov29_022EA62C
|
|
cmp r4, #0
|
|
beq _023876C4
|
|
mov r0, sb
|
|
bl ov31_023889DC
|
|
b _0238776C
|
|
_023876C4:
|
|
ldr r0, [sb, #0xb4]
|
|
bl IsExperienceLocked
|
|
cmp r0, #0
|
|
movne r4, #1
|
|
bne _023876E4
|
|
cmp r4, #0
|
|
movne r4, #2
|
|
moveq r4, #0
|
|
_023876E4:
|
|
add r0, sp, #0
|
|
mov r1, sb
|
|
bl CreateMonsterSummaryFromMonster
|
|
mov r2, #0
|
|
add r0, sp, #0
|
|
mov r1, r4
|
|
strh r2, [sp, #0x40]
|
|
strh r2, [sp, #0x56]
|
|
bl sub_0203F150
|
|
mov r7, #0x62
|
|
mov r6, r7
|
|
mov r5, r7
|
|
mov r4, #1
|
|
mov fp, #0x1c
|
|
mov r8, #0
|
|
_02387720:
|
|
mov sl, r8
|
|
bl ov29_022EA62C
|
|
_02387728:
|
|
mov r0, r7
|
|
bl AdvanceFrame
|
|
bl sub_0203F398
|
|
cmp r0, #2
|
|
beq _0238775C
|
|
cmp r0, #1
|
|
bne _02387728
|
|
bl sub_0203F990
|
|
mov r0, r6
|
|
bl AdvanceFrame
|
|
mov r0, r5
|
|
bl AdvanceFrame
|
|
mov sl, r4
|
|
_0238775C:
|
|
mov r0, fp
|
|
bl AdvanceFrame
|
|
cmp sl, #0
|
|
beq _02387720
|
|
_0238776C:
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
mov r0, sb
|
|
bl ov29_023021F0
|
|
add sp, sp, #0x78
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02387788: .word DUNGEON_PTR
|
|
arm_func_end ov31_02387688
|
|
|
|
arm_func_start ov31_0238778C
|
|
ov31_0238778C: ; 0x0238778C
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _023877C0 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
mov r4, r0
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x600
|
|
ldrh r0, [r0, #0x92]
|
|
bl StringFromId
|
|
mov r1, #2
|
|
mov r3, r0
|
|
mov r0, r4
|
|
mov r2, r1
|
|
bl DrawTextInWindow
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_023877C0: .word OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
arm_func_end ov31_0238778C
|
|
|
|
arm_func_start ov31_023877C4
|
|
ov31_023877C4: ; 0x023877C4
|
|
ldr r2, _023877E4 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr ip, _023877E8 ; =DrawTextInWindow
|
|
ldr r3, [r2]
|
|
mov r1, #2
|
|
add r3, r3, #0x12
|
|
mov r2, #0x10
|
|
add r3, r3, #0x600
|
|
bx ip
|
|
.align 2, 0
|
|
_023877E4: .word OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
_023877E8: .word DrawTextInWindow
|
|
arm_func_end ov31_023877C4
|
|
|
|
arm_func_start ov31_023877EC
|
|
ov31_023877EC: ; 0x023877EC
|
|
#ifdef JAPAN
|
|
#define OV31_023877EC_OFFSET -8
|
|
#define OV31_023877EC_OFFSET_2 -4
|
|
#define OV31_023877EC_OFFSET_3 -0xA4
|
|
#else
|
|
#define OV31_023877EC_OFFSET 0
|
|
#define OV31_023877EC_OFFSET_2 0
|
|
#define OV31_023877EC_OFFSET_3 0
|
|
#endif
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x2a4 + OV31_023877EC_OFFSET
|
|
mov r4, #0
|
|
movs sl, r0
|
|
#ifndef JAPAN
|
|
str r3, [sp, #8]
|
|
#endif
|
|
subne r0, r4, #1
|
|
strne r0, [sl]
|
|
mov sb, r1
|
|
ldr r0, _02388080 ; =0x000007AC
|
|
mov r1, #8
|
|
mov fp, r2
|
|
bl MemAlloc
|
|
ldr r1, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
str r0, [r1]
|
|
bl ov31_023880D8
|
|
mov r7, #0
|
|
mov r6, r7
|
|
_02387830:
|
|
ldr r0, _02388088 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, r6, lsl #2
|
|
add r0, r0, #0x12000
|
|
ldr r5, [r0, #0xb28 + OV31_023877EC_OFFSET_3]
|
|
mov r0, r5
|
|
bl ov31_0238763C
|
|
cmp r0, #0
|
|
beq _0238789C
|
|
cmp fp, #0
|
|
beq _0238786C
|
|
mov r0, r5
|
|
ldr r8, [r5, #0xb4]
|
|
bl ov29_02347100
|
|
#ifdef JAPAN
|
|
strb r0, [r8, #0x15d]
|
|
#else
|
|
strb r0, [r8, #0x161]
|
|
#endif
|
|
_0238786C:
|
|
add r0, sp, #0x218 + OV31_023877EC_OFFSET
|
|
add r0, r0, r7, lsl #5
|
|
str r6, [r0, #4]
|
|
ldr r0, [r5, #0xb4]
|
|
#ifdef JAPAN
|
|
ldrb r0, [r0, #0x15d]
|
|
#else
|
|
ldrb r0, [r0, #0x161]
|
|
#endif
|
|
cmp r0, #0
|
|
movne r1, #0
|
|
add r0, sp, #0x218 + OV31_023877EC_OFFSET
|
|
add r0, r0, r7
|
|
moveq r1, #3
|
|
strb r1, [r0, #0x84]
|
|
add r7, r7, #1
|
|
_0238789C:
|
|
add r6, r6, #1
|
|
cmp r6, #4
|
|
blt _02387830
|
|
mov r6, r7
|
|
mvn r5, #0
|
|
add r3, sp, #0x218 + OV31_023877EC_OFFSET
|
|
mov r1, #0
|
|
b _023878D0
|
|
_023878BC:
|
|
add r2, r3, r6, lsl #5
|
|
add r0, r3, r6
|
|
str r5, [r2, #4]
|
|
strb r1, [r0, #0x84]
|
|
add r6, r6, #1
|
|
_023878D0:
|
|
cmp r6, #4
|
|
blt _023878BC
|
|
mov r0, #0xb
|
|
bl Arm9LoadUnkFieldNa0x2029EC8
|
|
ldr r1, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
mov r2, #0
|
|
ldr r3, [r1]
|
|
str r0, [r3, #0x760]
|
|
ldr r0, [r1]
|
|
str r7, [r0, #0x764]
|
|
ldr r0, [r1]
|
|
str r7, [r0, #0x768]
|
|
ldr r0, [r1]
|
|
str r2, [r0, #0x76c]
|
|
ldr r0, [r1]
|
|
str r2, [r0, #0x770]
|
|
ldr r0, [r1]
|
|
str r2, [r0, #0x754]
|
|
ldr r0, [r1]
|
|
str r2, [r0, #0x758]
|
|
bl ov29_022EA62C
|
|
ldr r0, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x95
|
|
add r0, r0, #0x600
|
|
bl ov29_0234E988
|
|
mov r5, #0
|
|
add r0, sp, #0x68 + OV31_023877EC_OFFSET
|
|
mov r1, r5
|
|
mov r2, #0x80
|
|
bl memset
|
|
mov r8, r5
|
|
ldr fp, _0238808C ; =0x000003E7
|
|
b _02387B80
|
|
_02387958:
|
|
add r0, sp, #0x218 + OV31_023877EC_OFFSET
|
|
add r0, r0, r8, lsl #5
|
|
ldr r1, [r0, #4]
|
|
cmp r1, #0
|
|
blt _02387B7C
|
|
ldr r0, _02388088 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, r1, lsl #2
|
|
add r0, r0, #0x12000
|
|
ldr r6, [r0, #0xb28 + OV31_023877EC_OFFSET_3]
|
|
mov r0, r6
|
|
bl ov31_0238763C
|
|
cmp r0, #0
|
|
beq _02387B7C
|
|
add r0, sp, #0x218 + OV31_023877EC_OFFSET
|
|
add r0, r0, r8
|
|
ldrb r0, [r0, #0x84]
|
|
ldr r6, [r6, #0xb4]
|
|
cmp r0, #0
|
|
movne r0, #0x57
|
|
moveq r0, #0x44
|
|
and r2, r0, #0xff
|
|
add r0, sp, #0x68 + OV31_023877EC_OFFSET
|
|
mov r1, r6
|
|
bl ov29_023002F0
|
|
add r0, sp, #0x68 + OV31_023877EC_OFFSET
|
|
str r0, [sp, #0x50 + OV31_023877EC_OFFSET]
|
|
ldrsh r0, [r6, #0xc]
|
|
bl GetActiveTeamMember
|
|
ldrsh r0, [r0, #8]
|
|
bl ov29_022F9C34
|
|
cmp r0, #0
|
|
ldrsh r1, [r6, #0x12]
|
|
ldrsh r0, [r6, #0x16]
|
|
beq _02387A84
|
|
add r1, r1, r0
|
|
cmp r1, fp
|
|
movgt r3, fp
|
|
movle r3, r1
|
|
mov r2, r3, asr #1
|
|
ldrsh r0, [r6, #0x10]
|
|
add r2, r3, r2, lsr #30
|
|
cmp r0, r2, asr #2
|
|
bgt _02387A18
|
|
ldr r1, _02388090 ; =ov31_0238A044
|
|
add r0, sp, #0xa8 + OV31_023877EC_OFFSET
|
|
bl strcpy
|
|
b _02387B20
|
|
_02387A18:
|
|
cmp r1, fp
|
|
movgt r3, fp
|
|
movle r3, r1
|
|
mov r2, r3, asr #1
|
|
add r2, r3, r2, lsr #30
|
|
mov r2, r2, asr #2
|
|
cmp r0, r2, lsl #1
|
|
bgt _02387A48
|
|
ldr r1, _02388094 ; =ov31_0238A04C
|
|
add r0, sp, #0xa8 + OV31_023877EC_OFFSET
|
|
bl strcpy
|
|
b _02387B20
|
|
_02387A48:
|
|
cmp r1, fp
|
|
movgt r1, fp
|
|
mov r2, r1, asr #1
|
|
add r1, r1, r2, lsr #30
|
|
mov r1, r1, asr #2
|
|
add r1, r1, r1, lsl #1
|
|
cmp r0, r1
|
|
add r0, sp, #0xa8 + OV31_023877EC_OFFSET
|
|
bgt _02387A78
|
|
ldr r1, _02388098 ; =ov31_0238A054
|
|
bl strcpy
|
|
b _02387B20
|
|
_02387A78:
|
|
ldr r1, _0238809C ; =ov31_0238A05C
|
|
bl strcpy
|
|
b _02387B20
|
|
_02387A84:
|
|
add r1, r1, r0
|
|
cmp r1, fp
|
|
movgt r3, fp
|
|
movle r3, r1
|
|
mov r2, r3, asr #1
|
|
ldrsh r0, [r6, #0x10]
|
|
add r2, r3, r2, lsr #30
|
|
cmp r0, r2, asr #2
|
|
bgt _02387AB8
|
|
ldr r1, _023880A0 ; =ov31_0238A064
|
|
add r0, sp, #0xa8 + OV31_023877EC_OFFSET
|
|
bl strcpy
|
|
b _02387B20
|
|
_02387AB8:
|
|
cmp r1, fp
|
|
movgt r3, fp
|
|
movle r3, r1
|
|
mov r2, r3, asr #1
|
|
add r2, r3, r2, lsr #30
|
|
mov r2, r2, asr #2
|
|
cmp r0, r2, lsl #1
|
|
bgt _02387AE8
|
|
ldr r1, _023880A4 ; =ov31_0238A06C
|
|
add r0, sp, #0xa8 + OV31_023877EC_OFFSET
|
|
bl strcpy
|
|
b _02387B20
|
|
_02387AE8:
|
|
cmp r1, fp
|
|
movgt r1, fp
|
|
mov r2, r1, asr #1
|
|
add r1, r1, r2, lsr #30
|
|
mov r1, r1, asr #2
|
|
add r1, r1, r1, lsl #1
|
|
cmp r0, r1
|
|
add r0, sp, #0xa8 + OV31_023877EC_OFFSET
|
|
bgt _02387B18
|
|
ldr r1, _023880A8 ; =ov31_0238A074
|
|
bl strcpy
|
|
b _02387B20
|
|
_02387B18:
|
|
ldr r1, _023880AC ; =ov31_0238A07C
|
|
bl strcpy
|
|
_02387B20:
|
|
add r0, sp, #0xa8 + OV31_023877EC_OFFSET
|
|
str r0, [sp, #0x54 + OV31_023877EC_OFFSET]
|
|
add r0, sp, #0x18 + OV31_023877EC_OFFSET
|
|
str r0, [sp]
|
|
ldr r0, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r2, _023880B0 ; =ov31_0238A084
|
|
ldr r0, [r0]
|
|
mov r1, #0x100
|
|
add r0, r0, #0x30
|
|
add r0, r0, r5, lsl #8
|
|
mov r3, #0
|
|
bl PreprocessString
|
|
ldr r0, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
mov r1, r5, lsl #3
|
|
ldr r2, [r0]
|
|
add r0, r2, #0x30
|
|
add r0, r0, r5, lsl #8
|
|
str r0, [r2, r5, lsl #3]
|
|
ldr r0, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
add r5, r5, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, r1
|
|
str r5, [r0, #4]
|
|
_02387B7C:
|
|
add r8, r8, #1
|
|
_02387B80:
|
|
cmp r8, r7
|
|
blt _02387958
|
|
ldr r0, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
mov r3, #0
|
|
ldr r1, [r0]
|
|
sub r2, r3, #1
|
|
str r3, [r1, r5, lsl #3]
|
|
ldr r1, [r0]
|
|
ldr r0, _02388088 ; =DUNGEON_PTR
|
|
add r1, r1, r5, lsl #3
|
|
str r2, [r1, #4]
|
|
ldr r0, [r0]
|
|
ldrb r5, [r0, #0x75b]
|
|
cmp r5, #0
|
|
ldrne r1, _023880B4 ; =0x00000A3A
|
|
movne r0, #0x10
|
|
strne r0, [sp, #0xf4 + OV31_023877EC_OFFSET]
|
|
mov r0, #0xb
|
|
strneh r1, [sp, #0xf0 + OV31_023877EC_OFFSET]
|
|
bl Arm9LoadUnkFieldNa0x2029EC8
|
|
ldr r1, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
cmp r5, #0
|
|
ldr r3, [r1]
|
|
add r2, sp, #0x29c + OV31_023877EC_OFFSET
|
|
str r0, [r3, #0x760]
|
|
ldr r0, [r1]
|
|
movne r1, #0x800
|
|
ldr r0, [r0, #0x760]
|
|
moveq r1, #0
|
|
add r0, r0, #1
|
|
str r0, [sp, #0xe8 + OV31_023877EC_OFFSET]
|
|
ldr r0, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
orr r1, r1, #0x33
|
|
ldr r3, [r0]
|
|
str r2, [sp, #0x148 + OV31_023877EC_OFFSET]
|
|
ldr r0, _023880B8 ; =DUNGEON_WINDOW_PARAMS_21
|
|
add r2, sp, #0xe8 + OV31_023877EC_OFFSET
|
|
orr r1, r1, #0x1200
|
|
bl CreateParentMenu
|
|
ldr r2, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r1, _023880BC ; =ov31_0238778C
|
|
ldr r2, [r2]
|
|
strb r0, [r2, #0x695]
|
|
ldr r0, _023880C0 ; =DUNGEON_WINDOW_PARAMS_24
|
|
bl CreateTextBox
|
|
ldr r1, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r3, _023880C4 ; =0x00000A36
|
|
ldr r2, [r1]
|
|
mov r5, #0x10
|
|
strb r0, [r2, #0x696]
|
|
ldr r2, [r1]
|
|
str r5, [sp, #0x18c + OV31_023877EC_OFFSET]
|
|
add r0, r2, #0x92
|
|
add r1, r0, #0x500
|
|
add r0, sp, #0x118 + OV31_023877EC_OFFSET
|
|
strh r3, [r0, #0x70]
|
|
str r1, [sp, #0x1c8 + OV31_023877EC_OFFSET]
|
|
cmp sb, #3
|
|
bne _02387CA8
|
|
add r1, r3, #3
|
|
add r0, r2, #0x600
|
|
strh r1, [r0, #0x92]
|
|
mov r5, #0
|
|
str r5, [sp]
|
|
ldr r0, _023880C8 ; =DUNGEON_WINDOW_PARAMS_20
|
|
ldr r3, _023880CC ; =ov31_023877C4
|
|
add r2, sp, #0x180 + OV31_023877EC_OFFSET
|
|
mov r1, #0x800
|
|
str r5, [sp, #4]
|
|
bl CreateAdvancedTextBox
|
|
ldr r1, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r1, [r1]
|
|
strb r0, [r1, #0x697]
|
|
b _02387CF4
|
|
_02387CA8:
|
|
cmp sb, #2
|
|
addne r1, r3, #3
|
|
addne r0, r2, #0x600
|
|
strneh r1, [r0, #0x92]
|
|
bne _02387CF4
|
|
add r1, r3, #2
|
|
add r0, r2, #0x600
|
|
strh r1, [r0, #0x92]
|
|
mov r5, #0
|
|
str r5, [sp]
|
|
ldr r0, _023880C8 ; =DUNGEON_WINDOW_PARAMS_20
|
|
ldr r3, _023880CC ; =ov31_023877C4
|
|
add r2, sp, #0x180 + OV31_023877EC_OFFSET
|
|
mov r1, #0x800
|
|
str r5, [sp, #4]
|
|
bl CreateAdvancedTextBox
|
|
ldr r1, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r1, [r1]
|
|
strb r0, [r1, #0x697]
|
|
_02387CF4:
|
|
sub r0, sb, #2
|
|
#ifdef JAPAN
|
|
str r0, [sp, #0xc]
|
|
ldr r0, _023880D0 ; =0x00000872
|
|
ldr r5, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
mvn r8, #0x3d8
|
|
rsb fp, r0, #0x870
|
|
#else
|
|
mvn r7, #0x3d8
|
|
str r0, [sp, #0x10]
|
|
add r0, r7, #0xe10
|
|
ldr r5, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
str r0, [sp, #0x14]
|
|
mov fp, r7, asr #9
|
|
#endif
|
|
_02387D10:
|
|
ldr r0, [r5]
|
|
add r0, r0, #0x600
|
|
ldrsb r0, [r0, #0x95]
|
|
bl GetWindowIdSelectedItemOnPage
|
|
ldr r1, [r5]
|
|
str r0, [r1, #0x760]
|
|
ldr r1, [r5]
|
|
mov r0, #0xb
|
|
ldr r1, [r1, #0x760]
|
|
and r1, r1, #0xff
|
|
bl Arm9StoreUnkFieldNa0x2029ED8
|
|
ldr r0, [r5]
|
|
ldr r1, [r0, #0x760]
|
|
add r0, sp, #0x218 + OV31_023877EC_OFFSET
|
|
add r0, r0, r1, lsl #5
|
|
ldr r6, [r0, #4]
|
|
cmp r6, #0
|
|
blt _02387EC0
|
|
ldr r0, _02388088 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, r6, lsl #2
|
|
add r0, r0, #0x12000
|
|
#ifdef JAPAN
|
|
ldr r7, [r0, #0xa84]
|
|
mov r0, r7
|
|
bl ov31_0238763C
|
|
cmp r0, #0
|
|
cmpne r8, r6
|
|
beq _02387E98
|
|
cmp sb, #1
|
|
bne _02387DCC
|
|
mov r0, r7
|
|
#else
|
|
ldr r8, [r0, #0xb28]
|
|
mov r0, r8
|
|
bl ov31_0238763C
|
|
cmp r0, #0
|
|
cmpne r7, r6
|
|
beq _02387E98
|
|
cmp sb, #1
|
|
bne _02387DCC
|
|
mov r0, r8
|
|
#endif
|
|
bl sub_0203F9CC
|
|
ldr r0, [r5]
|
|
add r0, r0, #0x600
|
|
ldrsb r0, [r0, #0x98]
|
|
cmp r0, fp
|
|
bne _02387DC0
|
|
mov r1, #0
|
|
mov r0, #7
|
|
mov r2, r1
|
|
bl sub_0204018C
|
|
ldr r1, [r5]
|
|
strb r0, [r1, #0x698]
|
|
b _02387DC4
|
|
_02387DC0:
|
|
bl sub_02041178
|
|
_02387DC4:
|
|
bl sub_020407EC
|
|
b _02387E98
|
|
_02387DCC:
|
|
ldr r0, [sp, #0x10 + OV31_023877EC_OFFSET_2]
|
|
cmp r0, #1
|
|
bhi _02387E98
|
|
ldr r1, [r5]
|
|
add r0, r1, #0x600
|
|
ldrsb r0, [r0, #0x97]
|
|
str r0, [sp, #0xc + OV31_023877EC_OFFSET_2]
|
|
cmp r0, fp
|
|
beq _02387E98
|
|
add r0, r1, #0x92
|
|
#ifdef JAPAN
|
|
ldr r8, [r7, #0xb4]
|
|
add r0, r0, #0x500
|
|
mov r1, r7
|
|
mov r2, #0
|
|
bl ov29_022E2A78
|
|
ldrb r0, [r8, #0xbc]
|
|
cmp r0, #7
|
|
beq _02387E24
|
|
mov r0, r8
|
|
#else
|
|
ldr r7, [r8, #0xb4]
|
|
add r0, r0, #0x500
|
|
mov r1, r8
|
|
mov r2, #0
|
|
bl ov29_022E2A78
|
|
ldrb r0, [r7, #0xbc]
|
|
cmp r0, #7
|
|
beq _02387E24
|
|
mov r0, r7
|
|
#endif
|
|
bl IsExperienceLocked
|
|
cmp r0, #0
|
|
beq _02387E3C
|
|
_02387E24:
|
|
#ifdef JAPAN
|
|
ldr r0, _023880D0 ; =0x00000872
|
|
ldr r2, [r5]
|
|
add r1, r0, #6
|
|
add r0, r2, #0x12
|
|
#else
|
|
ldr r0, [r5]
|
|
ldr r1, _023880D0 ; =0x00000A3D
|
|
add r0, r0, #0x12
|
|
#endif
|
|
add r0, r0, #0x600
|
|
bl GetStringFromFileVeneer
|
|
b _02387E90
|
|
_02387E3C:
|
|
#ifdef JAPAN
|
|
ldrb r0, [r8, #0x62]
|
|
#else
|
|
ldrb r0, [r7, #0x62]
|
|
#endif
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
bne _02387E6C
|
|
ldr r0, [r5]
|
|
#ifdef JAPAN
|
|
ldr r1, _023880D0 ; =0x00000872
|
|
#else
|
|
ldr r1, [sp, #0x14]
|
|
#endif
|
|
add r0, r0, #0x12
|
|
add r0, r0, #0x600
|
|
bl GetStringFromFileVeneer
|
|
b _02387E90
|
|
_02387E6C:
|
|
mov r0, #1
|
|
str r0, [sp]
|
|
ldr r0, [r5]
|
|
ldr r2, _023880D4 ; =OVERLAY31_UNKNOWN_STRUCT__NA_2389FE8
|
|
add r0, r0, #0x12
|
|
#ifdef JAPAN
|
|
add r1, r8, #0x62
|
|
#else
|
|
add r1, r7, #0x62
|
|
#endif
|
|
add r0, r0, #0x600
|
|
mov r3, #1
|
|
bl sub_0200D310
|
|
_02387E90:
|
|
ldr r0, [sp, #0xc + OV31_023877EC_OFFSET_2]
|
|
bl SetAdvancedTextBoxField0x1C2
|
|
_02387E98:
|
|
#ifdef JAPAN
|
|
mov r0, r7
|
|
mov r1, #0
|
|
mov r2, #1
|
|
mov r8, r6
|
|
bl TryPointCameraToMonster
|
|
mov r2, #1
|
|
add r0, r7, #4
|
|
#else
|
|
mov r0, r8
|
|
mov r1, #0
|
|
mov r2, #1
|
|
mov r7, r6
|
|
bl TryPointCameraToMonster
|
|
mov r2, #1
|
|
add r0, r8, #4
|
|
#endif
|
|
mov r1, #0
|
|
mov r3, r2
|
|
bl DrawTileGrid
|
|
_02387EC0:
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
ldr r0, [r5]
|
|
add r0, r0, #0x600
|
|
ldrsb r0, [r0, #0x95]
|
|
bl IsParentMenuActive
|
|
cmp r0, #0
|
|
bne _02387D10
|
|
ldr r0, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x600
|
|
ldrsb r0, [r0, #0x95]
|
|
bl GetSimpleMenuResult__0202AEA4
|
|
subs r3, r0, #1
|
|
bmi _02387F24
|
|
ldr r0, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
add r1, sp, #0x29c + OV31_023877EC_OFFSET
|
|
ldr r2, [r0]
|
|
str r3, [r2, #0x760]
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x760]
|
|
ldrb r0, [r1, r0]
|
|
cmp r0, #0
|
|
movne r4, #1
|
|
b _02387F28
|
|
_02387F24:
|
|
mov r4, #1
|
|
_02387F28:
|
|
ldr r0, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x600
|
|
ldrsb r0, [r0, #0x97]
|
|
cmp r0, r1
|
|
beq _02387F58
|
|
bl CloseAdvancedTextBox
|
|
ldr r0, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
strb r1, [r0, #0x697]
|
|
_02387F58:
|
|
ldr r0, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x600
|
|
ldrsb r0, [r0, #0x98]
|
|
cmp r0, r1
|
|
beq _02387F8C
|
|
bl CloseAdvancedTextBox
|
|
bl sub_020407C0
|
|
ldr r0, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
strb r1, [r0, #0x698]
|
|
_02387F8C:
|
|
ldr r0, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x600
|
|
ldrsb r0, [r0, #0x96]
|
|
bl CloseTextBox
|
|
ldr r0, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
mvn r2, #1
|
|
ldr r1, [r0]
|
|
mov r0, #0x1b
|
|
strb r2, [r1, #0x696]
|
|
bl AdvanceFrame
|
|
cmp sb, #3
|
|
bne _02387FEC
|
|
cmp r4, #0
|
|
beq _0238800C
|
|
bl HideTileGrid
|
|
#ifndef JAPAN
|
|
ldr r0, [sp, #8]
|
|
cmp r0, #0
|
|
beq _0238800C
|
|
#endif
|
|
bl GetLeader
|
|
mov r1, #0
|
|
mov r2, #1
|
|
bl TryPointCameraToMonster
|
|
b _0238800C
|
|
_02387FEC:
|
|
bl HideTileGrid
|
|
#ifndef JAPAN
|
|
ldr r0, [sp, #8]
|
|
cmp r0, #0
|
|
beq _0238800C
|
|
#endif
|
|
bl GetLeader
|
|
mov r1, #0
|
|
mov r2, #1
|
|
bl TryPointCameraToMonster
|
|
_0238800C:
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
mov r0, #4
|
|
mov r1, #0x3e
|
|
bl ov29_022EA370
|
|
cmp r4, #0
|
|
beq _02388038
|
|
bl ov31_02386F2C
|
|
mov r0, #0
|
|
b _02388078
|
|
_02388038:
|
|
ldr r0, _02388084 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
add r1, sp, #0x21c + OV31_023877EC_OFFSET
|
|
ldr r0, [r0]
|
|
cmp sl, #0
|
|
ldr r0, [r0, #0x760]
|
|
ldr r4, [r1, r0, lsl #5]
|
|
strne r4, [sl]
|
|
bl ov31_02386F2C
|
|
cmp r4, #0
|
|
movlt r0, #0
|
|
blt _02388078
|
|
ldr r0, _02388088 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, r4, lsl #2
|
|
add r0, r0, #0x12000
|
|
ldr r0, [r0, #0xb28 + OV31_023877EC_OFFSET_3]
|
|
_02388078:
|
|
add sp, sp, #0x2a4 + OV31_023877EC_OFFSET
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
#define OV31_023877EC_DATA_OFFSET -0x1C5
|
|
#else
|
|
#define OV31_023877EC_DATA_OFFSET 0
|
|
#endif
|
|
_02388080: .word 0x000007AC
|
|
_02388084: .word OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
_02388088: .word DUNGEON_PTR
|
|
_0238808C: .word 0x000003E7
|
|
_02388090: .word ov31_0238A044
|
|
_02388094: .word ov31_0238A04C
|
|
_02388098: .word ov31_0238A054
|
|
_0238809C: .word ov31_0238A05C
|
|
_023880A0: .word ov31_0238A064
|
|
_023880A4: .word ov31_0238A06C
|
|
_023880A8: .word ov31_0238A074
|
|
_023880AC: .word ov31_0238A07C
|
|
_023880B0: .word ov31_0238A084
|
|
_023880B4: .word 0x00000A3A + OV31_023877EC_DATA_OFFSET
|
|
_023880B8: .word DUNGEON_WINDOW_PARAMS_21
|
|
_023880BC: .word ov31_0238778C
|
|
_023880C0: .word DUNGEON_WINDOW_PARAMS_24
|
|
_023880C4: .word 0x00000A36 + OV31_023877EC_DATA_OFFSET
|
|
_023880C8: .word DUNGEON_WINDOW_PARAMS_20
|
|
_023880CC: .word ov31_023877C4
|
|
#ifdef JAPAN
|
|
_023880D0: .word 0x00000872
|
|
#else
|
|
_023880D0: .word 0x00000A3D
|
|
#endif
|
|
_023880D4: .word OVERLAY31_UNKNOWN_STRUCT__NA_2389FE8
|
|
arm_func_end ov31_023877EC
|
|
|
|
arm_func_start ov31_023880D8
|
|
ov31_023880D8: ; 0x023880D8
|
|
mov r2, #0
|
|
strb r2, [r0, #0x592]
|
|
strb r2, [r0, #0x612]
|
|
sub r1, r2, #2
|
|
strb r1, [r0, #0x695]
|
|
strb r1, [r0, #0x694]
|
|
strb r1, [r0, #0x696]
|
|
strb r1, [r0, #0x697]
|
|
strb r1, [r0, #0x698]
|
|
str r2, [r0, #0x7a4]
|
|
str r2, [r0, #0x7a8]
|
|
str r2, [r0, #0x76c]
|
|
str r2, [r0, #0x770]
|
|
str r2, [r0, #0x760]
|
|
bx lr
|
|
arm_func_end ov31_023880D8
|
|
|
|
arm_func_start ov31_02388114
|
|
ov31_02388114: ; 0x02388114
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r7, r0
|
|
mov r6, r1
|
|
ldr r0, _02388154 ; =0x000006D4
|
|
mov r4, r2
|
|
mov r1, #8
|
|
mov r5, r3
|
|
bl MemAlloc
|
|
mov r1, r7
|
|
mov r2, r6
|
|
mov r3, r4
|
|
mov r4, r0
|
|
str r5, [sp]
|
|
bl ov31_02388158
|
|
mov r0, r4
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_02388154: .word 0x000006D4
|
|
arm_func_end ov31_02388114
|
|
|
|
arm_func_start ov31_02388158
|
|
ov31_02388158: ; 0x02388158
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0xdc
|
|
mov sl, r0
|
|
mvn r0, #1
|
|
strb r0, [sl]
|
|
ldr r4, [sp, #0x100]
|
|
str r3, [sl, #0x6c4]
|
|
str r4, [sl, #0x6c8]
|
|
mov r0, #0
|
|
str r0, [sl, #0x688]
|
|
str r0, [sl, #0x68c]
|
|
str r0, [sl, #0x67c]
|
|
mov sb, r1
|
|
str r2, [sl, #0x6c0]
|
|
sub r0, r0, #1
|
|
mov r7, sb
|
|
str r0, [sl, #0x6b8]
|
|
add r6, sl, #4
|
|
mov r4, #8
|
|
_023881A4:
|
|
ldmia r7!, {r0, r1, r2, r3}
|
|
stmia r6!, {r0, r1, r2, r3}
|
|
subs r4, r4, #1
|
|
bne _023881A4
|
|
ldmia r7, {r0, r1, r2}
|
|
stmia r6, {r0, r1, r2}
|
|
add r0, sp, #0xc
|
|
mov r1, #0x80
|
|
bl MemZero
|
|
mov r4, #0
|
|
add r0, sb, #0x14
|
|
mov r7, r4
|
|
str r0, [sp, #8]
|
|
add fp, sl, #0xc0
|
|
b _023883F4
|
|
_023881E0:
|
|
ldr r0, [sb]
|
|
cmp r0, #1
|
|
bne _023882A0
|
|
add r0, sb, r7, lsl #5
|
|
ldr r1, [r0, #0x20]
|
|
cmp r1, #0
|
|
beq _023883F0
|
|
moveq r0, #0
|
|
beq _02388218
|
|
ldr r0, [r1]
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
_02388218:
|
|
cmp r0, #0
|
|
beq _023883F0
|
|
add r0, sb, r7
|
|
ldrb r0, [r0, #0x84]
|
|
ldr r6, [r1, #0xb4]
|
|
add r1, sb, r7, lsl #5
|
|
cmp r0, #0
|
|
movne r0, #0x57
|
|
moveq r0, #0x44
|
|
and r2, r0, #0xff
|
|
ldrb r0, [r1, #0x14]
|
|
cmp r0, #0
|
|
add r0, sp, #0xc
|
|
beq _02388264
|
|
ldrb r2, [r1, #0x1e]
|
|
ldr r1, [sp, #8]
|
|
add r1, r1, r7, lsl #5
|
|
bl sub_02054F44
|
|
b _0238826C
|
|
_02388264:
|
|
mov r1, r6
|
|
bl ov29_023002F0
|
|
_0238826C:
|
|
ldrsh r1, [r6, #0x12]
|
|
ldrsh r0, [r6, #0x16]
|
|
ldrsh r5, [r6, #0x10]
|
|
add r8, r1, r0
|
|
ldr r0, _0238841C ; =0x000003E7
|
|
cmp r8, r0
|
|
movgt r8, r0
|
|
ldrsh r0, [r6, #0xc]
|
|
bl GetActiveTeamMember
|
|
ldrsh r0, [r0, #8]
|
|
bl ov29_022F9C34
|
|
str r0, [sp, #4]
|
|
b _023882E8
|
|
_023882A0:
|
|
cmp r0, #0
|
|
bne _023882E8
|
|
add r0, sb, r7, lsl #5
|
|
ldr r6, [r0, #0x20]
|
|
ldrb r0, [r6]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _023883F0
|
|
ldrsh r5, [r6, #0xe]
|
|
ldrsh r8, [r6, #0x10]
|
|
ldrsh r0, [r6, #8]
|
|
bl sub_02056228
|
|
str r0, [sp, #4]
|
|
mov r1, r6
|
|
add r0, sp, #0xc
|
|
bl sub_020585B4
|
|
_023882E8:
|
|
add r0, sp, #0xc
|
|
str r0, [sp, #0xc4]
|
|
ldr r0, [sp, #4]
|
|
cmp r0, #0
|
|
mov r0, r8, asr #1
|
|
add r0, r8, r0, lsr #30
|
|
beq _02388360
|
|
cmp r5, r0, asr #2
|
|
mov r0, r0, asr #2
|
|
bgt _02388320
|
|
ldr r1, _02388420 ; =ov31_0238A0A8
|
|
add r0, sp, #0x4c
|
|
bl strcpy
|
|
b _023883B8
|
|
_02388320:
|
|
cmp r5, r0, lsl #1
|
|
bgt _02388338
|
|
ldr r1, _02388424 ; =ov31_0238A0B0
|
|
add r0, sp, #0x4c
|
|
bl strcpy
|
|
b _023883B8
|
|
_02388338:
|
|
add r0, r0, r0, lsl #1
|
|
cmp r5, r0
|
|
add r0, sp, #0x4c
|
|
bgt _02388354
|
|
ldr r1, _02388428 ; =ov31_0238A0B8
|
|
bl strcpy
|
|
b _023883B8
|
|
_02388354:
|
|
ldr r1, _0238842C ; =ov31_0238A0C0
|
|
bl strcpy
|
|
b _023883B8
|
|
_02388360:
|
|
cmp r5, r0, asr #2
|
|
mov r0, r0, asr #2
|
|
bgt _0238837C
|
|
ldr r1, _02388430 ; =ov31_0238A0C8
|
|
add r0, sp, #0x4c
|
|
bl strcpy
|
|
b _023883B8
|
|
_0238837C:
|
|
cmp r5, r0, lsl #1
|
|
bgt _02388394
|
|
ldr r1, _02388434 ; =ov31_0238A0D0
|
|
add r0, sp, #0x4c
|
|
bl strcpy
|
|
b _023883B8
|
|
_02388394:
|
|
add r0, r0, r0, lsl #1
|
|
cmp r5, r0
|
|
add r0, sp, #0x4c
|
|
bgt _023883B0
|
|
ldr r1, _02388438 ; =ov31_0238A0D8
|
|
bl strcpy
|
|
b _023883B8
|
|
_023883B0:
|
|
ldr r1, _0238843C ; =ov31_0238A0E0
|
|
bl strcpy
|
|
_023883B8:
|
|
add r0, sp, #0x4c
|
|
str r0, [sp, #0xc8]
|
|
add r0, sp, #0x8c
|
|
str r0, [sp]
|
|
ldr r2, _02388440 ; =ov31_0238A0E8
|
|
add r0, fp, r4, lsl #8
|
|
mov r1, #0x100
|
|
mov r3, #0
|
|
bl PreprocessString
|
|
add r1, fp, r4, lsl #8
|
|
add r0, sl, r4, lsl #3
|
|
str r1, [r0, #0x90]
|
|
add r4, r4, #1
|
|
str r4, [r0, #0x94]
|
|
_023883F0:
|
|
add r7, r7, #1
|
|
_023883F4:
|
|
ldr r0, [sb, #0x88]
|
|
cmp r7, r0
|
|
blt _023881E0
|
|
mov r0, #0
|
|
add r1, sl, r4, lsl #3
|
|
str r0, [r1, #0x90]
|
|
sub r0, r0, #1
|
|
str r0, [r1, #0x94]
|
|
add sp, sp, #0xdc
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_0238841C: .word 0x000003E7
|
|
_02388420: .word ov31_0238A0A8
|
|
_02388424: .word ov31_0238A0B0
|
|
_02388428: .word ov31_0238A0B8
|
|
_0238842C: .word ov31_0238A0C0
|
|
_02388430: .word ov31_0238A0C8
|
|
_02388434: .word ov31_0238A0D0
|
|
_02388438: .word ov31_0238A0D8
|
|
_0238843C: .word ov31_0238A0E0
|
|
_02388440: .word ov31_0238A0E8
|
|
arm_func_end ov31_02388158
|
|
|
|
arm_func_start ov31_02388444
|
|
ov31_02388444: ; 0x02388444
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
sub sp, sp, #0x98
|
|
mov r6, r0
|
|
mov r5, r1
|
|
bl ov29_0234E988
|
|
mov r0, #0xb
|
|
bl Arm9LoadUnkFieldNa0x2029EC8
|
|
str r0, [r6, #0x67c]
|
|
ldr r1, [r6, #0x8c]
|
|
mov r0, #0
|
|
str r1, [r6, #0x680]
|
|
ldr r1, [r6, #0x8c]
|
|
str r1, [r6, #0x684]
|
|
str r0, [r6, #0x688]
|
|
str r0, [r6, #0x68c]
|
|
str r0, [r6, #0x670]
|
|
str r0, [r6, #0x674]
|
|
bl ov29_022EA62C
|
|
ldr r0, _02388528 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r4, [r0, #0x75b]
|
|
cmp r4, #0
|
|
ldrne r1, _0238852C ; =0x00000A3A
|
|
movne r0, #0x10
|
|
strne r0, [sp, #0xc]
|
|
strneh r1, [sp, #8]
|
|
mov r0, #0xb
|
|
bl Arm9LoadUnkFieldNa0x2029EC8
|
|
str r0, [r6, #0x67c]
|
|
add r1, r0, #1
|
|
add r0, r6, #0x88
|
|
str r1, [sp]
|
|
str r0, [sp, #0x60]
|
|
ldr r0, [r6, #0x6c0]
|
|
add r2, sp, #0
|
|
tst r0, #2
|
|
beq _023884FC
|
|
cmp r4, #0
|
|
movne r3, #0x800
|
|
ldr r1, _02388530 ; =0x00401233
|
|
moveq r3, #0
|
|
orr r1, r3, r1
|
|
mov r0, r5
|
|
add r3, r6, #0x90
|
|
bl CreateParentMenuWrapper
|
|
b _0238851C
|
|
_023884FC:
|
|
cmp r4, #0
|
|
movne r0, #0x800
|
|
moveq r0, #0
|
|
orr r1, r0, #0x33
|
|
mov r0, r5
|
|
orr r1, r1, #0x1200
|
|
add r3, r6, #0x90
|
|
bl CreateParentMenu
|
|
_0238851C:
|
|
strb r0, [r6]
|
|
add sp, sp, #0x98
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02388528: .word DUNGEON_PTR
|
|
#ifdef JAPAN
|
|
_0238852C: .word 0x00000875
|
|
#else
|
|
_0238852C: .word 0x00000A3A
|
|
#endif
|
|
_02388530: .word 0x00401233
|
|
arm_func_end ov31_02388444
|
|
|
|
arm_func_start ov31_02388534
|
|
ov31_02388534: ; 0x02388534
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov sl, r0
|
|
mov r0, #0
|
|
str r0, [sl, #0x6cc]
|
|
add r4, sl, #0x2cc
|
|
str r0, [r4, #0x404]
|
|
add sb, sl, #4
|
|
mov r5, #2
|
|
mov r6, #0xb
|
|
mov fp, #0x1b
|
|
mov r8, r0
|
|
add r7, sp, #0
|
|
_02388564:
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl GetPressedButtons
|
|
ldrsb r0, [sl]
|
|
bl GetWindowIdSelectedItemOnPage
|
|
str r0, [sl, #0x67c]
|
|
ldr r1, [sl, #0x6b8]
|
|
cmp r1, r0
|
|
beq _023885DC
|
|
str r0, [sl, #0x6b8]
|
|
ldr r1, [sb]
|
|
cmp r1, #1
|
|
bne _023885B8
|
|
add r0, sb, r0, lsl #5
|
|
ldr r0, [r0, #0x20]
|
|
cmp r0, #0
|
|
ldrne r1, [sl, #0x6c4]
|
|
cmpne r1, #0
|
|
beq _023885DC
|
|
blx r1
|
|
b _023885DC
|
|
_023885B8:
|
|
cmp r1, #0
|
|
bne _023885DC
|
|
add r0, sb, r0, lsl #5
|
|
ldr r0, [r0, #0x20]
|
|
cmp r0, #0
|
|
ldrne r1, [sl, #0x6c4]
|
|
cmpne r1, #0
|
|
beq _023885DC
|
|
blx r1
|
|
_023885DC:
|
|
ldr r1, [sl, #0x67c]
|
|
mov r0, r6
|
|
and r1, r1, #0xff
|
|
bl Arm9StoreUnkFieldNa0x2029ED8
|
|
ldr r0, [sl, #0x6c0]
|
|
tst r0, #4
|
|
beq _02388644
|
|
ldrh r0, [sp]
|
|
tst r0, #8
|
|
beq _02388644
|
|
ldr r0, [sl, #0x67c]
|
|
add r0, sb, r0
|
|
ldrb r0, [r0, #0x84]
|
|
cmp r0, #0
|
|
bne _02388638
|
|
add r0, sl, #0x5c0
|
|
mov r1, #0
|
|
bl PlayWindowInputSound
|
|
mov r0, #2
|
|
str r0, [r4, #0x400]
|
|
ldr r0, [sl, #0x6b8]
|
|
str r0, [r4, #0x404]
|
|
b _023886BC
|
|
_02388638:
|
|
mov r1, r5
|
|
add r0, sl, #0x5c0
|
|
bl PlayWindowInputSound
|
|
_02388644:
|
|
ldrsb r0, [sl]
|
|
bl IsParentMenuActive
|
|
cmp r0, #0
|
|
bne _023886A8
|
|
ldrsb r0, [sl]
|
|
bl GetSimpleMenuResult__0202AEA4
|
|
subs r0, r0, #1
|
|
bmi _0238869C
|
|
ldrsb r0, [sl]
|
|
bl GetSimpleMenuResult__0202AEA4
|
|
sub r0, r0, #1
|
|
str r0, [sl, #0x67c]
|
|
add r0, sb, r0
|
|
ldrb r0, [r0, #0x84]
|
|
cmp r0, #0
|
|
moveq r0, #3
|
|
streq r0, [r4, #0x400]
|
|
ldreq r0, [sl, #0x67c]
|
|
streq r0, [r4, #0x404]
|
|
movne r0, #1
|
|
strne r0, [r4, #0x400]
|
|
b _023886BC
|
|
_0238869C:
|
|
mov r0, #1
|
|
str r0, [r4, #0x400]
|
|
b _023886BC
|
|
_023886A8:
|
|
mov r0, sl
|
|
bl ov31_02388744
|
|
mov r0, fp
|
|
bl AdvanceFrame
|
|
b _02388564
|
|
_023886BC:
|
|
mov r0, sl
|
|
bl ov31_02388744
|
|
mov r0, #0x1b
|
|
bl AdvanceFrame
|
|
bl HideTileGrid
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
arm_func_end ov31_02388534
|
|
|
|
arm_func_start ov31_023886D4
|
|
ov31_023886D4: ; 0x023886D4
|
|
ldr r0, [r0, #0x6cc]
|
|
bx lr
|
|
arm_func_end ov31_023886D4
|
|
|
|
arm_func_start ov31_023886DC
|
|
ov31_023886DC: ; 0x023886DC
|
|
ldr r1, [r0, #0x6cc]
|
|
sub r1, r1, #2
|
|
cmp r1, #1
|
|
ldrls r0, [r0, #0x6d0]
|
|
mvnhi r0, #0
|
|
bx lr
|
|
arm_func_end ov31_023886DC
|
|
|
|
arm_func_start ov31_023886F4
|
|
ov31_023886F4: ; 0x023886F4
|
|
ldr ip, _02388700 ; =ResumeParentMenu
|
|
ldrsb r0, [r0]
|
|
bx ip
|
|
.align 2, 0
|
|
_02388700: .word ResumeParentMenu
|
|
arm_func_end ov31_023886F4
|
|
|
|
arm_func_start ov31_02388704
|
|
ov31_02388704: ; 0x02388704
|
|
ldr ip, _02388710 ; =GetWindowRectangle
|
|
ldrsb r0, [r0]
|
|
bx ip
|
|
.align 2, 0
|
|
_02388710: .word GetWindowRectangle
|
|
arm_func_end ov31_02388704
|
|
|
|
arm_func_start ov31_02388714
|
|
ov31_02388714: ; 0x02388714
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
ldr r4, [r5]
|
|
cmp r4, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
mov r0, r4
|
|
bl ov29_0234E988
|
|
mov r0, r4
|
|
bl MemFree
|
|
mov r0, #0
|
|
str r0, [r5]
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end ov31_02388714
|
|
|
|
arm_func_start ov31_02388744
|
|
ov31_02388744: ; 0x02388744
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, [r0, #0x6c0]
|
|
tst r1, #8
|
|
ldrne r1, [r0, #0x67c]
|
|
addne r0, r0, r1, lsl #5
|
|
ldrne r4, [r0, #0x24]
|
|
cmpne r4, #0
|
|
ldmeqia sp!, {r4, pc}
|
|
mov r0, r4
|
|
mov r1, #0
|
|
mov r2, #1
|
|
bl TryPointCameraToMonster
|
|
mov r2, #1
|
|
mov r3, r2
|
|
add r0, r4, #4
|
|
mov r1, #0
|
|
bl DrawTileGrid
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end ov31_02388744
|
|
|
|
arm_func_start RestMenu
|
|
RestMenu: ; 0x0238878C
|
|
stmdb sp!, {r4, r5, lr}
|
|
sub sp, sp, #0x9c
|
|
ldr r0, _023889B8 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A284
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
bne _023887CC
|
|
mov r0, #0x10
|
|
mov r1, #8
|
|
bl MemAlloc
|
|
ldr r1, _023889B8 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A284
|
|
mov r2, #0
|
|
str r0, [r1]
|
|
str r2, [r0]
|
|
ldr r0, [r1]
|
|
sub r1, r2, #2
|
|
strb r1, [r0, #4]
|
|
_023887CC:
|
|
mov r3, #0
|
|
ldr r0, _023889B8 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A284
|
|
mov r2, r3
|
|
_023887D8:
|
|
ldr r1, [r0]
|
|
add r1, r1, r3
|
|
add r3, r3, #1
|
|
strb r2, [r1, #0xc]
|
|
cmp r3, #2
|
|
blt _023887D8
|
|
bl ov29_022E08F4
|
|
cmp r0, #0
|
|
ldreq r0, _023889B8 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A284
|
|
moveq r1, #3
|
|
ldreq r0, [r0]
|
|
ldr ip, _023889BC ; =0x000008C2
|
|
streqb r1, [r0, #0xc]
|
|
ldr r0, _023889B8 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A284
|
|
mov r5, #0x10
|
|
ldr r1, [r0]
|
|
ldr r0, _023889C0 ; =DUNGEON_WINDOW_PARAMS_25
|
|
add r4, r1, #0xc
|
|
ldr r1, _023889C4 ; =0x00001A13
|
|
ldr r3, _023889C8 ; =DUNGEON_SUBMENU_ITEMS_5
|
|
add r2, sp, #4
|
|
strh ip, [sp, #0xc]
|
|
str r5, [sp, #0x10]
|
|
str r4, [sp, #0x64]
|
|
bl CreateParentMenuFromStringIds
|
|
ldr r4, _023889B8 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A284
|
|
mov r5, #0x62
|
|
ldr r1, [r4]
|
|
strb r0, [r1, #4]
|
|
_0238884C:
|
|
mov r0, r5
|
|
bl AdvanceFrame
|
|
ldr r0, [r4]
|
|
ldrsb r0, [r0, #4]
|
|
bl IsParentMenuActive
|
|
cmp r0, #0
|
|
bne _0238884C
|
|
ldr r0, _023889B8 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A284
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #4]
|
|
bl GetSimpleMenuResult__0202AEA4
|
|
ldr r1, _023889B8 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A284
|
|
ldr r1, [r1]
|
|
str r0, [r1, #8]
|
|
mov r0, #0x62
|
|
bl AdvanceFrame
|
|
ldr r0, _023889B8 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A284
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #4]
|
|
bl CloseParentMenu
|
|
ldr r0, _023889B8 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A284
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #8]
|
|
cmp r0, #1
|
|
beq _023888BC
|
|
cmp r0, #2
|
|
beq _02388908
|
|
b _0238897C
|
|
_023888BC:
|
|
mov r2, #1
|
|
ldr r1, _023889CC ; =0x000008C5
|
|
mov r3, r2
|
|
mov r0, #0
|
|
str r2, [sp]
|
|
bl YesNoMenu
|
|
cmp r0, #1
|
|
movne r0, #1
|
|
bne _023888F0
|
|
bl GetLeaderAction
|
|
mov r1, #0x2b
|
|
bl SetMonsterActionFields
|
|
mov r0, #0
|
|
_023888F0:
|
|
cmp r0, #0
|
|
ldreq r0, _023889B8 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A284
|
|
mvneq r1, #0
|
|
ldreq r0, [r0]
|
|
streq r1, [r0, #8]
|
|
b _02388984
|
|
_02388908:
|
|
mov r2, #1
|
|
ldr r1, _023889D0 ; =0x000008C6
|
|
mov r3, r2
|
|
mov r0, #0
|
|
str r2, [sp]
|
|
bl YesNoMenu
|
|
cmp r0, #1
|
|
movne r2, #1
|
|
bne _02388964
|
|
bl GetLeaderAction
|
|
mov r1, #0x2e
|
|
bl SetMonsterActionFields
|
|
bl GetLeader
|
|
mov r2, r0
|
|
mov r1, #0
|
|
ldr r0, _023889D4 ; =0x0000025A
|
|
mov r3, r1
|
|
bl ov29_022ECDE4
|
|
ldr r0, _023889D8 ; =DUNGEON_PTR
|
|
mov r1, #1
|
|
ldr r0, [r0]
|
|
mov r2, #0
|
|
strb r1, [r0, #0x758]
|
|
_02388964:
|
|
cmp r2, #0
|
|
ldreq r0, _023889B8 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A284
|
|
mvneq r1, #0
|
|
ldreq r0, [r0]
|
|
streq r1, [r0, #8]
|
|
b _02388984
|
|
_0238897C:
|
|
mvn r0, #0
|
|
str r0, [r1, #8]
|
|
_02388984:
|
|
ldr r0, _023889B8 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A284
|
|
ldr r0, [r0]
|
|
ldr r1, [r0, #8]
|
|
cmp r1, #0
|
|
bge _023887CC
|
|
cmp r0, #0
|
|
beq _023889B0
|
|
bl MemFree
|
|
ldr r0, _023889B8 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A284
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
_023889B0:
|
|
add sp, sp, #0x9c
|
|
ldmia sp!, {r4, r5, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
#define REST_MENU_OFFSET 0x1458
|
|
#else
|
|
#define REST_MENU_OFFSET 0
|
|
#endif
|
|
_023889B8: .word OVERLAY31_UNKNOWN_POINTER__NA_238A284
|
|
_023889BC: .word 0x000008C2 + REST_MENU_OFFSET
|
|
_023889C0: .word DUNGEON_WINDOW_PARAMS_25
|
|
_023889C4: .word 0x00001A13
|
|
_023889C8: .word DUNGEON_SUBMENU_ITEMS_5
|
|
_023889CC: .word 0x000008C5 + REST_MENU_OFFSET
|
|
_023889D0: .word 0x000008C6 + REST_MENU_OFFSET
|
|
_023889D4: .word 0x0000025A
|
|
_023889D8: .word DUNGEON_PTR
|
|
arm_func_end RestMenu
|
|
|
|
arm_func_start ov31_023889DC
|
|
ov31_023889DC: ; 0x023889DC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
sub sp, sp, #0x18
|
|
mov r6, r0
|
|
ldr r4, [r6, #0xb4]
|
|
add r3, sp, #0xc
|
|
add r0, r4, #0x9c
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r0, #8
|
|
mov r1, #0x62
|
|
bl ov29_022EA370
|
|
mov r0, r6
|
|
mov r1, #1
|
|
bl IsBlinded
|
|
mov r3, r0
|
|
ldrsh r0, [r4, #2]
|
|
ldrsh r2, [r4, #0xe]
|
|
add r1, r4, #0x90
|
|
bl PrintIqSkillsMenu
|
|
mov r5, #0x62
|
|
_02388A2C:
|
|
bl sub_02041B7C
|
|
movs r7, r0
|
|
bne _02388A44
|
|
mov r0, r5
|
|
bl AdvanceFrame
|
|
b _02388A2C
|
|
_02388A44:
|
|
bl sub_020420F4
|
|
mov r0, r6
|
|
bl ov29_023021F0
|
|
ldr r0, [r6, #0xb4]
|
|
add r3, sp, #0
|
|
add r0, r0, #0x9c
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
add r0, sp, #0xc
|
|
mov r1, #0x38
|
|
bl IqSkillFlagTest
|
|
mov r5, r0
|
|
add r0, sp, #0
|
|
mov r1, #0x38
|
|
bl IqSkillFlagTest
|
|
cmp r5, #0
|
|
bne _02388AA8
|
|
cmp r0, #0
|
|
beq _02388AF8
|
|
ldr r0, _02388BFC ; =_020A1870
|
|
ldrsh r1, [r4, #0x16]
|
|
ldrsh r0, [r0]
|
|
add r0, r1, r0
|
|
strh r0, [r4, #0x16]
|
|
b _02388AF8
|
|
_02388AA8:
|
|
cmp r0, #0
|
|
bne _02388AF8
|
|
ldr r0, _02388BFC ; =_020A1870
|
|
ldrsh r1, [r4, #0x16]
|
|
ldrsh r0, [r0]
|
|
ldr r2, _02388C00 ; =0x000003E7
|
|
sub r0, r1, r0
|
|
strh r0, [r4, #0x16]
|
|
ldrsh r1, [r4, #0x12]
|
|
ldrsh r0, [r4, #0x16]
|
|
add r1, r1, r0
|
|
cmp r1, r2
|
|
ldrsh r0, [r4, #0x10]
|
|
movle r2, r1
|
|
cmp r0, r2
|
|
ble _02388AF8
|
|
ldr r0, _02388C00 ; =0x000003E7
|
|
cmp r1, r0
|
|
movgt r1, r0
|
|
strh r1, [r4, #0x10]
|
|
_02388AF8:
|
|
#ifdef JAPAN
|
|
mov r0, #0x41
|
|
bl TeamMemberHasEnabledIqSkill
|
|
ldr r2, _02389E78 ; =DUNGEON_PTR
|
|
mov r1, #0x39
|
|
ldr r2, [r2]
|
|
add r2, r2, #0x1a000
|
|
strb r0, [r2, #0x19d]
|
|
add r0, sp, #0xc
|
|
#else
|
|
bl UpdateMapSurveyorFlag
|
|
add r0, sp, #0xc
|
|
mov r1, #0x39
|
|
#endif
|
|
bl IqSkillFlagTest
|
|
mov r5, r0
|
|
add r0, sp, #0
|
|
mov r1, #0x39
|
|
bl IqSkillFlagTest
|
|
cmp r5, #0
|
|
bne _02388B74
|
|
cmp r0, #0
|
|
beq _02388BE8
|
|
mov r5, #0
|
|
#ifdef JAPAN
|
|
add r3, r4, #0x120
|
|
#else
|
|
add r3, r4, #0x124
|
|
#endif
|
|
mov r1, r5
|
|
mov r2, #1
|
|
_02388B38:
|
|
ldrb r0, [r3, r5, lsl #3]
|
|
add r4, r3, r5, lsl #3
|
|
tst r0, #1
|
|
movne r0, r2
|
|
moveq r0, r1
|
|
tst r0, #0xff
|
|
ldrneh r0, [r4, #2]
|
|
orrne r0, r0, #0x100
|
|
strneh r0, [r4, #2]
|
|
add r0, r5, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r5, r0, asr #0x10
|
|
cmp r5, #4
|
|
blt _02388B38
|
|
b _02388BE8
|
|
_02388B74:
|
|
cmp r0, #0
|
|
bne _02388BE8
|
|
mov sb, #0
|
|
#ifdef JAPAN
|
|
add r6, r4, #0x120
|
|
#else
|
|
add r6, r4, #0x124
|
|
#endif
|
|
mov r4, sb
|
|
mov r5, #1
|
|
_02388B8C:
|
|
ldrb r0, [r6, sb, lsl #3]
|
|
add r8, r6, sb, lsl #3
|
|
tst r0, #1
|
|
movne r0, r5
|
|
moveq r0, r4
|
|
tst r0, #0xff
|
|
beq _02388BD4
|
|
ldrh r1, [r8, #2]
|
|
mov r0, r8
|
|
bic r1, r1, #0x100
|
|
strh r1, [r8, #2]
|
|
bl GetMaxPp
|
|
ldrb r1, [r8, #6]
|
|
cmp r1, r0
|
|
ble _02388BD4
|
|
mov r0, r8
|
|
bl GetMaxPp
|
|
strb r0, [r8, #6]
|
|
_02388BD4:
|
|
add r0, sb, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov sb, r0, asr #0x10
|
|
cmp sb, #4
|
|
blt _02388B8C
|
|
_02388BE8:
|
|
cmp r7, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
add sp, sp, #0x18
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_02388BFC: .word _020A1870
|
|
_02388C00: .word 0x000003E7
|
|
#ifdef JAPAN
|
|
_02389E78: .word DUNGEON_PTR
|
|
#endif
|
|
arm_func_end ov31_023889DC
|
|
|
|
arm_func_start RecruitmentSearchMenuLoop
|
|
RecruitmentSearchMenuLoop: ; 0x02388C04
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #0xa0
|
|
ldr r0, _02388D30 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A288
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0xd94]
|
|
cmp r0, #3
|
|
addls pc, pc, r0, lsl #2
|
|
b _02388D24
|
|
_02388C24: ; jump table
|
|
b _02388C34 ; case 0
|
|
b _02388CD0 ; case 1
|
|
b _02388CF8 ; case 2
|
|
b _02388D18 ; case 3
|
|
_02388C34:
|
|
ldr r0, _02388D34 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x748]
|
|
bl IsRecruitingAllowed
|
|
cmp r0, #0
|
|
ldreq r2, _02388D38 ; =0x00000B44
|
|
ldreq r1, _02388D3C ; =ov29_0238280C
|
|
moveq r0, #4
|
|
streqh r2, [r1]
|
|
beq _02388D28
|
|
ldr r0, _02388D34 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x75d]
|
|
cmp r0, #0
|
|
ldrne r2, _02388D40 ; =0x00000B45
|
|
ldrne r1, _02388D3C ; =ov29_0238280C
|
|
movne r0, #4
|
|
strneh r2, [r1]
|
|
bne _02388D28
|
|
ldr r1, _02388D44 ; =0x00000B46
|
|
mov r0, #0x10
|
|
strh r1, [sp, #0x10]
|
|
str r0, [sp, #0x14]
|
|
mov ip, #0
|
|
str ip, [sp]
|
|
ldr r0, _02388D48 ; =DUNGEON_WINDOW_PARAMS_26
|
|
ldr r1, _02388D4C ; =0x00001813
|
|
ldr r3, _02388D50 ; =ov31_02388D54
|
|
add r2, sp, #8
|
|
str ip, [sp, #4]
|
|
bl CreateAdvancedTextBox
|
|
ldr r1, _02388D30 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A288
|
|
ldr r2, [r1]
|
|
strb r0, [r2]
|
|
ldr r1, [r1]
|
|
ldr r0, [r1, #0xd94]
|
|
add r0, r0, #1
|
|
str r0, [r1, #0xd94]
|
|
b _02388D24
|
|
_02388CD0:
|
|
ldrsb r0, [r1]
|
|
bl IsAdvancedTextBoxActive
|
|
cmp r0, #0
|
|
bne _02388D24
|
|
ldr r0, _02388D30 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A288
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0xd94]
|
|
add r0, r0, #1
|
|
str r0, [r1, #0xd94]
|
|
b _02388D24
|
|
_02388CF8:
|
|
ldrsb r0, [r1]
|
|
bl CloseAdvancedTextBox
|
|
ldr r0, _02388D30 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A288
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0xd94]
|
|
add r0, r0, #1
|
|
str r0, [r1, #0xd94]
|
|
b _02388D24
|
|
_02388D18:
|
|
bl ov29_0234F77C
|
|
mov r0, #4
|
|
b _02388D28
|
|
_02388D24:
|
|
mov r0, #1
|
|
_02388D28:
|
|
add sp, sp, #0xa0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
#define RECRUITMENT_SEARCH_MENU_LOOP_OFFSET -0x4FE
|
|
#else
|
|
#define RECRUITMENT_SEARCH_MENU_LOOP_OFFSET 0
|
|
#endif
|
|
_02388D30: .word OVERLAY31_UNKNOWN_POINTER__NA_238A288
|
|
_02388D34: .word DUNGEON_PTR
|
|
_02388D38: .word 0x00000B44 + RECRUITMENT_SEARCH_MENU_LOOP_OFFSET
|
|
_02388D3C: .word ov29_0238280C
|
|
_02388D40: .word 0x00000B45 + RECRUITMENT_SEARCH_MENU_LOOP_OFFSET
|
|
_02388D44: .word 0x00000B46 + RECRUITMENT_SEARCH_MENU_LOOP_OFFSET
|
|
_02388D48: .word DUNGEON_WINDOW_PARAMS_26
|
|
_02388D4C: .word 0x00001813
|
|
_02388D50: .word ov31_02388D54
|
|
arm_func_end RecruitmentSearchMenuLoop
|
|
|
|
arm_func_start ov31_02388D54
|
|
ov31_02388D54: ; 0x02388D54
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0xd4
|
|
ldr r4, _02388E54 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A288
|
|
mov sl, r0
|
|
ldr r0, [r4]
|
|
mov r8, #4
|
|
ldr r0, [r0, #0xd90]
|
|
mov sb, #0x14
|
|
cmp r0, #0
|
|
beq _02388E30
|
|
mov r7, #0
|
|
add r6, sp, #0x44
|
|
add fp, sp, #4
|
|
add r5, sp, #0x84
|
|
b _02388E1C
|
|
_02388D90:
|
|
add r0, r1, r7, lsl #1
|
|
ldrsh r1, [r0, #4]
|
|
mov r0, r6
|
|
bl GetSpeciesString
|
|
ldr r0, [r4]
|
|
add r0, r0, r7, lsl #1
|
|
ldrsh r0, [r0, #4]
|
|
bl GetDexNumber
|
|
ldr r2, [r4]
|
|
str r0, [sp, #0xa8]
|
|
add r2, r2, r7
|
|
ldrb r2, [r2, #0x90a]
|
|
ldr r1, _02388E58 ; =ov31_0238A154
|
|
mov r0, fp
|
|
mov r3, r6
|
|
bl ov31_02388E60
|
|
mov r0, r6
|
|
mov r1, #0x40
|
|
mov r2, fp
|
|
mov r3, #0
|
|
str r5, [sp]
|
|
bl PreprocessString
|
|
mov r0, sl
|
|
mov r1, r8
|
|
mov r2, sb
|
|
mov r3, r6
|
|
bl DrawTextInWindow
|
|
add sb, sb, #0xd
|
|
cmp sb, #0x7c
|
|
blt _02388E18
|
|
cmp r8, #4
|
|
bgt _02388E4C
|
|
mov r8, #0x74
|
|
mov sb, #0x14
|
|
_02388E18:
|
|
add r7, r7, #1
|
|
_02388E1C:
|
|
ldr r1, [r4]
|
|
ldr r0, [r1, #0xd90]
|
|
cmp r7, r0
|
|
blt _02388D90
|
|
b _02388E4C
|
|
_02388E30:
|
|
ldr r0, _02388E5C ; =0x00000B47
|
|
bl StringFromId
|
|
mov r3, r0
|
|
mov r0, sl
|
|
mov r1, r8
|
|
mov r2, sb
|
|
bl DrawTextInWindow
|
|
_02388E4C:
|
|
add sp, sp, #0xd4
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02388E54: .word OVERLAY31_UNKNOWN_POINTER__NA_238A288
|
|
_02388E58: .word ov31_0238A154
|
|
#ifdef JAPAN
|
|
_02388E5C: .word 0x00000649
|
|
#else
|
|
_02388E5C: .word 0x00000B47
|
|
#endif
|
|
arm_func_end ov31_02388D54
|
|
|
|
arm_func_start ov31_02388E60
|
|
ov31_02388E60: ; 0x02388E60
|
|
stmdb sp!, {r0, r1, r2, r3}
|
|
stmdb sp!, {r3, lr}
|
|
add r2, sp, #0xc
|
|
bic r2, r2, #3
|
|
ldr r1, [sp, #0xc]
|
|
add r2, r2, #4
|
|
bl vsprintf
|
|
ldmia sp!, {r3, lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
arm_func_end ov31_02388E60
|
|
|
|
arm_func_start ov31_02388E88
|
|
ov31_02388E88: ; 0x02388E88
|
|
#ifdef JAPAN
|
|
#define OV31_02388E88_OFFSET -0x50
|
|
#else
|
|
#define OV31_02388E88_OFFSET 0
|
|
#endif
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x84
|
|
sub sp, sp, #0x400
|
|
ldr r0, _02389164 ; =OVERLAY31_UNKNOWN_STRUCT__NA_238A144
|
|
bl InitMenu
|
|
cmp r0, #0
|
|
beq _02389158
|
|
ldr r0, _02389168 ; =0x00000D98
|
|
mov r1, #8
|
|
bl MemAlloc
|
|
ldr r1, _0238916C ; =OVERLAY31_UNKNOWN_POINTER__NA_238A288
|
|
mov r3, #0
|
|
str r0, [r1]
|
|
add r5, r0, #4
|
|
ldr r0, _02389170 ; =0x00000483
|
|
mov r4, r3
|
|
add r1, sp, #0
|
|
_02388ECC:
|
|
add r2, r5, r3
|
|
strb r4, [r1, r3]
|
|
add r3, r3, #1
|
|
strb r4, [r2, #0x906]
|
|
cmp r3, r0
|
|
blt _02388ECC
|
|
mov sb, #1
|
|
mov r8, #2
|
|
add r7, sp, #0
|
|
ldr r6, _02389174 ; =DUNGEON_PTR
|
|
b _02388F3C
|
|
_02388EF8:
|
|
ldr r1, [r6]
|
|
mov sl, sb
|
|
add r1, r1, r4, lsl #3
|
|
add r1, r1, #0x3900
|
|
ldrsh r2, [r1, #0x76 + OV31_02388E88_OFFSET]
|
|
ldrsh r1, [r1, #0x78 + OV31_02388E88_OFFSET]
|
|
cmp r2, #0
|
|
cmpeq r1, #0
|
|
beq _02388F38
|
|
add r0, r0, #0x174 + OV31_02388E88_OFFSET
|
|
add r0, r0, #0x3800
|
|
add r0, r0, r4, lsl #3
|
|
cmp r2, #0
|
|
moveq sl, r8
|
|
bl GetMonsterIdFromSpawnEntry
|
|
strb sl, [r7, r0]
|
|
_02388F38:
|
|
add r4, r4, #1
|
|
_02388F3C:
|
|
ldr r0, [r6]
|
|
add r1, r0, #0x3000
|
|
#ifdef JAPAN
|
|
ldr r1, [r1, #0xd7c]
|
|
#else
|
|
ldr r1, [r1, #0xe20]
|
|
#endif
|
|
cmp r4, r1
|
|
blt _02388EF8
|
|
ldrb r0, [r0, #0x790]
|
|
cmp r0, #0
|
|
beq _02388F6C
|
|
bl GetKecleonIdToSpawnByFloor
|
|
add r1, sp, #0
|
|
mov r2, #1
|
|
strb r2, [r1, r0]
|
|
_02388F6C:
|
|
ldr r0, _02389174 ; =DUNGEON_PTR
|
|
mov sl, #0
|
|
ldr r0, [r0]
|
|
#ifdef JAPAN
|
|
mov r8, #1
|
|
#else
|
|
mov sb, #1
|
|
#endif
|
|
add r0, r0, #0x700
|
|
ldrsh r2, [r0, #0xa8]
|
|
cmp r2, #0
|
|
addne r0, sp, #0
|
|
movne r1, #1
|
|
strneb r1, [r0, r2]
|
|
_02388F94:
|
|
#ifdef JAPAN
|
|
mov r0, r8, lsl #0x10
|
|
add r1, sp, #0
|
|
ldrb r1, [r1, r0, asr #16]
|
|
mov r7, r0, asr #0x10
|
|
#else
|
|
mov r0, sb, lsl #0x10
|
|
add r1, sp, #0
|
|
ldrb r1, [r1, r0, asr #16]
|
|
mov r8, r0, asr #0x10
|
|
#endif
|
|
mov r6, #0x44
|
|
cmp r1, #0
|
|
mov r4, #0
|
|
beq _023890B4
|
|
#ifdef JAPAN
|
|
mov r0, r7
|
|
#else
|
|
mov r0, r8
|
|
#endif
|
|
bl SpecificRecruitCheck
|
|
cmp r0, #0
|
|
beq _023890B4
|
|
#ifdef JAPAN
|
|
mov r0, r7
|
|
#else
|
|
mov r0, r8
|
|
#endif
|
|
bl CanMonsterSpawn
|
|
cmp r0, #0
|
|
beq _023890B4
|
|
#ifdef JAPAN
|
|
mov r0, r7
|
|
#else
|
|
mov r0, r8
|
|
#endif
|
|
bl GetRecruitRate2
|
|
ldr r1, _02389178 ; =0xFFFFFC19
|
|
cmp r0, r1
|
|
beq _023890B4
|
|
#ifdef JAPAN
|
|
mov sb, r4
|
|
ldr fp, _0238A43C ; =0x0000022B
|
|
b _0238A2A8
|
|
_0238A26C:
|
|
mov r0, sb, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
bl GetTeamMember
|
|
ldrb r1, [r0]
|
|
tst r1, #1
|
|
movne r1, #1
|
|
moveq r1, #0
|
|
tst r1, #0xff
|
|
beq _0238A2A4
|
|
ldrsh r1, [r0, #4]
|
|
mov r0, r7
|
|
bl BaseFormsEqual
|
|
cmp r0, #0
|
|
bne _0238A2B0
|
|
_0238A2A4:
|
|
add sb, sb, #1
|
|
_0238A2A8:
|
|
cmp sb, fp
|
|
blt _0238A26C
|
|
_0238A2B0:
|
|
ldr r0, _0238A43C ; =0x0000022B
|
|
cmp sb, r0
|
|
movne r4, #1
|
|
cmp r4, #0
|
|
bne _0238906C
|
|
mov sb, #0
|
|
b _0238905C
|
|
_0238900C:
|
|
mov r0, sb, lsl #0x10
|
|
#else
|
|
mov r0, r8
|
|
mov r1, #1
|
|
bl IsMonsterOnTeam
|
|
cmp r0, #0
|
|
movne r4, #1
|
|
cmp r4, #0
|
|
bne _0238906C
|
|
mov r7, #0
|
|
b _0238905C
|
|
_0238900C:
|
|
mov r0, r7, lsl #0x10
|
|
#endif
|
|
mov r0, r0, asr #0x10
|
|
bl GetActiveTeamMember
|
|
mov fp, r0
|
|
ldrb r0, [fp]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _02389058
|
|
ldrsh r0, [fp, #8]
|
|
bl CheckTeamMemberIdxVeneer
|
|
cmp r0, #0
|
|
bne _02389058
|
|
ldrsh r1, [fp, #0xc]
|
|
#ifdef JAPAN
|
|
mov r0, r7
|
|
bl BaseFormsEqual
|
|
cmp r0, #0
|
|
bne _02389064
|
|
_02389058:
|
|
add sb, sb, #1
|
|
_0238905C:
|
|
cmp sb, #4
|
|
blt _0238900C
|
|
_02389064:
|
|
cmp sb, #4
|
|
movne r4, #1
|
|
_0238906C:
|
|
add sb, r5, sl
|
|
ldrb r0, [sb, #0x906]
|
|
#else
|
|
mov r0, r8
|
|
bl BaseFormsEqual
|
|
cmp r0, #0
|
|
bne _02389064
|
|
_02389058:
|
|
add r7, r7, #1
|
|
_0238905C:
|
|
cmp r7, #4
|
|
blt _0238900C
|
|
_02389064:
|
|
cmp r7, #4
|
|
movne r4, #1
|
|
_0238906C:
|
|
add r7, r5, sl
|
|
ldrb r0, [r7, #0x906]
|
|
#endif
|
|
cmp r4, #0
|
|
movne r6, #0x46
|
|
cmp r6, r0
|
|
bne _023890A4
|
|
#ifdef JAPAN
|
|
mov r0, r7
|
|
#else
|
|
mov r0, r8
|
|
#endif
|
|
bl GetDexNumber
|
|
mov r1, sl, lsl #1
|
|
mov r4, r0
|
|
ldrsh r0, [r5, r1]
|
|
bl GetDexNumber
|
|
cmp r4, r0
|
|
beq _023890B4
|
|
_023890A4:
|
|
mov r0, sl, lsl #1
|
|
#ifdef JAPAN
|
|
strh r7, [r5, r0]
|
|
strb r6, [sb, #0x906]
|
|
#else
|
|
strh r8, [r5, r0]
|
|
strb r6, [r7, #0x906]
|
|
#endif
|
|
add sl, sl, #1
|
|
_023890B4:
|
|
ldr r0, _02389170 ; =0x00000483
|
|
#ifdef JAPAN
|
|
add r8, r8, #1
|
|
cmp r8, r0
|
|
#else
|
|
add sb, sb, #1
|
|
cmp sb, r0
|
|
#endif
|
|
blt _02388F94
|
|
add r0, r5, #6
|
|
str sl, [r5, #0xd8c]
|
|
add r6, r0, #0x900
|
|
mov r8, #0
|
|
b _02389140
|
|
_023890D8:
|
|
add r7, r8, #1
|
|
mov fp, r8, lsl #1
|
|
b _02389134
|
|
_023890E4:
|
|
mov r1, r7, lsl #1
|
|
ldrsh r0, [r5, r1]
|
|
ldrsh sb, [r5, r1]
|
|
bl GetDexNumber
|
|
mov r4, r0
|
|
ldrsh r0, [r5, fp]
|
|
bl GetDexNumber
|
|
ldrsh r2, [r5, fp]
|
|
add r1, sb, r4, lsl #11
|
|
add r0, r2, r0, lsl #11
|
|
cmp r1, r0
|
|
bge _02389130
|
|
ldrb r1, [r6, r7]
|
|
mov r0, r7, lsl #1
|
|
strh r2, [r5, r0]
|
|
ldrb r0, [r6, r8]
|
|
strb r0, [r6, r7]
|
|
strh sb, [r5, fp]
|
|
strb r1, [r6, r8]
|
|
_02389130:
|
|
add r7, r7, #1
|
|
_02389134:
|
|
cmp r7, sl
|
|
blt _023890E4
|
|
add r8, r8, #1
|
|
_02389140:
|
|
cmp r8, sl
|
|
blt _023890D8
|
|
ldr r0, _0238916C ; =OVERLAY31_UNKNOWN_POINTER__NA_238A288
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0xd94]
|
|
_02389158:
|
|
add sp, sp, #0x84
|
|
add sp, sp, #0x400
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02389164: .word OVERLAY31_UNKNOWN_STRUCT__NA_238A144
|
|
_02389168: .word 0x00000D98
|
|
_0238916C: .word OVERLAY31_UNKNOWN_POINTER__NA_238A288
|
|
_02389170: .word 0x00000483
|
|
_02389174: .word DUNGEON_PTR
|
|
_02389178: .word 0xFFFFFC19
|
|
#ifdef JAPAN
|
|
_0238A43C: .word 0x0000022B
|
|
#endif
|
|
arm_func_end ov31_02388E88
|
|
|
|
arm_func_start ov31_0238917C
|
|
ov31_0238917C: ; 0x0238917C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _023891A4 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A288
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
bl MemFree
|
|
ldr r0, _023891A4 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A288
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_023891A4: .word OVERLAY31_UNKNOWN_POINTER__NA_238A288
|
|
arm_func_end ov31_0238917C
|
|
|
|
arm_func_start DrawDungeonHintContents
|
|
DrawDungeonHintContents: ; 0x023891A8
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
bl GetWindowIdPageStart
|
|
mov r4, r0
|
|
ldr r0, _023891F8 ; =DUNGEON_SUBMENU_ITEMS_6
|
|
mov r1, r4, lsl #3
|
|
ldrh r1, [r0, r1]
|
|
mov r0, r5
|
|
bl sub_02030A2C
|
|
#if defined(EUROPE)
|
|
add r0, r4, #0xb2
|
|
add r0, r0, #0x3f00
|
|
#elif defined(JAPAN)
|
|
add r0, r4, #0xb3
|
|
add r0, r0, #0x4900
|
|
#else
|
|
add r0, r4, #0xfb0
|
|
add r0, r0, #0x3000
|
|
#endif
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bl StringFromId
|
|
mov r3, r0
|
|
mov r0, r5
|
|
mov r1, #4
|
|
mov r2, #0x10
|
|
bl DrawTextInWindow
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_023891F8: .word DUNGEON_SUBMENU_ITEMS_6
|
|
arm_func_end DrawDungeonHintContents
|
|
|
|
arm_func_start HelpMenuLoop
|
|
HelpMenuLoop: ; 0x023891FC
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #0xa0
|
|
ldr r0, _023893FC ; =OVERLAY31_UNKNOWN_POINTER__NA_238A28C
|
|
ldr r2, [r0]
|
|
ldr r0, [r2, #8]
|
|
cmp r0, #6
|
|
addls pc, pc, r0, lsl #2
|
|
b _023893F0
|
|
_0238921C: ; jump table
|
|
b _02389238 ; case 0
|
|
b _023892B8 ; case 1
|
|
b _02389278 ; case 2
|
|
b _02389344 ; case 3
|
|
b _023893A8 ; case 4
|
|
b _023893DC ; case 5
|
|
b _023893DC ; case 6
|
|
_02389238:
|
|
ldr ip, _02389400 ; =0x00003FA7
|
|
mov r4, #0x10
|
|
ldr r0, _02389404 ; =DUNGEON_WINDOW_PARAMS_27
|
|
ldr r1, _02389408 ; =0x00401813
|
|
ldr r3, _0238940C ; =DUNGEON_SUBMENU_ITEMS_6
|
|
add r2, sp, #8
|
|
strh ip, [sp, #0x10]
|
|
str r4, [sp, #0x14]
|
|
bl CreateParentMenuFromStringIds
|
|
ldr r1, _023893FC ; =OVERLAY31_UNKNOWN_POINTER__NA_238A28C
|
|
mov r2, #1
|
|
ldr r3, [r1]
|
|
strb r0, [r3]
|
|
ldr r0, [r1]
|
|
str r2, [r0, #8]
|
|
b _023893F0
|
|
_02389278:
|
|
ldrsb r0, [r2]
|
|
bl sub_02028354
|
|
cmp r0, #3
|
|
bne _02389298
|
|
ldr r0, _023893FC ; =OVERLAY31_UNKNOWN_POINTER__NA_238A28C
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0]
|
|
bl sub_0202810C
|
|
_02389298:
|
|
ldr r0, _023893FC ; =OVERLAY31_UNKNOWN_POINTER__NA_238A28C
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0]
|
|
bl ResumeParentMenu
|
|
ldr r0, _023893FC ; =OVERLAY31_UNKNOWN_POINTER__NA_238A28C
|
|
mov r1, #1
|
|
ldr r0, [r0]
|
|
str r1, [r0, #8]
|
|
_023892B8:
|
|
ldr r0, _023893FC ; =OVERLAY31_UNKNOWN_POINTER__NA_238A28C
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0]
|
|
bl IsParentMenuActive
|
|
cmp r0, #0
|
|
bne _023893F0
|
|
ldr r0, _023893FC ; =OVERLAY31_UNKNOWN_POINTER__NA_238A28C
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0]
|
|
bl GetSimpleMenuResult__0202AEA4
|
|
movs r4, r0
|
|
bmi _02389320
|
|
bl sub_02001808
|
|
cmp r0, #0xa000
|
|
ldrlt r0, _023893FC ; =OVERLAY31_UNKNOWN_POINTER__NA_238A28C
|
|
movlt r1, #2
|
|
ldrlt r0, [r0]
|
|
strlt r1, [r0, #8]
|
|
blt _023893F0
|
|
ldr r0, _023893FC ; =OVERLAY31_UNKNOWN_POINTER__NA_238A28C
|
|
mov r1, #3
|
|
ldr r2, [r0]
|
|
str r4, [r2, #4]
|
|
ldr r0, [r0]
|
|
str r1, [r0, #8]
|
|
b _02389330
|
|
_02389320:
|
|
ldr r0, _023893FC ; =OVERLAY31_UNKNOWN_POINTER__NA_238A28C
|
|
mov r1, #6
|
|
ldr r0, [r0]
|
|
str r1, [r0, #8]
|
|
_02389330:
|
|
ldr r0, _023893FC ; =OVERLAY31_UNKNOWN_POINTER__NA_238A28C
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0]
|
|
bl sub_0202812C
|
|
b _023893F0
|
|
_02389344:
|
|
mov r0, #0x10
|
|
str r0, [sp, #0x14]
|
|
ldr r1, [r2, #4]
|
|
ldr r0, _0238940C ; =DUNGEON_SUBMENU_ITEMS_6
|
|
mov r1, r1, lsl #3
|
|
ldrh r1, [r0, r1]
|
|
mov ip, #8
|
|
ldr r0, _02389410 ; =DUNGEON_WINDOW_PARAMS_28
|
|
strh r1, [sp, #0x10]
|
|
ldr r2, [r2, #4]
|
|
ldr r1, _02389414 ; =0x00009833
|
|
str r2, [sp, #8]
|
|
str ip, [sp]
|
|
mov ip, #1
|
|
ldr r3, _02389418 ; =DrawDungeonHintContents
|
|
add r2, sp, #8
|
|
str ip, [sp, #4]
|
|
bl CreateAdvancedTextBox
|
|
ldr r1, _023893FC ; =OVERLAY31_UNKNOWN_POINTER__NA_238A28C
|
|
mov r2, #4
|
|
ldr r3, [r1]
|
|
strb r0, [r3, #1]
|
|
ldr r0, [r1]
|
|
str r2, [r0, #8]
|
|
b _023893F0
|
|
_023893A8:
|
|
ldrsb r0, [r2, #1]
|
|
bl IsAdvancedTextBoxActive
|
|
cmp r0, #0
|
|
bne _023893F0
|
|
ldr r0, _023893FC ; =OVERLAY31_UNKNOWN_POINTER__NA_238A28C
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #1]
|
|
bl CloseAdvancedTextBox
|
|
ldr r0, _023893FC ; =OVERLAY31_UNKNOWN_POINTER__NA_238A28C
|
|
mov r1, #2
|
|
ldr r0, [r0]
|
|
str r1, [r0, #8]
|
|
b _023893F0
|
|
_023893DC:
|
|
ldrsb r0, [r2]
|
|
bl CloseParentMenu
|
|
bl ov29_0234F77C
|
|
mov r0, #4
|
|
b _023893F4
|
|
_023893F0:
|
|
mov r0, #1
|
|
_023893F4:
|
|
add sp, sp, #0xa0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_023893FC: .word OVERLAY31_UNKNOWN_POINTER__NA_238A28C
|
|
#if defined(EUROPE)
|
|
_02389400: .word 0x00003FA9
|
|
#elif defined(JAPAN)
|
|
_02389400: .word 0x000049AA
|
|
#else
|
|
_02389400: .word 0x00003FA7
|
|
#endif
|
|
_02389404: .word DUNGEON_WINDOW_PARAMS_27
|
|
_02389408: .word 0x00401813
|
|
_0238940C: .word DUNGEON_SUBMENU_ITEMS_6
|
|
_02389410: .word DUNGEON_WINDOW_PARAMS_28
|
|
_02389414: .word 0x00009833
|
|
_02389418: .word DrawDungeonHintContents
|
|
arm_func_end HelpMenuLoop
|
|
|
|
arm_func_start ov31_0238941C
|
|
ov31_0238941C: ; 0x0238941C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02389458 ; =OVERLAY31_UNKNOWN_STRUCT__NA_238A190
|
|
bl InitMenu
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
mov r0, #0xc
|
|
mov r1, #8
|
|
bl MemAlloc
|
|
ldr r1, _0238945C ; =OVERLAY31_UNKNOWN_POINTER__NA_238A28C
|
|
mov r2, #0
|
|
str r0, [r1]
|
|
str r2, [r0, #4]
|
|
ldr r0, [r1]
|
|
str r2, [r0, #8]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02389458: .word OVERLAY31_UNKNOWN_STRUCT__NA_238A190
|
|
_0238945C: .word OVERLAY31_UNKNOWN_POINTER__NA_238A28C
|
|
arm_func_end ov31_0238941C
|
|
|
|
arm_func_start ov31_02389460
|
|
ov31_02389460: ; 0x02389460
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02389488 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A28C
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
bl MemFree
|
|
ldr r0, _02389488 ; =OVERLAY31_UNKNOWN_POINTER__NA_238A28C
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02389488: .word OVERLAY31_UNKNOWN_POINTER__NA_238A28C
|
|
arm_func_end ov31_02389460
|
|
|
|
arm_func_start ov31_0238948C
|
|
ov31_0238948C: ; 0x0238948C
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
|
|
sub sp, sp, #0x134
|
|
#ifdef JAPAN
|
|
mov r5, r0
|
|
mov r0, #0x410
|
|
mov r1, #8
|
|
bl MemAlloc
|
|
mov r1, #0x410
|
|
mov r4, r0
|
|
bl MemZero
|
|
mvn r1, #1
|
|
strb r1, [r4]
|
|
add r0, r4, #0x30c
|
|
strb r1, [r4, #1]
|
|
bl ov31_02389D80
|
|
mov r0, #0
|
|
str r0, [r4, #0x40c]
|
|
strb r0, [r4, #0x408]
|
|
bl ov29_022EA62C
|
|
mov r0, r4
|
|
mov r1, r5
|
|
bl ov31_02389A78
|
|
ldr r1, [r4, #0x40c]
|
|
mov r0, #8
|
|
str r1, [r4, #0x3cc]
|
|
str r0, [r4, #0x3d0]
|
|
mov r1, #0
|
|
str r1, [r4, #0x3d4]
|
|
str r1, [r4, #0x3d8]
|
|
str r1, [r4, #0x3bc]
|
|
mov r0, #0x10
|
|
str r0, [r4, #0x3c0]
|
|
mov r0, r4
|
|
str r1, [r4, #0x3c8]
|
|
bl ov29_0234E988
|
|
add r0, sp, #0xac
|
|
bl InitPreprocessorArgs
|
|
ldrb r0, [r4, #0x408]
|
|
cmp r0, #0
|
|
ldrne r1, _023898F0 ; =0x0000158C
|
|
mov r0, #0x10
|
|
ldreq r1, _023898F4 ; =0x0000158B
|
|
str r0, [sp, #0xa8]
|
|
strh r1, [sp, #0xa4]
|
|
ldrb r0, [r4, #0x408]
|
|
cmp r0, #0
|
|
bne _0238A820
|
|
ldr r1, [r4, #0x404]
|
|
add r0, r4, #0x78
|
|
ldr r1, [r1, #0xb4]
|
|
bl GetMonsterName
|
|
add r0, r4, #0x78
|
|
str r0, [sp, #0xe4]
|
|
_0238A820:
|
|
ldr r0, _023898F8 ; =DUNGEON_WINDOW_PARAMS_31
|
|
ldr r1, _023898FC ; =0x80401813
|
|
add r2, sp, #0x9c
|
|
add r3, r4, #0xc4
|
|
bl CreateParentMenu
|
|
strb r0, [r4]
|
|
_0238A838:
|
|
mov r0, #0x3d
|
|
bl AdvanceFrame
|
|
ldr r0, [r4, #0x404]
|
|
bl ov29_0234FB50
|
|
mov r7, r0
|
|
add r1, sp, #0
|
|
mov r0, #0
|
|
bl GetPressedButtons
|
|
ldrsb r0, [r4]
|
|
bl IsParentMenuActive
|
|
cmp r0, #0
|
|
bne _0238AA84
|
|
ldrsb r0, [r4]
|
|
bl GetSimpleMenuResult__0202AEA4
|
|
movs r6, r0
|
|
bmi _0238AA78
|
|
ldrsb r0, [r4]
|
|
bl GetSimpleMenuResult__0202AEA4
|
|
sub r0, r0, #1
|
|
str r0, [r4, #0x3c8]
|
|
add r1, r4, r0
|
|
add r0, r4, #0x30c
|
|
ldrb r5, [r1, #0xb8]
|
|
bl ov31_02389D80
|
|
ldr r0, _02389900 ; =0x00003F02
|
|
bl PlaySeByIdVolumeWrapper
|
|
bl ov29_022EBA70
|
|
mov r0, #0x2f
|
|
mov r1, #0
|
|
bl AddDungeonSubMenuOption
|
|
mov r0, #0xc
|
|
mov r1, #0
|
|
bl AddDungeonSubMenuOption
|
|
cmp r7, #0
|
|
beq _0238A8CC
|
|
mov r0, #0x2f
|
|
bl DisableDungeonSubMenuOption
|
|
_0238A8CC:
|
|
add r1, r4, #0x6c
|
|
add r0, r4, #4
|
|
mov r2, #0
|
|
str r1, [sp, #0x64]
|
|
bl ov31_0238513C
|
|
bl ov29_022EBA84
|
|
mov r3, #0
|
|
b _0238A8FC
|
|
_0238A8EC:
|
|
add r2, r3, #1
|
|
add r1, r4, r3, lsl #3
|
|
mov r3, r2
|
|
str r2, [r1, #8]
|
|
_0238A8FC:
|
|
cmp r3, r0
|
|
blt _0238A8EC
|
|
ldr r0, _02389904 ; =0x00000877
|
|
add r2, r4, r3, lsl #3
|
|
strh r0, [r2, #4]
|
|
mvn r1, #1
|
|
mov r0, #0
|
|
str r1, [r2, #8]
|
|
strh r0, [r2, #0xc]
|
|
sub r1, r0, #1
|
|
add r0, r4, #1
|
|
str r1, [r2, #0x10]
|
|
bl ov29_0234E988
|
|
ldr r0, _02389908 ; =0x0238B4C0
|
|
ldr r1, _0238990C ; =0x80000213
|
|
add r2, sp, #4
|
|
add r3, r4, #4
|
|
bl CreateParentMenuFromStringIds
|
|
strb r0, [r4, #1]
|
|
mvn r8, #0
|
|
mov r7, #0x3d
|
|
_0238A950:
|
|
mov r0, r7
|
|
bl AdvanceFrame
|
|
ldrsb r0, [r4, #1]
|
|
bl IsParentMenuActive
|
|
cmp r0, #0
|
|
bne _0238A950
|
|
ldrsb r0, [r4, #1]
|
|
bl GetSimpleMenuResult__0202AEA4
|
|
subs r1, r0, #1
|
|
bmi _0238A998
|
|
ldrsb r0, [r4, #1]
|
|
bl GetSimpleMenuResult__0202AEA4
|
|
sub r0, r0, #1
|
|
str r0, [r4, #0x3c8]
|
|
bl ov29_022EB804
|
|
cmp r0, #0
|
|
movne r8, #0
|
|
b _0238A9AC
|
|
_0238A998:
|
|
mvn r0, #2
|
|
cmp r1, r0
|
|
bne _0238A9AC
|
|
ldr r0, _02389900 ; =0x00003F02
|
|
bl PlaySeByIdVolumeWrapper
|
|
_0238A9AC:
|
|
cmp r8, #0
|
|
bge _0238A9C8
|
|
add r0, r4, #1
|
|
bl ov29_0234E988
|
|
ldrsb r0, [r4]
|
|
bl ResumeParentMenu
|
|
b _0238AB68
|
|
_0238A9C8:
|
|
ldr r0, [r4, #0x3c8]
|
|
cmp r0, #0
|
|
bne _0238AA3C
|
|
ldr r0, _02389910 ; =0x00003F07
|
|
mov r1, #0x100
|
|
bl sub_02017C74
|
|
ldrb r0, [r4, #0x408]
|
|
cmp r0, #0
|
|
beq _0238A9F8
|
|
mov r0, r5
|
|
bl ov31_02389C68
|
|
b _0238AA04
|
|
_0238A9F8:
|
|
ldr r0, [r4, #0x404]
|
|
mov r1, r5
|
|
bl ov31_02389C2C
|
|
_0238AA04:
|
|
ldr r1, [r4, #0x404]
|
|
mov r0, r4
|
|
bl ov31_02389A78
|
|
add r0, r4, #1
|
|
bl ov29_0234E988
|
|
ldrsb r0, [r4]
|
|
bl ResumeParentMenu
|
|
ldrsb r0, [r4]
|
|
add r1, r4, #0xc4
|
|
bl sub_0202A98C
|
|
ldrsb r0, [r4]
|
|
sub r1, r6, #1
|
|
bl sub_0202AB94
|
|
b _0238AB68
|
|
_0238AA3C:
|
|
ldr r0, _02389900 ; =0x00003F02
|
|
bl PlaySeByIdVolumeWrapper
|
|
bl sub_02001808
|
|
cmp r0, #0xa000
|
|
bge _0238AA64
|
|
add r0, r4, #1
|
|
bl ov29_0234E988
|
|
ldrsb r0, [r4]
|
|
bl ResumeParentMenu
|
|
b _0238AB68
|
|
_0238AA64:
|
|
ldrsb r1, [r4]
|
|
mov r0, r5
|
|
mov r2, #1
|
|
bl ov31_02389CC0
|
|
b _0238AB68
|
|
_0238AA78:
|
|
bl ov29_022EAC78
|
|
mov r0, #1
|
|
b _0238AB6C
|
|
_0238AA84:
|
|
ldrh r0, [sp]
|
|
tst r0, #8
|
|
beq _0238AADC
|
|
ldr r0, _02389914 ; =0x00003F04
|
|
bl PlaySeByIdIfNotSilence
|
|
bl sub_02001808
|
|
cmp r0, #0xa000
|
|
blt _0238AB68
|
|
ldrsb r0, [r4]
|
|
bl sub_0202B030
|
|
mov r0, #0x3d
|
|
bl AdvanceFrame
|
|
ldrsb r0, [r4]
|
|
bl GetSimpleMenuResult__0202AEA4
|
|
sub r0, r0, #1
|
|
str r0, [r4, #0x3c8]
|
|
add r0, r4, r0
|
|
ldrb r0, [r0, #0xb8]
|
|
ldrsb r1, [r4]
|
|
mov r2, #1
|
|
bl ov31_02389CC0
|
|
b _0238AB68
|
|
_0238AADC:
|
|
tst r0, #4
|
|
beq _0238AB68
|
|
cmp r7, #0
|
|
beq _0238AAFC
|
|
ldr r0, _02389918 ; =0x00003F03
|
|
mov r1, #0x100
|
|
bl sub_02017C74
|
|
b _0238AB68
|
|
_0238AAFC:
|
|
ldrsb r0, [r4]
|
|
bl sub_0202B030
|
|
ldrsb r0, [r4]
|
|
bl GetSimpleMenuResult__0202AEA4
|
|
mov r5, r0
|
|
ldr r0, _02389910 ; =0x00003F07
|
|
mov r1, #0x100
|
|
bl sub_02017C74
|
|
ldrb r0, [r4, #0x408]
|
|
cmp r0, #0
|
|
add r0, r4, r5
|
|
beq _0238AB38
|
|
ldrb r0, [r0, #0xb7]
|
|
bl ov31_02389C68
|
|
b _0238AB44
|
|
_0238AB38:
|
|
ldrb r1, [r0, #0xb7]
|
|
ldr r0, [r4, #0x404]
|
|
bl ov31_02389C2C
|
|
_0238AB44:
|
|
ldr r1, [r4, #0x404]
|
|
mov r0, r4
|
|
bl ov31_02389A78
|
|
ldrsb r0, [r4]
|
|
add r1, r4, #0xc4
|
|
bl sub_0202A98C
|
|
ldrsb r0, [r4]
|
|
sub r1, r5, #1
|
|
bl sub_0202AB94
|
|
_0238AB68:
|
|
mov r0, #0
|
|
_0238AB6C:
|
|
cmp r0, #0
|
|
beq _0238A838
|
|
add r0, r4, #1
|
|
bl ov29_0234E988
|
|
mov r0, r4
|
|
bl ov29_0234E988
|
|
mov r0, #0x3d
|
|
bl AdvanceFrame
|
|
add r0, r4, #1
|
|
bl ov29_0234E988
|
|
mov r0, r4
|
|
bl ov29_0234E988
|
|
mov r0, r4
|
|
#else
|
|
mov r4, r0
|
|
mov r0, #0x530
|
|
mov r1, #8
|
|
bl MemAlloc
|
|
mov r5, r0
|
|
mov r1, #0x530
|
|
bl MemZero
|
|
add r0, r5, #0x2c
|
|
mvn r1, #1
|
|
strb r1, [r5]
|
|
add r0, r0, #0x400
|
|
strb r1, [r5, #1]
|
|
bl ov31_02389D80
|
|
mov r0, #0
|
|
str r0, [r5, #0x52c]
|
|
strb r0, [r5, #0x528]
|
|
bl ov29_022EA62C
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl ov31_02389A78
|
|
ldr r1, [r5, #0x52c]
|
|
mov r0, #8
|
|
str r1, [r5, #0x4ec]
|
|
str r0, [r5, #0x4f0]
|
|
mov r1, #0
|
|
str r1, [r5, #0x4f4]
|
|
str r1, [r5, #0x4f8]
|
|
str r1, [r5, #0x4dc]
|
|
mov r0, #0x10
|
|
str r0, [r5, #0x4e0]
|
|
mov r0, r5
|
|
str r1, [r5, #0x4e8]
|
|
bl ov29_0234E988
|
|
add r0, sp, #0xac
|
|
bl InitPreprocessorArgs
|
|
ldrb r0, [r5, #0x528]
|
|
cmp r0, #0
|
|
ldrne r1, _023898F0 ; =0x00000F5F
|
|
mov r0, #0x10
|
|
ldreq r1, _023898F4 ; =0x00000F5E
|
|
str r0, [sp, #0xa8]
|
|
strh r1, [sp, #0xa4]
|
|
ldrb r0, [r5, #0x528]
|
|
cmp r0, #0
|
|
bne _02389560
|
|
ldr r1, [r5, #0x524]
|
|
add r0, r5, #0x78
|
|
ldr r1, [r1, #0xb4]
|
|
bl GetMonsterName
|
|
add r0, r5, #0x78
|
|
str r0, [sp, #0xe4]
|
|
_02389560:
|
|
ldr r0, _023898F8 ; =DUNGEON_WINDOW_PARAMS_31
|
|
ldr r1, _023898FC ; =0x80401813
|
|
add r2, sp, #0x9c
|
|
add r3, r5, #0xc4
|
|
bl CreateParentMenu
|
|
strb r0, [r5]
|
|
_02389578:
|
|
mov r0, #0x3d
|
|
bl AdvanceFrame
|
|
ldr r0, [r5, #0x524]
|
|
bl ov29_0234FB50
|
|
mov r4, r0
|
|
add r1, sp, #0
|
|
mov r0, #0
|
|
bl GetPressedButtons
|
|
ldrsb r0, [r5]
|
|
bl IsParentMenuActive
|
|
cmp r0, #0
|
|
bne _023897C8
|
|
ldrsb r0, [r5]
|
|
bl GetSimpleMenuResult__0202AEA4
|
|
movs r7, r0
|
|
bmi _023897BC
|
|
ldrsb r0, [r5]
|
|
bl GetSimpleMenuResult__0202AEA4
|
|
sub r1, r0, #1
|
|
add r0, r5, #0x2c
|
|
str r1, [r5, #0x4e8]
|
|
add r1, r5, r1
|
|
add r0, r0, #0x400
|
|
ldrb r6, [r1, #0xb8]
|
|
bl ov31_02389D80
|
|
ldr r0, _02389900 ; =0x00003F02
|
|
bl PlaySeByIdVolumeWrapper
|
|
bl ov29_022EBA70
|
|
mov r0, #0x2f
|
|
mov r1, #0
|
|
bl AddDungeonSubMenuOption
|
|
mov r0, #0xc
|
|
mov r1, #0
|
|
bl AddDungeonSubMenuOption
|
|
cmp r4, #0
|
|
beq _02389610
|
|
mov r0, #0x2f
|
|
bl DisableDungeonSubMenuOption
|
|
_02389610:
|
|
add r1, r5, #0x6c
|
|
add r0, r5, #4
|
|
mov r2, #0
|
|
str r1, [sp, #0x64]
|
|
bl ov31_0238513C
|
|
bl ov29_022EBA84
|
|
mov r3, #0
|
|
b _02389640
|
|
_02389630:
|
|
add r2, r3, #1
|
|
add r1, r5, r3, lsl #3
|
|
mov r3, r2
|
|
str r2, [r1, #8]
|
|
_02389640:
|
|
cmp r3, r0
|
|
blt _02389630
|
|
ldr r0, _02389904 ; =0x00000A3C
|
|
add r2, r5, r3, lsl #3
|
|
strh r0, [r2, #4]
|
|
mvn r1, #1
|
|
mov r0, #0
|
|
str r1, [r2, #8]
|
|
strh r0, [r2, #0xc]
|
|
sub r1, r0, #1
|
|
add r0, r5, #1
|
|
str r1, [r2, #0x10]
|
|
bl ov29_0234E988
|
|
ldr r0, _02389908 ; =DUNGEON_WINDOW_PARAMS_30
|
|
ldr r1, _0238990C ; =0x80000213
|
|
add r2, sp, #4
|
|
add r3, r5, #4
|
|
bl CreateParentMenuFromStringIds
|
|
strb r0, [r5, #1]
|
|
mvn r8, #0
|
|
mov r4, #0x3d
|
|
_02389694:
|
|
mov r0, r4
|
|
bl AdvanceFrame
|
|
ldrsb r0, [r5, #1]
|
|
bl IsParentMenuActive
|
|
cmp r0, #0
|
|
bne _02389694
|
|
ldrsb r0, [r5, #1]
|
|
bl GetSimpleMenuResult__0202AEA4
|
|
subs r1, r0, #1
|
|
bmi _023896DC
|
|
ldrsb r0, [r5, #1]
|
|
bl GetSimpleMenuResult__0202AEA4
|
|
sub r0, r0, #1
|
|
str r0, [r5, #0x4e8]
|
|
bl ov29_022EB804
|
|
cmp r0, #0
|
|
movne r8, #0
|
|
b _023896F0
|
|
_023896DC:
|
|
mvn r0, #2
|
|
cmp r1, r0
|
|
bne _023896F0
|
|
ldr r0, _02389900 ; =0x00003F02
|
|
bl PlaySeByIdVolumeWrapper
|
|
_023896F0:
|
|
cmp r8, #0
|
|
bge _0238970C
|
|
add r0, r5, #1
|
|
bl ov29_0234E988
|
|
ldrsb r0, [r5]
|
|
bl ResumeParentMenu
|
|
b _023898AC
|
|
_0238970C:
|
|
ldr r0, [r5, #0x4e8]
|
|
cmp r0, #0
|
|
bne _02389780
|
|
ldr r0, _02389910 ; =0x00003F07
|
|
mov r1, #0x100
|
|
bl sub_02017C74
|
|
ldrb r0, [r5, #0x528]
|
|
cmp r0, #0
|
|
beq _0238973C
|
|
mov r0, r6
|
|
bl ov31_02389C68
|
|
b _02389748
|
|
_0238973C:
|
|
ldr r0, [r5, #0x524]
|
|
mov r1, r6
|
|
bl ov31_02389C2C
|
|
_02389748:
|
|
ldr r1, [r5, #0x524]
|
|
mov r0, r5
|
|
bl ov31_02389A78
|
|
add r0, r5, #1
|
|
bl ov29_0234E988
|
|
ldrsb r0, [r5]
|
|
bl ResumeParentMenu
|
|
ldrsb r0, [r5]
|
|
add r1, r5, #0xc4
|
|
bl sub_0202A98C
|
|
ldrsb r0, [r5]
|
|
sub r1, r7, #1
|
|
bl sub_0202AB94
|
|
b _023898AC
|
|
_02389780:
|
|
ldr r0, _02389900 ; =0x00003F02
|
|
bl PlaySeByIdVolumeWrapper
|
|
bl sub_02001808
|
|
cmp r0, #0xa000
|
|
bge _023897A8
|
|
add r0, r5, #1
|
|
bl ov29_0234E988
|
|
ldrsb r0, [r5]
|
|
bl ResumeParentMenu
|
|
b _023898AC
|
|
_023897A8:
|
|
ldrsb r1, [r5]
|
|
mov r0, r6
|
|
mov r2, #1
|
|
bl ov31_02389CC0
|
|
b _023898AC
|
|
_023897BC:
|
|
bl ov29_022EAC78
|
|
mov r0, #1
|
|
b _023898B0
|
|
_023897C8:
|
|
ldrh r0, [sp]
|
|
tst r0, #8
|
|
beq _02389820
|
|
ldr r0, _02389914 ; =0x00003F04
|
|
bl PlaySeByIdIfNotSilence
|
|
bl sub_02001808
|
|
cmp r0, #0xa000
|
|
blt _023898AC
|
|
ldrsb r0, [r5]
|
|
bl sub_0202B030
|
|
mov r0, #0x3d
|
|
bl AdvanceFrame
|
|
ldrsb r0, [r5]
|
|
bl GetSimpleMenuResult__0202AEA4
|
|
sub r0, r0, #1
|
|
str r0, [r5, #0x4e8]
|
|
add r0, r5, r0
|
|
ldrb r0, [r0, #0xb8]
|
|
ldrsb r1, [r5]
|
|
mov r2, #1
|
|
bl ov31_02389CC0
|
|
b _023898AC
|
|
_02389820:
|
|
tst r0, #4
|
|
beq _023898AC
|
|
cmp r4, #0
|
|
beq _02389840
|
|
ldr r0, _02389918 ; =0x00003F03
|
|
mov r1, #0x100
|
|
bl sub_02017C74
|
|
b _023898AC
|
|
_02389840:
|
|
ldrsb r0, [r5]
|
|
bl sub_0202B030
|
|
ldrsb r0, [r5]
|
|
bl GetSimpleMenuResult__0202AEA4
|
|
mov r4, r0
|
|
ldr r0, _02389910 ; =0x00003F07
|
|
mov r1, #0x100
|
|
bl sub_02017C74
|
|
ldrb r0, [r5, #0x528]
|
|
cmp r0, #0
|
|
add r0, r5, r4
|
|
beq _0238987C
|
|
ldrb r0, [r0, #0xb7]
|
|
bl ov31_02389C68
|
|
b _02389888
|
|
_0238987C:
|
|
ldrb r1, [r0, #0xb7]
|
|
ldr r0, [r5, #0x524]
|
|
bl ov31_02389C2C
|
|
_02389888:
|
|
ldr r1, [r5, #0x524]
|
|
mov r0, r5
|
|
bl ov31_02389A78
|
|
ldrsb r0, [r5]
|
|
add r1, r5, #0xc4
|
|
bl sub_0202A98C
|
|
ldrsb r0, [r5]
|
|
sub r1, r4, #1
|
|
bl sub_0202AB94
|
|
_023898AC:
|
|
mov r0, #0
|
|
_023898B0:
|
|
cmp r0, #0
|
|
beq _02389578
|
|
add r0, r5, #1
|
|
bl ov29_0234E988
|
|
mov r0, r5
|
|
bl ov29_0234E988
|
|
mov r0, #0x3d
|
|
bl AdvanceFrame
|
|
add r0, r5, #1
|
|
bl ov29_0234E988
|
|
mov r0, r5
|
|
bl ov29_0234E988
|
|
mov r0, r5
|
|
#endif
|
|
bl MemFree
|
|
add sp, sp, #0x134
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
_023898F0: .word 0x0000158C
|
|
_023898F4: .word 0x0000158B
|
|
#else
|
|
_023898F0: .word 0x00000F5F
|
|
_023898F4: .word 0x00000F5E
|
|
#endif
|
|
_023898F8: .word DUNGEON_WINDOW_PARAMS_31
|
|
_023898FC: .word 0x80401813
|
|
_02389900: .word 0x00003F02
|
|
#ifdef JAPAN
|
|
_02389904: .word 0x00000877
|
|
#else
|
|
_02389904: .word 0x00000A3C
|
|
#endif
|
|
_02389908: .word DUNGEON_WINDOW_PARAMS_30
|
|
_0238990C: .word 0x80000213
|
|
_02389910: .word 0x00003F07
|
|
_02389914: .word 0x00003F04
|
|
_02389918: .word 0x00003F03
|
|
arm_func_end ov31_0238948C
|
|
|
|
arm_func_start ov31_0238991C
|
|
ov31_0238991C: ; 0x0238991C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
mov r0, #2
|
|
mov r1, #8
|
|
bl MemAlloc
|
|
mov r1, r5
|
|
mov r2, r4
|
|
mov r4, r0
|
|
bl ov31_0238994C
|
|
mov r0, r4
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end ov31_0238991C
|
|
|
|
arm_func_start ov31_0238994C
|
|
ov31_0238994C: ; 0x0238994C
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
sub sp, sp, #0x10
|
|
mov r3, r2, asr #2
|
|
mov r4, r0
|
|
mov r0, r1, asr #2
|
|
add r2, r2, r3, lsr #29
|
|
add ip, r1, r0, lsr #29
|
|
ldr r6, _023899B0 ; =DUNGEON_WINDOW_PARAMS_32
|
|
mov lr, r2, asr #3
|
|
add r5, sp, #0
|
|
ldmia r6, {r0, r1, r2, r3}
|
|
stmia r5, {r0, r1, r2, r3}
|
|
mov ip, ip, asr #3
|
|
add r3, lr, #1
|
|
ldr r1, _023899B4 ; =ov31_02389A04
|
|
mov r0, r5
|
|
mov r2, r4
|
|
strb ip, [sp, #4]
|
|
strb r3, [sp, #5]
|
|
bl CreateTextBoxWithArg
|
|
strb r0, [r4]
|
|
mov r0, #0xb
|
|
strb r0, [r4, #1]
|
|
add sp, sp, #0x10
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_023899B0: .word DUNGEON_WINDOW_PARAMS_32
|
|
_023899B4: .word ov31_02389A04
|
|
arm_func_end ov31_0238994C
|
|
|
|
arm_func_start ov31_023899B8
|
|
ov31_023899B8: ; 0x023899B8
|
|
stmdb sp!, {r3, lr}
|
|
strb r1, [r0, #1]
|
|
cmp r2, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
ldrsb r0, [r0]
|
|
bl sub_0202F9B8
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end ov31_023899B8
|
|
|
|
arm_func_start ov31_023899D4
|
|
ov31_023899D4: ; 0x023899D4
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
ldr r4, [r5]
|
|
cmp r4, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
ldrsb r0, [r4]
|
|
bl CloseTextBox2
|
|
mov r0, r4
|
|
bl MemFree
|
|
mov r0, #0
|
|
str r0, [r5]
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end ov31_023899D4
|
|
|
|
arm_func_start ov31_02389A04
|
|
ov31_02389A04: ; 0x02389A04
|
|
stmdb sp!, {r4, r5, lr}
|
|
sub sp, sp, #0x94
|
|
mov r5, r0
|
|
mov r4, r1
|
|
bl sub_02027B1C
|
|
add r0, sp, #0x44
|
|
bl InitPreprocessorArgs
|
|
ldrb r0, [r4, #1]
|
|
ldr r3, _02389A70 ; =0x0000C402
|
|
add ip, sp, #0x44
|
|
cmp r0, #0xb
|
|
strne r0, [sp, #0x54]
|
|
#ifdef JAPAN
|
|
ldreq r2, _0238AD30 ; =0x0000158D
|
|
add r0, sp, #4
|
|
ldrne r2, _02389A74 ; =0x0000158E
|
|
#else
|
|
moveq r2, #0xf60
|
|
ldrne r2, _02389A74 ; =0x00000F61
|
|
add r0, sp, #4
|
|
#endif
|
|
mov r1, #0x40
|
|
str ip, [sp]
|
|
bl PreprocessStringFromId
|
|
add r3, sp, #4
|
|
mov r0, r5
|
|
mov r1, #4
|
|
mov r2, #2
|
|
bl DrawTextInWindow
|
|
mov r0, r5
|
|
bl UpdateWindow
|
|
add sp, sp, #0x94
|
|
ldmia sp!, {r4, r5, pc}
|
|
.align 2, 0
|
|
_02389A70: .word 0x0000C402
|
|
#ifdef JAPAN
|
|
_0238AD30: .word 0x0000158D
|
|
_02389A74: .word 0x0000158E
|
|
#else
|
|
_02389A74: .word 0x00000F61
|
|
#endif
|
|
arm_func_end ov31_02389A04
|
|
|
|
arm_func_start ov31_02389A78
|
|
ov31_02389A78: ; 0x02389A78
|
|
#ifdef JAPAN
|
|
#define OV31_02389A78_OFFSET -0x120
|
|
#else
|
|
#define OV31_02389A78_OFFSET 0
|
|
#endif
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x70
|
|
mov sb, r1
|
|
ldr r4, [sb, #0xb4]
|
|
mov sl, r0
|
|
ldrb r0, [r4, #7]
|
|
strb r0, [sl, #0x528 + OV31_02389A78_OFFSET]
|
|
bl GetLeaderMonster
|
|
ldrb r1, [r0, #0xa]
|
|
add r0, sp, #0x14
|
|
bl GetUnlockedTactics
|
|
ldrb r0, [sl, #0x528 + OV31_02389A78_OFFSET]
|
|
cmp r0, #0
|
|
beq _02389B64
|
|
mov r6, #0
|
|
bl GetLeaderMonster
|
|
ldrb r1, [r0, #0xa]
|
|
add r0, sp, #8
|
|
bl GetUnlockedTactics
|
|
ldr r4, _02389C20 ; =DUNGEON_PTR
|
|
mov r7, r6
|
|
add r5, sp, #4
|
|
_02389AD0:
|
|
ldr r0, [r4]
|
|
add r0, r0, r7, lsl #2
|
|
add r0, r0, #0x12000
|
|
#ifdef JAPAN
|
|
ldr r8, [r0, #0xa84]
|
|
#else
|
|
ldr r8, [r0, #0xb28]
|
|
#endif
|
|
mov r0, r8
|
|
bl ov29_0234FB60
|
|
cmp r0, #0
|
|
beq _02389B08
|
|
ldr r1, [r8, #0xb4]
|
|
add r0, r6, #1
|
|
ldrb r1, [r1, #0xa8]
|
|
mov r0, r0, lsl #0x10
|
|
strb r1, [r5, r6]
|
|
mov r6, r0, asr #0x10
|
|
_02389B08:
|
|
add r0, r7, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r7, r0, asr #0x10
|
|
cmp r7, #4
|
|
blt _02389AD0
|
|
cmp r6, #0
|
|
moveq r6, #0xb
|
|
beq _02389B68
|
|
mov r3, #1
|
|
ldrb r2, [sp, #4]
|
|
add r1, sp, #4
|
|
b _02389B54
|
|
_02389B38:
|
|
ldrb r0, [r1, r3]
|
|
cmp r2, r0
|
|
movne r6, #0xb
|
|
bne _02389B68
|
|
add r0, r3, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r3, r0, asr #0x10
|
|
_02389B54:
|
|
cmp r3, r6
|
|
blt _02389B38
|
|
ldrb r6, [sp, #4]
|
|
b _02389B68
|
|
_02389B64:
|
|
ldrb r6, [r4, #0xa8]
|
|
_02389B68:
|
|
mov r8, #0
|
|
add r4, sl, #0x12c
|
|
add fp, sp, #0x14
|
|
add r5, sp, #0x20
|
|
b _02389BF4
|
|
_02389B7C:
|
|
ldrb r1, [fp, r8]
|
|
add r0, sl, r8
|
|
strb r1, [r0, #0xb8]
|
|
cmp r1, #0xb
|
|
beq _02389BFC
|
|
str r1, [sp, #0x30]
|
|
cmp r6, #0xb
|
|
beq _02389BC4
|
|
cmp r6, r1
|
|
bne _02389BC4
|
|
#ifdef JAPAN
|
|
mov r0, #0x28
|
|
mul r7, r8, r0
|
|
ldr r2, _02389C24 ; =ov31_0238A228
|
|
add r0, r4, r7
|
|
mov r1, #0x28
|
|
mov r3, #0
|
|
str r5, [sp]
|
|
bl PreprocessString
|
|
b _02389BE0
|
|
_02389BC4:
|
|
mov r0, #0x28
|
|
mul r7, r8, r0
|
|
ldr r2, _02389C28 ; =ov31_0238A23C
|
|
add r0, r4, r7
|
|
mov r1, #0x28
|
|
mov r3, #0
|
|
str r5, [sp]
|
|
#else
|
|
ldr r2, _02389C24 ; =ov31_0238A228
|
|
mov r1, #0x40
|
|
add r0, r4, r8, lsl #6
|
|
mov r3, #0
|
|
str r5, [sp]
|
|
mov r7, r8, lsl #6
|
|
bl PreprocessString
|
|
b _02389BE0
|
|
_02389BC4:
|
|
ldr r2, _02389C28 ; =ov31_0238A23C
|
|
mov r1, #0x40
|
|
add r0, r4, r8, lsl #6
|
|
mov r3, #0
|
|
str r5, [sp]
|
|
mov r7, r8, lsl #6
|
|
#endif
|
|
bl PreprocessString
|
|
_02389BE0:
|
|
add r1, r4, r7
|
|
add r0, sl, r8, lsl #3
|
|
str r1, [r0, #0xc4]
|
|
add r8, r8, #1
|
|
str r8, [r0, #0xc8]
|
|
_02389BF4:
|
|
cmp r8, #0xc
|
|
blt _02389B7C
|
|
_02389BFC:
|
|
mov r0, #0
|
|
str r8, [sl, #0x52c + OV31_02389A78_OFFSET]
|
|
add r1, sl, r8, lsl #3
|
|
str r0, [r1, #0xc4]
|
|
sub r0, r0, #1
|
|
str r0, [r1, #0xc8]
|
|
str sb, [sl, #0x524 + OV31_02389A78_OFFSET]
|
|
add sp, sp, #0x70
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02389C20: .word DUNGEON_PTR
|
|
_02389C24: .word ov31_0238A228
|
|
_02389C28: .word ov31_0238A23C
|
|
arm_func_end ov31_02389A78
|
|
|
|
arm_func_start ov31_02389C2C
|
|
ov31_02389C2C: ; 0x02389C2C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r3, [r0, #0xb4]
|
|
mov r2, #6
|
|
strb r1, [r3, #0xa8]
|
|
strb r2, [r3, #0x7c]
|
|
mov r1, #0
|
|
str r1, [r3, #0x84]
|
|
str r1, [r3, #0x88]
|
|
strh r1, [r3, #0x80]
|
|
ldrb r1, [r3, #7]
|
|
cmp r1, #0
|
|
ldmneia sp!, {r3, pc}
|
|
mov r1, #1
|
|
bl AiMovement
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end ov31_02389C2C
|
|
|
|
arm_func_start ov31_02389C68
|
|
ov31_02389C68: ; 0x02389C68
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r5, _02389CBC ; =DUNGEON_PTR
|
|
mov r4, r0
|
|
mov r6, #0
|
|
_02389C78:
|
|
ldr r0, [r5]
|
|
add r0, r0, r6, lsl #2
|
|
add r0, r0, #0x12000
|
|
#ifdef JAPAN
|
|
ldr r7, [r0, #0xa84]
|
|
#else
|
|
ldr r7, [r0, #0xb28]
|
|
#endif
|
|
mov r0, r7
|
|
bl ov29_0234FB60
|
|
cmp r0, #0
|
|
beq _02389CA4
|
|
mov r0, r7
|
|
mov r1, r4
|
|
bl ov31_02389C2C
|
|
_02389CA4:
|
|
add r0, r6, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r6, r0, asr #0x10
|
|
cmp r6, #4
|
|
blt _02389C78
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_02389CBC: .word DUNGEON_PTR
|
|
arm_func_end ov31_02389C68
|
|
|
|
arm_func_start ov31_02389CC0
|
|
ov31_02389CC0: ; 0x02389CC0
|
|
stmdb sp!, {r4, r5, r6, r7, lr}
|
|
sub sp, sp, #0x5c
|
|
mov r5, r1
|
|
mov r6, r0
|
|
mov r0, r5
|
|
mov r4, r2
|
|
bl sub_0202812C
|
|
#if defined(EUROPE)
|
|
add r0, r6, #0x2dc
|
|
add r0, r0, #0x2400
|
|
#elif defined(JAPAN)
|
|
add r0, r6, #0x308
|
|
add r0, r0, #0x3c00
|
|
#else
|
|
add r0, r6, #0xda
|
|
add r0, r0, #0x2600
|
|
#endif
|
|
mov r0, r0, lsl #0x10
|
|
mov r2, r0, lsr #0x10
|
|
add r1, sp, #0xc
|
|
str r6, [sp, #0x1c]
|
|
str r1, [sp]
|
|
str r2, [sp, #4]
|
|
mov r2, #0
|
|
ldr r0, _02389D74 ; =DUNGEON_WINDOW_PARAMS_29
|
|
ldr r1, _02389D78 ; =0x00001013
|
|
ldr r3, _02389D7C ; =0x00000A3B
|
|
str r2, [sp, #8]
|
|
bl CreateScrollBoxSingle
|
|
mov r7, r0
|
|
mov r6, #0x3e
|
|
_02389D1C:
|
|
mov r0, r6
|
|
bl AdvanceFrame
|
|
mov r0, r7
|
|
bl IsScrollBoxActive
|
|
cmp r0, #0
|
|
bne _02389D1C
|
|
mov r0, r7
|
|
bl CloseScrollBox
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
mov r0, #4
|
|
mov r1, #0x3e
|
|
bl ov29_022EA370
|
|
mov r0, r5
|
|
bl sub_0202810C
|
|
cmp r4, #0
|
|
beq _02389D6C
|
|
mov r0, r5
|
|
bl ResumeParentMenu
|
|
_02389D6C:
|
|
add sp, sp, #0x5c
|
|
ldmia sp!, {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_02389D74: .word DUNGEON_WINDOW_PARAMS_29
|
|
_02389D78: .word 0x00001013
|
|
#ifdef JAPAN
|
|
_02389D7C: .word 0x00000876
|
|
#else
|
|
_02389D7C: .word 0x00000A3B
|
|
#endif
|
|
arm_func_end ov31_02389CC0
|
|
|
|
arm_func_start ov31_02389D80
|
|
ov31_02389D80: ; 0x02389D80
|
|
mov r1, #0
|
|
str r1, [r0, #0xc8]
|
|
str r1, [r0, #0xcc]
|
|
str r1, [r0, #0xbc]
|
|
bx lr
|
|
arm_func_end ov31_02389D80
|
|
; 0x02389D94
|
|
|
|
.rodata
|
|
.global DUNGEON_WINDOW_PARAMS_1
|
|
DUNGEON_WINDOW_PARAMS_1:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
#ifdef EUROPE
|
|
.byte 0x02, 0x02, 0x07, 0x0C
|
|
#else
|
|
.byte 0x02, 0x02, 0x00, 0x0C
|
|
#endif
|
|
.byte 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_2
|
|
DUNGEON_WINDOW_PARAMS_2:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x04, 0x13, 0x02, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_3
|
|
DUNGEON_WINDOW_PARAMS_3:
|
|
.byte 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.word FreeDungeonMenu
|
|
.word DungeonMenuLoop
|
|
.global DUNGEON_WINDOW_PARAMS_4
|
|
DUNGEON_WINDOW_PARAMS_4:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x1C, 0x06, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_MAIN_MENU_ITEMS
|
|
DUNGEON_MAIN_MENU_ITEMS:
|
|
#ifdef JAPAN
|
|
#define OV31_DATA_OFFSET 0x1458
|
|
#else
|
|
#define OV31_DATA_OFFSET 0
|
|
#endif
|
|
.word 0x8AD + OV31_DATA_OFFSET
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.word 0x8AE + OV31_DATA_OFFSET
|
|
.byte 0x01, 0x00, 0x00, 0x00
|
|
.word 0x8AF + OV31_DATA_OFFSET
|
|
.byte 0x02, 0x00, 0x00, 0x00
|
|
.word 0x8B0 + OV31_DATA_OFFSET
|
|
.byte 0x03, 0x00, 0x00, 0x00
|
|
.word 0x8B1 + OV31_DATA_OFFSET
|
|
.byte 0x04, 0x00, 0x00, 0x00
|
|
.word 0x8B3 + OV31_DATA_OFFSET
|
|
.byte 0x05, 0x00, 0x00, 0x00
|
|
.word 0x8B4 + OV31_DATA_OFFSET
|
|
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF
|
|
.global DUNGEON_MENU_SWITCH_STR1
|
|
DUNGEON_MENU_SWITCH_STR1:
|
|
.string "[dungeon:0]"
|
|
.global OVERLAY31_UNKNOWN_STRING_IDS
|
|
OVERLAY31_UNKNOWN_STRING_IDS:
|
|
.hword 0x8C7 + OV31_DATA_OFFSET
|
|
.global ov31_02389E22
|
|
ov31_02389E22:
|
|
.hword 0x8CB + OV31_DATA_OFFSET
|
|
.hword 0x8C8 + OV31_DATA_OFFSET
|
|
.hword 0x8CC + OV31_DATA_OFFSET
|
|
.hword 0x8C9 + OV31_DATA_OFFSET
|
|
.hword 0x8CD + OV31_DATA_OFFSET
|
|
.hword 0x8CA + OV31_DATA_OFFSET
|
|
.hword 0x8CE + OV31_DATA_OFFSET
|
|
.global OVERLAY31_UNKNOWN_STRUCT__NA_2389E30
|
|
OVERLAY31_UNKNOWN_STRUCT__NA_2389E30:
|
|
.byte 0x0E, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.word FreeStairsMenu
|
|
.word HandleStairsMenu
|
|
.global DUNGEON_WINDOW_PARAMS_5
|
|
DUNGEON_WINDOW_PARAMS_5:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x02, 0x02, 0x1C, 0x0D, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_6
|
|
DUNGEON_WINDOW_PARAMS_6:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x02, 0x02, 0x13, 0x04, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_7
|
|
DUNGEON_WINDOW_PARAMS_7:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x17, 0x02, 0x07, 0x06, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_SUBMENU_ITEMS_1
|
|
DUNGEON_SUBMENU_ITEMS_1:
|
|
#ifdef JAPAN
|
|
#define DUNGEON_SUBMENU_ITEMS_1_OFFSET 0x19D0
|
|
#else
|
|
#define DUNGEON_SUBMENU_ITEMS_1_OFFSET 0
|
|
#endif
|
|
.word 0x9AD + DUNGEON_SUBMENU_ITEMS_1_OFFSET
|
|
.byte 0x01, 0x00, 0x00, 0x00
|
|
.word 0x8CF + OV31_DATA_OFFSET
|
|
.byte 0x05, 0x00, 0x00, 0x00
|
|
.word 0x8D0 + OV31_DATA_OFFSET
|
|
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF
|
|
.word 0x9AD + DUNGEON_SUBMENU_ITEMS_1_OFFSET
|
|
.byte 0x02, 0x00, 0x00, 0x00
|
|
.word 0x8CF + OV31_DATA_OFFSET
|
|
.byte 0x05, 0x00, 0x00, 0x00
|
|
.word 0x8D0 + OV31_DATA_OFFSET
|
|
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF
|
|
.word 0x9C9 + DUNGEON_SUBMENU_ITEMS_1_OFFSET
|
|
.byte 0x03, 0x00, 0x00, 0x00
|
|
.word 0x8CF + OV31_DATA_OFFSET
|
|
.byte 0x05, 0x00, 0x00, 0x00
|
|
.word 0x8D0 + OV31_DATA_OFFSET
|
|
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF
|
|
.word 0x9AD + DUNGEON_SUBMENU_ITEMS_1_OFFSET
|
|
.byte 0x04, 0x00, 0x00, 0x00
|
|
.word 0x8CF + OV31_DATA_OFFSET
|
|
.byte 0x05, 0x00, 0x00, 0x00
|
|
.word 0x8D0 + OV31_DATA_OFFSET
|
|
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF
|
|
.global OVERLAY31_UNKNOWN_STRUCT__NA_2389EF0
|
|
OVERLAY31_UNKNOWN_STRUCT__NA_2389EF0:
|
|
.byte 0x01, 0x00, 0x00, 0x00
|
|
.byte 0x01, 0x00, 0x6A, 0x00, 0x01, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_8
|
|
DUNGEON_WINDOW_PARAMS_8:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x18, 0x13
|
|
.byte 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_9
|
|
DUNGEON_WINDOW_PARAMS_9:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x07, 0x00
|
|
.byte 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_10
|
|
DUNGEON_WINDOW_PARAMS_10:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x08, 0x02
|
|
.byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_11
|
|
DUNGEON_WINDOW_PARAMS_11:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x14, 0x12, 0x02
|
|
.byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_12
|
|
DUNGEON_WINDOW_PARAMS_12:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x13, 0x00
|
|
.byte 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_13
|
|
DUNGEON_WINDOW_PARAMS_13:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x17, 0x02, 0x07, 0x00
|
|
.byte 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global ov31_02389F5C
|
|
ov31_02389F5C:
|
|
.byte 0x20, 0x20, 0x3F, 0x3F, 0x3F, 0x00, 0x00, 0x00
|
|
.global OVERLAY31_JP_STRING
|
|
OVERLAY31_JP_STRING:
|
|
.byte 0x0A, 0x0A, 0x2D, 0x2D, 0x2D, 0x2D, 0x81, 0x40, 0x20, 0x8F, 0x89, 0x8A, 0xFA, 0x83, 0x7C, 0x83
|
|
.byte 0x57, 0x83, 0x56, 0x83, 0x87, 0x83, 0x93, 0x3D, 0x25, 0x64, 0x81, 0x40, 0x2D, 0x2D, 0x2D, 0x2D
|
|
.byte 0x2D, 0x20, 0x0A, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_14
|
|
DUNGEON_WINDOW_PARAMS_14:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x11, 0x1C, 0x05, 0x00, 0xFF, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_15
|
|
DUNGEON_WINDOW_PARAMS_15:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x08, 0x00, 0x00, 0xFF, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_16
|
|
DUNGEON_WINDOW_PARAMS_16:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x1C, 0x04, 0x00, 0xFF, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_17
|
|
DUNGEON_WINDOW_PARAMS_17:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x17, 0x02, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_18
|
|
DUNGEON_WINDOW_PARAMS_18:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x13, 0x04, 0x00, 0xFE, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_19
|
|
DUNGEON_WINDOW_PARAMS_19:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x18, 0x13, 0x00, 0xFF, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.global OVERLAY31_UNKNOWN_STRUCT__NA_2389FE8
|
|
OVERLAY31_UNKNOWN_STRUCT__NA_2389FE8:
|
|
.byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x6A, 0x00, 0x01, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_20
|
|
DUNGEON_WINDOW_PARAMS_20:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x0E, 0x12, 0x04, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_21
|
|
DUNGEON_WINDOW_PARAMS_21:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x10, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_22
|
|
DUNGEON_WINDOW_PARAMS_22:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x0F, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_23
|
|
DUNGEON_WINDOW_PARAMS_23:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x13, 0x02, 0x0B, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_24
|
|
DUNGEON_WINDOW_PARAMS_24:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x0A, 0x02, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global ov31_0238A044
|
|
ov31_0238A044:
|
|
.byte 0x5B, 0x4D, 0x3A, 0x48, 0x30, 0x5D, 0x00, 0x00
|
|
.global ov31_0238A04C
|
|
ov31_0238A04C:
|
|
.byte 0x5B, 0x4D, 0x3A, 0x48, 0x31, 0x5D, 0x00, 0x00
|
|
.global ov31_0238A054
|
|
ov31_0238A054:
|
|
.byte 0x5B, 0x4D, 0x3A, 0x48, 0x32, 0x5D, 0x00, 0x00
|
|
.global ov31_0238A05C
|
|
ov31_0238A05C:
|
|
.byte 0x5B, 0x4D, 0x3A, 0x48, 0x33, 0x5D, 0x00, 0x00
|
|
.global ov31_0238A064
|
|
ov31_0238A064:
|
|
.byte 0x5B, 0x4D, 0x3A, 0x48, 0x34, 0x5D, 0x00, 0x00
|
|
.global ov31_0238A06C
|
|
ov31_0238A06C:
|
|
.byte 0x5B, 0x4D, 0x3A, 0x48, 0x35, 0x5D, 0x00, 0x00
|
|
.global ov31_0238A074
|
|
ov31_0238A074:
|
|
.byte 0x5B, 0x4D, 0x3A, 0x48, 0x36, 0x5D, 0x00, 0x00
|
|
.global ov31_0238A07C
|
|
ov31_0238A07C:
|
|
.byte 0x5B, 0x4D, 0x3A, 0x48, 0x37, 0x5D, 0x00, 0x00
|
|
.global ov31_0238A084
|
|
ov31_0238A084:
|
|
.byte 0x5B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3A, 0x30, 0x5D, 0x5B, 0x43, 0x4C, 0x55, 0x4D, 0x5F
|
|
.byte 0x53, 0x45, 0x54, 0x3A, 0x38, 0x30, 0x5D, 0x5B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3A, 0x31
|
|
.byte 0x5D, 0x00, 0x00, 0x00
|
|
.global ov31_0238A0A8
|
|
ov31_0238A0A8:
|
|
.byte 0x5B, 0x4D, 0x3A, 0x48, 0x30, 0x5D, 0x00, 0x00
|
|
.global ov31_0238A0B0
|
|
ov31_0238A0B0:
|
|
.byte 0x5B, 0x4D, 0x3A, 0x48
|
|
.byte 0x31, 0x5D, 0x00, 0x00
|
|
.global ov31_0238A0B8
|
|
ov31_0238A0B8:
|
|
.byte 0x5B, 0x4D, 0x3A, 0x48, 0x32, 0x5D, 0x00, 0x00
|
|
.global ov31_0238A0C0
|
|
ov31_0238A0C0:
|
|
.byte 0x5B, 0x4D, 0x3A, 0x48
|
|
.byte 0x33, 0x5D, 0x00, 0x00
|
|
.global ov31_0238A0C8
|
|
ov31_0238A0C8:
|
|
.byte 0x5B, 0x4D, 0x3A, 0x48, 0x34, 0x5D, 0x00, 0x00
|
|
.global ov31_0238A0D0
|
|
ov31_0238A0D0:
|
|
.byte 0x5B, 0x4D, 0x3A, 0x48
|
|
.byte 0x35, 0x5D, 0x00, 0x00
|
|
.global ov31_0238A0D8
|
|
ov31_0238A0D8:
|
|
.byte 0x5B, 0x4D, 0x3A, 0x48, 0x36, 0x5D, 0x00, 0x00
|
|
.global ov31_0238A0E0
|
|
ov31_0238A0E0:
|
|
.byte 0x5B, 0x4D, 0x3A, 0x48
|
|
.byte 0x37, 0x5D, 0x00, 0x00
|
|
.global ov31_0238A0E8
|
|
ov31_0238A0E8:
|
|
.byte 0x5B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3A, 0x30, 0x5D, 0x5B, 0x43
|
|
.byte 0x4C, 0x55, 0x4D, 0x5F, 0x53, 0x45, 0x54, 0x3A, 0x38, 0x30, 0x5D, 0x5B, 0x73, 0x74, 0x72, 0x69
|
|
.byte 0x6E, 0x67, 0x3A, 0x31, 0x5D, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_25
|
|
DUNGEON_WINDOW_PARAMS_25:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x0C, 0x00
|
|
.byte 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_SUBMENU_ITEMS_5
|
|
DUNGEON_SUBMENU_ITEMS_5:
|
|
.word 0x8C3 + OV31_DATA_OFFSET
|
|
.byte 0x01, 0x00, 0x00, 0x00
|
|
.word 0x8C4 + OV31_DATA_OFFSET
|
|
.byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF
|
|
.global DUNGEON_WINDOW_PARAMS_26
|
|
DUNGEON_WINDOW_PARAMS_26:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x1C, 0x12, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global OVERLAY31_UNKNOWN_STRUCT__NA_238A144
|
|
OVERLAY31_UNKNOWN_STRUCT__NA_238A144:
|
|
.byte 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.word ov31_0238917C
|
|
.word RecruitmentSearchMenuLoop
|
|
.global ov31_0238A154
|
|
ov31_0238A154:
|
|
.byte 0x5B, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3A, 0x30, 0x3A, 0x33, 0x5D, 0x20, 0x5B, 0x43, 0x53, 0x3A
|
|
.byte 0x25, 0x63, 0x5D, 0x25, 0x73, 0x5B, 0x43, 0x52, 0x5D, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_27
|
|
DUNGEON_WINDOW_PARAMS_27:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x02, 0x02, 0x0F, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_28
|
|
DUNGEON_WINDOW_PARAMS_28:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x02, 0x02, 0x1C, 0x14, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global OVERLAY31_UNKNOWN_STRUCT__NA_238A190
|
|
OVERLAY31_UNKNOWN_STRUCT__NA_238A190:
|
|
.byte 0x0E, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.word ov31_02389460
|
|
.word HelpMenuLoop
|
|
.global DUNGEON_SUBMENU_ITEMS_6
|
|
DUNGEON_SUBMENU_ITEMS_6:
|
|
#if defined(EUROPE)
|
|
#define DUNGEON_SUBMENU_6_OFFSET 2
|
|
#elif defined(JAPAN)
|
|
#define DUNGEON_SUBMENU_6_OFFSET 0xA03
|
|
#else
|
|
#define DUNGEON_SUBMENU_6_OFFSET 0
|
|
#endif
|
|
.word 0x3FA8 + DUNGEON_SUBMENU_6_OFFSET
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.word 0x3FA9 + DUNGEON_SUBMENU_6_OFFSET
|
|
.byte 0x01, 0x00, 0x00, 0x00
|
|
.word 0x3FAA + DUNGEON_SUBMENU_6_OFFSET
|
|
.byte 0x02, 0x00, 0x00, 0x00
|
|
.word 0x3FAB + DUNGEON_SUBMENU_6_OFFSET
|
|
.byte 0x03, 0x00, 0x00, 0x00
|
|
.word 0x3FAC + DUNGEON_SUBMENU_6_OFFSET
|
|
.byte 0x04, 0x00, 0x00, 0x00
|
|
.word 0x3FAD + DUNGEON_SUBMENU_6_OFFSET
|
|
.byte 0x05, 0x00, 0x00, 0x00
|
|
.word 0x3FAE + DUNGEON_SUBMENU_6_OFFSET
|
|
.byte 0x06, 0x00, 0x00, 0x00
|
|
.word 0x3FAF + DUNGEON_SUBMENU_6_OFFSET
|
|
.byte 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0xFF, 0xFF, 0xFF, 0xFF
|
|
.global DUNGEON_WINDOW_PARAMS_29
|
|
DUNGEON_WINDOW_PARAMS_29:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x18, 0x13, 0x00, 0xFF, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_30
|
|
DUNGEON_WINDOW_PARAMS_30:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x08, 0x00, 0x00, 0xFF, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_31
|
|
DUNGEON_WINDOW_PARAMS_31:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x12, 0x00, 0x00, 0xFF, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.global DUNGEON_WINDOW_PARAMS_32
|
|
DUNGEON_WINDOW_PARAMS_32:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x14, 0x0F, 0x02, 0x00, 0xFE, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.global ov31_0238A228
|
|
ov31_0238A228:
|
|
.byte 0x5B, 0x4D, 0x3A, 0x53, 0x32, 0x5D, 0x5B, 0x74, 0x61, 0x63, 0x74, 0x69
|
|
.byte 0x63, 0x73, 0x3A, 0x30, 0x5D, 0x00, 0x00, 0x00
|
|
.global ov31_0238A23C
|
|
ov31_0238A23C:
|
|
.byte 0x5B, 0x4D, 0x3A, 0x53, 0x31, 0x5D, 0x5B, 0x74
|
|
.byte 0x61, 0x63, 0x74, 0x69, 0x63, 0x73, 0x3A, 0x30, 0x5D, 0x00, 0x00, 0x00
|
|
|
|
.data
|
|
.global OVERLAY31_UNKNOWN_POINTER__NA_238A260
|
|
OVERLAY31_UNKNOWN_POINTER__NA_238A260:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x0A, 0x00, 0x00, 0x00
|
|
.global OVERLAY31_UNKNOWN_POINTER__NA_238A268
|
|
OVERLAY31_UNKNOWN_POINTER__NA_238A268:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.global OVERLAY31_UNKNOWN_POINTER__NA_238A26C
|
|
OVERLAY31_UNKNOWN_POINTER__NA_238A26C:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.global OVERLAY31_UNKNOWN_POINTER__NA_238A270
|
|
OVERLAY31_UNKNOWN_POINTER__NA_238A270:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global OVERLAY31_UNKNOWN_POINTER__NA_238A27C
|
|
OVERLAY31_UNKNOWN_POINTER__NA_238A27C:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.global OVERLAY31_UNKNOWN_POINTER__NA_238A280
|
|
OVERLAY31_UNKNOWN_POINTER__NA_238A280:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.global OVERLAY31_UNKNOWN_POINTER__NA_238A284
|
|
OVERLAY31_UNKNOWN_POINTER__NA_238A284:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.global OVERLAY31_UNKNOWN_POINTER__NA_238A288
|
|
OVERLAY31_UNKNOWN_POINTER__NA_238A288:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.global OVERLAY31_UNKNOWN_POINTER__NA_238A28C
|
|
OVERLAY31_UNKNOWN_POINTER__NA_238A28C:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
|
|
.bss
|
|
.global ov31_0238A2A0
|
|
ov31_0238A2A0:
|
|
.space 0x8
|
|
.global ov31_0238A2A8
|
|
ov31_0238A2A8:
|
|
.space 0x18
|