pmd-sky/asm/main_0204F0A0.s
AnonymousRandomPerson 01360bcddd Decomped sub_0204F050
Decomped by anonymous user https://decomp.me/scratch/aS8VM
2026-03-19 23:44:13 -04:00

1190 lines
24 KiB
ArmAsm

.include "asm/macros.inc"
.include "main_0204F0A0.inc"
.text
arm_func_start sub_0204F0A0
sub_0204F0A0: ; 0x0204F0A0
stmdb sp!, {r3, lr}
mov r0, #0
mov r1, #0x27
bl LoadScriptVariableValue
mov r0, r0, lsl #0x10
mvn r1, #0
cmp r1, r0, asr #16
mov r0, r0, asr #0x10
moveq r0, #0xff
ldmeqia sp!, {r3, pc}
cmp r0, #0xd6
moveq r0, #0xd4
ldmeqia sp!, {r3, pc}
sub r1, r0, #0xd7
mov r1, r1, lsl #0x10
mov r1, r1, asr #0x10
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
cmp r1, #2
bhi _0204F104
mov r0, #0
mov r1, #0x29
bl LoadScriptVariableValue
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
_0204F104:
bl DungeonSwapIdxToId
ldmia sp!, {r3, pc}
arm_func_end sub_0204F0A0
arm_func_start sub_0204F10C
sub_0204F10C: ; 0x0204F10C
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0
mov r1, #0x27
bl LoadScriptVariableValue
mov r0, r0, lsl #0x10
mov r1, r0, asr #0x10
mvn r0, #0
cmp r1, r0
cmpne r1, #0xd6
cmpne r1, #0xd7
cmpne r1, #0xd8
cmpne r1, #0xd9
movne r0, #1
strneh r1, [r4]
mvneq r0, #0
streqh r0, [r4]
moveq r0, #0
ldmia sp!, {r4, pc}
arm_func_end sub_0204F10C
arm_func_start sub_0204F158
sub_0204F158: ; 0x0204F158
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0
mov r1, #0x27
bl LoadScriptVariableValue
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
cmp r0, #0xd7
bne _0204F1AC
mov r0, #0
mov r1, #0x29
bl LoadScriptVariableValue
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl DungeonSwapIdxToId
cmp r0, #0xff
beq _0204F1AC
cmp r0, #0xb4
strlob r0, [r4]
movlo r0, #1
ldmloia sp!, {r4, pc}
_0204F1AC:
mov r0, #0
ldmia sp!, {r4, pc}
arm_func_end sub_0204F158
arm_func_start sub_0204F1B4
sub_0204F1B4: ; 0x0204F1B4
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0
mov r1, #0x27
bl LoadScriptVariableValue
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
cmp r0, #0xd6
mov r0, #0
ldmneia sp!, {r4, pc}
mov r1, #0x29
bl LoadScriptVariableValue
strb r0, [r4]
mov r0, #1
ldmia sp!, {r4, pc}
arm_func_end sub_0204F1B4
arm_func_start sub_0204F1F0
sub_0204F1F0: ; 0x0204F1F0
stmdb sp!, {r3, r4, r5, lr}
movs r5, r0
mov r4, r1
beq _0204F22C
ldr lr, _0204F23C ; =_022AB5AC
mov ip, #0xe
_0204F208:
ldmia r5!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _0204F208
ldmia r5, {r0, r1}
ldr r2, _0204F240 ; =_022AB4F8
stmia lr, {r0, r1}
strb r4, [r2, #1]
ldmia sp!, {r3, r4, r5, pc}
_0204F22C:
ldr r0, _0204F240 ; =_022AB4F8
mov r1, #0
strb r1, [r0, #1]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0204F23C: .word _022AB5AC
_0204F240: .word _022AB4F8
arm_func_end sub_0204F1F0
arm_func_start sub_0204F244
sub_0204F244: ; 0x0204F244
stmdb sp!, {r4, lr}
movs r4, r0
beq _0204F270
ldr lr, _0204F27C ; =_022AB5AC
mov ip, #0xe
_0204F258:
ldmia lr!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _0204F258
ldmia lr, {r0, r1}
stmia r4, {r0, r1}
_0204F270:
ldr r0, _0204F280 ; =_022AB4F8
ldrb r0, [r0, #1]
ldmia sp!, {r4, pc}
.align 2, 0
_0204F27C: .word _022AB5AC
_0204F280: .word _022AB4F8
arm_func_end sub_0204F244
arm_func_start sub_0204F284
sub_0204F284: ; 0x0204F284
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #8
mov sl, r0
add r0, sp, #0
mov sb, r1
bl GetPartyMembers
mov r6, r0
mov r0, sl
bl GetMaxMembersAllowed
cmp r6, r0
ble _0204F2C0
cmp r0, #1
ldreq r0, _0204F354 ; =0x00000301
ldrne r0, _0204F358 ; =0x00000101
b _0204F34C
_0204F2C0:
cmp sb, #0
beq _0204F2D8
add r0, r6, #1
cmp r0, #4
ldrgt r0, _0204F358 ; =0x00000101
bgt _0204F34C
_0204F2D8:
mov r7, #0
mov r8, r7
add r5, sp, #0
ldr r4, _0204F35C ; =TEAM_MEMBER_TABLE_PTR
mov fp, #0x44
b _0204F310
_0204F2F0:
mov r0, r8, lsl #1
ldrsh r0, [r5, r0]
ldr r1, [r4]
smlabb r0, r0, fp, r1
ldrsh r0, [r0, #4]
bl GetBodySize
add r7, r7, r0
add r8, r8, #1
_0204F310:
cmp r8, r6
blt _0204F2F0
cmp sb, #0
beq _0204F32C
mov r0, sb
bl GetBodySize
add r7, r7, r0
_0204F32C:
cmp r7, #6
movgt r0, #0x81
bgt _0204F34C
mov r0, sl
bl IsLevelResetDungeon
cmp r0, #0
ldrne r0, _0204F360 ; =0x00002002
moveq r0, #0
_0204F34C:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0204F354: .word 0x00000301
_0204F358: .word 0x00000101
_0204F35C: .word TEAM_MEMBER_TABLE_PTR
_0204F360: .word 0x00002002
arm_func_end sub_0204F284
arm_func_start sub_0204F364
sub_0204F364: ; 0x0204F364
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, #0
bl GetMaxItemsAllowed
mov r4, r0
bl GetNbItemsInBag
cmp r4, #0
ble _0204F39C
cmp r4, r0
bge _0204F39C
orr r5, r5, #2
cmp r4, #0
orreq r5, r5, #0x800
orrne r5, r5, #0x400
_0204F39C:
mov r0, r6
bl IsMoneyAllowed
cmp r0, #0
bne _0204F3BC
bl GetMoneyCarried
cmp r0, #0
orrgt r5, r5, #2
orrgt r5, r5, #0x1000
_0204F3BC:
mov r0, r5
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_0204F364
arm_func_start CheckMissionRestrictions
CheckMissionRestrictions: ; 0x0204F3C4
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl GetGameMode
cmp r0, #2
bne _0204F424
mov r0, r5
bl DungeonSwapIdToIdx
bl GetDungeonModeSpecial
cmp r0, #2
bne _0204F424
add r1, sp, #2
add r2, sp, #0
mov r0, r5
bl sub_0205EE40
cmp r0, #0
beq _0204F424
ldrsh r0, [sp]
cmp r0, #0
movne r0, #0x21
ldmneia sp!, {r3, r4, r5, pc}
ldrh r0, [sp, #2]
cmp r0, #0
movne r0, #0x41
ldmneia sp!, {r3, r4, r5, pc}
_0204F424:
cmp r5, #0x26
cmpne r5, #0x29
cmpne r5, #0x3f
cmpne r5, #0x63
cmpne r5, #0x64
cmpne r5, #0x65
cmpne r5, #0x66
cmpne r5, #0x67
cmpne r5, #0x68
cmpne r5, #0x6b
cmpne r5, #0x6c
cmpne r5, #0x6d
cmpne r5, #0x6e
cmpne r5, #0xae
ldreq r0, _0204F484 ; =0x00004001
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, r5
mov r1, #0
bl sub_0204F284
mov r4, r0
mov r0, r5
bl sub_0204F364
orr r0, r4, r0
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0204F484: .word 0x00004001
arm_func_end CheckMissionRestrictions
arm_func_start sub_0204F488
sub_0204F488: ; 0x0204F488
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov sb, r0
mov r8, r1
mov r7, r2
bl DungeonSwapIdToIdx
mov r5, r0
mov r0, sb
bl GetMaxReachedFloor
mov r6, r0
mov r0, r5
bl GetDungeonMode
mov r4, r0
cmp r4, #1
moveq r0, #0x11
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
cmp r6, #1
bge _0204F4EC
mov r0, r5
bl sub_0204CEE0
cmp r0, #0
bne _0204F4EC
cmp r4, #3
movne r0, #5
moveq r0, #9
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_0204F4EC:
cmp r8, r6
movgt r0, #9
ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
cmp sb, #0x26
cmpne sb, #0x29
cmpne sb, #0x3f
cmpne sb, #0x63
cmpne sb, #0x64
cmpne sb, #0x65
cmpne sb, #0x66
cmpne sb, #0x67
cmpne sb, #0x68
cmpne sb, #0x6b
cmpne sb, #0x6c
cmpne sb, #0x6d
cmpne sb, #0x6e
cmpne sb, #0xae
ldreq r0, _0204F558 ; =0x00004001
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
mov r0, sb
mov r1, r7
bl sub_0204F284
mov r4, r0
mov r0, sb
bl sub_0204F364
orr r0, r4, r0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0204F558: .word 0x00004001
arm_func_end sub_0204F488
arm_func_start TilesetSecondaryTerrainIsChasm
TilesetSecondaryTerrainIsChasm: ; 0x0204F55C
ldr r1, _0204F578 ; =SECONDARY_TERRAIN_TYPES
ldrb r0, [r1, r0]
cmp r0, #2
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_0204F578: .word SECONDARY_TERRAIN_TYPES
arm_func_end TilesetSecondaryTerrainIsChasm
arm_func_start GetNbFloors
GetNbFloors: ; 0x0204F57C
cmp r0, #0xb4
blo _0204F590
cmp r0, #0xbd
movls r0, #5
bxls lr
_0204F590:
cmp r0, #0xbe
moveq r0, #1
bxeq lr
cmp r0, #0xbf
ldrlo r1, _0204F5B0 ; =DUNGEON_DATA_LIST
movhs r0, #0x30
ldrlob r0, [r1, r0, lsl #2]
bx lr
.align 2, 0
_0204F5B0: .word DUNGEON_DATA_LIST
arm_func_end GetNbFloors
arm_func_start GetNbFloorsPlusOne
GetNbFloorsPlusOne: ; 0x0204F5B4
stmdb sp!, {r3, lr}
bl GetNbFloors
add r0, r0, #1
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end GetNbFloorsPlusOne
arm_func_start GetDungeonGroup
GetDungeonGroup: ; 0x0204F5C8
cmp r0, #0xb4
ldrlo r1, _0204F5DC ; =_0209E3A1
movhs r0, #0x35
ldrlob r0, [r1, r0, lsl #2]
bx lr
.align 2, 0
_0204F5DC: .word _0209E3A1
arm_func_end GetDungeonGroup
arm_func_start GetNbPrecedingFloors
GetNbPrecedingFloors: ; 0x0204F5E0
cmp r0, #0xb4
ldrlo r1, _0204F5F4 ; =_0209E3A2
movhs r0, #0
ldrlob r0, [r1, r0, lsl #2]
bx lr
.align 2, 0
_0204F5F4: .word _0209E3A2
arm_func_end GetNbPrecedingFloors
arm_func_start GetNbFloorsDungeonGroup
GetNbFloorsDungeonGroup: ; 0x0204F5F8
cmp r0, #0xb4
ldrlo r1, _0204F60C ; =_0209E3A3
movhs r0, #0
ldrlob r0, [r1, r0, lsl #2]
bx lr
.align 2, 0
_0204F60C: .word _0209E3A3
arm_func_end GetNbFloorsDungeonGroup
arm_func_start sub_0204F610
sub_0204F610: ; 0x0204F610
stmdb sp!, {r4, lr}
mov r4, r0
cmp r4, #0xb4
movhs r0, #0
ldmhsia sp!, {r4, pc}
bl GetMaxMembersAllowed
cmp r0, #1
bne _0204F644
mov r0, r4
bl IsRecruitingAllowed
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r4, pc}
_0204F644:
mov r0, #0
ldmia sp!, {r4, pc}
arm_func_end sub_0204F610
arm_func_start DungeonFloorToGroupFloor
DungeonFloorToGroupFloor: ; 0x0204F64C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r1
mov r4, r0
ldrb r0, [r5]
cmp r0, #0xb4
blo _0204F690
cmp r0, #0xbd
bhi _0204F690
mov r0, #0x35
strb r0, [r4]
ldrb r0, [r5]
ldrb r1, [r5, #1]
sub r0, r0, #0xb4
add r0, r0, r0, lsl #2
add r0, r1, r0
strb r0, [r4, #1]
ldmia sp!, {r3, r4, r5, pc}
_0204F690:
cmp r0, #0xbe
bne _0204F6B0
mov r0, #0x35
strb r0, [r4]
ldrb r0, [r5, #1]
add r0, r0, #0x32
strb r0, [r4, #1]
ldmia sp!, {r3, r4, r5, pc}
_0204F6B0:
cmp r0, #0xbf
blo _0204F6D8
cmp r0, #0xd3
bhi _0204F6D8
mov r0, #0x35
strb r0, [r4]
ldrb r0, [r5, #1]
add r0, r0, #0x33
strb r0, [r4, #1]
ldmia sp!, {r3, r4, r5, pc}
_0204F6D8:
bl GetDungeonGroup
strb r0, [r4]
ldrb r0, [r5]
bl GetNbPrecedingFloors
ldrb r1, [r5, #1]
add r0, r1, r0
strb r0, [r4, #1]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end DungeonFloorToGroupFloor
arm_func_start sub_0204F6F8
sub_0204F6F8: ; 0x0204F6F8
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r0, r1
mov r1, r2
bl sub_0204F77C
cmp r5, #3
addls pc, pc, r5, lsl #2
b _0204F770
_0204F718: ; jump table
b _0204F728 ; case 0
b _0204F734 ; case 1
b _0204F74C ; case 2
b _0204F760 ; case 3
_0204F728:
bl GetGroundNameId
mov r4, r0
b _0204F770
_0204F734:
bl GetGroundNameId
#ifdef JAPAN
add r0, r0, #3
add r0, r0, #0x100
#else
ldr r1, _0204F778 ; =0xFFFFFEFD
add r0, r0, r1
#endif
mov r0, r0, lsl #0x10
mov r4, r0, lsr #0x10
b _0204F770
_0204F74C:
#if defined(EUROPE)
add r0, r0, #0xbe
add r0, r0, #0x4300
#elif defined(JAPAN)
add r0, r0, #0x26c
add r0, r0, #0x400
#else
add r0, r0, #0x3bc
add r0, r0, #0x4000
#endif
mov r0, r0, lsl #0x10
mov r4, r0, lsr #0x10
b _0204F770
_0204F760:
#if defined(EUROPE)
add r0, r0, #0xbd
add r0, r0, #0x4200
#elif defined(JAPAN)
add r0, r0, #0x6f
add r0, r0, #0x700
#else
add r0, r0, #0xbb
add r0, r0, #0x4200
#endif
mov r0, r0, lsl #0x10
mov r4, r0, lsr #0x10
_0204F770:
mov r0, r4
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
#ifndef JAPAN
_0204F778: .word 0xFFFFFEFD
#endif
arm_func_end sub_0204F6F8
arm_func_start sub_0204F77C
sub_0204F77C: ; 0x0204F77C
stmdb sp!, {r3, r4, r5, lr}
movs r4, r1
mov r5, r0
beq _0204F7A0
cmp r5, #0xae
bne _0204F7A0
bl GetNbFloorsDungeonGroup
cmp r4, r0
moveq r5, #0x7f
_0204F7A0:
mov r0, r5
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0204F77C
arm_func_start sub_0204F7A8
sub_0204F7A8: ; 0x0204F7A8
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r0
ldrb r0, [r4]
cmp r0, #0xb4
movhs r0, #1
bhs _0204F808
bl GetNbFloors
add r1, r0, #1
ldrb r0, [r4, #1]
and r1, r1, #0xff
cmp r0, r1
movhs r0, #1
bhs _0204F808
add r0, sp, #0
mov r1, r4
bl DungeonFloorToGroupFloor
ldrb r2, [sp]
cmp r2, #0x64
movhs r0, #1
ldrlo r1, _0204F810 ; =MISSION_FLOOR_RANKS_PTRS
ldrlob r0, [sp, #1]
ldrlo r1, [r1, r2, lsl #2]
ldrlob r0, [r1, r0]
_0204F808:
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
.align 2, 0
_0204F810: .word MISSION_FLOOR_RANKS_PTRS
arm_func_end sub_0204F7A8
arm_func_start GetMissionRank
GetMissionRank: ; 0x0204F814
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r0
ldrb r0, [r4]
cmp r0, #0xb4
movhs r0, #1
bhs _0204F880
bl GetNbFloors
add r1, r0, #1
ldrb r0, [r4, #1]
and r1, r1, #0xff
cmp r0, r1
movhs r0, #1
bhs _0204F880
add r0, sp, #0
mov r1, r4
bl DungeonFloorToGroupFloor
ldrb r2, [sp]
cmp r2, #0x64
movhs r0, #1
bhs _0204F880
ldrb r1, [sp, #1]
ldr r0, _0204F888 ; =MISSION_FLOOR_RANKS_PTRS
cmp r1, #1
ldr r0, [r0, r2, lsl #2]
movle r1, #2
ldrb r0, [r0, r1]
_0204F880:
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
.align 2, 0
_0204F888: .word MISSION_FLOOR_RANKS_PTRS
arm_func_end GetMissionRank
arm_func_start GetOutlawLevel
GetOutlawLevel: ; 0x0204F88C
stmdb sp!, {r3, lr}
bl GetMissionRank
ldr r1, _0204F8A4 ; =OUTLAW_LEVEL_TABLE
mov r0, r0, lsl #1
ldrsh r0, [r1, r0]
ldmia sp!, {r3, pc}
.align 2, 0
_0204F8A4: .word OUTLAW_LEVEL_TABLE
arm_func_end GetOutlawLevel
arm_func_start GetOutlawLeaderLevel
GetOutlawLeaderLevel: ; 0x0204F8A8
stmdb sp!, {r3, lr}
bl GetMissionRank
ldr r1, _0204F8C0 ; =OUTLAW_LEVEL_TABLE
mov r0, r0, lsl #1
ldrsh r0, [r1, r0]
ldmia sp!, {r3, pc}
.align 2, 0
_0204F8C0: .word OUTLAW_LEVEL_TABLE
arm_func_end GetOutlawLeaderLevel
arm_func_start GetOutlawMinionLevel
GetOutlawMinionLevel: ; 0x0204F8C4
stmdb sp!, {r3, lr}
bl GetMissionRank
ldr r1, _0204F8DC ; =OUTLAW_MINION_LEVEL_TABLE
mov r0, r0, lsl #1
ldrsh r0, [r1, r0]
ldmia sp!, {r3, pc}
.align 2, 0
_0204F8DC: .word OUTLAW_MINION_LEVEL_TABLE
arm_func_end GetOutlawMinionLevel
arm_func_start AddGuestMonster
AddGuestMonster: ; 0x0204F8E0
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0x3c
add lr, sp, #0x18
mov r5, r0
mov r4, r1
mov r6, r2
mov ip, #2
_0204F8FC:
ldmia r6!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _0204F8FC
ldr r1, [r6]
mov r0, #1
str r1, [lr]
strb r0, [r5, #0xf]
ldrsh r0, [sp, #0x1c]
bl GetNameString
mov r1, r0
add r0, sp, #0
mov r2, #0xa
bl StrncpyName
add r2, sp, #0
add r1, r5, #0x1c
mov r0, #0x44
mla r0, r4, r0, r1
add r1, sp, #0x18
str r2, [sp, #0x18]
bl GuestMonsterToGroundMonster
add sp, sp, #0x3c
ldmia sp!, {r3, r4, r5, r6, pc}
arm_func_end AddGuestMonster
arm_func_start GetGroundNameId
GetGroundNameId: ; 0x0204F958
stmdb sp!, {r4, lr}
mov r4, r0
cmp r4, #6
bne _0204F980
mov r0, #0x1b
bl GetResolvedPerformanceProgressFlag
cmp r0, #0
bne _0204F99C
ldr r0, _0204F9B0 ; =0x000042B9
ldmia sp!, {r4, pc}
_0204F980:
cmp r4, #0x15
bne _0204F99C
mov r0, #0x1c
bl GetResolvedPerformanceProgressFlag
cmp r0, #0
#ifdef JAPAN
moveq r0, #0x1c4
#else
ldreq r0, _0204F9B4 ; =0x000042BA
#endif
ldmeqia sp!, {r4, pc}
_0204F99C:
#if defined(EUROPE)
add r0, r4, #0xba
add r0, r0, #0x4100
#elif defined(JAPAN)
add r0, r4, #0xc2
#else
add r0, r4, #0x1b8
add r0, r0, #0x4000
#endif
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
ldmia sp!, {r4, pc}
.align 2, 0
#if defined(EUROPE)
_0204F9B0: .word 0x000042BB
_0204F9B4: .word 0x000042BC
#elif defined(JAPAN)
_0204F9B0: .word 0x000001C3
#else
_0204F9B0: .word 0x000042B9
_0204F9B4: .word 0x000042BA
#endif
arm_func_end GetGroundNameId
arm_func_start sub_0204F9B8
sub_0204F9B8: ; 0x0204F9B8
ldr ip, _0204F9C4 ; =ResetPlayTimer
ldr r0, _0204F9C8 ; =PLAY_TIME_SECONDS
bx ip
.align 2, 0
_0204F9C4: .word ResetPlayTimer
_0204F9C8: .word PLAY_TIME_SECONDS
arm_func_end sub_0204F9B8
arm_func_start sub_0204F9CC
sub_0204F9CC: ; 0x0204F9CC
ldr ip, _0204F9D8 ; =PlayTimerTick
ldr r0, _0204F9DC ; =PLAY_TIME_SECONDS
bx ip
.align 2, 0
_0204F9D8: .word PlayTimerTick
_0204F9DC: .word PLAY_TIME_SECONDS
arm_func_end sub_0204F9CC
arm_func_start sub_0204F9E0
sub_0204F9E0: ; 0x0204F9E0
ldr ip, _0204F9EC ; =GetPlayTimeSeconds
ldr r0, _0204F9F0 ; =PLAY_TIME_SECONDS
bx ip
.align 2, 0
_0204F9EC: .word GetPlayTimeSeconds
_0204F9F0: .word PLAY_TIME_SECONDS
arm_func_end sub_0204F9E0
arm_func_start sub_0204F9F4
sub_0204F9F4: ; 0x0204F9F4
ldr ip, _0204FA04 ; =sub_02050E5C
mov r1, r0
ldr r0, _0204FA08 ; =PLAY_TIME_SECONDS
bx ip
.align 2, 0
_0204FA04: .word sub_02050E5C
_0204FA08: .word PLAY_TIME_SECONDS
arm_func_end sub_0204F9F4
arm_func_start sub_0204FA0C
sub_0204FA0C: ; 0x0204FA0C
ldr ip, _0204FA1C ; =sub_02050E8C
mov r1, r0
ldr r0, _0204FA20 ; =PLAY_TIME_SECONDS
bx ip
.align 2, 0
_0204FA1C: .word sub_02050E8C
_0204FA20: .word PLAY_TIME_SECONDS
arm_func_end sub_0204FA0C
arm_func_start SetAdventureLogStructLocation
SetAdventureLogStructLocation: ; 0x0204FA24
ldr r1, _0204FA34 ; =_022AB69C
ldr r0, _0204FA38 ; =ADVENTURE_LOG_PTR
str r1, [r0]
bx lr
.align 2, 0
_0204FA34: .word _022AB69C
_0204FA38: .word ADVENTURE_LOG_PTR
arm_func_end SetAdventureLogStructLocation
arm_func_start SetAdventureLogDungeonFloor
SetAdventureLogDungeonFloor: ; 0x0204FA3C
ldr r1, _0204FA58 ; =ADVENTURE_LOG_PTR
ldrb r2, [r0]
ldr r1, [r1]
strb r2, [r1, #0x278]
ldrb r0, [r0, #1]
strb r0, [r1, #0x279]
bx lr
.align 2, 0
_0204FA58: .word ADVENTURE_LOG_PTR
arm_func_end SetAdventureLogDungeonFloor
arm_func_start GetAdventureLogDungeonFloor
GetAdventureLogDungeonFloor: ; 0x0204FA5C
ldr r0, _0204FA6C ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
add r0, r0, #0x278
bx lr
.align 2, 0
_0204FA6C: .word ADVENTURE_LOG_PTR
arm_func_end GetAdventureLogDungeonFloor
arm_func_start ClearAdventureLogStruct
ClearAdventureLogStruct: ; 0x0204FA70
mov r3, #0
ldr r1, _0204FB98 ; =ADVENTURE_LOG_PTR
mov r0, r3
_0204FA7C:
ldr r2, [r1]
str r0, [r2, r3, lsl #2]
add r3, r3, #1
cmp r3, #4
blt _0204FA7C
ldr r1, _0204FB98 ; =ADVENTURE_LOG_PTR
mov r3, #0
ldr r2, [r1]
str r0, [r2, #0x2c]
ldr r2, [r1]
str r0, [r2, #0x30]
ldr r2, [r1]
str r0, [r2, #0x34]
ldr r2, [r1]
str r0, [r2, #0x28]
ldr r2, [r1]
str r0, [r2, #0x10]
ldr r2, [r1]
str r0, [r2, #0x14]
ldr r2, [r1]
str r0, [r2, #0x18]
ldr r2, [r1]
str r0, [r2, #0x1c]
ldr r2, [r1]
str r0, [r2, #0x20]
ldr r2, [r1]
str r0, [r2, #0x24]
ldr r2, [r1]
str r0, [r2, #0x38]
ldr r2, [r1]
str r0, [r2, #0x3c]
ldr r2, [r1]
str r0, [r2, #0x40]
_0204FB00:
ldr r2, [r1]
add r2, r2, r0, lsl #2
str r3, [r2, #0x44]
ldr r2, [r1]
add r2, r2, r0, lsl #2
add r0, r0, #1
str r3, [r2, #0xd8]
cmp r0, #0x25
blt _0204FB00
ldr r0, _0204FB98 ; =ADVENTURE_LOG_PTR
mov r2, #0
_0204FB2C:
ldr r1, [r0]
add r1, r1, r3, lsl #2
add r3, r3, #1
str r2, [r1, #0x16c]
cmp r3, #0x11
blt _0204FB2C
ldr r0, _0204FB98 ; =ADVENTURE_LOG_PTR
mov ip, #0
_0204FB4C:
ldr r1, [r0]
add r1, r1, r2, lsl #2
add r2, r2, #1
str ip, [r1, #0x1b0]
cmp r2, #0x2c
blt _0204FB4C
ldr r1, _0204FB98 ; =ADVENTURE_LOG_PTR
ldr r0, [r1]
str ip, [r0, #0x260]
mov r0, #0x3e8
_0204FB74:
rsb r2, ip, #5
mul r3, r2, r0
ldr r2, [r1]
add r2, r2, ip, lsl #2
add ip, ip, #1
str r3, [r2, #0x264]
cmp ip, #5
blt _0204FB74
bx lr
.align 2, 0
_0204FB98: .word ADVENTURE_LOG_PTR
arm_func_end ClearAdventureLogStruct
arm_func_start SetAdventureLogCompleted
SetAdventureLogCompleted: ; 0x0204FB9C
ldr r1, _0204FBC0 ; =ADVENTURE_LOG_PTR
mov r3, r0, asr #5
ldr ip, [r1]
and r0, r0, #0x1f
ldr r2, [ip, r3, lsl #2]
mov r1, #1
orr r0, r2, r1, lsl r0
str r0, [ip, r3, lsl #2]
bx lr
.align 2, 0
_0204FBC0: .word ADVENTURE_LOG_PTR
arm_func_end SetAdventureLogCompleted
arm_func_start IsAdventureLogNotEmpty
IsAdventureLogNotEmpty: ; 0x0204FBC4
ldr r0, _0204FBF8 ; =ADVENTURE_LOG_PTR
mov r1, #0
ldr r2, [r0]
b _0204FBE8
_0204FBD4:
ldr r0, [r2, r1, lsl #2]
cmp r0, #0
movne r0, #1
bxne lr
add r1, r1, #1
_0204FBE8:
cmp r1, #4
blt _0204FBD4
mov r0, #0
bx lr
.align 2, 0
_0204FBF8: .word ADVENTURE_LOG_PTR
arm_func_end IsAdventureLogNotEmpty
arm_func_start GetAdventureLogCompleted
GetAdventureLogCompleted: ; 0x0204FBFC
ldr r1, _0204FC24 ; =ADVENTURE_LOG_PTR
mov r2, r0, asr #5
ldr r1, [r1]
and r3, r0, #0x1f
ldr r0, [r1, r2, lsl #2]
mov r1, #1
tst r0, r1, lsl r3
moveq r1, #0
and r0, r1, #0xff
bx lr
.align 2, 0
_0204FC24: .word ADVENTURE_LOG_PTR
arm_func_end GetAdventureLogCompleted
arm_func_start IncrementNbDungeonsCleared
IncrementNbDungeonsCleared: ; 0x0204FC28
ldr r0, _0204FC64 ; =ADVENTURE_LOG_PTR
ldr r1, _0204FC68 ; =0x000F423F
ldr r3, [r0]
ldr r2, [r3, #0x10]
add r2, r2, #1
str r2, [r3, #0x10]
ldr r3, [r0]
ldr r2, [r3]
orr r2, r2, #0x10
str r2, [r3]
ldr r2, [r0]
ldr r0, [r2, #0x10]
cmp r0, r1
strgt r1, [r2, #0x10]
bx lr
.align 2, 0
_0204FC64: .word ADVENTURE_LOG_PTR
_0204FC68: .word 0x000F423F
arm_func_end IncrementNbDungeonsCleared
arm_func_start GetNbDungeonsCleared
GetNbDungeonsCleared: ; 0x0204FC6C
ldr r0, _0204FC7C ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x10]
bx lr
.align 2, 0
_0204FC7C: .word ADVENTURE_LOG_PTR
arm_func_end GetNbDungeonsCleared
arm_func_start IncrementNbFriendRescues
IncrementNbFriendRescues: ; 0x0204FC80
ldr r0, _0204FCC0 ; =ADVENTURE_LOG_PTR
ldr r1, _0204FCC4 ; =0x000F423F
ldr r3, [r0]
ldr r2, [r3, #0x14]
add r2, r2, #1
str r2, [r3, #0x14]
ldr r2, [r0]
ldr r0, [r2, #0x14]
cmp r0, r1
ldr r0, _0204FCC0 ; =ADVENTURE_LOG_PTR
strgt r1, [r2, #0x14]
ldr r1, [r0]
ldr r0, [r1]
orr r0, r0, #0x40
str r0, [r1]
bx lr
.align 2, 0
_0204FCC0: .word ADVENTURE_LOG_PTR
_0204FCC4: .word 0x000F423F
arm_func_end IncrementNbFriendRescues
arm_func_start GetNbFriendRescues
GetNbFriendRescues: ; 0x0204FCC8
ldr r0, _0204FCD8 ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x14]
bx lr
.align 2, 0
_0204FCD8: .word ADVENTURE_LOG_PTR
arm_func_end GetNbFriendRescues
arm_func_start IncrementNbEvolutions
IncrementNbEvolutions: ; 0x0204FCDC
ldr r0, _0204FD1C ; =ADVENTURE_LOG_PTR
ldr r1, _0204FD20 ; =0x000F423F
ldr r3, [r0]
ldr r2, [r3, #0x18]
add r2, r2, #1
str r2, [r3, #0x18]
ldr r2, [r0]
ldr r0, [r2, #0x18]
cmp r0, r1
ldr r0, _0204FD1C ; =ADVENTURE_LOG_PTR
strgt r1, [r2, #0x18]
ldr r1, [r0]
ldr r0, [r1]
orr r0, r0, #0x80
str r0, [r1]
bx lr
.align 2, 0
_0204FD1C: .word ADVENTURE_LOG_PTR
_0204FD20: .word 0x000F423F
arm_func_end IncrementNbEvolutions
arm_func_start GetNbEvolutions
GetNbEvolutions: ; 0x0204FD24
ldr r0, _0204FD34 ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x18]
bx lr
.align 2, 0
_0204FD34: .word ADVENTURE_LOG_PTR
arm_func_end GetNbEvolutions
arm_func_start IncrementNbSteals
IncrementNbSteals: ; 0x0204FD38
bx lr
arm_func_end IncrementNbSteals
arm_func_start IncrementNbEggsHatched
IncrementNbEggsHatched: ; 0x0204FD3C
ldr r1, _0204FD70 ; =ADVENTURE_LOG_PTR
ldr r0, _0204FD74 ; =0x000F423F
ldr r2, [r1]
ldr r1, [r2, #0x1c]
cmp r1, r0
addlt r0, r1, #1
strlt r0, [r2, #0x1c]
ldr r0, _0204FD70 ; =ADVENTURE_LOG_PTR
ldr r1, [r0]
ldr r0, [r1]
orr r0, r0, #0x100
str r0, [r1]
bx lr
.align 2, 0
_0204FD70: .word ADVENTURE_LOG_PTR
_0204FD74: .word 0x000F423F
arm_func_end IncrementNbEggsHatched
arm_func_start GetNbEggsHatched
GetNbEggsHatched: ; 0x0204FD78
ldr r0, _0204FD88 ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x1c]
bx lr
.align 2, 0
_0204FD88: .word ADVENTURE_LOG_PTR
arm_func_end GetNbEggsHatched
arm_func_start GetNbPokemonJoined
GetNbPokemonJoined: ; 0x0204FD8C
ldr r0, _0204FD9C ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x2c]
bx lr
.align 2, 0
_0204FD9C: .word ADVENTURE_LOG_PTR
arm_func_end GetNbPokemonJoined
arm_func_start GetNbMovesLearned
GetNbMovesLearned: ; 0x0204FDA0
ldr r0, _0204FDB0 ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x34]
bx lr
.align 2, 0
_0204FDB0: .word ADVENTURE_LOG_PTR
arm_func_end GetNbMovesLearned
arm_func_start SetVictoriesOnOneFloor
SetVictoriesOnOneFloor: ; 0x0204FDB4
ldr r1, _0204FDE0 ; =0x000F423F
cmp r0, r1
movgt r0, r1
ldr r1, _0204FDE4 ; =ADVENTURE_LOG_PTR
ldr r2, [r1]
str r0, [r2, #0x28]
ldr r1, [r1]
ldr r0, [r1]
orr r0, r0, #0x200
str r0, [r1]
bx lr
.align 2, 0
_0204FDE0: .word 0x000F423F
_0204FDE4: .word ADVENTURE_LOG_PTR
arm_func_end SetVictoriesOnOneFloor
arm_func_start GetVictoriesOnOneFloor
GetVictoriesOnOneFloor: ; 0x0204FDE8
ldr r0, _0204FDF8 ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x28]
bx lr
.align 2, 0
_0204FDF8: .word ADVENTURE_LOG_PTR
arm_func_end GetVictoriesOnOneFloor