mirror of
https://github.com/pret/pmd-sky.git
synced 2026-03-21 17:25:15 -05:00
2139 lines
37 KiB
ArmAsm
2139 lines
37 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "overlay_10_022C2588.inc"
|
|
|
|
.text
|
|
|
|
arm_func_start ov10_022C2588
|
|
ov10_022C2588: ; 0x022C2588
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #0xc
|
|
mov r4, r0
|
|
cmp r1, #0xaa
|
|
addlt r0, r1, #0xfe
|
|
addlt r0, r0, #0x100
|
|
addge r0, r1, #0xe2
|
|
addge r0, r0, #0x200
|
|
mov r0, r0, lsl #0x10
|
|
mov r3, r2
|
|
mov r1, r0, lsr #0x10
|
|
add r2, sp, #4
|
|
mov r0, #4
|
|
bl DirectoryFileMngr_OpenDirectoryFile
|
|
ldr r1, [sp, #4]
|
|
add r0, sp, #0
|
|
bl HandleSir0Translation
|
|
ldr r2, [sp]
|
|
mov r0, r4
|
|
mov r1, #0
|
|
bl DecompressAtFromMemoryPointerVeneer
|
|
add r0, sp, #4
|
|
bl UnloadFile
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r3, r4, pc}
|
|
arm_func_end ov10_022C2588
|
|
|
|
arm_func_start ov10_022C25EC
|
|
ov10_022C25EC: ; 0x022C25EC
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #4
|
|
mov r4, r0
|
|
cmp r1, #0xaa
|
|
addlt r0, r1, #0x2a8
|
|
addge r0, r1, #0x31c
|
|
mov r0, r0, lsl #0x10
|
|
mov r3, r2
|
|
mov r1, r0, lsr #0x10
|
|
mov r2, r4
|
|
mov r0, #4
|
|
bl DirectoryFileMngr_OpenDirectoryFile
|
|
ldr r1, [r4]
|
|
add r0, sp, #0
|
|
bl HandleSir0Translation
|
|
ldr r0, [sp]
|
|
str r0, [r4, #8]
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, pc}
|
|
arm_func_end ov10_022C25EC
|
|
|
|
arm_func_start ov10_022C2638
|
|
ov10_022C2638: ; 0x022C2638
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl UnloadFile
|
|
mov r0, r4
|
|
mov r1, #0xc
|
|
bl MemZero
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end ov10_022C2638
|
|
|
|
arm_func_start ov10_022C2654
|
|
ov10_022C2654: ; 0x022C2654
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #4
|
|
mov r4, r0
|
|
cmp r1, #0xaa
|
|
movlt r0, r1, lsl #0x10
|
|
addge r0, r1, #0x2a8
|
|
movge r0, r0, lsl #0x10
|
|
mov r3, r2
|
|
mov r1, r0, lsr #0x10
|
|
mov r2, r4
|
|
mov r0, #4
|
|
bl DirectoryFileMngr_OpenDirectoryFile
|
|
ldr r1, [r4]
|
|
add r0, sp, #0
|
|
bl HandleSir0Translation
|
|
ldr r0, [sp]
|
|
str r0, [r4, #8]
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, pc}
|
|
arm_func_end ov10_022C2654
|
|
|
|
arm_func_start ov10_022C26A0
|
|
ov10_022C26A0: ; 0x022C26A0
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl UnloadFile
|
|
mov r0, r4
|
|
mov r1, #0xc
|
|
bl MemZero
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end ov10_022C26A0
|
|
|
|
arm_func_start InitTilesetBuffer
|
|
InitTilesetBuffer: ; 0x022C26BC
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #0xc
|
|
mov r4, r0
|
|
cmp r1, #0xaa
|
|
addlt r0, r1, #0x154
|
|
addge r0, r1, #0xc5
|
|
addge r0, r0, #0x200
|
|
mov r0, r0, lsl #0x10
|
|
mov r3, r2
|
|
mov r1, r0, lsr #0x10
|
|
add r2, sp, #4
|
|
mov r0, #4
|
|
bl DirectoryFileMngr_OpenDirectoryFile
|
|
ldr r1, [sp, #4]
|
|
add r0, sp, #0
|
|
bl HandleSir0Translation
|
|
ldr r2, [sp]
|
|
ldr r1, _022C271C ; =0x00001C20
|
|
mov r0, r4
|
|
bl DecompressAtNormalVeneer
|
|
add r0, sp, #4
|
|
bl UnloadFile
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r3, r4, pc}
|
|
.align 2, 0
|
|
_022C271C: .word 0x00001C20
|
|
arm_func_end InitTilesetBuffer
|
|
|
|
arm_func_start ov10_022C2720
|
|
ov10_022C2720: ; 0x022C2720
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #0xc
|
|
mov r5, r1
|
|
mov r6, r0
|
|
mov r0, r5
|
|
mov r4, r2
|
|
bl IsBackgroundTileset
|
|
cmp r0, #0
|
|
mov r0, r5
|
|
bne _022C2788
|
|
bl ov10_022C27CC
|
|
mov r1, r0
|
|
add r2, sp, #4
|
|
mov r3, r4
|
|
mov r0, #4
|
|
bl DirectoryFileMngr_OpenDirectoryFile
|
|
ldr r1, [sp, #4]
|
|
add r0, sp, #0
|
|
bl HandleSir0Translation
|
|
ldr r2, [sp]
|
|
mov r0, r6
|
|
mov r1, #0x930
|
|
bl DecompressAtNormalVeneer
|
|
add r0, sp, #4
|
|
bl UnloadFile
|
|
b _022C27C4
|
|
_022C2788:
|
|
bl ov10_022C27CC
|
|
mov r1, r0
|
|
add r2, sp, #4
|
|
mov r3, r4
|
|
mov r0, #4
|
|
bl DirectoryFileMngr_OpenDirectoryFile
|
|
ldr r1, [sp, #4]
|
|
add r0, sp, #0
|
|
bl HandleSir0Translation
|
|
ldr r2, [sp]
|
|
mov r0, r6
|
|
mov r1, #0x800
|
|
bl DecompressAtNormalVeneer
|
|
add r0, sp, #4
|
|
bl UnloadFile
|
|
_022C27C4:
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r3, r4, r5, r6, pc}
|
|
arm_func_end ov10_022C2720
|
|
|
|
arm_func_start ov10_022C27CC
|
|
ov10_022C27CC: ; 0x022C27CC
|
|
cmp r0, #0xaa
|
|
addlt r0, r0, #0xaa
|
|
addge r0, r0, #0xff
|
|
addge r0, r0, #0x200
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bx lr
|
|
arm_func_end ov10_022C27CC
|
|
|
|
arm_func_start ov10_022C27E8
|
|
ov10_022C27E8: ; 0x022C27E8
|
|
stmdb sp!, {r3, lr}
|
|
ldr lr, [r2, r3, lsl #2]
|
|
ldr ip, _022C2834 ; =ov10_022DC224
|
|
ldrh lr, [lr]
|
|
str lr, [r0]
|
|
ldr r0, [r2, r3, lsl #2]
|
|
ldrh r0, [r0, #2]
|
|
str r0, [r1]
|
|
ldr r0, [r2, r3, lsl #2]
|
|
add r0, r0, #6
|
|
str r0, [ip, #4]
|
|
ldr r0, [r1]
|
|
cmp r0, #0x3e
|
|
movgt r0, #0x3e
|
|
strgt r0, [r1]
|
|
ldr r0, _022C2834 ; =ov10_022DC224
|
|
mov r1, #0
|
|
strh r1, [r0, #2]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022C2834: .word ov10_022DC224
|
|
arm_func_end ov10_022C27E8
|
|
|
|
arm_func_start ov10_022C2838
|
|
ov10_022C2838: ; 0x022C2838
|
|
ldr r0, _022C2884 ; =ov10_022DC224
|
|
ldrh r1, [r0, #2]
|
|
cmp r1, #0
|
|
subne r1, r1, #1
|
|
bne _022C2868
|
|
ldr r3, [r0, #4]
|
|
ldrh r2, [r3]
|
|
add r1, r3, #2
|
|
add r1, r1, #2
|
|
strh r2, [r0]
|
|
str r1, [r0, #4]
|
|
ldrh r1, [r3, #2]
|
|
_022C2868:
|
|
strh r1, [r0, #2]
|
|
ldrh r1, [r0]
|
|
ldr r0, _022C2888 ; =0x00000FFF
|
|
and r0, r1, r0
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bx lr
|
|
.align 2, 0
|
|
_022C2884: .word ov10_022DC224
|
|
_022C2888: .word 0x00000FFF
|
|
arm_func_end ov10_022C2838
|
|
|
|
arm_func_start MainGame
|
|
MainGame: ; 0x022C288C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x29c
|
|
mov r4, r0
|
|
mov r0, #0
|
|
mov r1, #0x2c
|
|
bl LoadScriptVariableValue
|
|
mov sb, r0
|
|
mov r6, #0
|
|
bl sub_02017A68
|
|
mov r0, #0x10
|
|
bl sub_02017ACC
|
|
bl sub_0204E1E4
|
|
cmp r4, #0
|
|
bne _022C28D0
|
|
bl InitEventFlagScriptVars
|
|
mov sb, r6
|
|
b _022C2984
|
|
_022C28D0:
|
|
cmp sb, #6
|
|
bne _022C2978
|
|
cmp r4, #2
|
|
bne _022C2938
|
|
mov r0, #7
|
|
bl sub_0205BA70
|
|
mov r4, r0
|
|
mov r2, #0xa
|
|
mov r0, r6
|
|
mov r1, #0x2c
|
|
bl SaveScriptVariableValue
|
|
mov r0, r4, lsl #0x18
|
|
mov r0, r0, asr #0x18
|
|
bl sub_0205B7C8
|
|
mov r0, #0xf
|
|
bl LoadOverlay
|
|
mov r0, #9
|
|
bl ExplorersOfSkyMain
|
|
mov r0, #0xf
|
|
bl UnloadOverlay
|
|
mov r2, #6
|
|
mov r0, r6
|
|
mov r1, #0x2c
|
|
bl SaveScriptVariableValue
|
|
mov sb, #7
|
|
b _022C2984
|
|
_022C2938:
|
|
cmp r4, #3
|
|
bne _022C2984
|
|
mov sb, #0xa
|
|
mov r2, sb
|
|
mov r0, r6
|
|
mov r1, #0x2c
|
|
bl SaveScriptVariableValue
|
|
mov r0, r6
|
|
bl sub_0205B7C8
|
|
mov r0, #0xf
|
|
bl LoadOverlay
|
|
mov r0, sb
|
|
bl ExplorersOfSkyMain
|
|
mov r0, #0xf
|
|
bl UnloadOverlay
|
|
b _022C2984
|
|
_022C2978:
|
|
cmp sb, #0
|
|
cmpne sb, #0xa
|
|
movne sb, #1
|
|
_022C2984:
|
|
cmp sb, #0xf
|
|
bne _022C29C8
|
|
bl GetGameMode
|
|
mov r4, r0
|
|
bl sub_0204E760
|
|
bl GetDungeonModeSpecial
|
|
cmp r4, #5
|
|
cmpne r0, #3
|
|
beq _022C29C0
|
|
mov r0, #0xd
|
|
bl LoadOverlay
|
|
mov r0, #0xf
|
|
bl GroundMainLoop
|
|
mov r0, #0xd
|
|
bl UnloadOverlay
|
|
_022C29C0:
|
|
mov sb, #0x10
|
|
b _022C2984
|
|
_022C29C8:
|
|
cmp sb, #7
|
|
moveq r5, #0
|
|
beq _022C2CF8
|
|
cmp sb, #6
|
|
moveq r5, #2
|
|
beq _022C2CF8
|
|
cmp sb, #0xa
|
|
bne _022C2B0C
|
|
bl sub_020587C8
|
|
bl sub_02057CE8
|
|
bl CleanStickyItemsInBag
|
|
mov r8, #0
|
|
ldr r5, _022C3118 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov fp, r8
|
|
mov sl, #1
|
|
mov r4, #6
|
|
_022C2A08:
|
|
mul r1, r8, r4
|
|
ldr r0, [r5]
|
|
ldr r2, [r0, #0x384]
|
|
ldrb r0, [r2, r1]
|
|
add r7, r2, r1
|
|
tst r0, #1
|
|
movne r0, sl
|
|
moveq r0, fp
|
|
tst r0, #0xff
|
|
beq _022C2A5C
|
|
mov r0, r7
|
|
bl IsLosableItem
|
|
cmp r0, #0
|
|
beq _022C2A54
|
|
ldrb r0, [r7, #1]
|
|
bl sub_020582E0
|
|
mov r0, r7
|
|
bl ItemZInit
|
|
b _022C2A5C
|
|
_022C2A54:
|
|
mov r0, r7
|
|
bl RemoveHolderForItemInBag
|
|
_022C2A5C:
|
|
add r8, r8, #1
|
|
cmp r8, #0x32
|
|
blt _022C2A08
|
|
bl RemoveEmptyItemsInBag
|
|
mov r8, #0
|
|
mov r7, #1
|
|
ldr r5, _022C311C ; =TEAM_MEMBER_TABLE_PTR
|
|
mov sl, r8
|
|
mov fp, r7
|
|
mov r4, #0x68
|
|
_022C2A84:
|
|
mul r1, r8, r4
|
|
ldr r0, [r5]
|
|
add r0, r0, #0x9000
|
|
ldr r0, [r0, #0x84c]
|
|
ldrb r2, [r0, r1]
|
|
add r1, r0, r1
|
|
tst r2, #1
|
|
movne r0, r7
|
|
moveq r0, sl
|
|
tst r0, #0xff
|
|
beq _022C2AE4
|
|
tst r2, #2
|
|
movne r0, fp
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _022C2AE4
|
|
ldrb r0, [r1, #0x3e]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _022C2AE4
|
|
add r0, r1, #0x3e
|
|
bl ItemZInit
|
|
_022C2AE4:
|
|
add r8, r8, #1
|
|
cmp r8, #4
|
|
blt _022C2A84
|
|
mov r0, #0
|
|
bl SetMoneyCarried
|
|
bl sub_0204AFD0
|
|
cmp r0, #0
|
|
beq _022C2C64
|
|
bl sub_0205F504
|
|
b _022C2C64
|
|
_022C2B0C:
|
|
cmp sb, #0xb
|
|
bne _022C2C64
|
|
add r0, sp, #8
|
|
mov r7, #0
|
|
bl sub_0204F244
|
|
bl GetGameMode
|
|
cmp r0, #2
|
|
beq _022C2B38
|
|
bl GetGameMode
|
|
cmp r0, #3
|
|
bne _022C2B60
|
|
_022C2B38:
|
|
bl sub_0204F050
|
|
mov r5, r0
|
|
bl GetDungeonMode
|
|
mov r4, r0
|
|
mov r0, r5
|
|
bl IsNoLossPenaltyDungeon
|
|
cmp r0, #0
|
|
cmpne r4, #2
|
|
cmpne r4, #3
|
|
movne r7, #1
|
|
_022C2B60:
|
|
cmp r7, #0
|
|
bne _022C2C54
|
|
ldrb r0, [sp, #0x64]
|
|
cmp r0, #0xb4
|
|
blo _022C2B7C
|
|
cmp r0, #0xbe
|
|
bls _022C2C54
|
|
_022C2B7C:
|
|
ldrsh r1, [sp, #0x62]
|
|
ldr r0, _022C3120 ; =0x00000265
|
|
cmp r1, r0
|
|
beq _022C2C54
|
|
mov r7, #0
|
|
ldr r5, _022C3118 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov fp, r7
|
|
mov sl, #1
|
|
mov r4, #6
|
|
_022C2BA0:
|
|
mul r8, r7, r4
|
|
ldr r0, [r5]
|
|
ldr r1, [r0, #0x384]
|
|
ldrb r0, [r1, r8]
|
|
add r2, r1, r8
|
|
tst r0, #1
|
|
movne r0, sl
|
|
moveq r0, fp
|
|
tst r0, #0xff
|
|
beq _022C2C34
|
|
ldrsh r0, [r2, #4]
|
|
cmp r0, #0xb7
|
|
bne _022C2BF0
|
|
ldrb r0, [r2, #1]
|
|
bl sub_020582E0
|
|
ldr r0, [r5]
|
|
ldr r0, [r0, #0x384]
|
|
add r0, r0, r8
|
|
bl ItemZInit
|
|
b _022C2C34
|
|
_022C2BF0:
|
|
add r0, r1, r8
|
|
bl IsLosableItem
|
|
cmp r0, #0
|
|
beq _022C2C34
|
|
mov r0, #0x64
|
|
bl RandInt
|
|
cmp r0, #0x32
|
|
bge _022C2C34
|
|
ldr r0, [r5]
|
|
ldr r0, [r0, #0x384]
|
|
add r0, r0, r8
|
|
ldrb r0, [r0, #1]
|
|
bl sub_020582E0
|
|
ldr r0, [r5]
|
|
ldr r0, [r0, #0x384]
|
|
add r0, r0, r8
|
|
bl ItemZInit
|
|
_022C2C34:
|
|
add r7, r7, #1
|
|
cmp r7, #0x32
|
|
blt _022C2BA0
|
|
bl RemoveEmptyItemsInBag
|
|
bl GetMoneyCarried
|
|
add r0, r0, r0, lsr #31
|
|
mov r0, r0, asr #1
|
|
bl SetMoneyCarried
|
|
_022C2C54:
|
|
bl sub_0204AFD0
|
|
cmp r0, #0
|
|
beq _022C2C64
|
|
bl sub_0205F504
|
|
_022C2C64:
|
|
mov r0, #0xd
|
|
bl LoadOverlay
|
|
mov r0, sb
|
|
bl GroundMainLoop
|
|
mov r5, r0
|
|
mov r0, #0xd
|
|
bl UnloadOverlay
|
|
cmp r5, #9
|
|
bne _022C2CB8
|
|
mov r8, #0xd
|
|
mov r7, #2
|
|
mov r4, r8
|
|
_022C2C94:
|
|
mov r0, r8
|
|
bl LoadOverlay
|
|
mov r0, r7
|
|
bl GroundMainLoop
|
|
mov r5, r0
|
|
mov r0, r4
|
|
bl UnloadOverlay
|
|
cmp r5, #9
|
|
beq _022C2C94
|
|
_022C2CB8:
|
|
cmp r5, #0xa
|
|
bne _022C2CD0
|
|
mov r0, #0x10
|
|
bl sub_02017ACC
|
|
mov r6, #1
|
|
b _022C310C
|
|
_022C2CD0:
|
|
cmp r5, #0xb
|
|
bne _022C2CEC
|
|
mov r0, #1
|
|
bl sub_02048C0C
|
|
mov r0, #0x10
|
|
bl sub_02017ACC
|
|
b _022C310C
|
|
_022C2CEC:
|
|
cmp r5, #4
|
|
moveq sb, #0xf
|
|
beq _022C2984
|
|
_022C2CF8:
|
|
add r0, sp, #0xf0
|
|
mov r1, #0x1ac
|
|
bl MemZero
|
|
mov r7, #0
|
|
strb r7, [sp, #0x101]
|
|
strb r7, [sp, #0xff]
|
|
add sl, sp, #0x10c
|
|
add fp, sp, #0xf0
|
|
mov r4, r7
|
|
_022C2D1C:
|
|
mov r0, #0x44
|
|
mul r8, r7, r0
|
|
mov r2, r0
|
|
mov r1, #0
|
|
add r0, sl, r8
|
|
bl MemsetSimple
|
|
add r0, fp, r8
|
|
strb r4, [r0, #0x1c]
|
|
add r7, r7, #1
|
|
strh r4, [r0, #0x20]
|
|
cmp r7, #2
|
|
blt _022C2D1C
|
|
cmp r5, #5
|
|
bne _022C2D74
|
|
bl sub_0204E7B8
|
|
add r0, sp, #0xf0
|
|
bl sub_0204E790
|
|
ldrsb r1, [sp, #0xfd]
|
|
ldrsh r2, [sp, #0xf2]
|
|
ldr r0, _022C3124 ; =ov10_022DC094
|
|
bl Debug_Print0
|
|
b _022C2EF0
|
|
_022C2D74:
|
|
cmp r5, #0
|
|
bne _022C2E48
|
|
bl sub_02048CB8
|
|
ldr r1, _022C3128 ; =0x000F1207
|
|
cmp r0, r1
|
|
bne _022C2E18
|
|
ldr r0, _022C312C ; =_020B0A5C
|
|
mov r2, #1
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
strb r2, [sp, #0x101]
|
|
strb r2, [sp, #0xf4]
|
|
strb r1, [sp, #0xfd]
|
|
ldrsh r0, [r0, #4]
|
|
cmp r0, #0
|
|
streqb r1, [sp, #0xff]
|
|
beq _022C2DC4
|
|
add r0, sp, #0x10c
|
|
strb r2, [sp, #0xff]
|
|
bl sub_0205BBFC
|
|
_022C2DC4:
|
|
add r0, sp, #2
|
|
bl sub_0205BC94
|
|
ldrsh r0, [sp, #6]
|
|
cmp r0, #0
|
|
bne _022C2DEC
|
|
mov r1, #0
|
|
add r0, sp, #0x194
|
|
strb r1, [sp, #0x100]
|
|
bl ItemZInit
|
|
b _022C2E20
|
|
_022C2DEC:
|
|
ldrh r3, [sp, #2]
|
|
add r0, sp, #0x100
|
|
ldrh r2, [sp, #4]
|
|
ldrh r1, [sp, #6]
|
|
mov r4, #1
|
|
strh r3, [r0, #0x94]
|
|
strb r4, [sp, #0x100]
|
|
strh r2, [r0, #0x96]
|
|
strh r1, [r0, #0x98]
|
|
strb r4, [sp, #0x194]
|
|
b _022C2E20
|
|
_022C2E18:
|
|
mov r5, #1
|
|
mov sb, #0xa
|
|
_022C2E20:
|
|
ldr r0, _022C312C ; =_020B0A5C
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
mov r2, #0x44
|
|
bl MemsetSimple
|
|
ldr r0, _022C312C ; =_020B0A5C
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
strh r1, [r0, #4]
|
|
b _022C2EF0
|
|
_022C2E48:
|
|
cmp r5, #2
|
|
bne _022C2EF0
|
|
bl sub_02048BFC
|
|
cmp r0, #2
|
|
bne _022C2E88
|
|
mov r1, #1
|
|
mov r0, #0
|
|
strb r1, [sp, #0xf4]
|
|
strb r0, [sp, #0x101]
|
|
bl sub_02048CB8
|
|
ldr r1, _022C3128 ; =0x000F1207
|
|
cmp r0, r1
|
|
moveq r5, #2
|
|
movne r5, #1
|
|
movne sb, #0xa
|
|
b _022C2E8C
|
|
_022C2E88:
|
|
mov r5, #3
|
|
_022C2E8C:
|
|
cmp r5, #3
|
|
bne _022C2EE4
|
|
bl sub_0204E6FC
|
|
and r0, r0, #0xff
|
|
cmp r0, #1
|
|
mov r5, #1
|
|
mov sb, #0xa
|
|
bhi _022C2EF0
|
|
bl sub_0204E770
|
|
cmp r0, #0xff
|
|
beq _022C2EF0
|
|
bl DoesNotSaveWhenEntering
|
|
cmp r0, #0
|
|
beq _022C2ED8
|
|
bl sub_02048BFC
|
|
cmp r0, #2
|
|
moveq r5, #3
|
|
moveq sb, #6
|
|
b _022C2EF0
|
|
_022C2ED8:
|
|
mov r5, #7
|
|
mov sb, #9
|
|
b _022C2EF0
|
|
_022C2EE4:
|
|
cmp r5, #1
|
|
moveq r5, #1
|
|
moveq sb, #0xa
|
|
_022C2EF0:
|
|
cmp r5, #5
|
|
cmpne r5, #0
|
|
beq _022C2F08
|
|
sub r0, r5, #2
|
|
cmp r0, #1
|
|
bhi _022C3100
|
|
_022C2F08:
|
|
cmp r5, #5
|
|
mov r4, #1
|
|
bne _022C3014
|
|
add r0, sp, #0
|
|
bl sub_0204F1B4
|
|
cmp r0, #0
|
|
beq _022C2F5C
|
|
ldrsb r0, [sp]
|
|
bl sub_0205B77C
|
|
ldrsb r1, [r0, #0xac]
|
|
cmp r1, #1
|
|
subgt r1, r1, #1
|
|
movle r1, #0
|
|
strb r1, [r0, #0xac]
|
|
mov r0, #0xf
|
|
bl LoadOverlay
|
|
mov r0, #8
|
|
bl ExplorersOfSkyMain
|
|
mov r0, #0xf
|
|
bl UnloadOverlay
|
|
b _022C2F84
|
|
_022C2F5C:
|
|
bl sub_0204E770
|
|
bl DoesNotSaveWhenEntering
|
|
cmp r0, #0
|
|
bne _022C2F84
|
|
mov r0, #0xf
|
|
bl LoadOverlay
|
|
mov r0, #7
|
|
bl ExplorersOfSkyMain
|
|
mov r0, #0xf
|
|
bl UnloadOverlay
|
|
_022C2F84:
|
|
mov r0, #0xb
|
|
bl Debug_GetDebugFlag
|
|
cmp r0, #0
|
|
beq _022C3014
|
|
mov r0, #0xf
|
|
bl LoadOverlay
|
|
mov r0, #0xd
|
|
bl ExplorersOfSkyMain
|
|
mov r5, r0
|
|
mov r0, #0xf
|
|
bl UnloadOverlay
|
|
cmp r5, #6
|
|
mov r4, #0
|
|
addls pc, pc, r5, lsl #2
|
|
b _022C2FFC
|
|
_022C2FC0: ; jump table
|
|
b _022C2FFC ; case 0
|
|
b _022C2FFC ; case 1
|
|
b _022C2FFC ; case 2
|
|
b _022C2FDC ; case 3
|
|
b _022C2FFC ; case 4
|
|
b _022C2FE4 ; case 5
|
|
b _022C2FF0 ; case 6
|
|
_022C2FDC:
|
|
mov r4, #1
|
|
b _022C3004
|
|
_022C2FE4:
|
|
mov r0, #2
|
|
str r0, [sp, #0x1a0]
|
|
b _022C3004
|
|
_022C2FF0:
|
|
mov r0, #1
|
|
str r0, [sp, #0x1a0]
|
|
b _022C3004
|
|
_022C2FFC:
|
|
mvn r0, #0
|
|
str r0, [sp, #0x1a0]
|
|
_022C3004:
|
|
cmp r4, #0
|
|
bne _022C3014
|
|
add r0, sp, #0x1b0
|
|
bl sub_0200C4CC
|
|
_022C3014:
|
|
cmp r4, #0
|
|
beq _022C304C
|
|
ldrsb r1, [sp, #0xfe]
|
|
ldr r0, _022C3130 ; =ov10_022DC0B8
|
|
bl Debug_Print0
|
|
mov r0, #0xe
|
|
bl LoadOverlay
|
|
add r0, sp, #0xf0
|
|
mov r1, #1
|
|
bl RunDungeonMode
|
|
mov r0, #0xe
|
|
bl UnloadOverlay
|
|
mov r0, #0
|
|
bl sub_0204E8EC
|
|
_022C304C:
|
|
ldr r1, [sp, #0x1a0]
|
|
ldr r0, _022C3134 ; =ov10_022DC0D4
|
|
bl Debug_Print0
|
|
ldr r1, [sp, #0x1a0]
|
|
cmp r1, #3
|
|
moveq r6, #1
|
|
beq _022C310C
|
|
mvn r0, #1
|
|
cmp r1, r0
|
|
moveq r6, #1
|
|
beq _022C310C
|
|
add r0, r1, #1
|
|
cmp r0, #6
|
|
addls pc, pc, r0, lsl #2
|
|
b _022C30D0
|
|
_022C3088: ; jump table
|
|
b _022C30C0 ; case 0
|
|
b _022C30D0 ; case 1
|
|
b _022C30A4 ; case 2
|
|
b _022C30B8 ; case 3
|
|
b _022C30D0 ; case 4
|
|
b _022C30AC ; case 5
|
|
b _022C30C8 ; case 6
|
|
_022C30A4:
|
|
mov sb, #8
|
|
b _022C30D4
|
|
_022C30AC:
|
|
mov sb, #8
|
|
bl IncrementNbFriendRescues
|
|
b _022C30D4
|
|
_022C30B8:
|
|
mov sb, #9
|
|
b _022C30D4
|
|
_022C30C0:
|
|
mov sb, #0xb
|
|
b _022C30D4
|
|
_022C30C8:
|
|
mov sb, #0xa
|
|
b _022C30D4
|
|
_022C30D0:
|
|
mov sb, #0xa
|
|
_022C30D4:
|
|
cmp sb, #8
|
|
cmpne sb, #9
|
|
cmpne sb, #0xb
|
|
bne _022C30F4
|
|
add r0, sp, #0x1b0
|
|
mov r1, #1
|
|
bl sub_0204F1F0
|
|
b _022C3100
|
|
_022C30F4:
|
|
mov r0, #0
|
|
mov r1, r0
|
|
bl sub_0204F1F0
|
|
_022C3100:
|
|
mov r0, #0
|
|
bl sub_0204E8EC
|
|
b _022C2984
|
|
_022C310C:
|
|
mov r0, r6
|
|
add sp, sp, #0x29c
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_022C3118: .word BAG_ITEMS_PTR_MIRROR
|
|
_022C311C: .word TEAM_MEMBER_TABLE_PTR
|
|
_022C3120: .word 0x00000265
|
|
_022C3124: .word ov10_022DC094
|
|
_022C3128: .word 0x000F1207
|
|
_022C312C: .word _020B0A5C
|
|
_022C3130: .word ov10_022DC0B8
|
|
_022C3134: .word ov10_022DC0D4
|
|
arm_func_end MainGame
|
|
|
|
arm_func_start ov10_022C3138
|
|
ov10_022C3138: ; 0x022C3138
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #0x44
|
|
mov r1, #6
|
|
bl MemAlloc
|
|
ldr r2, _022C31A0 ; =ov10_022DC218
|
|
mov r1, #0x44
|
|
str r0, [r2]
|
|
bl MemZero
|
|
ldr r0, _022C31A0 ; =ov10_022DC218
|
|
mov r2, #1
|
|
ldr r1, [r0]
|
|
mov r3, #0
|
|
strb r2, [r1, #0x38]
|
|
ldr r1, [r0]
|
|
mov r2, #0x14000
|
|
str r3, [r1, #0x40]
|
|
ldr r1, [r0]
|
|
str r3, [r1, #0x3c]
|
|
ldr r1, [r0]
|
|
str r2, [r1, #0x2c]
|
|
ldr r2, [r0]
|
|
ldr r1, [r2, #0x2c]
|
|
str r1, [r2, #0x30]
|
|
ldr r0, [r0]
|
|
str r3, [r0, #0x34]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022C31A0: .word ov10_022DC218
|
|
arm_func_end ov10_022C3138
|
|
|
|
arm_func_start ov10_022C31A4
|
|
ov10_022C31A4: ; 0x022C31A4
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _022C3200 ; =ov10_022DC218
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
ldrneb r1, [r0, #0x38]
|
|
cmpne r1, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
ldr r2, _022C3204 ; =0x00000401
|
|
mov r1, #4
|
|
mov r3, #0xf
|
|
bl LoadWteFromFileDirectory
|
|
ldr r0, _022C3200 ; =ov10_022DC218
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
mov r3, r1
|
|
ldr r0, [r0, #4]
|
|
mov r2, #0x1d
|
|
bl ProcessWte
|
|
ldr r0, _022C3200 ; =ov10_022DC218
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
strb r1, [r0, #0x38]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022C3200: .word ov10_022DC218
|
|
#ifdef JAPAN
|
|
_022C3204: .word 0x000003F5
|
|
#else
|
|
_022C3204: .word 0x00000401
|
|
#endif
|
|
arm_func_end ov10_022C31A4
|
|
|
|
arm_func_start ov10_022C3208
|
|
ov10_022C3208: ; 0x022C3208
|
|
stmdb sp!, {r4, lr}
|
|
ldr ip, _022C3288 ; =ov10_022DC218
|
|
ldr lr, [sp, #8]
|
|
ldr r4, [ip]
|
|
mov lr, lr, lsl #8
|
|
str lr, [r4, #8]
|
|
ldr r4, [ip]
|
|
mov lr, #0
|
|
str lr, [r4, #0xc]
|
|
ldr lr, [r1]
|
|
ldr r4, [ip]
|
|
ldr r1, [r1, #4]
|
|
str lr, [r4, #0x10]
|
|
str r1, [r4, #0x14]
|
|
ldr r1, [r0, #4]
|
|
ldr r0, [r0]
|
|
str r0, [r4, #0x20]
|
|
str r1, [r4, #0x24]
|
|
ldr r0, [r4, #0x20]
|
|
str r0, [r4, #0x18]
|
|
str r1, [r4, #0x1c]
|
|
str r3, [r4, #0x28]
|
|
ldr r0, [ip]
|
|
str r2, [r0, #0x2c]
|
|
ldr r1, [ip]
|
|
ldr r0, [r1, #0x2c]
|
|
str r0, [r1, #0x30]
|
|
ldr r1, [ip]
|
|
ldr r0, [r1, #0x34]
|
|
add r0, r0, #1
|
|
str r0, [r1, #0x34]
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_022C3288: .word ov10_022DC218
|
|
arm_func_end ov10_022C3208
|
|
|
|
arm_func_start ov10_022C328C
|
|
ov10_022C328C: ; 0x022C328C
|
|
stmdb sp!, {lr}
|
|
sub sp, sp, #0xc
|
|
ldr ip, _022C331C ; =ov10_022DC0F0
|
|
ldr r3, _022C3320 ; =ov10_022DC218
|
|
ldr lr, [ip, #8]
|
|
ldr ip, [ip, #4]
|
|
str lr, [sp, #8]
|
|
str ip, [sp, #4]
|
|
ldr ip, [r0]
|
|
ldr r3, [r3]
|
|
mov ip, ip, lsl #8
|
|
str ip, [sp, #4]
|
|
ldr r0, [r0, #4]
|
|
mov lr, r1
|
|
mov r1, r0, lsl #8
|
|
str r1, [sp, #8]
|
|
ldr r0, [r3, #0x34]
|
|
cmp r0, #0
|
|
streq ip, [r3, #0x20]
|
|
streq r1, [r3, #0x24]
|
|
ldr r0, _022C3320 ; =ov10_022DC218
|
|
add r1, sp, #4
|
|
ldr r0, [r0]
|
|
mov r3, lr, lsl #8
|
|
str r2, [sp]
|
|
ldr r2, [r0, #0x30]
|
|
add r0, r0, #0x20
|
|
bl ov10_022C3208
|
|
ldr r0, _022C3320 ; =ov10_022DC218
|
|
mov r2, #1
|
|
ldr r1, [r0]
|
|
str r2, [r1, #0x40]
|
|
ldr r0, [r0]
|
|
str r2, [r0, #0x3c]
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {pc}
|
|
.align 2, 0
|
|
_022C331C: .word ov10_022DC0F0
|
|
_022C3320: .word ov10_022DC218
|
|
arm_func_end ov10_022C328C
|
|
|
|
arm_func_start ov10_022C3324
|
|
ov10_022C3324: ; 0x022C3324
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _022C3374 ; =ov10_022DC218
|
|
mov r3, #0x14000
|
|
ldr r1, [r1]
|
|
str r0, [sp]
|
|
ldr r2, [r1, #0x30]
|
|
add r0, r1, #0x20
|
|
add r1, r1, #0x20
|
|
bl ov10_022C3208
|
|
ldr r0, _022C3374 ; =ov10_022DC218
|
|
mov r2, #2
|
|
ldr r1, [r0]
|
|
mov r3, #1
|
|
str r2, [r1, #0x40]
|
|
ldr r2, [r0]
|
|
mov r1, #0
|
|
str r3, [r2, #0x3c]
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x34]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022C3374: .word ov10_022DC218
|
|
arm_func_end ov10_022C3324
|
|
|
|
arm_func_start ov10_022C3378
|
|
ov10_022C3378: ; 0x022C3378
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
sub sp, sp, #8
|
|
ldr r0, _022C34EC ; =ov10_022DC218
|
|
ldr r6, [r0]
|
|
ldr r0, [r6, #0x3c]
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
beq _022C34E4
|
|
ldr r0, [r6, #8]
|
|
ldr r7, [r6, #0xc]
|
|
mov r4, #1
|
|
cmp r0, r7
|
|
bne _022C33EC
|
|
ldr r0, [r6, #0x40]
|
|
cmp r0, #2
|
|
moveq r0, #0
|
|
streq r0, [r6, #0x3c]
|
|
moveq r4, #3
|
|
beq _022C33CC
|
|
cmp r0, #1
|
|
moveq r4, #2
|
|
_022C33CC:
|
|
ldr r0, _022C34EC ; =ov10_022DC218
|
|
ldr r2, [r0]
|
|
ldr r1, [r2, #0x10]
|
|
ldr r0, [r2, #0x14]
|
|
str r1, [sp]
|
|
str r0, [sp, #4]
|
|
ldr r0, [r2, #0x28]
|
|
b _022C34C4
|
|
_022C33EC:
|
|
sub r5, r0, r7
|
|
ldr r1, [r6, #0x18]
|
|
mov r0, r5
|
|
bl MultiplyByFixedPoint
|
|
mov r8, r0
|
|
ldr r1, [r6, #0x10]
|
|
mov r0, r7
|
|
bl MultiplyByFixedPoint
|
|
ldr r1, _022C34EC ; =ov10_022DC218
|
|
add r0, r8, r0
|
|
ldr r1, [r1]
|
|
str r0, [sp]
|
|
ldr r1, [r1, #8]
|
|
bl sub_02001AB0
|
|
ldr r1, _022C34EC ; =ov10_022DC218
|
|
str r0, [sp]
|
|
ldr r1, [r1]
|
|
mov r0, r5
|
|
ldr r1, [r1, #0x1c]
|
|
bl MultiplyByFixedPoint
|
|
ldr r1, _022C34EC ; =ov10_022DC218
|
|
mov r6, r0
|
|
ldr r1, [r1]
|
|
mov r0, r7
|
|
ldr r1, [r1, #0x14]
|
|
bl MultiplyByFixedPoint
|
|
add r0, r6, r0
|
|
str r0, [sp, #4]
|
|
ldr r1, _022C34EC ; =ov10_022DC218
|
|
ldr r1, [r1]
|
|
ldr r1, [r1, #8]
|
|
bl sub_02001AB0
|
|
str r0, [sp, #4]
|
|
mov r0, r5
|
|
ldr r1, _022C34EC ; =ov10_022DC218
|
|
ldr r1, [r1]
|
|
ldr r1, [r1, #0x2c]
|
|
bl MultiplyByFixedPoint
|
|
mov r5, r0
|
|
mov r0, r7
|
|
ldr r1, _022C34EC ; =ov10_022DC218
|
|
ldr r1, [r1]
|
|
ldr r1, [r1, #0x28]
|
|
bl MultiplyByFixedPoint
|
|
add r0, r5, r0
|
|
ldr r1, _022C34EC ; =ov10_022DC218
|
|
ldr r1, [r1]
|
|
ldr r1, [r1, #8]
|
|
bl sub_02001AB0
|
|
ldr r1, _022C34EC ; =ov10_022DC218
|
|
ldr r2, [r1]
|
|
ldr r1, [r2, #0xc]
|
|
add r1, r1, #0x100
|
|
str r1, [r2, #0xc]
|
|
_022C34C4:
|
|
ldr r1, _022C34EC ; =ov10_022DC218
|
|
ldr r2, [sp]
|
|
ldr r3, [r1]
|
|
ldr r1, [sp, #4]
|
|
str r2, [r3, #0x20]
|
|
str r1, [r3, #0x24]
|
|
str r0, [r3, #0x30]
|
|
mov r0, r4
|
|
_022C34E4:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_022C34EC: .word ov10_022DC218
|
|
arm_func_end ov10_022C3378
|
|
|
|
arm_func_start ov10_022C34F0
|
|
ov10_022C34F0: ; 0x022C34F0
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x80
|
|
ldr r0, _022C388C ; =ov10_022DC218
|
|
ldr r1, [r0]
|
|
cmp r1, #0
|
|
beq _022C3884
|
|
ldr r0, [r1, #0x3c]
|
|
cmp r0, #0
|
|
beq _022C3520
|
|
ldr r0, [r1, #0x40]
|
|
cmp r0, #2
|
|
beq _022C352C
|
|
_022C3520:
|
|
ldr r0, [r1, #0x40]
|
|
cmp r0, #1
|
|
bne _022C3884
|
|
_022C352C:
|
|
ldr r0, _022C388C ; =ov10_022DC218
|
|
mov r1, #0x3000
|
|
ldr r4, [r0]
|
|
ldr r2, [r4, #0x20]
|
|
ldr r0, [r4, #0x24]
|
|
mov r3, r2, asr #8
|
|
mov r2, r0, asr #8
|
|
ldr r0, [r4, #0x30]
|
|
mov r4, r3, lsl #0x10
|
|
mov r5, r2, lsl #0x10
|
|
bl sub_02001AB0
|
|
mov r1, r0
|
|
mov r0, #0x3000
|
|
bl MultiplyByFixedPoint
|
|
mov r2, #0x140
|
|
mov r1, r0, asr #7
|
|
add r0, r0, r1, lsr #24
|
|
mov r1, r0, asr #8
|
|
rsb r0, r1, #0
|
|
mov r0, r0, lsl #0x10
|
|
mov r3, r0, asr #0x10
|
|
mov r0, r1, lsl #0x10
|
|
mov r1, r0, asr #0x10
|
|
mov r0, r2
|
|
rsb r0, r0, #0
|
|
strh r0, [sp, #0x10]
|
|
strh r0, [sp, #0x12]
|
|
strh r2, [sp, #0x14]
|
|
strh r0, [sp, #0x16]
|
|
strh r0, [sp, #0x18]
|
|
strh r2, [sp, #0x1a]
|
|
strh r2, [sp, #0x1c]
|
|
strh r2, [sp, #0x1e]
|
|
strh r0, [sp, #0x60]
|
|
strh r0, [sp, #0x68]
|
|
strh r3, [sp, #0x62]
|
|
strh r3, [sp, #0x64]
|
|
strh r3, [sp, #0x66]
|
|
strh r1, [sp, #0x6a]
|
|
strh r3, [sp, #0x6c]
|
|
strh r1, [sp, #0x6e]
|
|
strh r1, [sp, #0x70]
|
|
strh r3, [sp, #0x72]
|
|
strh r2, [sp, #0x74]
|
|
strh r2, [sp, #0x7c]
|
|
strh r3, [sp, #0x76]
|
|
strh r1, [sp, #0x78]
|
|
strh r1, [sp, #0x7a]
|
|
strh r1, [sp, #0x7e]
|
|
mov r2, #0
|
|
add r0, sp, #0x10
|
|
add r6, sp, #0x18
|
|
_022C35FC:
|
|
mov r8, r2, lsl #2
|
|
ldrsh r7, [r0, r8]
|
|
ldrsh r3, [r6, r8]
|
|
add r1, r0, r2, lsl #2
|
|
add r7, r7, r4, asr #16
|
|
add r3, r3, r4, asr #16
|
|
strh r7, [r0, r8]
|
|
add r7, r6, r2, lsl #2
|
|
strh r3, [r6, r8]
|
|
ldrsh r8, [r1, #2]
|
|
ldrsh r3, [r7, #2]
|
|
add r2, r2, #1
|
|
add r8, r8, r5, asr #16
|
|
add r3, r3, r5, asr #16
|
|
strh r8, [r1, #2]
|
|
strh r3, [r7, #2]
|
|
cmp r2, #2
|
|
blt _022C35FC
|
|
mov r2, #0
|
|
add r0, sp, #0x60
|
|
add r6, sp, #0x70
|
|
_022C3650:
|
|
mov r8, r2, lsl #2
|
|
ldrsh r7, [r0, r8]
|
|
ldrsh r3, [r6, r8]
|
|
add r1, r0, r2, lsl #2
|
|
add r7, r7, r4, asr #16
|
|
add r3, r3, r4, asr #16
|
|
strh r7, [r0, r8]
|
|
add r7, r6, r2, lsl #2
|
|
strh r3, [r6, r8]
|
|
ldrsh r8, [r1, #2]
|
|
ldrsh r3, [r7, #2]
|
|
add r2, r2, #1
|
|
add r8, r8, r5, asr #16
|
|
add r3, r3, r5, asr #16
|
|
strh r8, [r1, #2]
|
|
strh r3, [r7, #2]
|
|
cmp r2, #4
|
|
blt _022C3650
|
|
add r0, sp, #0x20
|
|
bl InitRender3dElement64
|
|
mov r0, #5
|
|
strb r0, [sp, #0x5c]
|
|
mov r2, #0
|
|
ldr r0, _022C388C ; =ov10_022DC218
|
|
str r2, [sp]
|
|
ldr r1, [r0]
|
|
add r0, sp, #0x20
|
|
ldr r1, [r1, #4]
|
|
mov r3, #0x1d
|
|
bl sub_0201E774
|
|
mov r7, #0
|
|
mov r6, #4
|
|
ldrsh r0, [sp, #0x12]
|
|
ldrsh r4, [sp, #0x10]
|
|
ldrsh r3, [sp, #0x14]
|
|
strh r0, [sp, #0x22]
|
|
mov r0, #0xff
|
|
ldrsh r2, [sp, #0x16]
|
|
ldrsh r1, [sp, #0x60]
|
|
ldrsh r5, [sp, #0x62]
|
|
ldrsh fp, [sp, #0x74]
|
|
strh r4, [sp, #0x20]
|
|
ldrsh r4, [sp, #0x76]
|
|
strb r0, [sp, #0x4f]
|
|
mov r0, #0x30
|
|
strh r0, [sp, #0x4a]
|
|
mov r0, #0x22
|
|
strb r0, [sp, #0x5e]
|
|
add r0, sp, #0x20
|
|
strh r3, [sp, #0x24]
|
|
strh r7, [sp, #0x36]
|
|
strh r7, [sp, #0x38]
|
|
strh r6, [sp, #0x3a]
|
|
strh r6, [sp, #0x3c]
|
|
strh r2, [sp, #0x26]
|
|
strh r1, [sp, #0x28]
|
|
strh r5, [sp, #0x2a]
|
|
strh fp, [sp, #0x2c]
|
|
strh r4, [sp, #0x2e]
|
|
bl ov10_022C38D4
|
|
add r0, sp, #0x20
|
|
bl sub_0201F2A0
|
|
ldrsh r6, [sp, #0x68]
|
|
ldrsh r7, [sp, #0x6a]
|
|
ldrsh r0, [sp, #0x7c]
|
|
str r0, [sp, #0xc]
|
|
ldrsh r0, [sp, #0x7e]
|
|
str r0, [sp, #8]
|
|
strh r6, [sp, #0x20]
|
|
strh r7, [sp, #0x22]
|
|
ldr r0, [sp, #0xc]
|
|
ldrsh r1, [sp, #0x1a]
|
|
strh r0, [sp, #0x24]
|
|
ldr r0, [sp, #8]
|
|
ldrsh r2, [sp, #0x18]
|
|
strh r0, [sp, #0x26]
|
|
ldrsh r0, [sp, #0x1c]
|
|
strh r1, [sp, #0x2a]
|
|
ldrsh r1, [sp, #0x1e]
|
|
strh r0, [sp, #0x2c]
|
|
add r0, sp, #0x20
|
|
strh r2, [sp, #0x28]
|
|
strh r1, [sp, #0x2e]
|
|
bl ov10_022C38D4
|
|
add r0, sp, #0x20
|
|
bl sub_0201F2A0
|
|
ldrsh r0, [sp, #0x60]
|
|
strh r5, [sp, #0x22]
|
|
strh r6, [sp, #0x28]
|
|
ldrsh r5, [sp, #0x64]
|
|
ldrsh r6, [sp, #0x66]
|
|
strh r0, [sp, #0x20]
|
|
ldrsh r0, [sp, #0x6c]
|
|
strh r7, [sp, #0x2a]
|
|
strh r5, [sp, #0x24]
|
|
strh r6, [sp, #0x26]
|
|
str r0, [sp, #4]
|
|
ldr r1, [sp, #4]
|
|
ldrsh r8, [sp, #0x6e]
|
|
add r0, sp, #0x20
|
|
strh r1, [sp, #0x2c]
|
|
strh r8, [sp, #0x2e]
|
|
bl ov10_022C38D4
|
|
add r0, sp, #0x20
|
|
bl sub_0201F2A0
|
|
ldrsh r7, [sp, #0x72]
|
|
ldrsh sb, [sp, #0x78]
|
|
ldrsh sl, [sp, #0x7a]
|
|
ldrsh r1, [sp, #0x70]
|
|
strh r7, [sp, #0x22]
|
|
strh fp, [sp, #0x24]
|
|
strh r4, [sp, #0x26]
|
|
strh sb, [sp, #0x28]
|
|
strh sl, [sp, #0x2a]
|
|
strh r1, [sp, #0x20]
|
|
ldr r1, [sp, #0xc]
|
|
add r0, sp, #0x20
|
|
strh r1, [sp, #0x2c]
|
|
ldr r1, [sp, #8]
|
|
strh r1, [sp, #0x2e]
|
|
bl ov10_022C38D4
|
|
add r0, sp, #0x20
|
|
bl sub_0201F2A0
|
|
ldrsh r1, [sp, #0x70]
|
|
strh r5, [sp, #0x20]
|
|
strh r6, [sp, #0x22]
|
|
strh r7, [sp, #0x26]
|
|
strh r1, [sp, #0x24]
|
|
ldr r1, [sp, #4]
|
|
mov r3, #0
|
|
mov r2, #0x60
|
|
add r0, sp, #0x20
|
|
strh r1, [sp, #0x28]
|
|
strh r8, [sp, #0x2a]
|
|
strh sb, [sp, #0x2c]
|
|
strh sl, [sp, #0x2e]
|
|
strh r3, [sp, #0x36]
|
|
strh r3, [sp, #0x38]
|
|
strh r2, [sp, #0x3a]
|
|
strh r2, [sp, #0x3c]
|
|
bl sub_0201F2A0
|
|
_022C3884:
|
|
add sp, sp, #0x80
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_022C388C: .word ov10_022DC218
|
|
arm_func_end ov10_022C34F0
|
|
|
|
arm_func_start ov10_022C3890
|
|
ov10_022C3890: ; 0x022C3890
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _022C38D0 ; =ov10_022DC218
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
ldr r1, [r0]
|
|
cmp r1, #0
|
|
beq _022C38B4
|
|
bl UnloadWte
|
|
_022C38B4:
|
|
ldr r0, _022C38D0 ; =ov10_022DC218
|
|
ldr r0, [r0]
|
|
bl MemFree
|
|
ldr r0, _022C38D0 ; =ov10_022DC218
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022C38D0: .word ov10_022DC218
|
|
arm_func_end ov10_022C3890
|
|
|
|
arm_func_start ov10_022C38D4
|
|
ov10_022C38D4: ; 0x022C38D4
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, #0
|
|
mvn lr, #0xf
|
|
mov ip, #0x110
|
|
mov r1, #0xd0
|
|
_022C38E8:
|
|
mov r3, r4, lsl #2
|
|
ldrsh r2, [r0, r3]
|
|
cmp r2, lr
|
|
strlth lr, [r0, r3]
|
|
mov r3, r4, lsl #2
|
|
ldrsh r2, [r0, r3]
|
|
cmp r2, #0x110
|
|
strgth ip, [r0, r3]
|
|
add r3, r0, r4, lsl #2
|
|
ldrsh r2, [r3, #2]
|
|
cmp r2, lr
|
|
strlth lr, [r3, #2]
|
|
add r3, r0, r4, lsl #2
|
|
ldrsh r2, [r3, #2]
|
|
add r4, r4, #1
|
|
cmp r2, #0xd0
|
|
strgth r1, [r3, #2]
|
|
cmp r4, #4
|
|
blt _022C38E8
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end ov10_022C38D4
|
|
|
|
arm_func_start ov10_022C3938
|
|
ov10_022C3938: ; 0x022C3938
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x6c
|
|
ldr r4, _022C3E80 ; =ov10_022DC0FC
|
|
str r1, [sp, #0x10]
|
|
ldr r5, [r4, #0xc]
|
|
ldr r6, [r4, #8]
|
|
str r3, [sp, #0x18]
|
|
ldr r3, [sp, #0x90]
|
|
str r0, [sp, #0xc]
|
|
str r2, [sp, #0x14]
|
|
mov r4, #0
|
|
str r4, [sp, #0x60]
|
|
ldr r1, _022C3E84 ; =ov10_022DC114
|
|
add r0, sp, #0x64
|
|
str r6, [sp, #0x64]
|
|
mov r2, #6
|
|
str r5, [sp, #0x68]
|
|
str r3, [sp, #0x90]
|
|
ldr r4, [sp, #0x94]
|
|
ldr sl, [sp, #0x9c]
|
|
ldr sb, [sp, #0xa0]
|
|
ldr r8, [sp, #0xa4]
|
|
bl LoadFileFromRom
|
|
ldr r1, [sp, #0x64]
|
|
add r0, sp, #0x60
|
|
bl HandleSir0Translation
|
|
ldrb r5, [r4]
|
|
ldr r6, [sp, #0x60]
|
|
cmp r5, #0xb4
|
|
movhs r5, #0
|
|
mov r0, r5
|
|
bl GetDungeonGroup
|
|
ldrb r3, [r4, #1]
|
|
mov r4, r0
|
|
add r0, sp, #0x5d
|
|
add r1, sp, #0x5c
|
|
mov r2, r5
|
|
bl ov10_022C42F4
|
|
ldrb r2, [sp, #0x5d]
|
|
mov r1, r5
|
|
ldmia r6, {r0, r3}
|
|
ldr r5, [r0, r4, lsl #2]
|
|
mov r0, r2, lsl #2
|
|
ldrsh r0, [r5, r0]
|
|
add r7, r5, r2, lsl #2
|
|
ldrb fp, [sp, #0x5c]
|
|
ldrb r5, [r3, r0, lsl #2]
|
|
ldr r0, _022C3E88 ; =ov10_022DC130
|
|
mov r3, r4
|
|
str fp, [sp]
|
|
str r7, [sp, #4]
|
|
str r5, [sp, #8]
|
|
bl Debug_Print0
|
|
ldrb r0, [sp, #0x5c]
|
|
cmp r0, #1
|
|
bls _022C3A64
|
|
ldrb r0, [sp, #0x5d]
|
|
b _022C3A48
|
|
_022C3A20:
|
|
and r0, r0, #0xff
|
|
sub r0, r0, #1
|
|
strb r0, [sp, #0x5d]
|
|
ldr r2, [r6]
|
|
and r1, r0, #0xff
|
|
ldr r2, [r2, r4, lsl #2]
|
|
mov r1, r1, lsl #2
|
|
ldrsh r1, [r2, r1]
|
|
ldr r2, [r6, #4]
|
|
ldrb r5, [r2, r1, lsl #2]
|
|
_022C3A48:
|
|
and r1, r0, #0xff
|
|
cmp r1, #1
|
|
bls _022C3A64
|
|
cmp r5, #0xaa
|
|
blt _022C3A64
|
|
cmp r5, #0xc7
|
|
blt _022C3A20
|
|
_022C3A64:
|
|
add r0, sp, #0x64
|
|
bl UnloadFile
|
|
mov r0, #0x930
|
|
mov r1, #0x10
|
|
bl MemAlloc
|
|
str r0, [sp, #0x38]
|
|
mov r1, r5, lsl #0x10
|
|
ldr r0, [sp, #0x14]
|
|
mov r1, r1, asr #0x10
|
|
mov r2, #0x10
|
|
bl ov10_022C2588
|
|
mov r1, r5, lsl #0x10
|
|
ldr r0, [sp, #0xc]
|
|
mov r1, r1, asr #0x10
|
|
mov r2, #0x10
|
|
bl ov10_022C25EC
|
|
mov r1, r5, lsl #0x10
|
|
ldr r0, [sp, #0x18]
|
|
mov r1, r1, asr #0x10
|
|
mov r2, #0x10
|
|
bl InitTilesetBuffer
|
|
mov r1, r5, lsl #0x10
|
|
ldr r0, [sp, #0x38]
|
|
mov r1, r1, asr #0x10
|
|
mov r2, #0x10
|
|
bl ov10_022C2720
|
|
mov r6, #0
|
|
b _022C3E54
|
|
_022C3AD4:
|
|
mov r0, r5
|
|
bl TilesetSecondaryTerrainIsChasm
|
|
cmp r0, #0
|
|
sub r0, r6, #1
|
|
str r0, [sp, #0x20]
|
|
mul r1, r6, sl
|
|
ldr r0, [sp, #0x90]
|
|
movne r7, #3
|
|
add r0, r0, r1, lsl #1
|
|
str r0, [sp, #0x58]
|
|
ldr r0, [sp, #0x38]
|
|
mov r4, #0
|
|
add r0, r0, r6, lsl #6
|
|
str r0, [sp, #0x40]
|
|
mov r0, #0xff
|
|
bic r0, r0, #1
|
|
str r0, [sp, #0x48]
|
|
mov r0, #0xff
|
|
bic r0, r0, #1
|
|
str r0, [sp, #0x4c]
|
|
mov r0, #0xff
|
|
bic r0, r0, #1
|
|
str r0, [sp, #0x50]
|
|
mov r0, r4
|
|
orr r0, r0, #1
|
|
moveq r7, #0
|
|
str r0, [sp, #0x54]
|
|
b _022C3E48
|
|
_022C3B44:
|
|
str r8, [sp]
|
|
mov r0, r4
|
|
mov r1, r6
|
|
mov r2, sl
|
|
mov r3, sb
|
|
str r7, [sp, #4]
|
|
bl ov10_022C434C
|
|
str r0, [sp, #0x3c]
|
|
cmp r5, #0xaa
|
|
blt _022C3B88
|
|
cmp r4, #0x20
|
|
cmplt r6, #0x20
|
|
ldrlt r0, [sp, #0x40]
|
|
movlt r1, r4, lsl #1
|
|
ldrlth r2, [r1, r0]
|
|
movge r2, r7
|
|
b _022C3E38
|
|
_022C3B88:
|
|
str r8, [sp]
|
|
str r7, [sp, #4]
|
|
mov r0, r4
|
|
add r1, r6, #1
|
|
mov r2, sl
|
|
mov r3, sb
|
|
bl ov10_022C434C
|
|
str r8, [sp]
|
|
str r0, [sp, #0x44]
|
|
str r7, [sp, #4]
|
|
add r0, r4, #1
|
|
add r1, r6, #1
|
|
mov r2, sl
|
|
mov r3, sb
|
|
bl ov10_022C434C
|
|
str r8, [sp]
|
|
str r0, [sp, #0x34]
|
|
add r0, r4, #1
|
|
mov r1, r6
|
|
mov r2, sl
|
|
mov r3, sb
|
|
str r7, [sp, #4]
|
|
bl ov10_022C434C
|
|
str r8, [sp]
|
|
str r0, [sp, #0x30]
|
|
ldr r1, [sp, #0x20]
|
|
add r0, r4, #1
|
|
mov r2, sl
|
|
mov r3, sb
|
|
str r7, [sp, #4]
|
|
bl ov10_022C434C
|
|
str r8, [sp]
|
|
str r0, [sp, #0x2c]
|
|
ldr r1, [sp, #0x20]
|
|
mov r0, r4
|
|
mov r2, sl
|
|
mov r3, sb
|
|
str r7, [sp, #4]
|
|
bl ov10_022C434C
|
|
str r0, [sp, #0x28]
|
|
sub r0, r4, #1
|
|
str r8, [sp]
|
|
ldr r1, [sp, #0x20]
|
|
str r0, [sp, #0x1c]
|
|
mov r2, sl
|
|
mov r3, sb
|
|
str r7, [sp, #4]
|
|
bl ov10_022C434C
|
|
str r0, [sp, #0x24]
|
|
str r8, [sp]
|
|
ldr r0, [sp, #0x1c]
|
|
mov r1, r6
|
|
mov r2, sl
|
|
mov r3, sb
|
|
str r7, [sp, #4]
|
|
bl ov10_022C434C
|
|
mov fp, r0
|
|
str r8, [sp]
|
|
ldr r0, [sp, #0x1c]
|
|
add r1, r6, #1
|
|
mov r2, sl
|
|
mov r3, sb
|
|
str r7, [sp, #4]
|
|
bl ov10_022C434C
|
|
ldr r1, [sp, #0x3c]
|
|
cmp r1, #1
|
|
bne _022C3CF8
|
|
ldr r1, [sp, #0x44]
|
|
ldr r2, [sp, #0x34]
|
|
cmp r1, #0
|
|
mov r1, #0xff
|
|
ldreq r1, [sp, #0x48]
|
|
cmp r2, #0
|
|
ldr r2, [sp, #0x30]
|
|
biceq r1, r1, #2
|
|
cmp r2, #0
|
|
ldr r2, [sp, #0x2c]
|
|
biceq r1, r1, #4
|
|
cmp r2, #0
|
|
ldr r2, [sp, #0x28]
|
|
biceq r1, r1, #8
|
|
cmp r2, #0
|
|
ldr r2, [sp, #0x24]
|
|
biceq r1, r1, #0x10
|
|
cmp r2, #0
|
|
biceq r1, r1, #0x20
|
|
cmp fp, #0
|
|
biceq r1, r1, #0x40
|
|
cmp r0, #0
|
|
biceq r1, r1, #0x80
|
|
orr r1, r1, #0x200
|
|
b _022C3E2C
|
|
_022C3CF8:
|
|
cmp r1, #2
|
|
bne _022C3D64
|
|
ldr r1, [sp, #0x44]
|
|
ldr r2, [sp, #0x34]
|
|
cmp r1, #2
|
|
mov r1, #0xff
|
|
ldrne r1, [sp, #0x4c]
|
|
cmp r2, #2
|
|
ldr r2, [sp, #0x30]
|
|
bicne r1, r1, #2
|
|
cmp r2, #2
|
|
ldr r2, [sp, #0x2c]
|
|
bicne r1, r1, #4
|
|
cmp r2, #2
|
|
ldr r2, [sp, #0x28]
|
|
bicne r1, r1, #8
|
|
cmp r2, #2
|
|
ldr r2, [sp, #0x24]
|
|
bicne r1, r1, #0x10
|
|
cmp r2, #2
|
|
bicne r1, r1, #0x20
|
|
cmp fp, #2
|
|
bicne r1, r1, #0x40
|
|
cmp r0, #2
|
|
bicne r1, r1, #0x80
|
|
orr r1, r1, #0x100
|
|
b _022C3E2C
|
|
_022C3D64:
|
|
cmp r1, #3
|
|
bne _022C3DD0
|
|
ldr r1, [sp, #0x44]
|
|
ldr r2, [sp, #0x34]
|
|
cmp r1, #3
|
|
mov r1, #0xff
|
|
ldrne r1, [sp, #0x50]
|
|
cmp r2, #3
|
|
ldr r2, [sp, #0x30]
|
|
bicne r1, r1, #2
|
|
cmp r2, #3
|
|
ldr r2, [sp, #0x2c]
|
|
bicne r1, r1, #4
|
|
cmp r2, #3
|
|
ldr r2, [sp, #0x28]
|
|
bicne r1, r1, #8
|
|
cmp r2, #3
|
|
ldr r2, [sp, #0x24]
|
|
bicne r1, r1, #0x10
|
|
cmp r2, #3
|
|
bicne r1, r1, #0x20
|
|
cmp fp, #3
|
|
bicne r1, r1, #0x40
|
|
cmp r0, #3
|
|
bicne r1, r1, #0x80
|
|
orr r1, r1, #0x100
|
|
b _022C3E2C
|
|
_022C3DD0:
|
|
ldr r1, [sp, #0x44]
|
|
ldr r2, [sp, #0x34]
|
|
cmp r1, #0
|
|
mov r1, #0
|
|
ldreq r1, [sp, #0x54]
|
|
cmp r2, #0
|
|
ldr r2, [sp, #0x30]
|
|
orreq r1, r1, #2
|
|
cmp r2, #0
|
|
ldr r2, [sp, #0x2c]
|
|
orreq r1, r1, #4
|
|
cmp r2, #0
|
|
ldr r2, [sp, #0x28]
|
|
orreq r1, r1, #8
|
|
cmp r2, #0
|
|
ldr r2, [sp, #0x24]
|
|
orreq r1, r1, #0x10
|
|
cmp r2, #0
|
|
orreq r1, r1, #0x20
|
|
cmp fp, #0
|
|
orreq r1, r1, #0x40
|
|
cmp r0, #0
|
|
orreq r1, r1, #0x80
|
|
_022C3E2C:
|
|
ldr r0, [sp, #0x38]
|
|
add r1, r1, r1, lsl #1
|
|
ldrb r2, [r0, r1]
|
|
_022C3E38:
|
|
ldr r0, [sp, #0x58]
|
|
mov r1, r4, lsl #1
|
|
strh r2, [r1, r0]
|
|
add r4, r4, #1
|
|
_022C3E48:
|
|
cmp r4, sl
|
|
blt _022C3B44
|
|
add r6, r6, #1
|
|
_022C3E54:
|
|
cmp r6, sb
|
|
blt _022C3AD4
|
|
ldr r0, [sp, #0x38]
|
|
bl MemFree
|
|
mov r1, r5, lsl #0x10
|
|
ldr r0, [sp, #0x10]
|
|
mov r1, r1, asr #0x10
|
|
mov r2, #0x10
|
|
bl ov10_022C2654
|
|
add sp, sp, #0x6c
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_022C3E80: .word ov10_022DC0FC
|
|
_022C3E84: .word ov10_022DC114
|
|
_022C3E88: .word ov10_022DC130
|
|
arm_func_end ov10_022C3938
|
|
|
|
arm_func_start ov10_022C3E8C
|
|
ov10_022C3E8C: ; 0x022C3E8C
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x28
|
|
ldr r4, _022C42E8 ; =ov10_022DC0FC
|
|
mov r8, r1
|
|
ldr r5, [r4, #4]
|
|
ldr r6, [r4]
|
|
mov sb, r0
|
|
mov sl, r2
|
|
mov r4, #0
|
|
str r5, [sp, #0x24]
|
|
ldr r1, _022C42EC ; =ov10_022DC114
|
|
add r0, sp, #0x20
|
|
str r6, [sp, #0x20]
|
|
mov r2, #6
|
|
mov fp, r3
|
|
str r4, [sp, #0x10]
|
|
ldr r5, [sp, #0x50]
|
|
bl LoadFileFromRom
|
|
ldr r1, [sp, #0x20]
|
|
add r0, sp, #0x10
|
|
bl HandleSir0Translation
|
|
ldrb r0, [r5]
|
|
ldr r6, [sp, #0x10]
|
|
bl GetDungeonGroup
|
|
mov r7, r0
|
|
ldrb r2, [r5]
|
|
ldrb r3, [r5, #1]
|
|
add r0, sp, #0xd
|
|
add r1, sp, #0xc
|
|
bl ov10_022C42F4
|
|
ldr r2, [r6]
|
|
ldrb r1, [sp, #0xd]
|
|
ldr r2, [r2, r7, lsl #2]
|
|
ldr r0, [r6, #4]
|
|
mov r1, r1, lsl #2
|
|
ldrsh r1, [r2, r1]
|
|
add r0, r0, r1, lsl #2
|
|
ldrb r5, [r0, #1]
|
|
cmp r5, #0
|
|
beq _022C42D4
|
|
ldr r1, _022C42E8 ; =ov10_022DC0FC
|
|
add r0, sp, #0x18
|
|
ldr r3, [r1, #0x14]
|
|
ldr r2, [r1, #0x10]
|
|
ldr r1, _022C42F0 ; =ov10_022DC190
|
|
str r2, [sp, #0x18]
|
|
mov r2, #0xf
|
|
str r3, [sp, #0x1c]
|
|
bl LoadFileFromRom
|
|
ldr r1, [sp, #0x18]
|
|
add r0, sp, #0x14
|
|
bl HandleSir0Translation
|
|
ldr r2, [sp, #0x14]
|
|
mov r3, r5
|
|
mov r0, sl
|
|
mov r1, fp
|
|
bl ov10_022C27E8
|
|
ldr r0, [fp]
|
|
mov r3, #0
|
|
str r0, [sp, #4]
|
|
add r5, r0, #0xa
|
|
ldr r4, [sl]
|
|
mov r0, r3
|
|
mov r1, r3
|
|
b _022C3FB8
|
|
_022C3F90:
|
|
mul r6, r3, r8
|
|
mov r2, r1
|
|
b _022C3FAC
|
|
_022C3F9C:
|
|
add r7, r2, r6
|
|
mov r7, r7, lsl #1
|
|
strh r0, [sb, r7]
|
|
add r2, r2, #1
|
|
_022C3FAC:
|
|
cmp r2, r8
|
|
blt _022C3F9C
|
|
add r3, r3, #1
|
|
_022C3FB8:
|
|
cmp r3, r5
|
|
blt _022C3F90
|
|
mov r6, #5
|
|
b _022C4238
|
|
_022C3FC8:
|
|
mul r0, r6, r8
|
|
str r0, [sp]
|
|
add r0, r4, #5
|
|
mov r7, #5
|
|
str r0, [sp, #8]
|
|
b _022C4228
|
|
_022C3FE0:
|
|
bl ov10_022C2838
|
|
ldr r1, [sp]
|
|
cmp r7, #0
|
|
add r1, r7, r1
|
|
and r0, r0, #0xff
|
|
add r1, sb, r1, lsl #1
|
|
cmpge r6, #0
|
|
blt _022C4224
|
|
cmp r7, r8
|
|
cmplt r6, r5
|
|
bge _022C4224
|
|
cmp r0, #0x10
|
|
blo _022C402C
|
|
ldrh r2, [r1]
|
|
bic r2, r2, #3
|
|
strh r2, [r1]
|
|
ldrh r2, [r1]
|
|
orr r2, r2, #1
|
|
strh r2, [r1]
|
|
_022C402C:
|
|
cmp r0, #0x43
|
|
bgt _022C4084
|
|
bge _022C4144
|
|
cmp r0, #0xf
|
|
addls pc, pc, r0, lsl #2
|
|
b _022C4224
|
|
_022C4044: ; jump table
|
|
b _022C409C ; case 0
|
|
b _022C40B8 ; case 1
|
|
b _022C40D4 ; case 2
|
|
b _022C4224 ; case 3
|
|
b _022C409C ; case 4
|
|
b _022C40F0 ; case 5
|
|
b _022C410C ; case 6
|
|
b _022C4224 ; case 7
|
|
b _022C4144 ; case 8
|
|
b _022C409C ; case 9
|
|
b _022C4128 ; case 10
|
|
b _022C4188 ; case 11
|
|
b _022C41A8 ; case 12
|
|
b _022C41D4 ; case 13
|
|
b _022C420C ; case 14
|
|
b _022C4224 ; case 15
|
|
_022C4084:
|
|
cmp r0, #0x44
|
|
bgt _022C4094
|
|
beq _022C4160
|
|
b _022C4224
|
|
_022C4094:
|
|
cmp r0, #0x45
|
|
b _022C4224
|
|
_022C409C:
|
|
ldrh r0, [r1]
|
|
bic r0, r0, #3
|
|
strh r0, [r1]
|
|
ldrh r0, [r1]
|
|
orr r0, r0, #1
|
|
strh r0, [r1]
|
|
b _022C4224
|
|
_022C40B8:
|
|
ldrh r0, [r1]
|
|
bic r0, r0, #3
|
|
strh r0, [r1]
|
|
ldrh r0, [r1]
|
|
bic r0, r0, #0x100
|
|
strh r0, [r1]
|
|
b _022C4224
|
|
_022C40D4:
|
|
ldrh r0, [r1]
|
|
bic r0, r0, #3
|
|
strh r0, [r1]
|
|
ldrh r0, [r1]
|
|
orr r0, r0, #0x10
|
|
strh r0, [r1]
|
|
b _022C4224
|
|
_022C40F0:
|
|
ldrh r0, [r1]
|
|
bic r0, r0, #3
|
|
strh r0, [r1]
|
|
ldrh r0, [r1]
|
|
orr r0, r0, #2
|
|
strh r0, [r1]
|
|
b _022C4224
|
|
_022C410C:
|
|
ldrh r0, [r1]
|
|
bic r0, r0, #3
|
|
strh r0, [r1]
|
|
ldrh r0, [r1]
|
|
orr r0, r0, #3
|
|
strh r0, [r1]
|
|
b _022C4224
|
|
_022C4128:
|
|
ldrh r0, [r1]
|
|
bic r0, r0, #3
|
|
strh r0, [r1]
|
|
ldrh r0, [r1]
|
|
orr r0, r0, #0x13
|
|
strh r0, [r1]
|
|
b _022C4224
|
|
_022C4144:
|
|
ldrh r0, [r1]
|
|
bic r0, r0, #3
|
|
strh r0, [r1]
|
|
ldrh r0, [r1]
|
|
orr r0, r0, #1
|
|
strh r0, [r1]
|
|
b _022C4224
|
|
_022C4160:
|
|
ldrh r0, [r1]
|
|
orr r0, r0, #0x800
|
|
strh r0, [r1]
|
|
ldrh r0, [r1]
|
|
bic r0, r0, #3
|
|
strh r0, [r1]
|
|
ldrh r0, [r1]
|
|
orr r0, r0, #1
|
|
strh r0, [r1]
|
|
b _022C4224
|
|
_022C4188:
|
|
ldrh r0, [r1]
|
|
bic r0, r0, #3
|
|
strh r0, [r1]
|
|
ldrh r0, [r1]
|
|
orr r0, r0, #1
|
|
orr r0, r0, #0x800
|
|
strh r0, [r1]
|
|
b _022C4224
|
|
_022C41A8:
|
|
ldrh r0, [r1]
|
|
bic r0, r0, #3
|
|
strh r0, [r1]
|
|
ldrh r0, [r1]
|
|
orr r0, r0, #1
|
|
orr r0, r0, #0x1000
|
|
strh r0, [r1]
|
|
ldrh r0, [r1]
|
|
orr r0, r0, #0x810
|
|
strh r0, [r1]
|
|
b _022C4224
|
|
_022C41D4:
|
|
ldrh r0, [r1]
|
|
bic r0, r0, #3
|
|
strh r0, [r1]
|
|
ldrh r0, [r1]
|
|
orr r0, r0, #1
|
|
orr r0, r0, #0x1000
|
|
strh r0, [r1]
|
|
ldrh r0, [r1]
|
|
orr r0, r0, #0x810
|
|
strh r0, [r1]
|
|
ldrh r0, [r1]
|
|
orr r0, r0, #0x2000
|
|
strh r0, [r1]
|
|
b _022C4224
|
|
_022C420C:
|
|
ldrh r0, [r1]
|
|
bic r0, r0, #3
|
|
strh r0, [r1]
|
|
ldrh r0, [r1]
|
|
orr r0, r0, #0x10
|
|
strh r0, [r1]
|
|
_022C4224:
|
|
add r7, r7, #1
|
|
_022C4228:
|
|
ldr r0, [sp, #8]
|
|
cmp r7, r0
|
|
blt _022C3FE0
|
|
add r6, r6, #1
|
|
_022C4238:
|
|
ldr r0, [sp, #4]
|
|
add r2, r0, #5
|
|
cmp r6, r2
|
|
blt _022C3FC8
|
|
mov r6, #0
|
|
add r1, r4, #5
|
|
mov lr, #0x100
|
|
b _022C42AC
|
|
_022C4258:
|
|
mul r3, r6, r8
|
|
mov r7, #0
|
|
b _022C42A0
|
|
_022C4264:
|
|
cmp r7, #5
|
|
add r0, r7, r3
|
|
blt _022C4288
|
|
cmp r7, r1
|
|
bge _022C4288
|
|
cmp r6, #5
|
|
blt _022C4288
|
|
cmp r6, r2
|
|
blt _022C429C
|
|
_022C4288:
|
|
mov r0, r0, lsl #1
|
|
strh lr, [sb, r0]
|
|
ldrh ip, [sb, r0]
|
|
orr ip, ip, #0x10
|
|
strh ip, [sb, r0]
|
|
_022C429C:
|
|
add r7, r7, #1
|
|
_022C42A0:
|
|
cmp r7, r8
|
|
blt _022C4264
|
|
add r6, r6, #1
|
|
_022C42AC:
|
|
cmp r6, r5
|
|
blt _022C4258
|
|
add r0, sp, #0x18
|
|
bl UnloadFile
|
|
add r0, r4, #0xa
|
|
str r0, [sl]
|
|
ldr r0, [sp, #4]
|
|
mov r4, #1
|
|
add r0, r0, #0xa
|
|
str r0, [fp]
|
|
_022C42D4:
|
|
add r0, sp, #0x20
|
|
bl UnloadFile
|
|
mov r0, r4
|
|
add sp, sp, #0x28
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_022C42E8: .word ov10_022DC0FC
|
|
_022C42EC: .word ov10_022DC114
|
|
_022C42F0: .word ov10_022DC190
|
|
arm_func_end ov10_022C3E8C
|
|
|
|
arm_func_start ov10_022C42F4
|
|
ov10_022C42F4: ; 0x022C42F4
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r5, r2
|
|
mov r7, r0
|
|
mov r4, r3
|
|
mov r0, r5
|
|
mov r6, r1
|
|
bl GetNbFloors
|
|
cmp r4, r0
|
|
movgt r4, r0
|
|
mov r0, r5
|
|
bl GetNbPrecedingFloors
|
|
add r4, r4, r0
|
|
mov r0, r5
|
|
bl GetNbFloorsDungeonGroup
|
|
cmp r4, #1
|
|
movlt r4, #1
|
|
blt _022C4340
|
|
cmp r4, r0
|
|
movgt r4, r0
|
|
_022C4340:
|
|
strb r4, [r7]
|
|
strb r0, [r6]
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
arm_func_end ov10_022C42F4
|