diff --git a/asm/include/main_0204EFE0.inc b/asm/include/main_0204EFE0.inc index 4fa72165..c7177fa4 100644 --- a/asm/include/main_0204EFE0.inc +++ b/asm/include/main_0204EFE0.inc @@ -1,58 +1,3 @@ #pragma once -.public _0209E3A1 -.public _0209E3A2 -.public _0209E3A3 -.public _0209E6BD -.public _020A192C -.public _022AB4F8 -.public _022AB5AC -.public _022AB69C -.public _022AB924 -.public ADVENTURE_LOG_ENCOUNTERS_MONSTER_IDS -.public ADVENTURE_LOG_PTR -.public ARM9_UNKNOWN_DATA__NA_209E6BC -.public Copy16BitsFrom -.public Copy16BitsTo -.public CopyNStringFromId -.public DUNGEON_DATA_LIST -.public DungeonSwapIdToIdx -.public DungeonSwapIdxToId -.public GetBaseFormCastformCherrimDeoxys -.public GetBodySize -.public GetDexNumberVeneer -.public GetDungeonMode -.public GetDungeonModeSpecial -.public GetGameMode -.public GetMaxItemsAllowed -.public GetMaxMembersAllowed -.public GetMaxReachedFloor -.public GetMoneyCarried -.public GetNameString -.public GetNbItemsInBag -.public GetPartyMembers -.public GetRankUpEntry -.public GetResolvedPerformanceProgressFlag -.public GetStringFromFileVeneer -.public GuestMonsterToGroundMonster -.public IsItemValidVeneer -.public IsLevelResetDungeon -.public IsMoneyAllowed -.public IsRealMove -.public IsRecruitingAllowed .public LoadScriptVariableValue -.public MemZero -.public MISSION_FLOOR_RANKS_PTRS -.public NormalizeTreasureBox -.public OUTLAW_LEVEL_TABLE -.public OUTLAW_MINION_LEVEL_TABLE .public PENDING_DUNGEON_ID -.public PLAY_TIME_SECONDS -.public SECONDARY_TERRAIN_TYPES -.public SetResolvedPerformanceProgressFlag -.public StrncpyName -.public StrncpySimpleNoPad -.public StrncpySimpleNoPadSafe -.public sub_0204CEE0 -.public sub_0205EE40 -.public TEAM_MEMBER_TABLE_PTR -.public TEAM_NAME diff --git a/asm/include/main_0204F0A0.inc b/asm/include/main_0204F0A0.inc new file mode 100644 index 00000000..b279ad93 --- /dev/null +++ b/asm/include/main_0204F0A0.inc @@ -0,0 +1,42 @@ +#pragma once +.public ADVENTURE_LOG_PTR +.public DUNGEON_DATA_LIST +.public DungeonSwapIdToIdx +.public DungeonSwapIdxToId +.public GetBodySize +.public GetDungeonMode +.public GetDungeonModeSpecial +.public GetGameMode +.public GetMaxItemsAllowed +.public GetMaxMembersAllowed +.public GetMaxReachedFloor +.public GetMoneyCarried +.public GetNameString +.public GetNbItemsInBag +.public GetPartyMembers +.public GetPlayTimeSeconds +.public GetResolvedPerformanceProgressFlag +.public GuestMonsterToGroundMonster +.public IsLevelResetDungeon +.public IsMoneyAllowed +.public IsRecruitingAllowed +.public LoadScriptVariableValue +.public MISSION_FLOOR_RANKS_PTRS +.public OUTLAW_LEVEL_TABLE +.public OUTLAW_MINION_LEVEL_TABLE +.public PLAY_TIME_SECONDS +.public PlayTimerTick +.public ResetPlayTimer +.public SECONDARY_TERRAIN_TYPES +.public StrncpyName +.public TEAM_MEMBER_TABLE_PTR +.public _0209E3A1 +.public _0209E3A2 +.public _0209E3A3 +.public _022AB4F8 +.public _022AB5AC +.public _022AB69C +.public sub_0204CEE0 +.public sub_02050E5C +.public sub_02050E8C +.public sub_0205EE40 diff --git a/asm/include/main_0204FE58.inc b/asm/include/main_0204FE58.inc new file mode 100644 index 00000000..d018f669 --- /dev/null +++ b/asm/include/main_0204FE58.inc @@ -0,0 +1,27 @@ +#pragma once +.public ADVENTURE_LOG_ENCOUNTERS_MONSTER_IDS +.public ADVENTURE_LOG_PTR +.public ARM9_UNKNOWN_DATA__NA_209E6BC +.public Copy16BitsFrom +.public Copy16BitsTo +.public CopyNStringFromId +.public GetAdventureLogCompleted +.public GetBaseFormCastformCherrimDeoxys +.public GetDexNumberVeneer +.public GetRankUpEntry +.public GetResolvedPerformanceProgressFlag +.public GetStringFromFileVeneer +.public IsItemValidVeneer +.public IsRealMove +.public MemZero +.public NormalizeTreasureBox +.public SetAdventureLogCompleted +.public SetResolvedPerformanceProgressFlag +.public StrncpyName +.public StrncpySimpleNoPad +.public StrncpySimpleNoPadSafe +.public TEAM_MEMBER_TABLE_PTR +.public TEAM_NAME +.public _0209E6BD +.public _020A192C +.public _022AB924 diff --git a/asm/include/main_020517F4.inc b/asm/include/main_020517F4.inc index c636eeb3..2cdb940b 100644 --- a/asm/include/main_020517F4.inc +++ b/asm/include/main_020517F4.inc @@ -1,28 +1,11 @@ #pragma once -.public _020A31B8 -.public _020A31D4 -.public _020A31E4 -.public _020A31F4 -.public _020A31FC -.public _020A45C8_JP -.public _020B09B0 -.public _020B09C0 -.public _s32_div_f -.public ARM9_UNKNOWN_PTR__NA_20A2C84 .public ArrayCopy32 .public ArrayFill32 -.public DecompressAtNormalVeneer -.public GetAtSize -.public GetBaseForm -.public LoadFileFromRom -.public LoadM2nAndN2m .public MemAlloc .public MemFree .public MemZero -.public MONSTER_DATA_TABLE_PTR .public RANK_UP_TABLE -.public StringFromId -.public strncpy +.public _020B09B0 .public sub_0200302C .public sub_020030FC .public sub_0200A124 @@ -40,6 +23,3 @@ .public sub_0200B3C0 .public sub_0200B3D4 .public sub_0200B3FC -.public UnloadFile -.public UNOWN_SPECIES_ADDITIONAL_CHAR_PTR_TABLE -.public vsprintf diff --git a/asm/include/main_02052060.inc b/asm/include/main_02052060.inc new file mode 100644 index 00000000..d39e23e9 --- /dev/null +++ b/asm/include/main_02052060.inc @@ -0,0 +1,26 @@ +#pragma once +.public ARM9_UNKNOWN_PTR__NA_20A2C84 +.public GetBaseForm +.public LoadFileFromRom +.public LoadM2nAndN2m +.public MONSTER_DATA_TABLE_PTR +.public MemFree +.public StringFromId +.public UNOWN_SPECIES_ADDITIONAL_CHAR_PTR_TABLE +.public _020A31B8 +.public _020A31D4 +.public _020A31E4 +.public _020A31F4 +.public _020A31FC +.public _020A45C8_JP +.public _020B09B0 +.public _020B09C0 +.public _s32_div_f +.public strncpy +.public sub_0200A504 +.public sub_0200A590 +.public sub_02051804 +.public sub_02051D8C +.public sub_02051E60 +.public sub_02051FF0 +.public vsprintf diff --git a/asm/include/main_0206A750.inc b/asm/include/main_0206A750.inc index 03b0fea6..a48baebe 100644 --- a/asm/include/main_0206A750.inc +++ b/asm/include/main_0206A750.inc @@ -1,102 +1,6 @@ #pragma once -.public _020A94BC -.public _020A94C6 -.public _020A94D2 -.public _020A9E80 -.public _020A9EE0 -.public _020A9F34 -.public _020A9F48 -.public _020A9F5C -.public _020A9F70 -.public _020A9F84 -.public _020A9F98 -.public _020B0B4C -.public _020B0B5C -.public _020B0B60 -.public _020B0B6C -.public _020B0B70 -.public _020B0B74 -.public _020B1290 -.public _022B7331 -.public _022B7334 -.public _022B7340 -.public _022B734C -.public _022B7A30 -.public _022B8330 -.public _022B9130 -.public _s32_div_f -.public CosAbs4096 -.public Debug_Print0 -.public DelayWteFree -.public DeleteWanTableEntryVeneer -.public DRIVER_WORK -.public DseBgm_StopAll -.public DseBgm_SysSetupNoteList -.public DseDriver_StartMainThread -.public DseDriver_StartTickTimer -.public DseMem_Clear -.public DseMem_Quit -.public DseSe_StopAll -.public DseSe_SysReset -.public DseSequence_PauseList -.public DseSwd_SysInit -.public DseSwd_SysQuit -.public DseVoice_ResetAll -.public DseVoice_ResetHW -.public DUNGEON_SWAP_ID_TABLE -.public GetDungeonMode .public GetExecuteSpecialEpisodeType -.public InitAnimationControlWithSet__0201C0B0 .public LoadScriptVariableValue -.public LoadWanTableEntry -.public LoadWteFromRom -.public MAP_MARKER_PLACEMENTS -.public MemAlloc -.public MemFree -.public MemZero -.public MultiplyByFixedPoint -.public ov10_022C2340 -.public ov10_022C23B0 -.public ov10_022C23EC -.public ov10_022C2450 -.public ov10_022C24DC -.public Rand16Bit -.public SetAnimationForAnimationControl -.public SetSpriteIdForAnimationControl -.public SinAbs4096 -.public sub_0201CF5C -.public sub_0201D12C -.public sub_0201D9C8 -.public sub_0201DF38 -.public sub_0201E020 -.public sub_0201E12C -.public sub_0201E7D8 -.public sub_0201F248 -.public sub_0201F2AC -.public sub_0201F324 -.public sub_0201F348 -.public sub_0201F36C -.public sub_02024934 .public sub_0204E6FC .public sub_0204E770 .public sub_0204E780 -.public sub_0206DC78 -.public sub_0206F6FC -.public sub_0206F774 -.public sub_0206F9A4 -.public sub_02070124 -.public sub_02070148 -.public sub_02070158 -.public sub_02070188 -.public sub_020701B0 -.public sub_02070EA0 -.public sub_02070F4C -.public sub_020729A4 -.public sub_02075600 -.public sub_020756E8 -.public sub_0207A7EC -.public sub_0207A8F4 -.public sub_0207AD54 -.public sub_0207AEF4 -.public sub_0207AFF0 -.public WAN_TABLE diff --git a/asm/include/main_0206A878.inc b/asm/include/main_0206A878.inc new file mode 100644 index 00000000..c97c06aa --- /dev/null +++ b/asm/include/main_0206A878.inc @@ -0,0 +1,97 @@ +#pragma once +.public CosAbs4096 +.public DRIVER_WORK +.public Debug_Print0 +.public DelayWteFree +.public DeleteWanTableEntryVeneer +.public DseBgm_StopAll +.public DseBgm_SysSetupNoteList +.public DseDriver_StartMainThread +.public DseDriver_StartTickTimer +.public DseMem_Clear +.public DseMem_Quit +.public DseSe_StopAll +.public DseSe_SysReset +.public DseSequence_PauseList +.public DseSwd_SysInit +.public DseSwd_SysQuit +.public DseVoice_ResetAll +.public DseVoice_ResetHW +.public GetExecuteSpecialEpisodeType +.public InitAnimationControlWithSet__0201C0B0 +.public LoadWanTableEntry +.public LoadWteFromRom +.public MAP_MARKER_PLACEMENTS +.public MemAlloc +.public MemFree +.public MemZero +.public MultiplyByFixedPoint +.public Rand16Bit +.public SetAnimationForAnimationControl +.public SetSpriteIdForAnimationControl +.public SinAbs4096 +.public WAN_TABLE +.public _020A94BC +.public _020A94C6 +.public _020A94D2 +.public _020A9E80 +.public _020A9EE0 +.public _020A9F34 +.public _020A9F48 +.public _020A9F5C +.public _020A9F70 +.public _020A9F84 +.public _020A9F98 +.public _020B0B4C +.public _020B0B5C +.public _020B0B60 +.public _020B0B6C +.public _020B0B70 +.public _020B0B74 +.public _020B1290 +.public _022B7331 +.public _022B7334 +.public _022B7340 +.public _022B734C +.public _022B7A30 +.public _022B8330 +.public _022B9130 +.public _s32_div_f +.public ov10_022C2340 +.public ov10_022C23B0 +.public ov10_022C23EC +.public ov10_022C2450 +.public ov10_022C24DC +.public sub_0201CF5C +.public sub_0201D12C +.public sub_0201D9C8 +.public sub_0201DF38 +.public sub_0201E020 +.public sub_0201E12C +.public sub_0201E7D8 +.public sub_0201F248 +.public sub_0201F2AC +.public sub_0201F324 +.public sub_0201F348 +.public sub_0201F36C +.public sub_02024934 +.public sub_0206A7CC +.public sub_0206DC78 +.public sub_0206F6FC +.public sub_0206F774 +.public sub_0206F9A4 +.public sub_02070124 +.public sub_02070148 +.public sub_02070158 +.public sub_02070188 +.public sub_020701B0 +.public sub_02070EA0 +.public sub_02070F4C +.public sub_020729A4 +.public sub_02075600 +.public sub_020756E8 +.public sub_0207A7EC +.public sub_0207A8F4 +.public sub_0207AD54 +.public sub_0207AEF4 +.public sub_0207AFF0 diff --git a/asm/main_0200EB30.s b/asm/main_0200EB30.s index cb8afea3..5fd82333 100644 --- a/asm/main_0200EB30.s +++ b/asm/main_0200EB30.s @@ -3,6 +3,7 @@ .text +; https://decomp.me/scratch/juWhM arm_func_start IsItemInTimeDarkness IsItemInTimeDarkness: ; 0x0200EB30 ldr r1, _0200EB54 ; =ITEM_DATA_TABLE_PTRS diff --git a/asm/main_0204EFE0.s b/asm/main_0204EFE0.s index 8d9011ba..1e0fd87d 100644 --- a/asm/main_0204EFE0.s +++ b/asm/main_0204EFE0.s @@ -22,2765 +22,3 @@ sub_0204F034: ; 0x0204F034 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 diff --git a/asm/main_0204F0A0.s b/asm/main_0204F0A0.s new file mode 100644 index 00000000..03b2f44c --- /dev/null +++ b/asm/main_0204F0A0.s @@ -0,0 +1,1189 @@ + .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 diff --git a/asm/main_0204FE58.s b/asm/main_0204FE58.s new file mode 100644 index 00000000..b025808c --- /dev/null +++ b/asm/main_0204FE58.s @@ -0,0 +1,1529 @@ + .include "asm/macros.inc" + .include "main_0204FE58.inc" + + .text + + 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 diff --git a/asm/main_020517F4.s b/asm/main_020517F4.s index 7410a5b8..4cf96f96 100644 --- a/asm/main_020517F4.s +++ b/asm/main_020517F4.s @@ -617,588 +617,3 @@ sub_02051FB4: ; 0x02051FB4 .align 2, 0 _02051FEC: .word _020B09B0 arm_func_end sub_02051FB4 - - arm_func_start sub_02051FF0 -sub_02051FF0: ; 0x02051FF0 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r3, r0 - mov r5, r1 - add r0, sp, #0 - mov r1, r3 - bl LoadFileFromRom - ldr r0, [sp] - bl GetAtSize - mov r4, r0 - cmp r4, #0 - ldrle r0, [sp] - strle r0, [r5] - ldrle r4, [sp, #4] - ble _02052054 - mov r1, #0 - bl MemAlloc - mov r1, r4 - ldr r2, [sp] - mov r4, r0 - bl DecompressAtNormalVeneer - str r4, [r5] - add r0, sp, #0 - ldr r4, [r4, #0xc] - bl UnloadFile -_02052054: - mov r0, r4 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_02051FF0 - - arm_func_start sub_02052060 -sub_02052060: ; 0x02052060 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x2c - ldr r4, _020522E4 ; =_020B09B0 - mov sl, r1 - ldr r7, [sp, #0x54] - ldr r4, [r4] - mov r1, #0x30 - mla r4, r7, r1, r4 - ldr fp, [sp, #0x50] - mov r1, #0x18 - mla r4, fp, r1, r4 - mov sb, r2 - add r1, sp, #0x28 - mov r2, #0xf - mov r8, r3 - ldr r5, [r4, #0x10] - bl sub_02051FF0 - mov r3, r0 - ldr r4, [sp, #0x28] - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - ldr r0, _020522E4 ; =_020B09B0 - ldr r2, [r4, #8] - ldr r0, [r0] - add r1, r5, sl - add r2, r4, r2 - add r0, r0, #0x60 - bl sub_02051804 - mov r0, #1 - str r0, [sp] - mov r1, #0 - ldr r0, _020522E4 ; =_020B09B0 - str r1, [sp, #4] - ldr r0, [r0] - mov r2, r4 - mov r3, r1 - add r0, r0, #0x60 - bl sub_02051804 - ldr r1, [sp, #0x28] - rsb r0, sb, #0x20 - mov r0, r0, lsl #0x10 - ldr r1, [r1, #0x10] - str r0, [sp, #0x18] - add r0, r4, r1 - str r0, [sp, #0xc] - mov r5, #0 - b _020521CC -_02052120: - mov r6, #0 - mov r0, r6 - str r0, [sp, #8] - ldr r0, [sp, #0xc] - mov r1, sb, lsl #0x10 - add r0, r0, sb, lsl #6 - str r0, [sp, #0x10] - mov r0, r1, asr #0x10 - str r0, [sp, #0x14] -_02052144: - ldr r0, [sp, #0x10] - mov r1, r6, lsl #1 - ldrh r1, [r1, r0] - ldr r2, _020522E8 ; =0x00000FFF - mov r0, r6, lsl #0x10 - and r2, r1, r2 - mov r2, r2, lsl #0x10 - mov r1, r1, lsl #4 - mov r2, r2, lsr #0x10 - add r1, r8, r1, lsr #16 - add r2, r2, sl, lsr #5 - mov r1, r1, lsl #0x1c - mov r2, r2, lsl #0x10 - mov r1, r1, lsr #0x10 - orr r1, r1, r2, lsr #16 - mov r1, r1, lsl #0x10 - mov r2, r1, lsr #0x10 - ldr r1, [sp, #0x14] - mov r0, r0, asr #0x10 - str r7, [sp] - mov r3, fp - bl sub_02051D8C - ldr r0, [sp, #8] - add r6, r6, #1 - add r0, r0, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - str r0, [sp, #8] - cmp r0, #0x20 - blo _02052144 - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, lsr #0x10 - add sb, sb, #1 -_020521CC: - ldr r0, [sp, #0x18] - cmp r5, r0, lsr #16 - blo _02052120 - mov r0, fp - mov r1, r7 - bl sub_02051E60 - ldr r0, [sp, #0x28] - ldr r3, _020522EC ; =ARM9_UNKNOWN_PTR__NA_20A2C84 - ldr r0, [r0] - add r2, sp, #0x1c - add r5, r4, r0 - mov r4, #0 - mov r1, #4 -_02052200: - ldrb r0, [r3], #1 - subs r1, r1, #1 - strb r0, [r2], #1 - bne _02052200 - mov r0, #0x28 - mul r6, r7, r0 - b _020522B0 -_0205221C: - add r3, sp, #0x1c - add r2, sp, #0x20 - mov r1, #4 -_02052228: - ldrb r0, [r3], #1 - subs r1, r1, #1 - strb r0, [r2], #1 - bne _02052228 - ldrb r0, [r5] - add r3, sp, #0x20 - add r2, sp, #0x24 - strb r0, [sp, #0x20] - ldrb r0, [r5, #1] - mov r1, #4 - strb r0, [sp, #0x21] - ldrb r0, [r5, #2] - strb r0, [sp, #0x22] - ldrb r0, [r5, #3] - strb r0, [sp, #0x23] -_02052264: - ldrb r0, [r3], #1 - subs r1, r1, #1 - strb r0, [r2], #1 - bne _02052264 - add r0, r4, r8, lsl #4 - cmp r0, #0x100 - bge _020522C8 - ldr r1, _020522E4 ; =_020B09B0 - mov r0, r0, lsl #0x10 - ldr r1, [r1] - mov r0, r0, asr #0x10 - add r3, r1, #0x1cc - mov r1, r0, lsl #0x10 - add r2, sp, #0x24 - add r0, r3, r6 - mov r1, r1, lsr #0x10 - bl sub_0200A590 - add r4, r4, #1 - add r5, r5, #4 -_020522B0: - ldr r0, [sp, #0x28] - ldr r1, [r0, #4] - mov r0, r1, asr #1 - add r0, r1, r0, lsr #30 - cmp r4, r0, asr #2 - blt _0205221C -_020522C8: - ldr r0, _020522E4 ; =_020B09B0 - ldr r0, [r0] - add r0, r0, #0x1cc - add r0, r0, r6 - bl sub_0200A504 - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020522E4: .word _020B09B0 -_020522E8: .word 0x00000FFF -_020522EC: .word ARM9_UNKNOWN_PTR__NA_20A2C84 - arm_func_end sub_02052060 - - arm_func_start sub_020522F0 -sub_020522F0: ; 0x020522F0 - stmdb sp!, {r4, lr} - mov r4, r1 - bl sub_02051FF0 - str r0, [r4, #8] - ldr r1, [r4] - ldr r0, [r1, #8] - add r0, r1, r0 - str r0, [r4, #4] - ldr r0, [r4] - ldr r0, [r0, #0x10] - add r0, r1, r0 - str r0, [r4, #0xc] - ldr r0, [r4] - ldr r0, [r0] - add r0, r1, r0 - str r0, [r4, #0x10] - ldmia sp!, {r4, pc} - arm_func_end sub_020522F0 - - arm_func_start sub_02052334 -sub_02052334: ; 0x02052334 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - bl MemFree - mov r0, #0 - str r0, [r4] - ldmia sp!, {r4, pc} - arm_func_end sub_02052334 - - arm_func_start LoadMonsterMd -LoadMonsterMd: ; 0x02052358 - stmdb sp!, {r3, lr} - ldr r0, _02052388 ; =_020B09C0 - ldr r1, _0205238C ; =_020A31B8 - mov r2, #0 - bl LoadFileFromRom - bl LoadM2nAndN2m - ldr r0, _02052390 ; =MONSTER_DATA_TABLE_PTR - ldr r1, [r0, #0xc] -#ifdef EUROPE - str r1, [r0, #8] -#else - str r1, [r0, #4] -#endif - add r1, r1, #8 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02052388: .word _020B09C0 -_0205238C: .word _020A31B8 -_02052390: .word MONSTER_DATA_TABLE_PTR - arm_func_end LoadMonsterMd - - arm_func_start GetNameRaw -GetNameRaw: ; 0x02052394 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, r1 - mov r1, #0x258 - bl _s32_div_f -#if defined(EUROPE) - add r0, r1, #0x21 - add r0, r0, #0x2200 -#elif defined(JAPAN) - add r0, r1, #0x590 - add r0, r0, #0x1000 -#else - add r0, r1, #0x1f - add r0, r0, #0x2200 -#endif - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl StringFromId - mov r1, r0 - mov r0, r4 - mov r2, #0x14 - bl strncpy - ldmia sp!, {r4, pc} - arm_func_end GetNameRaw - - arm_func_start GetName -GetName: ; 0x020523D0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r0, r1 - mov r1, #0x258 - mov r4, r2 - bl _s32_div_f -#if defined(EUROPE) - add r0, r1, #0x21 - add r0, r0, #0x2200 -#elif defined(JAPAN) - add r0, r1, #0x590 - add r0, r0, #0x1000 -#else - add r0, r1, #0x1f - add r0, r0, #0x2200 -#endif - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl StringFromId - mov r3, r0 - mov r0, r5 - mov r2, r4 - ldr r1, _02052414 ; =_020A31D4 - bl SprintfStatic__02052418 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02052414: .word _020A31D4 - arm_func_end GetName - - arm_func_start SprintfStatic__02052418 -SprintfStatic__02052418: ; 0x02052418 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - add r2, sp, #0xc - bic r2, r2, #3 - ldr r1, [sp, #0xc] - add r2, r2, #4 - bl vsprintf - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end SprintfStatic__02052418 - - arm_func_start GetNameWithGender -GetNameWithGender: ; 0x02052440 -#ifdef JAPAN - stmdb sp!, {r4, r5, r6, lr} -#else - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 -#endif - mov r5, r1 - mov r6, r0 - mov r0, r5 - mov r1, #0x258 - mov r4, r2 - bl _s32_div_f -#if defined(EUROPE) - add r0, r1, #0x21 - add r0, r0, #0x2200 -#elif defined(JAPAN) - add r0, r1, #0x590 - add r0, r0, #0x1000 -#else - add r0, r1, #0x1f - add r0, r0, #0x2200 -#endif - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl StringFromId - ldr r2, _020524F4 ; =MONSTER_DATA_TABLE_PTR - mov r1, #0x44 - ldr r2, [r2] - mov r3, r0 - smlabb r0, r5, r1, r2 - ldrb r0, [r0, #0x12] - cmp r0, #3 - cmpne r5, #0x1d - cmpne r5, #0x20 - bne _020524B0 - ldr r1, _020524F8 ; =_020A31D4 - mov r0, r6 - mov r2, r4 - bl SprintfStatic__02052418 -#ifdef JAPAN - ldmia sp!, {r4, r5, r6, pc} -#else - b _020524EC -#endif -_020524B0: - cmp r0, #2 - bne _020524D4 - ldr r1, _020524FC ; =_020A31E4 -#ifdef JAPAN - mov r0, r6 - mov r2, r4 - bl SprintfStatic__02052418 - ldmia sp!, {r4, r5, r6, pc} -_020524D4: - ldr r1, _02052838_JP ; =_020A45C8_JP - mov r0, r6 - mov r2, r4 - bl SprintfStatic__02052418 - ldmia sp!, {r4, r5, r6, pc} -#else - mov r5, #0xbe - mov r0, r6 - mov r2, r4 - str r5, [sp] - bl SprintfStatic__02052418 - b _020524EC -_020524D4: - ldr r1, _020524FC ; =_020A31E4 - mov r5, #0xbd - mov r0, r6 - mov r2, r4 - str r5, [sp] - bl SprintfStatic__02052418 -_020524EC: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} -#endif - .align 2, 0 -_020524F4: .word MONSTER_DATA_TABLE_PTR -_020524F8: .word _020A31D4 -_020524FC: .word _020A31E4 -#ifdef JAPAN -_02052838_JP: .word _020A45C8_JP -#endif - arm_func_end GetNameWithGender - - arm_func_start GetSpeciesString -GetSpeciesString: ; 0x02052500 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r0, r4 - bl GetBaseForm - cmp r0, #0xc9 - bne _02052684 - cmp r4, #0xca - moveq r4, #1 - beq _02052660 - cmp r4, #0xcb - moveq r4, #2 - beq _02052660 - cmp r4, #0xcc - moveq r4, #3 - beq _02052660 - cmp r4, #0xcd - moveq r4, #4 - beq _02052660 - cmp r4, #0xce - moveq r4, #5 - beq _02052660 - cmp r4, #0xcf - moveq r4, #6 - beq _02052660 - cmp r4, #0xd0 - moveq r4, #7 - beq _02052660 - cmp r4, #0xd1 - moveq r4, #8 - beq _02052660 - cmp r4, #0xd2 - moveq r4, #9 - beq _02052660 - cmp r4, #0xd3 - moveq r4, #0xa - beq _02052660 - cmp r4, #0xd4 - moveq r4, #0xb - beq _02052660 - cmp r4, #0xd5 - moveq r4, #0xc - beq _02052660 - cmp r4, #0xd6 - moveq r4, #0xd - beq _02052660 - cmp r4, #0xd7 - moveq r4, #0xe - beq _02052660 - cmp r4, #0xd8 - moveq r4, #0xf - beq _02052660 - cmp r4, #0xd9 - moveq r4, #0x10 - beq _02052660 - cmp r4, #0xda - moveq r4, #0x11 - beq _02052660 - cmp r4, #0xdb - moveq r4, #0x12 - beq _02052660 - cmp r4, #0xdc - moveq r4, #0x13 - beq _02052660 - cmp r4, #0xdd - moveq r4, #0x14 - beq _02052660 - cmp r4, #0xde - moveq r4, #0x15 - beq _02052660 - cmp r4, #0xdf - moveq r4, #0x16 - beq _02052660 - cmp r4, #0xe0 - moveq r4, #0x17 - beq _02052660 - cmp r4, #0xe1 - moveq r4, #0x18 - beq _02052660 - cmp r4, #0xe2 - moveq r4, #0x19 - beq _02052660 - cmp r4, #0xe3 - moveq r4, #0x1a - beq _02052660 - cmp r4, #0xe4 - moveq r4, #0x1b - movne r4, #0 -_02052660: - ldr r0, _020526B8 ; =0x000022E8 - bl StringFromId - ldr r1, _020526BC ; =UNOWN_SPECIES_ADDITIONAL_CHAR_PTR_TABLE - mov r2, r0 - ldr r3, [r1, r4, lsl #2] - ldr r1, _020526C0 ; =_020A31F4 - mov r0, r5 - bl SprintfStatic__02052418 - ldmia sp!, {r3, r4, r5, pc} -_02052684: - mov r0, r4 - mov r1, #0x258 - bl _s32_div_f -#if defined(EUROPE) - add r0, r1, #0x21 - add r0, r0, #0x2200 -#elif defined(JAPAN) - add r0, r1, #0x590 - add r0, r0, #0x1000 -#else - add r0, r1, #0x1f - add r0, r0, #0x2200 -#endif - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl StringFromId - mov r2, r0 - ldr r1, _020526C4 ; =_020A31FC - mov r0, r5 - bl SprintfStatic__02052418 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -#if defined(EUROPE) -_020526B8: .word 0x000022EA -#elif defined(JAPAN) -_020526B8: .word 0x00001659 -#else -_020526B8: .word 0x000022E8 -#endif -_020526BC: .word UNOWN_SPECIES_ADDITIONAL_CHAR_PTR_TABLE -_020526C0: .word _020A31F4 -_020526C4: .word _020A31FC - arm_func_end GetSpeciesString - - arm_func_start GetNameString -GetNameString: ; 0x020526C8 - stmdb sp!, {r3, lr} - mov r1, #0x258 - bl _s32_div_f -#if defined(EUROPE) - add r0, r1, #0x21 - add r0, r0, #0x2200 -#elif defined(JAPAN) - add r0, r1, #0x590 - add r0, r0, #0x1000 -#else - add r0, r1, #0x1f - add r0, r0, #0x2200 -#endif - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl StringFromId - ldmia sp!, {r3, pc} - arm_func_end GetNameString diff --git a/asm/main_02052060.s b/asm/main_02052060.s new file mode 100644 index 00000000..7d01c104 --- /dev/null +++ b/asm/main_02052060.s @@ -0,0 +1,556 @@ + .include "asm/macros.inc" + .include "main_02052060.inc" + + .text + + arm_func_start sub_02052060 +sub_02052060: ; 0x02052060 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x2c + ldr r4, _020522E4 ; =_020B09B0 + mov sl, r1 + ldr r7, [sp, #0x54] + ldr r4, [r4] + mov r1, #0x30 + mla r4, r7, r1, r4 + ldr fp, [sp, #0x50] + mov r1, #0x18 + mla r4, fp, r1, r4 + mov sb, r2 + add r1, sp, #0x28 + mov r2, #0xf + mov r8, r3 + ldr r5, [r4, #0x10] + bl sub_02051FF0 + mov r3, r0 + ldr r4, [sp, #0x28] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _020522E4 ; =_020B09B0 + ldr r2, [r4, #8] + ldr r0, [r0] + add r1, r5, sl + add r2, r4, r2 + add r0, r0, #0x60 + bl sub_02051804 + mov r0, #1 + str r0, [sp] + mov r1, #0 + ldr r0, _020522E4 ; =_020B09B0 + str r1, [sp, #4] + ldr r0, [r0] + mov r2, r4 + mov r3, r1 + add r0, r0, #0x60 + bl sub_02051804 + ldr r1, [sp, #0x28] + rsb r0, sb, #0x20 + mov r0, r0, lsl #0x10 + ldr r1, [r1, #0x10] + str r0, [sp, #0x18] + add r0, r4, r1 + str r0, [sp, #0xc] + mov r5, #0 + b _020521CC +_02052120: + mov r6, #0 + mov r0, r6 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + mov r1, sb, lsl #0x10 + add r0, r0, sb, lsl #6 + str r0, [sp, #0x10] + mov r0, r1, asr #0x10 + str r0, [sp, #0x14] +_02052144: + ldr r0, [sp, #0x10] + mov r1, r6, lsl #1 + ldrh r1, [r1, r0] + ldr r2, _020522E8 ; =0x00000FFF + mov r0, r6, lsl #0x10 + and r2, r1, r2 + mov r2, r2, lsl #0x10 + mov r1, r1, lsl #4 + mov r2, r2, lsr #0x10 + add r1, r8, r1, lsr #16 + add r2, r2, sl, lsr #5 + mov r1, r1, lsl #0x1c + mov r2, r2, lsl #0x10 + mov r1, r1, lsr #0x10 + orr r1, r1, r2, lsr #16 + mov r1, r1, lsl #0x10 + mov r2, r1, lsr #0x10 + ldr r1, [sp, #0x14] + mov r0, r0, asr #0x10 + str r7, [sp] + mov r3, fp + bl sub_02051D8C + ldr r0, [sp, #8] + add r6, r6, #1 + add r0, r0, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + str r0, [sp, #8] + cmp r0, #0x20 + blo _02052144 + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, lsr #0x10 + add sb, sb, #1 +_020521CC: + ldr r0, [sp, #0x18] + cmp r5, r0, lsr #16 + blo _02052120 + mov r0, fp + mov r1, r7 + bl sub_02051E60 + ldr r0, [sp, #0x28] + ldr r3, _020522EC ; =ARM9_UNKNOWN_PTR__NA_20A2C84 + ldr r0, [r0] + add r2, sp, #0x1c + add r5, r4, r0 + mov r4, #0 + mov r1, #4 +_02052200: + ldrb r0, [r3], #1 + subs r1, r1, #1 + strb r0, [r2], #1 + bne _02052200 + mov r0, #0x28 + mul r6, r7, r0 + b _020522B0 +_0205221C: + add r3, sp, #0x1c + add r2, sp, #0x20 + mov r1, #4 +_02052228: + ldrb r0, [r3], #1 + subs r1, r1, #1 + strb r0, [r2], #1 + bne _02052228 + ldrb r0, [r5] + add r3, sp, #0x20 + add r2, sp, #0x24 + strb r0, [sp, #0x20] + ldrb r0, [r5, #1] + mov r1, #4 + strb r0, [sp, #0x21] + ldrb r0, [r5, #2] + strb r0, [sp, #0x22] + ldrb r0, [r5, #3] + strb r0, [sp, #0x23] +_02052264: + ldrb r0, [r3], #1 + subs r1, r1, #1 + strb r0, [r2], #1 + bne _02052264 + add r0, r4, r8, lsl #4 + cmp r0, #0x100 + bge _020522C8 + ldr r1, _020522E4 ; =_020B09B0 + mov r0, r0, lsl #0x10 + ldr r1, [r1] + mov r0, r0, asr #0x10 + add r3, r1, #0x1cc + mov r1, r0, lsl #0x10 + add r2, sp, #0x24 + add r0, r3, r6 + mov r1, r1, lsr #0x10 + bl sub_0200A590 + add r4, r4, #1 + add r5, r5, #4 +_020522B0: + ldr r0, [sp, #0x28] + ldr r1, [r0, #4] + mov r0, r1, asr #1 + add r0, r1, r0, lsr #30 + cmp r4, r0, asr #2 + blt _0205221C +_020522C8: + ldr r0, _020522E4 ; =_020B09B0 + ldr r0, [r0] + add r0, r0, #0x1cc + add r0, r0, r6 + bl sub_0200A504 + add sp, sp, #0x2c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_020522E4: .word _020B09B0 +_020522E8: .word 0x00000FFF +_020522EC: .word ARM9_UNKNOWN_PTR__NA_20A2C84 + arm_func_end sub_02052060 + + arm_func_start sub_020522F0 +sub_020522F0: ; 0x020522F0 + stmdb sp!, {r4, lr} + mov r4, r1 + bl sub_02051FF0 + str r0, [r4, #8] + ldr r1, [r4] + ldr r0, [r1, #8] + add r0, r1, r0 + str r0, [r4, #4] + ldr r0, [r4] + ldr r0, [r0, #0x10] + add r0, r1, r0 + str r0, [r4, #0xc] + ldr r0, [r4] + ldr r0, [r0] + add r0, r1, r0 + str r0, [r4, #0x10] + ldmia sp!, {r4, pc} + arm_func_end sub_020522F0 + + arm_func_start sub_02052334 +sub_02052334: ; 0x02052334 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + bl MemFree + mov r0, #0 + str r0, [r4] + ldmia sp!, {r4, pc} + arm_func_end sub_02052334 + + arm_func_start LoadMonsterMd +LoadMonsterMd: ; 0x02052358 + stmdb sp!, {r3, lr} + ldr r0, _02052388 ; =_020B09C0 + ldr r1, _0205238C ; =_020A31B8 + mov r2, #0 + bl LoadFileFromRom + bl LoadM2nAndN2m + ldr r0, _02052390 ; =MONSTER_DATA_TABLE_PTR + ldr r1, [r0, #0xc] +#ifdef EUROPE + str r1, [r0, #8] +#else + str r1, [r0, #4] +#endif + add r1, r1, #8 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02052388: .word _020B09C0 +_0205238C: .word _020A31B8 +_02052390: .word MONSTER_DATA_TABLE_PTR + arm_func_end LoadMonsterMd + + arm_func_start GetNameRaw +GetNameRaw: ; 0x02052394 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, r1 + mov r1, #0x258 + bl _s32_div_f +#if defined(EUROPE) + add r0, r1, #0x21 + add r0, r0, #0x2200 +#elif defined(JAPAN) + add r0, r1, #0x590 + add r0, r0, #0x1000 +#else + add r0, r1, #0x1f + add r0, r0, #0x2200 +#endif + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl StringFromId + mov r1, r0 + mov r0, r4 + mov r2, #0x14 + bl strncpy + ldmia sp!, {r4, pc} + arm_func_end GetNameRaw + + arm_func_start GetName +GetName: ; 0x020523D0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r0, r1 + mov r1, #0x258 + mov r4, r2 + bl _s32_div_f +#if defined(EUROPE) + add r0, r1, #0x21 + add r0, r0, #0x2200 +#elif defined(JAPAN) + add r0, r1, #0x590 + add r0, r0, #0x1000 +#else + add r0, r1, #0x1f + add r0, r0, #0x2200 +#endif + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl StringFromId + mov r3, r0 + mov r0, r5 + mov r2, r4 + ldr r1, _02052414 ; =_020A31D4 + bl SprintfStatic__02052418 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02052414: .word _020A31D4 + arm_func_end GetName + + arm_func_start SprintfStatic__02052418 +SprintfStatic__02052418: ; 0x02052418 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, lr} + add r2, sp, #0xc + bic r2, r2, #3 + ldr r1, [sp, #0xc] + add r2, r2, #4 + bl vsprintf + ldmia sp!, {r3, lr} + add sp, sp, #0x10 + bx lr + arm_func_end SprintfStatic__02052418 + + arm_func_start GetNameWithGender +GetNameWithGender: ; 0x02052440 +#ifdef JAPAN + stmdb sp!, {r4, r5, r6, lr} +#else + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 +#endif + mov r5, r1 + mov r6, r0 + mov r0, r5 + mov r1, #0x258 + mov r4, r2 + bl _s32_div_f +#if defined(EUROPE) + add r0, r1, #0x21 + add r0, r0, #0x2200 +#elif defined(JAPAN) + add r0, r1, #0x590 + add r0, r0, #0x1000 +#else + add r0, r1, #0x1f + add r0, r0, #0x2200 +#endif + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl StringFromId + ldr r2, _020524F4 ; =MONSTER_DATA_TABLE_PTR + mov r1, #0x44 + ldr r2, [r2] + mov r3, r0 + smlabb r0, r5, r1, r2 + ldrb r0, [r0, #0x12] + cmp r0, #3 + cmpne r5, #0x1d + cmpne r5, #0x20 + bne _020524B0 + ldr r1, _020524F8 ; =_020A31D4 + mov r0, r6 + mov r2, r4 + bl SprintfStatic__02052418 +#ifdef JAPAN + ldmia sp!, {r4, r5, r6, pc} +#else + b _020524EC +#endif +_020524B0: + cmp r0, #2 + bne _020524D4 + ldr r1, _020524FC ; =_020A31E4 +#ifdef JAPAN + mov r0, r6 + mov r2, r4 + bl SprintfStatic__02052418 + ldmia sp!, {r4, r5, r6, pc} +_020524D4: + ldr r1, _02052838_JP ; =_020A45C8_JP + mov r0, r6 + mov r2, r4 + bl SprintfStatic__02052418 + ldmia sp!, {r4, r5, r6, pc} +#else + mov r5, #0xbe + mov r0, r6 + mov r2, r4 + str r5, [sp] + bl SprintfStatic__02052418 + b _020524EC +_020524D4: + ldr r1, _020524FC ; =_020A31E4 + mov r5, #0xbd + mov r0, r6 + mov r2, r4 + str r5, [sp] + bl SprintfStatic__02052418 +_020524EC: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} +#endif + .align 2, 0 +_020524F4: .word MONSTER_DATA_TABLE_PTR +_020524F8: .word _020A31D4 +_020524FC: .word _020A31E4 +#ifdef JAPAN +_02052838_JP: .word _020A45C8_JP +#endif + arm_func_end GetNameWithGender + + arm_func_start GetSpeciesString +GetSpeciesString: ; 0x02052500 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + mov r0, r4 + bl GetBaseForm + cmp r0, #0xc9 + bne _02052684 + cmp r4, #0xca + moveq r4, #1 + beq _02052660 + cmp r4, #0xcb + moveq r4, #2 + beq _02052660 + cmp r4, #0xcc + moveq r4, #3 + beq _02052660 + cmp r4, #0xcd + moveq r4, #4 + beq _02052660 + cmp r4, #0xce + moveq r4, #5 + beq _02052660 + cmp r4, #0xcf + moveq r4, #6 + beq _02052660 + cmp r4, #0xd0 + moveq r4, #7 + beq _02052660 + cmp r4, #0xd1 + moveq r4, #8 + beq _02052660 + cmp r4, #0xd2 + moveq r4, #9 + beq _02052660 + cmp r4, #0xd3 + moveq r4, #0xa + beq _02052660 + cmp r4, #0xd4 + moveq r4, #0xb + beq _02052660 + cmp r4, #0xd5 + moveq r4, #0xc + beq _02052660 + cmp r4, #0xd6 + moveq r4, #0xd + beq _02052660 + cmp r4, #0xd7 + moveq r4, #0xe + beq _02052660 + cmp r4, #0xd8 + moveq r4, #0xf + beq _02052660 + cmp r4, #0xd9 + moveq r4, #0x10 + beq _02052660 + cmp r4, #0xda + moveq r4, #0x11 + beq _02052660 + cmp r4, #0xdb + moveq r4, #0x12 + beq _02052660 + cmp r4, #0xdc + moveq r4, #0x13 + beq _02052660 + cmp r4, #0xdd + moveq r4, #0x14 + beq _02052660 + cmp r4, #0xde + moveq r4, #0x15 + beq _02052660 + cmp r4, #0xdf + moveq r4, #0x16 + beq _02052660 + cmp r4, #0xe0 + moveq r4, #0x17 + beq _02052660 + cmp r4, #0xe1 + moveq r4, #0x18 + beq _02052660 + cmp r4, #0xe2 + moveq r4, #0x19 + beq _02052660 + cmp r4, #0xe3 + moveq r4, #0x1a + beq _02052660 + cmp r4, #0xe4 + moveq r4, #0x1b + movne r4, #0 +_02052660: + ldr r0, _020526B8 ; =0x000022E8 + bl StringFromId + ldr r1, _020526BC ; =UNOWN_SPECIES_ADDITIONAL_CHAR_PTR_TABLE + mov r2, r0 + ldr r3, [r1, r4, lsl #2] + ldr r1, _020526C0 ; =_020A31F4 + mov r0, r5 + bl SprintfStatic__02052418 + ldmia sp!, {r3, r4, r5, pc} +_02052684: + mov r0, r4 + mov r1, #0x258 + bl _s32_div_f +#if defined(EUROPE) + add r0, r1, #0x21 + add r0, r0, #0x2200 +#elif defined(JAPAN) + add r0, r1, #0x590 + add r0, r0, #0x1000 +#else + add r0, r1, #0x1f + add r0, r0, #0x2200 +#endif + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl StringFromId + mov r2, r0 + ldr r1, _020526C4 ; =_020A31FC + mov r0, r5 + bl SprintfStatic__02052418 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +#if defined(EUROPE) +_020526B8: .word 0x000022EA +#elif defined(JAPAN) +_020526B8: .word 0x00001659 +#else +_020526B8: .word 0x000022E8 +#endif +_020526BC: .word UNOWN_SPECIES_ADDITIONAL_CHAR_PTR_TABLE +_020526C0: .word _020A31F4 +_020526C4: .word _020A31FC + arm_func_end GetSpeciesString + + arm_func_start GetNameString +GetNameString: ; 0x020526C8 + stmdb sp!, {r3, lr} + mov r1, #0x258 + bl _s32_div_f +#if defined(EUROPE) + add r0, r1, #0x21 + add r0, r0, #0x2200 +#elif defined(JAPAN) + add r0, r1, #0x590 + add r0, r0, #0x1000 +#else + add r0, r1, #0x1f + add r0, r0, #0x2200 +#endif + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl StringFromId + ldmia sp!, {r3, pc} + arm_func_end GetNameString diff --git a/asm/main_0205A4B4.s b/asm/main_0205A4B4.s index 31688247..8ba8983a 100644 --- a/asm/main_0205A4B4.s +++ b/asm/main_0205A4B4.s @@ -3,6 +3,7 @@ .text +; https://decomp.me/scratch/LRAYo arm_func_start sub_0205A4B4 sub_0205A4B4: ; 0x0205A4B4 stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} diff --git a/asm/main_0205B0B8.s b/asm/main_0205B0B8.s index 20f86439..8c9b83f8 100644 --- a/asm/main_0205B0B8.s +++ b/asm/main_0205B0B8.s @@ -37,6 +37,7 @@ _0205B118: ldmia sp!, {r3, pc} arm_func_end sub_0205B0B8 +; https://decomp.me/scratch/gWhya arm_func_start sub_0205B120 sub_0205B120: ; 0x0205B120 stmdb sp!, {r4, r5, r6, r7, lr} diff --git a/asm/main_0206A750.s b/asm/main_0206A750.s index 17b31ed8..2a169a06 100644 --- a/asm/main_0206A750.s +++ b/asm/main_0206A750.s @@ -44,2487 +44,3 @@ _0206A840: .align 2, 0 _0206A848: .word 0x000003E9 arm_func_end sub_0206A7CC - - arm_func_start sub_0206A84C -sub_0206A84C: ; 0x0206A84C - cmp r0, #0xb4 - addlo r0, r0, #1 - movlo r0, r0, lsl #0x10 - movlo r0, r0, asr #0x10 - bxlo lr - blo _0206A870 - cmp r0, #0xd3 - movls r0, #0xb8 - bxls lr -_0206A870: - mvn r0, #0 - bx lr - arm_func_end sub_0206A84C - - arm_func_start sub_0206A878 -sub_0206A878: ; 0x0206A878 - stmdb sp!, {r3, lr} - bl sub_0206A7CC - mvn r1, #0 - cmp r0, r1 - ldrne r1, _0206A89C ; =MAP_MARKER_PLACEMENTS - movne r0, r0, lsl #3 - ldrnesh r1, [r1, r0] - mov r0, r1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0206A89C: .word MAP_MARKER_PLACEMENTS - arm_func_end sub_0206A878 - - arm_func_start sub_0206A8A0 -sub_0206A8A0: ; 0x0206A8A0 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - bl sub_0206A7CC - mov r5, r0 - mov r0, r4 - bl sub_0206A7CC - mvn r1, #0 - cmp r5, r1 - mov r4, r0 - ldrne r0, _0206A908 ; =_020A94D2 - movne r2, r5, lsl #3 - ldrnesh r0, [r0, r2] - cmpne r0, r1 - movne r5, r0 - mvn r0, #0 - cmp r4, r0 - ldrne r1, _0206A908 ; =_020A94D2 - movne r2, r4, lsl #3 - ldrnesh r1, [r1, r2] - cmpne r1, r0 - movne r4, r1 - cmp r5, r4 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0206A908: .word _020A94D2 - arm_func_end sub_0206A8A0 - - arm_func_start sub_0206A90C -sub_0206A90C: ; 0x0206A90C -#ifdef EUROPE -#define SUB_0206A90C_WORD_OFFSET 2 -#else -#define SUB_0206A90C_WORD_OFFSET 0 -#endif - stmdb sp!, {r3, lr} - bl sub_0206A7CC - mvn r1, #0 - cmp r0, r1 -#ifdef JAPAN - moveq r0, #0x47 - ldmeqia sp!, {r3, pc} - cmp r0, #0 - moveq r0, #0x40 -#else - ldreq r0, _0206A964 ; =0x0000403A - ldmeqia sp!, {r3, pc} - cmp r0, #0 - ldreq r0, _0206A968 ; =0x00004033 -#endif - ldmeqia sp!, {r3, pc} - cmp r0, #1 - blt _0206A950 - cmp r0, #0xb4 - bgt _0206A950 - sub r0, r0, #1 - and r0, r0, #0xff - bl sub_02024934 - ldmia sp!, {r3, pc} -_0206A950: -#ifdef JAPAN - sub r0, r0, #0x74 -#else - add r0, r0, #0x7f + SUB_0206A90C_WORD_OFFSET - add r0, r0, #0x3f00 -#endif - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - ldmia sp!, {r3, pc} - .align 2, 0 -#ifndef JAPAN -_0206A964: .word 0x0000403A + SUB_0206A90C_WORD_OFFSET -_0206A968: .word 0x00004033 + SUB_0206A90C_WORD_OFFSET -#endif - arm_func_end sub_0206A90C - - arm_func_start sub_0206A96C -sub_0206A96C: ; 0x0206A96C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - mov r4, r2 - bl sub_0206A7CC - mvn r2, #0 - cmp r0, r2 - moveq r0, r2 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _0206A9D8 ; =MAP_MARKER_PLACEMENTS - cmp r5, r2 - add r3, r1, r0, lsl #3 - ldrnesh r1, [r3] - cmpne r1, r5 - movne r0, r2 - ldmneia sp!, {r3, r4, r5, pc} - ldrsh r2, [r3, #2] - cmp r2, r0 - mvnne r1, #0 - cmpne r2, r1 - ldrne r1, _0206A9D8 ; =MAP_MARKER_PLACEMENTS - movne r0, r2 - addne r3, r1, r2, lsl #3 - ldrsh r1, [r3, #4] - str r1, [r4] - ldrsh r1, [r3, #6] - str r1, [r4, #4] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0206A9D8: .word MAP_MARKER_PLACEMENTS - arm_func_end sub_0206A96C - - arm_func_start sub_0206A9DC -sub_0206A9DC: ; 0x0206A9DC - stmdb sp!, {r4, lr} - bl GetExecuteSpecialEpisodeType - mov r4, r0 - cmp r4, #4 - bne _0206AA24 - mov r0, #0x3e8 - bl sub_0206A7CC - ldr r1, _0206AA34 ; =MAP_MARKER_PLACEMENTS - mov r0, r0, lsl #3 - ldrsh r0, [r1, r0] - ldr r1, _0206AA38 ; =0xFFFFFED2 - add r1, r0, r1 - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - cmp r1, #1 - ldmlsia sp!, {r4, pc} -_0206AA24: - ldr r0, _0206AA3C ; =_020A94C6 - mov r1, r4, lsl #1 - ldrsh r0, [r0, r1] - ldmia sp!, {r4, pc} - .align 2, 0 -_0206AA34: .word MAP_MARKER_PLACEMENTS -#if defined(EUROPE) -_0206AA38: .word 0xFFFFFEC6 -#elif defined(JAPAN) -_0206AA38: .word 0xFFFFFECD -#else -_0206AA38: .word 0xFFFFFED2 -#endif -_0206AA3C: .word _020A94C6 - arm_func_end sub_0206A9DC - - arm_func_start sub_0206AA40 -sub_0206AA40: ; 0x0206AA40 - stmdb sp!, {r3, lr} - bl GetExecuteSpecialEpisodeType - ldr r1, _0206AA58 ; =_020A94BC - mov r0, r0, lsl #1 - ldrsh r0, [r1, r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0206AA58: .word _020A94BC - arm_func_end sub_0206AA40 - - arm_func_start sub_0206AA5C -sub_0206AA5C: ; 0x0206AA5C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r5, r0 - mov r0, #0x40 - mov r1, #1 - bl MemAlloc - ldr r2, _0206AB90 ; =_020B0B4C - mov r1, #0x40 - str r0, [r2, #8] - bl MemZero - ldr r0, _0206AB90 ; =_020B0B4C - mov r1, #0x20 - ldr r4, [r0, #8] - add r0, r4, #4 - bl MemZero - mov r1, #0 - str r1, [r4, #0x20] - ldr r0, _0206AB90 ; =_020B0B4C - strh r1, [r4, #0x1c] - ldr r1, [r0, #8] - str r5, [r1] - ldr r2, [r0, #8] - ldr r0, [r2] - cmp r0, #1 - bne _0206AB3C - ldr r0, _0206AB94 ; =0x00001F64 - mov r1, #6 - add r4, r2, #4 - bl MemAlloc - ldr r1, _0206AB94 ; =0x00001F64 - mov r5, r0 - bl MemZero - mov r8, #0x58 - mov sl, #0 - mvn r7, #0 - mov r6, r8 -_0206AAE8: - mul sb, sl, r6 - mov r1, r8 - add r0, r5, sb - bl MemZero - add sl, sl, #1 - strh r7, [r5, sb] - cmp sl, #0x50 - blt _0206AAE8 - add r0, r5, #0x1000 - ldr r2, _0206AB90 ; =_020B0B4C - str r4, [r0, #0xf5c] - ldr r0, [r2, #8] - mov r1, #5 - str r5, [r0, #0x28] - ldr r0, [r2, #8] - add r0, r0, #4 - bl sub_0206BBE0 - ldr r1, _0206AB90 ; =_020B0B4C - ldr r1, [r1, #8] - str r0, [r1, #0x24] - b _0206AB5C -_0206AB3C: - cmp r0, #2 - bne _0206AB5C - add r0, r2, #4 - mov r1, #4 - bl sub_0206BBE0 - ldr r1, _0206AB90 ; =_020B0B4C - ldr r1, [r1, #8] - str r0, [r1, #0x24] -_0206AB5C: - ldr r1, _0206AB90 ; =_020B0B4C - mov r3, #0 - ldr r2, [r1, #8] - mov r0, #0x80 - str r3, [r2, #0x2c] - ldr r2, [r1, #8] - strb r3, [r2, #0x30] - ldr r2, [r1, #8] - str r3, [r2, #0x34] - ldr r1, [r1, #8] - strb r3, [r1, #0x31] - bl ov10_022C2340 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0206AB90: .word _020B0B4C -_0206AB94: .word 0x00001F64 - arm_func_end sub_0206AA5C - - arm_func_start sub_0206AB98 -sub_0206AB98: ; 0x0206AB98 - ldr r0, _0206ABAC ; =_020B0B4C - mov r1, #1 - ldr r0, [r0, #8] - strb r1, [r0, #0x30] - bx lr - .align 2, 0 -_0206ABAC: .word _020B0B4C - arm_func_end sub_0206AB98 - - arm_func_start sub_0206ABB0 -sub_0206ABB0: ; 0x0206ABB0 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x18 - ldr r0, _0206AD28 ; =_020B0B4C - ldr r4, [r0, #8] - cmp r4, #0 - ldrneb r0, [r4, #0x30] - cmpne r0, #0 - beq _0206AD1C - ldr r0, [r4] - ldr r1, _0206AD2C ; =_020B0B5C - cmp r0, #1 - movne r5, #1 - moveq r5, #0 - ldr r1, [r1, r5, lsl #3] - add r0, sp, #8 - mov r2, #6 - bl LoadWteFromRom - ldr r0, _0206AD30 ; =_020B0B60 - mov r1, #0 - ldr r0, [r0, r5, lsl #3] - bl sub_0201DF38 - str r0, [r4, #0x14] - mov r2, #0 - ldr r1, [r4, #0x20] - add r0, sp, #8 - mov r3, r2 - bl sub_0201E12C - add r0, sp, #8 - bl DelayWteFree - ldr r1, [r4, #0x20] - add r0, sp, #0x10 - str r1, [r4, #0x18] - ldr r2, [r4, #0x20] - ldr r1, _0206AD34 ; =_020A9F34 - add r2, r2, #0x8000 - str r2, [r4, #0x20] - mov r2, #6 - bl LoadWteFromRom - ldr r0, _0206AD38 ; =_020A9F48 - mov r1, #0 - bl sub_0201DF38 - str r0, [r4, #4] - ldr r1, [r4, #0x20] - add r0, sp, #0x10 - mov r2, #1 - mov r3, #0 - bl sub_0201E12C - add r0, sp, #0x10 - bl DelayWteFree - ldr r1, [r4, #0x20] - add r0, sp, #0x10 - str r1, [r4, #8] - ldr r2, [r4, #0x20] - ldr r1, _0206AD3C ; =_020A9F5C - add r2, r2, #0x2000 - str r2, [r4, #0x20] - mov r2, #6 - bl LoadWteFromRom - ldr r0, _0206AD40 ; =_020A9F70 - mov r1, #0 - bl sub_0201DF38 - str r0, [r4, #0xc] - ldr r1, [r4, #0x20] - add r0, sp, #0x10 - mov r2, #2 - mov r3, #0 - bl sub_0201E12C - add r0, sp, #0x10 - bl DelayWteFree - ldr r0, [r4, #0x20] - mov r2, #0 - str r0, [r4, #0x10] - ldr r1, [r4, #0x20] - ldr r0, _0206AD44 ; =WAN_TABLE - add r1, r1, #0x4000 - str r1, [r4, #0x20] - ldr r0, [r0] - ldr r1, _0206AD48 ; =_020A9F84 - bl LoadWanTableEntry - strh r0, [r4, #0x1c] - mov r3, #1 - str r3, [sp] - mov r2, #0 - str r2, [sp, #4] - ldrsh r0, [r4, #0x1c] - mov r1, #0x2c0 - bl sub_0201D9C8 - ldr r0, _0206AD28 ; =_020B0B4C - mov r1, #0 - ldr r0, [r0, #8] - strb r1, [r0, #0x30] -_0206AD1C: - mov r0, #1 - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0206AD28: .word _020B0B4C -_0206AD2C: .word _020B0B5C -_0206AD30: .word _020B0B60 -_0206AD34: .word _020A9F34 -_0206AD38: .word _020A9F48 -_0206AD3C: .word _020A9F5C -_0206AD40: .word _020A9F70 -_0206AD44: .word WAN_TABLE -_0206AD48: .word _020A9F84 - arm_func_end sub_0206ABB0 - - arm_func_start sub_0206AD4C -sub_0206AD4C: ; 0x0206AD4C - ldr r0, _0206AD7C ; =_020B0B4C - ldr r0, [r0, #8] - cmp r0, #0 - beq _0206AD74 - ldrb r0, [r0, #0x31] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr -_0206AD74: - mov r0, #0 - bx lr - .align 2, 0 -_0206AD7C: .word _020B0B4C - arm_func_end sub_0206AD4C - - arm_func_start sub_0206AD80 -sub_0206AD80: ; 0x0206AD80 - ldr r0, _0206AD9C ; =_020B0B4C - ldr r1, [r0, #8] - cmp r1, #0 - ldrne r0, [r1, #0x34] - addne r0, r0, #1 - strne r0, [r1, #0x34] - bx lr - .align 2, 0 -_0206AD9C: .word _020B0B4C - arm_func_end sub_0206AD80 - - arm_func_start sub_0206ADA0 -sub_0206ADA0: ; 0x0206ADA0 - ldr r1, _0206ADB4 ; =_020B0B4C - ldr r1, [r1, #8] - cmp r1, #0 - strne r0, [r1, #0x38] - bx lr - .align 2, 0 -_0206ADB4: .word _020B0B4C - arm_func_end sub_0206ADA0 - - arm_func_start sub_0206ADB8 -sub_0206ADB8: ; 0x0206ADB8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x4c - ldr r0, _0206B9BC ; =_020B0B4C - ldr r0, [r0, #8] - cmp r0, #0 - moveq r0, #0 - beq _0206B9B4 - bl ov10_022C23EC - ldr r0, _0206B9BC ; =_020B0B4C - ldr r8, [r0, #8] - ldrb r0, [r8, #0x30] - cmp r0, #0 - bne _0206B9B0 - ldr r0, [r8, #0x2c] - cmp r0, #0 - beq _0206AE00 - cmp r0, #1 - b _0206B99C -_0206AE00: - ldr r0, [r8, #0x38] - cmp r0, #0 - subgt r0, r0, #1 - strgt r0, [r8, #0x38] - bgt _0206B99C - ldr r0, [r8] - cmp r0, #1 - bne _0206B678 - ldr r7, [r8, #0x24] - ldr sb, [r8, #0x28] - ldr r0, [r7, #0xc] - cmp r0, #0 - beq _0206AE48 - cmp r0, #1 - beq _0206AF78 - cmp r0, #2 - beq _0206B1D4 - b _0206B670 -_0206AE48: - ldr r1, [r7, #0x2d4] - mov r0, #0xc0 - ldr fp, [r7, #0x2d8] - mov r6, #0 - bl _s32_div_f - mov sb, r0, lsl #8 - mov r0, #0x14000 - rsb r0, r0, #0 - str r0, [sp, #0x2c] - b _0206AF50 -_0206AE70: - mul r0, r6, sb - ands r5, r6, #1 - movne r4, #0x14000 - ldr r1, _0206B9BC ; =_020B0B4C - ldreq r4, [sp, #0x2c] - str r0, [sp, #0x18] - ldr r1, [r1, #4] - rsb r0, r4, #0 - bl _s32_div_f - str r0, [sp, #0x1c] - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - mov r0, #0xe0 - str r0, [sp, #8] - mov r0, #0x58 - mul sl, r6, r0 - mov r0, r6, lsl #0x10 - mov r0, r0, asr #0x10 - str r0, [sp, #0xc] - mov r0, #0 - str r0, [sp, #0x10] - ldr r0, [r7] - ldr r3, [sp, #0x18] - mov r1, fp - add r0, r0, sl - mov r2, r4 - bl sub_0206BC3C - cmp r5, #0 - movne r0, #0 - moveq r0, #0x10000 - add r2, r4, r0 - ldr r5, [r7, #4] - ldr r0, [sp, #0x1c] - ldr r3, [sp, #0x18] - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - mov r0, #0x70 - str r0, [sp, #8] - mov r0, #3 - str r0, [sp, #0xc] - mov r0, #0 - str r0, [sp, #0x10] - add r0, r5, sl - mov r1, fp - bl sub_0206BD04 - ldrsh r0, [r5, sl] - bl sub_0201F324 - ldrsh r1, [r0, #0x1a] - add r6, r6, #1 - add r1, r1, r1, lsr #31 - mov r1, r1, asr #1 - strh r1, [r0, #8] - mov r1, #0 - strh r1, [r0, #0xa] -_0206AF50: - ldr r0, [r7, #0x2d4] - cmp r6, r0 - blt _0206AE70 - ldr r0, _0206B9BC ; =_020B0B4C - ldr r0, [r0, #4] - str r0, [r7, #8] - ldr r0, [r7, #0xc] - add r0, r0, #1 - str r0, [r7, #0xc] - b _0206B670 -_0206AF78: - mov r4, #0 - mov fp, #0x58 - b _0206B04C -_0206AF84: - mul r5, r4, fp - ldr r6, [r7] - add sl, r6, r5 - ldr r1, [sl, #8] - ldr r0, [sl, #0x18] - add r0, r1, r0 - str r0, [sl, #8] - ldr r1, [sl, #0xc] - ldr r0, [sl, #0x1c] - add r0, r1, r0 - str r0, [sl, #0xc] - ldrsh r0, [r6, r5] - bl sub_0201F324 - ldr r2, [sl, #8] - mov r1, r2, asr #7 - add r1, r2, r1, lsr #24 - mov r1, r1, asr #8 - strh r1, [r0] - ldrsh r0, [r6, r5] - bl sub_0201F324 - ldr r2, [sl, #0xc] - mov r1, r2, asr #7 - add r1, r2, r1, lsr #24 - mov r1, r1, asr #8 - strh r1, [r0, #2] - ldr r6, [r7, #4] - add sl, r6, r5 - ldr r1, [sl, #8] - ldr r0, [sl, #0x18] - add r0, r1, r0 - str r0, [sl, #8] - ldr r1, [sl, #0xc] - ldr r0, [sl, #0x1c] - add r0, r1, r0 - str r0, [sl, #0xc] - ldrsh r0, [r6, r5] - bl sub_0201F324 - ldr r2, [sl, #8] - mov r1, r2, asr #7 - add r1, r2, r1, lsr #24 - mov r1, r1, asr #8 - strh r1, [r0] - ldrsh r0, [r6, r5] - bl sub_0201F324 - ldr r2, [sl, #0xc] - add r4, r4, #1 - mov r1, r2, asr #7 - add r1, r2, r1, lsr #24 - mov r1, r1, asr #8 - strh r1, [r0, #2] -_0206B04C: - ldr r0, [r7, #0x2d4] - cmp r4, r0 - blt _0206AF84 - ldr r0, [r7, #8] - cmp r0, #0 - bne _0206B0E0 - mov r6, #0 - mov fp, r6 - b _0206B0D0 -_0206B070: - mov r0, #0x58 - mul r4, r6, r0 - ldr r5, [r7] - ldrsh r0, [r5, r4] - add sl, r5, r4 - bl sub_0201F324 - str fp, [sl, #8] - str fp, [sl, #0x18] - str fp, [sl, #0x1c] - ldrsh r0, [r5, r4] - bl sub_0201F324 - ldr r2, [sl, #8] - mov r1, r2, asr #7 - add r1, r2, r1, lsr #24 - mov r1, r1, asr #8 - strh r1, [r0] - ldrsh r0, [r5, r4] - bl sub_0201F324 - ldr r2, [sl, #0xc] - add r6, r6, #1 - mov r1, r2, asr #7 - add r1, r2, r1, lsr #24 - mov r1, r1, asr #8 - strh r1, [r0, #2] -_0206B0D0: - ldr r0, [r7, #0x2d4] - cmp r6, r0 - blt _0206B070 - b _0206B0E8 -_0206B0E0: - sub r0, r0, #1 - str r0, [r7, #8] -_0206B0E8: - ldr r0, [r7, #4] - ldr r0, [r0, #8] - cmp r0, #0x11000 - ble _0206B670 - add r0, sb, #0x1000 - ldr r5, [r0, #0xf5c] - mov r1, #0x8000 - str r1, [r0, #0xb8c] - mov r1, #0x6000 - str r1, [r0, #0xb90] - bl sub_0201F36C - add r1, sb, #0x1b00 - strh r0, [r1, #0x84] - ldrsh r0, [r1, #0x84] - bl sub_0201F324 - mov r4, r0 - mov r2, #0 - strb r2, [r4, #0x3c] - mov r1, #0x80 - strh r1, [r4, #0x2a] - add r3, sb, #0x1000 - ldr sl, [r3, #0xb8c] - mov r6, #2 - mov r1, sl, asr #7 - add r1, sl, r1, lsr #24 - mov r1, r1, asr #8 - strh r1, [r4] - ldr r3, [r3, #0xb90] - mov r1, r3, asr #7 - add r1, r3, r1, lsr #24 - mov r1, r1, asr #8 - strh r1, [r4, #2] - str r6, [sp] - str r2, [sp, #4] - ldr r1, [r5, #8] - ldr r3, [r5, #0xc] - bl sub_0201E7D8 - ldrsh r0, [r4, #0x1a] - mov r5, #0 - mov r1, #0x28 - add r0, r0, r0, lsr #31 - mov r0, r0, asr #1 - strh r0, [r4, #8] - ldrsh r2, [r4, #0x1c] - add r3, sb, #0x1000 - mov r0, #0x1000 - add r2, r2, r2, lsr #31 - mov r2, r2, asr #1 - strh r2, [r4, #0xa] - strh r5, [r4, #0x10] - strh r5, [r4, #0x12] - str r1, [r3, #0xbd4] - bl _s32_div_f - add r1, sb, #0x1b00 - strh r0, [r1, #0xcc] - ldr r0, [r7, #0xc] - add r0, r0, #1 - str r0, [r7, #0xc] - b _0206B670 -_0206B1D4: - add r0, sb, #0x1b00 - ldrsh r3, [r0, #0x84] - add r0, sb, #0x1000 - add r1, sb, #0x384 - mvn r2, #0 - cmp r3, r2 - add r6, r1, #0x1800 - ldr r7, [r0, #0xf5c] - beq _0206B2D4 - ldrsh r0, [r6] - bl sub_0201F324 - ldr r1, [r6, #4] - mov r5, r0 - cmp r1, #2 - ldrh r4, [r5, #0x10] - bge _0206B298 - ldr r0, [r6, #0x4c] - add r1, r0, #1 - str r1, [r6, #0x4c] - ldr r0, [r6, #0x50] - cmp r1, r0 - ble _0206B298 - ldr r0, [r6, #4] - add r0, r0, #1 - str r0, [r6, #4] - cmp r0, #2 - bne _0206B278 - ldr r1, [r6, #0x50] - mov r0, #0xc00 - bl _s32_div_f - strh r0, [r6, #0x48] - add r0, sb, #0x1000 - mov r1, #1 - str r1, [r0, #0xbf0] - mov r1, #8 - str r1, [r0, #0xbe8] - ldr r1, [r0, #0xbec] - str r1, [r0, #0xbe0] - ldr r1, [r0, #0xbf0] - str r1, [r0, #0xbe4] - b _0206B290 -_0206B278: - cmp r0, #1 - bne _0206B290 - ldr r1, [r6, #0x50] - mov r0, #0xc00 - bl _s32_div_f - strh r0, [r6, #0x48] -_0206B290: - mov r0, #0 - str r0, [r6, #0x4c] -_0206B298: - ldrsh r0, [r6, #0x48] - ldr r1, [r6, #4] - cmp r1, #1 - subeq r4, r4, r0 - beq _0206B2C8 - cmp r1, #2 - add r4, r4, r0 - bne _0206B2C8 - add r0, r0, #0x20 - cmp r4, #0x4000 - strh r0, [r6, #0x48] - movge r4, #0x4000 -_0206B2C8: - strh r4, [r5, #0x10] - ldrh r0, [r5, #0x10] - strh r0, [r5, #0x12] -_0206B2D4: - add r0, sb, #0x1000 - ldr r1, [r0, #0xbf4] - cmp r1, #0 - beq _0206B2F0 - cmp r1, #1 - beq _0206B3C4 - b _0206B670 -_0206B2F0: - mov r5, #0 - mov r2, #1 - str r5, [r0, #0xbdc] - mov r1, #0x10 - str r2, [r0, #0xbe0] - str r1, [r0, #0xbec] - str r1, [r0, #0xbe8] - mov r1, #8 - str r1, [r0, #0xbf0] - rsb r1, r2, #0x3e8 - str r1, [r0, #0xbe4] - ldr r4, [r0, #0xf5c] - add r0, sb, #0x3f8 - add fp, r0, #0x1800 -_0206B328: - mov r0, #0x7c - mla r6, r5, r0, fp - mov r0, r6 - bl InitAnimationControlWithSet__0201C0B0 - ldrsh r1, [r4, #0x18] - mov r0, r6 - bl SetSpriteIdForAnimationControl - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r0, #0 - str r0, [sp, #0xc] - mov r0, #0xc - mul r1, r5, r0 - ldr r0, _0206B9C0 ; =_020A9EE0 - mov r2, #0 - add sl, r0, r1 - ldr r1, [r0, r1] - mov r0, r6 - mov r3, #0x2c0 - bl SetAnimationForAnimationControl - ldr r1, [sl, #4] - mov r0, r6 - strh r1, [r6, #0x1c] - ldr r2, [sl, #8] - mov r1, #0 - strh r2, [r6, #0x1e] - bl sub_0201D12C - add r5, r5, #1 - cmp r5, #7 - blt _0206B328 - add r0, sb, #0x1000 - mov r1, #1 - strb r1, [r0, #0xf60] - ldr r1, [r0, #0xbf4] - add r1, r1, #1 - str r1, [r0, #0xbf4] -_0206B3C4: - add r0, sb, #0x1000 - ldr r2, [r0, #0xbe0] - add r1, r2, #1 - str r1, [r0, #0xbe0] - ldr r0, [r0, #0xbec] - cmp r2, r0 - ble _0206B54C - bl Rand16Bit - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #31 - add r0, r1, r0, ror #31 - add r4, r0, #3 - ldr r0, _0206B9C4 ; =0x000001FF - mov r5, #0 - add r0, r0, #0xe00 - str r0, [sp, #0x34] - b _0206B51C -_0206B408: - bl Rand16Bit - bl Rand16Bit - ldr r1, _0206B9BC ; =_020B0B4C - ldr r2, [r1, #0xc] - ldr r1, _0206B9C4 ; =0x000001FF - and r0, r0, r1 - add r0, r2, r0 - str r0, [sp, #0x14] - bl Rand16Bit - ldr r1, _0206B9BC ; =_020B0B4C - and r0, r0, #0xf - ldr r1, [r1] - add fp, r1, r0 - bl Rand16Bit - ldr r1, [r7] - ldr r1, [r1] - ldr r1, [r1, #4] - sub r1, r1, #1 - bl _s32_div_f - add r0, r1, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - bl Rand16Bit - mov r1, #0xd0 - bl _s32_div_f - add sl, r1, #0x10 - bl Rand16Bit - str sl, [sp] - str r6, [sp, #4] - mov r1, #0 - str r1, [sp, #8] - ldr r1, [sp, #0x34] - mov r2, #0x8000 - and sl, r0, r1 - mov r0, sb - mov r1, r7 - mov r3, #0x6000 - bl sub_0206BDF4 - movs r6, r0 - beq _0206B510 - ldrsh r0, [r6] - bl sub_0201F324 - ldrsh r2, [r0, #0x1a] - mov r1, r6 - add r2, r2, r2, lsr #31 - mov r2, r2, asr #1 - strh r2, [r0, #8] - ldrsh r2, [r0, #0x1c] - add r2, r2, r2, lsr #31 - mov r2, r2, asr #1 - strh r2, [r0, #0xa] - mov r2, #0x800 - strh r2, [r0, #0x10] - strh r2, [r0, #0x12] - ldr r0, _0206B9C8 ; =sub_0206BFA8 - bl ov10_022C2450 - mov r0, #0x8000 - str r0, [r6, #0x30] - mov r0, #0x6000 - str r0, [r6, #0x34] - mov r0, #0 - str r0, [r6, #0x24] - str sl, [r6, #0x20] - ldr r0, [sp, #0x14] - str fp, [r6, #0x38] - str r0, [r6, #0x3c] -_0206B510: - cmp r6, #0 - beq _0206B524 - add r5, r5, #1 -_0206B51C: - cmp r5, r4 - blt _0206B408 -_0206B524: - bl Rand16Bit - add r2, sb, #0x1000 - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #29 - ldr r3, [r2, #0xbe8] - add r0, r1, r0, ror #29 - add r0, r3, r0 - str r0, [r2, #0xbec] - mov r0, #0 - str r0, [r2, #0xbe0] -_0206B54C: - add r0, sb, #0x1000 - ldr r1, [r0, #0xbe4] - add r1, r1, #1 - str r1, [r0, #0xbe4] - ldr r0, [r0, #0xbf0] - cmp r1, r0 - ble _0206B670 - bl Rand16Bit - ldr r1, _0206B9CC ; =0x00000FFF - mov r4, #0 - and r0, r0, r1 - mov r5, r0, lsl #0x10 - sub fp, r1, #0xe00 -_0206B580: - bl Rand16Bit - ldr r1, [r7] - ldr r1, [r1] - ldr r1, [r1, #4] - sub r1, r1, #1 - bl _s32_div_f - add r0, r1, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - bl Rand16Bit - mov r1, #0xd0 - bl _s32_div_f - add sl, r1, #0x10 - bl Rand16Bit - str sl, [sp] - and sl, r0, fp - str r6, [sp, #4] - mov r1, #0 - str r1, [sp, #8] - mov r0, sb - mov r1, r7 - mov r2, #0x8000 - mov r3, #0x6000 - bl sub_0206BDF4 - movs r6, r0 - beq _0206B658 - ldrsh r0, [r6] - bl sub_0201F324 - mov r1, #0 - strh r1, [r0, #0x12] - mov r2, r1 - ldr r1, _0206B9D0 ; =0x00005555 - strh r2, [r0, #0x10] - mul r1, r4, r1 - add r0, r1, r5, lsr #16 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - str r0, [r6, #0x20] - mov r0, r4, lsl #1 - str r0, [r6, #0x40] - ldr r0, [r6, #0x20] - bl CosAbs4096 - add r1, sl, #0x300 - bl MultiplyByFixedPoint - str r0, [r6, #0x18] - ldr r0, [r6, #0x20] - bl SinAbs4096 - add r1, sl, #0x300 - rsb r0, r0, #0 - bl MultiplyByFixedPoint - str r0, [r6, #0x1c] - ldr r0, _0206B9D4 ; =sub_0206BEAC - mov r1, r6 - bl ov10_022C2450 -_0206B658: - add r4, r4, #1 - cmp r4, #3 - blt _0206B580 - add r0, sb, #0x1000 - mov r1, #0 - str r1, [r0, #0xbe4] -_0206B670: - mov r4, #0 - b _0206B990 -_0206B678: - cmp r0, #2 - bne _0206B990 - ldr r5, [r8, #0x24] - ldr r0, [r5, #0xc] - cmp r0, #0 - beq _0206B6A4 - cmp r0, #1 - beq _0206B838 - cmp r0, #2 - beq _0206B984 - b _0206B98C -_0206B6A4: - ldr r0, _0206B9D8 ; =_020A9E80 - add r4, sp, #0x3c - ldmia r0, {r0, r1, r2, r3} - stmia r4, {r0, r1, r2, r3} - ldr r0, [r5, #0x2d8] - mov r6, #0 - str r0, [sp, #0x20] - mov r0, #0x14000 - rsb r0, r0, #0 - str r0, [sp, #0x30] - mov r0, r0, asr #0x11 - str r0, [sp, #0x38] - b _0206B810 -_0206B6D8: - add r0, sp, #0x3c - ldr r0, [r0, r6, lsl #2] - tst r6, #1 - mov r0, r0, lsl #8 - add r0, r0, #0x800 - movne sb, #0x2000 - moveq sb, #0 - str r0, [sp, #0x24] - cmp r6, #2 - movlt r0, #1 - movge r0, #0 - ands r4, r0, #0xff - ldreq r0, [sp, #0x38] - ldr r1, _0206B9BC ; =_020B0B4C - muleq r0, sb, r0 - moveq sb, r0 - cmp r4, #0 - ldrne sl, [sp, #0x30] - ldr r1, [r1, #4] - moveq sl, #0x14000 - rsb r0, sl, #0 - bl _s32_div_f - str r0, [sp, #0x28] - mov r0, #0x58 - mul r7, r6, r0 - mov r0, r6, lsl #0x10 - mov r1, r0, asr #0x10 - ldr fp, [r5] - ldr r0, [sp, #0x28] - ldr r3, [sp, #0x24] - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - mov r0, #0xe0 - str r0, [sp, #8] - str r1, [sp, #0xc] - mov r0, #1 - str r0, [sp, #0x10] - ldr r1, [sp, #0x20] - add r0, fp, r7 - add r2, sl, sb - bl sub_0206BC3C - ldrsh r0, [fp, r7] - bl sub_0201F324 - ldrsh r1, [r0, #0x1c] - cmp r1, #0x28 - moveq r3, #3 - beq _0206B7A4 - cmp r1, #0x20 - moveq r3, #2 - movne r3, #1 -_0206B7A4: - cmp r4, #0 - movne r0, #0x10000 - moveq r0, #0 - add r0, sl, r0 - add r2, r0, sb - ldr r4, [r5, #4] - ldr r0, [sp, #0x28] - add r1, r1, r1, lsr #31 - str r0, [sp] - mov r0, r3, lsl #0x10 - mov sb, r0, asr #0x10 - ldr r0, [sp, #0x24] - mov r1, r1, asr #1 - add r3, r0, r1, lsl #8 - mov r0, #0 - str r0, [sp, #4] - mov r0, #0x70 - str r0, [sp, #8] - str sb, [sp, #0xc] - mov r0, #0 - str r0, [sp, #0x10] - ldr r1, [sp, #0x20] - add r0, r4, r7 - bl sub_0206BD04 - ldrsh r0, [r4, r7] - bl sub_0201F324 - add r6, r6, #1 -_0206B810: - ldr r0, [r5, #0x2d4] - cmp r6, r0 - blt _0206B6D8 - ldr r0, _0206B9BC ; =_020B0B4C - ldr r0, [r0, #4] - str r0, [r5, #8] - ldr r0, [r5, #0xc] - add r0, r0, #1 - str r0, [r5, #0xc] - b _0206B98C -_0206B838: - mov sb, #0 - mov r6, #1 - mov fp, sb - b _0206B95C -_0206B848: - mov r0, #0x58 - mul sl, sb, r0 - ldr r0, [r5] - add r4, r0, sl - ldr r0, [r4, #4] - cmp r0, #0 - bne _0206B8F8 - ldr r1, [r4, #8] - ldr r0, [r4, #0x18] - add r0, r1, r0 - str r0, [r4, #8] - ldr r1, [r4, #0xc] - ldr r0, [r4, #0x1c] - add r0, r1, r0 - str r0, [r4, #0xc] - ldr r1, [r4, #0x18] - cmp r1, #0 - ble _0206B8A0 - ldr r0, [r4, #8] - cmp r0, #0 - stmgeib r4, {r6, fp} - bge _0206B8C0 -_0206B8A0: - cmp r1, #0 - bge _0206B8C0 - ldr r0, [r4, #8] - cmp r0, #0 - movle r0, #0 - strle r0, [r4, #8] - movle r0, #1 - strle r0, [r4, #4] -_0206B8C0: - ldrsh r0, [r4] - bl sub_0201F324 - ldr r2, [r4, #8] - mov r1, r2, asr #7 - add r1, r2, r1, lsr #24 - mov r1, r1, asr #8 - strh r1, [r0] - ldrsh r0, [r4] - bl sub_0201F324 - ldr r2, [r4, #0xc] - mov r1, r2, asr #7 - add r1, r2, r1, lsr #24 - mov r1, r1, asr #8 - strh r1, [r0, #2] -_0206B8F8: - ldr r4, [r5, #4] - add r7, r4, sl - ldr r1, [r7, #8] - ldr r0, [r7, #0x18] - add r0, r1, r0 - str r0, [r7, #8] - ldr r1, [r7, #0xc] - ldr r0, [r7, #0x1c] - add r0, r1, r0 - str r0, [r7, #0xc] - ldrsh r0, [r4, sl] - bl sub_0201F324 - ldr r2, [r7, #8] - mov r1, r2, asr #7 - add r1, r2, r1, lsr #24 - mov r1, r1, asr #8 - strh r1, [r0] - ldrsh r0, [r4, sl] - bl sub_0201F324 - ldr r2, [r7, #0xc] - add sb, sb, #1 - mov r1, r2, asr #7 - add r1, r2, r1, lsr #24 - mov r1, r1, asr #8 - strh r1, [r0, #2] -_0206B95C: - ldr r0, [r5, #0x2d4] - cmp sb, r0 - blt _0206B848 - ldr r0, [r5, #4] - ldr r0, [r0, #8] - cmp r0, #0x11000 - ldrgt r0, [r5, #0xc] - addgt r0, r0, #1 - strgt r0, [r5, #0xc] - b _0206B98C -_0206B984: - mov r4, #1 - b _0206B990 -_0206B98C: - mov r4, #0 -_0206B990: - cmp r4, #0 - movne r0, #1 - strneb r0, [r8, #0x31] -_0206B99C: - ldr r0, _0206B9BC ; =_020B0B4C - ldr r1, [r0, #8] - ldr r0, [r1, #0x3c] - add r0, r0, #1 - str r0, [r1, #0x3c] -_0206B9B0: - mov r0, #1 -_0206B9B4: - add sp, sp, #0x4c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0206B9BC: .word _020B0B4C -_0206B9C0: .word _020A9EE0 -_0206B9C4: .word 0x000001FF -_0206B9C8: .word sub_0206BFA8 -_0206B9CC: .word 0x00000FFF -_0206B9D0: .word 0x00005555 -_0206B9D4: .word sub_0206BEAC -_0206B9D8: .word _020A9E80 - arm_func_end sub_0206ADB8 - - arm_func_start sub_0206B9DC -sub_0206B9DC: ; 0x0206B9DC - stmdb sp!, {r4, r5, r6, lr} - ldr r0, _0206BA58 ; =_020B0B4C - ldr r1, [r0, #8] - cmp r1, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldrb r0, [r1, #0x30] - cmp r0, #0 - bne _0206BA50 - ldr r0, [r1, #0x2c] - cmp r0, #0 - beq _0206BA14 - cmp r0, #1 - b _0206BA50 -_0206BA14: - ldr r1, [r1, #0x28] - cmp r1, #0 - addne r0, r1, #0x1000 - ldrneb r0, [r0, #0xf60] - cmpne r0, #0 - beq _0206BA50 - add r0, r1, #0x3f8 - mov r6, #0 - add r5, r0, #0x1800 - mov r4, #0x7c -_0206BA3C: - mla r0, r6, r4, r5 - bl sub_0201CF5C - add r6, r6, #1 - cmp r6, #7 - blt _0206BA3C -_0206BA50: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0206BA58: .word _020B0B4C - arm_func_end sub_0206B9DC - - arm_func_start sub_0206BA5C -sub_0206BA5C: ; 0x0206BA5C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r0, _0206BB8C ; =_020B0B4C - ldr r0, [r0, #8] - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - bl ov10_022C23B0 - ldr r0, _0206BB8C ; =_020B0B4C - ldr r5, [r0, #8] - cmp r5, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r7, [r5, #0x24] - cmp r7, #0 - beq _0206BAE8 - mov r6, #0 - mov r4, #0x58 - b _0206BABC -_0206BA9C: - mul r8, r6, r4 - ldr r0, [r7] - add r0, r0, r8 - bl sub_0206BB94 - ldr r0, [r7, #4] - add r0, r0, r8 - bl sub_0206BB94 - add r6, r6, #1 -_0206BABC: - ldr r0, [r7, #0x2d4] - cmp r6, r0 - blt _0206BA9C - ldr r0, [r7] - bl MemFree - ldr r0, [r7, #4] - bl MemFree - ldr r0, [r5, #0x24] - bl MemFree - mov r0, #0 - str r0, [r5, #0x24] -_0206BAE8: - ldr r0, _0206BB8C ; =_020B0B4C - ldr r5, [r0, #8] - ldr r0, [r5, #0x28] - cmp r0, #0 - beq _0206BB3C - mov r6, #0 - mov r4, #0x58 -_0206BB04: - ldr r0, [r5, #0x28] - mla r0, r6, r4, r0 - bl sub_0206BB94 - add r6, r6, #1 - cmp r6, #0x50 - blt _0206BB04 - ldr r0, [r5, #0x28] - add r0, r0, #0x384 - add r0, r0, #0x1800 - bl sub_0206BB94 - ldr r0, [r5, #0x28] - bl MemFree - mov r0, #0 - str r0, [r5, #0x28] -_0206BB3C: - ldr r0, _0206BB8C ; =_020B0B4C - ldr r4, [r0, #8] - add r0, r4, #0x14 - bl sub_0201E020 - add r0, r4, #4 - bl sub_0201E020 - add r0, r4, #0xc - bl sub_0201E020 - ldr r0, _0206BB90 ; =WAN_TABLE - ldrsh r1, [r4, #0x1c] - ldr r0, [r0] - bl DeleteWanTableEntryVeneer - ldr r0, _0206BB8C ; =_020B0B4C - ldr r0, [r0, #8] - bl MemFree - ldr r0, _0206BB8C ; =_020B0B4C - mov r1, #0 - str r1, [r0, #8] - bl sub_0201F248 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0206BB8C: .word _020B0B4C -_0206BB90: .word WAN_TABLE - arm_func_end sub_0206BA5C - - arm_func_start sub_0206BB94 -sub_0206BB94: ; 0x0206BB94 - stmdb sp!, {r4, lr} - mov r4, r0 - ldrsh r1, [r4] - mvn r0, #0 - cmp r1, r0 - ldmeqia sp!, {r4, pc} - cmp r1, #0 - bne _0206BBBC - ldr r0, _0206BBDC ; =_020A9F98 - bl Debug_Print0 -_0206BBBC: - ldrsh r0, [r4] - bl sub_0201F2AC - mov r0, r4 - mov r1, #0x58 - bl MemZero - mvn r0, #0 - strh r0, [r4] - ldmia sp!, {r4, pc} - .align 2, 0 -_0206BBDC: .word _020A9F98 - arm_func_end sub_0206BB94 - - arm_func_start sub_0206BBE0 -sub_0206BBE0: ; 0x0206BBE0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r0, #0x2dc - mov r1, #6 - bl MemAlloc - mov r1, #0x2dc - mov r4, r0 - bl MemZero - mov r0, #0x58 - mul r5, r6, r0 - mov r0, r5 - str r7, [r4, #0x2d8] - mov r1, #6 - bl MemAlloc - str r0, [r4] - mov r0, r5 - mov r1, #6 - bl MemAlloc - str r0, [r4, #4] - mov r0, r4 - str r6, [r4, #0x2d4] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_0206BBE0 - - arm_func_start sub_0206BC3C -sub_0206BC3C: ; 0x0206BC3C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - mov r4, r1 - mov r1, #0x58 - mov r5, r0 - mov r7, r2 - mov r6, r3 - bl MemZero - mvn r0, #0 - strh r0, [r5] - bl sub_0201F36C - strh r0, [r5] - ldrsh r1, [r5] - mvn r0, #0 - cmp r1, r0 - beq _0206BCF8 - str r7, [r5, #8] - ldr r1, [sp, #0x20] - str r6, [r5, #0xc] - ldr r0, [sp, #0x24] - str r1, [r5, #0x18] - str r0, [r5, #0x1c] - ldrsh r0, [r5] - bl sub_0201F324 - mov r1, #0 - ldr r2, [sp, #0x28] - strb r1, [r0, #0x3c] - strh r2, [r0, #0x2a] - ldr ip, [r5, #8] - ldrsh r3, [sp, #0x30] - mov r2, ip, asr #7 - add r2, ip, r2, lsr #24 - mov r2, r2, asr #8 - strh r2, [r0] - ldr r5, [r5, #0xc] - mov r3, r3, lsl #0x14 - mov r2, r5, asr #7 - add r2, r5, r2, lsr #24 - mov r2, r2, asr #8 - strh r2, [r0, #2] - str r1, [sp] - mov r1, r3, asr #0x10 - str r1, [sp, #4] - ldrsh r2, [sp, #0x2c] - ldr r1, [r4, #0x10] - ldr r3, [r4, #0x14] - bl sub_0201E7D8 -_0206BCF8: - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_0206BC3C - - arm_func_start sub_0206BD04 -sub_0206BD04: ; 0x0206BD04 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - mov r5, r1 - mov r1, #0x58 - mov r6, r0 - mov r7, r2 - mov r4, r3 - bl MemZero - mvn r0, #0 - strh r0, [r6] - bl sub_0201F36C - strh r0, [r6] - ldrsh r1, [r6] - mvn r0, #0 - cmp r1, r0 - moveq r0, #0 - beq _0206BDEC - str r7, [r6, #8] - ldr r1, [sp, #0x20] - str r4, [r6, #0xc] - ldr r0, [sp, #0x24] - str r1, [r6, #0x18] - str r0, [r6, #0x1c] - ldrsh r0, [r6] - bl sub_0201F324 - mov r4, r0 - mov r2, #0 - strb r2, [r4, #0x3c] - ldr r1, [sp, #0x28] - ldrsh r2, [sp, #0x30] - strh r1, [r4, #0x2a] - ldr r3, [r6, #8] - mov r2, r2, lsl #0x14 - mov r1, r3, asr #7 - add r1, r3, r1, lsr #24 - mov r1, r1, asr #8 - strh r1, [r4] - ldr r3, [r6, #0xc] - mov r1, r3, asr #7 - add r1, r3, r1, lsr #24 - mov r1, r1, asr #8 - strh r1, [r4, #2] - mov r1, #1 - str r1, [sp] - mov r1, r2, asr #0x10 - str r1, [sp, #4] - ldrsh r2, [sp, #0x2c] - ldmia r5, {r1, r3} - bl sub_0201E7D8 - ldrsh r1, [r4, #0x1a] - mov r0, #1 - add r1, r1, r1, lsr #31 - mov r1, r1, asr #1 - strh r1, [r4, #8] - ldrsh r1, [r4, #0x1c] - add r1, r1, r1, lsr #31 - mov r1, r1, asr #1 - strh r1, [r4, #0xa] -_0206BDEC: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_0206BD04 - - arm_func_start sub_0206BDF4 -sub_0206BDF4: ; 0x0206BDF4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x14 - mov ip, #0 - mov r4, r0 - mov r8, ip - mov r0, ip - mov r5, #0x58 - mvn r6, #0 - b _0206BE48 -_0206BE18: - cmp ip, #0x50 - movge ip, r0 - mul r7, ip, r5 - ldrsh r7, [r4, r7] - cmp r7, r6 - beq _0206BE54 - add r7, r8, #1 - add lr, ip, #1 - mov ip, r7, lsl #0x10 - mov lr, lr, lsl #0x10 - mov r8, ip, asr #0x10 - mov ip, lr, asr #0x10 -_0206BE48: - cmp r8, #0x50 - blt _0206BE18 - mvn ip, #0 -_0206BE54: - cmp ip, #0 - movlt r0, #0 - blt _0206BEA4 - mov r0, #0x58 - mla r6, ip, r0, r4 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - ldr r5, [sp, #0x30] - ldrsh r0, [sp, #0x34] - str r5, [sp, #8] - ldrsh r5, [sp, #0x38] - str r0, [sp, #0xc] - mov r0, r6 - str r5, [sp, #0x10] - bl sub_0206BD04 - cmp r0, #0 - moveq r0, #0 - movne r0, r6 - strne r4, [r6, #0x54] -_0206BEA4: - add sp, sp, #0x14 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - arm_func_end sub_0206BDF4 - - arm_func_start sub_0206BEAC -sub_0206BEAC: ; 0x0206BEAC - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r4, [r6, #4] - ldrsh r0, [r4] - bl sub_0201F324 - ldr r1, [r4, #0x40] - mov r5, r0 - cmp r1, #0 - ble _0206BEEC - ldrsh r0, [r4] - mov r1, #0 - bl sub_0201F348 - ldr r0, [r4, #0x40] - sub r0, r0, #1 - str r0, [r4, #0x40] - ldmia sp!, {r4, r5, r6, pc} -_0206BEEC: - ldrh r0, [r5, #0x10] - cmp r0, #0x1000 - beq _0206BF10 - add r0, r0, #0x100 - cmp r0, #0x1000 - movge r0, #0x1000 - strh r0, [r5, #0x12] - ldrh r0, [r5, #0x12] - strh r0, [r5, #0x10] -_0206BF10: - ldrsh r0, [r4] - mov r1, #1 - bl sub_0201F348 - ldr r2, [r4, #8] - ldr r1, [r4, #0x18] - mvn r0, #0x3f - add r1, r2, r1 - str r1, [r4, #8] - ldr r2, [r4, #0xc] - ldr r1, [r4, #0x1c] - add r1, r2, r1 - str r1, [r4, #0xc] - ldrsh r1, [r5] - cmp r1, r0 - blt _0206BF68 - cmp r1, #0x140 - bgt _0206BF68 - ldrsh r1, [r5, #2] - cmp r1, r0 - blt _0206BF68 - cmp r1, #0x100 - ble _0206BF7C -_0206BF68: - mov r0, r4 - bl sub_0206BB94 - mov r0, r6 - bl ov10_022C24DC - ldmia sp!, {r4, r5, r6, pc} -_0206BF7C: - ldr r1, [r4, #8] - mov r0, r1, asr #7 - add r0, r1, r0, lsr #24 - mov r0, r0, asr #8 - strh r0, [r5] - ldr r1, [r4, #0xc] - mov r0, r1, asr #7 - add r0, r1, r0, lsr #24 - mov r0, r0, asr #8 - strh r0, [r5, #2] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end sub_0206BEAC - - arm_func_start sub_0206BFA8 -sub_0206BFA8: ; 0x0206BFA8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - ldr r4, [r6, #4] - ldrsh r0, [r4] - bl sub_0201F324 - mov r5, r0 - ldr r0, [r4, #0x20] - bl CosAbs4096 - ldr r1, [r4, #0x24] - bl MultiplyByFixedPoint - ldr r1, [r4, #0x30] - add r7, r1, r0 - ldr r0, [r4, #0x20] - bl SinAbs4096 - ldr r1, [r4, #0x24] - rsb r0, r0, #0 - bl MultiplyByFixedPoint - ldr r2, [r4, #0x34] - ldr r1, _0206C0D4 ; =0x00000FFF - add r0, r2, r0 - str r7, [r4, #8] - str r0, [r4, #0xc] - ldr r2, [r4, #0x20] - ldr r0, [r4, #0x38] - add r2, r2, r0 - and r0, r2, r1 - str r0, [r4, #0x20] - ldr r1, [r4, #0x24] - ldr r0, [r4, #0x3c] - add r0, r1, r0 - str r0, [r4, #0x24] - ldrh r0, [r5, #0x10] - cmp r0, #0x1000 - addlo r0, r0, #0x80 - strloh r0, [r5, #0x10] - ldrloh r0, [r5, #0x12] - addlo r0, r0, #0x80 - strloh r0, [r5, #0x12] - ldr r1, [r4, #0x3c] - mvn r0, #0x3f - add r1, r1, #8 - str r1, [r4, #0x3c] - ldrsh r1, [r5] - cmp r1, r0 - blt _0206C078 - cmp r1, #0x140 - bgt _0206C078 - ldrsh r1, [r5, #2] - cmp r1, r0 - blt _0206C078 - cmp r1, #0x140 - ble _0206C08C -_0206C078: - mov r0, r4 - bl sub_0206BB94 - mov r0, r6 - bl ov10_022C24DC - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0206C08C: - ldr r0, [r4, #0x38] - cmp r0, #0 - ldr r0, [r4, #0x20] - movlt r0, r0, lsl #4 - movge r0, r0, lsl #4 - rsbge r0, r0, #0x10000 - strh r0, [r5, #0x28] - ldr r1, [r4, #8] - mov r0, r1, asr #7 - add r0, r1, r0, lsr #24 - mov r0, r0, asr #8 - strh r0, [r5] - ldr r1, [r4, #0xc] - mov r0, r1, asr #7 - add r0, r1, r0, lsr #24 - mov r0, r0, asr #8 - strh r0, [r5, #2] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0206C0D4: .word 0x00000FFF - arm_func_end sub_0206BFA8 - - arm_func_start sub_0206C0D8 -sub_0206C0D8: ; 0x0206C0D8 - ldr r1, _0206C0E8 ; =_020B0B6C - ldrsh r1, [r1] - strh r1, [r0] - bx lr - .align 2, 0 -_0206C0E8: .word _020B0B6C - arm_func_end sub_0206C0D8 - - arm_func_start sub_0206C0EC -sub_0206C0EC: ; 0x0206C0EC - ldr r1, _0206C0F8 ; =_020B0B6C - strh r0, [r1] - bx lr - .align 2, 0 -_0206C0F8: .word _020B0B6C - arm_func_end sub_0206C0EC - - arm_func_start sub_0206C0FC -sub_0206C0FC: ; 0x0206C0FC - ldr r1, _0206C10C ; =_020B0B70 - ldrsh r1, [r1, #2] - strh r1, [r0] - bx lr - .align 2, 0 -_0206C10C: .word _020B0B70 - arm_func_end sub_0206C0FC - - arm_func_start sub_0206C110 -sub_0206C110: ; 0x0206C110 - ldr r1, _0206C11C ; =_020B0B70 - strh r0, [r1, #2] - bx lr - .align 2, 0 -_0206C11C: .word _020B0B70 - arm_func_end sub_0206C110 - - arm_func_start sub_0206C120 -sub_0206C120: ; 0x0206C120 - ldr r1, _0206C130 ; =_020B0B70 - ldrsh r1, [r1] - strh r1, [r0] - bx lr - .align 2, 0 -_0206C130: .word _020B0B70 - arm_func_end sub_0206C120 - - arm_func_start sub_0206C134 -sub_0206C134: ; 0x0206C134 - ldr r1, _0206C140 ; =_020B0B70 - strh r0, [r1] - bx lr - .align 2, 0 -_0206C140: .word _020B0B70 - arm_func_end sub_0206C134 - - arm_func_start sub_0206C144 -sub_0206C144: ; 0x0206C144 - ldr r3, _0206C160 ; =_020B0B74 - mov r2, #8 -_0206C14C: - ldrb r1, [r3], #1 - subs r2, r2, #1 - strb r1, [r0], #1 - bne _0206C14C - bx lr - .align 2, 0 -_0206C160: .word _020B0B74 - arm_func_end sub_0206C144 - - arm_func_start sub_0206C164 -sub_0206C164: ; 0x0206C164 - ldr r3, _0206C180 ; =_020B0B74 - mov r2, #8 -_0206C16C: - ldrb r1, [r0], #1 - subs r2, r2, #1 - strb r1, [r3], #1 - bne _0206C16C - bx lr - .align 2, 0 -_0206C180: .word _020B0B74 - arm_func_end sub_0206C164 - - arm_func_start sub_0206C184 -sub_0206C184: ; 0x0206C184 - ldr ip, _0206C198 ; =sub_0207A7EC - mov r0, #0 - mov r2, r1 - sub r1, r0, #1 - bx ip - .align 2, 0 -_0206C198: .word sub_0207A7EC - arm_func_end sub_0206C184 - - arm_func_start sub_0206C19C -sub_0206C19C: ; 0x0206C19C - stmdb sp!, {r4, lr} - mov r4, r1 - mov r0, #0 - mov r2, r4 - sub r1, r0, #1 - bl sub_0207A8F4 - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end sub_0206C19C - - arm_func_start sub_0206C1BC -sub_0206C1BC: ; 0x0206C1BC - bx lr - arm_func_end sub_0206C1BC - - arm_func_start DseDriver_LoadDefaultSettings -DseDriver_LoadDefaultSettings: ; 0x0206C1C0 - stmdb sp!, {r4, lr} - ldr r1, _0206C248 ; =DRIVER_WORK - mov r2, #1 - movs r4, r0 - strb r2, [r1, #0x3d] - subeq r0, r2, #0x100 - ldmeqia sp!, {r4, pc} - mov r1, #0x40 - bl DseMem_Clear - mov r0, #0 - str r0, [r4, #4] - str r0, [r4, #8] - str r0, [r4, #0xc] - mov r1, #8 - strb r1, [r4, #0x10] - strb r0, [r4, #0x11] - strh r0, [r4, #0x14] - mov r1, #0xf - strh r1, [r4, #0x16] - mov r1, #0x14 - strb r1, [r4, #0x12] - mov r1, #4 - strh r1, [r4, #0x18] - ldr r2, _0206C24C ; =_0206C184 - strh r1, [r4, #0x1a] - ldr r1, _0206C250 ; =_0206C19C - str r2, [r4, #0x1c] - str r1, [r4, #0x20] - ldr r1, _0206C254 ; =sub_0206C1BC - str r0, [r4, #0x24] - str r1, [r4, #0x28] - str r1, [r4, #0x2c] - str r0, [r4, #0x30] - ldmia sp!, {r4, pc} - .align 2, 0 -_0206C248: .word DRIVER_WORK -_0206C24C: .word sub_0206C184 -_0206C250: .word sub_0206C19C -_0206C254: .word sub_0206C1BC - arm_func_end DseDriver_LoadDefaultSettings - - arm_func_start DseDriver_IsSettingsValid -DseDriver_IsSettingsValid: ; 0x0206C258 - stmdb sp!, {r3, r4, r5, lr} - movs r4, r0 - bne _0206C27C - mov r1, #0 - mov r2, r1 - mvn r0, #0x17 - bl Dse_SetError - mov r0, #2 - ldmia sp!, {r3, r4, r5, pc} -_0206C27C: - tst r4, #3 - beq _0206C29C - mov r1, #0 - mov r2, r1 - mvn r0, #0x17 - bl Dse_SetError - mov r0, #2 - ldmia sp!, {r3, r4, r5, pc} -_0206C29C: - ldr r0, [r4, #8] - mov r5, #0 - cmp r0, #0 - beq _0206C2B4 - tst r0, #0xf - beq _0206C2B8 -_0206C2B4: - orr r5, r5, #4 -_0206C2B8: - ldr r0, [r4, #0xc] - cmp r0, #0 - beq _0206C2CC - tst r0, #0xf - beq _0206C2D0 -_0206C2CC: - orr r5, r5, #8 -_0206C2D0: - ldrb r0, [r4, #0x11] - ldrb r1, [r4, #0x10] - cmp r0, #0 - cmpne r0, #1 - orrne r5, r5, #0x100 - cmp r1, #4 - ldrb r0, [r4, #0x12] - orrlo r5, r5, #0x200 - cmp r0, r1 - ldrsh r1, [r4, #0x14] - orrls r5, r5, #0x400 - ldrsh r0, [r4, #0x16] - cmp r1, #0 - orrne r5, r5, #0x4000 - cmp r0, #0x10 - orrge r5, r5, #0x8000 - cmp r1, r0 - orrgt r5, r5, #0xc000 - cmp r5, #0 - beq _0206C330 - mov r1, r5 - mvn r0, #0x17 - mov r2, #0 - bl Dse_SetError -_0206C330: - mov r0, r5 - str r5, [r4] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end DseDriver_IsSettingsValid - - arm_func_start DseDriver_ConfigureHeap -DseDriver_ConfigureHeap: ; 0x0206C33C - stmdb sp!, {r3, lr} - cmp r0, #0 - strne r1, [r0, #8] - strne r2, [r0, #0xc] - movne r0, #0 - ldmneia sp!, {r3, pc} - mov r1, #0 - mov r2, r1 - mvn r0, #0x17 - bl Dse_SetError - mvn r0, #0x17 - ldmia sp!, {r3, pc} - arm_func_end DseDriver_ConfigureHeap - - arm_func_start sub_0206C36C -sub_0206C36C: ; 0x0206C36C - stmdb sp!, {r3, lr} - cmp r0, #0 - strneb r1, [r0, #0x11] - strneb r2, [r0, #0x10] - movne r0, #0 - ldmneia sp!, {r3, pc} - mov r1, #0 - mov r2, r1 - mvn r0, #0x17 - bl Dse_SetError - mvn r0, #0x17 - ldmia sp!, {r3, pc} - arm_func_end sub_0206C36C - - arm_func_start sub_0206C39C -sub_0206C39C: ; 0x0206C39C - stmdb sp!, {r3, lr} - cmp r0, #0 - bne _0206C3C0 - mov r1, #0 - mov r2, r1 - mvn r0, #0x17 - bl Dse_SetError - mvn r0, #0x17 - ldmia sp!, {r3, pc} -_0206C3C0: - cmp r1, #0 - movlt r1, #0 - cmp r2, #0 - strh r1, [r0, #0x14] - movlt r2, #0xf - strh r2, [r0, #0x16] - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end sub_0206C39C - - arm_func_start DseDriver_Init -DseDriver_Init: ; 0x0206C3E0 - stmdb sp!, {r4, lr} - ldr r1, _0206C5F8 ; =DRIVER_WORK - mov r4, r0 - ldrsb r1, [r1] - cmp r1, #1 - bne _0206C410 - mov r1, #0 - mov r2, r1 - mvn r0, #0xbf - bl Dse_SetError - mvn r0, #0xbf - ldmia sp!, {r4, pc} -_0206C410: - bl DseDriver_IsSettingsValid - movs r1, r0 - beq _0206C430 - mvn r0, #0x1d - mov r2, #0 - bl Dse_SetError - mvn r0, #0x1d - ldmia sp!, {r4, pc} -_0206C430: - bl sub_0207AD54 - mov r0, #0 - mov r1, r0 - bl sub_0207AEF4 - bl sub_0207AFF0 - ldr r0, _0206C5F8 ; =DRIVER_WORK - mov r3, #0 - strh r3, [r0, #2] - str r3, [r0, #4] - str r3, [r0, #0x10] - mov r2, #0xff - mov r1, #1 - strb r2, [r0, #0x3c] - strb r1, [r0, #0x3d] - rsb r1, r1, #0x1000 - strh r1, [r0, #0x3e] - str r3, [r0, #0x2c] - ldrb r1, [r4, #0x11] - cmp r1, #0 - ldreq r2, _0206C5FC ; =0x00002710 - moveq r1, #0x64 - ldrne r2, _0206C600 ; =0x0000414B - movne r1, #0x3c - strh r2, [r0, #0x28] - str r1, [r0, #0x30] - ldr r2, _0206C604 ; =0x00BC614E - ldr r1, _0206C5F8 ; =DRIVER_WORK - ldr r0, _0206C608 ; =_022B8330 - str r2, [r1, #0x34] - ldrb r1, [r4, #0x11] - strb r1, [r0, #0xdd8] - bl sub_0206C814 - ldr r1, _0206C5F8 ; =DRIVER_WORK - mov r0, #1 - strb r0, [r1, #0x38] - mov r3, #2 - ldr r2, _0206C60C ; =_020B1290 - ldr r0, _0206C608 ; =_022B8330 - strb r3, [r1, #0x39] - str r2, [r0, #0xed4] - mov r2, #0 - str r2, [r1, #0x71c] - str r2, [r1, #0x720] - str r2, [r1, #0x724] - str r2, [r1, #0x728] - ldrb r1, [r4, #0x10] - ldr ip, _0206C610 ; =DRIVER_WORK - mov r3, r2 - strb r1, [r0, #0xd10] -_0206C4F4: - add r2, r2, #1 - strb r3, [ip, #0x674] - cmp r2, #0x80 - add ip, ip, #1 - blt _0206C4F4 - ldr ip, _0206C5F8 ; =DRIVER_WORK - mov r0, #0x64 - strb r0, [ip, #0x67b] - mov r0, #0x7f - strb r0, [ip, #0x67f] - mov r0, #0x40 - strb r0, [ip, #0x67e] - add r0, r4, #0x28 - ldr lr, _0206C614 ; =_022B734C - ldmia r0, {r0, r1, r2} - stmia lr, {r0, r1, r2} - ldrsh ip, [ip, #0x28] - ldr r1, _0206C608 ; =_022B8330 - mov r2, #1 - str r3, [r1, #0xec8] - str r2, [r1, #0xecc] - str r3, [r1, #0xebc] - ldr r0, _0206C618 ; =_022B9130 - str r3, [r1, #0xec0] - sub r2, r2, #2 - strh r2, [r0, #0xc4] - strh ip, [r0, #0xc6] - strb r3, [r1, #0xed0] - ldr r0, [r4, #8] - ldr r1, [r4, #0xc] - add r2, r4, #0x1c - bl DseMem_Init - ldrsh r0, [r4, #0x16] - add r0, r0, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl DseVoice_ResetHW - bl DseVoice_ResetAll - bl sub_02070124 - bl sub_02075600 - bl sub_020729A4 - ldr r1, _0206C61C ; =_022B7331 - mov r2, #1 - mov r0, #0x7f -_0206C5A4: - add r2, r2, #1 - strb r0, [r1, #0x40] - cmp r2, #0x10 - add r1, r1, #1 - blt _0206C5A4 - ldr r0, _0206C5F8 ; =DRIVER_WORK - mov r1, #0 - strb r1, [r0, #0x40] - bl DseDriver_StartMainThread - ldrb r0, [r4, #0x12] - bl DseSwd_SysInit - ldr r0, _0206C5F8 ; =DRIVER_WORK - mov r1, #1 - strb r1, [r0] - mov r1, #0 - strb r1, [r0, #1] - ldrh r0, [r4, #0x18] - ldrh r1, [r4, #0x1a] - bl DseSe_SysReset - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_0206C5F8: .word DRIVER_WORK -_0206C5FC: .word 0x00002710 -_0206C600: .word 0x0000414B -_0206C604: .word 0x00BC614E -_0206C608: .word _022B8330 -_0206C60C: .word _020B1290 -_0206C610: .word DRIVER_WORK -_0206C614: .word _022B734C -_0206C618: .word _022B9130 -_0206C61C: .word _022B7331 - arm_func_end DseDriver_Init - - arm_func_start sub_0206C620 -sub_0206C620: ; 0x0206C620 - stmdb sp!, {r3, lr} - ldr r0, _0206C684 ; =DRIVER_WORK - ldrsb r0, [r0] - cmp r0, #0 - mvneq r0, #0xc0 - ldmeqia sp!, {r3, pc} - bl DseSwd_SysQuit - mov r0, #0 - bl sub_0206C7F4 - bl sub_020756E8 - bl sub_02070158 - bl sub_02070148 - bl sub_02070EA0 - bl DseVoice_ResetAll - bl DseMem_Quit - bl sub_0206C814 - ldr r1, _0206C684 ; =DRIVER_WORK - mov r0, #0 - strb r0, [r1] - strb r0, [r1, #1] - str r0, [r1, #0x2c] - str r0, [r1, #4] - str r0, [r1, #0x10] - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - .align 2, 0 -_0206C684: .word DRIVER_WORK - arm_func_end sub_0206C620 - - arm_func_start sub_0206C688 -sub_0206C688: ; 0x0206C688 - stmdb sp!, {r3, lr} - ldr r0, _0206C6B8 ; =DRIVER_WORK - ldrsb r1, [r0] - cmp r1, #0 - ldrnesb r0, [r0, #1] - ldmneia sp!, {r3, pc} - mov r1, #0 - mov r2, r1 - mvn r0, #0xc0 - bl Dse_SetError - mvn r0, #0xc0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0206C6B8: .word DRIVER_WORK - arm_func_end sub_0206C688 - - arm_func_start sub_0206C6BC -sub_0206C6BC: ; 0x0206C6BC - stmdb sp!, {r3, lr} - ldr r0, _0206C750 ; =DRIVER_WORK - ldrsb r1, [r0] - cmp r1, #0 - bne _0206C6E8 - mov r1, #0 - mov r2, r1 - mvn r0, #0xc0 - bl Dse_SetError - mvn r0, #0xc0 - ldmia sp!, {r3, pc} -_0206C6E8: - ldrsb r1, [r0, #1] - cmp r1, #1 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - mov r1, #1 - strb r1, [r0, #1] - bl sub_02070F4C - ldr r0, _0206C750 ; =DRIVER_WORK - mov r1, #0 - ldr r0, [r0, #0x664] - bl DseSequence_PauseList - ldr r0, _0206C750 ; =DRIVER_WORK - mov r1, #0 - ldr r0, [r0, #0x668] - bl DseSequence_PauseList - mov r0, #0 - bl sub_0206F6FC - mov r0, #0 - bl sub_02070188 - mov r0, #0 - bl DseVoice_ResetHW - ldr r0, _0206C750 ; =DRIVER_WORK - mov r1, #2 - strb r1, [r0, #0x38] - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0206C750: .word DRIVER_WORK - arm_func_end sub_0206C6BC - - arm_func_start sub_0206C754 -sub_0206C754: ; 0x0206C754 - stmdb sp!, {r4, lr} - ldr r1, _0206C7F0 ; =DRIVER_WORK - mov r4, r0 - ldrsb r0, [r1, #1] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - mov r2, #1 - strb r2, [r1, #0x38] - ldrh r0, [r1, #0x3e] - mov r1, r4 - tst r0, #0xf - ldr r0, _0206C7F0 ; =DRIVER_WORK - moveq r2, #0 - mov r2, r2, lsl #0x18 - ldr r0, [r0, #0x664] - mov r2, r2, asr #0x18 - bl sub_0206DC78 - ldr r0, _0206C7F0 ; =DRIVER_WORK - ldrh r0, [r0, #0x3e] - tst r0, #0xf0 - movne r1, #1 - ldr r0, _0206C7F0 ; =DRIVER_WORK - moveq r1, #0 - mov r2, r1, lsl #0x18 - ldr r0, [r0, #0x668] - mov r1, r4 - mov r2, r2, asr #0x18 - bl sub_0206DC78 - mov r0, r4 - bl sub_0206F774 - mov r0, r4 - bl sub_020701B0 - ldr r0, _0206C7F0 ; =DRIVER_WORK - mov r1, #0 - strb r1, [r0, #1] - bl DseDriver_StartTickTimer - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_0206C7F0: .word DRIVER_WORK - arm_func_end sub_0206C754 - - arm_func_start sub_0206C7F4 -sub_0206C7F4: ; 0x0206C7F4 - stmdb sp!, {r4, lr} - mov r4, r0 - bl DseBgm_StopAll - mov r0, r4 - bl DseSe_StopAll - mov r0, r4 - bl sub_0206F9A4 - ldmia sp!, {r4, pc} - arm_func_end sub_0206C7F4 - - arm_func_start sub_0206C814 -sub_0206C814: ; 0x0206C814 - ldr r1, _0206C848 ; =DRIVER_WORK - mov r2, #0 - str r2, [r1, #0x654] - str r2, [r1, #0x658] - ldr r0, _0206C84C ; =_022B8330 - str r2, [r1, #0x65c] - str r2, [r0, #0xddc] - str r2, [r1, #0x660] - str r2, [r1, #0x664] - str r2, [r1, #0x668] - ldr ip, _0206C850 ; =DseBgm_SysSetupNoteList - str r2, [r1, #0x66c] - bx ip - .align 2, 0 -_0206C848: .word DRIVER_WORK -_0206C84C: .word _022B8330 -_0206C850: .word DseBgm_SysSetupNoteList - arm_func_end sub_0206C814 - - arm_func_start Dse_SetError -Dse_SetError: ; 0x0206C854 - stmdb sp!, {r3, lr} - ldr r3, _0206C880 ; =DRIVER_WORK - stmib r3, {r0, r1, r2} - ldr ip, [r3, #0x1c] - cmp ip, #0 - ldmeqia sp!, {r3, pc} - mov r1, #0 - ldr r2, _0206C884 ; =_022B7334 - mov r3, r1 - blx ip - ldmia sp!, {r3, pc} - .align 2, 0 -_0206C880: .word DRIVER_WORK -_0206C884: .word _022B7334 - arm_func_end Dse_SetError - - arm_func_start Dse_SetError2 -Dse_SetError2: ; 0x0206C888 - stmdb sp!, {r3, lr} - ldr r3, _0206C8BC ; =DRIVER_WORK - str r0, [r3, #0x10] - str r1, [r3, #0x14] - str r2, [r3, #0x18] - ldr ip, [r3, #0x20] - cmp ip, #0 - ldmeqia sp!, {r3, pc} - mov r1, #0 - ldr r2, _0206C8C0 ; =_022B7340 - mov r3, r1 - blx ip - ldmia sp!, {r3, pc} - .align 2, 0 -_0206C8BC: .word DRIVER_WORK -_0206C8C0: .word _022B7340 - arm_func_end Dse_SetError2 - -; https://decomp.me/scratch/C4osO - arm_func_start DseUtil_ByteSwap32 -DseUtil_ByteSwap32: ; 0x0206C8C4 - mov r3, r0, lsr #0x18 - mov r2, r0, lsr #8 - mov r1, r0, lsl #8 - mov r0, r0, lsl #0x18 - and r3, r3, #0xff - and r2, r2, #0xff00 - orr r2, r3, r2 - and r1, r1, #0xff0000 - orr r1, r2, r1 - and r0, r0, #0xff000000 - orr r0, r1, r0 - bx lr - arm_func_end DseUtil_ByteSwap32 - - arm_func_start DseUtil_GetRandomNumber -DseUtil_GetRandomNumber: ; 0x0206C8F4 - ldr r1, _0206C914 ; =DRIVER_WORK - ldr r0, _0206C918 ; =0x00007FFF - ldr r2, [r1, #0x34] - eor r2, r2, r2, lsl #17 - eor r2, r2, r2, asr #15 - str r2, [r1, #0x34] - and r0, r2, r0 - bx lr - .align 2, 0 -_0206C914: .word DRIVER_WORK -_0206C918: .word 0x00007FFF - arm_func_end DseUtil_GetRandomNumber - -; https://decomp.me/scratch/KrgBG - arm_func_start DseMem_Init -DseMem_Init: ; 0x0206C91C - mov ip, r1 - tst r0, #0xf - bicne r0, r0, #0xf - ldr r1, _0206C980 ; =DRIVER_WORK - addne r0, r0, #0x10 - subne ip, ip, #0x10 - add r3, r0, ip - str r0, [r1, #0x6f4] - str r3, [r1, #0x6f8] - str ip, [r1, #0x6fc] - ldr r3, _0206C984 ; =0x74647373 - mov r1, #0x82 - str r3, [r0] - strb r1, [r0, #4] - mov r3, #0 - strb r3, [r0, #5] - add r1, r0, #0x10 - str r1, [r0, #8] - str r3, [r0, #0xc] - strb r3, [r0, #6] - ldr r3, _0206C988 ; =_022B7A30 - ldmia r2, {r0, r1, r2} - stmia r3, {r0, r1, r2} - mov r0, ip - bx lr - .align 2, 0 -_0206C980: .word DRIVER_WORK -_0206C984: .word 0x74647373 -_0206C988: .word _022B7A30 - arm_func_end DseMem_Init diff --git a/asm/main_0206A878.s b/asm/main_0206A878.s new file mode 100644 index 00000000..2f417a4f --- /dev/null +++ b/asm/main_0206A878.s @@ -0,0 +1,2472 @@ + .include "asm/macros.inc" + .include "main_0206A878.inc" + + .text + + arm_func_start sub_0206A878 +sub_0206A878: ; 0x0206A878 + stmdb sp!, {r3, lr} + bl sub_0206A7CC + mvn r1, #0 + cmp r0, r1 + ldrne r1, _0206A89C ; =MAP_MARKER_PLACEMENTS + movne r0, r0, lsl #3 + ldrnesh r1, [r1, r0] + mov r0, r1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0206A89C: .word MAP_MARKER_PLACEMENTS + arm_func_end sub_0206A878 + + arm_func_start sub_0206A8A0 +sub_0206A8A0: ; 0x0206A8A0 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + bl sub_0206A7CC + mov r5, r0 + mov r0, r4 + bl sub_0206A7CC + mvn r1, #0 + cmp r5, r1 + mov r4, r0 + ldrne r0, _0206A908 ; =_020A94D2 + movne r2, r5, lsl #3 + ldrnesh r0, [r0, r2] + cmpne r0, r1 + movne r5, r0 + mvn r0, #0 + cmp r4, r0 + ldrne r1, _0206A908 ; =_020A94D2 + movne r2, r4, lsl #3 + ldrnesh r1, [r1, r2] + cmpne r1, r0 + movne r4, r1 + cmp r5, r4 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0206A908: .word _020A94D2 + arm_func_end sub_0206A8A0 + + arm_func_start sub_0206A90C +sub_0206A90C: ; 0x0206A90C +#ifdef EUROPE +#define SUB_0206A90C_WORD_OFFSET 2 +#else +#define SUB_0206A90C_WORD_OFFSET 0 +#endif + stmdb sp!, {r3, lr} + bl sub_0206A7CC + mvn r1, #0 + cmp r0, r1 +#ifdef JAPAN + moveq r0, #0x47 + ldmeqia sp!, {r3, pc} + cmp r0, #0 + moveq r0, #0x40 +#else + ldreq r0, _0206A964 ; =0x0000403A + ldmeqia sp!, {r3, pc} + cmp r0, #0 + ldreq r0, _0206A968 ; =0x00004033 +#endif + ldmeqia sp!, {r3, pc} + cmp r0, #1 + blt _0206A950 + cmp r0, #0xb4 + bgt _0206A950 + sub r0, r0, #1 + and r0, r0, #0xff + bl sub_02024934 + ldmia sp!, {r3, pc} +_0206A950: +#ifdef JAPAN + sub r0, r0, #0x74 +#else + add r0, r0, #0x7f + SUB_0206A90C_WORD_OFFSET + add r0, r0, #0x3f00 +#endif + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + ldmia sp!, {r3, pc} + .align 2, 0 +#ifndef JAPAN +_0206A964: .word 0x0000403A + SUB_0206A90C_WORD_OFFSET +_0206A968: .word 0x00004033 + SUB_0206A90C_WORD_OFFSET +#endif + arm_func_end sub_0206A90C + + arm_func_start sub_0206A96C +sub_0206A96C: ; 0x0206A96C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + mov r4, r2 + bl sub_0206A7CC + mvn r2, #0 + cmp r0, r2 + moveq r0, r2 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, _0206A9D8 ; =MAP_MARKER_PLACEMENTS + cmp r5, r2 + add r3, r1, r0, lsl #3 + ldrnesh r1, [r3] + cmpne r1, r5 + movne r0, r2 + ldmneia sp!, {r3, r4, r5, pc} + ldrsh r2, [r3, #2] + cmp r2, r0 + mvnne r1, #0 + cmpne r2, r1 + ldrne r1, _0206A9D8 ; =MAP_MARKER_PLACEMENTS + movne r0, r2 + addne r3, r1, r2, lsl #3 + ldrsh r1, [r3, #4] + str r1, [r4] + ldrsh r1, [r3, #6] + str r1, [r4, #4] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0206A9D8: .word MAP_MARKER_PLACEMENTS + arm_func_end sub_0206A96C + + arm_func_start sub_0206A9DC +sub_0206A9DC: ; 0x0206A9DC + stmdb sp!, {r4, lr} + bl GetExecuteSpecialEpisodeType + mov r4, r0 + cmp r4, #4 + bne _0206AA24 + mov r0, #0x3e8 + bl sub_0206A7CC + ldr r1, _0206AA34 ; =MAP_MARKER_PLACEMENTS + mov r0, r0, lsl #3 + ldrsh r0, [r1, r0] + ldr r1, _0206AA38 ; =0xFFFFFED2 + add r1, r0, r1 + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + cmp r1, #1 + ldmlsia sp!, {r4, pc} +_0206AA24: + ldr r0, _0206AA3C ; =_020A94C6 + mov r1, r4, lsl #1 + ldrsh r0, [r0, r1] + ldmia sp!, {r4, pc} + .align 2, 0 +_0206AA34: .word MAP_MARKER_PLACEMENTS +#if defined(EUROPE) +_0206AA38: .word 0xFFFFFEC6 +#elif defined(JAPAN) +_0206AA38: .word 0xFFFFFECD +#else +_0206AA38: .word 0xFFFFFED2 +#endif +_0206AA3C: .word _020A94C6 + arm_func_end sub_0206A9DC + + arm_func_start sub_0206AA40 +sub_0206AA40: ; 0x0206AA40 + stmdb sp!, {r3, lr} + bl GetExecuteSpecialEpisodeType + ldr r1, _0206AA58 ; =_020A94BC + mov r0, r0, lsl #1 + ldrsh r0, [r1, r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0206AA58: .word _020A94BC + arm_func_end sub_0206AA40 + + arm_func_start sub_0206AA5C +sub_0206AA5C: ; 0x0206AA5C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r5, r0 + mov r0, #0x40 + mov r1, #1 + bl MemAlloc + ldr r2, _0206AB90 ; =_020B0B4C + mov r1, #0x40 + str r0, [r2, #8] + bl MemZero + ldr r0, _0206AB90 ; =_020B0B4C + mov r1, #0x20 + ldr r4, [r0, #8] + add r0, r4, #4 + bl MemZero + mov r1, #0 + str r1, [r4, #0x20] + ldr r0, _0206AB90 ; =_020B0B4C + strh r1, [r4, #0x1c] + ldr r1, [r0, #8] + str r5, [r1] + ldr r2, [r0, #8] + ldr r0, [r2] + cmp r0, #1 + bne _0206AB3C + ldr r0, _0206AB94 ; =0x00001F64 + mov r1, #6 + add r4, r2, #4 + bl MemAlloc + ldr r1, _0206AB94 ; =0x00001F64 + mov r5, r0 + bl MemZero + mov r8, #0x58 + mov sl, #0 + mvn r7, #0 + mov r6, r8 +_0206AAE8: + mul sb, sl, r6 + mov r1, r8 + add r0, r5, sb + bl MemZero + add sl, sl, #1 + strh r7, [r5, sb] + cmp sl, #0x50 + blt _0206AAE8 + add r0, r5, #0x1000 + ldr r2, _0206AB90 ; =_020B0B4C + str r4, [r0, #0xf5c] + ldr r0, [r2, #8] + mov r1, #5 + str r5, [r0, #0x28] + ldr r0, [r2, #8] + add r0, r0, #4 + bl sub_0206BBE0 + ldr r1, _0206AB90 ; =_020B0B4C + ldr r1, [r1, #8] + str r0, [r1, #0x24] + b _0206AB5C +_0206AB3C: + cmp r0, #2 + bne _0206AB5C + add r0, r2, #4 + mov r1, #4 + bl sub_0206BBE0 + ldr r1, _0206AB90 ; =_020B0B4C + ldr r1, [r1, #8] + str r0, [r1, #0x24] +_0206AB5C: + ldr r1, _0206AB90 ; =_020B0B4C + mov r3, #0 + ldr r2, [r1, #8] + mov r0, #0x80 + str r3, [r2, #0x2c] + ldr r2, [r1, #8] + strb r3, [r2, #0x30] + ldr r2, [r1, #8] + str r3, [r2, #0x34] + ldr r1, [r1, #8] + strb r3, [r1, #0x31] + bl ov10_022C2340 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0206AB90: .word _020B0B4C +_0206AB94: .word 0x00001F64 + arm_func_end sub_0206AA5C + + arm_func_start sub_0206AB98 +sub_0206AB98: ; 0x0206AB98 + ldr r0, _0206ABAC ; =_020B0B4C + mov r1, #1 + ldr r0, [r0, #8] + strb r1, [r0, #0x30] + bx lr + .align 2, 0 +_0206ABAC: .word _020B0B4C + arm_func_end sub_0206AB98 + + arm_func_start sub_0206ABB0 +sub_0206ABB0: ; 0x0206ABB0 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x18 + ldr r0, _0206AD28 ; =_020B0B4C + ldr r4, [r0, #8] + cmp r4, #0 + ldrneb r0, [r4, #0x30] + cmpne r0, #0 + beq _0206AD1C + ldr r0, [r4] + ldr r1, _0206AD2C ; =_020B0B5C + cmp r0, #1 + movne r5, #1 + moveq r5, #0 + ldr r1, [r1, r5, lsl #3] + add r0, sp, #8 + mov r2, #6 + bl LoadWteFromRom + ldr r0, _0206AD30 ; =_020B0B60 + mov r1, #0 + ldr r0, [r0, r5, lsl #3] + bl sub_0201DF38 + str r0, [r4, #0x14] + mov r2, #0 + ldr r1, [r4, #0x20] + add r0, sp, #8 + mov r3, r2 + bl sub_0201E12C + add r0, sp, #8 + bl DelayWteFree + ldr r1, [r4, #0x20] + add r0, sp, #0x10 + str r1, [r4, #0x18] + ldr r2, [r4, #0x20] + ldr r1, _0206AD34 ; =_020A9F34 + add r2, r2, #0x8000 + str r2, [r4, #0x20] + mov r2, #6 + bl LoadWteFromRom + ldr r0, _0206AD38 ; =_020A9F48 + mov r1, #0 + bl sub_0201DF38 + str r0, [r4, #4] + ldr r1, [r4, #0x20] + add r0, sp, #0x10 + mov r2, #1 + mov r3, #0 + bl sub_0201E12C + add r0, sp, #0x10 + bl DelayWteFree + ldr r1, [r4, #0x20] + add r0, sp, #0x10 + str r1, [r4, #8] + ldr r2, [r4, #0x20] + ldr r1, _0206AD3C ; =_020A9F5C + add r2, r2, #0x2000 + str r2, [r4, #0x20] + mov r2, #6 + bl LoadWteFromRom + ldr r0, _0206AD40 ; =_020A9F70 + mov r1, #0 + bl sub_0201DF38 + str r0, [r4, #0xc] + ldr r1, [r4, #0x20] + add r0, sp, #0x10 + mov r2, #2 + mov r3, #0 + bl sub_0201E12C + add r0, sp, #0x10 + bl DelayWteFree + ldr r0, [r4, #0x20] + mov r2, #0 + str r0, [r4, #0x10] + ldr r1, [r4, #0x20] + ldr r0, _0206AD44 ; =WAN_TABLE + add r1, r1, #0x4000 + str r1, [r4, #0x20] + ldr r0, [r0] + ldr r1, _0206AD48 ; =_020A9F84 + bl LoadWanTableEntry + strh r0, [r4, #0x1c] + mov r3, #1 + str r3, [sp] + mov r2, #0 + str r2, [sp, #4] + ldrsh r0, [r4, #0x1c] + mov r1, #0x2c0 + bl sub_0201D9C8 + ldr r0, _0206AD28 ; =_020B0B4C + mov r1, #0 + ldr r0, [r0, #8] + strb r1, [r0, #0x30] +_0206AD1C: + mov r0, #1 + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0206AD28: .word _020B0B4C +_0206AD2C: .word _020B0B5C +_0206AD30: .word _020B0B60 +_0206AD34: .word _020A9F34 +_0206AD38: .word _020A9F48 +_0206AD3C: .word _020A9F5C +_0206AD40: .word _020A9F70 +_0206AD44: .word WAN_TABLE +_0206AD48: .word _020A9F84 + arm_func_end sub_0206ABB0 + + arm_func_start sub_0206AD4C +sub_0206AD4C: ; 0x0206AD4C + ldr r0, _0206AD7C ; =_020B0B4C + ldr r0, [r0, #8] + cmp r0, #0 + beq _0206AD74 + ldrb r0, [r0, #0x31] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr +_0206AD74: + mov r0, #0 + bx lr + .align 2, 0 +_0206AD7C: .word _020B0B4C + arm_func_end sub_0206AD4C + + arm_func_start sub_0206AD80 +sub_0206AD80: ; 0x0206AD80 + ldr r0, _0206AD9C ; =_020B0B4C + ldr r1, [r0, #8] + cmp r1, #0 + ldrne r0, [r1, #0x34] + addne r0, r0, #1 + strne r0, [r1, #0x34] + bx lr + .align 2, 0 +_0206AD9C: .word _020B0B4C + arm_func_end sub_0206AD80 + + arm_func_start sub_0206ADA0 +sub_0206ADA0: ; 0x0206ADA0 + ldr r1, _0206ADB4 ; =_020B0B4C + ldr r1, [r1, #8] + cmp r1, #0 + strne r0, [r1, #0x38] + bx lr + .align 2, 0 +_0206ADB4: .word _020B0B4C + arm_func_end sub_0206ADA0 + + arm_func_start sub_0206ADB8 +sub_0206ADB8: ; 0x0206ADB8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x4c + ldr r0, _0206B9BC ; =_020B0B4C + ldr r0, [r0, #8] + cmp r0, #0 + moveq r0, #0 + beq _0206B9B4 + bl ov10_022C23EC + ldr r0, _0206B9BC ; =_020B0B4C + ldr r8, [r0, #8] + ldrb r0, [r8, #0x30] + cmp r0, #0 + bne _0206B9B0 + ldr r0, [r8, #0x2c] + cmp r0, #0 + beq _0206AE00 + cmp r0, #1 + b _0206B99C +_0206AE00: + ldr r0, [r8, #0x38] + cmp r0, #0 + subgt r0, r0, #1 + strgt r0, [r8, #0x38] + bgt _0206B99C + ldr r0, [r8] + cmp r0, #1 + bne _0206B678 + ldr r7, [r8, #0x24] + ldr sb, [r8, #0x28] + ldr r0, [r7, #0xc] + cmp r0, #0 + beq _0206AE48 + cmp r0, #1 + beq _0206AF78 + cmp r0, #2 + beq _0206B1D4 + b _0206B670 +_0206AE48: + ldr r1, [r7, #0x2d4] + mov r0, #0xc0 + ldr fp, [r7, #0x2d8] + mov r6, #0 + bl _s32_div_f + mov sb, r0, lsl #8 + mov r0, #0x14000 + rsb r0, r0, #0 + str r0, [sp, #0x2c] + b _0206AF50 +_0206AE70: + mul r0, r6, sb + ands r5, r6, #1 + movne r4, #0x14000 + ldr r1, _0206B9BC ; =_020B0B4C + ldreq r4, [sp, #0x2c] + str r0, [sp, #0x18] + ldr r1, [r1, #4] + rsb r0, r4, #0 + bl _s32_div_f + str r0, [sp, #0x1c] + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #0xe0 + str r0, [sp, #8] + mov r0, #0x58 + mul sl, r6, r0 + mov r0, r6, lsl #0x10 + mov r0, r0, asr #0x10 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [r7] + ldr r3, [sp, #0x18] + mov r1, fp + add r0, r0, sl + mov r2, r4 + bl sub_0206BC3C + cmp r5, #0 + movne r0, #0 + moveq r0, #0x10000 + add r2, r4, r0 + ldr r5, [r7, #4] + ldr r0, [sp, #0x1c] + ldr r3, [sp, #0x18] + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #0x70 + str r0, [sp, #8] + mov r0, #3 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + add r0, r5, sl + mov r1, fp + bl sub_0206BD04 + ldrsh r0, [r5, sl] + bl sub_0201F324 + ldrsh r1, [r0, #0x1a] + add r6, r6, #1 + add r1, r1, r1, lsr #31 + mov r1, r1, asr #1 + strh r1, [r0, #8] + mov r1, #0 + strh r1, [r0, #0xa] +_0206AF50: + ldr r0, [r7, #0x2d4] + cmp r6, r0 + blt _0206AE70 + ldr r0, _0206B9BC ; =_020B0B4C + ldr r0, [r0, #4] + str r0, [r7, #8] + ldr r0, [r7, #0xc] + add r0, r0, #1 + str r0, [r7, #0xc] + b _0206B670 +_0206AF78: + mov r4, #0 + mov fp, #0x58 + b _0206B04C +_0206AF84: + mul r5, r4, fp + ldr r6, [r7] + add sl, r6, r5 + ldr r1, [sl, #8] + ldr r0, [sl, #0x18] + add r0, r1, r0 + str r0, [sl, #8] + ldr r1, [sl, #0xc] + ldr r0, [sl, #0x1c] + add r0, r1, r0 + str r0, [sl, #0xc] + ldrsh r0, [r6, r5] + bl sub_0201F324 + ldr r2, [sl, #8] + mov r1, r2, asr #7 + add r1, r2, r1, lsr #24 + mov r1, r1, asr #8 + strh r1, [r0] + ldrsh r0, [r6, r5] + bl sub_0201F324 + ldr r2, [sl, #0xc] + mov r1, r2, asr #7 + add r1, r2, r1, lsr #24 + mov r1, r1, asr #8 + strh r1, [r0, #2] + ldr r6, [r7, #4] + add sl, r6, r5 + ldr r1, [sl, #8] + ldr r0, [sl, #0x18] + add r0, r1, r0 + str r0, [sl, #8] + ldr r1, [sl, #0xc] + ldr r0, [sl, #0x1c] + add r0, r1, r0 + str r0, [sl, #0xc] + ldrsh r0, [r6, r5] + bl sub_0201F324 + ldr r2, [sl, #8] + mov r1, r2, asr #7 + add r1, r2, r1, lsr #24 + mov r1, r1, asr #8 + strh r1, [r0] + ldrsh r0, [r6, r5] + bl sub_0201F324 + ldr r2, [sl, #0xc] + add r4, r4, #1 + mov r1, r2, asr #7 + add r1, r2, r1, lsr #24 + mov r1, r1, asr #8 + strh r1, [r0, #2] +_0206B04C: + ldr r0, [r7, #0x2d4] + cmp r4, r0 + blt _0206AF84 + ldr r0, [r7, #8] + cmp r0, #0 + bne _0206B0E0 + mov r6, #0 + mov fp, r6 + b _0206B0D0 +_0206B070: + mov r0, #0x58 + mul r4, r6, r0 + ldr r5, [r7] + ldrsh r0, [r5, r4] + add sl, r5, r4 + bl sub_0201F324 + str fp, [sl, #8] + str fp, [sl, #0x18] + str fp, [sl, #0x1c] + ldrsh r0, [r5, r4] + bl sub_0201F324 + ldr r2, [sl, #8] + mov r1, r2, asr #7 + add r1, r2, r1, lsr #24 + mov r1, r1, asr #8 + strh r1, [r0] + ldrsh r0, [r5, r4] + bl sub_0201F324 + ldr r2, [sl, #0xc] + add r6, r6, #1 + mov r1, r2, asr #7 + add r1, r2, r1, lsr #24 + mov r1, r1, asr #8 + strh r1, [r0, #2] +_0206B0D0: + ldr r0, [r7, #0x2d4] + cmp r6, r0 + blt _0206B070 + b _0206B0E8 +_0206B0E0: + sub r0, r0, #1 + str r0, [r7, #8] +_0206B0E8: + ldr r0, [r7, #4] + ldr r0, [r0, #8] + cmp r0, #0x11000 + ble _0206B670 + add r0, sb, #0x1000 + ldr r5, [r0, #0xf5c] + mov r1, #0x8000 + str r1, [r0, #0xb8c] + mov r1, #0x6000 + str r1, [r0, #0xb90] + bl sub_0201F36C + add r1, sb, #0x1b00 + strh r0, [r1, #0x84] + ldrsh r0, [r1, #0x84] + bl sub_0201F324 + mov r4, r0 + mov r2, #0 + strb r2, [r4, #0x3c] + mov r1, #0x80 + strh r1, [r4, #0x2a] + add r3, sb, #0x1000 + ldr sl, [r3, #0xb8c] + mov r6, #2 + mov r1, sl, asr #7 + add r1, sl, r1, lsr #24 + mov r1, r1, asr #8 + strh r1, [r4] + ldr r3, [r3, #0xb90] + mov r1, r3, asr #7 + add r1, r3, r1, lsr #24 + mov r1, r1, asr #8 + strh r1, [r4, #2] + str r6, [sp] + str r2, [sp, #4] + ldr r1, [r5, #8] + ldr r3, [r5, #0xc] + bl sub_0201E7D8 + ldrsh r0, [r4, #0x1a] + mov r5, #0 + mov r1, #0x28 + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 + strh r0, [r4, #8] + ldrsh r2, [r4, #0x1c] + add r3, sb, #0x1000 + mov r0, #0x1000 + add r2, r2, r2, lsr #31 + mov r2, r2, asr #1 + strh r2, [r4, #0xa] + strh r5, [r4, #0x10] + strh r5, [r4, #0x12] + str r1, [r3, #0xbd4] + bl _s32_div_f + add r1, sb, #0x1b00 + strh r0, [r1, #0xcc] + ldr r0, [r7, #0xc] + add r0, r0, #1 + str r0, [r7, #0xc] + b _0206B670 +_0206B1D4: + add r0, sb, #0x1b00 + ldrsh r3, [r0, #0x84] + add r0, sb, #0x1000 + add r1, sb, #0x384 + mvn r2, #0 + cmp r3, r2 + add r6, r1, #0x1800 + ldr r7, [r0, #0xf5c] + beq _0206B2D4 + ldrsh r0, [r6] + bl sub_0201F324 + ldr r1, [r6, #4] + mov r5, r0 + cmp r1, #2 + ldrh r4, [r5, #0x10] + bge _0206B298 + ldr r0, [r6, #0x4c] + add r1, r0, #1 + str r1, [r6, #0x4c] + ldr r0, [r6, #0x50] + cmp r1, r0 + ble _0206B298 + ldr r0, [r6, #4] + add r0, r0, #1 + str r0, [r6, #4] + cmp r0, #2 + bne _0206B278 + ldr r1, [r6, #0x50] + mov r0, #0xc00 + bl _s32_div_f + strh r0, [r6, #0x48] + add r0, sb, #0x1000 + mov r1, #1 + str r1, [r0, #0xbf0] + mov r1, #8 + str r1, [r0, #0xbe8] + ldr r1, [r0, #0xbec] + str r1, [r0, #0xbe0] + ldr r1, [r0, #0xbf0] + str r1, [r0, #0xbe4] + b _0206B290 +_0206B278: + cmp r0, #1 + bne _0206B290 + ldr r1, [r6, #0x50] + mov r0, #0xc00 + bl _s32_div_f + strh r0, [r6, #0x48] +_0206B290: + mov r0, #0 + str r0, [r6, #0x4c] +_0206B298: + ldrsh r0, [r6, #0x48] + ldr r1, [r6, #4] + cmp r1, #1 + subeq r4, r4, r0 + beq _0206B2C8 + cmp r1, #2 + add r4, r4, r0 + bne _0206B2C8 + add r0, r0, #0x20 + cmp r4, #0x4000 + strh r0, [r6, #0x48] + movge r4, #0x4000 +_0206B2C8: + strh r4, [r5, #0x10] + ldrh r0, [r5, #0x10] + strh r0, [r5, #0x12] +_0206B2D4: + add r0, sb, #0x1000 + ldr r1, [r0, #0xbf4] + cmp r1, #0 + beq _0206B2F0 + cmp r1, #1 + beq _0206B3C4 + b _0206B670 +_0206B2F0: + mov r5, #0 + mov r2, #1 + str r5, [r0, #0xbdc] + mov r1, #0x10 + str r2, [r0, #0xbe0] + str r1, [r0, #0xbec] + str r1, [r0, #0xbe8] + mov r1, #8 + str r1, [r0, #0xbf0] + rsb r1, r2, #0x3e8 + str r1, [r0, #0xbe4] + ldr r4, [r0, #0xf5c] + add r0, sb, #0x3f8 + add fp, r0, #0x1800 +_0206B328: + mov r0, #0x7c + mla r6, r5, r0, fp + mov r0, r6 + bl InitAnimationControlWithSet__0201C0B0 + ldrsh r1, [r4, #0x18] + mov r0, r6 + bl SetSpriteIdForAnimationControl + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #0xc + mul r1, r5, r0 + ldr r0, _0206B9C0 ; =_020A9EE0 + mov r2, #0 + add sl, r0, r1 + ldr r1, [r0, r1] + mov r0, r6 + mov r3, #0x2c0 + bl SetAnimationForAnimationControl + ldr r1, [sl, #4] + mov r0, r6 + strh r1, [r6, #0x1c] + ldr r2, [sl, #8] + mov r1, #0 + strh r2, [r6, #0x1e] + bl sub_0201D12C + add r5, r5, #1 + cmp r5, #7 + blt _0206B328 + add r0, sb, #0x1000 + mov r1, #1 + strb r1, [r0, #0xf60] + ldr r1, [r0, #0xbf4] + add r1, r1, #1 + str r1, [r0, #0xbf4] +_0206B3C4: + add r0, sb, #0x1000 + ldr r2, [r0, #0xbe0] + add r1, r2, #1 + str r1, [r0, #0xbe0] + ldr r0, [r0, #0xbec] + cmp r2, r0 + ble _0206B54C + bl Rand16Bit + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #31 + add r0, r1, r0, ror #31 + add r4, r0, #3 + ldr r0, _0206B9C4 ; =0x000001FF + mov r5, #0 + add r0, r0, #0xe00 + str r0, [sp, #0x34] + b _0206B51C +_0206B408: + bl Rand16Bit + bl Rand16Bit + ldr r1, _0206B9BC ; =_020B0B4C + ldr r2, [r1, #0xc] + ldr r1, _0206B9C4 ; =0x000001FF + and r0, r0, r1 + add r0, r2, r0 + str r0, [sp, #0x14] + bl Rand16Bit + ldr r1, _0206B9BC ; =_020B0B4C + and r0, r0, #0xf + ldr r1, [r1] + add fp, r1, r0 + bl Rand16Bit + ldr r1, [r7] + ldr r1, [r1] + ldr r1, [r1, #4] + sub r1, r1, #1 + bl _s32_div_f + add r0, r1, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + bl Rand16Bit + mov r1, #0xd0 + bl _s32_div_f + add sl, r1, #0x10 + bl Rand16Bit + str sl, [sp] + str r6, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + ldr r1, [sp, #0x34] + mov r2, #0x8000 + and sl, r0, r1 + mov r0, sb + mov r1, r7 + mov r3, #0x6000 + bl sub_0206BDF4 + movs r6, r0 + beq _0206B510 + ldrsh r0, [r6] + bl sub_0201F324 + ldrsh r2, [r0, #0x1a] + mov r1, r6 + add r2, r2, r2, lsr #31 + mov r2, r2, asr #1 + strh r2, [r0, #8] + ldrsh r2, [r0, #0x1c] + add r2, r2, r2, lsr #31 + mov r2, r2, asr #1 + strh r2, [r0, #0xa] + mov r2, #0x800 + strh r2, [r0, #0x10] + strh r2, [r0, #0x12] + ldr r0, _0206B9C8 ; =sub_0206BFA8 + bl ov10_022C2450 + mov r0, #0x8000 + str r0, [r6, #0x30] + mov r0, #0x6000 + str r0, [r6, #0x34] + mov r0, #0 + str r0, [r6, #0x24] + str sl, [r6, #0x20] + ldr r0, [sp, #0x14] + str fp, [r6, #0x38] + str r0, [r6, #0x3c] +_0206B510: + cmp r6, #0 + beq _0206B524 + add r5, r5, #1 +_0206B51C: + cmp r5, r4 + blt _0206B408 +_0206B524: + bl Rand16Bit + add r2, sb, #0x1000 + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #29 + ldr r3, [r2, #0xbe8] + add r0, r1, r0, ror #29 + add r0, r3, r0 + str r0, [r2, #0xbec] + mov r0, #0 + str r0, [r2, #0xbe0] +_0206B54C: + add r0, sb, #0x1000 + ldr r1, [r0, #0xbe4] + add r1, r1, #1 + str r1, [r0, #0xbe4] + ldr r0, [r0, #0xbf0] + cmp r1, r0 + ble _0206B670 + bl Rand16Bit + ldr r1, _0206B9CC ; =0x00000FFF + mov r4, #0 + and r0, r0, r1 + mov r5, r0, lsl #0x10 + sub fp, r1, #0xe00 +_0206B580: + bl Rand16Bit + ldr r1, [r7] + ldr r1, [r1] + ldr r1, [r1, #4] + sub r1, r1, #1 + bl _s32_div_f + add r0, r1, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + bl Rand16Bit + mov r1, #0xd0 + bl _s32_div_f + add sl, r1, #0x10 + bl Rand16Bit + str sl, [sp] + and sl, r0, fp + str r6, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + mov r0, sb + mov r1, r7 + mov r2, #0x8000 + mov r3, #0x6000 + bl sub_0206BDF4 + movs r6, r0 + beq _0206B658 + ldrsh r0, [r6] + bl sub_0201F324 + mov r1, #0 + strh r1, [r0, #0x12] + mov r2, r1 + ldr r1, _0206B9D0 ; =0x00005555 + strh r2, [r0, #0x10] + mul r1, r4, r1 + add r0, r1, r5, lsr #16 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + str r0, [r6, #0x20] + mov r0, r4, lsl #1 + str r0, [r6, #0x40] + ldr r0, [r6, #0x20] + bl CosAbs4096 + add r1, sl, #0x300 + bl MultiplyByFixedPoint + str r0, [r6, #0x18] + ldr r0, [r6, #0x20] + bl SinAbs4096 + add r1, sl, #0x300 + rsb r0, r0, #0 + bl MultiplyByFixedPoint + str r0, [r6, #0x1c] + ldr r0, _0206B9D4 ; =sub_0206BEAC + mov r1, r6 + bl ov10_022C2450 +_0206B658: + add r4, r4, #1 + cmp r4, #3 + blt _0206B580 + add r0, sb, #0x1000 + mov r1, #0 + str r1, [r0, #0xbe4] +_0206B670: + mov r4, #0 + b _0206B990 +_0206B678: + cmp r0, #2 + bne _0206B990 + ldr r5, [r8, #0x24] + ldr r0, [r5, #0xc] + cmp r0, #0 + beq _0206B6A4 + cmp r0, #1 + beq _0206B838 + cmp r0, #2 + beq _0206B984 + b _0206B98C +_0206B6A4: + ldr r0, _0206B9D8 ; =_020A9E80 + add r4, sp, #0x3c + ldmia r0, {r0, r1, r2, r3} + stmia r4, {r0, r1, r2, r3} + ldr r0, [r5, #0x2d8] + mov r6, #0 + str r0, [sp, #0x20] + mov r0, #0x14000 + rsb r0, r0, #0 + str r0, [sp, #0x30] + mov r0, r0, asr #0x11 + str r0, [sp, #0x38] + b _0206B810 +_0206B6D8: + add r0, sp, #0x3c + ldr r0, [r0, r6, lsl #2] + tst r6, #1 + mov r0, r0, lsl #8 + add r0, r0, #0x800 + movne sb, #0x2000 + moveq sb, #0 + str r0, [sp, #0x24] + cmp r6, #2 + movlt r0, #1 + movge r0, #0 + ands r4, r0, #0xff + ldreq r0, [sp, #0x38] + ldr r1, _0206B9BC ; =_020B0B4C + muleq r0, sb, r0 + moveq sb, r0 + cmp r4, #0 + ldrne sl, [sp, #0x30] + ldr r1, [r1, #4] + moveq sl, #0x14000 + rsb r0, sl, #0 + bl _s32_div_f + str r0, [sp, #0x28] + mov r0, #0x58 + mul r7, r6, r0 + mov r0, r6, lsl #0x10 + mov r1, r0, asr #0x10 + ldr fp, [r5] + ldr r0, [sp, #0x28] + ldr r3, [sp, #0x24] + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #0xe0 + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r1, [sp, #0x20] + add r0, fp, r7 + add r2, sl, sb + bl sub_0206BC3C + ldrsh r0, [fp, r7] + bl sub_0201F324 + ldrsh r1, [r0, #0x1c] + cmp r1, #0x28 + moveq r3, #3 + beq _0206B7A4 + cmp r1, #0x20 + moveq r3, #2 + movne r3, #1 +_0206B7A4: + cmp r4, #0 + movne r0, #0x10000 + moveq r0, #0 + add r0, sl, r0 + add r2, r0, sb + ldr r4, [r5, #4] + ldr r0, [sp, #0x28] + add r1, r1, r1, lsr #31 + str r0, [sp] + mov r0, r3, lsl #0x10 + mov sb, r0, asr #0x10 + ldr r0, [sp, #0x24] + mov r1, r1, asr #1 + add r3, r0, r1, lsl #8 + mov r0, #0 + str r0, [sp, #4] + mov r0, #0x70 + str r0, [sp, #8] + str sb, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r1, [sp, #0x20] + add r0, r4, r7 + bl sub_0206BD04 + ldrsh r0, [r4, r7] + bl sub_0201F324 + add r6, r6, #1 +_0206B810: + ldr r0, [r5, #0x2d4] + cmp r6, r0 + blt _0206B6D8 + ldr r0, _0206B9BC ; =_020B0B4C + ldr r0, [r0, #4] + str r0, [r5, #8] + ldr r0, [r5, #0xc] + add r0, r0, #1 + str r0, [r5, #0xc] + b _0206B98C +_0206B838: + mov sb, #0 + mov r6, #1 + mov fp, sb + b _0206B95C +_0206B848: + mov r0, #0x58 + mul sl, sb, r0 + ldr r0, [r5] + add r4, r0, sl + ldr r0, [r4, #4] + cmp r0, #0 + bne _0206B8F8 + ldr r1, [r4, #8] + ldr r0, [r4, #0x18] + add r0, r1, r0 + str r0, [r4, #8] + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x1c] + add r0, r1, r0 + str r0, [r4, #0xc] + ldr r1, [r4, #0x18] + cmp r1, #0 + ble _0206B8A0 + ldr r0, [r4, #8] + cmp r0, #0 + stmgeib r4, {r6, fp} + bge _0206B8C0 +_0206B8A0: + cmp r1, #0 + bge _0206B8C0 + ldr r0, [r4, #8] + cmp r0, #0 + movle r0, #0 + strle r0, [r4, #8] + movle r0, #1 + strle r0, [r4, #4] +_0206B8C0: + ldrsh r0, [r4] + bl sub_0201F324 + ldr r2, [r4, #8] + mov r1, r2, asr #7 + add r1, r2, r1, lsr #24 + mov r1, r1, asr #8 + strh r1, [r0] + ldrsh r0, [r4] + bl sub_0201F324 + ldr r2, [r4, #0xc] + mov r1, r2, asr #7 + add r1, r2, r1, lsr #24 + mov r1, r1, asr #8 + strh r1, [r0, #2] +_0206B8F8: + ldr r4, [r5, #4] + add r7, r4, sl + ldr r1, [r7, #8] + ldr r0, [r7, #0x18] + add r0, r1, r0 + str r0, [r7, #8] + ldr r1, [r7, #0xc] + ldr r0, [r7, #0x1c] + add r0, r1, r0 + str r0, [r7, #0xc] + ldrsh r0, [r4, sl] + bl sub_0201F324 + ldr r2, [r7, #8] + mov r1, r2, asr #7 + add r1, r2, r1, lsr #24 + mov r1, r1, asr #8 + strh r1, [r0] + ldrsh r0, [r4, sl] + bl sub_0201F324 + ldr r2, [r7, #0xc] + add sb, sb, #1 + mov r1, r2, asr #7 + add r1, r2, r1, lsr #24 + mov r1, r1, asr #8 + strh r1, [r0, #2] +_0206B95C: + ldr r0, [r5, #0x2d4] + cmp sb, r0 + blt _0206B848 + ldr r0, [r5, #4] + ldr r0, [r0, #8] + cmp r0, #0x11000 + ldrgt r0, [r5, #0xc] + addgt r0, r0, #1 + strgt r0, [r5, #0xc] + b _0206B98C +_0206B984: + mov r4, #1 + b _0206B990 +_0206B98C: + mov r4, #0 +_0206B990: + cmp r4, #0 + movne r0, #1 + strneb r0, [r8, #0x31] +_0206B99C: + ldr r0, _0206B9BC ; =_020B0B4C + ldr r1, [r0, #8] + ldr r0, [r1, #0x3c] + add r0, r0, #1 + str r0, [r1, #0x3c] +_0206B9B0: + mov r0, #1 +_0206B9B4: + add sp, sp, #0x4c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0206B9BC: .word _020B0B4C +_0206B9C0: .word _020A9EE0 +_0206B9C4: .word 0x000001FF +_0206B9C8: .word sub_0206BFA8 +_0206B9CC: .word 0x00000FFF +_0206B9D0: .word 0x00005555 +_0206B9D4: .word sub_0206BEAC +_0206B9D8: .word _020A9E80 + arm_func_end sub_0206ADB8 + + arm_func_start sub_0206B9DC +sub_0206B9DC: ; 0x0206B9DC + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _0206BA58 ; =_020B0B4C + ldr r1, [r0, #8] + cmp r1, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldrb r0, [r1, #0x30] + cmp r0, #0 + bne _0206BA50 + ldr r0, [r1, #0x2c] + cmp r0, #0 + beq _0206BA14 + cmp r0, #1 + b _0206BA50 +_0206BA14: + ldr r1, [r1, #0x28] + cmp r1, #0 + addne r0, r1, #0x1000 + ldrneb r0, [r0, #0xf60] + cmpne r0, #0 + beq _0206BA50 + add r0, r1, #0x3f8 + mov r6, #0 + add r5, r0, #0x1800 + mov r4, #0x7c +_0206BA3C: + mla r0, r6, r4, r5 + bl sub_0201CF5C + add r6, r6, #1 + cmp r6, #7 + blt _0206BA3C +_0206BA50: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0206BA58: .word _020B0B4C + arm_func_end sub_0206B9DC + + arm_func_start sub_0206BA5C +sub_0206BA5C: ; 0x0206BA5C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r0, _0206BB8C ; =_020B0B4C + ldr r0, [r0, #8] + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + bl ov10_022C23B0 + ldr r0, _0206BB8C ; =_020B0B4C + ldr r5, [r0, #8] + cmp r5, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r7, [r5, #0x24] + cmp r7, #0 + beq _0206BAE8 + mov r6, #0 + mov r4, #0x58 + b _0206BABC +_0206BA9C: + mul r8, r6, r4 + ldr r0, [r7] + add r0, r0, r8 + bl sub_0206BB94 + ldr r0, [r7, #4] + add r0, r0, r8 + bl sub_0206BB94 + add r6, r6, #1 +_0206BABC: + ldr r0, [r7, #0x2d4] + cmp r6, r0 + blt _0206BA9C + ldr r0, [r7] + bl MemFree + ldr r0, [r7, #4] + bl MemFree + ldr r0, [r5, #0x24] + bl MemFree + mov r0, #0 + str r0, [r5, #0x24] +_0206BAE8: + ldr r0, _0206BB8C ; =_020B0B4C + ldr r5, [r0, #8] + ldr r0, [r5, #0x28] + cmp r0, #0 + beq _0206BB3C + mov r6, #0 + mov r4, #0x58 +_0206BB04: + ldr r0, [r5, #0x28] + mla r0, r6, r4, r0 + bl sub_0206BB94 + add r6, r6, #1 + cmp r6, #0x50 + blt _0206BB04 + ldr r0, [r5, #0x28] + add r0, r0, #0x384 + add r0, r0, #0x1800 + bl sub_0206BB94 + ldr r0, [r5, #0x28] + bl MemFree + mov r0, #0 + str r0, [r5, #0x28] +_0206BB3C: + ldr r0, _0206BB8C ; =_020B0B4C + ldr r4, [r0, #8] + add r0, r4, #0x14 + bl sub_0201E020 + add r0, r4, #4 + bl sub_0201E020 + add r0, r4, #0xc + bl sub_0201E020 + ldr r0, _0206BB90 ; =WAN_TABLE + ldrsh r1, [r4, #0x1c] + ldr r0, [r0] + bl DeleteWanTableEntryVeneer + ldr r0, _0206BB8C ; =_020B0B4C + ldr r0, [r0, #8] + bl MemFree + ldr r0, _0206BB8C ; =_020B0B4C + mov r1, #0 + str r1, [r0, #8] + bl sub_0201F248 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0206BB8C: .word _020B0B4C +_0206BB90: .word WAN_TABLE + arm_func_end sub_0206BA5C + + arm_func_start sub_0206BB94 +sub_0206BB94: ; 0x0206BB94 + stmdb sp!, {r4, lr} + mov r4, r0 + ldrsh r1, [r4] + mvn r0, #0 + cmp r1, r0 + ldmeqia sp!, {r4, pc} + cmp r1, #0 + bne _0206BBBC + ldr r0, _0206BBDC ; =_020A9F98 + bl Debug_Print0 +_0206BBBC: + ldrsh r0, [r4] + bl sub_0201F2AC + mov r0, r4 + mov r1, #0x58 + bl MemZero + mvn r0, #0 + strh r0, [r4] + ldmia sp!, {r4, pc} + .align 2, 0 +_0206BBDC: .word _020A9F98 + arm_func_end sub_0206BB94 + + arm_func_start sub_0206BBE0 +sub_0206BBE0: ; 0x0206BBE0 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r0, #0x2dc + mov r1, #6 + bl MemAlloc + mov r1, #0x2dc + mov r4, r0 + bl MemZero + mov r0, #0x58 + mul r5, r6, r0 + mov r0, r5 + str r7, [r4, #0x2d8] + mov r1, #6 + bl MemAlloc + str r0, [r4] + mov r0, r5 + mov r1, #6 + bl MemAlloc + str r0, [r4, #4] + mov r0, r4 + str r6, [r4, #0x2d4] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_0206BBE0 + + arm_func_start sub_0206BC3C +sub_0206BC3C: ; 0x0206BC3C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + mov r4, r1 + mov r1, #0x58 + mov r5, r0 + mov r7, r2 + mov r6, r3 + bl MemZero + mvn r0, #0 + strh r0, [r5] + bl sub_0201F36C + strh r0, [r5] + ldrsh r1, [r5] + mvn r0, #0 + cmp r1, r0 + beq _0206BCF8 + str r7, [r5, #8] + ldr r1, [sp, #0x20] + str r6, [r5, #0xc] + ldr r0, [sp, #0x24] + str r1, [r5, #0x18] + str r0, [r5, #0x1c] + ldrsh r0, [r5] + bl sub_0201F324 + mov r1, #0 + ldr r2, [sp, #0x28] + strb r1, [r0, #0x3c] + strh r2, [r0, #0x2a] + ldr ip, [r5, #8] + ldrsh r3, [sp, #0x30] + mov r2, ip, asr #7 + add r2, ip, r2, lsr #24 + mov r2, r2, asr #8 + strh r2, [r0] + ldr r5, [r5, #0xc] + mov r3, r3, lsl #0x14 + mov r2, r5, asr #7 + add r2, r5, r2, lsr #24 + mov r2, r2, asr #8 + strh r2, [r0, #2] + str r1, [sp] + mov r1, r3, asr #0x10 + str r1, [sp, #4] + ldrsh r2, [sp, #0x2c] + ldr r1, [r4, #0x10] + ldr r3, [r4, #0x14] + bl sub_0201E7D8 +_0206BCF8: + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_0206BC3C + + arm_func_start sub_0206BD04 +sub_0206BD04: ; 0x0206BD04 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + mov r5, r1 + mov r1, #0x58 + mov r6, r0 + mov r7, r2 + mov r4, r3 + bl MemZero + mvn r0, #0 + strh r0, [r6] + bl sub_0201F36C + strh r0, [r6] + ldrsh r1, [r6] + mvn r0, #0 + cmp r1, r0 + moveq r0, #0 + beq _0206BDEC + str r7, [r6, #8] + ldr r1, [sp, #0x20] + str r4, [r6, #0xc] + ldr r0, [sp, #0x24] + str r1, [r6, #0x18] + str r0, [r6, #0x1c] + ldrsh r0, [r6] + bl sub_0201F324 + mov r4, r0 + mov r2, #0 + strb r2, [r4, #0x3c] + ldr r1, [sp, #0x28] + ldrsh r2, [sp, #0x30] + strh r1, [r4, #0x2a] + ldr r3, [r6, #8] + mov r2, r2, lsl #0x14 + mov r1, r3, asr #7 + add r1, r3, r1, lsr #24 + mov r1, r1, asr #8 + strh r1, [r4] + ldr r3, [r6, #0xc] + mov r1, r3, asr #7 + add r1, r3, r1, lsr #24 + mov r1, r1, asr #8 + strh r1, [r4, #2] + mov r1, #1 + str r1, [sp] + mov r1, r2, asr #0x10 + str r1, [sp, #4] + ldrsh r2, [sp, #0x2c] + ldmia r5, {r1, r3} + bl sub_0201E7D8 + ldrsh r1, [r4, #0x1a] + mov r0, #1 + add r1, r1, r1, lsr #31 + mov r1, r1, asr #1 + strh r1, [r4, #8] + ldrsh r1, [r4, #0x1c] + add r1, r1, r1, lsr #31 + mov r1, r1, asr #1 + strh r1, [r4, #0xa] +_0206BDEC: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_0206BD04 + + arm_func_start sub_0206BDF4 +sub_0206BDF4: ; 0x0206BDF4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x14 + mov ip, #0 + mov r4, r0 + mov r8, ip + mov r0, ip + mov r5, #0x58 + mvn r6, #0 + b _0206BE48 +_0206BE18: + cmp ip, #0x50 + movge ip, r0 + mul r7, ip, r5 + ldrsh r7, [r4, r7] + cmp r7, r6 + beq _0206BE54 + add r7, r8, #1 + add lr, ip, #1 + mov ip, r7, lsl #0x10 + mov lr, lr, lsl #0x10 + mov r8, ip, asr #0x10 + mov ip, lr, asr #0x10 +_0206BE48: + cmp r8, #0x50 + blt _0206BE18 + mvn ip, #0 +_0206BE54: + cmp ip, #0 + movlt r0, #0 + blt _0206BEA4 + mov r0, #0x58 + mla r6, ip, r0, r4 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r5, [sp, #0x30] + ldrsh r0, [sp, #0x34] + str r5, [sp, #8] + ldrsh r5, [sp, #0x38] + str r0, [sp, #0xc] + mov r0, r6 + str r5, [sp, #0x10] + bl sub_0206BD04 + cmp r0, #0 + moveq r0, #0 + movne r0, r6 + strne r4, [r6, #0x54] +_0206BEA4: + add sp, sp, #0x14 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + arm_func_end sub_0206BDF4 + + arm_func_start sub_0206BEAC +sub_0206BEAC: ; 0x0206BEAC + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r4, [r6, #4] + ldrsh r0, [r4] + bl sub_0201F324 + ldr r1, [r4, #0x40] + mov r5, r0 + cmp r1, #0 + ble _0206BEEC + ldrsh r0, [r4] + mov r1, #0 + bl sub_0201F348 + ldr r0, [r4, #0x40] + sub r0, r0, #1 + str r0, [r4, #0x40] + ldmia sp!, {r4, r5, r6, pc} +_0206BEEC: + ldrh r0, [r5, #0x10] + cmp r0, #0x1000 + beq _0206BF10 + add r0, r0, #0x100 + cmp r0, #0x1000 + movge r0, #0x1000 + strh r0, [r5, #0x12] + ldrh r0, [r5, #0x12] + strh r0, [r5, #0x10] +_0206BF10: + ldrsh r0, [r4] + mov r1, #1 + bl sub_0201F348 + ldr r2, [r4, #8] + ldr r1, [r4, #0x18] + mvn r0, #0x3f + add r1, r2, r1 + str r1, [r4, #8] + ldr r2, [r4, #0xc] + ldr r1, [r4, #0x1c] + add r1, r2, r1 + str r1, [r4, #0xc] + ldrsh r1, [r5] + cmp r1, r0 + blt _0206BF68 + cmp r1, #0x140 + bgt _0206BF68 + ldrsh r1, [r5, #2] + cmp r1, r0 + blt _0206BF68 + cmp r1, #0x100 + ble _0206BF7C +_0206BF68: + mov r0, r4 + bl sub_0206BB94 + mov r0, r6 + bl ov10_022C24DC + ldmia sp!, {r4, r5, r6, pc} +_0206BF7C: + ldr r1, [r4, #8] + mov r0, r1, asr #7 + add r0, r1, r0, lsr #24 + mov r0, r0, asr #8 + strh r0, [r5] + ldr r1, [r4, #0xc] + mov r0, r1, asr #7 + add r0, r1, r0, lsr #24 + mov r0, r0, asr #8 + strh r0, [r5, #2] + ldmia sp!, {r4, r5, r6, pc} + arm_func_end sub_0206BEAC + + arm_func_start sub_0206BFA8 +sub_0206BFA8: ; 0x0206BFA8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r0 + ldr r4, [r6, #4] + ldrsh r0, [r4] + bl sub_0201F324 + mov r5, r0 + ldr r0, [r4, #0x20] + bl CosAbs4096 + ldr r1, [r4, #0x24] + bl MultiplyByFixedPoint + ldr r1, [r4, #0x30] + add r7, r1, r0 + ldr r0, [r4, #0x20] + bl SinAbs4096 + ldr r1, [r4, #0x24] + rsb r0, r0, #0 + bl MultiplyByFixedPoint + ldr r2, [r4, #0x34] + ldr r1, _0206C0D4 ; =0x00000FFF + add r0, r2, r0 + str r7, [r4, #8] + str r0, [r4, #0xc] + ldr r2, [r4, #0x20] + ldr r0, [r4, #0x38] + add r2, r2, r0 + and r0, r2, r1 + str r0, [r4, #0x20] + ldr r1, [r4, #0x24] + ldr r0, [r4, #0x3c] + add r0, r1, r0 + str r0, [r4, #0x24] + ldrh r0, [r5, #0x10] + cmp r0, #0x1000 + addlo r0, r0, #0x80 + strloh r0, [r5, #0x10] + ldrloh r0, [r5, #0x12] + addlo r0, r0, #0x80 + strloh r0, [r5, #0x12] + ldr r1, [r4, #0x3c] + mvn r0, #0x3f + add r1, r1, #8 + str r1, [r4, #0x3c] + ldrsh r1, [r5] + cmp r1, r0 + blt _0206C078 + cmp r1, #0x140 + bgt _0206C078 + ldrsh r1, [r5, #2] + cmp r1, r0 + blt _0206C078 + cmp r1, #0x140 + ble _0206C08C +_0206C078: + mov r0, r4 + bl sub_0206BB94 + mov r0, r6 + bl ov10_022C24DC + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0206C08C: + ldr r0, [r4, #0x38] + cmp r0, #0 + ldr r0, [r4, #0x20] + movlt r0, r0, lsl #4 + movge r0, r0, lsl #4 + rsbge r0, r0, #0x10000 + strh r0, [r5, #0x28] + ldr r1, [r4, #8] + mov r0, r1, asr #7 + add r0, r1, r0, lsr #24 + mov r0, r0, asr #8 + strh r0, [r5] + ldr r1, [r4, #0xc] + mov r0, r1, asr #7 + add r0, r1, r0, lsr #24 + mov r0, r0, asr #8 + strh r0, [r5, #2] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0206C0D4: .word 0x00000FFF + arm_func_end sub_0206BFA8 + + arm_func_start sub_0206C0D8 +sub_0206C0D8: ; 0x0206C0D8 + ldr r1, _0206C0E8 ; =_020B0B6C + ldrsh r1, [r1] + strh r1, [r0] + bx lr + .align 2, 0 +_0206C0E8: .word _020B0B6C + arm_func_end sub_0206C0D8 + + arm_func_start sub_0206C0EC +sub_0206C0EC: ; 0x0206C0EC + ldr r1, _0206C0F8 ; =_020B0B6C + strh r0, [r1] + bx lr + .align 2, 0 +_0206C0F8: .word _020B0B6C + arm_func_end sub_0206C0EC + + arm_func_start sub_0206C0FC +sub_0206C0FC: ; 0x0206C0FC + ldr r1, _0206C10C ; =_020B0B70 + ldrsh r1, [r1, #2] + strh r1, [r0] + bx lr + .align 2, 0 +_0206C10C: .word _020B0B70 + arm_func_end sub_0206C0FC + + arm_func_start sub_0206C110 +sub_0206C110: ; 0x0206C110 + ldr r1, _0206C11C ; =_020B0B70 + strh r0, [r1, #2] + bx lr + .align 2, 0 +_0206C11C: .word _020B0B70 + arm_func_end sub_0206C110 + + arm_func_start sub_0206C120 +sub_0206C120: ; 0x0206C120 + ldr r1, _0206C130 ; =_020B0B70 + ldrsh r1, [r1] + strh r1, [r0] + bx lr + .align 2, 0 +_0206C130: .word _020B0B70 + arm_func_end sub_0206C120 + + arm_func_start sub_0206C134 +sub_0206C134: ; 0x0206C134 + ldr r1, _0206C140 ; =_020B0B70 + strh r0, [r1] + bx lr + .align 2, 0 +_0206C140: .word _020B0B70 + arm_func_end sub_0206C134 + + arm_func_start sub_0206C144 +sub_0206C144: ; 0x0206C144 + ldr r3, _0206C160 ; =_020B0B74 + mov r2, #8 +_0206C14C: + ldrb r1, [r3], #1 + subs r2, r2, #1 + strb r1, [r0], #1 + bne _0206C14C + bx lr + .align 2, 0 +_0206C160: .word _020B0B74 + arm_func_end sub_0206C144 + + arm_func_start sub_0206C164 +sub_0206C164: ; 0x0206C164 + ldr r3, _0206C180 ; =_020B0B74 + mov r2, #8 +_0206C16C: + ldrb r1, [r0], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + bne _0206C16C + bx lr + .align 2, 0 +_0206C180: .word _020B0B74 + arm_func_end sub_0206C164 + + arm_func_start sub_0206C184 +sub_0206C184: ; 0x0206C184 + ldr ip, _0206C198 ; =sub_0207A7EC + mov r0, #0 + mov r2, r1 + sub r1, r0, #1 + bx ip + .align 2, 0 +_0206C198: .word sub_0207A7EC + arm_func_end sub_0206C184 + + arm_func_start sub_0206C19C +sub_0206C19C: ; 0x0206C19C + stmdb sp!, {r4, lr} + mov r4, r1 + mov r0, #0 + mov r2, r4 + sub r1, r0, #1 + bl sub_0207A8F4 + mov r0, r4 + ldmia sp!, {r4, pc} + arm_func_end sub_0206C19C + + arm_func_start sub_0206C1BC +sub_0206C1BC: ; 0x0206C1BC + bx lr + arm_func_end sub_0206C1BC + + arm_func_start DseDriver_LoadDefaultSettings +DseDriver_LoadDefaultSettings: ; 0x0206C1C0 + stmdb sp!, {r4, lr} + ldr r1, _0206C248 ; =DRIVER_WORK + mov r2, #1 + movs r4, r0 + strb r2, [r1, #0x3d] + subeq r0, r2, #0x100 + ldmeqia sp!, {r4, pc} + mov r1, #0x40 + bl DseMem_Clear + mov r0, #0 + str r0, [r4, #4] + str r0, [r4, #8] + str r0, [r4, #0xc] + mov r1, #8 + strb r1, [r4, #0x10] + strb r0, [r4, #0x11] + strh r0, [r4, #0x14] + mov r1, #0xf + strh r1, [r4, #0x16] + mov r1, #0x14 + strb r1, [r4, #0x12] + mov r1, #4 + strh r1, [r4, #0x18] + ldr r2, _0206C24C ; =_0206C184 + strh r1, [r4, #0x1a] + ldr r1, _0206C250 ; =_0206C19C + str r2, [r4, #0x1c] + str r1, [r4, #0x20] + ldr r1, _0206C254 ; =sub_0206C1BC + str r0, [r4, #0x24] + str r1, [r4, #0x28] + str r1, [r4, #0x2c] + str r0, [r4, #0x30] + ldmia sp!, {r4, pc} + .align 2, 0 +_0206C248: .word DRIVER_WORK +_0206C24C: .word sub_0206C184 +_0206C250: .word sub_0206C19C +_0206C254: .word sub_0206C1BC + arm_func_end DseDriver_LoadDefaultSettings + + arm_func_start DseDriver_IsSettingsValid +DseDriver_IsSettingsValid: ; 0x0206C258 + stmdb sp!, {r3, r4, r5, lr} + movs r4, r0 + bne _0206C27C + mov r1, #0 + mov r2, r1 + mvn r0, #0x17 + bl Dse_SetError + mov r0, #2 + ldmia sp!, {r3, r4, r5, pc} +_0206C27C: + tst r4, #3 + beq _0206C29C + mov r1, #0 + mov r2, r1 + mvn r0, #0x17 + bl Dse_SetError + mov r0, #2 + ldmia sp!, {r3, r4, r5, pc} +_0206C29C: + ldr r0, [r4, #8] + mov r5, #0 + cmp r0, #0 + beq _0206C2B4 + tst r0, #0xf + beq _0206C2B8 +_0206C2B4: + orr r5, r5, #4 +_0206C2B8: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _0206C2CC + tst r0, #0xf + beq _0206C2D0 +_0206C2CC: + orr r5, r5, #8 +_0206C2D0: + ldrb r0, [r4, #0x11] + ldrb r1, [r4, #0x10] + cmp r0, #0 + cmpne r0, #1 + orrne r5, r5, #0x100 + cmp r1, #4 + ldrb r0, [r4, #0x12] + orrlo r5, r5, #0x200 + cmp r0, r1 + ldrsh r1, [r4, #0x14] + orrls r5, r5, #0x400 + ldrsh r0, [r4, #0x16] + cmp r1, #0 + orrne r5, r5, #0x4000 + cmp r0, #0x10 + orrge r5, r5, #0x8000 + cmp r1, r0 + orrgt r5, r5, #0xc000 + cmp r5, #0 + beq _0206C330 + mov r1, r5 + mvn r0, #0x17 + mov r2, #0 + bl Dse_SetError +_0206C330: + mov r0, r5 + str r5, [r4] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end DseDriver_IsSettingsValid + + arm_func_start DseDriver_ConfigureHeap +DseDriver_ConfigureHeap: ; 0x0206C33C + stmdb sp!, {r3, lr} + cmp r0, #0 + strne r1, [r0, #8] + strne r2, [r0, #0xc] + movne r0, #0 + ldmneia sp!, {r3, pc} + mov r1, #0 + mov r2, r1 + mvn r0, #0x17 + bl Dse_SetError + mvn r0, #0x17 + ldmia sp!, {r3, pc} + arm_func_end DseDriver_ConfigureHeap + + arm_func_start sub_0206C36C +sub_0206C36C: ; 0x0206C36C + stmdb sp!, {r3, lr} + cmp r0, #0 + strneb r1, [r0, #0x11] + strneb r2, [r0, #0x10] + movne r0, #0 + ldmneia sp!, {r3, pc} + mov r1, #0 + mov r2, r1 + mvn r0, #0x17 + bl Dse_SetError + mvn r0, #0x17 + ldmia sp!, {r3, pc} + arm_func_end sub_0206C36C + + arm_func_start sub_0206C39C +sub_0206C39C: ; 0x0206C39C + stmdb sp!, {r3, lr} + cmp r0, #0 + bne _0206C3C0 + mov r1, #0 + mov r2, r1 + mvn r0, #0x17 + bl Dse_SetError + mvn r0, #0x17 + ldmia sp!, {r3, pc} +_0206C3C0: + cmp r1, #0 + movlt r1, #0 + cmp r2, #0 + strh r1, [r0, #0x14] + movlt r2, #0xf + strh r2, [r0, #0x16] + mov r0, #0 + ldmia sp!, {r3, pc} + arm_func_end sub_0206C39C + + arm_func_start DseDriver_Init +DseDriver_Init: ; 0x0206C3E0 + stmdb sp!, {r4, lr} + ldr r1, _0206C5F8 ; =DRIVER_WORK + mov r4, r0 + ldrsb r1, [r1] + cmp r1, #1 + bne _0206C410 + mov r1, #0 + mov r2, r1 + mvn r0, #0xbf + bl Dse_SetError + mvn r0, #0xbf + ldmia sp!, {r4, pc} +_0206C410: + bl DseDriver_IsSettingsValid + movs r1, r0 + beq _0206C430 + mvn r0, #0x1d + mov r2, #0 + bl Dse_SetError + mvn r0, #0x1d + ldmia sp!, {r4, pc} +_0206C430: + bl sub_0207AD54 + mov r0, #0 + mov r1, r0 + bl sub_0207AEF4 + bl sub_0207AFF0 + ldr r0, _0206C5F8 ; =DRIVER_WORK + mov r3, #0 + strh r3, [r0, #2] + str r3, [r0, #4] + str r3, [r0, #0x10] + mov r2, #0xff + mov r1, #1 + strb r2, [r0, #0x3c] + strb r1, [r0, #0x3d] + rsb r1, r1, #0x1000 + strh r1, [r0, #0x3e] + str r3, [r0, #0x2c] + ldrb r1, [r4, #0x11] + cmp r1, #0 + ldreq r2, _0206C5FC ; =0x00002710 + moveq r1, #0x64 + ldrne r2, _0206C600 ; =0x0000414B + movne r1, #0x3c + strh r2, [r0, #0x28] + str r1, [r0, #0x30] + ldr r2, _0206C604 ; =0x00BC614E + ldr r1, _0206C5F8 ; =DRIVER_WORK + ldr r0, _0206C608 ; =_022B8330 + str r2, [r1, #0x34] + ldrb r1, [r4, #0x11] + strb r1, [r0, #0xdd8] + bl sub_0206C814 + ldr r1, _0206C5F8 ; =DRIVER_WORK + mov r0, #1 + strb r0, [r1, #0x38] + mov r3, #2 + ldr r2, _0206C60C ; =_020B1290 + ldr r0, _0206C608 ; =_022B8330 + strb r3, [r1, #0x39] + str r2, [r0, #0xed4] + mov r2, #0 + str r2, [r1, #0x71c] + str r2, [r1, #0x720] + str r2, [r1, #0x724] + str r2, [r1, #0x728] + ldrb r1, [r4, #0x10] + ldr ip, _0206C610 ; =DRIVER_WORK + mov r3, r2 + strb r1, [r0, #0xd10] +_0206C4F4: + add r2, r2, #1 + strb r3, [ip, #0x674] + cmp r2, #0x80 + add ip, ip, #1 + blt _0206C4F4 + ldr ip, _0206C5F8 ; =DRIVER_WORK + mov r0, #0x64 + strb r0, [ip, #0x67b] + mov r0, #0x7f + strb r0, [ip, #0x67f] + mov r0, #0x40 + strb r0, [ip, #0x67e] + add r0, r4, #0x28 + ldr lr, _0206C614 ; =_022B734C + ldmia r0, {r0, r1, r2} + stmia lr, {r0, r1, r2} + ldrsh ip, [ip, #0x28] + ldr r1, _0206C608 ; =_022B8330 + mov r2, #1 + str r3, [r1, #0xec8] + str r2, [r1, #0xecc] + str r3, [r1, #0xebc] + ldr r0, _0206C618 ; =_022B9130 + str r3, [r1, #0xec0] + sub r2, r2, #2 + strh r2, [r0, #0xc4] + strh ip, [r0, #0xc6] + strb r3, [r1, #0xed0] + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + add r2, r4, #0x1c + bl DseMem_Init + ldrsh r0, [r4, #0x16] + add r0, r0, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl DseVoice_ResetHW + bl DseVoice_ResetAll + bl sub_02070124 + bl sub_02075600 + bl sub_020729A4 + ldr r1, _0206C61C ; =_022B7331 + mov r2, #1 + mov r0, #0x7f +_0206C5A4: + add r2, r2, #1 + strb r0, [r1, #0x40] + cmp r2, #0x10 + add r1, r1, #1 + blt _0206C5A4 + ldr r0, _0206C5F8 ; =DRIVER_WORK + mov r1, #0 + strb r1, [r0, #0x40] + bl DseDriver_StartMainThread + ldrb r0, [r4, #0x12] + bl DseSwd_SysInit + ldr r0, _0206C5F8 ; =DRIVER_WORK + mov r1, #1 + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + ldrh r0, [r4, #0x18] + ldrh r1, [r4, #0x1a] + bl DseSe_SysReset + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0206C5F8: .word DRIVER_WORK +_0206C5FC: .word 0x00002710 +_0206C600: .word 0x0000414B +_0206C604: .word 0x00BC614E +_0206C608: .word _022B8330 +_0206C60C: .word _020B1290 +_0206C610: .word DRIVER_WORK +_0206C614: .word _022B734C +_0206C618: .word _022B9130 +_0206C61C: .word _022B7331 + arm_func_end DseDriver_Init + + arm_func_start sub_0206C620 +sub_0206C620: ; 0x0206C620 + stmdb sp!, {r3, lr} + ldr r0, _0206C684 ; =DRIVER_WORK + ldrsb r0, [r0] + cmp r0, #0 + mvneq r0, #0xc0 + ldmeqia sp!, {r3, pc} + bl DseSwd_SysQuit + mov r0, #0 + bl sub_0206C7F4 + bl sub_020756E8 + bl sub_02070158 + bl sub_02070148 + bl sub_02070EA0 + bl DseVoice_ResetAll + bl DseMem_Quit + bl sub_0206C814 + ldr r1, _0206C684 ; =DRIVER_WORK + mov r0, #0 + strb r0, [r1] + strb r0, [r1, #1] + str r0, [r1, #0x2c] + str r0, [r1, #4] + str r0, [r1, #0x10] + strh r0, [r1, #2] + ldmia sp!, {r3, pc} + .align 2, 0 +_0206C684: .word DRIVER_WORK + arm_func_end sub_0206C620 + + arm_func_start sub_0206C688 +sub_0206C688: ; 0x0206C688 + stmdb sp!, {r3, lr} + ldr r0, _0206C6B8 ; =DRIVER_WORK + ldrsb r1, [r0] + cmp r1, #0 + ldrnesb r0, [r0, #1] + ldmneia sp!, {r3, pc} + mov r1, #0 + mov r2, r1 + mvn r0, #0xc0 + bl Dse_SetError + mvn r0, #0xc0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0206C6B8: .word DRIVER_WORK + arm_func_end sub_0206C688 + + arm_func_start sub_0206C6BC +sub_0206C6BC: ; 0x0206C6BC + stmdb sp!, {r3, lr} + ldr r0, _0206C750 ; =DRIVER_WORK + ldrsb r1, [r0] + cmp r1, #0 + bne _0206C6E8 + mov r1, #0 + mov r2, r1 + mvn r0, #0xc0 + bl Dse_SetError + mvn r0, #0xc0 + ldmia sp!, {r3, pc} +_0206C6E8: + ldrsb r1, [r0, #1] + cmp r1, #1 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + mov r1, #1 + strb r1, [r0, #1] + bl sub_02070F4C + ldr r0, _0206C750 ; =DRIVER_WORK + mov r1, #0 + ldr r0, [r0, #0x664] + bl DseSequence_PauseList + ldr r0, _0206C750 ; =DRIVER_WORK + mov r1, #0 + ldr r0, [r0, #0x668] + bl DseSequence_PauseList + mov r0, #0 + bl sub_0206F6FC + mov r0, #0 + bl sub_02070188 + mov r0, #0 + bl DseVoice_ResetHW + ldr r0, _0206C750 ; =DRIVER_WORK + mov r1, #2 + strb r1, [r0, #0x38] + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0206C750: .word DRIVER_WORK + arm_func_end sub_0206C6BC + + arm_func_start sub_0206C754 +sub_0206C754: ; 0x0206C754 + stmdb sp!, {r4, lr} + ldr r1, _0206C7F0 ; =DRIVER_WORK + mov r4, r0 + ldrsb r0, [r1, #1] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + mov r2, #1 + strb r2, [r1, #0x38] + ldrh r0, [r1, #0x3e] + mov r1, r4 + tst r0, #0xf + ldr r0, _0206C7F0 ; =DRIVER_WORK + moveq r2, #0 + mov r2, r2, lsl #0x18 + ldr r0, [r0, #0x664] + mov r2, r2, asr #0x18 + bl sub_0206DC78 + ldr r0, _0206C7F0 ; =DRIVER_WORK + ldrh r0, [r0, #0x3e] + tst r0, #0xf0 + movne r1, #1 + ldr r0, _0206C7F0 ; =DRIVER_WORK + moveq r1, #0 + mov r2, r1, lsl #0x18 + ldr r0, [r0, #0x668] + mov r1, r4 + mov r2, r2, asr #0x18 + bl sub_0206DC78 + mov r0, r4 + bl sub_0206F774 + mov r0, r4 + bl sub_020701B0 + ldr r0, _0206C7F0 ; =DRIVER_WORK + mov r1, #0 + strb r1, [r0, #1] + bl DseDriver_StartTickTimer + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0206C7F0: .word DRIVER_WORK + arm_func_end sub_0206C754 + + arm_func_start sub_0206C7F4 +sub_0206C7F4: ; 0x0206C7F4 + stmdb sp!, {r4, lr} + mov r4, r0 + bl DseBgm_StopAll + mov r0, r4 + bl DseSe_StopAll + mov r0, r4 + bl sub_0206F9A4 + ldmia sp!, {r4, pc} + arm_func_end sub_0206C7F4 + + arm_func_start sub_0206C814 +sub_0206C814: ; 0x0206C814 + ldr r1, _0206C848 ; =DRIVER_WORK + mov r2, #0 + str r2, [r1, #0x654] + str r2, [r1, #0x658] + ldr r0, _0206C84C ; =_022B8330 + str r2, [r1, #0x65c] + str r2, [r0, #0xddc] + str r2, [r1, #0x660] + str r2, [r1, #0x664] + str r2, [r1, #0x668] + ldr ip, _0206C850 ; =DseBgm_SysSetupNoteList + str r2, [r1, #0x66c] + bx ip + .align 2, 0 +_0206C848: .word DRIVER_WORK +_0206C84C: .word _022B8330 +_0206C850: .word DseBgm_SysSetupNoteList + arm_func_end sub_0206C814 + + arm_func_start Dse_SetError +Dse_SetError: ; 0x0206C854 + stmdb sp!, {r3, lr} + ldr r3, _0206C880 ; =DRIVER_WORK + stmib r3, {r0, r1, r2} + ldr ip, [r3, #0x1c] + cmp ip, #0 + ldmeqia sp!, {r3, pc} + mov r1, #0 + ldr r2, _0206C884 ; =_022B7334 + mov r3, r1 + blx ip + ldmia sp!, {r3, pc} + .align 2, 0 +_0206C880: .word DRIVER_WORK +_0206C884: .word _022B7334 + arm_func_end Dse_SetError + + arm_func_start Dse_SetError2 +Dse_SetError2: ; 0x0206C888 + stmdb sp!, {r3, lr} + ldr r3, _0206C8BC ; =DRIVER_WORK + str r0, [r3, #0x10] + str r1, [r3, #0x14] + str r2, [r3, #0x18] + ldr ip, [r3, #0x20] + cmp ip, #0 + ldmeqia sp!, {r3, pc} + mov r1, #0 + ldr r2, _0206C8C0 ; =_022B7340 + mov r3, r1 + blx ip + ldmia sp!, {r3, pc} + .align 2, 0 +_0206C8BC: .word DRIVER_WORK +_0206C8C0: .word _022B7340 + arm_func_end Dse_SetError2 + +; https://decomp.me/scratch/C4osO + arm_func_start DseUtil_ByteSwap32 +DseUtil_ByteSwap32: ; 0x0206C8C4 + mov r3, r0, lsr #0x18 + mov r2, r0, lsr #8 + mov r1, r0, lsl #8 + mov r0, r0, lsl #0x18 + and r3, r3, #0xff + and r2, r2, #0xff00 + orr r2, r3, r2 + and r1, r1, #0xff0000 + orr r1, r2, r1 + and r0, r0, #0xff000000 + orr r0, r1, r0 + bx lr + arm_func_end DseUtil_ByteSwap32 + + arm_func_start DseUtil_GetRandomNumber +DseUtil_GetRandomNumber: ; 0x0206C8F4 + ldr r1, _0206C914 ; =DRIVER_WORK + ldr r0, _0206C918 ; =0x00007FFF + ldr r2, [r1, #0x34] + eor r2, r2, r2, lsl #17 + eor r2, r2, r2, asr #15 + str r2, [r1, #0x34] + and r0, r2, r0 + bx lr + .align 2, 0 +_0206C914: .word DRIVER_WORK +_0206C918: .word 0x00007FFF + arm_func_end DseUtil_GetRandomNumber + +; https://decomp.me/scratch/KrgBG + arm_func_start DseMem_Init +DseMem_Init: ; 0x0206C91C + mov ip, r1 + tst r0, #0xf + bicne r0, r0, #0xf + ldr r1, _0206C980 ; =DRIVER_WORK + addne r0, r0, #0x10 + subne ip, ip, #0x10 + add r3, r0, ip + str r0, [r1, #0x6f4] + str r3, [r1, #0x6f8] + str ip, [r1, #0x6fc] + ldr r3, _0206C984 ; =0x74647373 + mov r1, #0x82 + str r3, [r0] + strb r1, [r0, #4] + mov r3, #0 + strb r3, [r0, #5] + add r1, r0, #0x10 + str r1, [r0, #8] + str r3, [r0, #0xc] + strb r3, [r0, #6] + ldr r3, _0206C988 ; =_022B7A30 + ldmia r2, {r0, r1, r2} + stmia r3, {r0, r1, r2} + mov r0, ip + bx lr + .align 2, 0 +_0206C980: .word DRIVER_WORK +_0206C984: .word 0x74647373 +_0206C988: .word _022B7A30 + arm_func_end DseMem_Init diff --git a/asm/overlay_09.s b/asm/overlay_09.s index d6db4aa9..f90dba46 100644 --- a/asm/overlay_09.s +++ b/asm/overlay_09.s @@ -104,6 +104,7 @@ _0233CBC4: .word 0x000004FD #endif arm_func_end ov09_0233CA80 +; https://decomp.me/scratch/Uyfr0 arm_func_start ov09_0233CBC8 ov09_0233CBC8: ; 0x0233CBC8 stmdb sp!, {r3, lr} diff --git a/asm/overlay_29_02302A5C.s b/asm/overlay_29_02302A5C.s index 34f19702..b8cf5f2b 100644 --- a/asm/overlay_29_02302A5C.s +++ b/asm/overlay_29_02302A5C.s @@ -1093,6 +1093,7 @@ _023038D0: .word 0x00000F25 #endif arm_func_end ov29_023034E0 +; https://decomp.me/scratch/wws4M arm_func_start DungeonTmLearnMove DungeonTmLearnMove: ; 0x023038D4 #ifdef JAPAN diff --git a/include/adventure_log.h b/include/adventure_log.h new file mode 100644 index 00000000..0ae0f5bf --- /dev/null +++ b/include/adventure_log.h @@ -0,0 +1,32 @@ +#ifndef PMDSKY_ADVENTURE_LOG_H +#define PMDSKY_ADVENTURE_LOG_H + +#include "dungeon.h" + +// The adventure log structure. +struct adventure_log { + u32 completion_flags[4]; // 0x0 + u32 nb_dungeons_cleared; // 0x10 + u32 nb_friend_rescues; // 0x14 + u32 nb_evolutions; // 0x18 + u32 nb_eggs_hatched; // 0x1C + u32 successful_steals; // 0x20: Unused in Sky + u32 nb_faints; // 0x24 + u32 nb_victories_on_one_floor; // 0x28 + u32 pokemon_joined_counter; // 0x2C + u32 pokemon_battled_counter; // 0x30 + u32 moves_learned_counter; // 0x34 + u32 nb_big_treasure_wins; // 0x38 + u32 nb_recycled; // 0x3C + u32 nb_gifts_sent; // 0x40 + u32 pokemon_joined_flags[37]; // 0x44 + u32 pokemon_battled_flags[37]; // 0xD8 + u32 moves_learned_flags[17]; // 0x16C + u32 items_acquired_flags[44]; // 0x1B0 + u32 special_challenge_flags; // 0x260 + u32 sentry_duty_game_points[5]; // 0x264 + struct dungeon_floor_pair current_floor; // 0x278 + u16 padding; // 0x27A +}; + +#endif //PMDSKY_ADVENTURE_LOG_H diff --git a/include/dungeon.h b/include/dungeon.h index b21da84b..38b1409d 100644 --- a/include/dungeon.h +++ b/include/dungeon.h @@ -1846,4 +1846,10 @@ struct dungeon_restriction { s16 random_movement_chance; }; +// A common structure for pairs of dungeon/floor values +struct dungeon_floor_pair { + u8 dungeon_id; + u8 floor_id; +}; + #endif // PMDSKY_DUNGEON_H diff --git a/include/main_0204F050.h b/include/main_0204F050.h new file mode 100644 index 00000000..a3053b2f --- /dev/null +++ b/include/main_0204F050.h @@ -0,0 +1,6 @@ +#ifndef PMDSKY_MAIN_0204F050_H +#define PMDSKY_MAIN_0204F050_H + +s16 sub_0204F050(); + +#endif //PMDSKY_MAIN_0204F050_H diff --git a/include/main_0204FDFC.h b/include/main_0204FDFC.h new file mode 100644 index 00000000..ebda2140 --- /dev/null +++ b/include/main_0204FDFC.h @@ -0,0 +1,7 @@ +#ifndef PMDSKY_MAIN_0204FDFC_H +#define PMDSKY_MAIN_0204FDFC_H + +// Marks one Pokémon as joined. +void SetPokemonJoined(u32 monster_id); + +#endif //PMDSKY_MAIN_0204FDFC_H diff --git a/include/main_02051FF0.h b/include/main_02051FF0.h new file mode 100644 index 00000000..a3cab832 --- /dev/null +++ b/include/main_02051FF0.h @@ -0,0 +1,6 @@ +#ifndef PMDSKY_MAIN_02051FF0_H +#define PMDSKY_MAIN_02051FF0_H + +s32 sub_02051FF0(u32 fileId, void **outPtr, s32 param2); + +#endif //PMDSKY_MAIN_02051FF0_H diff --git a/include/main_0206A84C.h b/include/main_0206A84C.h new file mode 100644 index 00000000..3e8f09a5 --- /dev/null +++ b/include/main_0206A84C.h @@ -0,0 +1,6 @@ +#ifndef PMDSKY_MAIN_0206A84C_H +#define PMDSKY_MAIN_0206A84C_H + +s16 sub_0206A84C(u32 arg0); + +#endif //PMDSKY_MAIN_0206A84C_H diff --git a/main.lsf b/main.lsf index 4bc5953b..93a98975 100644 --- a/main.lsf +++ b/main.lsf @@ -90,6 +90,10 @@ Static main Object asm/main_0204DE7C.o Object src/dungeon_init.o Object asm/main_0204EFE0.o + Object src/main_0204F050.o + Object asm/main_0204F0A0.o + Object src/main_0204FDFC.o + Object asm/main_0204FE58.o Object src/number_util.o Object asm/main_02051098.o Object src/dungeon_recruitment_2.o @@ -106,6 +110,8 @@ Static main Object asm/main_rodata_020A20B1.o Object src/main_020517D4.o Object asm/main_020517F4.o + Object src/main_02051FF0.o + Object asm/main_02052060.o Object src/main_020526EC.o Object src/get_category_string.o Object src/main_020527A8.o @@ -183,6 +189,8 @@ Static main Object asm/main_0205EDA4.o Object src/dungeon_init_2.o Object asm/main_0206A750.o + Object src/main_0206A84C.o + Object asm/main_0206A878.o Object src/main_0206C98C.o Object asm/main_0206C9BC.o Object lib/DSE/src/main_02071A98.o diff --git a/src/main_0204F050.c b/src/main_0204F050.c new file mode 100644 index 00000000..d7baeab0 --- /dev/null +++ b/src/main_0204F050.c @@ -0,0 +1,19 @@ +#include "main_0204F050.h" +#include "script_variable.h" + +s16 sub_0204F050(void) +{ + s16 dungeon_enter = LoadScriptVariableValue(NULL, VAR_DUNGEON_ENTER); + + if (dungeon_enter == -1 || dungeon_enter == DUNGEON_JOINED_AT_QUESTION_MARKS) + return dungeon_enter; + + // What is going on here? + if (dungeon_enter == DUNGEON_BEACH + && dungeon_enter == DUNGEON_JOINED_AT_BIDOOF + && dungeon_enter == DUNGEON_JOINED_AT_UNKNOWN) + return dungeon_enter; + + // VAR_DUNGEON_ENTER_INDEX holds the ID of the dungeon being entered + return LoadScriptVariableValue(NULL, VAR_DUNGEON_ENTER_INDEX); +} diff --git a/src/main_0204FDFC.c b/src/main_0204FDFC.c new file mode 100644 index 00000000..b1ef50a8 --- /dev/null +++ b/src/main_0204FDFC.c @@ -0,0 +1,19 @@ +#include "main_0204FDFC.h" +#include "adventure_log.h" + +extern struct adventure_log* ADVENTURE_LOG_PTR; + +extern s32 GetDexNumberVeneer(); + +void SetPokemonJoined(u32 monster_id) +{ + s32 dex_num = GetDexNumberVeneer(monster_id); + if (dex_num == 0) return; + + ADVENTURE_LOG_PTR->completion_flags[0] |= 1; + + u32 word = dex_num / 32; // dex_num / 32 + u32 bit = dex_num % 32; // dex_num % 32 + + ADVENTURE_LOG_PTR->pokemon_joined_flags[word] |= (1 << bit); +} diff --git a/src/main_02051FF0.c b/src/main_02051FF0.c new file mode 100644 index 00000000..6b75ede9 --- /dev/null +++ b/src/main_02051FF0.c @@ -0,0 +1,30 @@ +#include "main_02051FF0.h" +#include "main_02008BD4.h" + +extern void LoadFileFromRom(struct iovec *handle, u32 fileId, s32 param2); +extern s32 GetAtSize(void *data); +extern void *MemAlloc(u32 size, u32 heapId); +extern void DecompressAtNormalVeneer(void *dest, u32 size, void *src); + +s32 sub_02051FF0(u32 fileId, void **outPtr, s32 param2) +{ + struct iovec handle; + + LoadFileFromRom(&handle, fileId, param2); + + s32 size = GetAtSize(handle.iov_base); + + if (size <= 0) { + *outPtr = handle.iov_base; + size = handle.iov_len; + } else { + void *dest = MemAlloc((u32)size, 0); + + DecompressAtNormalVeneer(dest, (u32)size, handle.iov_base); + *outPtr = dest; + size = ((s32 *)dest)[3]; + UnloadFile(&handle); + } + + return size; +} diff --git a/src/main_0206A84C.c b/src/main_0206A84C.c new file mode 100644 index 00000000..2faf016a --- /dev/null +++ b/src/main_0206A84C.c @@ -0,0 +1,12 @@ +#include "main_0206A84C.h" + +s16 sub_0206A84C(u32 arg0) +{ + if (arg0 < 0xB4U) + return (s16) (arg0 + 1); + + if ((arg0 >= 0xB4U) && (arg0 <= 0xD3U)) + return 0xB8; + + return -1; +}