mirror of
https://github.com/pret/pmd-sky.git
synced 2026-03-21 17:25:15 -05:00
1031 lines
20 KiB
ArmAsm
1031 lines
20 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "main_0204CD88.inc"
|
|
|
|
.text
|
|
|
|
arm_func_start InitWorldMapScriptVars
|
|
InitWorldMapScriptVars: ; 0x0204CD88
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #0
|
|
mov r1, #0x55
|
|
bl ZinitScriptVariable
|
|
mov r0, #0
|
|
mov r1, #0x56
|
|
bl ZinitScriptVariable
|
|
mov r0, #0
|
|
mov r1, #0x57
|
|
mov r2, #1
|
|
bl SaveScriptVariableValue
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end InitWorldMapScriptVars
|
|
|
|
arm_func_start sub_0204CDB8
|
|
sub_0204CDB8: ; 0x0204CDB8
|
|
ldr ip, _0204CDC8 ; =ZinitScriptVariable
|
|
mov r0, #0
|
|
mov r1, #0x56
|
|
bx ip
|
|
.align 2, 0
|
|
_0204CDC8: .word ZinitScriptVariable
|
|
arm_func_end sub_0204CDB8
|
|
|
|
arm_func_start sub_0204CDCC
|
|
sub_0204CDCC: ; 0x0204CDCC
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #0
|
|
mov r1, #0x57
|
|
bl LoadScriptVariableValue
|
|
mov r0, r0, lsl #0x18
|
|
mov r0, r0, asr #0x18
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end sub_0204CDCC
|
|
|
|
arm_func_start sub_0204CDE8
|
|
sub_0204CDE8: ; 0x0204CDE8
|
|
ldr ip, _0204CDFC ; =SaveScriptVariableValue
|
|
mov r2, r0
|
|
mov r0, #0
|
|
mov r1, #0x57
|
|
bx ip
|
|
.align 2, 0
|
|
_0204CDFC: .word SaveScriptVariableValue
|
|
arm_func_end sub_0204CDE8
|
|
|
|
arm_func_start sub_0204CE00
|
|
sub_0204CE00: ; 0x0204CE00
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl GetGameMode
|
|
cmp r0, #3
|
|
mov r0, r4, lsl #0x10
|
|
mov r2, r0, lsr #0x10
|
|
mov r0, #0
|
|
bne _0204CE2C
|
|
mov r1, #0x56
|
|
bl LoadScriptVariableValueAtIndex
|
|
b _0204CE34
|
|
_0204CE2C:
|
|
mov r1, #0x55
|
|
bl LoadScriptVariableValueAtIndex
|
|
_0204CE34:
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_0204CE00
|
|
|
|
arm_func_start sub_0204CE48
|
|
sub_0204CE48: ; 0x0204CE48
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
bl GetGameMode
|
|
cmp r0, #3
|
|
mov r0, r5, lsl #0x10
|
|
mov r3, r4
|
|
bne _0204CE7C
|
|
mov r2, r0, lsr #0x10
|
|
mov r0, #0
|
|
mov r1, #0x56
|
|
bl SaveScriptVariableValueAtIndex
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_0204CE7C:
|
|
mov r2, r0, lsr #0x10
|
|
mov r0, #0
|
|
mov r1, #0x55
|
|
bl SaveScriptVariableValueAtIndex
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end sub_0204CE48
|
|
|
|
arm_func_start InitDungeonListScriptVars
|
|
InitDungeonListScriptVars: ; 0x0204CE90
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #0
|
|
mov r1, #0x4f
|
|
bl ZinitScriptVariable
|
|
mov r0, #0
|
|
mov r1, #0x54
|
|
bl ZinitScriptVariable
|
|
mov r0, #0
|
|
mov r1, #0x50
|
|
bl ZinitScriptVariable
|
|
mov r0, #0
|
|
mov r1, #0x51
|
|
bl ZinitScriptVariable
|
|
mov r0, #0
|
|
mov r1, #0x52
|
|
bl ZinitScriptVariable
|
|
mov r0, #0
|
|
mov r1, #0x53
|
|
bl ZinitScriptVariable
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end InitDungeonListScriptVars
|
|
|
|
arm_func_start sub_0204CEE0
|
|
sub_0204CEE0: ; 0x0204CEE0
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, r0, lsl #0x10
|
|
mov r2, r0, lsr #0x10
|
|
mov r0, #0
|
|
mov r1, #0x50
|
|
bl LoadScriptVariableValueAtIndex
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end sub_0204CEE0
|
|
|
|
arm_func_start sub_0204CF0C
|
|
sub_0204CF0C: ; 0x0204CF0C
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, r0, lsl #0x10
|
|
mov r2, r0, lsr #0x10
|
|
mov r0, #0
|
|
mov r1, #0x52
|
|
bl LoadScriptVariableValueAtIndex
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end sub_0204CF0C
|
|
|
|
arm_func_start SetDungeonConquest
|
|
SetDungeonConquest: ; 0x0204CF38
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r0, r0, lsl #0x10
|
|
mov r3, r1
|
|
mov r2, r0, lsr #0x10
|
|
mov r0, #0
|
|
mov r1, #0x52
|
|
bl SaveScriptVariableValueAtIndex
|
|
mov r7, #0
|
|
ldr r6, _0204CF98 ; =_0209E008
|
|
mov r5, r7
|
|
mov r4, #0x52
|
|
_0204CF64:
|
|
ldrb r2, [r6, r7]
|
|
add r7, r7, #1
|
|
cmp r2, #0xff
|
|
bne _0204CF80
|
|
mov r0, #0x23
|
|
bl SetAdventureLogCompleted
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
_0204CF80:
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl LoadScriptVariableValueAtIndex
|
|
cmp r0, #0
|
|
bne _0204CF64
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0204CF98: .word _0209E008
|
|
arm_func_end SetDungeonConquest
|
|
|
|
arm_func_start GetDungeonMode
|
|
GetDungeonMode: ; 0x0204CF9C
|
|
stmdb sp!, {r4, lr}
|
|
mov r0, r0, lsl #0x10
|
|
mov r4, r0, lsr #0x10
|
|
mov r2, r4
|
|
mov r0, #0
|
|
mov r1, #0x4f
|
|
bl LoadScriptVariableValueAtIndex
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
mov r2, r4
|
|
mov r0, #0
|
|
mov r1, #0x54
|
|
beq _0204CFF8
|
|
bl LoadScriptVariableValueAtIndex
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
movne r0, #3
|
|
moveq r0, #1
|
|
ldmia sp!, {r4, pc}
|
|
_0204CFF8:
|
|
bl LoadScriptVariableValueAtIndex
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
movne r0, #2
|
|
moveq r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end GetDungeonMode
|
|
|
|
arm_func_start sub_0204D018
|
|
sub_0204D018: ; 0x0204D018
|
|
stmdb sp!, {r4, lr}
|
|
cmp r1, #3
|
|
addls pc, pc, r1, lsl #2
|
|
ldmia sp!, {r4, pc}
|
|
_0204D028: ; jump table
|
|
b _0204D038 ; case 0
|
|
b _0204D06C ; case 1
|
|
b _0204D0A0 ; case 2
|
|
b _0204D0D4 ; case 3
|
|
_0204D038:
|
|
mov r0, r0, lsl #0x10
|
|
mov r4, r0, lsr #0x10
|
|
mov r0, #0
|
|
mov r2, r4
|
|
mov r3, r0
|
|
mov r1, #0x4f
|
|
bl SaveScriptVariableValueAtIndex
|
|
mov r0, #0
|
|
mov r2, r4
|
|
mov r3, r0
|
|
mov r1, #0x54
|
|
bl SaveScriptVariableValueAtIndex
|
|
ldmia sp!, {r4, pc}
|
|
_0204D06C:
|
|
mov r0, r0, lsl #0x10
|
|
mov r4, r0, lsr #0x10
|
|
mov r2, r4
|
|
mov r0, #0
|
|
mov r1, #0x4f
|
|
mov r3, #1
|
|
bl SaveScriptVariableValueAtIndex
|
|
mov r0, #0
|
|
mov r2, r4
|
|
mov r3, r0
|
|
mov r1, #0x54
|
|
bl SaveScriptVariableValueAtIndex
|
|
ldmia sp!, {r4, pc}
|
|
_0204D0A0:
|
|
mov r0, r0, lsl #0x10
|
|
mov r4, r0, lsr #0x10
|
|
mov r0, #0
|
|
mov r2, r4
|
|
mov r3, r0
|
|
mov r1, #0x4f
|
|
bl SaveScriptVariableValueAtIndex
|
|
mov r2, r4
|
|
mov r0, #0
|
|
mov r1, #0x54
|
|
mov r3, #1
|
|
bl SaveScriptVariableValueAtIndex
|
|
ldmia sp!, {r4, pc}
|
|
_0204D0D4:
|
|
mov r0, r0, lsl #0x10
|
|
mov r4, r0, lsr #0x10
|
|
mov r2, r4
|
|
mov r0, #0
|
|
mov r1, #0x4f
|
|
mov r3, #1
|
|
bl SaveScriptVariableValueAtIndex
|
|
mov r2, r4
|
|
mov r0, #0
|
|
mov r1, #0x54
|
|
mov r3, #1
|
|
bl SaveScriptVariableValueAtIndex
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_0204D018
|
|
|
|
arm_func_start GlobalProgressAlloc
|
|
GlobalProgressAlloc: ; 0x0204D108
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #0x20c
|
|
mov r1, #0
|
|
bl MemAlloc
|
|
ldr r2, _0204D12C ; =GLOBAL_PROGRESS_PTR
|
|
mov r1, #0x20c
|
|
str r0, [r2]
|
|
bl MemZero
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0204D12C: .word GLOBAL_PROGRESS_PTR
|
|
arm_func_end GlobalProgressAlloc
|
|
|
|
arm_func_start ResetGlobalProgress
|
|
ResetGlobalProgress: ; 0x0204D130
|
|
ldr r0, _0204D144 ; =GLOBAL_PROGRESS_PTR
|
|
ldr ip, _0204D148 ; =MemZero
|
|
mov r1, #0x20c
|
|
ldr r0, [r0]
|
|
bx ip
|
|
.align 2, 0
|
|
_0204D144: .word GLOBAL_PROGRESS_PTR
|
|
_0204D148: .word MemZero
|
|
arm_func_end ResetGlobalProgress
|
|
|
|
arm_func_start SetMonsterFlag1
|
|
SetMonsterFlag1: ; 0x0204D14C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r3, _0204D184 ; =GLOBAL_PROGRESS_PTR
|
|
mov r1, r0, asr #4
|
|
add r1, r0, r1, lsr #27
|
|
mov r2, r0, lsr #0x1f
|
|
rsb r0, r2, r0, lsl #27
|
|
ldr lr, [r3]
|
|
mov ip, r1, asr #5
|
|
ldr r3, [lr, ip, lsl #2]
|
|
add r0, r2, r0, ror #27
|
|
mov r1, #1
|
|
orr r0, r3, r1, lsl r0
|
|
str r0, [lr, ip, lsl #2]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0204D184: .word GLOBAL_PROGRESS_PTR
|
|
arm_func_end SetMonsterFlag1
|
|
|
|
arm_func_start GetMonsterFlag1
|
|
GetMonsterFlag1: ; 0x0204D188
|
|
ldr r3, _0204D1C0 ; =GLOBAL_PROGRESS_PTR
|
|
mov r1, r0, asr #4
|
|
add r2, r0, r1, lsr #27
|
|
mov r1, r0, lsr #0x1f
|
|
rsb r0, r1, r0, lsl #27
|
|
add r0, r1, r0, ror #27
|
|
ldr r3, [r3]
|
|
mov r2, r2, asr #5
|
|
ldr r2, [r3, r2, lsl #2]
|
|
mov r1, #1
|
|
tst r2, r1, lsl r0
|
|
moveq r1, #0
|
|
and r0, r1, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_0204D1C0: .word GLOBAL_PROGRESS_PTR
|
|
arm_func_end GetMonsterFlag1
|
|
|
|
arm_func_start SetMonsterFlag2
|
|
SetMonsterFlag2: ; 0x0204D1C4
|
|
stmdb sp!, {r3, lr}
|
|
bl FemaleToMaleForm
|
|
ldr r2, _0204D204 ; =GLOBAL_PROGRESS_PTR
|
|
mov r1, r0, asr #4
|
|
ldr r3, [r2]
|
|
add r1, r0, r1, lsr #27
|
|
mov r2, r0, lsr #0x1f
|
|
rsb r0, r2, r0, lsl #27
|
|
add lr, r3, #0x98
|
|
mov ip, r1, asr #5
|
|
ldr r3, [lr, ip, lsl #2]
|
|
add r0, r2, r0, ror #27
|
|
mov r1, #1
|
|
orr r0, r3, r1, lsl r0
|
|
str r0, [lr, ip, lsl #2]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0204D204: .word GLOBAL_PROGRESS_PTR
|
|
arm_func_end SetMonsterFlag2
|
|
|
|
arm_func_start HasMonsterBeenAttackedInDungeons
|
|
HasMonsterBeenAttackedInDungeons: ; 0x0204D208
|
|
stmdb sp!, {r3, lr}
|
|
bl FemaleToMaleForm
|
|
ldr r3, _0204D24C ; =GLOBAL_PROGRESS_PTR
|
|
mov r1, r0, asr #4
|
|
add r2, r0, r1, lsr #27
|
|
mov r1, r0, lsr #0x1f
|
|
rsb r0, r1, r0, lsl #27
|
|
add r0, r1, r0, ror #27
|
|
ldr r3, [r3]
|
|
mov r2, r2, asr #5
|
|
add r2, r3, r2, lsl #2
|
|
ldr r2, [r2, #0x98]
|
|
mov r1, #1
|
|
tst r2, r1, lsl r0
|
|
moveq r1, #0
|
|
and r0, r1, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0204D24C: .word GLOBAL_PROGRESS_PTR
|
|
arm_func_end HasMonsterBeenAttackedInDungeons
|
|
|
|
arm_func_start SetDungeonTipShown
|
|
SetDungeonTipShown: ; 0x0204D250
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _0204D28C ; =GLOBAL_PROGRESS_PTR
|
|
mov r1, r0, asr #4
|
|
ldr r3, [r2]
|
|
add r1, r0, r1, lsr #27
|
|
mov r2, r0, lsr #0x1f
|
|
rsb r0, r2, r0, lsl #27
|
|
add lr, r3, #0x94
|
|
mov ip, r1, asr #5
|
|
ldr r3, [lr, ip, lsl #2]
|
|
add r0, r2, r0, ror #27
|
|
mov r1, #1
|
|
orr r0, r3, r1, lsl r0
|
|
str r0, [lr, ip, lsl #2]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0204D28C: .word GLOBAL_PROGRESS_PTR
|
|
arm_func_end SetDungeonTipShown
|
|
|
|
arm_func_start GetDungeonTipShown
|
|
GetDungeonTipShown: ; 0x0204D290
|
|
cmp r0, #0x1f
|
|
movge r0, #0
|
|
bxge lr
|
|
ldr r2, _0204D2D8 ; =GLOBAL_PROGRESS_PTR
|
|
mov r1, r0, asr #4
|
|
add r1, r0, r1, lsr #27
|
|
ldr r3, [r2]
|
|
mov r2, r1, asr #5
|
|
mov r1, r0, lsr #0x1f
|
|
add r2, r3, r2, lsl #2
|
|
rsb r0, r1, r0, lsl #27
|
|
add r0, r1, r0, ror #27
|
|
ldr r2, [r2, #0x94]
|
|
mov r1, #1
|
|
tst r2, r1, lsl r0
|
|
moveq r1, #0
|
|
and r0, r1, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_0204D2D8: .word GLOBAL_PROGRESS_PTR
|
|
arm_func_end GetDungeonTipShown
|
|
|
|
arm_func_start SetMaxReachedFloor
|
|
SetMaxReachedFloor: ; 0x0204D2DC
|
|
cmp r0, #0xb4
|
|
ldrlo r2, _0204D2F4 ; =GLOBAL_PROGRESS_PTR
|
|
ldrlo r2, [r2]
|
|
addlo r0, r2, r0
|
|
strlob r1, [r0, #0x143]
|
|
bx lr
|
|
.align 2, 0
|
|
_0204D2F4: .word GLOBAL_PROGRESS_PTR
|
|
arm_func_end SetMaxReachedFloor
|
|
|
|
arm_func_start GetMaxReachedFloor
|
|
GetMaxReachedFloor: ; 0x0204D2F8
|
|
cmp r0, #0xb4
|
|
ldrlo r1, _0204D314 ; =GLOBAL_PROGRESS_PTR
|
|
movhs r0, #0
|
|
ldrlo r1, [r1]
|
|
addlo r0, r1, r0
|
|
ldrlob r0, [r0, #0x143]
|
|
bx lr
|
|
.align 2, 0
|
|
_0204D314: .word GLOBAL_PROGRESS_PTR
|
|
arm_func_end GetMaxReachedFloor
|
|
|
|
arm_func_start IncrementNbAdventures
|
|
IncrementNbAdventures: ; 0x0204D318
|
|
ldr r0, _0204D344 ; =GLOBAL_PROGRESS_PTR
|
|
ldr r1, _0204D348 ; =0x000F423F
|
|
ldr r3, [r0]
|
|
ldr r2, [r3, #0x1f8]
|
|
add r2, r2, #1
|
|
str r2, [r3, #0x1f8]
|
|
ldr r2, [r0]
|
|
ldr r0, [r2, #0x1f8]
|
|
cmp r0, r1
|
|
strhi r1, [r2, #0x1f8]
|
|
bx lr
|
|
.align 2, 0
|
|
_0204D344: .word GLOBAL_PROGRESS_PTR
|
|
_0204D348: .word 0x000F423F
|
|
arm_func_end IncrementNbAdventures
|
|
|
|
arm_func_start GetNbAdventures
|
|
GetNbAdventures: ; 0x0204D34C
|
|
ldr r0, _0204D35C ; =GLOBAL_PROGRESS_PTR
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x1f8]
|
|
bx lr
|
|
.align 2, 0
|
|
_0204D35C: .word GLOBAL_PROGRESS_PTR
|
|
arm_func_end GetNbAdventures
|
|
|
|
arm_func_start CanMonsterSpawn
|
|
CanMonsterSpawn: ; 0x0204D360
|
|
mov r0, #1
|
|
bx lr
|
|
arm_func_end CanMonsterSpawn
|
|
|
|
arm_func_start IncrementExclusiveMonsterCounts
|
|
IncrementExclusiveMonsterCounts: ; 0x0204D368
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
ldr r4, _0204D3B8 ; =VERSION_EXCLUSIVE_MONSTERS
|
|
ldr r7, _0204D3BC ; =GLOBAL_PROGRESS_PTR
|
|
mov r6, r0
|
|
mov r5, #0
|
|
mov r8, #1
|
|
_0204D380:
|
|
mov r0, r5, lsl #2
|
|
ldrsh r0, [r4, r0]
|
|
bl GetDexNumber
|
|
mov sb, r0
|
|
mov r0, r6
|
|
bl GetDexNumber
|
|
cmp sb, r0
|
|
ldreq r0, [r7]
|
|
addeq r0, r0, r5
|
|
add r5, r5, #1
|
|
streqb r8, [r0, #0x12c]
|
|
cmp r5, #0x17
|
|
blt _0204D380
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_0204D3B8: .word VERSION_EXCLUSIVE_MONSTERS
|
|
_0204D3BC: .word GLOBAL_PROGRESS_PTR
|
|
arm_func_end IncrementExclusiveMonsterCounts
|
|
|
|
arm_func_start CopyProgressInfoTo
|
|
CopyProgressInfoTo: ; 0x0204D3C0
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
ldr r4, _0204D538 ; =0x00000483
|
|
mov r5, r0
|
|
mov r8, #0
|
|
add r7, sp, #0
|
|
mov r6, #1
|
|
_0204D3D8:
|
|
mov r0, r8, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
bl GetMonsterFlag1
|
|
strb r0, [sp]
|
|
mov r0, r5
|
|
mov r1, r7
|
|
mov r2, r6
|
|
bl CopyBitsTo
|
|
add r8, r8, #1
|
|
cmp r8, r4
|
|
blt _0204D3D8
|
|
mov r7, #0
|
|
add r6, sp, #0
|
|
mov r4, #1
|
|
_0204D410:
|
|
mov r0, r7
|
|
bl GetDungeonTipShown
|
|
strb r0, [sp]
|
|
mov r0, r5
|
|
mov r1, r6
|
|
mov r2, r4
|
|
bl CopyBitsTo
|
|
add r7, r7, #1
|
|
cmp r7, #0x1f
|
|
blt _0204D410
|
|
ldr r4, _0204D538 ; =0x00000483
|
|
mov r8, #0
|
|
add r7, sp, #0
|
|
mov r6, #1
|
|
_0204D448:
|
|
mov r0, r8, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
bl HasMonsterBeenAttackedInDungeons
|
|
strb r0, [sp]
|
|
mov r0, r5
|
|
mov r1, r7
|
|
mov r2, r6
|
|
bl CopyBitsTo
|
|
add r8, r8, #1
|
|
cmp r8, r4
|
|
blt _0204D448
|
|
ldr r8, _0204D53C ; =_0209E011
|
|
ldr sb, _0204D540 ; =_0209E010
|
|
ldr r6, _0204D544 ; =GLOBAL_PROGRESS_PTR
|
|
mov r4, #0
|
|
mov r7, #1
|
|
_0204D488:
|
|
ldr r0, [r6]
|
|
mov r2, r7
|
|
add r0, r0, r4
|
|
ldrb r0, [r0, #0x12c]
|
|
cmp r0, #0
|
|
movne r1, sb
|
|
moveq r1, r8
|
|
mov r0, r5
|
|
bl CopyBitsTo
|
|
add r4, r4, #1
|
|
cmp r4, #0x17
|
|
blt _0204D488
|
|
ldr r4, _0204D544 ; =GLOBAL_PROGRESS_PTR
|
|
mov r7, #0
|
|
mov r6, #7
|
|
_0204D4C4:
|
|
ldr r1, [r4]
|
|
mov r0, r5
|
|
add r1, r1, #0x43
|
|
add r1, r1, #0x100
|
|
mov r2, r6
|
|
add r1, r1, r7
|
|
bl CopyBitsTo
|
|
add r7, r7, #1
|
|
cmp r7, #0xb4
|
|
blt _0204D4C4
|
|
ldr r1, _0204D544 ; =GLOBAL_PROGRESS_PTR
|
|
mov r0, r5
|
|
ldr r1, [r1]
|
|
mov r2, #0x20
|
|
add r1, r1, #0x1f8
|
|
bl CopyBitsTo
|
|
ldr r4, _0204D544 ; =GLOBAL_PROGRESS_PTR
|
|
mov r7, #0
|
|
mov r6, #8
|
|
_0204D510:
|
|
ldr r1, [r4]
|
|
mov r0, r5
|
|
add r1, r1, #0x1fc
|
|
mov r2, r6
|
|
add r1, r1, r7
|
|
bl CopyBitsTo
|
|
add r7, r7, #1
|
|
cmp r7, #0x10
|
|
blt _0204D510
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_0204D538: .word 0x00000483
|
|
_0204D53C: .word _0209E011
|
|
_0204D540: .word _0209E010
|
|
_0204D544: .word GLOBAL_PROGRESS_PTR
|
|
arm_func_end CopyProgressInfoTo
|
|
|
|
arm_func_start CopyProgressInfoFromScratchTo
|
|
CopyProgressInfoFromScratchTo: ; 0x0204D548
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #0x10
|
|
mov r3, r0
|
|
mov r2, r1
|
|
add r0, sp, #0
|
|
mov r1, r3
|
|
bl sub_02050990
|
|
add r0, sp, #0
|
|
bl CopyProgressInfoTo
|
|
add r0, sp, #0
|
|
bl sub_020509BC
|
|
ldr r0, [sp, #8]
|
|
add sp, sp, #0x10
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end CopyProgressInfoFromScratchTo
|
|
|
|
arm_func_start CopyProgressInfoFrom
|
|
CopyProgressInfoFrom: ; 0x0204D580
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
|
|
sub sp, sp, #4
|
|
ldr r1, _0204D740 ; =GLOBAL_PROGRESS_PTR
|
|
mov r4, r0
|
|
ldr r0, [r1]
|
|
mov r1, #0x20c
|
|
bl MemZero
|
|
ldr r5, _0204D744 ; =0x00000483
|
|
mov r8, #0
|
|
add r7, sp, #0
|
|
mov r6, #1
|
|
_0204D5AC:
|
|
mov r0, r4
|
|
mov r1, r7
|
|
mov r2, r6
|
|
bl CopyBitsFrom
|
|
ldrb r0, [sp]
|
|
cmp r0, #0
|
|
beq _0204D5D4
|
|
mov r0, r8, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
bl SetMonsterFlag1
|
|
_0204D5D4:
|
|
add r8, r8, #1
|
|
cmp r8, r5
|
|
blt _0204D5AC
|
|
mov r7, #0
|
|
add r6, sp, #0
|
|
mov r5, #1
|
|
_0204D5EC:
|
|
mov r0, r4
|
|
mov r1, r6
|
|
mov r2, r5
|
|
bl CopyBitsFrom
|
|
ldrb r0, [sp]
|
|
cmp r0, #0
|
|
beq _0204D610
|
|
mov r0, r7
|
|
bl SetDungeonTipShown
|
|
_0204D610:
|
|
add r7, r7, #1
|
|
cmp r7, #0x1f
|
|
blt _0204D5EC
|
|
ldr r5, _0204D744 ; =0x00000483
|
|
mov r8, #0
|
|
add r7, sp, #0
|
|
mov r6, #1
|
|
_0204D62C:
|
|
mov r0, r4
|
|
mov r1, r7
|
|
mov r2, r6
|
|
bl CopyBitsFrom
|
|
ldrb r0, [sp]
|
|
cmp r0, #0
|
|
beq _0204D654
|
|
mov r0, r8, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
bl SetMonsterFlag2
|
|
_0204D654:
|
|
add r8, r8, #1
|
|
cmp r8, r5
|
|
blt _0204D62C
|
|
mov sb, #0
|
|
mov r6, #1
|
|
ldr sl, _0204D740 ; =GLOBAL_PROGRESS_PTR
|
|
mov r5, sb
|
|
add r8, sp, #1
|
|
mov r7, r6
|
|
_0204D678:
|
|
mov r0, r4
|
|
mov r1, r8
|
|
mov r2, r7
|
|
bl CopyBitsFrom
|
|
ldrb r0, [sp, #1]
|
|
tst r0, #1
|
|
ldr r0, [sl]
|
|
movne r1, r6
|
|
add r0, r0, sb
|
|
moveq r1, r5
|
|
add sb, sb, #1
|
|
strb r1, [r0, #0x12c]
|
|
cmp sb, #0x17
|
|
blt _0204D678
|
|
ldr r8, _0204D740 ; =GLOBAL_PROGRESS_PTR
|
|
mov r7, #0
|
|
add r6, sp, #1
|
|
mov r5, #7
|
|
_0204D6C0:
|
|
mov r0, r4
|
|
mov r1, r6
|
|
mov r2, r5
|
|
bl CopyBitsFrom
|
|
ldrb r1, [sp, #1]
|
|
ldr r0, [r8]
|
|
add r0, r0, r7
|
|
and r1, r1, #0x7f
|
|
add r7, r7, #1
|
|
strb r1, [r0, #0x143]
|
|
cmp r7, #0xb4
|
|
blt _0204D6C0
|
|
ldr r1, _0204D740 ; =GLOBAL_PROGRESS_PTR
|
|
mov r0, r4
|
|
ldr r1, [r1]
|
|
mov r2, #0x20
|
|
add r1, r1, #0x1f8
|
|
bl CopyBitsFrom
|
|
ldr r5, _0204D740 ; =GLOBAL_PROGRESS_PTR
|
|
mov r7, #0
|
|
mov r6, #8
|
|
_0204D714:
|
|
ldr r1, [r5]
|
|
mov r0, r4
|
|
add r1, r1, #0x1fc
|
|
mov r2, r6
|
|
add r1, r1, r7
|
|
bl CopyBitsFrom
|
|
add r7, r7, #1
|
|
cmp r7, #0x10
|
|
blt _0204D714
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
|
|
.align 2, 0
|
|
_0204D740: .word GLOBAL_PROGRESS_PTR
|
|
_0204D744: .word 0x00000483
|
|
arm_func_end CopyProgressInfoFrom
|
|
|
|
arm_func_start CopyProgressInfoFromScratchFrom
|
|
CopyProgressInfoFromScratchFrom: ; 0x0204D748
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #0x10
|
|
mov r3, r0
|
|
mov r2, r1
|
|
add r0, sp, #0
|
|
mov r1, r3
|
|
bl sub_02050974
|
|
add r0, sp, #0
|
|
bl CopyProgressInfoFrom
|
|
add r0, sp, #0
|
|
bl sub_020509BC
|
|
ldr r0, [sp, #8]
|
|
add sp, sp, #0x10
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end CopyProgressInfoFromScratchFrom
|
|
|
|
arm_func_start InitKaomadoStream
|
|
InitKaomadoStream: ; 0x0204D780
|
|
stmdb sp!, {r3, lr}
|
|
bl FileRom_InitDataTransfer
|
|
ldr r0, _0204D798 ; =KAOMADO_STREAM
|
|
bl FileRom_Veneer_FileInit
|
|
bl FileRom_StopDataTransfer
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0204D798: .word KAOMADO_STREAM
|
|
arm_func_end InitKaomadoStream
|
|
|
|
arm_func_start InitPortraitParams
|
|
InitPortraitParams: ; 0x0204D79C
|
|
mov r2, #0
|
|
strh r2, [r0]
|
|
sub r1, r2, #2
|
|
strb r1, [r0, #2]
|
|
strb r2, [r0, #3]
|
|
mov r1, #2
|
|
str r1, [r0, #4]
|
|
mov r1, #9
|
|
str r1, [r0, #8]
|
|
strb r2, [r0, #0xc]
|
|
strb r2, [r0, #0xd]
|
|
strb r2, [r0, #0xe]
|
|
strb r2, [r0, #0xf]
|
|
bx lr
|
|
arm_func_end InitPortraitParams
|
|
|
|
arm_func_start InitPortraitParamsWithMonsterId
|
|
InitPortraitParamsWithMonsterId: ; 0x0204D7D4
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
bl InitPortraitParams
|
|
strh r4, [r5]
|
|
mov r0, #0
|
|
strb r0, [r5, #2]
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end InitPortraitParamsWithMonsterId
|
|
|
|
arm_func_start SetPortraitEmotion
|
|
SetPortraitEmotion: ; 0x0204D7F4
|
|
ldrsh r2, [r0]
|
|
cmp r2, #0
|
|
strneb r1, [r0, #2]
|
|
bx lr
|
|
arm_func_end SetPortraitEmotion
|
|
|
|
arm_func_start SetPortraitLayout
|
|
SetPortraitLayout: ; 0x0204D804
|
|
ldrsh r2, [r0]
|
|
cmp r2, #0
|
|
cmpne r1, #0x20
|
|
bxeq lr
|
|
mov r2, #6
|
|
mul r2, r1, r2
|
|
ldr r3, _0204D844 ; =PORTRAIT_LAYOUTS
|
|
strb r1, [r0, #3]
|
|
ldrsh r1, [r3, r2]
|
|
add r2, r3, r2
|
|
str r1, [r0, #4]
|
|
ldrsh r1, [r2, #2]
|
|
str r1, [r0, #8]
|
|
ldrb r1, [r2, #4]
|
|
strb r1, [r0, #0xc]
|
|
bx lr
|
|
.align 2, 0
|
|
_0204D844: .word PORTRAIT_LAYOUTS
|
|
arm_func_end SetPortraitLayout
|
|
|
|
arm_func_start SetPortraitOffset
|
|
SetPortraitOffset: ; 0x0204D848
|
|
stmdb sp!, {r3, lr}
|
|
ldrsh r2, [r0]
|
|
cmp r2, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
ldrb r3, [r0, #3]
|
|
mov r2, #6
|
|
ldr lr, _0204D890 ; =PORTRAIT_LAYOUTS
|
|
smulbb ip, r3, r2
|
|
ldrsh r3, [lr, ip]
|
|
ldr r2, [r1]
|
|
add ip, lr, ip
|
|
add r2, r3, r2
|
|
str r2, [r0, #4]
|
|
ldrsh r2, [ip, #2]
|
|
ldr r1, [r1, #4]
|
|
add r1, r2, r1
|
|
str r1, [r0, #8]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0204D890: .word PORTRAIT_LAYOUTS
|
|
arm_func_end SetPortraitOffset
|
|
|
|
arm_func_start AllowPortraitDefault
|
|
AllowPortraitDefault: ; 0x0204D894
|
|
strb r1, [r0, #0xf]
|
|
bx lr
|
|
arm_func_end AllowPortraitDefault
|
|
|
|
arm_func_start IsValidPortrait
|
|
IsValidPortrait: ; 0x0204D89C
|
|
ldrsh r1, [r0]
|
|
cmp r1, #0
|
|
ldrnesb r1, [r0, #2]
|
|
mvnne r0, #1
|
|
cmpne r1, r0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
bx lr
|
|
arm_func_end IsValidPortrait
|
|
|
|
arm_func_start LoadPortrait
|
|
LoadPortrait: ; 0x0204D8BC
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0xc
|
|
mov sl, r0
|
|
mov sb, r1
|
|
ldrsh r7, [sl]
|
|
ldrsb r8, [sl, #2]
|
|
bl FileRom_InitDataTransfer
|
|
ldr r0, _0204DA14 ; =KAOMADO_STREAM
|
|
ldr r1, _0204DA18 ; =KAOMADO_FILEPATH
|
|
bl FileRom_HandleOpen
|
|
mov fp, #0
|
|
mov r4, fp
|
|
mov r5, #1
|
|
b _0204D9DC
|
|
_0204D8F4:
|
|
mov r0, #0x28
|
|
mul r0, r7, r0
|
|
add r0, r0, r8, lsl #1
|
|
mov r1, r0, lsl #2
|
|
ldr r0, _0204DA14 ; =KAOMADO_STREAM
|
|
mov r2, #0
|
|
sub r7, r7, #0x258
|
|
bl FileRom_HandleSeek
|
|
ldr r0, _0204DA14 ; =KAOMADO_STREAM
|
|
add r1, sp, #0
|
|
mov r2, #0xc
|
|
bl FileRom_HandleRead
|
|
ldr r0, [sp, #4]
|
|
cmp r0, #0
|
|
movge r0, #1
|
|
movlt r0, #0
|
|
strb r0, [sl, #0xd]
|
|
ldrb r0, [sl, #0xc]
|
|
cmp r0, #0
|
|
beq _0204D984
|
|
ldr r0, [sp, #4]
|
|
cmp r0, #0
|
|
mov r1, r0
|
|
bge _0204D96C
|
|
ldr r1, [sp]
|
|
cmp r0, #0
|
|
rsblt r0, r0, #0
|
|
sub r6, r0, r1
|
|
strb r5, [sl, #0xe]
|
|
b _0204D99C
|
|
_0204D96C:
|
|
ldr r2, [sp, #8]
|
|
cmp r2, #0
|
|
rsblt r2, r2, #0
|
|
sub r6, r2, r0
|
|
strb r4, [sl, #0xe]
|
|
b _0204D99C
|
|
_0204D984:
|
|
ldr r0, [sp, #4]
|
|
ldr r1, [sp]
|
|
cmp r0, #0
|
|
rsblt r0, r0, #0
|
|
sub r6, r0, r1
|
|
strb fp, [sl, #0xe]
|
|
_0204D99C:
|
|
cmp r1, #0
|
|
ble _0204D9DC
|
|
cmp sb, #0
|
|
beq _0204D9C8
|
|
ldr r0, _0204DA14 ; =KAOMADO_STREAM
|
|
mov r2, #0
|
|
bl FileRom_HandleSeek
|
|
ldr r0, _0204DA14 ; =KAOMADO_STREAM
|
|
mov r1, sb
|
|
mov r2, r6
|
|
bl FileRom_HandleRead
|
|
_0204D9C8:
|
|
ldr r0, _0204DA14 ; =KAOMADO_STREAM
|
|
bl FileClose
|
|
bl FileRom_StopDataTransfer
|
|
mov r0, #1
|
|
b _0204DA0C
|
|
_0204D9DC:
|
|
cmp r7, #0
|
|
bgt _0204D8F4
|
|
ldrb r0, [sl, #0xf]
|
|
cmp r0, #0
|
|
cmpne r8, #0
|
|
movne r8, #0
|
|
ldrnesh r7, [sl]
|
|
bne _0204D9DC
|
|
ldr r0, _0204DA14 ; =KAOMADO_STREAM
|
|
bl FileClose
|
|
bl FileRom_StopDataTransfer
|
|
mov r0, #0
|
|
_0204DA0C:
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_0204DA14: .word KAOMADO_STREAM
|
|
_0204DA18: .word KAOMADO_FILEPATH
|
|
arm_func_end LoadPortrait
|
|
|
|
arm_func_start sub_0204DA1C
|
|
sub_0204DA1C: ; 0x0204DA1C
|
|
ldr r1, _0204DA28 ; =ARM9_UNKNOWN_TABLE__NA_209E164
|
|
ldrb r0, [r1, r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_0204DA28: .word ARM9_UNKNOWN_TABLE__NA_209E164
|
|
arm_func_end sub_0204DA1C
|