mirror of
https://github.com/pret/pmd-sky.git
synced 2026-03-21 17:25:15 -05:00
899 lines
17 KiB
ArmAsm
899 lines
17 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "overlay_29_0234BEE0.inc"
|
|
|
|
.text
|
|
|
|
arm_func_start ov29_0234BEE0
|
|
ov29_0234BEE0: ; 0x0234BEE0
|
|
ldr r2, _0234BEFC ; =ov29_0235352C
|
|
mov r1, #0xc
|
|
ldr r2, [r2]
|
|
ldr ip, _0234BF00 ; =sub_0200B3D4
|
|
mla r1, r0, r1, r2
|
|
ldr r0, [r1, #0x24]
|
|
bx ip
|
|
.align 2, 0
|
|
_0234BEFC: .word ov29_0235352C
|
|
_0234BF00: .word sub_0200B3D4
|
|
arm_func_end ov29_0234BEE0
|
|
|
|
arm_func_start ov29_0234BF04
|
|
ov29_0234BF04: ; 0x0234BF04
|
|
ldr r2, _0234BF20 ; =ov29_0235352C
|
|
mov r1, #0xc
|
|
ldr r2, [r2]
|
|
ldr ip, _0234BF24 ; =sub_0200B330
|
|
mla r1, r0, r1, r2
|
|
ldr r0, [r1, #0x24]
|
|
bx ip
|
|
.align 2, 0
|
|
_0234BF20: .word ov29_0235352C
|
|
_0234BF24: .word sub_0200B330
|
|
arm_func_end ov29_0234BF04
|
|
|
|
arm_func_start RunDungeonMode
|
|
RunDungeonMode: ; 0x0234BF28
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
bl sub_02017BEC
|
|
bl sub_02028E2C
|
|
mov r0, #0
|
|
mov r1, r0
|
|
mov r2, r0
|
|
mov r3, r0
|
|
bl sub_020091F8
|
|
mov r0, #0
|
|
mov r1, r0
|
|
mov r2, r0
|
|
mov r3, #1
|
|
bl sub_020091F8
|
|
bl ov29_022E0E8C
|
|
bl sub_02027148
|
|
mov r0, #0xf000
|
|
mov r1, #0
|
|
bl sub_0201D7E0
|
|
mov r0, #0x1c0
|
|
mov r1, #0
|
|
bl MemAlloc
|
|
ldr r2, _0234C1C8 ; =ov29_023537D8
|
|
mov r1, #0x1c0
|
|
str r0, [r2, #4]
|
|
bl MemZero
|
|
ldr r0, _0234C1C8 ; =ov29_023537D8
|
|
mov r2, #0
|
|
ldr r1, [r0, #4]
|
|
strb r2, [r1, #0x1bc]
|
|
ldr r1, [r0, #4]
|
|
str r4, [r1, #8]
|
|
ldr r0, [r0, #4]
|
|
str r4, [r0, #0xc]
|
|
bl DungeonAlloc
|
|
ldr r1, _0234C1C8 ; =ov29_023537D8
|
|
ldr r1, [r1, #4]
|
|
str r0, [r1, #4]
|
|
bl DungeonZInit
|
|
bl ov29_022DDFF0
|
|
bl ov29_022DDFFC
|
|
bl ov29_022DE300
|
|
ldr r0, _0234C1C8 ; =ov29_023537D8
|
|
mov ip, r5
|
|
ldr r0, [r0, #4]
|
|
mov r4, #0x1a
|
|
add r6, r0, #0x10
|
|
_0234BFE8:
|
|
ldmia ip!, {r0, r1, r2, r3}
|
|
stmia r6!, {r0, r1, r2, r3}
|
|
subs r4, r4, #1
|
|
bne _0234BFE8
|
|
ldmia ip, {r0, r1, r2}
|
|
stmia r6, {r0, r1, r2}
|
|
bl ov29_0234C9FC
|
|
ldr r0, _0234C1CC ; =ov29_0234BBDC
|
|
bl sub_02006EC4
|
|
bl sub_02017A68
|
|
bl ov29_022E0CFC
|
|
bl ov29_0234C4F8
|
|
cmp r5, #0
|
|
beq _0234C04C
|
|
ldrsb r0, [r5, #0xe]
|
|
cmp r0, #1
|
|
mov r0, #0
|
|
bne _0234C040
|
|
bl ov29_0234C5EC
|
|
mov r0, #1
|
|
bl ov29_0234C584
|
|
b _0234C04C
|
|
_0234C040:
|
|
bl ov29_0234C584
|
|
mov r0, #1
|
|
bl ov29_0234C584
|
|
_0234C04C:
|
|
bl ov29_022DDC00
|
|
ldr r1, _0234C1C8 ; =ov29_023537D8
|
|
mov r2, #1
|
|
ldr r0, _0234C1D0 ; =ov29_0234C1D8
|
|
strb r2, [r1]
|
|
bl sub_0200383C
|
|
mov r1, #0
|
|
ldr r0, _0234C1D4 ; =ov29_0234BBE8
|
|
mov r2, r1
|
|
bl ov29_022DDD50
|
|
ldr r4, _0234C1C8 ; =ov29_023537D8
|
|
mov r6, #0
|
|
_0234C07C:
|
|
bl sub_020038E8
|
|
ldr r0, [r4, #4]
|
|
ldrb r0, [r0, #0x1bd]
|
|
cmp r0, #0
|
|
bne _0234C0C0
|
|
bl sub_020039E4
|
|
ldr r0, [r4, #4]
|
|
ldrb r0, [r0, #0x1bc]
|
|
cmp r0, #0
|
|
beq _0234C07C
|
|
_0234C0A4:
|
|
bl ov30_02382A34
|
|
cmp r0, #2
|
|
cmpne r0, #3
|
|
bne _0234C0A4
|
|
ldr r0, [r4, #4]
|
|
strb r6, [r0, #0x1bc]
|
|
b _0234C07C
|
|
_0234C0C0:
|
|
ldr r0, _0234C1D4 ; =ov29_0234BBE8
|
|
bl ov29_022DDDA4
|
|
mov r0, #0
|
|
bl sub_0200383C
|
|
bl sub_02034710
|
|
bl ov29_0234CA2C
|
|
cmp r5, #0
|
|
beq _0234C108
|
|
ldr r0, _0234C1C8 ; =ov29_023537D8
|
|
mov r4, #0x1a
|
|
ldr r0, [r0, #4]
|
|
add ip, r0, #0x10
|
|
_0234C0F0:
|
|
ldmia ip!, {r0, r1, r2, r3}
|
|
stmia r5!, {r0, r1, r2, r3}
|
|
subs r4, r4, #1
|
|
bne _0234C0F0
|
|
ldmia ip, {r0, r1, r2}
|
|
stmia r5, {r0, r1, r2}
|
|
_0234C108:
|
|
bl ov29_022DE498
|
|
bl ov29_022DE0A0
|
|
bl ov29_0234C544
|
|
mov r0, #0
|
|
bl sub_02006EC4
|
|
ldr r0, _0234C1C8 ; =ov29_023537D8
|
|
ldr r0, [r0, #4]
|
|
cmp r0, #0
|
|
beq _0234C154
|
|
bl DungeonFree
|
|
ldr r0, _0234C1C8 ; =ov29_023537D8
|
|
mov r2, #0
|
|
ldr r1, [r0, #4]
|
|
str r2, [r1, #4]
|
|
ldr r0, [r0, #4]
|
|
bl MemFree
|
|
ldr r0, _0234C1C8 ; =ov29_023537D8
|
|
mov r1, #0
|
|
str r1, [r0, #4]
|
|
_0234C154:
|
|
bl sub_0201D804
|
|
bl sub_0202715C
|
|
bl ov29_022DDCA0
|
|
bl sub_02017B70
|
|
bl sub_02017BEC
|
|
mov r0, #0
|
|
sub r1, r0, #0x100
|
|
bl sub_02008F3C
|
|
mov r0, #1
|
|
mvn r1, #0xff
|
|
bl sub_02008F3C
|
|
mov r0, #0
|
|
bl sub_02009120
|
|
mov r0, #1
|
|
bl sub_02009120
|
|
mov r0, #0
|
|
bl sub_02009514
|
|
mov r0, #1
|
|
bl sub_02009514
|
|
mov r0, #0
|
|
bl sub_020091CC
|
|
mov r0, #1
|
|
bl sub_020091CC
|
|
mov r0, #0
|
|
bl sub_020093BC
|
|
mov r0, #1
|
|
bl sub_020093BC
|
|
mov r0, #1
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0234C1C8: .word ov29_023537D8
|
|
_0234C1CC: .word ov29_0234BBDC
|
|
_0234C1D0: .word ov29_0234C1D8
|
|
_0234C1D4: .word ov29_0234BBE8
|
|
arm_func_end RunDungeonMode
|
|
|
|
arm_func_start ov29_0234C1D8
|
|
ov29_0234C1D8: ; 0x0234C1D8
|
|
stmdb sp!, {r4, lr}
|
|
bl sub_0201BF64
|
|
bl sub_02028E40
|
|
bl sub_020038D8
|
|
cmp r0, #0
|
|
beq _0234C1F4
|
|
bl sub_02003990
|
|
_0234C1F4:
|
|
bl GetAndStoreButtonInput
|
|
bl ov29_022DDE24
|
|
bl ov29_022E9F9C
|
|
bl HandleFadesDungeonBothScreens
|
|
bl HandleMenus
|
|
bl ov29_022EA008
|
|
ldr r0, _0234C2EC ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
beq _0234C230
|
|
#ifdef JAPAN
|
|
add r0, r0, #0x2180
|
|
add r0, r0, #0x18000
|
|
#else
|
|
add r0, r0, #0x224
|
|
add r0, r0, #0x1a000
|
|
#endif
|
|
bl ov10_022BF764
|
|
bl ov29_022E6DD0
|
|
b _0234C238
|
|
_0234C230:
|
|
mov r0, #0
|
|
bl ov10_022BF764
|
|
_0234C238:
|
|
bl sub_02028848
|
|
bl ov29_022DE868
|
|
ldr r0, _0234C2F0 ; =ov29_023537D8
|
|
ldr r0, [r0, #4]
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
beq _0234C258
|
|
blx r0
|
|
_0234C258:
|
|
bl ov29_022DC670
|
|
bl sub_0201F464
|
|
ldr r0, _0234C2F0 ; =ov29_023537D8
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _0234C274
|
|
bl sub_0201DDFC
|
|
_0234C274:
|
|
bl sub_02008F84
|
|
bl ov29_022EAFB0
|
|
bl sub_02017A80
|
|
mov r0, #1
|
|
bl sub_02028A64
|
|
bl sub_0201BE28
|
|
bl sub_0201BE5C
|
|
bl sub_0201BE84
|
|
bl sub_0204F9CC
|
|
bl sub_02003A40
|
|
ldr r1, _0234C2F0 ; =ov29_023537D8
|
|
mov r4, r0
|
|
ldrb r0, [r1]
|
|
cmp r0, #0
|
|
beq _0234C2B8
|
|
mov r0, #0
|
|
bl sub_02008ED0
|
|
_0234C2B8:
|
|
bl G3X_Reset
|
|
bl sub_02008F88
|
|
bl sub_0201DE10
|
|
bl ov10_022BF7D4
|
|
bl ov29_0233992C
|
|
bl sub_02028E88
|
|
bl ov29_022DE0CC
|
|
bl sub_0201BF4C
|
|
ldr r1, _0234C2F0 ; =ov29_023537D8
|
|
mov r2, #0
|
|
mov r0, r4
|
|
strb r2, [r1]
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_0234C2EC: .word DUNGEON_PTR
|
|
_0234C2F0: .word ov29_023537D8
|
|
arm_func_end ov29_0234C1D8
|
|
|
|
arm_func_start ov29_0234C2F4
|
|
ov29_0234C2F4: ; 0x0234C2F4
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r1
|
|
mov r5, r0
|
|
mov r1, #0x9c
|
|
bl MemZero
|
|
add r0, r5, #0x48
|
|
strb r4, [r5, #0x88]
|
|
bl InitRender3dElement64
|
|
mov r0, #0x100
|
|
strh r0, [r5, #0x4c]
|
|
mov r0, #0xc0
|
|
strh r0, [r5, #0x4e]
|
|
mov r0, #1
|
|
strh r0, [r5, #0x72]
|
|
strb r0, [r5, #0x86]
|
|
mov r0, #2
|
|
strb r0, [r5, #0x84]
|
|
mov r0, #0
|
|
strb r0, [r5, #0x77]
|
|
strb r0, [r5, #0x74]
|
|
strb r0, [r5, #0x75]
|
|
strb r0, [r5, #0x76]
|
|
strb r0, [r5, #0x99]
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end ov29_0234C2F4
|
|
|
|
arm_func_start ov29_0234C354
|
|
ov29_0234C354: ; 0x0234C354
|
|
stmdb sp!, {r3, lr}
|
|
mov r3, #0
|
|
str r3, [r0, #0x90]
|
|
str r3, [r0, #0x8c]
|
|
str r3, [r0, #0x94]
|
|
strb r3, [r0, #0x98]
|
|
ldrb r1, [r0, #0x88]
|
|
cmp r1, #1
|
|
bne _0234C384
|
|
ldr r0, [r0, #0x90]
|
|
bl ov29_022E0F14
|
|
ldmia sp!, {r3, pc}
|
|
_0234C384:
|
|
ldrb r2, [r0, #0x99]
|
|
cmp r2, #0
|
|
strneb r3, [r0, #0x77]
|
|
ldmneia sp!, {r3, pc}
|
|
ldr r0, [r0, #0x90]
|
|
bl ov29_022E0F14
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end ov29_0234C354
|
|
|
|
arm_func_start ov29_0234C3A0
|
|
ov29_0234C3A0: ; 0x0234C3A0
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
ldrb r1, [r4, #0x88]
|
|
cmp r1, #1
|
|
bne _0234C3C8
|
|
ldr r0, [r4, #0x90]
|
|
mov r0, r0, asr #0xc
|
|
bl ov29_022E0F14
|
|
ldr r0, [r4, #0x90]
|
|
ldmia sp!, {r4, pc}
|
|
_0234C3C8:
|
|
ldrb r0, [r4, #0x99]
|
|
cmp r0, #0
|
|
ldr r0, [r4, #0x90]
|
|
beq _0234C3F8
|
|
cmp r0, #0
|
|
rsblt r0, r0, #0
|
|
mov r0, r0, asr #0xc
|
|
mov r0, r0, lsl #4
|
|
cmp r0, #0x100
|
|
moveq r0, #0xff
|
|
strb r0, [r4, #0x77]
|
|
ldmia sp!, {r4, pc}
|
|
_0234C3F8:
|
|
mov r0, r0, asr #0xc
|
|
bl ov29_022E0F14
|
|
ldr r0, [r4, #0x90]
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end ov29_0234C3A0
|
|
|
|
arm_func_start StartFadeDungeon
|
|
StartFadeDungeon: ; 0x0234C408
|
|
stmdb sp!, {r3, lr}
|
|
str r2, [r0, #0x8c]
|
|
str r1, [r0, #0x94]
|
|
mov r1, #1
|
|
strb r1, [r0, #0x98]
|
|
ldrb r1, [r0, #0x88]
|
|
cmp r1, #1
|
|
bne _0234C464
|
|
cmp r2, #5
|
|
cmpne r2, #3
|
|
moveq r1, #0
|
|
streq r1, [r0, #0x90]
|
|
beq _0234C45C
|
|
cmp r2, #4
|
|
moveq r1, #0x10000
|
|
streq r1, [r0, #0x90]
|
|
beq _0234C45C
|
|
cmp r2, #2
|
|
moveq r1, #0x10000
|
|
rsbeq r1, r1, #0
|
|
streq r1, [r0, #0x90]
|
|
_0234C45C:
|
|
bl ov29_0234C3A0
|
|
ldmia sp!, {r3, pc}
|
|
_0234C464:
|
|
cmp r2, #5
|
|
bne _0234C488
|
|
mov r1, #0
|
|
str r1, [r0, #0x90]
|
|
mov r1, #0xff
|
|
strb r1, [r0, #0x74]
|
|
strb r1, [r0, #0x75]
|
|
strb r1, [r0, #0x76]
|
|
b _0234C4F0
|
|
_0234C488:
|
|
cmp r2, #3
|
|
bne _0234C4A8
|
|
mov r1, #0
|
|
str r1, [r0, #0x90]
|
|
strb r1, [r0, #0x74]
|
|
strb r1, [r0, #0x75]
|
|
strb r1, [r0, #0x76]
|
|
b _0234C4F0
|
|
_0234C4A8:
|
|
cmp r2, #4
|
|
bne _0234C4CC
|
|
mov r1, #0x10000
|
|
str r1, [r0, #0x90]
|
|
mov r1, #0xff
|
|
strb r1, [r0, #0x74]
|
|
strb r1, [r0, #0x75]
|
|
strb r1, [r0, #0x76]
|
|
b _0234C4F0
|
|
_0234C4CC:
|
|
cmp r2, #2
|
|
bne _0234C4F0
|
|
mov r1, #0x10000
|
|
rsb r1, r1, #0
|
|
str r1, [r0, #0x90]
|
|
mov r1, #0
|
|
strb r1, [r0, #0x74]
|
|
strb r1, [r0, #0x75]
|
|
strb r1, [r0, #0x76]
|
|
_0234C4F0:
|
|
bl ov29_0234C3A0
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end StartFadeDungeon
|
|
|
|
arm_func_start ov29_0234C4F8
|
|
ov29_0234C4F8: ; 0x0234C4F8
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #0x144
|
|
mov r1, #0
|
|
bl MemAlloc
|
|
ldr r2, _0234C540 ; =DUNGEON_FADES_PTR
|
|
mov r1, #0x144
|
|
str r0, [r2]
|
|
bl MemZero
|
|
ldr r0, _0234C540 ; =DUNGEON_FADES_PTR
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
bl ov29_0234C2F4
|
|
ldr r0, _0234C540 ; =DUNGEON_FADES_PTR
|
|
mov r1, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x9c
|
|
bl ov29_0234C2F4
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0234C540: .word DUNGEON_FADES_PTR
|
|
arm_func_end ov29_0234C4F8
|
|
|
|
arm_func_start ov29_0234C544
|
|
ov29_0234C544: ; 0x0234C544
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _0234C580 ; =DUNGEON_FADES_PTR
|
|
ldr r0, [r0]
|
|
bl ov29_0234C354
|
|
ldr r0, _0234C580 ; =DUNGEON_FADES_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x9c
|
|
bl ov29_0234C354
|
|
ldr r0, _0234C580 ; =DUNGEON_FADES_PTR
|
|
ldr r0, [r0]
|
|
bl MemFree
|
|
ldr r0, _0234C580 ; =DUNGEON_FADES_PTR
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0234C580: .word DUNGEON_FADES_PTR
|
|
arm_func_end ov29_0234C544
|
|
|
|
arm_func_start ov29_0234C584
|
|
ov29_0234C584: ; 0x0234C584
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _0234C5E8 ; =DUNGEON_FADES_PTR
|
|
mov r2, #0x10000
|
|
ldr r3, [r1]
|
|
mov r1, #0x9c
|
|
mla r0, r1, r0, r3
|
|
rsb r2, r2, #0
|
|
str r2, [r0, #0x90]
|
|
mov r1, #1
|
|
str r1, [r0, #0x8c]
|
|
mov r2, #0
|
|
str r2, [r0, #0x94]
|
|
strb r1, [r0, #0x98]
|
|
ldrb r1, [r0, #0x88]
|
|
cmp r1, #1
|
|
bne _0234C5CC
|
|
bl ov29_0234C3A0
|
|
ldmia sp!, {r3, pc}
|
|
_0234C5CC:
|
|
ldrb r1, [r0, #0x99]
|
|
cmp r1, #0
|
|
strneb r2, [r0, #0x74]
|
|
strneb r2, [r0, #0x75]
|
|
strneb r2, [r0, #0x76]
|
|
bl ov29_0234C3A0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0234C5E8: .word DUNGEON_FADES_PTR
|
|
arm_func_end ov29_0234C584
|
|
|
|
arm_func_start ov29_0234C5EC
|
|
ov29_0234C5EC: ; 0x0234C5EC
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _0234C650 ; =DUNGEON_FADES_PTR
|
|
mov r1, #0x9c
|
|
ldr r3, [r2]
|
|
mov r2, #0x10000
|
|
mla r0, r1, r0, r3
|
|
str r2, [r0, #0x90]
|
|
mov r2, #1
|
|
str r2, [r0, #0x8c]
|
|
mov r1, #0
|
|
str r1, [r0, #0x94]
|
|
strb r2, [r0, #0x98]
|
|
ldrb r1, [r0, #0x88]
|
|
cmp r1, #1
|
|
bne _0234C630
|
|
bl ov29_0234C3A0
|
|
ldmia sp!, {r3, pc}
|
|
_0234C630:
|
|
ldrb r1, [r0, #0x99]
|
|
cmp r1, #0
|
|
movne r1, #0xff
|
|
strneb r1, [r0, #0x74]
|
|
strneb r1, [r0, #0x75]
|
|
strneb r1, [r0, #0x76]
|
|
bl ov29_0234C3A0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0234C650: .word DUNGEON_FADES_PTR
|
|
arm_func_end ov29_0234C5EC
|
|
|
|
arm_func_start ov29_0234C654
|
|
ov29_0234C654: ; 0x0234C654
|
|
ldr r1, _0234C664 ; =DUNGEON_FADES_PTR
|
|
ldr r1, [r1]
|
|
strh r0, [r1, #0x72]
|
|
bx lr
|
|
.align 2, 0
|
|
_0234C664: .word DUNGEON_FADES_PTR
|
|
arm_func_end ov29_0234C654
|
|
|
|
arm_func_start StartFadeDungeonWrapper
|
|
StartFadeDungeonWrapper: ; 0x0234C668
|
|
stmdb sp!, {r3, lr}
|
|
ldr r3, _0234C708 ; =DUNGEON_FADES_PTR
|
|
mov ip, #0
|
|
ldr lr, [r3]
|
|
add lr, lr, r2, lsl #2
|
|
str r0, [lr, #0x138]
|
|
ldr r0, [r3]
|
|
add r0, r0, r2
|
|
strb ip, [r0, #0x140]
|
|
ldr ip, [r3]
|
|
add r0, ip, r2, lsl #2
|
|
ldr r0, [r0, #0x138]
|
|
cmp r0, #6
|
|
addls pc, pc, r0, lsl #2
|
|
b _0234C6E0
|
|
_0234C6A4: ; jump table
|
|
b _0234C6E0 ; case 0
|
|
b _0234C6C0 ; case 1
|
|
b _0234C6C8 ; case 2
|
|
b _0234C6C8 ; case 3
|
|
b _0234C6D0 ; case 4
|
|
b _0234C6D8 ; case 5
|
|
b _0234C6D8 ; case 6
|
|
_0234C6C0:
|
|
mov r3, #2
|
|
b _0234C6E4
|
|
_0234C6C8:
|
|
mov r3, #3
|
|
b _0234C6E4
|
|
_0234C6D0:
|
|
mov r3, #4
|
|
b _0234C6E4
|
|
_0234C6D8:
|
|
mov r3, #5
|
|
b _0234C6E4
|
|
_0234C6E0:
|
|
mov r3, #0
|
|
_0234C6E4:
|
|
mov r0, #0x9c
|
|
mla r0, r2, r0, ip
|
|
cmp r3, #0
|
|
bne _0234C6FC
|
|
bl ov29_0234C354
|
|
ldmia sp!, {r3, pc}
|
|
_0234C6FC:
|
|
mov r2, r3
|
|
bl StartFadeDungeon
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0234C708: .word DUNGEON_FADES_PTR
|
|
arm_func_end StartFadeDungeonWrapper
|
|
|
|
arm_func_start ov29_0234C70C
|
|
ov29_0234C70C: ; 0x0234C70C
|
|
ldr r2, _0234C734 ; =DUNGEON_FADES_PTR
|
|
mov r1, #0x9c
|
|
ldr r2, [r2]
|
|
mla r1, r0, r1, r2
|
|
ldr r0, [r1, #0x8c]
|
|
cmp r0, #1
|
|
cmpne r0, #0
|
|
moveq r0, #0
|
|
movne r0, #1
|
|
bx lr
|
|
.align 2, 0
|
|
_0234C734: .word DUNGEON_FADES_PTR
|
|
arm_func_end ov29_0234C70C
|
|
|
|
arm_func_start ov29_0234C738
|
|
ov29_0234C738: ; 0x0234C738
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r5, r0
|
|
mov r0, #0x9c
|
|
mul r4, r5, r0
|
|
ldr r6, _0234C7D0 ; =DUNGEON_FADES_PTR
|
|
mov r7, #5
|
|
_0234C750:
|
|
ldr r1, [r6]
|
|
add r0, r1, r5, lsl #2
|
|
ldr r0, [r0, #0x138]
|
|
cmp r0, #6
|
|
addls pc, pc, r0, lsl #2
|
|
b _0234C7C0
|
|
_0234C768: ; jump table
|
|
b _0234C7C0 ; case 0
|
|
b _0234C784 ; case 1
|
|
b _0234C784 ; case 2
|
|
b _0234C79C ; case 3
|
|
b _0234C784 ; case 4
|
|
b _0234C784 ; case 5
|
|
b _0234C79C ; case 6
|
|
_0234C784:
|
|
add r0, r4, r1
|
|
ldr r0, [r0, #0x8c]
|
|
cmp r0, #1
|
|
cmpne r0, #0
|
|
bne _0234C7C0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
_0234C79C:
|
|
add r0, r5, r1
|
|
ldrb r0, [r0, #0x140]
|
|
cmp r0, #1
|
|
bne _0234C7C0
|
|
add r0, r4, r1
|
|
ldr r0, [r0, #0x8c]
|
|
cmp r0, #1
|
|
cmpne r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
|
_0234C7C0:
|
|
mov r0, r7
|
|
bl AdvanceFrame
|
|
b _0234C750
|
|
_0234C7CC:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0234C7D0: .word DUNGEON_FADES_PTR
|
|
arm_func_end ov29_0234C738
|
|
|
|
arm_func_start HandleFadesDungeon
|
|
HandleFadesDungeon: ; 0x0234C7D4
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r1, _0234C9E0 ; =DUNGEON_FADES_PTR
|
|
mov r5, r0
|
|
ldr r4, [r1]
|
|
add r0, r4, r5, lsl #2
|
|
ldr r2, [r0, #0x138]
|
|
cmp r2, #6
|
|
addls pc, pc, r2, lsl #2
|
|
b _0234C8B8
|
|
_0234C7F8: ; jump table
|
|
b _0234C8B8 ; case 0
|
|
b _0234C814 ; case 1
|
|
b _0234C8B8 ; case 2
|
|
b _0234C830 ; case 3
|
|
b _0234C814 ; case 4
|
|
b _0234C8B8 ; case 5
|
|
b _0234C830 ; case 6
|
|
_0234C814:
|
|
mov r0, #0x9c
|
|
mla r0, r5, r0, r4
|
|
ldr r1, [r0, #0x8c]
|
|
cmp r1, #1
|
|
bne _0234C8B8
|
|
bl ov29_0234C354
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_0234C830:
|
|
adds r0, r4, #0x140
|
|
mov r0, #0x9c
|
|
bne _0234C888
|
|
mla r0, r5, r0, r4
|
|
ldr r1, [r0, #0x8c]
|
|
cmp r1, #1
|
|
bne _0234C8B8
|
|
cmp r2, #3
|
|
ldr r1, [r0, #0x94]
|
|
bne _0234C864
|
|
mov r2, #2
|
|
bl StartFadeDungeon
|
|
b _0234C86C
|
|
_0234C864:
|
|
mov r2, #4
|
|
bl StartFadeDungeon
|
|
_0234C86C:
|
|
ldr r0, _0234C9E0 ; =DUNGEON_FADES_PTR
|
|
ldr r0, [r0]
|
|
add r1, r0, #0x140
|
|
ldrb r0, [r1, r5]
|
|
add r0, r0, #1
|
|
strb r0, [r1, r5]
|
|
b _0234C8B8
|
|
_0234C888:
|
|
mul r3, r5, r0
|
|
add r0, r4, r3
|
|
ldr r0, [r0, #0x8c]
|
|
cmp r0, #1
|
|
bne _0234C8B8
|
|
add r0, r4, r5
|
|
mov r2, #0
|
|
strb r2, [r0, #0x140]
|
|
ldr r0, [r1]
|
|
add r0, r0, r3
|
|
bl ov29_0234C354
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_0234C8B8:
|
|
ldr r1, _0234C9E0 ; =DUNGEON_FADES_PTR
|
|
mov r0, #0x9c
|
|
ldr r1, [r1]
|
|
mla r4, r5, r0, r1
|
|
ldrb r0, [r4, #0x98]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
ldrb r0, [r4, #0x88]
|
|
cmp r0, #1
|
|
bne _0234C8EC
|
|
mov r0, r4
|
|
bl ov29_0234C3A0
|
|
b _0234C918
|
|
_0234C8EC:
|
|
ldrb r0, [r4, #0x99]
|
|
cmp r0, #0
|
|
mov r0, r4
|
|
beq _0234C914
|
|
bl ov29_0234C3A0
|
|
cmp r0, #0
|
|
beq _0234C918
|
|
add r0, r4, #0x48
|
|
bl sub_0201F2A0
|
|
b _0234C918
|
|
_0234C914:
|
|
bl ov29_0234C3A0
|
|
_0234C918:
|
|
ldr r0, [r4, #0x8c]
|
|
cmp r0, #5
|
|
addls pc, pc, r0, lsl #2
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_0234C928: ; jump table
|
|
ldmia sp!, {r3, r4, r5, pc} ; case 0
|
|
ldmia sp!, {r3, r4, r5, pc} ; case 1
|
|
b _0234C9BC ; case 2
|
|
b _0234C968 ; case 3
|
|
b _0234C994 ; case 4
|
|
b _0234C940 ; case 5
|
|
_0234C940:
|
|
ldr r1, [r4, #0x90]
|
|
ldr r0, [r4, #0x94]
|
|
add r0, r1, r0
|
|
str r0, [r4, #0x90]
|
|
cmp r0, #0x10000
|
|
movge r0, #0x10000
|
|
strge r0, [r4, #0x90]
|
|
movge r0, #1
|
|
strge r0, [r4, #0x8c]
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_0234C968:
|
|
ldr r2, [r4, #0x90]
|
|
ldr r1, [r4, #0x94]
|
|
mov r0, #0x10000
|
|
sub r1, r2, r1
|
|
rsb r0, r0, #0
|
|
str r1, [r4, #0x90]
|
|
cmp r1, r0
|
|
strle r0, [r4, #0x90]
|
|
movle r0, #1
|
|
strle r0, [r4, #0x8c]
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_0234C994:
|
|
ldr r1, [r4, #0x90]
|
|
ldr r0, [r4, #0x94]
|
|
sub r0, r1, r0
|
|
str r0, [r4, #0x90]
|
|
cmp r0, #0
|
|
movle r0, #0
|
|
strle r0, [r4, #0x90]
|
|
movle r0, #1
|
|
strle r0, [r4, #0x8c]
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_0234C9BC:
|
|
ldr r1, [r4, #0x90]
|
|
ldr r0, [r4, #0x94]
|
|
adds r0, r1, r0
|
|
str r0, [r4, #0x90]
|
|
movpl r0, #0
|
|
strpl r0, [r4, #0x90]
|
|
movpl r0, #1
|
|
strpl r0, [r4, #0x8c]
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_0234C9E0: .word DUNGEON_FADES_PTR
|
|
arm_func_end HandleFadesDungeon
|
|
|
|
arm_func_start HandleFadesDungeonBothScreens
|
|
HandleFadesDungeonBothScreens: ; 0x0234C9E4
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #0
|
|
bl HandleFadesDungeon
|
|
mov r0, #1
|
|
bl HandleFadesDungeon
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end HandleFadesDungeonBothScreens
|
|
|
|
arm_func_start ov29_0234C9FC
|
|
ov29_0234C9FC: ; 0x0234C9FC
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #8
|
|
mov r1, #0
|
|
bl MemAlloc
|
|
ldr r1, _0234CA28 ; =ov29_023537E4
|
|
mov r2, #0
|
|
str r0, [r1]
|
|
str r2, [r0, #4]
|
|
ldr r0, [r1]
|
|
str r2, [r0]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0234CA28: .word ov29_023537E4
|
|
arm_func_end ov29_0234C9FC
|
|
|
|
arm_func_start ov29_0234CA2C
|
|
ov29_0234CA2C: ; 0x0234CA2C
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #0x21
|
|
bl OverlayIsLoaded
|
|
cmp r0, #0
|
|
beq _0234CA48
|
|
mov r0, #0x21
|
|
bl UnloadOverlay
|
|
_0234CA48:
|
|
ldr r0, _0234CA64 ; =ov29_023537E4
|
|
ldr r0, [r0]
|
|
bl MemFree
|
|
ldr r0, _0234CA64 ; =ov29_023537E4
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0234CA64: .word ov29_023537E4
|
|
arm_func_end ov29_0234CA2C
|