pmd-sky/asm/main_0204EFE0.s
AnonymousRandomPerson 244b3e33e7 Decomped ReadMonsterFromSave
Decomped by @slaw-22
2026-03-16 22:06:09 -04:00

2787 lines
54 KiB
ArmAsm

.include "asm/macros.inc"
.include "main_0204EFE0.inc"
.text
arm_func_start sub_0204F024
sub_0204F024: ; 0x0204F024
ldr r1, _0204F030 ; =PENDING_DUNGEON_ID
strb r0, [r1, #0xe]
bx lr
.align 2, 0
_0204F030: .word PENDING_DUNGEON_ID
arm_func_end sub_0204F024
arm_func_start sub_0204F034
sub_0204F034: ; 0x0204F034
stmdb sp!, {r3, lr}
mov r0, #0
mov r1, #0x28
bl LoadScriptVariableValue
mov r0, r0, lsl #0x18
mov r0, r0, asr #0x18
ldmia sp!, {r3, pc}
arm_func_end sub_0204F034
arm_func_start sub_0204F050
sub_0204F050: ; 0x0204F050
stmdb sp!, {r3, lr}
mov r0, #0
mov r1, #0x27
bl LoadScriptVariableValue
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
mvn r1, #0
cmp r0, r1
cmpne r0, #0xd6
ldmeqia sp!, {r3, pc}
cmp r0, #0xd7
cmpeq r0, #0xd9
cmpeq r0, #0xd8
ldmeqia sp!, {r3, pc}
mov r0, #0
mov r1, #0x29
bl LoadScriptVariableValue
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
ldmia sp!, {r3, pc}
arm_func_end sub_0204F050
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
arm_func_start SetPokemonJoined
SetPokemonJoined: ; 0x0204FDFC
stmdb sp!, {r3, lr}
bl GetDexNumberVeneer
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldr r3, _0204FE54 ; =ADVENTURE_LOG_PTR
mov r1, r0, asr #4
ldr lr, [r3]
add r1, r0, r1, lsr #27
ldr ip, [lr]
mov r2, r0, lsr #0x1f
orr ip, ip, #1
str ip, [lr]
ldr r3, [r3]
rsb r0, r2, r0, lsl #27
add lr, r3, #0x44
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
_0204FE54: .word ADVENTURE_LOG_PTR
arm_func_end SetPokemonJoined
arm_func_start SetPokemonBattled
SetPokemonBattled: ; 0x0204FE58
stmdb sp!, {r3, lr}
bl GetDexNumberVeneer
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldr r3, _0204FEB0 ; =ADVENTURE_LOG_PTR
mov r1, r0, asr #4
ldr lr, [r3]
add r1, r0, r1, lsr #27
ldr ip, [lr]
mov r2, r0, lsr #0x1f
orr ip, ip, #2
str ip, [lr]
ldr r3, [r3]
rsb r0, r2, r0, lsl #27
add lr, r3, #0xd8
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
_0204FEB0: .word ADVENTURE_LOG_PTR
arm_func_end SetPokemonBattled
arm_func_start GetNbPokemonBattled
GetNbPokemonBattled: ; 0x0204FEB4
ldr r0, _0204FEC4 ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x30]
bx lr
.align 2, 0
_0204FEC4: .word ADVENTURE_LOG_PTR
arm_func_end GetNbPokemonBattled
arm_func_start IncrementNbBigTreasureWins
IncrementNbBigTreasureWins: ; 0x0204FEC8
ldr r0, _0204FEE0 ; =ADVENTURE_LOG_PTR
ldr ip, _0204FEE4 ; =SetNbBigTreasureWins
ldr r0, [r0]
ldr r0, [r0, #0x38]
add r0, r0, #1
bx ip
.align 2, 0
_0204FEE0: .word ADVENTURE_LOG_PTR
_0204FEE4: .word SetNbBigTreasureWins
arm_func_end IncrementNbBigTreasureWins
arm_func_start SetNbBigTreasureWins
SetNbBigTreasureWins: ; 0x0204FEE8
ldr r2, _0204FF18 ; =ADVENTURE_LOG_PTR
ldr r1, _0204FF1C ; =0x000F423F
ldr r3, [r2]
cmp r0, r1
ldr r2, [r3]
movgt r0, r1
orr r2, r2, #0x400
ldr r1, _0204FF18 ; =ADVENTURE_LOG_PTR
str r2, [r3]
ldr r1, [r1]
str r0, [r1, #0x38]
bx lr
.align 2, 0
_0204FF18: .word ADVENTURE_LOG_PTR
_0204FF1C: .word 0x000F423F
arm_func_end SetNbBigTreasureWins
arm_func_start GetNbBigTreasureWins
GetNbBigTreasureWins: ; 0x0204FF20
ldr r0, _0204FF30 ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x38]
bx lr
.align 2, 0
_0204FF30: .word ADVENTURE_LOG_PTR
arm_func_end GetNbBigTreasureWins
arm_func_start SetNbRecycled
SetNbRecycled: ; 0x0204FF34
ldr r2, _0204FF64 ; =ADVENTURE_LOG_PTR
ldr r1, _0204FF68 ; =0x000F423F
ldr r3, [r2]
cmp r0, r1
ldr r2, [r3]
movgt r0, r1
orr r2, r2, #0x800
ldr r1, _0204FF64 ; =ADVENTURE_LOG_PTR
str r2, [r3]
ldr r1, [r1]
str r0, [r1, #0x3c]
bx lr
.align 2, 0
_0204FF64: .word ADVENTURE_LOG_PTR
_0204FF68: .word 0x000F423F
arm_func_end SetNbRecycled
arm_func_start GetNbRecycled
GetNbRecycled: ; 0x0204FF6C
ldr r0, _0204FF7C ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x3c]
bx lr
.align 2, 0
_0204FF7C: .word ADVENTURE_LOG_PTR
arm_func_end GetNbRecycled
arm_func_start IncrementNbSkyGiftsSent
IncrementNbSkyGiftsSent: ; 0x0204FF80
ldr r0, _0204FF98 ; =ADVENTURE_LOG_PTR
ldr ip, _0204FF9C ; =SetNbSkyGiftsSent
ldr r0, [r0]
ldr r0, [r0, #0x40]
add r0, r0, #1
bx ip
.align 2, 0
_0204FF98: .word ADVENTURE_LOG_PTR
_0204FF9C: .word SetNbSkyGiftsSent
arm_func_end IncrementNbSkyGiftsSent
arm_func_start SetNbSkyGiftsSent
SetNbSkyGiftsSent: ; 0x0204FFA0
ldr r2, _0204FFD0 ; =ADVENTURE_LOG_PTR
ldr r1, _0204FFD4 ; =0x000F423F
ldr r3, [r2]
cmp r0, r1
ldr r2, [r3]
movgt r0, r1
orr r2, r2, #0x1000
ldr r1, _0204FFD0 ; =ADVENTURE_LOG_PTR
str r2, [r3]
ldr r1, [r1]
str r0, [r1, #0x40]
bx lr
.align 2, 0
_0204FFD0: .word ADVENTURE_LOG_PTR
_0204FFD4: .word 0x000F423F
arm_func_end SetNbSkyGiftsSent
arm_func_start GetNbSkyGiftsSent
GetNbSkyGiftsSent: ; 0x0204FFD8
ldr r0, _0204FFE8 ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x40]
bx lr
.align 2, 0
_0204FFE8: .word ADVENTURE_LOG_PTR
arm_func_end GetNbSkyGiftsSent
arm_func_start ComputeSpecialCounters
ComputeSpecialCounters: ; 0x0204FFEC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov r4, #0
mov r8, r4
_0204FFF8:
mov r0, #0x44
mul sl, r8, r0
ldr r0, _0205022C ; =TEAM_MEMBER_TABLE_PTR
ldr r0, [r0]
ldrb r0, [r0, sl]
tst r0, #1
movne r0, #1
moveq r0, #0
tst r0, #0xff
beq _0205009C
mov sb, #0
mov r7, #1
ldr r3, _02050230 ; =ADVENTURE_LOG_PTR
ldr ip, _0205022C ; =TEAM_MEMBER_TABLE_PTR
mov fp, sb
mov lr, r7
mov r2, #6
_0205003C:
mul r1, sb, r2
ldr r0, [ip]
add r0, r0, sl
add r5, r0, #0x22
ldrb r0, [r5, r1]
add r1, r5, r1
tst r0, #1
movne r0, r7
moveq r0, fp
tst r0, #0xff
beq _02050090
ldrh r0, [r1, #2]
ldr r5, [r3]
mov r1, r0, lsr #5
add r6, r5, r1, lsl #2
mov r1, r0, lsr #0x1f
rsb r0, r1, r0, lsl #27
ldr r5, [r6, #0x16c]
add r0, r1, r0, ror #27
orr r0, r5, lr, lsl r0
str r0, [r6, #0x16c]
_02050090:
add sb, sb, #1
cmp sb, #4
blt _0205003C
_0205009C:
ldr r0, _02050234 ; =0x0000022B
add r8, r8, #1
cmp r8, r0
blt _0204FFF8
mov r6, #0
add r5, r0, #0x258
_020500B4:
mov r0, r6, lsl #0x10
mov r0, r0, asr #0x10
bl GetDexNumberVeneer
add r6, r6, #1
cmp r6, r5
blt _020500B4
mov r7, #0
ldr r5, _02050230 ; =ADVENTURE_LOG_PTR
ldr sb, _02050238 ; =0x0000021F
mov r8, r7
mov r6, #1
_020500E0:
mov r0, r8, lsl #0x10
mov r0, r0, lsr #0x10
bl IsRealMove
cmp r0, #0
beq _02050120
mov r0, r8, asr #4
add r0, r8, r0, lsr #27
ldr r2, [r5]
mov r0, r0, asr #5
add r2, r2, r0, lsl #2
mov r1, r8, lsr #0x1f
rsb r0, r1, r8, lsl #27
ldr r2, [r2, #0x16c]
add r0, r1, r0, ror #27
tst r2, r6, lsl r0
addne r7, r7, #1
_02050120:
add r8, r8, #1
cmp r8, sb
blt _020500E0
cmp r7, #0
ble _02050150
ldr r0, _02050230 ; =ADVENTURE_LOG_PTR
ldr r1, [r0]
str r7, [r1, #0x34]
ldr r1, [r0]
ldr r0, [r1]
orr r0, r0, #4
str r0, [r1]
_02050150:
mov sb, #1
ldr r5, _02050230 ; =ADVENTURE_LOG_PTR
ldr sl, _0205023C ; =0x00000483
mov r8, #0
mov r6, sb
_02050164:
mov r0, sb, lsl #0x10
mov r0, r0, asr #0x10
bl GetBaseFormCastformCherrimDeoxys
mov r7, r0
bl GetDexNumberVeneer
cmp r0, #0
beq _020501B4
mov r1, r0, asr #4
add r1, r0, r1, lsr #27
ldr r3, [r5]
mov r2, r1, asr #5
mov r1, r0, lsr #0x1f
add r2, r3, r2, lsl #2
rsb r0, r1, r0, lsl #27
ldr r2, [r2, #0x44]
add r0, r1, r0, ror #27
tst r2, r6, lsl r0
beq _020501B4
mov r0, r7
bl RecruitSpecialPokemonLog
_020501B4:
add sb, sb, #1
cmp sb, sl
blt _02050164
ldr r0, _02050230 ; =ADVENTURE_LOG_PTR
mov r2, #1
ldr r1, [r0]
ldr r3, _02050240 ; =0x000001ED
mov r0, r2
_020501D4:
mov r5, r2, asr #4
add r5, r2, r5, lsr #27
mov sb, r5, asr #5
mov r6, r2, lsr #0x1f
rsb r5, r6, r2, lsl #27
add r7, r1, sb, lsl #2
add r6, r6, r5, ror #27
add r5, r1, sb, lsl #2
ldr r7, [r7, #0x44]
ldr r5, [r5, #0xd8]
tst r7, r0, lsl r6
addne r8, r8, #1
tst r5, r0, lsl r6
add r2, r2, #1
addne r4, r4, #1
cmp r2, r3
blt _020501D4
ldr r0, _02050230 ; =ADVENTURE_LOG_PTR
str r8, [r1, #0x2c]
ldr r0, [r0]
str r4, [r0, #0x30]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0205022C: .word TEAM_MEMBER_TABLE_PTR
_02050230: .word ADVENTURE_LOG_PTR
_02050234: .word 0x0000022B
_02050238: .word 0x0000021F
_0205023C: .word 0x00000483
_02050240: .word 0x000001ED
arm_func_end ComputeSpecialCounters
arm_func_start RecruitSpecialPokemonLog
RecruitSpecialPokemonLog: ; 0x02050244
stmdb sp!, {r3, lr}
cmp r0, #0x258
subge r0, r0, #0x258
movge r0, r0, lsl #0x10
ldr r2, _020502AC ; =ADVENTURE_LOG_ENCOUNTERS_MONSTER_IDS
mov r3, #0
movge r0, r0, asr #0x10
_02050260:
mov r1, r3, lsl #1
ldrsh r1, [r2, r1]
cmp r1, #0
ldmeqia sp!, {r3, pc}
cmp r1, #0xc9
bne _0205028C
cmp r0, #0xc9
blt _02050294
cmp r0, #0xe4
ble _0205029C
b _02050294
_0205028C:
cmp r1, r0
beq _0205029C
_02050294:
add r3, r3, #1
b _02050260
_0205029C:
add r0, r3, #0x24
and r0, r0, #0xff
bl SetAdventureLogCompleted
ldmia sp!, {r3, pc}
.align 2, 0
_020502AC: .word ADVENTURE_LOG_ENCOUNTERS_MONSTER_IDS
arm_func_end RecruitSpecialPokemonLog
arm_func_start IncrementNbFainted
IncrementNbFainted: ; 0x020502B0
ldr r1, _020502E4 ; =ADVENTURE_LOG_PTR
ldr r0, _020502E8 ; =0x000F423F
ldr r2, [r1]
ldr r1, [r2, #0x24]
cmp r1, r0
addlt r0, r1, #1
strlt r0, [r2, #0x24]
ldr r0, _020502E4 ; =ADVENTURE_LOG_PTR
ldr r1, [r0]
ldr r0, [r1]
orr r0, r0, #0x20
str r0, [r1]
bx lr
.align 2, 0
_020502E4: .word ADVENTURE_LOG_PTR
_020502E8: .word 0x000F423F
arm_func_end IncrementNbFainted
arm_func_start GetNbFainted
GetNbFainted: ; 0x020502EC
ldr r0, _020502FC ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x24]
bx lr
.align 2, 0
_020502FC: .word ADVENTURE_LOG_PTR
arm_func_end GetNbFainted
arm_func_start SetItemAcquired
SetItemAcquired: ; 0x02050300
stmdb sp!, {r4, r5, r6, lr}
ldrsh r0, [r0, #4]
bl NormalizeTreasureBox
mov r4, r0
mov r0, r4, lsl #0x10
mov r0, r0, asr #0x10
bl IsItemValidVeneer
cmp r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
cmp r4, #0x3b
blt _02050380
cmp r4, #0x41
bgt _02050380
sub r0, r4, #0x21
and r0, r0, #0xff
mov r5, #1
bl SetAdventureLogCompleted
mov r6, #0x1a
b _02050364
_0205034C:
and r0, r6, #0xff
bl GetAdventureLogCompleted
cmp r0, #0
moveq r5, #0
beq _0205036C
add r6, r6, #1
_02050364:
cmp r6, #0x20
ble _0205034C
_0205036C:
cmp r5, #0
beq _02050380
mov r0, #0x15
mov r1, #1
bl SetResolvedPerformanceProgressFlag
_02050380:
ldr r3, _020503C8 ; =ADVENTURE_LOG_PTR
mov r0, r4, asr #4
ldr ip, [r3]
add r0, r4, r0, lsr #27
mov r2, r4, lsr #0x1f
rsb r1, r2, r4, lsl #27
add lr, ip, #0x1b0
mov ip, r0, asr #5
ldr r4, [lr, ip, lsl #2]
add r0, r2, r1, ror #27
mov r1, #1
orr r0, r4, r1, lsl r0
str r0, [lr, ip, lsl #2]
ldr r1, [r3]
ldr r0, [r1]
orr r0, r0, #8
str r0, [r1]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020503C8: .word ADVENTURE_LOG_PTR
arm_func_end SetItemAcquired
arm_func_start GetNbItemAcquired
GetNbItemAcquired: ; 0x020503CC
stmdb sp!, {r4, lr}
ldr r1, _0205041C ; =ADVENTURE_LOG_PTR
mov r0, #0
ldr r4, [r1]
mov lr, r0
mov ip, #1
_020503E4:
mov r1, lr, asr #4
add r1, lr, r1, lsr #27
mov r1, r1, asr #5
add r3, r4, r1, lsl #2
mov r2, lr, lsr #0x1f
rsb r1, r2, lr, lsl #27
ldr r3, [r3, #0x1b0]
add r1, r2, r1, ror #27
tst r3, ip, lsl r1
add lr, lr, #1
addne r0, r0, #1
cmp lr, #0x580
blt _020503E4
ldmia sp!, {r4, pc}
.align 2, 0
_0205041C: .word ADVENTURE_LOG_PTR
arm_func_end GetNbItemAcquired
arm_func_start SetChallengeLetterCleared
SetChallengeLetterCleared: ; 0x02050420
stmdb sp!, {r4, lr}
ldr r3, _020504A0 ; =ADVENTURE_LOG_PTR
mov r2, r0, lsr #0x1f
ldr ip, [r3]
rsb r1, r2, r0, lsl #27
mov lr, r0, lsr #5
add r4, ip, #0x260
ldr ip, [r4, lr, lsl #2]
add r1, r2, r1, ror #27
mov r0, #1
orr r1, ip, r0, lsl r1
str r1, [r4, lr, lsl #2]
ldr r4, [r3]
mov ip, r0
b _02050488
_0205045C:
mov r1, r0, asr #4
add r1, r0, r1, lsr #27
mov r1, r1, asr #5
add r3, r4, r1, lsl #2
mov r2, r0, lsr #0x1f
rsb r1, r2, r0, lsl #27
ldr r3, [r3, #0x260]
add r1, r2, r1, ror #27
tst r3, ip, lsl r1
ldmeqia sp!, {r4, pc}
add r0, r0, #1
_02050488:
cmp r0, #6
blt _0205045C
ldr r0, [r4, #4]
orr r0, r0, #4
str r0, [r4, #4]
ldmia sp!, {r4, pc}
.align 2, 0
_020504A0: .word ADVENTURE_LOG_PTR
arm_func_end SetChallengeLetterCleared
arm_func_start GetSentryDutyGamePoints
GetSentryDutyGamePoints: ; 0x020504A4
ldr r1, _020504B8 ; =ADVENTURE_LOG_PTR
ldr r1, [r1]
add r0, r1, r0, lsl #2
ldr r0, [r0, #0x264]
bx lr
.align 2, 0
_020504B8: .word ADVENTURE_LOG_PTR
arm_func_end GetSentryDutyGamePoints
arm_func_start SetSentryDutyGamePoints
SetSentryDutyGamePoints: ; 0x020504BC
stmdb sp!, {r3, lr}
ldr r1, _02050548 ; =ADVENTURE_LOG_PTR
mov lr, #0
ldr r2, [r1]
b _020504EC
_020504D0:
add r1, r2, lr, lsl #2
ldr r1, [r1, #0x264]
cmp r0, r1
bhi _020504F4
add r1, lr, #1
mov r1, r1, lsl #0x10
mov lr, r1, asr #0x10
_020504EC:
cmp lr, #5
blt _020504D0
_020504F4:
cmp lr, #5
mvnge r0, #0
ldmgeia sp!, {r3, pc}
mov ip, #4
ldr r2, _02050548 ; =ADVENTURE_LOG_PTR
b _02050528
_0205050C:
ldr r3, [r2]
sub r1, ip, #1
add ip, r3, ip, lsl #2
ldr r3, [ip, #0x260]
mov r1, r1, lsl #0x10
str r3, [ip, #0x264]
mov ip, r1, asr #0x10
_02050528:
cmp ip, lr
bgt _0205050C
ldr r1, _02050548 ; =ADVENTURE_LOG_PTR
ldr r1, [r1]
add r1, r1, lr, lsl #2
str r0, [r1, #0x264]
mov r0, lr
ldmia sp!, {r3, pc}
.align 2, 0
_02050548: .word ADVENTURE_LOG_PTR
arm_func_end SetSentryDutyGamePoints
arm_func_start CopyLogTo
CopyLogTo: ; 0x0205054C
stmdb sp!, {r4, lr}
mov r4, r0
bl ComputeSpecialCounters
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x14
add r1, r1, #0x10
bl CopyBitsTo
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x14
add r1, r1, #0x14
bl CopyBitsTo
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x14
add r1, r1, #0x18
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #0x80
ldr r1, [r1]
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #0xe
ldr r1, [r1]
add r1, r1, #0x2c
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #0xe
ldr r1, [r1]
add r1, r1, #0x30
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #9
ldr r1, [r1]
add r1, r1, #0x34
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x28
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x24
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x1c
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x38
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x3c
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x40
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #0x4a0
ldr r1, [r1]
add r1, r1, #0x44
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #0x4a0
ldr r1, [r1]
add r1, r1, #0xd8
bl CopyBitsTo
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x220
add r1, r1, #0x16c
bl CopyBitsTo
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x580
add r1, r1, #0x1b0
bl CopyBitsTo
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x20
add r1, r1, #0x260
bl CopyBitsTo
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0xa0
add r1, r1, #0x264
bl CopyBitsTo
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
add r1, r1, #0x278
bl Copy16BitsTo
ldmia sp!, {r4, pc}
.align 2, 0
_02050734: .word ADVENTURE_LOG_PTR
arm_func_end CopyLogTo
arm_func_start CopyLogFrom
CopyLogFrom: ; 0x02050738
stmdb sp!, {r4, lr}
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
mov r4, r0
add r1, r1, #0x10
bl CopyBitsFrom
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x14
add r1, r1, #0x14
bl CopyBitsFrom
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x14
add r1, r1, #0x18
bl CopyBitsFrom
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x80
bl CopyBitsFrom
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0xe
add r1, r1, #0x2c
bl CopyBitsFrom
mov r0, r4
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r2, #0xe
ldr r1, [r1]
add r1, r1, #0x30
bl CopyBitsFrom
mov r0, r4
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r2, #9
ldr r1, [r1]
add r1, r1, #0x34
bl CopyBitsFrom
mov r0, r4
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x28
bl CopyBitsFrom
mov r0, r4
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x24
bl CopyBitsFrom
mov r0, r4
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x1c
bl CopyBitsFrom
mov r0, r4
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x38
bl CopyBitsFrom
mov r0, r4
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x3c
bl CopyBitsFrom
mov r0, r4
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x40
bl CopyBitsFrom
mov r0, r4
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r2, #0x4a0
ldr r1, [r1]
add r1, r1, #0x44
bl CopyBitsFrom
mov r0, r4
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r2, #0x4a0
ldr r1, [r1]
add r1, r1, #0xd8
bl CopyBitsFrom
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x220
add r1, r1, #0x16c
bl CopyBitsFrom
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x580
add r1, r1, #0x1b0
bl CopyBitsFrom
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x20
add r1, r1, #0x260
bl CopyBitsFrom
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0xa0
add r1, r1, #0x264
bl CopyBitsFrom
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
add r1, r1, #0x278
bl Copy16BitsFrom
ldmia sp!, {r4, pc}
.align 2, 0
_02050918: .word ADVENTURE_LOG_PTR
arm_func_end CopyLogFrom
arm_func_start GetAbilityString
GetAbilityString: ; 0x0205091C
#if defined(EUROPE)
add r1, r1, #0x5e0
add r1, r1, #0x3000
#elif defined(JAPAN)
add r1, r1, #0x81
add r1, r1, #0x4800
#else
add r1, r1, #0xde
add r1, r1, #0x3500
#endif
mov r1, r1, lsl #0x10
ldr ip, _02050938 ; =CopyNStringFromId
mov r1, r1, lsr #0x10
mov r2, #0x50
bx ip
.align 2, 0
_02050938: .word CopyNStringFromId
arm_func_end GetAbilityString
arm_func_start GetAbilityDescStringId
GetAbilityDescStringId: ; 0x0205093C
#if defined(EUROPE)
add r0, r0, #0x25c
add r0, r0, #0x3400
#elif defined(JAPAN)
add r0, r0, #0xfd
add r0, r0, #0x4800
#else
add r0, r0, #0x5a
add r0, r0, #0x3600
#endif
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bx lr
arm_func_end GetAbilityDescStringId
arm_func_start GetTypeStringId
GetTypeStringId: ; 0x02050950
#if defined(EUROPE)
add r0, r0, #0xcd
add r0, r0, #0x3500
#elif defined(JAPAN)
add r0, r0, #0x6e
add r0, r0, #0x4800
#else
add r0, r0, #0xcb
add r0, r0, #0x3500
#endif
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bx lr
arm_func_end GetTypeStringId
arm_func_start GetConversion2ConvertToType
GetConversion2ConvertToType: ; 0x02050964
ldr r1, _02050970 ; =_020A192C
ldrb r0, [r1, r0]
bx lr
.align 2, 0
_02050970: .word _020A192C
arm_func_end GetConversion2ConvertToType
arm_func_start sub_02050974
sub_02050974: ; 0x02050974
str r1, [r0]
mov r3, #0
str r3, [r0, #8]
str r3, [r0, #0xc]
add r1, r1, r2
str r1, [r0, #4]
bx lr
arm_func_end sub_02050974
arm_func_start sub_02050990
sub_02050990: ; 0x02050990
str r1, [r0]
mov r3, #0
str r3, [r0, #8]
str r3, [r0, #0xc]
add r3, r1, r2
str r3, [r0, #4]
mov r0, r1
ldr ip, _020509B8 ; =MemZero
mov r1, r2
bx ip
.align 2, 0
_020509B8: .word MemZero
arm_func_end sub_02050990
arm_func_start sub_020509BC
sub_020509BC: ; 0x020509BC
bx lr
arm_func_end sub_020509BC
arm_func_start CopyBitsTo
CopyBitsTo: ; 0x020509C0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov ip, #0
mov r3, #1
mov r5, ip
mov r4, ip
b _02050A34
_020509D8:
ldrb r6, [r1]
sub r2, r2, #1
tst r6, r3, lsl ip
ldrne r7, [r0]
ldrne lr, [r0, #8]
ldrneb r6, [r7]
add ip, ip, #1
orrne r6, r6, r3, lsl lr
strneb r6, [r7]
ldr lr, [r0, #8]
cmp ip, #8
add lr, lr, #1
moveq ip, r5
addeq r1, r1, #1
str lr, [r0, #8]
cmp lr, #8
ldreq lr, [r0]
addeq lr, lr, #1
streq lr, [r0]
streq r4, [r0, #8]
ldr lr, [r0, #0xc]
add lr, lr, #1
str lr, [r0, #0xc]
_02050A34:
cmp r2, #0
bne _020509D8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end CopyBitsTo
arm_func_start CopyBitsFrom
CopyBitsFrom: ; 0x02050A40
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov lr, #0
mov ip, lr
mov r3, #1
mov r6, lr
mov r5, lr
b _02050AC0
_02050A5C:
cmp lr, #0
streqb ip, [r1]
ldr r7, [r0]
ldr r4, [r0, #8]
ldrb r7, [r7]
sub r2, r2, #1
tst r7, r3, lsl r4
ldrneb r4, [r1]
orrne r4, r4, r3, lsl lr
strneb r4, [r1]
ldr r4, [r0, #8]
add lr, lr, #1
cmp lr, #8
add r4, r4, #1
moveq lr, r6
addeq r1, r1, #1
str r4, [r0, #8]
cmp r4, #8
ldreq r4, [r0]
addeq r4, r4, #1
streq r4, [r0]
streq r5, [r0, #8]
ldr r4, [r0, #0xc]
add r4, r4, #1
str r4, [r0, #0xc]
_02050AC0:
cmp r2, #0
bne _02050A5C
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end CopyBitsFrom
arm_func_start StoreDefaultTeamData
StoreDefaultTeamData: ; 0x02050ACC
stmdb sp!, {lr}
sub sp, sp, #0x14
#ifdef JAPAN
ldr r1, _02050E54 ; =0x000004C5
add r0, sp, #0
#else
add r0, sp, #0
mov r1, #0x234
#endif
bl GetStringFromFileVeneer
ldr r0, _02050B08 ; =TEAM_NAME
add r1, sp, #0
#ifdef JAPAN
mov r2, #5
#else
mov r2, #0xa
#endif
bl StrncpyName
ldr r0, _02050B0C ; =TEAM_NAME
mov r1, #0
#ifdef JAPAN
str r1, [r0, #8]
strb r1, [r0, #0xc]
#else
str r1, [r0, #0xc]
strb r1, [r0, #0x10]
#endif
add sp, sp, #0x14
ldmia sp!, {pc}
.align 2, 0
#ifdef JAPAN
_02050E54: .word 0x000004C5
#endif
_02050B08: .word TEAM_NAME
_02050B0C: .word TEAM_NAME
arm_func_end StoreDefaultTeamData
arm_func_start GetMainTeamNameWithCheck
GetMainTeamNameWithCheck: ; 0x02050B10
stmdb sp!, {r4, lr}
sub sp, sp, #0x40
mov r4, r0
mov r0, #1
bl GetResolvedPerformanceProgressFlag
cmp r0, #0
ldrne r0, _02050B70 ; =TEAM_NAME
ldrneb r0, [r0]
cmpne r0, #0
beq _02050B4C
ldr r1, _02050B74 ; =TEAM_NAME
mov r0, r4
#ifdef JAPAN
mov r2, #5
#else
mov r2, #0xa
#endif
bl StrncpySimpleNoPad
b _02050B68
_02050B4C:
ldr r1, _02050B78 ; =0x00000237
add r0, sp, #0
bl GetStringFromFileVeneer
add r1, sp, #0
mov r0, r4
#ifdef JAPAN
mov r2, #5
#else
mov r2, #0xa
#endif
bl StrncpyName
_02050B68:
add sp, sp, #0x40
ldmia sp!, {r4, pc}
.align 2, 0
_02050B70: .word TEAM_NAME
_02050B74: .word TEAM_NAME
#ifdef JAPAN
_02050B78: .word 0x000004C8
#else
_02050B78: .word 0x00000237
#endif
arm_func_end GetMainTeamNameWithCheck
arm_func_start GetMainTeamName
GetMainTeamName: ; 0x02050B7C
ldr ip, _02050B8C ; =StrncpySimpleNoPadSafe
ldr r1, _02050B90 ; =TEAM_NAME
#ifdef JAPAN
mov r2, #5
#else
mov r2, #0xa
#endif
bx ip
.align 2, 0
_02050B8C: .word StrncpySimpleNoPadSafe
_02050B90: .word TEAM_NAME
arm_func_end GetMainTeamName
arm_func_start SetMainTeamName
SetMainTeamName: ; 0x02050B94
ldr r1, _02050BB4 ; =TEAM_NAME
mov r3, #0
_02050B9C:
ldrb r2, [r0], #1
strb r2, [r1, r3]
add r3, r3, #1
#ifdef JAPAN
cmp r3, #5
#else
cmp r3, #0xa
#endif
blt _02050B9C
bx lr
.align 2, 0
_02050BB4: .word TEAM_NAME
arm_func_end SetMainTeamName
arm_func_start GetRankupPoints
GetRankupPoints: ; 0x02050BB8
stmdb sp!, {r4, lr}
bl GetRank
mov r4, r0
mov r0, #0x16
bl GetResolvedPerformanceProgressFlag
cmp r0, #0
beq _02050BE4
cmp r4, #0xc
bne _02050BF0
mov r0, #0
ldmia sp!, {r4, pc}
_02050BE4:
cmp r4, #8
movhs r0, #0
ldmhsia sp!, {r4, pc}
_02050BF0:
mov r0, r4
bl GetRankUpEntry
ldr r1, _02050C0C ; =TEAM_NAME
ldr r2, [r0, #4]
#ifdef JAPAN
ldr r0, [r1, #8]
#else
ldr r0, [r1, #0xc]
#endif
sub r0, r2, r0
ldmia sp!, {r4, pc}
.align 2, 0
_02050C0C: .word TEAM_NAME
arm_func_end GetRankupPoints
arm_func_start sub_02050C10
sub_02050C10: ; 0x02050C10
#ifdef JAPAN
#define SUB_02050C10_OFFSET #8
#else
#define SUB_02050C10_OFFSET #0xc
#endif
stmdb sp!, {r3, lr}
ldr r1, _02050C6C ; =TEAM_NAME
ldr r2, [r1, SUB_02050C10_OFFSET]
add r2, r2, r0
mov r0, #0x16
str r2, [r1, SUB_02050C10_OFFSET]
bl GetResolvedPerformanceProgressFlag
cmp r0, #0
beq _02050C4C
ldr r0, _02050C6C ; =TEAM_NAME
ldr r1, _02050C70 ; =0x05F5E0FF
ldr r2, [r0, SUB_02050C10_OFFSET]
cmp r2, r1
strgt r1, [r0, SUB_02050C10_OFFSET]
ldmia sp!, {r3, pc}
_02050C4C:
mov r0, #7
bl GetRankUpEntry
ldr r1, _02050C6C ; =TEAM_NAME
ldr r2, [r0, #4]
ldr r0, [r1, SUB_02050C10_OFFSET]
cmp r0, r2
strgt r2, [r1, SUB_02050C10_OFFSET]
ldmia sp!, {r3, pc}
.align 2, 0
_02050C6C: .word TEAM_NAME
_02050C70: .word 0x05F5E0FF
arm_func_end sub_02050C10
arm_func_start GetRank
GetRank: ; 0x02050C74
stmdb sp!, {r3, r4, r5, lr}
mov r5, #0
ldr r4, _02050CCC ; =TEAM_NAME
b _02050CA4
_02050C84:
mov r0, r5
bl GetRankUpEntry
#ifdef JAPAN
ldr r1, [r4, #8]
#else
ldr r1, [r4, #0xc]
#endif
ldr r0, [r0, #4]
cmp r1, r0
blt _02050CAC
add r0, r5, #1
and r5, r0, #0xff
_02050CA4:
cmp r5, #0xc
blo _02050C84
_02050CAC:
mov r0, #0x16
bl GetResolvedPerformanceProgressFlag
cmp r0, #0
bne _02050CC4
cmp r5, #8
movhi r5, #8
_02050CC4:
mov r0, r5
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02050CCC: .word TEAM_NAME
arm_func_end GetRank
arm_func_start sub_02050CD0
sub_02050CD0: ; 0x02050CD0
stmdb sp!, {r3, lr}
bl GetRank
cmp r0, #8
movhi r0, #8
ldmia sp!, {r3, pc}
arm_func_end sub_02050CD0
arm_func_start GetRankStorageSize
GetRankStorageSize: ; 0x02050CE4
stmdb sp!, {r3, lr}
bl GetRank
bl GetRankUpEntry
ldr r0, [r0, #8]
ldmia sp!, {r3, pc}
arm_func_end GetRankStorageSize
arm_func_start sub_02050CF8
sub_02050CF8: ; 0x02050CF8
stmdb sp!, {r3, lr}
sub sp, sp, #0x10
mov r3, r0
mov r2, r1
add r0, sp, #0
mov r1, r3
bl sub_02050990
ldr r1, _02050D70 ; =TEAM_NAME
add r0, sp, #0
#ifdef JAPAN
mov r2, #0x28
#else
mov r2, #0x50
#endif
bl CopyBitsTo
ldr r1, _02050D74 ; =_022AB924
add r0, sp, #0
mov r2, #0x20
bl CopyBitsTo
mov r0, #1
bl GetResolvedPerformanceProgressFlag
ldr r1, _02050D78 ; =TEAM_NAME
tst r0, #0xff
#ifdef JAPAN
strb r0, [r1, #0xc]
#else
strb r0, [r1, #0x10]
#endif
ldrne r1, _02050D7C ; =ARM9_UNKNOWN_DATA__NA_209E6BC
add r0, sp, #0
ldreq r1, _02050D80 ; =_0209E6BD
mov r2, #1
bl CopyBitsTo
add r0, sp, #0
bl sub_020509BC
ldr r0, [sp, #8]
add sp, sp, #0x10
ldmia sp!, {r3, pc}
.align 2, 0
_02050D70: .word TEAM_NAME
_02050D74: .word _022AB924
_02050D78: .word TEAM_NAME
_02050D7C: .word ARM9_UNKNOWN_DATA__NA_209E6BC
_02050D80: .word _0209E6BD
arm_func_end sub_02050CF8
arm_func_start sub_02050D84
sub_02050D84: ; 0x02050D84
stmdb sp!, {lr}
sub sp, sp, #0x14
mov r3, r0
mov r2, r1
add r0, sp, #4
mov r1, r3
bl sub_02050974
ldr r1, _02050DFC ; =TEAM_NAME
add r0, sp, #4
#ifdef JAPAN
mov r2, #0x28
#else
mov r2, #0x50
#endif
bl CopyBitsFrom
ldr r1, _02050E00 ; =_022AB924
add r0, sp, #4
mov r2, #0x20
bl CopyBitsFrom
add r0, sp, #4
add r1, sp, #0
mov r2, #1
bl CopyBitsFrom
ldrb r0, [sp]
ldr r1, _02050E04 ; =TEAM_NAME
tst r0, #1
movne r2, #1
moveq r2, #0
add r0, sp, #4
#ifdef JAPAN
strb r2, [r1, #0xc]
#else
strb r2, [r1, #0x10]
#endif
bl sub_020509BC
ldr r0, [sp, #0xc]
add sp, sp, #0x14
ldmia sp!, {pc}
.align 2, 0
_02050DFC: .word TEAM_NAME
_02050E00: .word _022AB924
_02050E04: .word TEAM_NAME
arm_func_end sub_02050D84
arm_func_start ResetPlayTimer
ResetPlayTimer: ; 0x02050E08
mov r1, #0
strb r1, [r0, #4]
str r1, [r0]
bx lr
arm_func_end ResetPlayTimer
arm_func_start PlayTimerTick
PlayTimerTick: ; 0x02050E18
ldrb r1, [r0, #4]
add r2, r1, #1
and r1, r2, #0xff
strb r2, [r0, #4]
cmp r1, #0x3c
bxlo lr
mov r1, #0
strb r1, [r0, #4]
ldr r2, [r0]
ldr r1, _02050E50 ; =0x022550FF
cmp r2, r1
addlo r1, r2, #1
strlo r1, [r0]
bx lr
.align 2, 0
_02050E50: .word 0x022550FF
arm_func_end PlayTimerTick
arm_func_start GetPlayTimeSeconds
GetPlayTimeSeconds: ; 0x02050E54
ldr r0, [r0]
bx lr
arm_func_end GetPlayTimeSeconds
arm_func_start sub_02050E5C
sub_02050E5C: ; 0x02050E5C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
mov r0, r4
add r1, r5, #4
mov r2, #6
bl CopyBitsTo
mov r0, r4
mov r1, r5
mov r2, #0x20
bl CopyBitsTo
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_02050E5C
arm_func_start sub_02050E8C
sub_02050E8C: ; 0x02050E8C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
mov r0, r4
add r1, r5, #4
mov r2, #6
bl CopyBitsFrom
mov r0, r4
mov r1, r5
mov r2, #0x20
bl CopyBitsFrom
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_02050E8C
arm_func_start sub_02050EBC
sub_02050EBC: ; 0x02050EBC
stmdb sp!, {r0, r1, r2, r3}
ldrsh r3, [sp, #2]
ldrsh r0, [sp, #6]
ldrsh r2, [sp]
ldrsh r1, [sp, #4]
add r0, r3, r0
strh r0, [sp, #2]
ldrsh r0, [sp, #2]
add r1, r2, r1
strh r1, [sp]
cmp r0, #0x3e8
subge r0, r0, #0x3e8
ldrgesh r1, [sp]
strgeh r0, [sp, #2]
addge r0, r1, #1
strgeh r0, [sp]
ldrh r1, [sp, #2]
ldrh r0, [sp]
orr r0, r0, r1, lsl #16
add sp, sp, #0x10
bx lr
arm_func_end sub_02050EBC
arm_func_start SubFixedPoint
SubFixedPoint: ; 0x02050F10
stmdb sp!, {r0, r1, r2, r3}
ldrsh r3, [sp, #2]
ldrsh r0, [sp, #6]
ldrsh r2, [sp]
ldrsh r1, [sp, #4]
sub r0, r3, r0
strh r0, [sp, #2]
ldrsh r0, [sp, #2]
sub r1, r2, r1
strh r1, [sp]
cmp r0, #0
addlt r0, r0, #0x3e8
ldrltsh r1, [sp]
strlth r0, [sp, #2]
sublt r0, r1, #1
strlth r0, [sp]
ldrsh r0, [sp]
cmp r0, #0
movlt r0, #0
strlth r0, [sp, #2]
strlth r0, [sp]
ldrh r1, [sp, #2]
ldrh r0, [sp]
orr r0, r0, r1, lsl #16
add sp, sp, #0x10
bx lr
arm_func_end SubFixedPoint
arm_func_start sub_02050F78
sub_02050F78: ; 0x02050F78
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3}
sub sp, sp, #4
ldrsh r1, [sp, #8]
ldrsh r0, [sp, #0xc]
cmp r1, r0
ldrgth r1, [sp, #0xe]
ldrgth r0, [sp, #0xc]
orrgt r0, r0, r1, lsl #16
bgt _02050FE8
ldrlth r1, [sp, #0xa]
ldrlth r0, [sp, #8]
orrlt r0, r0, r1, lsl #16
blt _02050FE8
ldrsh r1, [sp, #0xa]
ldrsh r0, [sp, #0xe]
cmp r1, r0
ldrgth r1, [sp, #0xc]
ldrgth r0, [sp, #0xe]
strgth r1, [sp]
strgth r0, [sp, #2]
ldrleh r1, [sp, #8]
ldrleh r0, [sp, #0xa]
strleh r1, [sp]
strleh r0, [sp, #2]
ldrh r1, [sp, #2]
ldrh r0, [sp]
orr r0, r0, r1, lsl #16
_02050FE8:
add sp, sp, #4
ldmia sp!, {r3}
add sp, sp, #0x10
bx lr
arm_func_end sub_02050F78
arm_func_start sub_02050FF8
sub_02050FF8: ; 0x02050FF8
stmdb sp!, {r3}
sub sp, sp, #4
strh r0, [sp]
ldrh r0, [sp]
mov r1, #0
strh r1, [sp, #2]
orr r0, r0, r1, lsl #16
add sp, sp, #4
ldmia sp!, {r3}
bx lr
arm_func_end sub_02050FF8
arm_func_start BinToDecFixedPoint
BinToDecFixedPoint: ; 0x02051020
stmdb sp!, {r3}
sub sp, sp, #4
ldr r2, [r0, #4]
mov r1, #0x3e8
mov r0, r2, lsl #0x10
mov r0, r0, lsr #0x10
mul r1, r0, r1
mov r2, r2, lsr #0x10
mov r0, r1, lsr #0x10
strh r2, [sp]
strh r0, [sp, #2]
ldrh r1, [sp, #2]
ldrh r0, [sp]
orr r0, r0, r1, lsl #16
add sp, sp, #4
ldmia sp!, {r3}
bx lr
arm_func_end BinToDecFixedPoint