From a4ecf5e46b9a0a84198ccf8f9ca0e7790745fe9d Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Sun, 15 Jun 2025 17:31:53 -0500 Subject: [PATCH 1/7] Decomp ov29_0234BBE8 Decomped by ElectricGeorge --- asm/include/overlay_29_023498A0.inc | 182 +-- asm/include/overlay_29_0234BEE0.inc | 151 +++ asm/overlay_29_022DEADC.s | 1 + asm/overlay_29_023498A0.s | 1887 --------------------------- asm/overlay_29_0234BEE0.s | 1681 ++++++++++++++++++++++++ include/overlay_29_0234BBE8.h | 6 + main.lsf | 2 + src/overlay_29_0234BBE8.c | 175 +++ 8 files changed, 2028 insertions(+), 2057 deletions(-) create mode 100644 asm/include/overlay_29_0234BEE0.inc create mode 100644 asm/overlay_29_0234BEE0.s create mode 100644 include/overlay_29_0234BBE8.h create mode 100644 src/overlay_29_0234BBE8.c diff --git a/asm/include/overlay_29_023498A0.inc b/asm/include/overlay_29_023498A0.inc index 6bae8de4..3bcedf56 100644 --- a/asm/include/overlay_29_023498A0.inc +++ b/asm/include/overlay_29_023498A0.inc @@ -7,26 +7,16 @@ .public ChangeDungeonMusic .public CloseAlertBox .public CreateAlertBox -.public Debug_Print0 -.public DisplayMessageInternal -.public DUNGEON_FADES_PTR .public DUNGEON_PTR -.public DungeonAlloc -.public DungeonFree +.public DisplayMessage +.public DisplayMessage2 .public DungeonRandInt -.public DungeonZInit .public EndNegativeStatusConditionWrapper .public EntityIsValid__0234987C .public FemaleToMaleForm -.public FixedRoomIsSubstituteRoom -.public G3X_Reset .public GetAcceptedMission -.public GetDungeonPtrMaster -.public GetDungeonTipShown .public GetEvoParameters .public GetForcedLossReason -.public GetGameMode -.public GetItemCategoryVeneer .public GetItemToDeliver .public GetItemToRetrieve .public GetLeader @@ -35,9 +25,6 @@ .public GetMonsterGenderVeneer .public GetMonsterPreEvolution .public GetName -.public GetPerformanceFlagWithChecks -.public GetPlayerGender -.public GetRandomExplorerMazeMonster .public GetRandomSpawnMonsterID .public GetSecondFormIfValid .public GetSpecialTargetItem @@ -45,7 +32,6 @@ .public HandleFaint .public InitPortraitParams .public InitPreprocessorArgs -.public InitRender3dElement64 .public IsAlertBoxActive .public IsCastform .public IsCherrim @@ -55,73 +41,42 @@ .public IsDestinationFloorWithFleeingOutlaw .public IsDestinationFloorWithHiddenOutlaw .public IsExperienceLocked -.public IsFullFloorFixedRoom -.public IsFutureDungeon .public IsJirachiChallengeFloor -.public IsMonster__0234D460 -.public IsSecretFloor .public ItemZInit -.public LoadOverlay -.public LoadScriptVariableValue .public MemAlloc .public MemFree .public MemZero .public MusicTableIdxToMusicId -.public ov10_022BF764 -.public ov10_022BF7D4 +.public PositionIsOnStairs +.public PreprocessString +.public RemoveEmptyItemsInBagWrapper +.public RemoveGroundItem +.public SetPortraitLayout +.public ShouldDisplayEntityWrapper +.public ShouldMonsterHeadToStairs +.public StringFromId +.public SubstitutePlaceholderStringTags +.public YesNoMenu .public ov10_022BFD20 -.public ov29_022DC61C -.public ov29_022DC65C -.public ov29_022DC670 -.public ov29_022DDC00 -.public ov29_022DDCA0 -.public ov29_022DDD50 -.public ov29_022DDDA4 -.public ov29_022DDE00 -.public ov29_022DDE24 -.public ov29_022DDEF8 -.public ov29_022DDFF0 -.public ov29_022DDFFC -.public ov29_022DE0A0 -.public ov29_022DE0CC -.public ov29_022DE300 -.public ov29_022DE418 -.public ov29_022DE498 -.public ov29_022DE868 -.public ov29_022DEBA4 -.public ov29_022DEBB0 .public ov29_022E09E8 -.public ov29_022E0A64 .public ov29_022E0B60 -.public ov29_022E0CFC -.public ov29_022E0E8C -.public ov29_022E0F14 .public ov29_022E2CA0 .public ov29_022E550C .public ov29_022E68F0 -.public ov29_022E6DD0 .public ov29_022E8244 -.public ov29_022E9F9C .public ov29_022E9FC0 -.public ov29_022EA008 .public ov29_022EA428 .public ov29_022EAC8C -.public ov29_022EACBC .public ov29_022EACE4 .public ov29_022EAEFC .public ov29_022EAF34 -.public ov29_022EAFB0 .public ov29_022F2FE4 .public ov29_022FA3D4 .public ov29_022FBA54 .public ov29_022FBBEC .public ov29_023009CC .public ov29_02300B04 -.public ov29_0231ADA8 .public ov29_0231AF24 -.public ov29_02337EE8 -.public ov29_0233804C -.public ov29_0233992C .public ov29_0233A248 .public ov29_02344B44 .public ov29_02344B9C @@ -129,126 +84,23 @@ .public ov29_02348A18 .public ov29_023491B8 .public ov29_023496B0 -.public ov29_0234D558 -.public ov29_0234D5D0 .public ov29_0234D630 .public ov29_0234D70C .public ov29_0234D838 .public ov29_0234D8A0 .public ov29_02353214 -.public ov29_02353238 -.public ov29_02353240 -.public ov29_02353248 -.public ov29_02353250 -.public ov29_02353258 -.public ov29_02353260 -.public ov29_02353268 -.public ov29_02353270 -.public ov29_02353278 -.public ov29_02353280 -.public ov29_02353288 -.public ov29_02353290 -.public ov29_02353298 -.public ov29_023532A0 -.public ov29_023532A8 -.public ov29_023532B0 -.public ov29_023532B8 -.public ov29_023532C0 -.public ov29_023532C8 -.public ov29_023532D8 -.public ov29_023532E0 -.public ov29_023532E8 -.public ov29_023532F0 -.public ov29_023532F8 -.public ov29_02353300 -.public ov29_02353308 -.public ov29_02353310 -.public ov29_02353368 -.public ov29_02353380 -.public ov29_0235352C -.public ov29_02353563 .public ov29_023537C8 .public ov29_023537CC -.public ov29_023537D8 -.public ov29_023537E4 -.public ov29_023537E8 .public ov29_0237C694 -.public ov29_0237D000 -.public ov30_02382820 -.public ov30_02382874 -.public ov30_0238298C -.public ov30_023829A0 -.public ov30_023829CC -.public ov30_02382A34 -.public ov30_02382C30 -.public ov30_023842F4 -.public OverlayIsLoaded -.public PositionIsOnStairs -.public PreprocessString -.public RemoveEmptyItemsInBagWrapper -.public RemoveGroundItem -.public RunDungeon -.public SetAdventureLogDungeonFloor -.public SetBothScreensWindowsColor -.public SetDungeonTipShown -.public SetPortraitLayout -.public ShouldDisplayEntityWrapper -.public ShouldMonsterHeadToStairs -.public StringFromId .public strlen .public strncmp .public strncpy .public sub_02001808 -.public sub_0200383C -.public sub_020038D8 -.public sub_020038E8 -.public sub_02003990 -.public sub_020039E4 -.public sub_02003A40 -.public sub_02006EC4 -.public sub_02008ED0 -.public sub_02008F3C -.public sub_02008F84 -.public sub_02008F88 -.public sub_02009120 -.public sub_02009194 -.public sub_020091B0 -.public sub_020091CC -.public sub_020091F8 -.public sub_020093BC -.public sub_02009514 -.public sub_0200B330 -.public sub_0200B3D4 -.public sub_02017A68 -.public sub_02017A80 -.public sub_02017B70 -.public sub_02017BEC .public sub_02017C10 -.public sub_0201BE28 -.public sub_0201BE5C -.public sub_0201BE84 -.public sub_0201BF4C -.public sub_0201BF64 -.public sub_0201D7E0 -.public sub_0201D804 -.public sub_0201DDFC -.public sub_0201DE10 -.public sub_0201F2A0 -.public sub_0201F464 .public sub_02024FB8 -.public sub_02025784 -.public sub_02027148 -.public sub_0202715C .public sub_0202836C -.public sub_02028848 -.public sub_02028A64 -.public sub_02028E2C -.public sub_02028E40 -.public sub_02028E88 .public sub_0203010C .public sub_02030214 -.public sub_02034710 -.public sub_02034A80 .public sub_02047FFC .public sub_0204804C .public sub_020480CC @@ -257,13 +109,3 @@ .public sub_02048240 .public sub_0204833C .public sub_02048360 -.public sub_02048DC4 -.public sub_0204AFF8 -.public sub_0204F9CC -.public sub_02051DD0 -.public sub_02051E60 -.public sub_0205BAB0 -.public SubstitutePlaceholderStringTags -.public UnloadOverlay -.public WriteQuicksaveData -.public YesNoMenu diff --git a/asm/include/overlay_29_0234BEE0.inc b/asm/include/overlay_29_0234BEE0.inc new file mode 100644 index 00000000..72bf3773 --- /dev/null +++ b/asm/include/overlay_29_0234BEE0.inc @@ -0,0 +1,151 @@ +#pragma once +.public AdvanceFrame +.public DUNGEON_FADES_PTR +.public DUNGEON_PTR +.public Debug_Print0 +.public DisplayMessageInternal +.public DungeonAlloc +.public DungeonFree +.public DungeonZInit +.public FixedRoomIsSubstituteRoom +.public G3X_Reset +.public GetDungeonTipShown +.public GetGameMode +.public GetItemCategoryVeneer +.public GetLeader +.public GetPerformanceFlagWithChecks +.public GetPlayerGender +.public GetRandomExplorerMazeMonster +.public InitRender3dElement64 +.public IsFullFloorFixedRoom +.public IsFutureDungeon +.public IsMonster__0234D460 +.public IsSecretFloor +.public LoadOverlay +.public LoadScriptVariableValue +.public LogMessageByIdQuiet +.public MemAlloc +.public MemFree +.public MemZero +.public OverlayIsLoaded +.public SetBothScreensWindowsColor +.public SetDungeonTipShown +.public StringFromId +.public UnloadOverlay +.public WriteQuicksaveData +.public ov10_022BF764 +.public ov10_022BF7D4 +.public ov29_022DC670 +.public ov29_022DDC00 +.public ov29_022DDCA0 +.public ov29_022DDD50 +.public ov29_022DDDA4 +.public ov29_022DDE24 +.public ov29_022DDFF0 +.public ov29_022DDFFC +.public ov29_022DE0A0 +.public ov29_022DE0CC +.public ov29_022DE300 +.public ov29_022DE498 +.public ov29_022DE868 +.public ov29_022E0A64 +.public ov29_022E0CFC +.public ov29_022E0E8C +.public ov29_022E0F14 +.public ov29_022E6DD0 +.public ov29_022E9F9C +.public ov29_022EA008 +.public ov29_022EA428 +.public ov29_022EACBC +.public ov29_022EAFB0 +.public ov29_0231ADA8 +.public ov29_02337EE8 +.public ov29_0233804C +.public ov29_0233992C +.public ov29_0234B034 +.public ov29_0234BA54 +.public ov29_0234BBDC +.public ov29_0234BBE8 +.public ov29_0234D558 +.public ov29_0234D5D0 +.public ov29_02353238 +.public ov29_02353240 +.public ov29_02353248 +.public ov29_02353250 +.public ov29_02353258 +.public ov29_02353260 +.public ov29_02353268 +.public ov29_02353270 +.public ov29_02353278 +.public ov29_02353280 +.public ov29_02353288 +.public ov29_02353290 +.public ov29_02353298 +.public ov29_023532A0 +.public ov29_023532A8 +.public ov29_023532B0 +.public ov29_023532B8 +.public ov29_023532C0 +.public ov29_023532C8 +.public ov29_023532D8 +.public ov29_023532E0 +.public ov29_023532E8 +.public ov29_023532F0 +.public ov29_023532F8 +.public ov29_02353300 +.public ov29_02353308 +.public ov29_02353310 +.public ov29_02353368 +.public ov29_02353380 +.public ov29_0235352C +.public ov29_02353563 +.public ov29_023537D8 +.public ov29_023537E4 +.public ov29_023537E8 +.public ov29_0237D000 +.public ov30_02382A34 +.public ov30_023842F4 +.public sub_0200383C +.public sub_020038D8 +.public sub_020038E8 +.public sub_02003990 +.public sub_020039E4 +.public sub_02003A40 +.public sub_02006EC4 +.public sub_02008ED0 +.public sub_02008F3C +.public sub_02008F84 +.public sub_02008F88 +.public sub_02009120 +.public sub_020091CC +.public sub_020091F8 +.public sub_020093BC +.public sub_02009514 +.public sub_0200B330 +.public sub_0200B3D4 +.public sub_02017A68 +.public sub_02017A80 +.public sub_02017B70 +.public sub_02017BEC +.public sub_0201BE28 +.public sub_0201BE5C +.public sub_0201BE84 +.public sub_0201BF4C +.public sub_0201BF64 +.public sub_0201D7E0 +.public sub_0201D804 +.public sub_0201DDFC +.public sub_0201DE10 +.public sub_0201F2A0 +.public sub_0201F464 +.public sub_02025784 +.public sub_02027148 +.public sub_0202715C +.public sub_02028848 +.public sub_02028A64 +.public sub_02028E2C +.public sub_02028E40 +.public sub_02028E88 +.public sub_02034710 +.public sub_02034A80 +.public sub_0204F9CC diff --git a/asm/overlay_29_022DEADC.s b/asm/overlay_29_022DEADC.s index d40b7a23..4780d8f6 100644 --- a/asm/overlay_29_022DEADC.s +++ b/asm/overlay_29_022DEADC.s @@ -316,6 +316,7 @@ _022DEF30: .word 0x000003E7 _022DEF34: .word FIXED_ROOM_REVISIT_OVERRIDES arm_func_end ov29_022DEBBC +; https://decomp.me/scratch/7xQSQ arm_func_start RunDungeon RunDungeon: ; 0x022DEF38 #ifdef JAPAN diff --git a/asm/overlay_29_023498A0.s b/asm/overlay_29_023498A0.s index 36f52d5d..5cb20ca3 100644 --- a/asm/overlay_29_023498A0.s +++ b/asm/overlay_29_023498A0.s @@ -2879,1890 +2879,3 @@ ov29_0234BBDC: ; 0x0234BBDC .align 2, 0 _0234BBE4: .word ov29_022E0B60 arm_func_end ov29_0234BBDC - - arm_func_start ov29_0234BBE8 -ov29_0234BBE8: ; 0x0234BBE8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r0, _0234BED4 ; =ov29_023537D8 - mov sl, #0 - ldr r6, [r0, #4] - bl ov29_022DC61C - ldrb r0, [r6, #0x14] - cmp r0, #0 - beq _0234BC8C - bl ov29_022DEBA4 - bl ov29_0234CB00 - bl ov29_0234CA68 - mov r5, r0 - bl ov29_0234CA7C - mov r4, r0 - bl sub_0204AFF8 - mov r2, r0 - mov r1, r4 - mov r0, r5 - bl ov30_02382820 - b _0234BC3C -_0234BC38: - bl ov29_022DDEF8 -_0234BC3C: - bl ov30_02382874 - cmp r0, #0 - bne _0234BC38 - bl ov30_0238298C - mov r4, r0 - bl ov30_023829A0 - cmp r4, #0 - beq _0234BC68 - ldr r0, _0234BED8 ; =0x000F1208 - bl sub_02048DC4 - b _0234BC70 -_0234BC68: - ldr r0, _0234BEDC ; =0x000F1209 - bl sub_02048DC4 -_0234BC70: - bl ov29_022DEBB0 - cmp r4, #0 - bne _0234BC8C - mov r0, #5 - str r0, [r6, #0xc0] - mov sl, #1 - bl ov29_022DDEF8 -_0234BC8C: - mov sb, #1 - mov r8, #0 - mov r7, r8 - mov r6, sb - mov r5, sb - mov fp, r8 - ldr r4, _0234BED4 ; =ov29_023537D8 - b _0234BD70 -_0234BCAC: - bl ov29_022DDEF8 - ldrb r0, [r4] - cmp r0, #0 - bne _0234BD70 - ldr r0, [r4, #4] - ldr r0, [r0, #8] - cmp r0, #1 - beq _0234BCD8 - cmp r0, #2 - moveq sl, #1 - b _0234BD70 -_0234BCD8: - mov r0, #0 - mov r1, r0 - bl sub_02051DD0 - mov r0, sb - mov r1, r8 - bl sub_02051DD0 - mov r0, r7 - mov r1, r6 - bl sub_02051DD0 - mov r0, #1 - mov r1, r0 - bl sub_02051DD0 - mov r0, #0 - mov r1, r0 - bl sub_02051E60 - mov r0, r5 - mov r1, fp - bl sub_02051E60 - mov r0, #0 - mov r1, #1 - bl sub_02051E60 - mov r0, #1 - mov r1, r0 - bl sub_02051E60 - mov r0, #0 - bl ov29_0234BEE0 - mov r0, #1 - bl ov29_0234BEE0 - mov r0, #0 - bl ov29_0234BF04 - mov r0, #1 - bl ov29_0234BF04 - bl GetDungeonPtrMaster - mov r1, r0 - ldr r0, [r4, #4] - add r0, r0, #0x10 - bl RunDungeon - mov sl, #1 -_0234BD70: - cmp sl, #0 - beq _0234BCAC - ldr r0, _0234BED4 ; =ov29_023537D8 - ldr r0, [r0, #4] - adds r4, r0, #0x10 - beq _0234BEB8 - ldr r1, [r4, #0xb0] - mvn r0, #1 - cmp r1, r0 - bne _0234BDA0 - add r0, r4, #0xb8 - bl sub_0205BAB0 -_0234BDA0: - ldr r1, [r4, #0xb0] - cmp r1, #3 - mvnne r0, #1 - cmpne r1, r0 - bne _0234BEB8 - ldr r0, _0234BED4 ; =ov29_023537D8 - ldr r4, [r0, #4] - bl ov29_022DE418 - mov r0, #0 - mov r1, r0 - bl sub_020091B0 - mov r0, #1 - mov r1, #0 - bl sub_020091B0 - mov r0, #2 - mov r1, #0 - bl sub_02009194 - mov r0, #3 - mov r1, #0 - bl sub_02009194 - mov r0, #4 - mov r1, #0 - bl sub_020091B0 - mov r0, #1 - mov r1, #0x4000 - mov r2, #0 - bl StartFadeDungeonWrapper - mov r0, #0 - bl ov29_0234C738 - add r0, r4, #0xc4 - bl SetAdventureLogDungeonFloor - bl sub_02017B70 - ldr r1, [r4, #0xc0] - mvn r0, #1 - cmp r1, r0 - beq _0234BE40 - bl sub_0204AFF8 - cmp r0, #0 - movne r5, #1 - bne _0234BE44 -_0234BE40: - mov r5, #0 -_0234BE44: - bl ov29_0234CA68 - mov r4, r0 - bl ov29_0234CA7C - mov r1, r0 - mov r0, r4 - mov r2, r5 - bl ov30_023829CC - mov r0, #0x10 - bl ov29_022DDE00 - ldr r4, _0234BED4 ; =ov29_023537D8 - mov r1, #1 - ldr r0, [r4, #4] - strb r1, [r0, #0x1bc] - b _0234BE80 -_0234BE7C: - bl ov29_022DDEF8 -_0234BE80: - ldr r0, [r4, #4] - ldrb r0, [r0, #0x1bc] - cmp r0, #0 - bne _0234BE7C - bl ov30_02382C30 - bl ov29_0234CACC - mov r0, #2 - bl ov29_022DDE00 - mov r0, #2 - mov r1, #0x4000 - mov r2, #0 - bl StartFadeDungeonWrapper - mov r0, #0 - bl ov29_0234C738 -_0234BEB8: - bl ov29_022DC65C - ldr r0, _0234BED4 ; =ov29_023537D8 - mov r1, #1 - ldr r0, [r0, #4] - strb r1, [r0, #0x1bd] -_0234BECC: - bl ov29_022DDEF8 - b _0234BECC - .align 2, 0 -_0234BED4: .word ov29_023537D8 -_0234BED8: .word 0x000F1208 -_0234BEDC: .word 0x000F1209 - arm_func_end ov29_0234BBE8 - - arm_func_start ov29_0234BEE0 -ov29_0234BEE0: ; 0x0234BEE0 - ldr r2, _0234BEFC ; =ov29_0235352C - mov r1, #0xc - ldr r2, [r2] - ldr ip, _0234BF00 ; =sub_0200B3D4 - mla r1, r0, r1, r2 - ldr r0, [r1, #0x24] - bx ip - .align 2, 0 -_0234BEFC: .word ov29_0235352C -_0234BF00: .word sub_0200B3D4 - arm_func_end ov29_0234BEE0 - - arm_func_start ov29_0234BF04 -ov29_0234BF04: ; 0x0234BF04 - ldr r2, _0234BF20 ; =ov29_0235352C - mov r1, #0xc - ldr r2, [r2] - ldr ip, _0234BF24 ; =sub_0200B330 - mla r1, r0, r1, r2 - ldr r0, [r1, #0x24] - bx ip - .align 2, 0 -_0234BF20: .word ov29_0235352C -_0234BF24: .word sub_0200B330 - arm_func_end ov29_0234BF04 - - arm_func_start RunDungeonMode -RunDungeonMode: ; 0x0234BF28 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - mov r4, r1 - bl sub_02017BEC - bl sub_02028E2C - mov r0, #0 - mov r1, r0 - mov r2, r0 - mov r3, r0 - bl sub_020091F8 - mov r0, #0 - mov r1, r0 - mov r2, r0 - mov r3, #1 - bl sub_020091F8 - bl ov29_022E0E8C - bl sub_02027148 - mov r0, #0xf000 - mov r1, #0 - bl sub_0201D7E0 - mov r0, #0x1c0 - mov r1, #0 - bl MemAlloc - ldr r2, _0234C1C8 ; =ov29_023537D8 - mov r1, #0x1c0 - str r0, [r2, #4] - bl MemZero - ldr r0, _0234C1C8 ; =ov29_023537D8 - mov r2, #0 - ldr r1, [r0, #4] - strb r2, [r1, #0x1bc] - ldr r1, [r0, #4] - str r4, [r1, #8] - ldr r0, [r0, #4] - str r4, [r0, #0xc] - bl DungeonAlloc - ldr r1, _0234C1C8 ; =ov29_023537D8 - ldr r1, [r1, #4] - str r0, [r1, #4] - bl DungeonZInit - bl ov29_022DDFF0 - bl ov29_022DDFFC - bl ov29_022DE300 - ldr r0, _0234C1C8 ; =ov29_023537D8 - mov ip, r5 - ldr r0, [r0, #4] - mov r4, #0x1a - add r6, r0, #0x10 -_0234BFE8: - ldmia ip!, {r0, r1, r2, r3} - stmia r6!, {r0, r1, r2, r3} - subs r4, r4, #1 - bne _0234BFE8 - ldmia ip, {r0, r1, r2} - stmia r6, {r0, r1, r2} - bl ov29_0234C9FC - ldr r0, _0234C1CC ; =ov29_0234BBDC - bl sub_02006EC4 - bl sub_02017A68 - bl ov29_022E0CFC - bl ov29_0234C4F8 - cmp r5, #0 - beq _0234C04C - ldrsb r0, [r5, #0xe] - cmp r0, #1 - mov r0, #0 - bne _0234C040 - bl ov29_0234C5EC - mov r0, #1 - bl ov29_0234C584 - b _0234C04C -_0234C040: - bl ov29_0234C584 - mov r0, #1 - bl ov29_0234C584 -_0234C04C: - bl ov29_022DDC00 - ldr r1, _0234C1C8 ; =ov29_023537D8 - mov r2, #1 - ldr r0, _0234C1D0 ; =ov29_0234C1D8 - strb r2, [r1] - bl sub_0200383C - mov r1, #0 - ldr r0, _0234C1D4 ; =ov29_0234BBE8 - mov r2, r1 - bl ov29_022DDD50 - ldr r4, _0234C1C8 ; =ov29_023537D8 - mov r6, #0 -_0234C07C: - bl sub_020038E8 - ldr r0, [r4, #4] - ldrb r0, [r0, #0x1bd] - cmp r0, #0 - bne _0234C0C0 - bl sub_020039E4 - ldr r0, [r4, #4] - ldrb r0, [r0, #0x1bc] - cmp r0, #0 - beq _0234C07C -_0234C0A4: - bl ov30_02382A34 - cmp r0, #2 - cmpne r0, #3 - bne _0234C0A4 - ldr r0, [r4, #4] - strb r6, [r0, #0x1bc] - b _0234C07C -_0234C0C0: - ldr r0, _0234C1D4 ; =ov29_0234BBE8 - bl ov29_022DDDA4 - mov r0, #0 - bl sub_0200383C - bl sub_02034710 - bl ov29_0234CA2C - cmp r5, #0 - beq _0234C108 - ldr r0, _0234C1C8 ; =ov29_023537D8 - mov r4, #0x1a - ldr r0, [r0, #4] - add ip, r0, #0x10 -_0234C0F0: - ldmia ip!, {r0, r1, r2, r3} - stmia r5!, {r0, r1, r2, r3} - subs r4, r4, #1 - bne _0234C0F0 - ldmia ip, {r0, r1, r2} - stmia r5, {r0, r1, r2} -_0234C108: - bl ov29_022DE498 - bl ov29_022DE0A0 - bl ov29_0234C544 - mov r0, #0 - bl sub_02006EC4 - ldr r0, _0234C1C8 ; =ov29_023537D8 - ldr r0, [r0, #4] - cmp r0, #0 - beq _0234C154 - bl DungeonFree - ldr r0, _0234C1C8 ; =ov29_023537D8 - mov r2, #0 - ldr r1, [r0, #4] - str r2, [r1, #4] - ldr r0, [r0, #4] - bl MemFree - ldr r0, _0234C1C8 ; =ov29_023537D8 - mov r1, #0 - str r1, [r0, #4] -_0234C154: - bl sub_0201D804 - bl sub_0202715C - bl ov29_022DDCA0 - bl sub_02017B70 - bl sub_02017BEC - mov r0, #0 - sub r1, r0, #0x100 - bl sub_02008F3C - mov r0, #1 - mvn r1, #0xff - bl sub_02008F3C - mov r0, #0 - bl sub_02009120 - mov r0, #1 - bl sub_02009120 - mov r0, #0 - bl sub_02009514 - mov r0, #1 - bl sub_02009514 - mov r0, #0 - bl sub_020091CC - mov r0, #1 - bl sub_020091CC - mov r0, #0 - bl sub_020093BC - mov r0, #1 - bl sub_020093BC - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0234C1C8: .word ov29_023537D8 -_0234C1CC: .word ov29_0234BBDC -_0234C1D0: .word ov29_0234C1D8 -_0234C1D4: .word ov29_0234BBE8 - arm_func_end RunDungeonMode - - arm_func_start ov29_0234C1D8 -ov29_0234C1D8: ; 0x0234C1D8 - stmdb sp!, {r4, lr} - bl sub_0201BF64 - bl sub_02028E40 - bl sub_020038D8 - cmp r0, #0 - beq _0234C1F4 - bl sub_02003990 -_0234C1F4: - bl ov29_022E0A64 - bl ov29_022DDE24 - bl ov29_022E9F9C - bl HandleFadesDungeonBothScreens - bl sub_02034A80 - bl ov29_022EA008 - ldr r0, _0234C2EC ; =DUNGEON_PTR - ldr r0, [r0] - cmp r0, #0 - beq _0234C230 -#ifdef JAPAN - add r0, r0, #0x2180 - add r0, r0, #0x18000 -#else - add r0, r0, #0x224 - add r0, r0, #0x1a000 -#endif - bl ov10_022BF764 - bl ov29_022E6DD0 - b _0234C238 -_0234C230: - mov r0, #0 - bl ov10_022BF764 -_0234C238: - bl sub_02028848 - bl ov29_022DE868 - ldr r0, _0234C2F0 ; =ov29_023537D8 - ldr r0, [r0, #4] - ldr r0, [r0] - cmp r0, #0 - beq _0234C258 - blx r0 -_0234C258: - bl ov29_022DC670 - bl sub_0201F464 - ldr r0, _0234C2F0 ; =ov29_023537D8 - ldrb r0, [r0] - cmp r0, #0 - bne _0234C274 - bl sub_0201DDFC -_0234C274: - bl sub_02008F84 - bl ov29_022EAFB0 - bl sub_02017A80 - mov r0, #1 - bl sub_02028A64 - bl sub_0201BE28 - bl sub_0201BE5C - bl sub_0201BE84 - bl sub_0204F9CC - bl sub_02003A40 - ldr r1, _0234C2F0 ; =ov29_023537D8 - mov r4, r0 - ldrb r0, [r1] - cmp r0, #0 - beq _0234C2B8 - mov r0, #0 - bl sub_02008ED0 -_0234C2B8: - bl G3X_Reset - bl sub_02008F88 - bl sub_0201DE10 - bl ov10_022BF7D4 - bl ov29_0233992C - bl sub_02028E88 - bl ov29_022DE0CC - bl sub_0201BF4C - ldr r1, _0234C2F0 ; =ov29_023537D8 - mov r2, #0 - mov r0, r4 - strb r2, [r1] - ldmia sp!, {r4, pc} - .align 2, 0 -_0234C2EC: .word DUNGEON_PTR -_0234C2F0: .word ov29_023537D8 - arm_func_end ov29_0234C1D8 - - arm_func_start ov29_0234C2F4 -ov29_0234C2F4: ; 0x0234C2F4 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r1, #0x9c - bl MemZero - add r0, r5, #0x48 - strb r4, [r5, #0x88] - bl InitRender3dElement64 - mov r0, #0x100 - strh r0, [r5, #0x4c] - mov r0, #0xc0 - strh r0, [r5, #0x4e] - mov r0, #1 - strh r0, [r5, #0x72] - strb r0, [r5, #0x86] - mov r0, #2 - strb r0, [r5, #0x84] - mov r0, #0 - strb r0, [r5, #0x77] - strb r0, [r5, #0x74] - strb r0, [r5, #0x75] - strb r0, [r5, #0x76] - strb r0, [r5, #0x99] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_0234C2F4 - - arm_func_start ov29_0234C354 -ov29_0234C354: ; 0x0234C354 - stmdb sp!, {r3, lr} - mov r3, #0 - str r3, [r0, #0x90] - str r3, [r0, #0x8c] - str r3, [r0, #0x94] - strb r3, [r0, #0x98] - ldrb r1, [r0, #0x88] - cmp r1, #1 - bne _0234C384 - ldr r0, [r0, #0x90] - bl ov29_022E0F14 - ldmia sp!, {r3, pc} -_0234C384: - ldrb r2, [r0, #0x99] - cmp r2, #0 - strneb r3, [r0, #0x77] - ldmneia sp!, {r3, pc} - ldr r0, [r0, #0x90] - bl ov29_022E0F14 - ldmia sp!, {r3, pc} - arm_func_end ov29_0234C354 - - arm_func_start ov29_0234C3A0 -ov29_0234C3A0: ; 0x0234C3A0 - stmdb sp!, {r4, lr} - mov r4, r0 - ldrb r1, [r4, #0x88] - cmp r1, #1 - bne _0234C3C8 - ldr r0, [r4, #0x90] - mov r0, r0, asr #0xc - bl ov29_022E0F14 - ldr r0, [r4, #0x90] - ldmia sp!, {r4, pc} -_0234C3C8: - ldrb r0, [r4, #0x99] - cmp r0, #0 - ldr r0, [r4, #0x90] - beq _0234C3F8 - cmp r0, #0 - rsblt r0, r0, #0 - mov r0, r0, asr #0xc - mov r0, r0, lsl #4 - cmp r0, #0x100 - moveq r0, #0xff - strb r0, [r4, #0x77] - ldmia sp!, {r4, pc} -_0234C3F8: - mov r0, r0, asr #0xc - bl ov29_022E0F14 - ldr r0, [r4, #0x90] - ldmia sp!, {r4, pc} - arm_func_end ov29_0234C3A0 - - arm_func_start StartFadeDungeon -StartFadeDungeon: ; 0x0234C408 - stmdb sp!, {r3, lr} - str r2, [r0, #0x8c] - str r1, [r0, #0x94] - mov r1, #1 - strb r1, [r0, #0x98] - ldrb r1, [r0, #0x88] - cmp r1, #1 - bne _0234C464 - cmp r2, #5 - cmpne r2, #3 - moveq r1, #0 - streq r1, [r0, #0x90] - beq _0234C45C - cmp r2, #4 - moveq r1, #0x10000 - streq r1, [r0, #0x90] - beq _0234C45C - cmp r2, #2 - moveq r1, #0x10000 - rsbeq r1, r1, #0 - streq r1, [r0, #0x90] -_0234C45C: - bl ov29_0234C3A0 - ldmia sp!, {r3, pc} -_0234C464: - cmp r2, #5 - bne _0234C488 - mov r1, #0 - str r1, [r0, #0x90] - mov r1, #0xff - strb r1, [r0, #0x74] - strb r1, [r0, #0x75] - strb r1, [r0, #0x76] - b _0234C4F0 -_0234C488: - cmp r2, #3 - bne _0234C4A8 - mov r1, #0 - str r1, [r0, #0x90] - strb r1, [r0, #0x74] - strb r1, [r0, #0x75] - strb r1, [r0, #0x76] - b _0234C4F0 -_0234C4A8: - cmp r2, #4 - bne _0234C4CC - mov r1, #0x10000 - str r1, [r0, #0x90] - mov r1, #0xff - strb r1, [r0, #0x74] - strb r1, [r0, #0x75] - strb r1, [r0, #0x76] - b _0234C4F0 -_0234C4CC: - cmp r2, #2 - bne _0234C4F0 - mov r1, #0x10000 - rsb r1, r1, #0 - str r1, [r0, #0x90] - mov r1, #0 - strb r1, [r0, #0x74] - strb r1, [r0, #0x75] - strb r1, [r0, #0x76] -_0234C4F0: - bl ov29_0234C3A0 - ldmia sp!, {r3, pc} - arm_func_end StartFadeDungeon - - arm_func_start ov29_0234C4F8 -ov29_0234C4F8: ; 0x0234C4F8 - stmdb sp!, {r3, lr} - mov r0, #0x144 - mov r1, #0 - bl MemAlloc - ldr r2, _0234C540 ; =DUNGEON_FADES_PTR - mov r1, #0x144 - str r0, [r2] - bl MemZero - ldr r0, _0234C540 ; =DUNGEON_FADES_PTR - mov r1, #0 - ldr r0, [r0] - bl ov29_0234C2F4 - ldr r0, _0234C540 ; =DUNGEON_FADES_PTR - mov r1, #1 - ldr r0, [r0] - add r0, r0, #0x9c - bl ov29_0234C2F4 - ldmia sp!, {r3, pc} - .align 2, 0 -_0234C540: .word DUNGEON_FADES_PTR - arm_func_end ov29_0234C4F8 - - arm_func_start ov29_0234C544 -ov29_0234C544: ; 0x0234C544 - stmdb sp!, {r3, lr} - ldr r0, _0234C580 ; =DUNGEON_FADES_PTR - ldr r0, [r0] - bl ov29_0234C354 - ldr r0, _0234C580 ; =DUNGEON_FADES_PTR - ldr r0, [r0] - add r0, r0, #0x9c - bl ov29_0234C354 - ldr r0, _0234C580 ; =DUNGEON_FADES_PTR - ldr r0, [r0] - bl MemFree - ldr r0, _0234C580 ; =DUNGEON_FADES_PTR - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0234C580: .word DUNGEON_FADES_PTR - arm_func_end ov29_0234C544 - - arm_func_start ov29_0234C584 -ov29_0234C584: ; 0x0234C584 - stmdb sp!, {r3, lr} - ldr r1, _0234C5E8 ; =DUNGEON_FADES_PTR - mov r2, #0x10000 - ldr r3, [r1] - mov r1, #0x9c - mla r0, r1, r0, r3 - rsb r2, r2, #0 - str r2, [r0, #0x90] - mov r1, #1 - str r1, [r0, #0x8c] - mov r2, #0 - str r2, [r0, #0x94] - strb r1, [r0, #0x98] - ldrb r1, [r0, #0x88] - cmp r1, #1 - bne _0234C5CC - bl ov29_0234C3A0 - ldmia sp!, {r3, pc} -_0234C5CC: - ldrb r1, [r0, #0x99] - cmp r1, #0 - strneb r2, [r0, #0x74] - strneb r2, [r0, #0x75] - strneb r2, [r0, #0x76] - bl ov29_0234C3A0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0234C5E8: .word DUNGEON_FADES_PTR - arm_func_end ov29_0234C584 - - arm_func_start ov29_0234C5EC -ov29_0234C5EC: ; 0x0234C5EC - stmdb sp!, {r3, lr} - ldr r2, _0234C650 ; =DUNGEON_FADES_PTR - mov r1, #0x9c - ldr r3, [r2] - mov r2, #0x10000 - mla r0, r1, r0, r3 - str r2, [r0, #0x90] - mov r2, #1 - str r2, [r0, #0x8c] - mov r1, #0 - str r1, [r0, #0x94] - strb r2, [r0, #0x98] - ldrb r1, [r0, #0x88] - cmp r1, #1 - bne _0234C630 - bl ov29_0234C3A0 - ldmia sp!, {r3, pc} -_0234C630: - ldrb r1, [r0, #0x99] - cmp r1, #0 - movne r1, #0xff - strneb r1, [r0, #0x74] - strneb r1, [r0, #0x75] - strneb r1, [r0, #0x76] - bl ov29_0234C3A0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0234C650: .word DUNGEON_FADES_PTR - arm_func_end ov29_0234C5EC - - arm_func_start ov29_0234C654 -ov29_0234C654: ; 0x0234C654 - ldr r1, _0234C664 ; =DUNGEON_FADES_PTR - ldr r1, [r1] - strh r0, [r1, #0x72] - bx lr - .align 2, 0 -_0234C664: .word DUNGEON_FADES_PTR - arm_func_end ov29_0234C654 - - arm_func_start StartFadeDungeonWrapper -StartFadeDungeonWrapper: ; 0x0234C668 - stmdb sp!, {r3, lr} - ldr r3, _0234C708 ; =DUNGEON_FADES_PTR - mov ip, #0 - ldr lr, [r3] - add lr, lr, r2, lsl #2 - str r0, [lr, #0x138] - ldr r0, [r3] - add r0, r0, r2 - strb ip, [r0, #0x140] - ldr ip, [r3] - add r0, ip, r2, lsl #2 - ldr r0, [r0, #0x138] - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _0234C6E0 -_0234C6A4: ; jump table - b _0234C6E0 ; case 0 - b _0234C6C0 ; case 1 - b _0234C6C8 ; case 2 - b _0234C6C8 ; case 3 - b _0234C6D0 ; case 4 - b _0234C6D8 ; case 5 - b _0234C6D8 ; case 6 -_0234C6C0: - mov r3, #2 - b _0234C6E4 -_0234C6C8: - mov r3, #3 - b _0234C6E4 -_0234C6D0: - mov r3, #4 - b _0234C6E4 -_0234C6D8: - mov r3, #5 - b _0234C6E4 -_0234C6E0: - mov r3, #0 -_0234C6E4: - mov r0, #0x9c - mla r0, r2, r0, ip - cmp r3, #0 - bne _0234C6FC - bl ov29_0234C354 - ldmia sp!, {r3, pc} -_0234C6FC: - mov r2, r3 - bl StartFadeDungeon - ldmia sp!, {r3, pc} - .align 2, 0 -_0234C708: .word DUNGEON_FADES_PTR - arm_func_end StartFadeDungeonWrapper - - arm_func_start ov29_0234C70C -ov29_0234C70C: ; 0x0234C70C - ldr r2, _0234C734 ; =DUNGEON_FADES_PTR - mov r1, #0x9c - ldr r2, [r2] - mla r1, r0, r1, r2 - ldr r0, [r1, #0x8c] - cmp r0, #1 - cmpne r0, #0 - moveq r0, #0 - movne r0, #1 - bx lr - .align 2, 0 -_0234C734: .word DUNGEON_FADES_PTR - arm_func_end ov29_0234C70C - - arm_func_start ov29_0234C738 -ov29_0234C738: ; 0x0234C738 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r0 - mov r0, #0x9c - mul r4, r5, r0 - ldr r6, _0234C7D0 ; =DUNGEON_FADES_PTR - mov r7, #5 -_0234C750: - ldr r1, [r6] - add r0, r1, r5, lsl #2 - ldr r0, [r0, #0x138] - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _0234C7C0 -_0234C768: ; jump table - b _0234C7C0 ; case 0 - b _0234C784 ; case 1 - b _0234C784 ; case 2 - b _0234C79C ; case 3 - b _0234C784 ; case 4 - b _0234C784 ; case 5 - b _0234C79C ; case 6 -_0234C784: - add r0, r4, r1 - ldr r0, [r0, #0x8c] - cmp r0, #1 - cmpne r0, #0 - bne _0234C7C0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0234C79C: - add r0, r5, r1 - ldrb r0, [r0, #0x140] - cmp r0, #1 - bne _0234C7C0 - add r0, r4, r1 - ldr r0, [r0, #0x8c] - cmp r0, #1 - cmpne r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_0234C7C0: - mov r0, r7 - bl AdvanceFrame - b _0234C750 -_0234C7CC: - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0234C7D0: .word DUNGEON_FADES_PTR - arm_func_end ov29_0234C738 - - arm_func_start HandleFadesDungeon -HandleFadesDungeon: ; 0x0234C7D4 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _0234C9E0 ; =DUNGEON_FADES_PTR - mov r5, r0 - ldr r4, [r1] - add r0, r4, r5, lsl #2 - ldr r2, [r0, #0x138] - cmp r2, #6 - addls pc, pc, r2, lsl #2 - b _0234C8B8 -_0234C7F8: ; jump table - b _0234C8B8 ; case 0 - b _0234C814 ; case 1 - b _0234C8B8 ; case 2 - b _0234C830 ; case 3 - b _0234C814 ; case 4 - b _0234C8B8 ; case 5 - b _0234C830 ; case 6 -_0234C814: - mov r0, #0x9c - mla r0, r5, r0, r4 - ldr r1, [r0, #0x8c] - cmp r1, #1 - bne _0234C8B8 - bl ov29_0234C354 - ldmia sp!, {r3, r4, r5, pc} -_0234C830: - adds r0, r4, #0x140 - mov r0, #0x9c - bne _0234C888 - mla r0, r5, r0, r4 - ldr r1, [r0, #0x8c] - cmp r1, #1 - bne _0234C8B8 - cmp r2, #3 - ldr r1, [r0, #0x94] - bne _0234C864 - mov r2, #2 - bl StartFadeDungeon - b _0234C86C -_0234C864: - mov r2, #4 - bl StartFadeDungeon -_0234C86C: - ldr r0, _0234C9E0 ; =DUNGEON_FADES_PTR - ldr r0, [r0] - add r1, r0, #0x140 - ldrb r0, [r1, r5] - add r0, r0, #1 - strb r0, [r1, r5] - b _0234C8B8 -_0234C888: - mul r3, r5, r0 - add r0, r4, r3 - ldr r0, [r0, #0x8c] - cmp r0, #1 - bne _0234C8B8 - add r0, r4, r5 - mov r2, #0 - strb r2, [r0, #0x140] - ldr r0, [r1] - add r0, r0, r3 - bl ov29_0234C354 - ldmia sp!, {r3, r4, r5, pc} -_0234C8B8: - ldr r1, _0234C9E0 ; =DUNGEON_FADES_PTR - mov r0, #0x9c - ldr r1, [r1] - mla r4, r5, r0, r1 - ldrb r0, [r4, #0x98] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0x88] - cmp r0, #1 - bne _0234C8EC - mov r0, r4 - bl ov29_0234C3A0 - b _0234C918 -_0234C8EC: - ldrb r0, [r4, #0x99] - cmp r0, #0 - mov r0, r4 - beq _0234C914 - bl ov29_0234C3A0 - cmp r0, #0 - beq _0234C918 - add r0, r4, #0x48 - bl sub_0201F2A0 - b _0234C918 -_0234C914: - bl ov29_0234C3A0 -_0234C918: - ldr r0, [r4, #0x8c] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r3, r4, r5, pc} -_0234C928: ; jump table - ldmia sp!, {r3, r4, r5, pc} ; case 0 - ldmia sp!, {r3, r4, r5, pc} ; case 1 - b _0234C9BC ; case 2 - b _0234C968 ; case 3 - b _0234C994 ; case 4 - b _0234C940 ; case 5 -_0234C940: - ldr r1, [r4, #0x90] - ldr r0, [r4, #0x94] - add r0, r1, r0 - str r0, [r4, #0x90] - cmp r0, #0x10000 - movge r0, #0x10000 - strge r0, [r4, #0x90] - movge r0, #1 - strge r0, [r4, #0x8c] - ldmia sp!, {r3, r4, r5, pc} -_0234C968: - ldr r2, [r4, #0x90] - ldr r1, [r4, #0x94] - mov r0, #0x10000 - sub r1, r2, r1 - rsb r0, r0, #0 - str r1, [r4, #0x90] - cmp r1, r0 - strle r0, [r4, #0x90] - movle r0, #1 - strle r0, [r4, #0x8c] - ldmia sp!, {r3, r4, r5, pc} -_0234C994: - ldr r1, [r4, #0x90] - ldr r0, [r4, #0x94] - sub r0, r1, r0 - str r0, [r4, #0x90] - cmp r0, #0 - movle r0, #0 - strle r0, [r4, #0x90] - movle r0, #1 - strle r0, [r4, #0x8c] - ldmia sp!, {r3, r4, r5, pc} -_0234C9BC: - ldr r1, [r4, #0x90] - ldr r0, [r4, #0x94] - adds r0, r1, r0 - str r0, [r4, #0x90] - movpl r0, #0 - strpl r0, [r4, #0x90] - movpl r0, #1 - strpl r0, [r4, #0x8c] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0234C9E0: .word DUNGEON_FADES_PTR - arm_func_end HandleFadesDungeon - - arm_func_start HandleFadesDungeonBothScreens -HandleFadesDungeonBothScreens: ; 0x0234C9E4 - stmdb sp!, {r3, lr} - mov r0, #0 - bl HandleFadesDungeon - mov r0, #1 - bl HandleFadesDungeon - ldmia sp!, {r3, pc} - arm_func_end HandleFadesDungeonBothScreens - - arm_func_start ov29_0234C9FC -ov29_0234C9FC: ; 0x0234C9FC - stmdb sp!, {r3, lr} - mov r0, #8 - mov r1, #0 - bl MemAlloc - ldr r1, _0234CA28 ; =ov29_023537E4 - mov r2, #0 - str r0, [r1] - str r2, [r0, #4] - ldr r0, [r1] - str r2, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0234CA28: .word ov29_023537E4 - arm_func_end ov29_0234C9FC - - arm_func_start ov29_0234CA2C -ov29_0234CA2C: ; 0x0234CA2C - stmdb sp!, {r3, lr} - mov r0, #0x21 - bl OverlayIsLoaded - cmp r0, #0 - beq _0234CA48 - mov r0, #0x21 - bl UnloadOverlay -_0234CA48: - ldr r0, _0234CA64 ; =ov29_023537E4 - ldr r0, [r0] - bl MemFree - ldr r0, _0234CA64 ; =ov29_023537E4 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0234CA64: .word ov29_023537E4 - arm_func_end ov29_0234CA2C - - arm_func_start ov29_0234CA68 -ov29_0234CA68: ; 0x0234CA68 - ldr r0, _0234CA78 ; =ov29_023537E4 - ldr r0, [r0] - ldr r0, [r0, #4] - bx lr - .align 2, 0 -_0234CA78: .word ov29_023537E4 - arm_func_end ov29_0234CA68 - - arm_func_start ov29_0234CA7C -ov29_0234CA7C: ; 0x0234CA7C - mov r0, #0x5800 - bx lr - arm_func_end ov29_0234CA7C - - arm_func_start ov29_0234CA84 -ov29_0234CA84: ; 0x0234CA84 - stmdb sp!, {r3, lr} - ldr r0, _0234CAC4 ; =ov29_023537E4 - mov r3, #1 - ldr r1, [r0] - ldr r2, _0234CAC8 ; =ov29_0237D000 - str r3, [r1] - ldr r1, [r0] - mov r0, #0x21 - str r2, [r1, #4] - bl LoadOverlay - ldr r0, _0234CAC4 ; =ov29_023537E4 - mov r1, #0x5800 - ldr r0, [r0] - ldr r0, [r0, #4] - bl WriteQuicksaveData - ldmia sp!, {r3, pc} - .align 2, 0 -_0234CAC4: .word ov29_023537E4 -_0234CAC8: .word ov29_0237D000 - arm_func_end ov29_0234CA84 - - arm_func_start ov29_0234CACC -ov29_0234CACC: ; 0x0234CACC - stmdb sp!, {r3, lr} - mov r0, #0x21 - bl OverlayIsLoaded - cmp r0, #0 - beq _0234CAE8 - mov r0, #0x21 - bl UnloadOverlay -_0234CAE8: - ldr r0, _0234CAFC ; =ov29_023537E4 - mov r1, #0 - ldr r0, [r0] - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0234CAFC: .word ov29_023537E4 - arm_func_end ov29_0234CACC - - arm_func_start ov29_0234CB00 -ov29_0234CB00: ; 0x0234CB00 - ldr r0, _0234CB28 ; =ov29_023537E4 - mov r3, #2 - ldr r1, [r0] - ldr r2, _0234CB2C ; =ov29_0237D000 - str r3, [r1] - ldr r1, [r0] - ldr ip, _0234CB30 ; =LoadOverlay - mov r0, #0x21 - str r2, [r1, #4] - bx ip - .align 2, 0 -_0234CB28: .word ov29_023537E4 -_0234CB2C: .word ov29_0237D000 -_0234CB30: .word LoadOverlay - arm_func_end ov29_0234CB00 - - arm_func_start ov29_0234CB34 -ov29_0234CB34: ; 0x0234CB34 - ldr r0, _0234CB4C ; =ov29_023537E4 - ldr ip, _0234CB50 ; =ov30_023842F4 - ldr r0, [r0] - mov r1, #0x5800 - ldr r0, [r0, #4] - bx ip - .align 2, 0 -_0234CB4C: .word ov29_023537E4 -_0234CB50: .word ov30_023842F4 - arm_func_end ov29_0234CB34 - - arm_func_start ov29_0234CB54 -ov29_0234CB54: ; 0x0234CB54 - stmdb sp!, {r3, lr} - mov r0, #0x21 - bl OverlayIsLoaded - cmp r0, #0 - beq _0234CB70 - mov r0, #0x21 - bl UnloadOverlay -_0234CB70: - ldr r0, _0234CB84 ; =ov29_023537E4 - mov r1, #0 - ldr r0, [r0] - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0234CB84: .word ov29_023537E4 - arm_func_end ov29_0234CB54 - - arm_func_start DisplayFloorTip -DisplayFloorTip: ; 0x0234CB88 - stmdb sp!, {r3, lr} - bl GetLeader - ldr r2, _0234CC88 ; =DUNGEON_PTR - mvn r3, #0 - ldr r1, [r2] - ldr r0, _0234CC8C ; =ov29_023532C0 - add r1, r1, #0x100 - strh r3, [r1, #0xd8] - ldr r2, [r2] - mov r1, #1 - add r2, r2, #0x100 - strh r3, [r2, #0xda] - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CC90 ; =ov29_023532B8 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CC94 ; =ov29_023532B0 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CC98 ; =ov29_02353240 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldreq r0, _0234CC88 ; =DUNGEON_PTR - ldreq r0, [r0] - ldreqb r0, [r0, #0x748] - cmpeq r0, #3 - ldmneia sp!, {r3, pc} - ldr r0, _0234CC9C ; =ov29_023532A0 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CCA0 ; =ov29_02353298 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CCA4 ; =ov29_02353290 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CCA8 ; =ov29_02353278 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CCAC ; =ov29_02353238 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CCB0 ; =ov29_023532E0 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0234CC88: .word DUNGEON_PTR -_0234CC8C: .word ov29_023532C0 -_0234CC90: .word ov29_023532B8 -_0234CC94: .word ov29_023532B0 -_0234CC98: .word ov29_02353240 -_0234CC9C: .word ov29_023532A0 -_0234CCA0: .word ov29_02353298 -_0234CCA4: .word ov29_02353290 -_0234CCA8: .word ov29_02353278 -_0234CCAC: .word ov29_02353238 -_0234CCB0: .word ov29_023532E0 - arm_func_end DisplayFloorTip - - arm_func_start DisplayItemTip -DisplayItemTip: ; 0x0234CCB4 - stmdb sp!, {r4, lr} - ldr r2, _0234CEA4 ; =DUNGEON_PTR - mvn r3, #0 - ldr r1, [r2] - mov r4, r0 - add r1, r1, #0x100 - strh r3, [r1, #0xd8] - ldr r1, [r2] - add r1, r1, #0x100 - strh r3, [r1, #0xda] - bl GetItemCategoryVeneer - cmp r0, #3 - bne _0234CCF8 - ldr r0, _0234CEA8 ; =ov29_023532F0 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CCF8: - cmp r4, #0x46 - bne _0234CD10 - ldr r0, _0234CEAC ; =ov29_023532F8 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CD10: - cmp r4, #0x52 - bne _0234CD28 - ldr r0, _0234CEB0 ; =ov29_023532D8 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CD28: - cmp r4, #0x57 - bne _0234CD40 - ldr r0, _0234CEB4 ; =ov29_023532C8 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CD40: - cmp r4, #8 - bne _0234CD58 - ldr r0, _0234CEB8 ; =ov29_02353250 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CD58: - cmp r4, #0x51 - bne _0234CD70 - ldr r0, _0234CEBC ; =ov29_02353248 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CD70: - cmp r4, #0x54 - bne _0234CD88 - ldr r0, _0234CEC0 ; =ov29_02353270 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CD88: - cmp r4, #0xb7 - bne _0234CDA0 - ldr r0, _0234CEC4 ; =ov29_02353280 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CDA0: - cmp r4, #0x63 - bne _0234CDB8 - ldr r0, _0234CEC8 ; =ov29_023532A8 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CDB8: - cmp r4, #0x45 - bne _0234CDD0 - ldr r0, _0234CECC ; =ov29_02353300 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CDD0: - cmp r4, #0x5b - bne _0234CDE8 - ldr r0, _0234CED0 ; =ov29_02353258 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CDE8: - cmp r4, #0x56 - bne _0234CE00 - ldr r0, _0234CED4 ; =ov29_02353268 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CE00: - cmp r4, #0x5e - bne _0234CE18 - ldr r0, _0234CED8 ; =ov29_02353288 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CE18: - cmp r4, #0x4c - bne _0234CE30 - ldr r0, _0234CEDC ; =ov29_023532E8 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CE30: - cmp r4, #0x60 - bne _0234CE48 - ldr r0, _0234CEE0 ; =ov29_02353260 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CE48: - cmp r4, #0x75 - bne _0234CE60 - ldr r0, _0234CEE4 ; =ov29_02353308 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CE60: - ldr r0, _0234CEA4 ; =DUNGEON_PTR - ldr r0, [r0] - ldrb r0, [r0, #0x748] -#ifdef JAPAN - cmp r0, #0x7a -#else - cmp r0, #0x7b -#endif - ldmneia sp!, {r4, pc} - ldr r0, _0234CEE8 ; =0xFFFFFED2 - add r0, r4, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - ldmhiia sp!, {r4, pc} - ldr r0, _0234CEEC ; =ov29_02353310 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} - .align 2, 0 -_0234CEA4: .word DUNGEON_PTR -_0234CEA8: .word ov29_023532F0 -_0234CEAC: .word ov29_023532F8 -_0234CEB0: .word ov29_023532D8 -_0234CEB4: .word ov29_023532C8 -_0234CEB8: .word ov29_02353250 -_0234CEBC: .word ov29_02353248 -_0234CEC0: .word ov29_02353270 -_0234CEC4: .word ov29_02353280 -_0234CEC8: .word ov29_023532A8 -_0234CECC: .word ov29_02353300 -_0234CED0: .word ov29_02353258 -_0234CED4: .word ov29_02353268 -_0234CED8: .word ov29_02353288 -_0234CEDC: .word ov29_023532E8 -_0234CEE0: .word ov29_02353260 -_0234CEE4: .word ov29_02353308 -_0234CEE8: .word 0xFFFFFED2 -_0234CEEC: .word ov29_02353310 - arm_func_end DisplayItemTip - - arm_func_start DisplayDungeonTip -DisplayDungeonTip: ; 0x0234CEF0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5] - mov r4, r1 - bl GetDungeonTipShown - cmp r0, #0 - bne _0234CF58 - ldrh r0, [r5, #4] - bl StringFromId - ldrb r0, [r0] - cmp r0, #0 - beq _0234CF58 - ldr r0, [r5] - bl SetDungeonTipShown - bl ov29_022EACBC - ldrh r1, [r5, #4] - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - cmp r4, #0 - beq _0234CF50 - bl GetLeader - ldrh r1, [r5, #4] - bl LogMessageByIdQuiet -_0234CF50: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_0234CF58: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end DisplayDungeonTip - - arm_func_start SetBothScreensWindowColorToDefault -SetBothScreensWindowColorToDefault: ; 0x0234CF60 - stmdb sp!, {r3, lr} - bl GetGameMode - cmp r0, #3 - bne _0234CF7C - mov r0, #2 - bl SetBothScreensWindowsColor - ldmia sp!, {r3, pc} -_0234CF7C: - bl GetPlayerGender - cmp r0, #1 - bne _0234CF94 - mov r0, #0 - bl SetBothScreensWindowsColor - ldmia sp!, {r3, pc} -_0234CF94: - mov r0, #1 - bl SetBothScreensWindowsColor - ldmia sp!, {r3, pc} - arm_func_end SetBothScreensWindowColorToDefault - - arm_func_start ov29_0234CFA0 -ov29_0234CFA0: ; 0x0234CFA0 - stmdb sp!, {r3, lr} - bl IsFullFloorFixedRoom - cmp r0, #0 - movne r0, #2 - ldmneia sp!, {r3, pc} - ldr r0, _0234CFE8 ; =DUNGEON_PTR - ldr r0, [r0] - ldrb r0, [r0, #0x748] - bl IsFutureDungeon - cmp r0, #0 - bne _0234CFD8 - bl IsSecretFloor - cmp r0, #0 - beq _0234CFE0 -_0234CFD8: - mov r0, #1 - ldmia sp!, {r3, pc} -_0234CFE0: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0234CFE8: .word DUNGEON_PTR - arm_func_end ov29_0234CFA0 - - arm_func_start GetPersonalityIndex -GetPersonalityIndex: ; 0x0234CFEC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldrb r0, [r5, #0x48] - cmp r0, #0xd8 - cmpne r0, #0xf9 - cmpne r0, #0xf7 - cmpne r0, #0xf8 - beq _0234D1D4 - cmp r0, #0xd6 - blo _0234D1D4 - cmp r0, #0xd7 - bne _0234D04C - mov r0, #0 - mov r1, #0x43 - bl LoadScriptVariableValue - cmp r0, #1 - moveq r4, #0x4b0 - beq _0234D1E0 - cmp r0, #2 - ldreq r4, _0234D1E8 ; =0x000004B1 - beq _0234D1E0 - cmp r0, #3 - ldreq r4, _0234D1EC ; =0x000004B2 - b _0234D1E0 -_0234D04C: - cmp r0, #0xd6 - bne _0234D0A0 - ldrsh r2, [r5, #2] - ldr r1, _0234D1F0 ; =0x000001B2 - cmp r2, r1 - ldreq r4, _0234D1F4 ; =0x000004CD - beq _0234D1E0 - cmp r2, #0xae - addeq r4, r1, #0x31c - beq _0234D1E0 - add r0, r1, #0x27c - cmp r2, r0 - ldreq r4, _0234D1F8 ; =0x000004CF - beq _0234D1E0 - sub r0, r1, #0x99 - cmp r2, r0 - moveq r4, #0x4d0 - beq _0234D1E0 - cmp r2, #0x318 - ldreq r4, _0234D1FC ; =0x000004D1 - b _0234D1E0 -_0234D0A0: - cmp r0, #0xda -#ifdef JAPAN - bne _0234E334 - ldr r0, _0234D204 ; =DUNGEON_PTR - ldr r0, [r0] - ldrb r0, [r0, #0x748] - bl IsFutureDungeon - cmp r0, #0 - ldrne r0, _0234E48C ; =0x000004BC - ldreq r0, _0234D200 ; =0x000004B3 - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 - b _0234D1E0 -_0234E334: -#else - ldreq r4, _0234D200 ; =0x000004B3 - beq _0234D1E0 -#endif - cmp r0, #0xed - bne _0234D148 - ldr r0, _0234D204 ; =DUNGEON_PTR - ldr r0, [r0] - ldrb r1, [r0, #0x748] - add r0, r1, #0x7b - and r0, r0, #0xff - cmp r0, #2 - ldrls r4, _0234D208 ; =0x000004C4 - bls _0234D1E0 - cmp r1, #0x88 - ldreq r4, _0234D20C ; =0x000004C6 - beq _0234D1E0 - add r0, r1, #0x77 - and r0, r0, #0xff - cmp r0, #1 - ldrls r4, _0234D210 ; =0x000004C7 - bls _0234D1E0 - add r0, r1, #0x75 - and r0, r0, #0xff - cmp r0, #1 - ldrls r4, _0234D214 ; =0x000004C8 - bls _0234D1E0 - cmp r1, #0x8d - ldreq r4, _0234D218 ; =0x000004C9 - beq _0234D1E0 - add r0, r1, #0x72 - and r0, r0, #0xff - cmp r0, #2 - ldrls r4, _0234D21C ; =0x000004CA - bls _0234D1E0 - cmp r1, #0x91 - ldreq r4, _0234D220 ; =0x000004CB - beq _0234D1E0 - add r0, r1, #0x6e - and r0, r0, #0xff - cmp r0, #2 - ldrls r4, _0234D224 ; =0x000004CC - b _0234D1E0 -_0234D148: - cmp r0, #0xe2 - bne _0234D170 - mov r0, #0x1a - bl GetPerformanceFlagWithChecks - cmp r0, #0 - beq _0234D170 - ldrsh r0, [r5, #2] - bl sub_02025784 - mov r4, r0 - b _0234D1E0 -_0234D170: - ldr r1, _0234D228 ; =ov29_023537E8 - b _0234D1C4 -_0234D178: - ldrb r0, [r5, #0x48] - cmp r0, r2 - bne _0234D1C0 - ldrsh r4, [r1, #2] - ldr r0, _0234D22C ; =0x000004B8 - cmp r4, r0 - bne _0234D1A8 - ldrsh r0, [r5, #2] - cmp r0, #0x1f8 - cmpne r0, #0x51 - ldreq r4, _0234D230 ; =0x000004D3 - beq _0234D1E0 -_0234D1A8: - cmp r4, #0 - bne _0234D1E0 - ldrsh r0, [r5, #2] - bl sub_02025784 - mov r4, r0 - b _0234D1E0 -_0234D1C0: - add r1, r1, #4 -_0234D1C4: - ldrb r2, [r1] - cmp r2, #0xff - bne _0234D178 - b _0234D1E0 -_0234D1D4: - ldrsh r0, [r5, #4] - bl sub_02025784 - mov r4, r0 -_0234D1E0: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0234D1E8: .word 0x000004B1 -_0234D1EC: .word 0x000004B2 -_0234D1F0: .word 0x000001B2 -_0234D1F4: .word 0x000004CD -_0234D1F8: .word 0x000004CF -_0234D1FC: .word 0x000004D1 -#ifdef JAPAN -_0234D204: .word DUNGEON_PTR -_0234E48C: .word 0x000004BC -_0234D200: .word 0x000004B3 -#else -_0234D200: .word 0x000004B3 -_0234D204: .word DUNGEON_PTR -#endif -_0234D208: .word 0x000004C4 -_0234D20C: .word 0x000004C6 -_0234D210: .word 0x000004C7 -_0234D214: .word 0x000004C8 -_0234D218: .word 0x000004C9 -_0234D21C: .word 0x000004CA -_0234D220: .word 0x000004CB -_0234D224: .word 0x000004CC -_0234D228: .word ov29_023537E8 -_0234D22C: .word 0x000004B8 -_0234D230: .word 0x000004D3 - arm_func_end GetPersonalityIndex - - arm_func_start ov29_0234D234 -ov29_0234D234: ; 0x0234D234 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr lr, [sp, #0x10] - ldrb ip, [sp, #0x14] - str lr, [sp] - str ip, [sp, #4] - bl ov29_0234D5D0 - add sp, sp, #8 - ldmia sp!, {r3, pc} - arm_func_end ov29_0234D234 - - arm_func_start DisplayMessage -DisplayMessage: ; 0x0234D258 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r6, r0 - mov r5, r1 - mov r4, r2 - mov r0, #0xa - bl ov29_0234BA54 - bl ov29_0234D558 - bl ov29_0234B034 - mov r1, r4 - mov r2, r6 - str r0, [sp] - mov r0, r5 - mov r3, #0 - str r3, [sp, #4] - bl DisplayMessageInternal - mov r0, #0xb - mov r1, #0 - bl ov29_022EA428 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end DisplayMessage - - arm_func_start DisplayMessage2 -DisplayMessage2: ; 0x0234D2AC - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r6, r0 - mov r5, r1 - mov r4, r2 - mov r0, #0xa - bl ov29_0234BA54 - bl ov29_0234D558 - bl ov29_0234B034 - mov r1, r4 - mov r2, r6 - str r0, [sp] - mov r0, r5 - mov r3, #1 - str r3, [sp, #4] - mov r3, #0 - bl DisplayMessageInternal - mov r0, #0 - mov r1, r0 - bl ov29_022EA428 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end DisplayMessage2 - - arm_func_start ov29_0234D304 -ov29_0234D304: ; 0x0234D304 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x58 - ldr r4, _0234D454 ; =ov29_02353563 - mov r8, r0 - ldrb r0, [r4] - mov r7, r1 - mov r6, r2 - mov r5, r3 - cmp r0, #0 - beq _0234D334 - mov r0, #0xa - bl ov29_0234BA54 -_0234D334: - bl ov29_0234D558 - mov r0, r8 - bl IsMonster__0234D460 - cmp r0, #0 - beq _0234D41C - mov r0, r8 - bl IsMonster__0234D460 - cmp r0, #0 - beq _0234D3F8 - ldr r4, [r8, #0xb4] - bl FixedRoomIsSubstituteRoom - cmp r0, #0 - beq _0234D3BC - bl GetRandomExplorerMazeMonster - cmp r0, #0 - moveq r1, #0 - beq _0234D38C - ldr r1, [r0] - cmp r1, #0 - movne r1, #1 - moveq r1, #0 - and r1, r1, #0xff -_0234D38C: - cmp r1, #0 - moveq r0, #0 - streq r0, [sp, #8] - beq _0234D3D0 - ldr r1, [r0, #0xb4] - ldr r0, _0234D458 ; =ov29_02353368 - ldrb r1, [r1, #0xbc] - sub r1, r1, #0xb - orr r1, r1, #0x90000 - str r1, [sp, #8] - bl Debug_Print0 - b _0234D3D0 -_0234D3BC: - bl ov29_02337EE8 - mov r1, r0 - ldr r0, _0234D45C ; =ov29_02353380 - str r1, [sp, #8] - bl Debug_Print0 -_0234D3D0: - ldrsh r0, [r4, #4] - str r0, [sp, #0xc] - bl ov29_0233804C - str r0, [sp, #0x18] - mov r0, r8 - bl ov29_0231ADA8 - str r0, [sp, #0x1c] - ldrsh r0, [r4, #0xc] - orr r0, r0, #0x30000 - str r0, [sp, #0x54] -_0234D3F8: - add r3, sp, #8 - str r3, [sp] - mov r3, #1 - mov r0, r6 - mov r1, r5 - mov r2, r7 - str r3, [sp, #4] - bl ov29_0234D5D0 - b _0234D440 -_0234D41C: - bl ov29_0234B034 - str r0, [sp] - mov r4, #1 - mov r0, r6 - mov r1, r5 - mov r2, r7 - mov r3, #0 - str r4, [sp, #4] - bl ov29_0234D5D0 -_0234D440: - mov r0, #0 - mov r1, r0 - bl ov29_022EA428 - add sp, sp, #0x58 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0234D454: .word ov29_02353563 -_0234D458: .word ov29_02353368 -_0234D45C: .word ov29_02353380 - arm_func_end ov29_0234D304 diff --git a/asm/overlay_29_0234BEE0.s b/asm/overlay_29_0234BEE0.s new file mode 100644 index 00000000..e372f085 --- /dev/null +++ b/asm/overlay_29_0234BEE0.s @@ -0,0 +1,1681 @@ + .include "asm/macros.inc" + .include "overlay_29_0234BEE0.inc" + + .text + + arm_func_start ov29_0234BEE0 +ov29_0234BEE0: ; 0x0234BEE0 + ldr r2, _0234BEFC ; =ov29_0235352C + mov r1, #0xc + ldr r2, [r2] + ldr ip, _0234BF00 ; =sub_0200B3D4 + mla r1, r0, r1, r2 + ldr r0, [r1, #0x24] + bx ip + .align 2, 0 +_0234BEFC: .word ov29_0235352C +_0234BF00: .word sub_0200B3D4 + arm_func_end ov29_0234BEE0 + + arm_func_start ov29_0234BF04 +ov29_0234BF04: ; 0x0234BF04 + ldr r2, _0234BF20 ; =ov29_0235352C + mov r1, #0xc + ldr r2, [r2] + ldr ip, _0234BF24 ; =sub_0200B330 + mla r1, r0, r1, r2 + ldr r0, [r1, #0x24] + bx ip + .align 2, 0 +_0234BF20: .word ov29_0235352C +_0234BF24: .word sub_0200B330 + arm_func_end ov29_0234BF04 + + arm_func_start RunDungeonMode +RunDungeonMode: ; 0x0234BF28 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + mov r4, r1 + bl sub_02017BEC + bl sub_02028E2C + mov r0, #0 + mov r1, r0 + mov r2, r0 + mov r3, r0 + bl sub_020091F8 + mov r0, #0 + mov r1, r0 + mov r2, r0 + mov r3, #1 + bl sub_020091F8 + bl ov29_022E0E8C + bl sub_02027148 + mov r0, #0xf000 + mov r1, #0 + bl sub_0201D7E0 + mov r0, #0x1c0 + mov r1, #0 + bl MemAlloc + ldr r2, _0234C1C8 ; =ov29_023537D8 + mov r1, #0x1c0 + str r0, [r2, #4] + bl MemZero + ldr r0, _0234C1C8 ; =ov29_023537D8 + mov r2, #0 + ldr r1, [r0, #4] + strb r2, [r1, #0x1bc] + ldr r1, [r0, #4] + str r4, [r1, #8] + ldr r0, [r0, #4] + str r4, [r0, #0xc] + bl DungeonAlloc + ldr r1, _0234C1C8 ; =ov29_023537D8 + ldr r1, [r1, #4] + str r0, [r1, #4] + bl DungeonZInit + bl ov29_022DDFF0 + bl ov29_022DDFFC + bl ov29_022DE300 + ldr r0, _0234C1C8 ; =ov29_023537D8 + mov ip, r5 + ldr r0, [r0, #4] + mov r4, #0x1a + add r6, r0, #0x10 +_0234BFE8: + ldmia ip!, {r0, r1, r2, r3} + stmia r6!, {r0, r1, r2, r3} + subs r4, r4, #1 + bne _0234BFE8 + ldmia ip, {r0, r1, r2} + stmia r6, {r0, r1, r2} + bl ov29_0234C9FC + ldr r0, _0234C1CC ; =ov29_0234BBDC + bl sub_02006EC4 + bl sub_02017A68 + bl ov29_022E0CFC + bl ov29_0234C4F8 + cmp r5, #0 + beq _0234C04C + ldrsb r0, [r5, #0xe] + cmp r0, #1 + mov r0, #0 + bne _0234C040 + bl ov29_0234C5EC + mov r0, #1 + bl ov29_0234C584 + b _0234C04C +_0234C040: + bl ov29_0234C584 + mov r0, #1 + bl ov29_0234C584 +_0234C04C: + bl ov29_022DDC00 + ldr r1, _0234C1C8 ; =ov29_023537D8 + mov r2, #1 + ldr r0, _0234C1D0 ; =ov29_0234C1D8 + strb r2, [r1] + bl sub_0200383C + mov r1, #0 + ldr r0, _0234C1D4 ; =ov29_0234BBE8 + mov r2, r1 + bl ov29_022DDD50 + ldr r4, _0234C1C8 ; =ov29_023537D8 + mov r6, #0 +_0234C07C: + bl sub_020038E8 + ldr r0, [r4, #4] + ldrb r0, [r0, #0x1bd] + cmp r0, #0 + bne _0234C0C0 + bl sub_020039E4 + ldr r0, [r4, #4] + ldrb r0, [r0, #0x1bc] + cmp r0, #0 + beq _0234C07C +_0234C0A4: + bl ov30_02382A34 + cmp r0, #2 + cmpne r0, #3 + bne _0234C0A4 + ldr r0, [r4, #4] + strb r6, [r0, #0x1bc] + b _0234C07C +_0234C0C0: + ldr r0, _0234C1D4 ; =ov29_0234BBE8 + bl ov29_022DDDA4 + mov r0, #0 + bl sub_0200383C + bl sub_02034710 + bl ov29_0234CA2C + cmp r5, #0 + beq _0234C108 + ldr r0, _0234C1C8 ; =ov29_023537D8 + mov r4, #0x1a + ldr r0, [r0, #4] + add ip, r0, #0x10 +_0234C0F0: + ldmia ip!, {r0, r1, r2, r3} + stmia r5!, {r0, r1, r2, r3} + subs r4, r4, #1 + bne _0234C0F0 + ldmia ip, {r0, r1, r2} + stmia r5, {r0, r1, r2} +_0234C108: + bl ov29_022DE498 + bl ov29_022DE0A0 + bl ov29_0234C544 + mov r0, #0 + bl sub_02006EC4 + ldr r0, _0234C1C8 ; =ov29_023537D8 + ldr r0, [r0, #4] + cmp r0, #0 + beq _0234C154 + bl DungeonFree + ldr r0, _0234C1C8 ; =ov29_023537D8 + mov r2, #0 + ldr r1, [r0, #4] + str r2, [r1, #4] + ldr r0, [r0, #4] + bl MemFree + ldr r0, _0234C1C8 ; =ov29_023537D8 + mov r1, #0 + str r1, [r0, #4] +_0234C154: + bl sub_0201D804 + bl sub_0202715C + bl ov29_022DDCA0 + bl sub_02017B70 + bl sub_02017BEC + mov r0, #0 + sub r1, r0, #0x100 + bl sub_02008F3C + mov r0, #1 + mvn r1, #0xff + bl sub_02008F3C + mov r0, #0 + bl sub_02009120 + mov r0, #1 + bl sub_02009120 + mov r0, #0 + bl sub_02009514 + mov r0, #1 + bl sub_02009514 + mov r0, #0 + bl sub_020091CC + mov r0, #1 + bl sub_020091CC + mov r0, #0 + bl sub_020093BC + mov r0, #1 + bl sub_020093BC + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0234C1C8: .word ov29_023537D8 +_0234C1CC: .word ov29_0234BBDC +_0234C1D0: .word ov29_0234C1D8 +_0234C1D4: .word ov29_0234BBE8 + arm_func_end RunDungeonMode + + arm_func_start ov29_0234C1D8 +ov29_0234C1D8: ; 0x0234C1D8 + stmdb sp!, {r4, lr} + bl sub_0201BF64 + bl sub_02028E40 + bl sub_020038D8 + cmp r0, #0 + beq _0234C1F4 + bl sub_02003990 +_0234C1F4: + bl ov29_022E0A64 + bl ov29_022DDE24 + bl ov29_022E9F9C + bl HandleFadesDungeonBothScreens + bl sub_02034A80 + bl ov29_022EA008 + ldr r0, _0234C2EC ; =DUNGEON_PTR + ldr r0, [r0] + cmp r0, #0 + beq _0234C230 +#ifdef JAPAN + add r0, r0, #0x2180 + add r0, r0, #0x18000 +#else + add r0, r0, #0x224 + add r0, r0, #0x1a000 +#endif + bl ov10_022BF764 + bl ov29_022E6DD0 + b _0234C238 +_0234C230: + mov r0, #0 + bl ov10_022BF764 +_0234C238: + bl sub_02028848 + bl ov29_022DE868 + ldr r0, _0234C2F0 ; =ov29_023537D8 + ldr r0, [r0, #4] + ldr r0, [r0] + cmp r0, #0 + beq _0234C258 + blx r0 +_0234C258: + bl ov29_022DC670 + bl sub_0201F464 + ldr r0, _0234C2F0 ; =ov29_023537D8 + ldrb r0, [r0] + cmp r0, #0 + bne _0234C274 + bl sub_0201DDFC +_0234C274: + bl sub_02008F84 + bl ov29_022EAFB0 + bl sub_02017A80 + mov r0, #1 + bl sub_02028A64 + bl sub_0201BE28 + bl sub_0201BE5C + bl sub_0201BE84 + bl sub_0204F9CC + bl sub_02003A40 + ldr r1, _0234C2F0 ; =ov29_023537D8 + mov r4, r0 + ldrb r0, [r1] + cmp r0, #0 + beq _0234C2B8 + mov r0, #0 + bl sub_02008ED0 +_0234C2B8: + bl G3X_Reset + bl sub_02008F88 + bl sub_0201DE10 + bl ov10_022BF7D4 + bl ov29_0233992C + bl sub_02028E88 + bl ov29_022DE0CC + bl sub_0201BF4C + ldr r1, _0234C2F0 ; =ov29_023537D8 + mov r2, #0 + mov r0, r4 + strb r2, [r1] + ldmia sp!, {r4, pc} + .align 2, 0 +_0234C2EC: .word DUNGEON_PTR +_0234C2F0: .word ov29_023537D8 + arm_func_end ov29_0234C1D8 + + arm_func_start ov29_0234C2F4 +ov29_0234C2F4: ; 0x0234C2F4 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + mov r1, #0x9c + bl MemZero + add r0, r5, #0x48 + strb r4, [r5, #0x88] + bl InitRender3dElement64 + mov r0, #0x100 + strh r0, [r5, #0x4c] + mov r0, #0xc0 + strh r0, [r5, #0x4e] + mov r0, #1 + strh r0, [r5, #0x72] + strb r0, [r5, #0x86] + mov r0, #2 + strb r0, [r5, #0x84] + mov r0, #0 + strb r0, [r5, #0x77] + strb r0, [r5, #0x74] + strb r0, [r5, #0x75] + strb r0, [r5, #0x76] + strb r0, [r5, #0x99] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_0234C2F4 + + arm_func_start ov29_0234C354 +ov29_0234C354: ; 0x0234C354 + stmdb sp!, {r3, lr} + mov r3, #0 + str r3, [r0, #0x90] + str r3, [r0, #0x8c] + str r3, [r0, #0x94] + strb r3, [r0, #0x98] + ldrb r1, [r0, #0x88] + cmp r1, #1 + bne _0234C384 + ldr r0, [r0, #0x90] + bl ov29_022E0F14 + ldmia sp!, {r3, pc} +_0234C384: + ldrb r2, [r0, #0x99] + cmp r2, #0 + strneb r3, [r0, #0x77] + ldmneia sp!, {r3, pc} + ldr r0, [r0, #0x90] + bl ov29_022E0F14 + ldmia sp!, {r3, pc} + arm_func_end ov29_0234C354 + + arm_func_start ov29_0234C3A0 +ov29_0234C3A0: ; 0x0234C3A0 + stmdb sp!, {r4, lr} + mov r4, r0 + ldrb r1, [r4, #0x88] + cmp r1, #1 + bne _0234C3C8 + ldr r0, [r4, #0x90] + mov r0, r0, asr #0xc + bl ov29_022E0F14 + ldr r0, [r4, #0x90] + ldmia sp!, {r4, pc} +_0234C3C8: + ldrb r0, [r4, #0x99] + cmp r0, #0 + ldr r0, [r4, #0x90] + beq _0234C3F8 + cmp r0, #0 + rsblt r0, r0, #0 + mov r0, r0, asr #0xc + mov r0, r0, lsl #4 + cmp r0, #0x100 + moveq r0, #0xff + strb r0, [r4, #0x77] + ldmia sp!, {r4, pc} +_0234C3F8: + mov r0, r0, asr #0xc + bl ov29_022E0F14 + ldr r0, [r4, #0x90] + ldmia sp!, {r4, pc} + arm_func_end ov29_0234C3A0 + + arm_func_start StartFadeDungeon +StartFadeDungeon: ; 0x0234C408 + stmdb sp!, {r3, lr} + str r2, [r0, #0x8c] + str r1, [r0, #0x94] + mov r1, #1 + strb r1, [r0, #0x98] + ldrb r1, [r0, #0x88] + cmp r1, #1 + bne _0234C464 + cmp r2, #5 + cmpne r2, #3 + moveq r1, #0 + streq r1, [r0, #0x90] + beq _0234C45C + cmp r2, #4 + moveq r1, #0x10000 + streq r1, [r0, #0x90] + beq _0234C45C + cmp r2, #2 + moveq r1, #0x10000 + rsbeq r1, r1, #0 + streq r1, [r0, #0x90] +_0234C45C: + bl ov29_0234C3A0 + ldmia sp!, {r3, pc} +_0234C464: + cmp r2, #5 + bne _0234C488 + mov r1, #0 + str r1, [r0, #0x90] + mov r1, #0xff + strb r1, [r0, #0x74] + strb r1, [r0, #0x75] + strb r1, [r0, #0x76] + b _0234C4F0 +_0234C488: + cmp r2, #3 + bne _0234C4A8 + mov r1, #0 + str r1, [r0, #0x90] + strb r1, [r0, #0x74] + strb r1, [r0, #0x75] + strb r1, [r0, #0x76] + b _0234C4F0 +_0234C4A8: + cmp r2, #4 + bne _0234C4CC + mov r1, #0x10000 + str r1, [r0, #0x90] + mov r1, #0xff + strb r1, [r0, #0x74] + strb r1, [r0, #0x75] + strb r1, [r0, #0x76] + b _0234C4F0 +_0234C4CC: + cmp r2, #2 + bne _0234C4F0 + mov r1, #0x10000 + rsb r1, r1, #0 + str r1, [r0, #0x90] + mov r1, #0 + strb r1, [r0, #0x74] + strb r1, [r0, #0x75] + strb r1, [r0, #0x76] +_0234C4F0: + bl ov29_0234C3A0 + ldmia sp!, {r3, pc} + arm_func_end StartFadeDungeon + + arm_func_start ov29_0234C4F8 +ov29_0234C4F8: ; 0x0234C4F8 + stmdb sp!, {r3, lr} + mov r0, #0x144 + mov r1, #0 + bl MemAlloc + ldr r2, _0234C540 ; =DUNGEON_FADES_PTR + mov r1, #0x144 + str r0, [r2] + bl MemZero + ldr r0, _0234C540 ; =DUNGEON_FADES_PTR + mov r1, #0 + ldr r0, [r0] + bl ov29_0234C2F4 + ldr r0, _0234C540 ; =DUNGEON_FADES_PTR + mov r1, #1 + ldr r0, [r0] + add r0, r0, #0x9c + bl ov29_0234C2F4 + ldmia sp!, {r3, pc} + .align 2, 0 +_0234C540: .word DUNGEON_FADES_PTR + arm_func_end ov29_0234C4F8 + + arm_func_start ov29_0234C544 +ov29_0234C544: ; 0x0234C544 + stmdb sp!, {r3, lr} + ldr r0, _0234C580 ; =DUNGEON_FADES_PTR + ldr r0, [r0] + bl ov29_0234C354 + ldr r0, _0234C580 ; =DUNGEON_FADES_PTR + ldr r0, [r0] + add r0, r0, #0x9c + bl ov29_0234C354 + ldr r0, _0234C580 ; =DUNGEON_FADES_PTR + ldr r0, [r0] + bl MemFree + ldr r0, _0234C580 ; =DUNGEON_FADES_PTR + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0234C580: .word DUNGEON_FADES_PTR + arm_func_end ov29_0234C544 + + arm_func_start ov29_0234C584 +ov29_0234C584: ; 0x0234C584 + stmdb sp!, {r3, lr} + ldr r1, _0234C5E8 ; =DUNGEON_FADES_PTR + mov r2, #0x10000 + ldr r3, [r1] + mov r1, #0x9c + mla r0, r1, r0, r3 + rsb r2, r2, #0 + str r2, [r0, #0x90] + mov r1, #1 + str r1, [r0, #0x8c] + mov r2, #0 + str r2, [r0, #0x94] + strb r1, [r0, #0x98] + ldrb r1, [r0, #0x88] + cmp r1, #1 + bne _0234C5CC + bl ov29_0234C3A0 + ldmia sp!, {r3, pc} +_0234C5CC: + ldrb r1, [r0, #0x99] + cmp r1, #0 + strneb r2, [r0, #0x74] + strneb r2, [r0, #0x75] + strneb r2, [r0, #0x76] + bl ov29_0234C3A0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0234C5E8: .word DUNGEON_FADES_PTR + arm_func_end ov29_0234C584 + + arm_func_start ov29_0234C5EC +ov29_0234C5EC: ; 0x0234C5EC + stmdb sp!, {r3, lr} + ldr r2, _0234C650 ; =DUNGEON_FADES_PTR + mov r1, #0x9c + ldr r3, [r2] + mov r2, #0x10000 + mla r0, r1, r0, r3 + str r2, [r0, #0x90] + mov r2, #1 + str r2, [r0, #0x8c] + mov r1, #0 + str r1, [r0, #0x94] + strb r2, [r0, #0x98] + ldrb r1, [r0, #0x88] + cmp r1, #1 + bne _0234C630 + bl ov29_0234C3A0 + ldmia sp!, {r3, pc} +_0234C630: + ldrb r1, [r0, #0x99] + cmp r1, #0 + movne r1, #0xff + strneb r1, [r0, #0x74] + strneb r1, [r0, #0x75] + strneb r1, [r0, #0x76] + bl ov29_0234C3A0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0234C650: .word DUNGEON_FADES_PTR + arm_func_end ov29_0234C5EC + + arm_func_start ov29_0234C654 +ov29_0234C654: ; 0x0234C654 + ldr r1, _0234C664 ; =DUNGEON_FADES_PTR + ldr r1, [r1] + strh r0, [r1, #0x72] + bx lr + .align 2, 0 +_0234C664: .word DUNGEON_FADES_PTR + arm_func_end ov29_0234C654 + + arm_func_start StartFadeDungeonWrapper +StartFadeDungeonWrapper: ; 0x0234C668 + stmdb sp!, {r3, lr} + ldr r3, _0234C708 ; =DUNGEON_FADES_PTR + mov ip, #0 + ldr lr, [r3] + add lr, lr, r2, lsl #2 + str r0, [lr, #0x138] + ldr r0, [r3] + add r0, r0, r2 + strb ip, [r0, #0x140] + ldr ip, [r3] + add r0, ip, r2, lsl #2 + ldr r0, [r0, #0x138] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _0234C6E0 +_0234C6A4: ; jump table + b _0234C6E0 ; case 0 + b _0234C6C0 ; case 1 + b _0234C6C8 ; case 2 + b _0234C6C8 ; case 3 + b _0234C6D0 ; case 4 + b _0234C6D8 ; case 5 + b _0234C6D8 ; case 6 +_0234C6C0: + mov r3, #2 + b _0234C6E4 +_0234C6C8: + mov r3, #3 + b _0234C6E4 +_0234C6D0: + mov r3, #4 + b _0234C6E4 +_0234C6D8: + mov r3, #5 + b _0234C6E4 +_0234C6E0: + mov r3, #0 +_0234C6E4: + mov r0, #0x9c + mla r0, r2, r0, ip + cmp r3, #0 + bne _0234C6FC + bl ov29_0234C354 + ldmia sp!, {r3, pc} +_0234C6FC: + mov r2, r3 + bl StartFadeDungeon + ldmia sp!, {r3, pc} + .align 2, 0 +_0234C708: .word DUNGEON_FADES_PTR + arm_func_end StartFadeDungeonWrapper + + arm_func_start ov29_0234C70C +ov29_0234C70C: ; 0x0234C70C + ldr r2, _0234C734 ; =DUNGEON_FADES_PTR + mov r1, #0x9c + ldr r2, [r2] + mla r1, r0, r1, r2 + ldr r0, [r1, #0x8c] + cmp r0, #1 + cmpne r0, #0 + moveq r0, #0 + movne r0, #1 + bx lr + .align 2, 0 +_0234C734: .word DUNGEON_FADES_PTR + arm_func_end ov29_0234C70C + + arm_func_start ov29_0234C738 +ov29_0234C738: ; 0x0234C738 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r0 + mov r0, #0x9c + mul r4, r5, r0 + ldr r6, _0234C7D0 ; =DUNGEON_FADES_PTR + mov r7, #5 +_0234C750: + ldr r1, [r6] + add r0, r1, r5, lsl #2 + ldr r0, [r0, #0x138] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _0234C7C0 +_0234C768: ; jump table + b _0234C7C0 ; case 0 + b _0234C784 ; case 1 + b _0234C784 ; case 2 + b _0234C79C ; case 3 + b _0234C784 ; case 4 + b _0234C784 ; case 5 + b _0234C79C ; case 6 +_0234C784: + add r0, r4, r1 + ldr r0, [r0, #0x8c] + cmp r0, #1 + cmpne r0, #0 + bne _0234C7C0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0234C79C: + add r0, r5, r1 + ldrb r0, [r0, #0x140] + cmp r0, #1 + bne _0234C7C0 + add r0, r4, r1 + ldr r0, [r0, #0x8c] + cmp r0, #1 + cmpne r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} +_0234C7C0: + mov r0, r7 + bl AdvanceFrame + b _0234C750 +_0234C7CC: + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0234C7D0: .word DUNGEON_FADES_PTR + arm_func_end ov29_0234C738 + + arm_func_start HandleFadesDungeon +HandleFadesDungeon: ; 0x0234C7D4 + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _0234C9E0 ; =DUNGEON_FADES_PTR + mov r5, r0 + ldr r4, [r1] + add r0, r4, r5, lsl #2 + ldr r2, [r0, #0x138] + cmp r2, #6 + addls pc, pc, r2, lsl #2 + b _0234C8B8 +_0234C7F8: ; jump table + b _0234C8B8 ; case 0 + b _0234C814 ; case 1 + b _0234C8B8 ; case 2 + b _0234C830 ; case 3 + b _0234C814 ; case 4 + b _0234C8B8 ; case 5 + b _0234C830 ; case 6 +_0234C814: + mov r0, #0x9c + mla r0, r5, r0, r4 + ldr r1, [r0, #0x8c] + cmp r1, #1 + bne _0234C8B8 + bl ov29_0234C354 + ldmia sp!, {r3, r4, r5, pc} +_0234C830: + adds r0, r4, #0x140 + mov r0, #0x9c + bne _0234C888 + mla r0, r5, r0, r4 + ldr r1, [r0, #0x8c] + cmp r1, #1 + bne _0234C8B8 + cmp r2, #3 + ldr r1, [r0, #0x94] + bne _0234C864 + mov r2, #2 + bl StartFadeDungeon + b _0234C86C +_0234C864: + mov r2, #4 + bl StartFadeDungeon +_0234C86C: + ldr r0, _0234C9E0 ; =DUNGEON_FADES_PTR + ldr r0, [r0] + add r1, r0, #0x140 + ldrb r0, [r1, r5] + add r0, r0, #1 + strb r0, [r1, r5] + b _0234C8B8 +_0234C888: + mul r3, r5, r0 + add r0, r4, r3 + ldr r0, [r0, #0x8c] + cmp r0, #1 + bne _0234C8B8 + add r0, r4, r5 + mov r2, #0 + strb r2, [r0, #0x140] + ldr r0, [r1] + add r0, r0, r3 + bl ov29_0234C354 + ldmia sp!, {r3, r4, r5, pc} +_0234C8B8: + ldr r1, _0234C9E0 ; =DUNGEON_FADES_PTR + mov r0, #0x9c + ldr r1, [r1] + mla r4, r5, r0, r1 + ldrb r0, [r4, #0x98] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0x88] + cmp r0, #1 + bne _0234C8EC + mov r0, r4 + bl ov29_0234C3A0 + b _0234C918 +_0234C8EC: + ldrb r0, [r4, #0x99] + cmp r0, #0 + mov r0, r4 + beq _0234C914 + bl ov29_0234C3A0 + cmp r0, #0 + beq _0234C918 + add r0, r4, #0x48 + bl sub_0201F2A0 + b _0234C918 +_0234C914: + bl ov29_0234C3A0 +_0234C918: + ldr r0, [r4, #0x8c] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + ldmia sp!, {r3, r4, r5, pc} +_0234C928: ; jump table + ldmia sp!, {r3, r4, r5, pc} ; case 0 + ldmia sp!, {r3, r4, r5, pc} ; case 1 + b _0234C9BC ; case 2 + b _0234C968 ; case 3 + b _0234C994 ; case 4 + b _0234C940 ; case 5 +_0234C940: + ldr r1, [r4, #0x90] + ldr r0, [r4, #0x94] + add r0, r1, r0 + str r0, [r4, #0x90] + cmp r0, #0x10000 + movge r0, #0x10000 + strge r0, [r4, #0x90] + movge r0, #1 + strge r0, [r4, #0x8c] + ldmia sp!, {r3, r4, r5, pc} +_0234C968: + ldr r2, [r4, #0x90] + ldr r1, [r4, #0x94] + mov r0, #0x10000 + sub r1, r2, r1 + rsb r0, r0, #0 + str r1, [r4, #0x90] + cmp r1, r0 + strle r0, [r4, #0x90] + movle r0, #1 + strle r0, [r4, #0x8c] + ldmia sp!, {r3, r4, r5, pc} +_0234C994: + ldr r1, [r4, #0x90] + ldr r0, [r4, #0x94] + sub r0, r1, r0 + str r0, [r4, #0x90] + cmp r0, #0 + movle r0, #0 + strle r0, [r4, #0x90] + movle r0, #1 + strle r0, [r4, #0x8c] + ldmia sp!, {r3, r4, r5, pc} +_0234C9BC: + ldr r1, [r4, #0x90] + ldr r0, [r4, #0x94] + adds r0, r1, r0 + str r0, [r4, #0x90] + movpl r0, #0 + strpl r0, [r4, #0x90] + movpl r0, #1 + strpl r0, [r4, #0x8c] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0234C9E0: .word DUNGEON_FADES_PTR + arm_func_end HandleFadesDungeon + + arm_func_start HandleFadesDungeonBothScreens +HandleFadesDungeonBothScreens: ; 0x0234C9E4 + stmdb sp!, {r3, lr} + mov r0, #0 + bl HandleFadesDungeon + mov r0, #1 + bl HandleFadesDungeon + ldmia sp!, {r3, pc} + arm_func_end HandleFadesDungeonBothScreens + + arm_func_start ov29_0234C9FC +ov29_0234C9FC: ; 0x0234C9FC + stmdb sp!, {r3, lr} + mov r0, #8 + mov r1, #0 + bl MemAlloc + ldr r1, _0234CA28 ; =ov29_023537E4 + mov r2, #0 + str r0, [r1] + str r2, [r0, #4] + ldr r0, [r1] + str r2, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0234CA28: .word ov29_023537E4 + arm_func_end ov29_0234C9FC + + arm_func_start ov29_0234CA2C +ov29_0234CA2C: ; 0x0234CA2C + stmdb sp!, {r3, lr} + mov r0, #0x21 + bl OverlayIsLoaded + cmp r0, #0 + beq _0234CA48 + mov r0, #0x21 + bl UnloadOverlay +_0234CA48: + ldr r0, _0234CA64 ; =ov29_023537E4 + ldr r0, [r0] + bl MemFree + ldr r0, _0234CA64 ; =ov29_023537E4 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0234CA64: .word ov29_023537E4 + arm_func_end ov29_0234CA2C + + arm_func_start ov29_0234CA68 +ov29_0234CA68: ; 0x0234CA68 + ldr r0, _0234CA78 ; =ov29_023537E4 + ldr r0, [r0] + ldr r0, [r0, #4] + bx lr + .align 2, 0 +_0234CA78: .word ov29_023537E4 + arm_func_end ov29_0234CA68 + + arm_func_start ov29_0234CA7C +ov29_0234CA7C: ; 0x0234CA7C + mov r0, #0x5800 + bx lr + arm_func_end ov29_0234CA7C + + arm_func_start ov29_0234CA84 +ov29_0234CA84: ; 0x0234CA84 + stmdb sp!, {r3, lr} + ldr r0, _0234CAC4 ; =ov29_023537E4 + mov r3, #1 + ldr r1, [r0] + ldr r2, _0234CAC8 ; =ov29_0237D000 + str r3, [r1] + ldr r1, [r0] + mov r0, #0x21 + str r2, [r1, #4] + bl LoadOverlay + ldr r0, _0234CAC4 ; =ov29_023537E4 + mov r1, #0x5800 + ldr r0, [r0] + ldr r0, [r0, #4] + bl WriteQuicksaveData + ldmia sp!, {r3, pc} + .align 2, 0 +_0234CAC4: .word ov29_023537E4 +_0234CAC8: .word ov29_0237D000 + arm_func_end ov29_0234CA84 + + arm_func_start ov29_0234CACC +ov29_0234CACC: ; 0x0234CACC + stmdb sp!, {r3, lr} + mov r0, #0x21 + bl OverlayIsLoaded + cmp r0, #0 + beq _0234CAE8 + mov r0, #0x21 + bl UnloadOverlay +_0234CAE8: + ldr r0, _0234CAFC ; =ov29_023537E4 + mov r1, #0 + ldr r0, [r0] + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0234CAFC: .word ov29_023537E4 + arm_func_end ov29_0234CACC + + arm_func_start ov29_0234CB00 +ov29_0234CB00: ; 0x0234CB00 + ldr r0, _0234CB28 ; =ov29_023537E4 + mov r3, #2 + ldr r1, [r0] + ldr r2, _0234CB2C ; =ov29_0237D000 + str r3, [r1] + ldr r1, [r0] + ldr ip, _0234CB30 ; =LoadOverlay + mov r0, #0x21 + str r2, [r1, #4] + bx ip + .align 2, 0 +_0234CB28: .word ov29_023537E4 +_0234CB2C: .word ov29_0237D000 +_0234CB30: .word LoadOverlay + arm_func_end ov29_0234CB00 + + arm_func_start ov29_0234CB34 +ov29_0234CB34: ; 0x0234CB34 + ldr r0, _0234CB4C ; =ov29_023537E4 + ldr ip, _0234CB50 ; =ov30_023842F4 + ldr r0, [r0] + mov r1, #0x5800 + ldr r0, [r0, #4] + bx ip + .align 2, 0 +_0234CB4C: .word ov29_023537E4 +_0234CB50: .word ov30_023842F4 + arm_func_end ov29_0234CB34 + + arm_func_start ov29_0234CB54 +ov29_0234CB54: ; 0x0234CB54 + stmdb sp!, {r3, lr} + mov r0, #0x21 + bl OverlayIsLoaded + cmp r0, #0 + beq _0234CB70 + mov r0, #0x21 + bl UnloadOverlay +_0234CB70: + ldr r0, _0234CB84 ; =ov29_023537E4 + mov r1, #0 + ldr r0, [r0] + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0234CB84: .word ov29_023537E4 + arm_func_end ov29_0234CB54 + + arm_func_start DisplayFloorTip +DisplayFloorTip: ; 0x0234CB88 + stmdb sp!, {r3, lr} + bl GetLeader + ldr r2, _0234CC88 ; =DUNGEON_PTR + mvn r3, #0 + ldr r1, [r2] + ldr r0, _0234CC8C ; =ov29_023532C0 + add r1, r1, #0x100 + strh r3, [r1, #0xd8] + ldr r2, [r2] + mov r1, #1 + add r2, r2, #0x100 + strh r3, [r2, #0xda] + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CC90 ; =ov29_023532B8 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CC94 ; =ov29_023532B0 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CC98 ; =ov29_02353240 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldreq r0, _0234CC88 ; =DUNGEON_PTR + ldreq r0, [r0] + ldreqb r0, [r0, #0x748] + cmpeq r0, #3 + ldmneia sp!, {r3, pc} + ldr r0, _0234CC9C ; =ov29_023532A0 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CCA0 ; =ov29_02353298 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CCA4 ; =ov29_02353290 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CCA8 ; =ov29_02353278 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CCAC ; =ov29_02353238 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CCB0 ; =ov29_023532E0 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0234CC88: .word DUNGEON_PTR +_0234CC8C: .word ov29_023532C0 +_0234CC90: .word ov29_023532B8 +_0234CC94: .word ov29_023532B0 +_0234CC98: .word ov29_02353240 +_0234CC9C: .word ov29_023532A0 +_0234CCA0: .word ov29_02353298 +_0234CCA4: .word ov29_02353290 +_0234CCA8: .word ov29_02353278 +_0234CCAC: .word ov29_02353238 +_0234CCB0: .word ov29_023532E0 + arm_func_end DisplayFloorTip + + arm_func_start DisplayItemTip +DisplayItemTip: ; 0x0234CCB4 + stmdb sp!, {r4, lr} + ldr r2, _0234CEA4 ; =DUNGEON_PTR + mvn r3, #0 + ldr r1, [r2] + mov r4, r0 + add r1, r1, #0x100 + strh r3, [r1, #0xd8] + ldr r1, [r2] + add r1, r1, #0x100 + strh r3, [r1, #0xda] + bl GetItemCategoryVeneer + cmp r0, #3 + bne _0234CCF8 + ldr r0, _0234CEA8 ; =ov29_023532F0 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CCF8: + cmp r4, #0x46 + bne _0234CD10 + ldr r0, _0234CEAC ; =ov29_023532F8 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CD10: + cmp r4, #0x52 + bne _0234CD28 + ldr r0, _0234CEB0 ; =ov29_023532D8 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CD28: + cmp r4, #0x57 + bne _0234CD40 + ldr r0, _0234CEB4 ; =ov29_023532C8 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CD40: + cmp r4, #8 + bne _0234CD58 + ldr r0, _0234CEB8 ; =ov29_02353250 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CD58: + cmp r4, #0x51 + bne _0234CD70 + ldr r0, _0234CEBC ; =ov29_02353248 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CD70: + cmp r4, #0x54 + bne _0234CD88 + ldr r0, _0234CEC0 ; =ov29_02353270 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CD88: + cmp r4, #0xb7 + bne _0234CDA0 + ldr r0, _0234CEC4 ; =ov29_02353280 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CDA0: + cmp r4, #0x63 + bne _0234CDB8 + ldr r0, _0234CEC8 ; =ov29_023532A8 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CDB8: + cmp r4, #0x45 + bne _0234CDD0 + ldr r0, _0234CECC ; =ov29_02353300 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CDD0: + cmp r4, #0x5b + bne _0234CDE8 + ldr r0, _0234CED0 ; =ov29_02353258 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CDE8: + cmp r4, #0x56 + bne _0234CE00 + ldr r0, _0234CED4 ; =ov29_02353268 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CE00: + cmp r4, #0x5e + bne _0234CE18 + ldr r0, _0234CED8 ; =ov29_02353288 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CE18: + cmp r4, #0x4c + bne _0234CE30 + ldr r0, _0234CEDC ; =ov29_023532E8 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CE30: + cmp r4, #0x60 + bne _0234CE48 + ldr r0, _0234CEE0 ; =ov29_02353260 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CE48: + cmp r4, #0x75 + bne _0234CE60 + ldr r0, _0234CEE4 ; =ov29_02353308 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CE60: + ldr r0, _0234CEA4 ; =DUNGEON_PTR + ldr r0, [r0] + ldrb r0, [r0, #0x748] +#ifdef JAPAN + cmp r0, #0x7a +#else + cmp r0, #0x7b +#endif + ldmneia sp!, {r4, pc} + ldr r0, _0234CEE8 ; =0xFFFFFED2 + add r0, r4, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + ldmhiia sp!, {r4, pc} + ldr r0, _0234CEEC ; =ov29_02353310 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} + .align 2, 0 +_0234CEA4: .word DUNGEON_PTR +_0234CEA8: .word ov29_023532F0 +_0234CEAC: .word ov29_023532F8 +_0234CEB0: .word ov29_023532D8 +_0234CEB4: .word ov29_023532C8 +_0234CEB8: .word ov29_02353250 +_0234CEBC: .word ov29_02353248 +_0234CEC0: .word ov29_02353270 +_0234CEC4: .word ov29_02353280 +_0234CEC8: .word ov29_023532A8 +_0234CECC: .word ov29_02353300 +_0234CED0: .word ov29_02353258 +_0234CED4: .word ov29_02353268 +_0234CED8: .word ov29_02353288 +_0234CEDC: .word ov29_023532E8 +_0234CEE0: .word ov29_02353260 +_0234CEE4: .word ov29_02353308 +_0234CEE8: .word 0xFFFFFED2 +_0234CEEC: .word ov29_02353310 + arm_func_end DisplayItemTip + + arm_func_start DisplayDungeonTip +DisplayDungeonTip: ; 0x0234CEF0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, [r5] + mov r4, r1 + bl GetDungeonTipShown + cmp r0, #0 + bne _0234CF58 + ldrh r0, [r5, #4] + bl StringFromId + ldrb r0, [r0] + cmp r0, #0 + beq _0234CF58 + ldr r0, [r5] + bl SetDungeonTipShown + bl ov29_022EACBC + ldrh r1, [r5, #4] + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + cmp r4, #0 + beq _0234CF50 + bl GetLeader + ldrh r1, [r5, #4] + bl LogMessageByIdQuiet +_0234CF50: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_0234CF58: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end DisplayDungeonTip + + arm_func_start SetBothScreensWindowColorToDefault +SetBothScreensWindowColorToDefault: ; 0x0234CF60 + stmdb sp!, {r3, lr} + bl GetGameMode + cmp r0, #3 + bne _0234CF7C + mov r0, #2 + bl SetBothScreensWindowsColor + ldmia sp!, {r3, pc} +_0234CF7C: + bl GetPlayerGender + cmp r0, #1 + bne _0234CF94 + mov r0, #0 + bl SetBothScreensWindowsColor + ldmia sp!, {r3, pc} +_0234CF94: + mov r0, #1 + bl SetBothScreensWindowsColor + ldmia sp!, {r3, pc} + arm_func_end SetBothScreensWindowColorToDefault + + arm_func_start ov29_0234CFA0 +ov29_0234CFA0: ; 0x0234CFA0 + stmdb sp!, {r3, lr} + bl IsFullFloorFixedRoom + cmp r0, #0 + movne r0, #2 + ldmneia sp!, {r3, pc} + ldr r0, _0234CFE8 ; =DUNGEON_PTR + ldr r0, [r0] + ldrb r0, [r0, #0x748] + bl IsFutureDungeon + cmp r0, #0 + bne _0234CFD8 + bl IsSecretFloor + cmp r0, #0 + beq _0234CFE0 +_0234CFD8: + mov r0, #1 + ldmia sp!, {r3, pc} +_0234CFE0: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0234CFE8: .word DUNGEON_PTR + arm_func_end ov29_0234CFA0 + + arm_func_start GetPersonalityIndex +GetPersonalityIndex: ; 0x0234CFEC + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldrb r0, [r5, #0x48] + cmp r0, #0xd8 + cmpne r0, #0xf9 + cmpne r0, #0xf7 + cmpne r0, #0xf8 + beq _0234D1D4 + cmp r0, #0xd6 + blo _0234D1D4 + cmp r0, #0xd7 + bne _0234D04C + mov r0, #0 + mov r1, #0x43 + bl LoadScriptVariableValue + cmp r0, #1 + moveq r4, #0x4b0 + beq _0234D1E0 + cmp r0, #2 + ldreq r4, _0234D1E8 ; =0x000004B1 + beq _0234D1E0 + cmp r0, #3 + ldreq r4, _0234D1EC ; =0x000004B2 + b _0234D1E0 +_0234D04C: + cmp r0, #0xd6 + bne _0234D0A0 + ldrsh r2, [r5, #2] + ldr r1, _0234D1F0 ; =0x000001B2 + cmp r2, r1 + ldreq r4, _0234D1F4 ; =0x000004CD + beq _0234D1E0 + cmp r2, #0xae + addeq r4, r1, #0x31c + beq _0234D1E0 + add r0, r1, #0x27c + cmp r2, r0 + ldreq r4, _0234D1F8 ; =0x000004CF + beq _0234D1E0 + sub r0, r1, #0x99 + cmp r2, r0 + moveq r4, #0x4d0 + beq _0234D1E0 + cmp r2, #0x318 + ldreq r4, _0234D1FC ; =0x000004D1 + b _0234D1E0 +_0234D0A0: + cmp r0, #0xda +#ifdef JAPAN + bne _0234E334 + ldr r0, _0234D204 ; =DUNGEON_PTR + ldr r0, [r0] + ldrb r0, [r0, #0x748] + bl IsFutureDungeon + cmp r0, #0 + ldrne r0, _0234E48C ; =0x000004BC + ldreq r0, _0234D200 ; =0x000004B3 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 + b _0234D1E0 +_0234E334: +#else + ldreq r4, _0234D200 ; =0x000004B3 + beq _0234D1E0 +#endif + cmp r0, #0xed + bne _0234D148 + ldr r0, _0234D204 ; =DUNGEON_PTR + ldr r0, [r0] + ldrb r1, [r0, #0x748] + add r0, r1, #0x7b + and r0, r0, #0xff + cmp r0, #2 + ldrls r4, _0234D208 ; =0x000004C4 + bls _0234D1E0 + cmp r1, #0x88 + ldreq r4, _0234D20C ; =0x000004C6 + beq _0234D1E0 + add r0, r1, #0x77 + and r0, r0, #0xff + cmp r0, #1 + ldrls r4, _0234D210 ; =0x000004C7 + bls _0234D1E0 + add r0, r1, #0x75 + and r0, r0, #0xff + cmp r0, #1 + ldrls r4, _0234D214 ; =0x000004C8 + bls _0234D1E0 + cmp r1, #0x8d + ldreq r4, _0234D218 ; =0x000004C9 + beq _0234D1E0 + add r0, r1, #0x72 + and r0, r0, #0xff + cmp r0, #2 + ldrls r4, _0234D21C ; =0x000004CA + bls _0234D1E0 + cmp r1, #0x91 + ldreq r4, _0234D220 ; =0x000004CB + beq _0234D1E0 + add r0, r1, #0x6e + and r0, r0, #0xff + cmp r0, #2 + ldrls r4, _0234D224 ; =0x000004CC + b _0234D1E0 +_0234D148: + cmp r0, #0xe2 + bne _0234D170 + mov r0, #0x1a + bl GetPerformanceFlagWithChecks + cmp r0, #0 + beq _0234D170 + ldrsh r0, [r5, #2] + bl sub_02025784 + mov r4, r0 + b _0234D1E0 +_0234D170: + ldr r1, _0234D228 ; =ov29_023537E8 + b _0234D1C4 +_0234D178: + ldrb r0, [r5, #0x48] + cmp r0, r2 + bne _0234D1C0 + ldrsh r4, [r1, #2] + ldr r0, _0234D22C ; =0x000004B8 + cmp r4, r0 + bne _0234D1A8 + ldrsh r0, [r5, #2] + cmp r0, #0x1f8 + cmpne r0, #0x51 + ldreq r4, _0234D230 ; =0x000004D3 + beq _0234D1E0 +_0234D1A8: + cmp r4, #0 + bne _0234D1E0 + ldrsh r0, [r5, #2] + bl sub_02025784 + mov r4, r0 + b _0234D1E0 +_0234D1C0: + add r1, r1, #4 +_0234D1C4: + ldrb r2, [r1] + cmp r2, #0xff + bne _0234D178 + b _0234D1E0 +_0234D1D4: + ldrsh r0, [r5, #4] + bl sub_02025784 + mov r4, r0 +_0234D1E0: + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0234D1E8: .word 0x000004B1 +_0234D1EC: .word 0x000004B2 +_0234D1F0: .word 0x000001B2 +_0234D1F4: .word 0x000004CD +_0234D1F8: .word 0x000004CF +_0234D1FC: .word 0x000004D1 +#ifdef JAPAN +_0234D204: .word DUNGEON_PTR +_0234E48C: .word 0x000004BC +_0234D200: .word 0x000004B3 +#else +_0234D200: .word 0x000004B3 +_0234D204: .word DUNGEON_PTR +#endif +_0234D208: .word 0x000004C4 +_0234D20C: .word 0x000004C6 +_0234D210: .word 0x000004C7 +_0234D214: .word 0x000004C8 +_0234D218: .word 0x000004C9 +_0234D21C: .word 0x000004CA +_0234D220: .word 0x000004CB +_0234D224: .word 0x000004CC +_0234D228: .word ov29_023537E8 +_0234D22C: .word 0x000004B8 +_0234D230: .word 0x000004D3 + arm_func_end GetPersonalityIndex + + arm_func_start ov29_0234D234 +ov29_0234D234: ; 0x0234D234 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr lr, [sp, #0x10] + ldrb ip, [sp, #0x14] + str lr, [sp] + str ip, [sp, #4] + bl ov29_0234D5D0 + add sp, sp, #8 + ldmia sp!, {r3, pc} + arm_func_end ov29_0234D234 + + arm_func_start DisplayMessage +DisplayMessage: ; 0x0234D258 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r6, r0 + mov r5, r1 + mov r4, r2 + mov r0, #0xa + bl ov29_0234BA54 + bl ov29_0234D558 + bl ov29_0234B034 + mov r1, r4 + mov r2, r6 + str r0, [sp] + mov r0, r5 + mov r3, #0 + str r3, [sp, #4] + bl DisplayMessageInternal + mov r0, #0xb + mov r1, #0 + bl ov29_022EA428 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end DisplayMessage + + arm_func_start DisplayMessage2 +DisplayMessage2: ; 0x0234D2AC + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r6, r0 + mov r5, r1 + mov r4, r2 + mov r0, #0xa + bl ov29_0234BA54 + bl ov29_0234D558 + bl ov29_0234B034 + mov r1, r4 + mov r2, r6 + str r0, [sp] + mov r0, r5 + mov r3, #1 + str r3, [sp, #4] + mov r3, #0 + bl DisplayMessageInternal + mov r0, #0 + mov r1, r0 + bl ov29_022EA428 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end DisplayMessage2 + + arm_func_start ov29_0234D304 +ov29_0234D304: ; 0x0234D304 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x58 + ldr r4, _0234D454 ; =ov29_02353563 + mov r8, r0 + ldrb r0, [r4] + mov r7, r1 + mov r6, r2 + mov r5, r3 + cmp r0, #0 + beq _0234D334 + mov r0, #0xa + bl ov29_0234BA54 +_0234D334: + bl ov29_0234D558 + mov r0, r8 + bl IsMonster__0234D460 + cmp r0, #0 + beq _0234D41C + mov r0, r8 + bl IsMonster__0234D460 + cmp r0, #0 + beq _0234D3F8 + ldr r4, [r8, #0xb4] + bl FixedRoomIsSubstituteRoom + cmp r0, #0 + beq _0234D3BC + bl GetRandomExplorerMazeMonster + cmp r0, #0 + moveq r1, #0 + beq _0234D38C + ldr r1, [r0] + cmp r1, #0 + movne r1, #1 + moveq r1, #0 + and r1, r1, #0xff +_0234D38C: + cmp r1, #0 + moveq r0, #0 + streq r0, [sp, #8] + beq _0234D3D0 + ldr r1, [r0, #0xb4] + ldr r0, _0234D458 ; =ov29_02353368 + ldrb r1, [r1, #0xbc] + sub r1, r1, #0xb + orr r1, r1, #0x90000 + str r1, [sp, #8] + bl Debug_Print0 + b _0234D3D0 +_0234D3BC: + bl ov29_02337EE8 + mov r1, r0 + ldr r0, _0234D45C ; =ov29_02353380 + str r1, [sp, #8] + bl Debug_Print0 +_0234D3D0: + ldrsh r0, [r4, #4] + str r0, [sp, #0xc] + bl ov29_0233804C + str r0, [sp, #0x18] + mov r0, r8 + bl ov29_0231ADA8 + str r0, [sp, #0x1c] + ldrsh r0, [r4, #0xc] + orr r0, r0, #0x30000 + str r0, [sp, #0x54] +_0234D3F8: + add r3, sp, #8 + str r3, [sp] + mov r3, #1 + mov r0, r6 + mov r1, r5 + mov r2, r7 + str r3, [sp, #4] + bl ov29_0234D5D0 + b _0234D440 +_0234D41C: + bl ov29_0234B034 + str r0, [sp] + mov r4, #1 + mov r0, r6 + mov r1, r5 + mov r2, r7 + mov r3, #0 + str r4, [sp, #4] + bl ov29_0234D5D0 +_0234D440: + mov r0, #0 + mov r1, r0 + bl ov29_022EA428 + add sp, sp, #0x58 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0234D454: .word ov29_02353563 +_0234D458: .word ov29_02353368 +_0234D45C: .word ov29_02353380 + arm_func_end ov29_0234D304 diff --git a/include/overlay_29_0234BBE8.h b/include/overlay_29_0234BBE8.h new file mode 100644 index 00000000..ec585568 --- /dev/null +++ b/include/overlay_29_0234BBE8.h @@ -0,0 +1,6 @@ +#ifndef PMDSKY_OVERLAY_29_0234BBE8_H +#define PMDSKY_OVERLAY_29_0234BBE8_H + +void ov29_0234BBE8(); + +#endif //PMDSKY_OVERLAY_29_0234BBE8_H diff --git a/main.lsf b/main.lsf index fcdfd010..d2092f79 100644 --- a/main.lsf +++ b/main.lsf @@ -479,6 +479,8 @@ Overlay OVY_29 Object asm/overlay_29_02347BC8.o Object src/overlay_29_0234987C.o Object asm/overlay_29_023498A0.o + Object src/overlay_29_0234BBE8.o + Object asm/overlay_29_0234BEE0.o Object src/overlay_29_0234D460.o Object asm/overlay_29_0234D484.o Object src/overlay_29_0234DDD0.o diff --git a/src/overlay_29_0234BBE8.c b/src/overlay_29_0234BBE8.c new file mode 100644 index 00000000..1112ebeb --- /dev/null +++ b/src/overlay_29_0234BBE8.c @@ -0,0 +1,175 @@ +#include "overlay_29_0234BBE8.h" +#include "util.h" + +struct unk_ov29_023537DC { + s32 v0; + u8 v4; + s32 v8; + u8 v0xc; + u8 v0xd; +}; + +typedef struct { + u8 v0; + struct unk_ov29_023537DC *v4; +} unk_ov29_023537D8_t; + +extern unk_ov29_023537D8_t ov29_023537D8; +void ov29_022DC61C(); // mem init? +void ov29_022DEBA4(); // thunk_FUN_022deadc +void ov29_0234CB00(); +s32 ov29_0234CA68(); +s32 ov29_0234CA7C(); +bool8 sub_0204AFF8(); // is GAME_MODE rescue? +void ov30_02382820(s32, s32, s32); +s32 ov30_02382874(); +void ov29_022DDEF8(); +s32 ov30_0238298C(); +void ov30_023829A0(); +void sub_02048DC4(s32); +void ov29_022DEBB0(); +void sub_02051DD0(s32, s32); +void sub_02051E60(s32, s32); +void ov29_0234BEE0(s32); +void ov29_0234BF04(s32); +s32 GetDungeonPtrMaster(); +void RunDungeon(void *, s32); +s32 sub_0205BAB0(void *); +void ov29_022DE418(); +void sub_020091B0(s32, s32); +void sub_02009194(s32, s32); +void StartFadeDungeonWrapper(s32,s32,s32); +void ov29_0234C738(s32); +void SetAdventureLogDungeonFloor(void *); +void StopBgmCommand(); +bool8 sub_0204AFF8(); +s32 ov29_0234CA68(); +s32 ov29_0234CA7C(); +void ov30_023829CC(s32, s32, s32); +void ov29_022DDE00(s32); +void ov30_02382C30(); +void ov29_0234CACC(); +void ov29_022DC65C(); +void sub_02017B70(); + +void ov29_0234BBE8(void) +{ + s32 uVar3; + s32 uVar4; + s32 uVar5; + s32 iVar6; + bool8 bVar1 = FALSE; + struct unk_ov29_023537DC *iVar7 = ov29_023537D8.v4; + ov29_022DC61C(); // mem init? + if (iVar7[1].v4 != 0) + { + ov29_022DEBA4(); // thunk_FUN_022deadc/fade? + ov29_0234CB00(); // do something with overlays + uVar3 = ov29_0234CA68(); + uVar4 = ov29_0234CA7C(); + uVar5 = sub_0204AFF8(); // is GAME_MODE rescue? + ov30_02382820(uVar3,uVar4,uVar5); // alloc these values + while (iVar6 = ov30_02382874(), iVar6 != 0) + { + ov29_022DDEF8(); + } + iVar6 = ov30_0238298C(); + ov30_023829A0(); + if (iVar6 != 0) + { + sub_02048DC4(0xF1208); + } + else + { + sub_02048DC4(0xF1209); + } + ov29_022DEBB0(); + if (iVar6 == 0) + { + iVar7[12].v0 = 5; + bVar1 = TRUE; + ov29_022DDEF8(); + } + } + while (!bVar1) + { + ov29_022DDEF8(); + if (ov29_023537D8.v0 != 0) continue; + switch (ov29_023537D8.v4->v8) + { + case 1: + sub_02051DD0(0,0); + sub_02051DD0(1,0); + sub_02051DD0(0,1); + sub_02051DD0(1,1); + sub_02051E60(0,0); + sub_02051E60(1,0); + sub_02051E60(0,1); + sub_02051E60(1,1); + ov29_0234BEE0(0); + ov29_0234BEE0(1); + ov29_0234BF04(0); + ov29_0234BF04(1); + uVar3 = GetDungeonPtrMaster(); + RunDungeon(&(ov29_023537D8.v4[1]), uVar3); + bVar1 = TRUE; + break; + case 2: + bVar1 = TRUE; + break; + } + } + if (&(ov29_023537D8.v4[1]) == (void *)0) goto _0234beb8; + iVar7 = &(ov29_023537D8.v4[1]); + iVar6 = -2; + if (iVar7[11].v0 == -2) + { + iVar6 = sub_0205BAB0(&(iVar7[11].v8)); + } + if (iVar7[11].v0 != 3) + { + iVar6 = -2; + if (iVar7[11].v0 != iVar6) goto _0234beb8; + } + iVar7 = ov29_023537D8.v4; + ov29_022DE418(); + sub_020091B0(0,0); + sub_020091B0(1,0); + sub_02009194(2,0); + sub_02009194(3,0); + sub_020091B0(4,0); + StartFadeDungeonWrapper(1,0x4000,0); + ov29_0234C738(0); + SetAdventureLogDungeonFloor(&(iVar7[12].v4)); + sub_02017B70(); + if (iVar7[12].v0 != -2 && sub_0204AFF8()) + { + uVar3 = 1; + } + else + { + uVar3 = 0; + } + uVar4 = ov29_0234CA68(); + uVar5 = ov29_0234CA7C(); + ov30_023829CC(uVar4,uVar5,uVar3); + ov29_022DDE00(0x10); + iVar7 = ov29_023537D8.v4; + iVar7[0x1b].v0xc = 1; + while (ov29_023537D8.v4[0x1b].v0xc != 0) + { + ov29_022DDEF8(); + } + ov30_02382C30(); + ov29_0234CACC(); + ov29_022DDE00(2); + StartFadeDungeonWrapper(2,0x4000,0); + ov29_0234C738(0); +_0234beb8: + ov29_022DC65C(); + ov29_023537D8.v4[0x1b].v0xd = 1; + do + { + ov29_022DDEF8(); + } while( TRUE ); +} From ad92503af7a8ca31b40e13015b7a968284c4b058 Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Sun, 15 Jun 2025 17:36:05 -0500 Subject: [PATCH 2/7] Decomped ov29_022DC61C Decomped by ElectricGeorge --- asm/include/overlay_29_022DC314.inc | 89 +- asm/include/overlay_29_022DC65C.inc | 82 + asm/overlay_29_022DC314.s | 2773 --------------------------- asm/overlay_29_022DC65C.s | 2756 ++++++++++++++++++++++++++ include/overlay_29_022DC61C.h | 7 + main.lsf | 2 + src/overlay_29_022DC61C.c | 17 + src/overlay_29_0234BBE8.c | 2 +- 8 files changed, 2869 insertions(+), 2859 deletions(-) create mode 100644 asm/include/overlay_29_022DC65C.inc create mode 100644 asm/overlay_29_022DC65C.s create mode 100644 include/overlay_29_022DC61C.h create mode 100644 src/overlay_29_022DC61C.c diff --git a/asm/include/overlay_29_022DC314.inc b/asm/include/overlay_29_022DC314.inc index 5643d044..560de786 100644 --- a/asm/include/overlay_29_022DC314.inc +++ b/asm/include/overlay_29_022DC314.inc @@ -1,99 +1,18 @@ #pragma once -.public _020AFC4C -.public _020AFC70 -.public _s32_div_f .public Debug_Print0 -.public DirectoryFileMngr_OpenDirectoryFile -.public DrawTeamStats -.public DUNGEON_PTR -.public FreeMapAndTeam -.public FreeTeamStats -.public GetDefaultTileTextureId -.public HandleSir0Translation -.public IsBackgroundTileset .public LoadFileFromRom -.public MemAlloc -.public MemFree -.public MemZero -.public ov10_022C0814 -.public ov10_022C096C -.public ov10_022C0998 -.public ov10_022C0F6C -.public ov10_022C11D8 -.public ov10_022C14D0 -.public ov10_022C159C -.public ov10_022C22A0 -.public ov29_022DC240 -.public ov29_022DC2B8 +.public Render3dSetPaletteBase +.public Render3dSetTextureParams +.public Render3dTextureNoSetup +.public _020AFC70 .public ov29_0234FD04 .public ov29_0234FD14 .public ov29_0234FD48 .public ov29_0234FD4C .public ov29_0234FD50 .public ov29_0234FD54 -.public ov29_02350F88 -.public ov29_02350F8C -.public ov29_02350F90 -.public ov29_0235109C -.public ov29_023510B8 -.public ov29_023510BC -.public ov29_023534E0 .public ov29_023534E8 -.public ov29_02353518 -.public ov29_0235351C -.public ov29_02353524 -.public ov29_0235352C -.public ov29_02353530 -.public ov29_02353534 .public ov29_02353880 -.public ov29_023538B4 -.public ov29_0236CEF0 -.public ov29_0236D5EC -.public ov29_023735EC -.public ov29_023735F0 -.public ov29_023735F4 -.public ov29_023735F8 -.public ov29_023735FC -.public ov29_0237360C -.public ov29_0237368C -.public ov29_02373690 -.public ov29_0237C6D4 -.public ov29_0237C714 -.public Render3dSetPaletteBase -.public Render3dSetTextureParams -.public Render3dTextureNoSetup -.public sub_01FF9BA0 -.public sub_01FF9E14 -.public sub_01FF9F80 .public sub_02008BF4 -.public sub_0200A2CC -.public sub_0200A2F4 -.public sub_0200A544 -.public sub_0200B330 -.public sub_0200B3D4 -.public sub_0201B43C -.public sub_0201B9F8 -.public sub_0201BAC8 -.public sub_0201BCCC -.public sub_0201BCF4 -.public sub_0201BD1C .public sub_0201E050 .public sub_0201E380 -.public sub_0201F598 -.public sub_020275C0 -.public sub_020275DC -.public sub_020519D0 -.public sub_02051B44 -.public sub_02051C24 -.public sub_02051D68 -.public sub_02051DD0 -.public sub_02051E60 -.public sub_02051ED4 -.public sub_02051EF0 -.public sub_02063628 -.public sub_0206367C -.public sub_02063734 -.public sub_02063770 -.public sub_02063830 -.public UnloadFile -.public UpdateTeamStats diff --git a/asm/include/overlay_29_022DC65C.inc b/asm/include/overlay_29_022DC65C.inc new file mode 100644 index 00000000..d0130acc --- /dev/null +++ b/asm/include/overlay_29_022DC65C.inc @@ -0,0 +1,82 @@ +#pragma once +.public DUNGEON_PTR +.public DirectoryFileMngr_OpenDirectoryFile +.public DrawTeamStats +.public FreeMapAndTeam +.public FreeTeamStats +.public GetDefaultTileTextureId +.public HandleSir0Translation +.public IsBackgroundTileset +.public MemAlloc +.public MemFree +.public MemZero +.public UnloadFile +.public UpdateTeamStats +.public _020AFC4C +.public _s32_div_f +.public ov10_022C0814 +.public ov10_022C096C +.public ov10_022C0998 +.public ov10_022C0F6C +.public ov10_022C11D8 +.public ov10_022C14D0 +.public ov10_022C159C +.public ov10_022C22A0 +.public ov29_022DC2B8 +.public ov29_022DC33C +.public ov29_02350F88 +.public ov29_02350F8C +.public ov29_02350F90 +.public ov29_0235109C +.public ov29_023510B8 +.public ov29_023510BC +.public ov29_02353518 +.public ov29_0235351C +.public ov29_02353524 +.public ov29_0235352C +.public ov29_02353530 +.public ov29_02353534 +.public ov29_023538B4 +.public ov29_0236CEF0 +.public ov29_0236D5EC +.public ov29_023735EC +.public ov29_023735F0 +.public ov29_023735F4 +.public ov29_023735F8 +.public ov29_023735FC +.public ov29_0237360C +.public ov29_0237368C +.public ov29_02373690 +.public ov29_0237C6D4 +.public ov29_0237C714 +.public sub_01FF9BA0 +.public sub_01FF9E14 +.public sub_01FF9F80 +.public sub_02008BF4 +.public sub_0200A2CC +.public sub_0200A2F4 +.public sub_0200A544 +.public sub_0200B330 +.public sub_0200B3D4 +.public sub_0201B43C +.public sub_0201B9F8 +.public sub_0201BAC8 +.public sub_0201BCCC +.public sub_0201BCF4 +.public sub_0201BD1C +.public sub_0201F598 +.public sub_020275C0 +.public sub_020275DC +.public sub_020519D0 +.public sub_02051B44 +.public sub_02051C24 +.public sub_02051D68 +.public sub_02051DD0 +.public sub_02051E60 +.public sub_02051ED4 +.public sub_02051EF0 +.public sub_02063628 +.public sub_0206367C +.public sub_02063734 +.public sub_02063770 +.public sub_02063830 diff --git a/asm/overlay_29_022DC314.s b/asm/overlay_29_022DC314.s index 2abd5362..4f8433a2 100644 --- a/asm/overlay_29_022DC314.s +++ b/asm/overlay_29_022DC314.s @@ -214,2776 +214,3 @@ _022DC610: .word ov29_0234FD4C _022DC614: .word ov29_0234FD50 _022DC618: .word ov29_0234FD54 arm_func_end ov29_022DC544 - - arm_func_start ov29_022DC61C -ov29_022DC61C: ; 0x022DC61C - stmdb sp!, {r3, lr} - ldr r0, _022DC650 ; =ov29_023538B4 - ldr r1, _022DC654 ; =0x0001963C - bl MemZero - mov r0, #0 - bl ov29_022DC544 - ldr r0, _022DC650 ; =ov29_023538B4 - bl ov29_022DC240 - ldr r1, _022DC658 ; =ov29_023534E0 - ldr r0, _022DC650 ; =ov29_023538B4 - ldr r1, [r1] - bl ov29_022DC314 - ldmia sp!, {r3, pc} - .align 2, 0 -_022DC650: .word ov29_023538B4 -_022DC654: .word 0x0001963C -_022DC658: .word ov29_023534E0 - arm_func_end ov29_022DC61C - - arm_func_start ov29_022DC65C -ov29_022DC65C: ; 0x022DC65C - ldr ip, _022DC668 ; =ov29_022DC2B8 - ldr r0, _022DC66C ; =ov29_023538B4 - bx ip - .align 2, 0 -_022DC668: .word ov29_022DC2B8 -_022DC66C: .word ov29_023538B4 - arm_func_end ov29_022DC65C - - arm_func_start ov29_022DC670 -ov29_022DC670: ; 0x022DC670 - ldr ip, _022DC67C ; =ov29_022DC33C - ldr r0, _022DC680 ; =ov29_023538B4 - bx ip - .align 2, 0 -_022DC67C: .word ov29_022DC33C -_022DC680: .word ov29_023538B4 - arm_func_end ov29_022DC670 - - arm_func_start ov29_022DC684 -ov29_022DC684: ; 0x022DC684 - ldr ip, _022DC690 ; =ov10_022C0998 - mov r1, #1 - bx ip - .align 2, 0 -_022DC690: .word ov10_022C0998 - arm_func_end ov29_022DC684 - - arm_func_start ov29_022DC694 -ov29_022DC694: ; 0x022DC694 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x14 - mov r5, r0 - add r0, sp, #0 - mov r4, r1 - bl ov10_022C22A0 - add r0, sp, #0 - mov r1, r4 - bl ov10_022C0814 - mov r0, r5 - mov r1, #0 - mov r2, #1 - bl DrawTeamStats - add sp, sp, #0x14 - ldmia sp!, {r4, r5, pc} - arm_func_end ov29_022DC694 - - arm_func_start ov29_022DC6D0 -ov29_022DC6D0: ; 0x022DC6D0 - ldr ip, _022DC6D8 ; =UpdateTeamStats - bx ip - .align 2, 0 -_022DC6D8: .word UpdateTeamStats - arm_func_end ov29_022DC6D0 - - arm_func_start ov29_022DC6DC -ov29_022DC6DC: ; 0x022DC6DC - ldr ip, _022DC6E4 ; =ov10_022C11D8 - bx ip - .align 2, 0 -_022DC6E4: .word ov10_022C11D8 - arm_func_end ov29_022DC6DC - - arm_func_start ov29_022DC6E8 -ov29_022DC6E8: ; 0x022DC6E8 - stmdb sp!, {r4, lr} - sub sp, sp, #0x18 - ldrb r4, [sp, #0x20] - ldrsh ip, [sp, #0x24] - ldrsh lr, [sp, #0x28] - stmia sp, {r4, ip} - str lr, [sp, #8] - ldrsh ip, [sp, #0x2c] - ldrsh lr, [sp, #0x30] - str ip, [sp, #0xc] - ldrb ip, [sp, #0x34] - str lr, [sp, #0x10] - str ip, [sp, #0x14] - bl ov10_022C0F6C - add sp, sp, #0x18 - ldmia sp!, {r4, pc} - arm_func_end ov29_022DC6E8 - - arm_func_start ov29_022DC728 -ov29_022DC728: ; 0x022DC728 - stmdb sp!, {r3, lr} - bl FreeTeamStats - bl ov10_022C096C - ldmia sp!, {r3, pc} - arm_func_end ov29_022DC728 - - arm_func_start ov29_022DC738 -ov29_022DC738: ; 0x022DC738 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x14 - mov r5, r0 - add r0, sp, #0 - mov r4, r1 - bl ov10_022C22A0 - add r0, sp, #0 - mov r1, r4 - bl ov10_022C0814 - mov r0, r5 - bl ov10_022C14D0 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, pc} - arm_func_end ov29_022DC738 - - arm_func_start ov29_022DC76C -ov29_022DC76C: ; 0x022DC76C - ldr ip, _022DC774 ; =ov10_022C159C - bx ip - .align 2, 0 -_022DC774: .word ov10_022C159C - arm_func_end ov29_022DC76C - - arm_func_start ov29_022DC778 -ov29_022DC778: ; 0x022DC778 - bx lr - arm_func_end ov29_022DC778 - - arm_func_start ov29_022DC77C -ov29_022DC77C: ; 0x022DC77C - stmdb sp!, {r3, lr} - bl FreeMapAndTeam - bl ov10_022C096C - ldmia sp!, {r3, pc} - arm_func_end ov29_022DC77C - - arm_func_start ov29_022DC78C -ov29_022DC78C: ; 0x022DC78C - stmdb sp!, {r4, lr} - ldr r1, _022DC7E0 ; =ov29_02353518 - mov lr, #0 - ldr r4, [r1] - mov r1, #0x50 - b _022DC7D0 -_022DC7A4: - mul ip, lr, r1 - add r3, r4, ip - ldrb r2, [r3, #4] - cmp r2, #0 - beq _022DC7CC - ldr r2, [r3, #8] - cmp r0, r2 - addeq r0, r4, #4 - addeq r0, r0, ip - ldmeqia sp!, {r4, pc} -_022DC7CC: - add lr, lr, #1 -_022DC7D0: - cmp lr, #0x16 - blt _022DC7A4 - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_022DC7E0: .word ov29_02353518 - arm_func_end ov29_022DC78C - -; https://decomp.me/scratch/qiwjF - arm_func_start ov29_022DC7E4 -ov29_022DC7E4: ; 0x022DC7E4 - stmdb sp!, {r3, lr} - mov lr, #0 - mov r3, lr - mov r2, lr - b _022DC80C -_022DC7F8: - mov r0, r0, lsr #1 - mov ip, r1, lsr #1 - orr r0, r0, r1, lsl #31 - mov r1, ip - add lr, lr, #1 -_022DC80C: - cmp r1, r3 - cmpeq r0, r2 - bne _022DC7F8 - mov r0, lr - ldmia sp!, {r3, pc} - arm_func_end ov29_022DC7E4 - - arm_func_start ov29_022DC820 -ov29_022DC820: ; 0x022DC820 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x3c - mov r8, r1 - mov r1, #0xc - mul r1, r8, r1 - mov sb, r0 - ldr r0, [sb, #0x10] - add r4, sb, #0x2c - ldr r3, [sb, #0xc] - cmp r0, #0 - add r4, r4, r1 - mov r5, #0 - cmpeq r3, #0 - streq r5, [r4] - str r2, [sp, #0xc] - streq r5, [r4, #4] - beq _022DD084 - ldr r0, [r4, #4] - ldr r2, [r4] - cmp r0, r5 - cmpeq r2, r5 - streq r5, [r4, #8] - ldr r0, [r4, #8] - moveq r5, #1 - cmp r0, #0 - bgt _022DC99C - add r0, sb, #0x2c - cmp r8, #0 - add r0, r0, r1 - moveq r1, #1 - streq r1, [sp, #0x10] - moveq r1, #0 - streq r1, [sp, #0x14] - movne r1, #0 - strne r1, [sp, #0x10] - movne r1, #1 - strne r1, [sp, #0x14] - cmp r8, #0 - ldr r1, [sb, #0x10] - moveq sl, #0x80000000 - str r1, [sp, #0x1c] - ldr r1, [sb, #0xc] - moveq lr, #0 - str r1, [sp, #0x18] - ldr r1, [sp, #0x1c] - movne sl, #0 - movne lr, #1 - cmp r8, #0 - moveq ip, #0x20 - movne ip, #1 - cmp r1, #0 - ldr r1, [sp, #0x18] - cmpeq r1, #0 - mov r1, #0 - moveq r7, r1 - moveq r6, r1 - beq _022DC978 - ldr r6, [r0, #4] - ldr r7, [r0] - cmp r6, r1 - cmpeq r7, r1 - mov r3, #0 - ldreq r7, [sp, #0x10] - ldreq r6, [sp, #0x14] - mov r1, r3 - b _022DC968 -_022DC928: - mov r6, r6, lsl #1 - orr r6, r6, r7, lsr #31 - mov r7, r7, lsl #1 - cmp r6, lr - cmpeq r7, sl - ldrhi r6, [sp, #0x14] - ldr r0, [sp, #0x1c] - ldrhi r7, [sp, #0x10] - and r2, r0, r6 - mov r0, #0 - cmp r2, r0 - ldr r0, [sp, #0x18] - and r0, r0, r7 - cmpeq r0, r1 - bne _022DC978 - add r3, r3, #1 -_022DC968: - cmp r3, ip - blt _022DC928 - mov r7, #0 - mov r6, r7 -_022DC978: - ldr r0, [r4, #4] - ldr r1, [r4] - cmp r0, r6 - cmpeq r1, r7 - strne r7, [r4] - strne r6, [r4, #4] - mov r0, #0x3c - str r0, [r4, #8] - b _022DC9A4 -_022DC99C: - sub r0, r0, #1 - str r0, [r4, #8] -_022DC9A4: - ldrb r0, [sb, #0x14] - cmp r0, #0 - beq _022DCA0C - ldmia r4, {r0, r1} - cmp r1, #0 - cmpeq r0, #0 - beq _022DCA0C - bl ov29_022DC7E4 - ldr r1, _022DD08C ; =ov29_02353518 - mov r0, r0, lsl #0x10 - ldr r2, [r1] - mov r1, r0, asr #0x10 - ldrb r0, [r2, #0x6e8] - cmp r0, #0 - beq _022DCA0C - ldr r0, [sp, #0xc] - add r2, sb, #0x16 - str r0, [sp] - ldrb r3, [sb, #0x15] - add r0, sb, #0x1a - str r3, [sp, #4] - ldr r6, [sb, #4] - add r3, r0, r8, lsl #2 - str r6, [sp, #8] - ldrsh r0, [sb, #8] - bl ov29_022DD0A4 -_022DCA0C: - ldrb r0, [sb, #0x44] - cmp r0, #0 - beq _022DD084 - ldmia r4, {r0, r1} - cmp r1, #0 - cmpeq r0, #0 - mov r6, #0 - beq _022DD084 - bl ov29_022DC7E4 - mov r0, r0, lsl #0x10 - cmp r5, #0 - mov r7, r0, asr #0x10 - movne r6, #1 - bne _022DCB24 - ldr r0, _022DD090 ; =ov29_02350F8C - ldr r0, [r0, r7, lsl #3] - cmp r0, #0x10 - addls pc, pc, r0, lsl #2 - b _022DCB24 -_022DCA58: ; jump table - b _022DCB24 ; case 0 - b _022DCA9C ; case 1 - b _022DCA9C ; case 2 - b _022DCA9C ; case 3 - b _022DCA9C ; case 4 - b _022DCABC ; case 5 - b _022DCABC ; case 6 - b _022DCABC ; case 7 - b _022DCABC ; case 8 - b _022DCAE0 ; case 9 - b _022DCAE0 ; case 10 - b _022DCAE0 ; case 11 - b _022DCAE0 ; case 12 - b _022DCB04 ; case 13 - b _022DCB04 ; case 14 - b _022DCB04 ; case 15 - b _022DCB04 ; case 16 -_022DCA9C: - ldr r0, _022DD08C ; =ov29_02353518 - ldr r0, [r0] - ldr r0, [r0] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #30 - adds r0, r1, r0, ror #30 - moveq r6, #1 - b _022DCB24 -_022DCABC: - ldr r0, _022DD08C ; =ov29_02353518 - ldr r0, [r0] - ldr r0, [r0] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #30 - add r0, r1, r0, ror #30 - cmp r0, #1 - moveq r6, #1 - b _022DCB24 -_022DCAE0: - ldr r0, _022DD08C ; =ov29_02353518 - ldr r0, [r0] - ldr r0, [r0] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #30 - add r0, r1, r0, ror #30 - cmp r0, #2 - moveq r6, #1 - b _022DCB24 -_022DCB04: - ldr r0, _022DD08C ; =ov29_02353518 - ldr r0, [r0] - ldr r0, [r0] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #30 - add r0, r1, r0, ror #30 - cmp r0, #3 - moveq r6, #1 -_022DCB24: - cmp r6, #0 - beq _022DCC3C - ldmia r4, {r0, r1} - bl ov29_022DC7E4 - ldr r2, _022DD090 ; =ov29_02350F8C - ldr r1, _022DD08C ; =ov29_02353518 - ldr r2, [r2, r7, lsl #3] - ldr r3, [r1] - mov r1, #0xc - ldr r5, [r3, #0x6f4] - mul r6, r2, r1 - ldr sl, [r5, #4] - ldr r1, _022DD094 ; =ov29_02350F90 - add r4, sl, r6 - ldr r0, [r1, r0, lsl #3] - ldr r3, [r3] - ldrb sl, [sl, r6] - ldrb r6, [r4, #1] - mov r2, r3, asr #1 - add r2, r3, r2, lsr #30 - smulbb r6, sl, r6 - mov r0, r0, lsl #0x10 - str r0, [sp, #0x20] - ldrsh r1, [r4, #8] - ldrh sl, [sb, #0x4a] - mov r3, r8, lsl #0x10 - mov fp, r6, lsl #5 - mov r0, r2, asr #2 - mov r6, r3, lsr #0x10 - bl _s32_div_f - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - ldr r2, [r4, #4] - ldr r0, _022DD098 ; =_020AFC4C - mla r1, fp, r1, r2 - mov r2, sl, lsl #0x11 - mov r2, r2, asr #0xe - add r2, r2, #0x50 - ldr r0, [r0] - ldr r4, [r5, #0xc] - add r2, r2, r6, lsl #2 - mov r2, r2, lsl #0x10 - mov r3, fp - add r0, r0, #0x70 - add r1, r4, r1 - mov r2, r2, asr #0x10 - bl sub_0201BAC8 - add r0, r6, sl, lsl #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - add r0, r0, #4 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - str r0, [sp] - mov r0, #0xff - str r0, [sp, #4] - ldr r2, [r5, #0x14] - ldr r1, [sp, #0x20] - add r0, sp, #0x2c - add r1, r2, r1, lsr #10 - mov r2, #0 - mov r3, #0x10 - bl sub_0201F598 - ldr r0, _022DD098 ; =_020AFC4C - ldrh r2, [sp, #0x34] - ldr r0, [r0] - add r1, sp, #0x2c - add r0, r0, #0x70 - bl sub_0201B43C -_022DCC3C: - ldr r6, _022DD08C ; =ov29_02353518 - ldr r2, _022DD090 ; =ov29_02350F8C - ldr r1, [r6] - ldr r3, [r2, r7, lsl #3] - ldr r1, [r1, #0x6f4] - ldrh r4, [r6, #0xc] - ldrsh r0, [sb, #0x4a] - add r2, r2, r7, lsl #3 - ldr r2, [r2, #4] - ldr r1, [r1, #4] - bic r4, r4, #0x100 - strh r4, [r6, #0xc] - ldrh r4, [r6, #0xc] - mov fp, r0, lsl #1 - mov sl, #0xc - bic r4, r4, #0x200 - strh r4, [r6, #0xc] - ldrh r4, [r6, #0xc] - mov r0, r0, lsl #3 - mla r1, r3, sl, r1 - bic r4, r4, #0xc00 - strh r4, [r6, #0xc] - ldrh r5, [r6, #0xc] - add fp, fp, #4 - str r2, [sp, #0x28] - bic r5, r5, #0x1000 - strh r5, [r6, #0xc] - ldrh sl, [r6, #0xc] - mov r5, r8, lsl #0x10 - add r5, fp, r5, asr #16 - bic sl, sl, #0x2000 - strh sl, [r6, #0xc] - ldrh sl, [r6, #0x10] - mov fp, r5, lsl #0x10 - add r0, r0, #0x50 - bic r5, sl, #0xc00 - strh r5, [r6, #0x10] - ldrh sl, [r6, #0x12] - mov r4, #0 - add r8, r0, r8, lsl #2 - bic sl, sl, #1 - strh sl, [r6, #0x12] - ldrh sl, [r6, #0x12] - mov r5, r4 - str r3, [sp, #0x24] - bic r2, sl, #2 - strh r2, [r6, #0x12] - ldrh r2, [r6, #0xe] - cmp r3, #0x10 - mov r0, fp, asr #0x10 - bic r2, r2, #0x3e00 - strh r2, [r6, #0xe] - addls pc, pc, r3, lsl #2 - b _022DCFAC -_022DCD14: ; jump table - b _022DCFAC ; case 0 - b _022DCD58 ; case 1 - b _022DCE14 ; case 2 - b _022DCE14 ; case 3 - b _022DCF50 ; case 4 - b _022DCEE0 ; case 5 - b _022DCE14 ; case 6 - b _022DCE14 ; case 7 - b _022DCDB0 ; case 8 - b _022DCE14 ; case 9 - b _022DCE14 ; case 10 - b _022DCE14 ; case 11 - b _022DCD58 ; case 12 - b _022DCE14 ; case 13 - b _022DCD58 ; case 14 - b _022DCE14 ; case 15 - b _022DCE78 ; case 16 -_022DCD58: - ldrh r2, [r6, #0xc] - bic r2, r2, #0xc000 - strh r2, [r6, #0xc] - ldrh r2, [r6, #0xe] - bic r2, r2, #0xc000 - strh r2, [r6, #0xe] - ldrb r2, [r1, #1] - ldrb r4, [r1] - ldrsh r3, [sb, #0x24] - mov r1, r2, lsl #3 - mov r4, r4, lsl #3 - add r1, r1, r1, lsr #31 - sub r1, r3, r1, asr #1 - sub r1, r1, #0x10 - mov r2, r1, lsl #0x10 - ldrsh r3, [sb, #0x22] - add r1, r4, r4, lsr #31 - mov r4, r2, asr #0x10 - sub r1, r3, r1, asr #1 - mov r1, r1, lsl #0x10 - mov r5, r1, asr #0x10 - b _022DCFAC -_022DCDB0: - ldrh r2, [r6, #0xc] - bic r2, r2, #0xc000 - strh r2, [r6, #0xc] - ldrh r2, [r6, #0xc] - orr r2, r2, #0x8000 - strh r2, [r6, #0xc] - ldrh r2, [r6, #0xe] - bic r2, r2, #0xc000 - strh r2, [r6, #0xe] - ldrb r2, [r1, #1] - ldrb r4, [r1] - ldrsh r3, [sb, #0x24] - mov r1, r2, lsl #3 - mov r4, r4, lsl #3 - add r1, r1, r1, lsr #31 - sub r1, r3, r1, asr #1 - sub r1, r1, #0x10 - mov r2, r1, lsl #0x10 - ldrsh r3, [sb, #0x22] - add r1, r4, r4, lsr #31 - mov r4, r2, asr #0x10 - sub r1, r3, r1, asr #1 - mov r1, r1, lsl #0x10 - mov r5, r1, asr #0x10 - b _022DCFAC -_022DCE14: - ldrh r2, [r6, #0xc] - bic r2, r2, #0xc000 - strh r2, [r6, #0xc] - ldrh r2, [r6, #0xe] - bic r2, r2, #0xc000 - strh r2, [r6, #0xe] - ldrh r2, [r6, #0xe] - orr r2, r2, #0x4000 - strh r2, [r6, #0xe] - ldrb r2, [r1, #1] - ldrb r4, [r1] - ldrsh r3, [sb, #0x24] - mov r1, r2, lsl #3 - mov r4, r4, lsl #3 - add r1, r1, r1, lsr #31 - sub r1, r3, r1, asr #1 - sub r1, r1, #0x10 - mov r2, r1, lsl #0x10 - ldrsh r3, [sb, #0x22] - add r1, r4, r4, lsr #31 - mov r4, r2, asr #0x10 - sub r1, r3, r1, asr #1 - mov r1, r1, lsl #0x10 - mov r5, r1, asr #0x10 - b _022DCFAC -_022DCE78: - ldrh r2, [r6, #0xc] - bic r2, r2, #0xc000 - strh r2, [r6, #0xc] - ldrh r2, [r6, #0xe] - bic r2, r2, #0xc000 - strh r2, [r6, #0xe] - ldrh r2, [r6, #0xe] - orr r2, r2, #0x4000 - strh r2, [r6, #0xe] - ldrb r2, [r1] - ldrb r1, [r1, #1] - ldrsh r4, [sb, #0x22] - mov r3, r2, lsl #3 - mov r2, r1, lsl #3 - add r1, r3, r3, lsr #31 - sub r1, r4, r1, asr #1 - add r1, r1, #8 - mov r1, r1, lsl #0x10 - ldrsh r3, [sb, #0x24] - add r2, r2, r2, lsr #31 - mov r5, r1, asr #0x10 - sub r1, r3, r2, asr #1 - sub r1, r1, #0x10 - mov r1, r1, lsl #0x10 - mov r4, r1, asr #0x10 - b _022DCFAC -_022DCEE0: - ldrh r2, [r6, #0xc] - bic r2, r2, #0xc000 - strh r2, [r6, #0xc] - ldrh r2, [r6, #0xc] - orr r2, r2, #0x4000 - strh r2, [r6, #0xc] - ldrh r2, [r6, #0xe] - bic r2, r2, #0xc000 - strh r2, [r6, #0xe] - ldrh r2, [r6, #0xe] - orr r2, r2, #0x8000 - strh r2, [r6, #0xe] - ldrb r2, [r1, #1] - ldrb r4, [r1] - ldrsh r3, [sb, #0x24] - mov r1, r2, lsl #3 - mov r4, r4, lsl #3 - add r1, r1, r1, lsr #31 - sub r1, r3, r1, asr #1 - sub r1, r1, #0x10 - mov r2, r1, lsl #0x10 - ldrsh r3, [sb, #0x22] - add r1, r4, r4, lsr #31 - mov r4, r2, asr #0x10 - sub r1, r3, r1, asr #1 - mov r1, r1, lsl #0x10 - mov r5, r1, asr #0x10 - b _022DCFAC -_022DCF50: - ldrh r2, [r6, #0xc] - bic r2, r2, #0xc000 - strh r2, [r6, #0xc] - ldrh r2, [r6, #0xe] - bic r2, r2, #0xc000 - strh r2, [r6, #0xe] - ldrh r2, [r6, #0xe] - orr r2, r2, #0x8000 - strh r2, [r6, #0xe] - ldrb r2, [r1] - ldrb r1, [r1, #1] - ldrsh r4, [sb, #0x26] - mov r3, r2, lsl #3 - mov r2, r1, lsl #3 - add r1, r3, r3, lsr #31 - sub r1, r4, r1, asr #1 - mov r1, r1, lsl #0x10 - ldrsh r3, [sb, #0x28] - add r2, r2, r2, lsr #31 - mov r5, r1, asr #0x10 - sub r1, r3, r2, asr #1 - mov r1, r1, lsl #0x10 - mov r4, r1, asr #0x10 -_022DCFAC: - ldr r3, _022DD08C ; =ov29_02353518 - mov r1, #0x400 - ldrh r6, [r3, #0x10] - rsb r1, r1, #0 - and r2, r8, r1, lsr #22 - and r6, r6, r1 - strh r6, [r3, #0x10] - ldrh r8, [r3, #0x10] - mov r6, r0, lsl #0x1c - cmp r7, #0x20 - orr r2, r8, r2 - strh r2, [r3, #0x10] - ldrh r8, [r3, #0x10] - add r0, r1, #0x200 - ldr r2, _022DD09C ; =0xFFFF000F - bic r7, r8, #0xf000 - strh r7, [r3, #0x10] - ldrh r7, [r3, #0x10] - orr r6, r7, r6, lsr #16 - strh r6, [r3, #0x10] - ldrh r6, [r3, #0xe] - ldrsh r7, [sb, #0x46] - and r0, r6, r0 - strh r0, [r3, #0xe] - add r0, r7, r5 - ldrh r6, [r3, #0xe] - and r0, r0, r1, lsr #23 - orr r0, r6, r0 - strh r0, [r3, #0xe] - ldrh r0, [r3, #0x12] - ldrsh r5, [sb, #0x48] - and r0, r0, r2 - strh r0, [r3, #0x12] - add r0, r5, r4 - ldrh r1, [r3, #0x12] - mov r0, r0, lsl #0x14 - orr r0, r1, r0, lsr #16 - strh r0, [r3, #0x12] - ldrneh r0, [r3, #6] - bicne r0, r0, #0x3e00 - strneh r0, [r3, #6] - bne _022DD06C - ldrh r0, [r3, #0xe] - bic r0, r0, #0x3e00 - strh r0, [r3, #0xe] - ldrh r0, [r3, #0xe] - orr r0, r0, #0x2000 - strh r0, [r3, #0xe] -_022DD06C: - ldr r0, _022DD098 ; =_020AFC4C - ldr r1, _022DD0A0 ; =ov29_02353524 - ldr r0, [r0] - mov r2, #1 - add r0, r0, #0x70 - bl sub_0201B9F8 -_022DD084: - add sp, sp, #0x3c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022DD08C: .word ov29_02353518 -_022DD090: .word ov29_02350F8C -_022DD094: .word ov29_02350F90 -_022DD098: .word _020AFC4C -_022DD09C: .word 0xFFFF000F -_022DD0A0: .word ov29_02353524 - arm_func_end ov29_022DC820 - - arm_func_start ov29_022DD0A4 -ov29_022DD0A4: ; 0x022DD0A4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - ldr sb, _022DD500 ; =ov29_02350F8C - ldr r6, _022DD504 ; =ov29_02353518 - ldr r0, [sb, r1, lsl #3] - mov lr, #0xc - ldr r4, [r6] - mul r7, r0, lr - ldr r5, [r4, #0x6f4] - ldrh r4, [r6, #8] - ldr r8, [r5, #4] - add r5, sb, r1, lsl #3 - add sb, r8, r7 - ldr sl, [r5, #4] - ldrsh fp, [sb, #0xa] - bic r4, r4, #0xc00 - ldr ip, [sp, #0x30] - strh r4, [r6, #8] - ldr r4, [sp, #0x34] - ldrh r5, [r6, #8] - mov r4, r4, lsl #0x1e - str r0, [sp] - orr r4, r5, r4, lsr #20 - strh r4, [r6, #8] - ldrb r5, [r8, r7] - ldrb r4, [sb, #1] - ldrsh sb, [r2] - mov r7, r5, lsl #3 - mov r5, r4, lsl #3 - add r4, r7, r7, lsr #31 - sub sb, sb, r4, asr #1 - ldrsh r8, [ip] - ldrsh r7, [r2, #2] - add r5, r5, r5, lsr #31 - sub r8, sb, r8 - ldrsh sb, [r3] - sub r5, r7, r5, asr #1 - ldrsh r4, [ip, #2] - ldrsh r3, [r3, #2] - str sl, [sp, #4] - sub r4, r5, r4 - add r4, r3, r4 - add r5, sb, r8 - sub r3, lr, #0x2c - cmp r5, r3 - subge r8, lr, #0x2c - add r7, fp, #0x190 - sub r3, r4, #0x10 - cmpge r4, r8 - blt _022DD4F8 - cmp r5, #0xff - cmplt r4, #0xc0 - bge _022DD4F8 - ldrh r8, [r6, #4] - cmp r0, #0x10 - bic r8, r8, #0x2000 - strh r8, [r6, #4] - ldrh r8, [r6, #4] - orr r8, r8, #0x2000 - strh r8, [r6, #4] - addls pc, pc, r0, lsl #2 - b _022DD468 -_022DD19C: ; jump table - b _022DD468 ; case 0 - b _022DD1E0 ; case 1 - b _022DD2AC ; case 2 - b _022DD2AC ; case 3 - b _022DD400 ; case 4 - b _022DD388 ; case 5 - b _022DD2AC ; case 6 - b _022DD2AC ; case 7 - b _022DD240 ; case 8 - b _022DD2AC ; case 9 - b _022DD2AC ; case 10 - b _022DD2AC ; case 11 - b _022DD1E0 ; case 12 - b _022DD2AC ; case 13 - b _022DD1E0 ; case 14 - b _022DD2AC ; case 15 - b _022DD318 ; case 16 -_022DD1E0: - ldrh r8, [r6, #4] - ldr r4, _022DD508 ; =0x000001FF - sub r0, lr, #0x20c - bic r8, r8, #0xc000 - strh r8, [r6, #4] - ldrh r8, [r6, #6] - and r5, r5, r4 - ldr r4, _022DD50C ; =0xFFFF000F - bic r8, r8, #0xc000 - strh r8, [r6, #6] - ldrh r8, [r6, #6] - mov r3, r3, lsl #0x14 - and r0, r8, r0 - strh r0, [r6, #6] - ldrh r0, [r6, #6] - orr r0, r0, r5 - strh r0, [r6, #6] - ldrh r0, [r6, #0xa] - and r0, r0, r4 - strh r0, [r6, #0xa] - ldrh r0, [r6, #0xa] - orr r0, r0, r3, lsr #16 - strh r0, [r6, #0xa] - b _022DD468 -_022DD240: - ldrh r8, [r6, #4] - ldr r4, _022DD508 ; =0x000001FF - sub r0, lr, #0x20c - bic r8, r8, #0xc000 - strh r8, [r6, #4] - ldrh r8, [r6, #4] - and r5, r5, r4 - ldr r4, _022DD50C ; =0xFFFF000F - orr r8, r8, #0x8000 - strh r8, [r6, #4] - ldrh r8, [r6, #6] - mov r3, r3, lsl #0x14 - bic r8, r8, #0xc000 - strh r8, [r6, #6] - ldrh r8, [r6, #6] - and r0, r8, r0 - strh r0, [r6, #6] - ldrh r0, [r6, #6] - orr r0, r0, r5 - strh r0, [r6, #6] - ldrh r0, [r6, #0xa] - and r0, r0, r4 - strh r0, [r6, #0xa] - ldrh r0, [r6, #0xa] - orr r0, r0, r3, lsr #16 - strh r0, [r6, #0xa] - b _022DD468 -_022DD2AC: - ldrh r8, [r6, #4] - ldr r4, _022DD508 ; =0x000001FF - sub r0, lr, #0x20c - bic r8, r8, #0xc000 - strh r8, [r6, #4] - ldrh r8, [r6, #6] - and r5, r5, r4 - ldr r4, _022DD50C ; =0xFFFF000F - bic r8, r8, #0xc000 - strh r8, [r6, #6] - ldrh r8, [r6, #6] - mov r3, r3, lsl #0x14 - orr r8, r8, #0x4000 - strh r8, [r6, #6] - ldrh r8, [r6, #6] - and r0, r8, r0 - strh r0, [r6, #6] - ldrh r0, [r6, #6] - orr r0, r0, r5 - strh r0, [r6, #6] - ldrh r0, [r6, #0xa] - and r0, r0, r4 - strh r0, [r6, #0xa] - ldrh r0, [r6, #0xa] - orr r0, r0, r3, lsr #16 - strh r0, [r6, #0xa] - b _022DD468 -_022DD318: - ldrh r8, [r6, #4] - sub r0, lr, #0x20c - ldr r4, _022DD508 ; =0x000001FF - bic r8, r8, #0xc000 - strh r8, [r6, #4] - ldrh r8, [r6, #6] - add r5, r5, #8 - and r5, r5, r4 - bic r4, r8, #0xc000 - strh r4, [r6, #6] - ldrh r8, [r6, #6] - ldr r4, _022DD50C ; =0xFFFF000F - mov r3, r3, lsl #0x14 - orr r8, r8, #0x4000 - strh r8, [r6, #6] - ldrh r8, [r6, #6] - and r0, r8, r0 - strh r0, [r6, #6] - ldrh r0, [r6, #6] - orr r0, r0, r5 - strh r0, [r6, #6] - ldrh r0, [r6, #0xa] - and r0, r0, r4 - strh r0, [r6, #0xa] - ldrh r0, [r6, #0xa] - orr r0, r0, r3, lsr #16 - strh r0, [r6, #0xa] - b _022DD468 -_022DD388: - ldrh r8, [r6, #4] - ldr r4, _022DD508 ; =0x000001FF - sub r0, lr, #0x20c - bic r8, r8, #0xc000 - strh r8, [r6, #4] - ldrh r8, [r6, #4] - and r5, r5, r4 - ldr r4, _022DD50C ; =0xFFFF000F - orr r8, r8, #0x4000 - strh r8, [r6, #4] - ldrh r8, [r6, #6] - mov r3, r3, lsl #0x14 - bic r8, r8, #0xc000 - strh r8, [r6, #6] - ldrh r8, [r6, #6] - orr r8, r8, #0x8000 - strh r8, [r6, #6] - ldrh r8, [r6, #6] - and r0, r8, r0 - strh r0, [r6, #6] - ldrh r0, [r6, #6] - orr r0, r0, r5 - strh r0, [r6, #6] - ldrh r0, [r6, #0xa] - and r0, r0, r4 - strh r0, [r6, #0xa] - ldrh r0, [r6, #0xa] - orr r0, r0, r3, lsr #16 - strh r0, [r6, #0xa] - b _022DD468 -_022DD400: - ldrh r8, [r6, #4] - ldr r3, _022DD508 ; =0x000001FF - sub r0, lr, #0x20c - bic r8, r8, #0xc000 - strh r8, [r6, #4] - ldrh r8, [r6, #6] - and r5, r5, r3 - ldr r3, _022DD50C ; =0xFFFF000F - bic r8, r8, #0xc000 - strh r8, [r6, #6] - ldrh r8, [r6, #6] - mov r4, r4, lsl #0x14 - orr r8, r8, #0x8000 - strh r8, [r6, #6] - ldrh r8, [r6, #6] - and r0, r8, r0 - strh r0, [r6, #6] - ldrh r0, [r6, #6] - orr r0, r0, r5 - strh r0, [r6, #6] - ldrh r0, [r6, #0xa] - and r0, r0, r3 - strh r0, [r6, #0xa] - ldrh r0, [r6, #0xa] - orr r0, r0, r4, lsr #16 - strh r0, [r6, #0xa] -_022DD468: - ldr r3, _022DD504 ; =ov29_02353518 - mov r0, #0x400 - ldrh r5, [r3, #8] - rsb r0, r0, #0 - ldr r4, [sp, #4] - and r5, r5, r0 - strh r5, [r3, #8] - ldrh r6, [r3, #8] - and r5, r7, r0, lsr #22 - mov r0, r4, lsl #0x1c - orr r4, r6, r5 - strh r4, [r3, #8] - ldrh r4, [r3, #8] - cmp r1, #0x20 - bic r1, r4, #0xf000 - strh r1, [r3, #8] - ldrh r1, [r3, #8] - orr r0, r1, r0, lsr #16 - strh r0, [r3, #8] - ldrh r0, [r3, #6] - ldr r1, _022DD510 ; =ov29_0235351C - biceq r0, r0, #0x3e00 - streqh r0, [r3, #6] - ldreqh r0, [r3, #6] - orreq r0, r0, #0x2000 - bicne r0, r0, #0x3e00 - strh r0, [r3, #6] - ldrsh r3, [r2, #2] - ldrsh r0, [ip, #2] - ldr r2, _022DD514 ; =_020AFC4C - sub r0, r3, r0 - add r0, r0, r0, lsr #31 - mov r3, r0, asr #1 - ldr r0, [r2] - add r2, r3, #1 - bl sub_0201B9F8 -_022DD4F8: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022DD500: .word ov29_02350F8C -_022DD504: .word ov29_02353518 -_022DD508: .word 0x000001FF -_022DD50C: .word 0xFFFF000F -_022DD510: .word ov29_0235351C -_022DD514: .word _020AFC4C - arm_func_end ov29_022DD0A4 - - arm_func_start ov29_022DD518 -ov29_022DD518: ; 0x022DD518 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - ldr r2, _022DD5AC ; =ov29_02353518 - mov r1, #0xc - ldr r3, [r2] - mul r2, r0, r1 - ldr r5, [r3, #0x6f4] - ldr r1, [r3] - ldr r3, [r5, #4] - mov r0, r1, asr #1 - add r4, r3, r2 - add r0, r1, r0, lsr #30 - ldrb r3, [r3, r2] - ldrb r2, [r4, #1] - ldrsh r1, [r4, #8] - mov r0, r0, asr #2 - smulbb r2, r3, r2 - mov r6, r2, lsl #5 - bl _s32_div_f - mov r0, #1 - str r0, [sp] - mov r0, #0xe - str r0, [sp, #4] - ldr r3, [r4, #4] - ldrsh r2, [r4, #0xa] - ldr r0, _022DD5B0 ; =_020AFC4C - mla r4, r6, r1, r3 - add r1, r2, #0x190 - ldr r5, [r5, #0xc] - mov r2, r1, lsl #0x10 - ldr r0, [r0] - mov r3, r6 - add r1, r5, r4 - mov r2, r2, asr #0x10 - bl sub_0201BAC8 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022DD5AC: .word ov29_02353518 -_022DD5B0: .word _020AFC4C - arm_func_end ov29_022DD518 - - arm_func_start ov29_022DD5B4 -ov29_022DD5B4: ; 0x022DD5B4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - ldr r2, _022DD758 ; =ov29_02353518 - ldr r0, [r2] - cmp r0, #0 - bne _022DD60C - ldr r0, _022DD75C ; =ov29_0236CEF0 - ldr r1, _022DD760 ; =0x000006FC - str r0, [r2] - bl MemZero - ldr r0, _022DD764 ; =ov29_0236D5EC - mov r1, #0x6000 - bl MemZero - ldr r0, _022DD764 ; =ov29_0236D5EC - ldr r1, _022DD768 ; =ov29_0235109C - bl sub_02008BF4 - ldr r0, _022DD758 ; =ov29_02353518 - ldr r1, _022DD764 ; =ov29_0236D5EC - ldr r0, [r0] - add r0, r0, #0x2f4 - add r0, r0, #0x400 - bl HandleSir0Translation -_022DD60C: - ldr r0, _022DD758 ; =ov29_02353518 - mov r2, #1 - ldr r1, [r0] - mov sb, #0 - strb r2, [r1, #0x6e8] - ldr r1, [r0] - ldr r4, _022DD76C ; =_020AFC4C - str sb, [r1] - ldr r0, [r0] - mov r8, #0xe0 - ldr sl, [r0, #0x6f4] - mov r7, #0xff - add r6, sp, #8 - mov r5, r2 - mov fp, #0x10 -_022DD648: - str r8, [sp] - str r7, [sp, #4] - ldr r1, [sl, #0x14] - mov r0, r6 - mov r2, r5 - mov r3, fp - add r1, r1, sb, lsl #6 - bl sub_0201F598 - mov r2, sb, lsl #0x10 - ldr r0, [r4] - mov r1, r6 - mov r2, r2, lsr #0x10 - bl sub_0201B43C - add r0, sb, #1 - mov r0, r0, lsl #0x10 - mov sb, r0, asr #0x10 - cmp sb, #0x10 - blt _022DD648 - mov r0, #1 - mov r1, #0 - bl ov29_022DD518 - mov r0, #2 - mov r1, #0 - bl ov29_022DD518 - mov r0, #3 - mov r1, #0 - bl ov29_022DD518 - mov r0, #4 - mov r1, #0 - bl ov29_022DD518 - mov r0, #5 - mov r1, #0 - bl ov29_022DD518 - mov r0, #6 - mov r1, #0 - bl ov29_022DD518 - mov r0, #7 - mov r1, #0 - bl ov29_022DD518 - mov r0, #8 - mov r1, #0 - bl ov29_022DD518 - mov r0, #9 - mov r1, #0 - bl ov29_022DD518 - mov r0, #0xa - mov r1, #0 - bl ov29_022DD518 - mov r0, #0xb - mov r1, #0 - bl ov29_022DD518 - mov r0, #0xc - mov r1, #0 - bl ov29_022DD518 - mov r0, #0xd - mov r1, #0 - bl ov29_022DD518 - mov r0, #0xe - mov r1, #0 - bl ov29_022DD518 - mov r0, #0xf - mov r1, #0 - bl ov29_022DD518 - mov r0, #0x10 - mov r1, #0 - bl ov29_022DD518 - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022DD758: .word ov29_02353518 -_022DD75C: .word ov29_0236CEF0 -_022DD760: .word 0x000006FC -_022DD764: .word ov29_0236D5EC -_022DD768: .word ov29_0235109C -_022DD76C: .word _020AFC4C - arm_func_end ov29_022DD5B4 - - arm_func_start ov29_022DD770 -ov29_022DD770: ; 0x022DD770 - stmdb sp!, {r3, lr} - ldr r0, _022DD7A8 ; =ov29_02353518 - mov r1, #8 - ldr r0, [r0] - add r0, r0, #0x2ec - add r0, r0, #0x400 - bl MemZero - ldr r0, _022DD7A8 ; =ov29_02353518 - mov r2, #0 - ldr r1, [r0] - str r2, [r1, #0x6f4] - ldr r0, [r0] - str r2, [r0, #0x6f8] - ldmia sp!, {r3, pc} - .align 2, 0 -_022DD7A8: .word ov29_02353518 - arm_func_end ov29_022DD770 - - arm_func_start ov29_022DD7AC -ov29_022DD7AC: ; 0x022DD7AC - stmdb sp!, {r3, lr} - ldr r0, _022DD7D4 ; =ov29_02353518 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl ov29_022DD770 - ldr r0, _022DD7D4 ; =ov29_02353518 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022DD7D4: .word ov29_02353518 - arm_func_end ov29_022DD7AC - - arm_func_start ov29_022DD7D8 -ov29_022DD7D8: ; 0x022DD7D8 - stmdb sp!, {r4, r5, r6, lr} - ldr ip, _022DD824 ; =ov29_02353518 - mov r6, r1 - ldr r1, [ip] - mov r5, r2 - mov r4, r3 - cmp r1, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl ov29_022DC78C - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - strh r6, [r0, #8] - str r5, [r0, #0xc] - ldrb r2, [sp, #0x10] - str r4, [r0, #0x10] - mov r1, #0 - strb r2, [r0, #0x14] - strb r1, [r0, #0x44] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022DD824: .word ov29_02353518 - arm_func_end ov29_022DD7D8 - - arm_func_start ov29_022DD828 -ov29_022DD828: ; 0x022DD828 - ldr r1, _022DD838 ; =ov29_02353518 - ldr r1, [r1] - strb r0, [r1, #0x6e8] - bx lr - .align 2, 0 -_022DD838: .word ov29_02353518 - arm_func_end ov29_022DD828 - - arm_func_start ov29_022DD83C -ov29_022DD83C: ; 0x022DD83C - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _022DD8B0 ; =ov29_02353518 - ldr r4, [sp, #0x14] - ldr r1, [r1] - mov r6, r2 - mov r5, r3 - cmp r1, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl ov29_022DC78C - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r1, r6, lsl #0x10 - mov r2, #1 - strb r2, [r0, #0x44] - mov r1, r1, asr #0x10 - strh r1, [r0, #0x4a] - strh r1, [r0, #0x4c] - ldr r1, [sp, #0x10] - strh r5, [r0, #0x46] - strh r1, [r0, #0x48] - ldrh r1, [r4] - strh r1, [r0, #0x22] - ldrh r1, [r4, #2] - strh r1, [r0, #0x24] - ldrh r1, [r4, #0xc] - strh r1, [r0, #0x26] - ldrh r1, [r4, #0xe] - strh r1, [r0, #0x28] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022DD8B0: .word ov29_02353518 - arm_func_end ov29_022DD83C - - arm_func_start ov29_022DD8B4 -ov29_022DD8B4: ; 0x022DD8B4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r1, _022DDA50 ; =ov29_02353518 - mov r4, r0 - ldr r0, [r1] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r0] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #30 - add r0, r1, r0, ror #30 - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _022DD9C4 -_022DD8E8: ; jump table - b _022DD8F8 ; case 0 - b _022DD92C ; case 1 - b _022DD960 ; case 2 - b _022DD994 ; case 3 -_022DD8F8: - mov r0, #1 - mov r1, r0 - bl ov29_022DD518 - mov r0, #2 - mov r1, #1 - bl ov29_022DD518 - mov r0, #3 - mov r1, #1 - bl ov29_022DD518 - mov r0, #4 - mov r1, #1 - bl ov29_022DD518 - b _022DD9C4 -_022DD92C: - mov r0, #5 - mov r1, #1 - bl ov29_022DD518 - mov r0, #6 - mov r1, #1 - bl ov29_022DD518 - mov r0, #7 - mov r1, #1 - bl ov29_022DD518 - mov r0, #8 - mov r1, #1 - bl ov29_022DD518 - b _022DD9C4 -_022DD960: - mov r0, #9 - mov r1, #1 - bl ov29_022DD518 - mov r0, #0xa - mov r1, #1 - bl ov29_022DD518 - mov r0, #0xb - mov r1, #1 - bl ov29_022DD518 - mov r0, #0xc - mov r1, #1 - bl ov29_022DD518 - b _022DD9C4 -_022DD994: - mov r0, #0xd - mov r1, #1 - bl ov29_022DD518 - mov r0, #0xe - mov r1, #1 - bl ov29_022DD518 - mov r0, #0xf - mov r1, #1 - bl ov29_022DD518 - mov r0, #0x10 - mov r1, #1 - bl ov29_022DD518 -_022DD9C4: - mov sb, #0 - ldr r6, _022DDA50 ; =ov29_02353518 - mov r8, sb - mov fp, #1 - mov r7, sb - mov r5, #0x50 -_022DD9DC: - mul r1, sb, r5 - ldr r2, [r6] - add r0, r2, r1 - ldrb r0, [r0, #4] - cmp r0, #0 - beq _022DDA20 - add r0, r2, #4 - add sl, r0, r1 - mov r0, sl - mov r1, r8 - mov r2, r4 - bl ov29_022DC820 - mov r0, sl - mov r1, fp - mov r2, r4 - bl ov29_022DC820 - strb r7, [sl, #0x44] -_022DDA20: - add sb, sb, #1 - cmp sb, #0x16 - blt _022DD9DC - ldr r0, _022DDA50 ; =ov29_02353518 - mov r2, #0 - ldr r1, [r0] - str r2, [r1, #0x6e4] - ldr r1, [r0] - ldr r0, [r1] - add r0, r0, #1 - str r0, [r1] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022DDA50: .word ov29_02353518 - arm_func_end ov29_022DD8B4 - - arm_func_start ov29_022DDA54 -ov29_022DDA54: ; 0x022DDA54 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r4, _022DDB60 ; =ov29_02353518 - mov r7, r0 - ldr ip, [r4] - mov r6, r1 - mov r5, r2 - mov r4, r3 - cmp ip, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl ov29_022DC78C - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, _022DDB60 ; =ov29_02353518 - mov r3, #0 - ldr ip, [r0] - mov r0, #0x50 - b _022DDAB8 -_022DDA98: - mul r2, r3, r0 - add r1, ip, r2 - ldrb r1, [r1, #4] - cmp r1, #0 - addeq r0, ip, #4 - addeq r1, r0, r2 - beq _022DDAC4 - add r3, r3, #1 -_022DDAB8: - cmp r3, #0x16 - blt _022DDA98 - mov r1, #0 -_022DDAC4: - cmp r1, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #1 - strb r0, [r1] - str r7, [r1, #4] - strh r6, [r1, #8] - mov r0, #0 - str r0, [r1, #0xc] - str r0, [r1, #0x10] - ldrh r3, [r5] - ldr r2, _022DDB64 ; =ov29_02350F88 - strh r3, [r1, #0x16] - ldrh r3, [r5, #2] - strh r3, [r1, #0x18] - strb r4, [r1, #0x15] - ldrh r3, [r2, #2] - ldrh r4, [r2] - strh r3, [sp, #2] - mov r3, r3 - strh r4, [r1, #0x1e] - strh r3, [r1, #0x20] - ldrh r2, [r1, #0x1e] - strh r4, [sp] - strh r2, [r1, #0x1a] - ldrh r2, [r1, #0x20] - strh r2, [r1, #0x1c] - strh r4, [r1, #0x26] - strh r3, [r1, #0x28] - ldrh r2, [r1, #0x26] - strh r2, [r1, #0x22] - ldrh r2, [r1, #0x28] - strh r2, [r1, #0x24] - str r0, [r1, #0x2c] - str r0, [r1, #0x30] - str r0, [r1, #0x34] - str r0, [r1, #0x38] - str r0, [r1, #0x3c] - str r0, [r1, #0x40] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022DDB60: .word ov29_02353518 -_022DDB64: .word ov29_02350F88 - arm_func_end ov29_022DDA54 - - arm_func_start ov29_022DDB68 -ov29_022DDB68: ; 0x022DDB68 - stmdb sp!, {r3, lr} - ldr r1, _022DDB94 ; =ov29_02353518 - ldr r1, [r1] - cmp r1, #0 - ldmeqia sp!, {r3, pc} - bl ov29_022DC78C - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r1, #0x50 - bl MemZero - ldmia sp!, {r3, pc} - .align 2, 0 -_022DDB94: .word ov29_02353518 - arm_func_end ov29_022DDB68 - - arm_func_start ov29_022DDB98 -ov29_022DDB98: ; 0x022DDB98 - stmdb sp!, {r4, r5, r6, lr} - ldr r4, _022DDBFC ; =ov29_02353518 - mov r6, r1 - ldr r1, [r4] - mov r4, r2 - mov r5, r3 - cmp r1, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl ov29_022DC78C - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldrh r1, [r6] - strh r1, [r0, #0x16] - ldrh r1, [r6, #2] - strh r1, [r0, #0x18] - strb r5, [r0, #0x15] - ldrh r1, [r4] - strh r1, [r0, #0x1a] - ldrh r1, [r4, #2] - strh r1, [r0, #0x1c] - ldrh r1, [r4, #0xc] - strh r1, [r0, #0x1e] - ldrh r1, [r4, #0xe] - strh r1, [r0, #0x20] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022DDBFC: .word ov29_02353518 - arm_func_end ov29_022DDB98 - - arm_func_start ov29_022DDC00 -ov29_022DDC00: ; 0x022DDC00 - stmdb sp!, {r3, lr} - ldr r0, _022DDC8C ; =0x027E0068 - mov r1, #0x2000 - bl MemZero - ldr r1, _022DDC8C ; =0x027E0068 - ldr r0, _022DDC90 ; =ov29_023735EC - ldr r3, _022DDC94 ; =ov29_02373690 - ldr r2, _022DDC98 ; =ov29_023735FC - mov lr, #1 - str r1, [r0, #0x10] -_022DDC28: - sub r0, lr, #1 - add r0, r0, r0, lsl #1 - add r1, lr, #1 - add ip, r3, r0, lsl #12 - mov r0, r1, lsl #0x10 - str ip, [r2, lr, lsl #2] - mov lr, r0, asr #0x10 - cmp lr, #4 - blt _022DDC28 - mov r0, #0 - ldr r2, _022DDC9C ; =ov29_0237360C - mov r1, r0 -_022DDC58: - add r0, r0, #1 - mov r0, r0, lsl #0x10 - str r1, [r2] - mov r0, r0, asr #0x10 - str r1, [r2, #4] - cmp r0, #4 - add r2, r2, #0x20 - blt _022DDC58 - ldr r0, _022DDC90 ; =ov29_023735EC - str r1, [r0, #0xc] - str r1, [r0, #8] - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022DDC8C: .word 0x027E0068 -_022DDC90: .word ov29_023735EC -_022DDC94: .word ov29_02373690 -_022DDC98: .word ov29_023735FC -_022DDC9C: .word ov29_0237360C - arm_func_end ov29_022DDC00 - - arm_func_start ov29_022DDCA0 -ov29_022DDCA0: ; 0x022DDCA0 - bx lr - arm_func_end ov29_022DDCA0 - - arm_func_start ov29_022DDCA4 -ov29_022DDCA4: ; 0x022DDCA4 - stmdb sp!, {r4, r5, r6, lr} - ldr r4, _022DDD40 ; =ov29_023735FC - ldr r6, _022DDD44 ; =ov29_0237360C - ldr r5, [r4, r0, lsl #2] - add r4, r6, r0, lsl #5 - stmib r4, {r1, r5} - cmp r0, #0 - ldreq r5, _022DDD48 ; =0x00001FFC - ldr ip, _022DDD40 ; =ov29_023735FC - ldrne r5, _022DDD4C ; =0x00002FFC - mov lr, #0xff - str r5, [r4, #0x14] - ldr r5, [ip, r0, lsl #2] - cmp r2, #0 - strb lr, [r5] - ldr r6, [ip, r0, lsl #2] - ldr r5, [r4, #0x14] - add r5, r6, r5 - strb lr, [r5, #3] - ldr r6, [ip, r0, lsl #2] - ldr r5, [r4, #0x14] - add r5, r6, r5 - strb lr, [r5, #2] - ldr ip, [ip, r0, lsl #2] - ldr r0, [r4, #0x14] - add r0, ip, r0 - strb lr, [r0, #1] - ldr ip, [r4, #8] - ldr r0, [r4, #0x14] - add r0, ip, r0 - str r0, [r4, #0xc] - str r1, [r4, #0x10] - str r2, [r4, #0x18] - str r3, [r4, #0x1c] - beq _022DDD34 - blx r2 -_022DDD34: - mov r0, #1 - str r0, [r4] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022DDD40: .word ov29_023735FC -_022DDD44: .word ov29_0237360C -_022DDD48: .word 0x00001FFC -_022DDD4C: .word 0x00002FFC - arm_func_end ov29_022DDCA4 - - arm_func_start ov29_022DDD50 -ov29_022DDD50: ; 0x022DDD50 - stmdb sp!, {r3, lr} - mov r3, r2 - movs lr, r0 - mov ip, r1 - ldmeqia sp!, {r3, pc} - ldr r0, _022DDDA0 ; =ov29_0237360C - mvn r1, #0 - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - rsb r0, r0, #0 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - mov r1, lr - mov r2, ip - bl ov29_022DDCA4 - ldmia sp!, {r3, pc} - .align 2, 0 -_022DDDA0: .word ov29_0237360C - arm_func_end ov29_022DDD50 - - arm_func_start ov29_022DDDA4 -ov29_022DDDA4: ; 0x022DDDA4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - movs r4, r0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r7, #0 - ldr r6, _022DDDFC ; =ov29_0237360C - mov r5, r7 -_022DDDBC: - ldr r0, [r6, #4] - cmp r0, r4 - bne _022DDDE0 - ldr r0, [r6, #0x1c] - cmp r0, #0 - beq _022DDDD8 - blx r0 -_022DDDD8: - str r5, [r6] - str r5, [r6, #4] -_022DDDE0: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - cmp r7, #4 - add r6, r6, #0x20 - blt _022DDDBC - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022DDDFC: .word ov29_0237360C - arm_func_end ov29_022DDDA4 - - arm_func_start ov29_022DDE00 -ov29_022DDE00: ; 0x022DDE00 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, #0 - b _022DDE18 -_022DDE10: - bl ov29_022DDEF8 - add r4, r4, #1 -_022DDE18: - cmp r4, r5 - blt _022DDE10 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_022DDE00 - - arm_func_start ov29_022DDE24 -ov29_022DDE24: ; 0x022DDE24 - ldr ip, _022DDE2C ; =ov29_022DDE30 - bx ip - .align 2, 0 -_022DDE2C: .word ov29_022DDE30 - arm_func_end ov29_022DDE24 - - arm_func_start ov29_022DDE30 -ov29_022DDE30: ; 0x022DDE30 - stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, lr} - ldr r0, _022DDEDC ; =ov29_023735F8 - mov r1, sp - str r1, [r0] - ldr r1, _022DDEE0 ; =ov29_023735EC - mov r2, #0 - str r2, [r1] - ldr r3, _022DDEE4 ; =ov29_023510B8 - ldr r4, [r3] - ldr r3, _022DDEE8 ; =ov29_0237360C -_022DDE58: - ldrh r5, [r3] - cmp r5, #1 - beq _022DDE7C - cmp r5, #2 - beq _022DDE7C - add r2, r2, #1 - add r3, r3, #0x20 - cmp r2, r4 - blt _022DDE58 -_022DDE7C: - str r2, [r1] - cmp r2, r4 - bge _022DDED8 - ldr r4, _022DDEEC ; =ov29_0237368C - str r2, [r4] - ldr r6, _022DDEF0 ; =ov29_023735F4 - ldr r7, [r3, #0xc] - str r7, [r6] - ldr r6, _022DDEF4 ; =ov29_023735F0 - ldr r7, [r3, #0x10] - str r7, [r6] - cmp r5, #2 - bne _022DDEC0 - ldr r6, _022DDEF0 ; =ov29_023735F4 - ldr sp, [r6] - ldmia sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, pc} -_022DDEBC: - b _022DDED8 -_022DDEC0: - ldr r6, _022DDEF0 ; =ov29_023735F4 - ldr sp, [r6] - ldr r7, _022DDEF4 ; =ov29_023735F0 - ldr r2, [r7] - bx r2 -_022DDED4: - b _022DDED8 -_022DDED8: - ldmia sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, pc} - .align 2, 0 -_022DDEDC: .word ov29_023735F8 -_022DDEE0: .word ov29_023735EC -_022DDEE4: .word ov29_023510B8 -_022DDEE8: .word ov29_0237360C -_022DDEEC: .word ov29_0237368C -_022DDEF0: .word ov29_023735F4 -_022DDEF4: .word ov29_023735F0 - arm_func_end ov29_022DDE30 - - arm_func_start ov29_022DDEF8 -ov29_022DDEF8: ; 0x022DDEF8 - stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, lr} - ldr r0, _022DDFD8 ; =ov29_023735F4 - str sp, [r0] - mov r1, #0x20 - ldr r3, _022DDFDC ; =ov29_023735EC - ldr r2, [r3] - mul r1, r1, r2 - ldr r3, _022DDFE0 ; =ov29_0237360C - add r4, r3, r1 - ldrh r5, [r4] - cmp r5, #1 - bne _022DDF30 - mov r5, #2 - str r5, [r4] -_022DDF30: - ldr r5, [r0] - str r5, [r4, #0xc] - ldr r5, _022DDFE4 ; =ov29_023735F0 - ldr r5, [r5] - str r5, [r4, #0x10] - mov r3, r4 - ldr r1, _022DDFE8 ; =ov29_023510B8 - ldr r4, [r1] -_022DDF50: - add r2, r2, #1 - add r3, r3, #0x20 - cmp r2, r4 - bge _022DDF78 - ldrh r5, [r3] - cmp r5, #1 - beq _022DDF78 - cmp r5, #2 - beq _022DDF78 - b _022DDF50 -_022DDF78: - ldr r6, _022DDFDC ; =ov29_023735EC - str r2, [r6] - cmp r2, r4 - bge _022DDFCC - ldr r6, _022DDFD8 ; =ov29_023735F4 - ldr r7, [r3, #0xc] - str r7, [r6] - ldr r6, _022DDFE4 ; =ov29_023735F0 - ldr r7, [r3, #0x10] - str r7, [r6] - cmp r5, #2 - bne _022DDFB8 - ldr r6, _022DDFD8 ; =ov29_023735F4 - ldr sp, [r6] - ldmia sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, pc} -_022DDFB4: - b _022DDFCC -_022DDFB8: - ldr r6, _022DDFD8 ; =ov29_023735F4 - ldr sp, [r6] - ldr r7, _022DDFE4 ; =ov29_023735F0 - ldr r2, [r7] - bx r2 -_022DDFCC: - ldr r0, _022DDFEC ; =ov29_023735F8 - ldr sp, [r0] - ldmia sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, pc} - .align 2, 0 -_022DDFD8: .word ov29_023735F4 -_022DDFDC: .word ov29_023735EC -_022DDFE0: .word ov29_0237360C -_022DDFE4: .word ov29_023735F0 -_022DDFE8: .word ov29_023510B8 -_022DDFEC: .word ov29_023735F8 - arm_func_end ov29_022DDEF8 - - arm_func_start ov29_022DDFF0 -ov29_022DDFF0: ; 0x022DDFF0 - ldr ip, _022DDFF8 ; =sub_020519D0 - bx ip - .align 2, 0 -_022DDFF8: .word sub_020519D0 - arm_func_end ov29_022DDFF0 - - arm_func_start ov29_022DDFFC -ov29_022DDFFC: ; 0x022DDFFC - stmdb sp!, {r3, lr} - mov r0, #0x44 - mov r1, #0 - bl MemAlloc - ldr r2, _022DE064 ; =ov29_0235352C - mov r1, #0x44 - str r0, [r2] - bl MemZero - ldr r0, _022DE064 ; =ov29_0235352C - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x20 - bl ov29_022DE22C - ldr r0, _022DE064 ; =ov29_0235352C - mov r1, #1 - ldr r0, [r0] - add r0, r0, #0x2c - bl ov29_022DE22C - mov r0, #0 - bl sub_02051ED4 - mov r1, r0 - ldr r0, _022DE064 ; =ov29_0235352C - mov r2, #0x20 - ldr r0, [r0] - bl sub_02063628 - ldmia sp!, {r3, pc} - .align 2, 0 -_022DE064: .word ov29_0235352C - arm_func_end ov29_022DDFFC - - arm_func_start ov29_022DE068 -ov29_022DE068: ; 0x022DE068 - stmdb sp!, {r3, lr} - ldr r0, _022DE09C ; =ov29_0235352C - ldr r0, [r0] - add r0, r0, #0x20 - bl ov29_022DE274 - ldr r0, _022DE09C ; =ov29_0235352C - ldr r0, [r0] - add r0, r0, #0x2c - bl ov29_022DE274 - ldr r0, _022DE09C ; =ov29_0235352C - ldr r0, [r0] - bl sub_0206367C - ldmia sp!, {r3, pc} - .align 2, 0 -_022DE09C: .word ov29_0235352C - arm_func_end ov29_022DE068 - - arm_func_start ov29_022DE0A0 -ov29_022DE0A0: ; 0x022DE0A0 - stmdb sp!, {r3, lr} - bl ov29_022DE068 - bl sub_02051B44 - ldr r0, _022DE0C8 ; =ov29_0235352C - ldr r0, [r0] - bl MemFree - ldr r0, _022DE0C8 ; =ov29_0235352C - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022DE0C8: .word ov29_0235352C - arm_func_end ov29_022DE0A0 - - arm_func_start ov29_022DE0CC -ov29_022DE0CC: ; 0x022DE0CC - stmdb sp!, {r3, lr} - ldr r0, _022DE0E8 ; =ov29_0235352C - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl sub_02051C24 - ldmia sp!, {r3, pc} - .align 2, 0 -_022DE0E8: .word ov29_0235352C - arm_func_end ov29_022DE0CC - - arm_func_start ov29_022DE0EC -ov29_022DE0EC: ; 0x022DE0EC - stmdb sp!, {r4, lr} - ldr r2, _022DE118 ; =ov29_0235352C - mov r4, r0 - ldr r0, [r2] - mov r2, r1 - mov r1, r4 - bl sub_02063734 - ldr r0, _022DE118 ; =ov29_0235352C - ldr r0, [r0] - str r4, [r0, #0x18] - ldmia sp!, {r4, pc} - .align 2, 0 -_022DE118: .word ov29_0235352C - arm_func_end ov29_022DE0EC - - arm_func_start ov29_022DE11C -ov29_022DE11C: ; 0x022DE11C - ldr r0, _022DE12C ; =ov29_0235352C - ldr ip, _022DE130 ; =sub_02063770 - ldr r0, [r0] - bx ip - .align 2, 0 -_022DE12C: .word ov29_0235352C -_022DE130: .word sub_02063770 - arm_func_end ov29_022DE11C - - arm_func_start ov29_022DE134 -ov29_022DE134: ; 0x022DE134 - stmdb sp!, {r3, lr} - ldr ip, _022DE158 ; =ov29_0235352C - str r3, [sp] - mov r2, r0 - mov r3, r1 - ldr r0, [ip] - mov r1, #0 - bl sub_02063830 - ldmia sp!, {r3, pc} - .align 2, 0 -_022DE158: .word ov29_0235352C - arm_func_end ov29_022DE134 - - arm_func_start ov29_022DE15C -ov29_022DE15C: ; 0x022DE15C - stmdb sp!, {r3, lr} - mov r0, #0 - mov r1, r0 - bl sub_02051DD0 - mov r0, #1 - mov r1, #0 - bl sub_02051DD0 - mov r0, #0 - mov r1, #1 - bl sub_02051DD0 - mov r0, #1 - mov r1, r0 - bl sub_02051DD0 - mov r0, #0 - mov r1, r0 - bl sub_02051E60 - mov r0, #1 - mov r1, #0 - bl sub_02051E60 - mov r0, #0 - mov r1, #1 - bl sub_02051E60 - mov r0, #1 - mov r1, r0 - bl sub_02051E60 - mov r0, #0 - bl ov29_022DE1E4 - mov r0, #1 - bl ov29_022DE1E4 - mov r0, #0 - bl ov29_022DE208 - mov r0, #1 - bl ov29_022DE208 - ldmia sp!, {r3, pc} - arm_func_end ov29_022DE15C - - arm_func_start ov29_022DE1E4 -ov29_022DE1E4: ; 0x022DE1E4 - ldr r2, _022DE200 ; =ov29_0235352C - mov r1, #0xc - ldr r2, [r2] - ldr ip, _022DE204 ; =sub_0200B3D4 - mla r1, r0, r1, r2 - ldr r0, [r1, #0x24] - bx ip - .align 2, 0 -_022DE200: .word ov29_0235352C -_022DE204: .word sub_0200B3D4 - arm_func_end ov29_022DE1E4 - - arm_func_start ov29_022DE208 -ov29_022DE208: ; 0x022DE208 - ldr r2, _022DE224 ; =ov29_0235352C - mov r1, #0xc - ldr r2, [r2] - ldr ip, _022DE228 ; =sub_0200B330 - mla r1, r0, r1, r2 - ldr r0, [r1, #0x24] - bx ip - .align 2, 0 -_022DE224: .word ov29_0235352C -_022DE228: .word sub_0200B330 - arm_func_end ov29_022DE208 - - arm_func_start ov29_022DE22C -ov29_022DE22C: ; 0x022DE22C - stmdb sp!, {r3, lr} - mov r3, r0 - cmp r1, #0 - bne _022DE254 - ldr r2, _022DE26C ; =0x06005000 - add r0, r3, #4 - add r1, r3, #8 - str r2, [r3] - bl sub_020275C0 - ldmia sp!, {r3, pc} -_022DE254: - ldr r2, _022DE270 ; =0x06205000 - add r0, r3, #4 - add r1, r3, #8 - str r2, [r3] - bl sub_020275DC - ldmia sp!, {r3, pc} - .align 2, 0 -_022DE26C: .word 0x06005000 -_022DE270: .word 0x06205000 - arm_func_end ov29_022DE22C - - arm_func_start ov29_022DE274 -ov29_022DE274: ; 0x022DE274 - mov r1, #0 - str r1, [r0] - str r1, [r0, #4] - str r1, [r0, #8] - bx lr - arm_func_end ov29_022DE274 - - arm_func_start ov29_022DE288 -ov29_022DE288: ; 0x022DE288 - ldr r0, [r0] - bx lr - arm_func_end ov29_022DE288 - - arm_func_start ov29_022DE290 -ov29_022DE290: ; 0x022DE290 - strh r1, [r0, #0xa] - mov r2, #0 - strb r2, [r0, #0xc] - strb r2, [r0, #0xd] - strb r2, [r0, #0xe] - ldr r1, _022DE2C4 ; =DUNGEON_PTR - strb r2, [r0, #0xf] - ldr r2, [r1] - mov r1, #1 - add r2, r2, #0x1e0 - str r2, [r0, #0x10] - strb r1, [r0, #8] - bx lr - .align 2, 0 -_022DE2C4: .word DUNGEON_PTR - arm_func_end ov29_022DE290 - - arm_func_start ov29_022DE2C8 -ov29_022DE2C8: ; 0x022DE2C8 - str r2, [r0, #0x14] - strh r1, [r0, #0xa] - mov r2, #0 - strb r2, [r0, #0xc] - strb r2, [r0, #0xd] - strb r2, [r0, #0xe] - ldr r1, _022DE2FC ; =DUNGEON_PTR - strb r2, [r0, #0xf] - ldr r1, [r1] - add r1, r1, #0x1e0 - str r1, [r0, #0x10] - strb r2, [r0, #8] - bx lr - .align 2, 0 -_022DE2FC: .word DUNGEON_PTR - arm_func_end ov29_022DE2C8 - - arm_func_start ov29_022DE300 -ov29_022DE300: ; 0x022DE300 - stmdb sp!, {r3, lr} - mov r0, #0x74 - mov r1, #0 - bl MemAlloc - ldr r2, _022DE410 ; =ov29_02353530 - mov r1, #0x74 - str r0, [r2] - bl MemZero - ldr r0, _022DE410 ; =ov29_02353530 - mov r2, #0x100 - ldr r1, [r0] - strh r2, [r1, #4] - ldr r1, [r0] - strh r2, [r1, #2] - ldr r2, [r0] - ldrsh r1, [r2, #2] - strh r1, [r2, #6] - ldr r2, [r0] - ldrsh r1, [r2, #4] - strh r1, [r2, #8] - ldr r0, [r0] - add r0, r0, #0xc - bl sub_0200A2CC - ldr r1, _022DE410 ; =ov29_02353530 - mov r0, #0 - ldr r1, [r1] - strb r0, [r1, #0x4c] - strb r0, [r1, #0x4d] - strb r0, [r1, #0x4e] - strb r0, [r1, #0x4f] - bl sub_02051ED4 - ldr r2, [r0, #0x14] - ldr r1, _022DE410 ; =ov29_02353530 - mov r0, #0 - ldr r1, [r1] - str r2, [r1, #0x34] - bl sub_0201BCCC - ldr r2, [r0, #0x14] - ldr r1, _022DE410 ; =ov29_02353530 - mov r0, #0 - ldr r1, [r1] - str r2, [r1, #0x38] - bl sub_0201BCF4 - ldr r3, [r0, #0x14] - ldr r1, _022DE410 ; =ov29_02353530 - mov r0, #1 - ldr r2, [r1] - mov r1, #0 - str r3, [r2, #0x3c] - bl sub_0201BD1C - mov r0, #4 - ldr r1, _022DE414 ; =0x0000040A - ldr r2, _022DE410 ; =ov29_02353530 - mov r3, #0 - ldr r2, [r2] - add r2, r2, #0x40 - bl DirectoryFileMngr_OpenDirectoryFile - ldr r0, _022DE410 ; =ov29_02353530 - ldr r1, [r0] - add r0, r1, #0x48 - ldr r1, [r1, #0x40] - bl HandleSir0Translation - ldr r0, _022DE410 ; =ov29_02353530 - mov r1, #0x20 - ldr r0, [r0] - add r0, r0, #0x51 - bl MemZero - ldmia sp!, {r3, pc} - .align 2, 0 -_022DE410: .word ov29_02353530 -#ifdef JAPAN -_022DE414: .word 0x000003FE -#else -_022DE414: .word 0x0000040A -#endif - arm_func_end ov29_022DE300 - - arm_func_start ov29_022DE418 -ov29_022DE418: ; 0x022DE418 - stmdb sp!, {r3, lr} - ldr r0, _022DE478 ; =ov29_02353530 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl sub_02051ED4 - ldr r1, _022DE478 ; =ov29_02353530 - ldr r1, [r1] - ldr r1, [r1, #0x34] - str r1, [r0, #0x14] - mov r0, #0 - bl sub_0201BCCC - ldr r1, _022DE478 ; =ov29_02353530 - ldr r1, [r1] - ldr r1, [r1, #0x38] - str r1, [r0, #0x14] - mov r0, #0 - bl sub_0201BCF4 - ldr r1, _022DE478 ; =ov29_02353530 - ldr r1, [r1] - ldr r1, [r1, #0x3c] - str r1, [r0, #0x14] - ldmia sp!, {r3, pc} - .align 2, 0 -_022DE478: .word ov29_02353530 - arm_func_end ov29_022DE418 - - arm_func_start ov29_022DE47C -ov29_022DE47C: ; 0x022DE47C - ldr r2, _022DE494 ; =ov29_02353530 - ldr r2, [r2] - cmp r2, #0 - addne r0, r2, r0 - strneb r1, [r0, #0x51] - bx lr - .align 2, 0 -_022DE494: .word ov29_02353530 - arm_func_end ov29_022DE47C - - arm_func_start ov29_022DE498 -ov29_022DE498: ; 0x022DE498 - stmdb sp!, {r3, lr} - ldr r0, _022DE4F8 ; =ov29_02353530 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl ov29_022DE418 - ldr r0, _022DE4F8 ; =ov29_02353530 - ldr r0, [r0] - add r0, r0, #0x40 - bl UnloadFile - mov r0, #0 - mov r1, r0 - bl sub_0201BD1C - ldr r0, _022DE4F8 ; =ov29_02353530 - ldr r0, [r0] - add r0, r0, #0xc - bl sub_0200A2F4 - ldr r0, _022DE4F8 ; =ov29_02353530 - ldr r0, [r0] - bl MemFree - ldr r0, _022DE4F8 ; =ov29_02353530 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022DE4F8: .word ov29_02353530 - arm_func_end ov29_022DE498 - - arm_func_start ov29_022DE4FC -ov29_022DE4FC: ; 0x022DE4FC - stmdb sp!, {r4, lr} - ldr r1, _022DE55C ; =ov29_02353530 - mov r0, #0 - ldr r1, [r1] - ldrh r4, [r1, #4] - bl sub_02051ED4 - ldr r2, _022DE560 ; =sub_01FF9BA0 - mov r1, r4 - bl ov29_022DE2C8 - mov r0, #0 - bl sub_0201BCCC - ldr r1, _022DE55C ; =ov29_02353530 - ldr r2, _022DE564 ; =sub_01FF9E14 - ldr r1, [r1] - ldrh r1, [r1, #2] - bl ov29_022DE2C8 - mov r0, #0 - bl sub_0201BCF4 - ldr r1, _022DE55C ; =ov29_02353530 - ldr r2, _022DE568 ; =sub_01FF9F80 - ldr r1, [r1] - ldrh r1, [r1, #2] - bl ov29_022DE2C8 - ldmia sp!, {r4, pc} - .align 2, 0 -_022DE55C: .word ov29_02353530 -_022DE560: .word sub_01FF9BA0 -_022DE564: .word sub_01FF9E14 -_022DE568: .word sub_01FF9F80 - arm_func_end ov29_022DE4FC - - arm_func_start ov29_022DE56C -ov29_022DE56C: ; 0x022DE56C - stmdb sp!, {r4, r5, r6, lr} - mov r6, r1 - mov r4, r0 - cmp r6, #1 - bne _022DE598 - mov r0, #0 - bl sub_02051ED4 - mov r1, r4, lsl #0x10 - mov r1, r1, lsr #0x10 - bl ov29_022DE290 - b _022DE5C0 -_022DE598: - mov r0, r4, lsl #0x10 - mov r5, r0, lsr #0x10 - mov r0, #0 - bl sub_0201BCCC - mov r1, r5 - bl ov29_022DE290 - mov r0, #0 - bl sub_0201BCF4 - mov r1, r5 - bl ov29_022DE290 -_022DE5C0: - ldr r0, _022DE5D4 ; =ov29_02353530 - ldr r0, [r0] - add r0, r0, r6, lsl #1 - strh r4, [r0, #2] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022DE5D4: .word ov29_02353530 - arm_func_end ov29_022DE56C - - arm_func_start ov29_022DE5D8 -ov29_022DE5D8: ; 0x022DE5D8 - ldr r2, _022DE5EC ; =ov29_02353530 - ldr r2, [r2] - add r1, r2, r1, lsl #1 - strh r0, [r1, #2] - bx lr - .align 2, 0 -_022DE5EC: .word ov29_02353530 - arm_func_end ov29_022DE5D8 - - arm_func_start ov29_022DE5F0 -ov29_022DE5F0: ; 0x022DE5F0 - ldr r1, _022DE604 ; =ov29_02353530 - ldr r1, [r1] - add r0, r1, r0, lsl #1 - ldrsh r0, [r0, #2] - bx lr - .align 2, 0 -_022DE604: .word ov29_02353530 - arm_func_end ov29_022DE5F0 - - arm_func_start ov29_022DE608 -ov29_022DE608: ; 0x022DE608 - ldr r0, _022DE61C ; =ov29_02353530 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0, #0x50] - bx lr - .align 2, 0 -_022DE61C: .word ov29_02353530 - arm_func_end ov29_022DE608 - - arm_func_start GetWeatherColorTable -GetWeatherColorTable: ; 0x022DE620 - ldr r1, _022DE634 ; =ov29_02353530 - ldr r1, [r1] - ldr r1, [r1, #0x48] - add r0, r1, r0, lsl #10 - bx lr - .align 2, 0 -_022DE634: .word ov29_02353530 - arm_func_end GetWeatherColorTable - - arm_func_start ov29_022DE638 -ov29_022DE638: ; 0x022DE638 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r1, _022DE844 ; =DUNGEON_PTR - mov r5, r0 - ldr r0, [r1] - mov r4, #0 - add r0, r0, #0x4000 -#ifdef JAPAN - ldrsh r0, [r0, #0x30] -#else - ldrsh r0, [r0, #0xd4] -#endif - bl IsBackgroundTileset - cmp r0, #0 - mov r1, r4 - bne _022DE754 - ldr r0, _022DE848 ; =ov29_023510BC - mov r2, r5 - mov r3, r1 - str r1, [sp] - bl sub_02051EF0 - mov r0, r4 - bl sub_02051D68 - mov r3, #1 - mov r1, r4 - str r3, [sp] - ldr r0, _022DE848 ; =ov29_023510BC - mov r2, r5 - mov r3, r1 - bl sub_02051EF0 - mov r0, #1 - bl sub_02051D68 - bl GetDefaultTileTextureId - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r7, #0 - add sb, r0, #4 - add r4, r4, #1 - mov r8, #1 - mov r6, r7 -_022DE6C4: - mov r1, r4, lsl #0x10 - mov r0, sb - mov r2, r5 - mov r3, r7 - mov r1, r1, asr #0x10 - str r7, [sp] - bl sub_02051EF0 - mov r0, r6 - bl sub_02051D68 - add r8, r8, #1 - cmp r8, #0xd0 - add sb, sb, #4 - add r4, r4, #1 - blt _022DE6C4 - mov sb, #0 - ldr r8, _022DE84C ; =ov29_0237C6D4 - mov r7, #0xd0 - mov r6, sb - mov r4, sb -_022DE710: - mov r1, r7, lsl #0x10 - mov r0, r8 - mov r2, r5 - mov r3, r6 - mov r1, r1, asr #0x10 - str r6, [sp] - bl sub_02051EF0 - mov r0, r4 - bl sub_02051D68 - add r7, r7, #1 - cmp r7, #0xe0 - add sb, sb, #1 - addeq r7, r7, #0x10 - add r8, r8, #4 - cmp sb, #0x20 - blt _022DE710 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022DE754: - ldr r0, _022DE848 ; =ov29_023510BC - mov r2, r5 - mov r3, r1 - str r1, [sp] - bl sub_02051EF0 - mov r0, r4 - bl sub_02051D68 - mov r3, #1 - mov r1, r4 - str r3, [sp] - ldr r0, _022DE848 ; =ov29_023510BC - mov r2, r5 - mov r3, r1 - bl sub_02051EF0 - mov r0, #1 - bl sub_02051D68 - bl GetDefaultTileTextureId - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r7, #0 - add r8, r0, #4 - add r4, r4, #1 - mov sb, #1 - mov r6, r7 -_022DE7B4: - mov r1, r4, lsl #0x10 - mov r0, r8 - mov r2, r5 - mov r3, r7 - mov r1, r1, asr #0x10 - str r7, [sp] - bl sub_02051EF0 - mov r0, r6 - bl sub_02051D68 - add sb, sb, #1 - cmp sb, #0xe0 - add r8, r8, #4 - add r4, r4, #1 - blt _022DE7B4 - ldr r8, _022DE850 ; =ov29_0237C714 - mov r7, #0xf0 - cmp r8, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov sb, #0 - mov r6, sb - mov r4, sb -_022DE808: - mov r1, r7, lsl #0x10 - mov r0, r8 - mov r2, r5 - mov r3, r6 - mov r1, r1, asr #0x10 - str r6, [sp] - bl sub_02051EF0 - mov r0, r4 - bl sub_02051D68 - add sb, sb, #1 - cmp sb, #0x10 - add r8, r8, #4 - add r7, r7, #1 - blt _022DE808 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022DE844: .word DUNGEON_PTR -_022DE848: .word ov29_023510BC -_022DE84C: .word ov29_0237C6D4 -_022DE850: .word ov29_0237C714 - arm_func_end ov29_022DE638 - - arm_func_start ov29_022DE854 -ov29_022DE854: ; 0x022DE854 - stmdb sp!, {r3, lr} - mov r0, #0 - bl sub_02051ED4 - bl sub_0200A544 - ldmia sp!, {r3, pc} - arm_func_end ov29_022DE854 - - arm_func_start ov29_022DE868 -ov29_022DE868: ; 0x022DE868 - stmdb sp!, {r3, lr} - ldr r0, _022DE900 ; =ov29_02353530 - ldr r2, [r0] - cmp r2, #0 - ldmeqia sp!, {r3, pc} - ldrb r0, [r2, #0x50] - cmp r0, #0 - ldreqsh r1, [r2, #4] - ldreqsh r0, [r2, #8] - cmpeq r1, r0 - beq _022DE8B0 - ldrsh r0, [r2, #4] - mov r1, #1 - bl ov29_022DE56C - ldr r0, _022DE900 ; =ov29_02353530 - ldr r1, [r0] - ldrsh r0, [r1, #4] - strh r0, [r1, #8] -_022DE8B0: - ldr r0, _022DE900 ; =ov29_02353530 - ldr r2, [r0] - ldrb r0, [r2, #0x50] - cmp r0, #0 - ldreqsh r1, [r2, #2] - ldreqsh r0, [r2, #6] - cmpeq r1, r0 - beq _022DE8EC - ldrsh r0, [r2, #2] - mov r1, #0 - bl ov29_022DE56C - ldr r0, _022DE900 ; =ov29_02353530 - ldr r1, [r0] - ldrsh r0, [r1, #2] - strh r0, [r1, #6] -_022DE8EC: - ldr r0, _022DE900 ; =ov29_02353530 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #0x50] - ldmia sp!, {r3, pc} - .align 2, 0 -_022DE900: .word ov29_02353530 - arm_func_end ov29_022DE868 - - arm_func_start ov29_022DE904 -ov29_022DE904: ; 0x022DE904 - stmdb sp!, {r3, lr} - mov r0, #0x20 - mov r1, #0 - bl MemAlloc - ldr r2, _022DE92C ; =ov29_02353534 - mov r1, #0x20 - str r0, [r2] - bl MemZero - bl ov29_022DEA34 - ldmia sp!, {r3, pc} - .align 2, 0 -_022DE92C: .word ov29_02353534 - arm_func_end ov29_022DE904 - - arm_func_start ov29_022DE930 -ov29_022DE930: ; 0x022DE930 - stmdb sp!, {r3, lr} - ldr r0, _022DE950 ; =ov29_02353534 - ldr r0, [r0] - bl MemFree - ldr r0, _022DE950 ; =ov29_02353534 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022DE950: .word ov29_02353534 - arm_func_end ov29_022DE930 - - arm_func_start ov29_022DE954 -ov29_022DE954: ; 0x022DE954 - cmp r0, #0x10 - movge r0, #1 - movlt r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end ov29_022DE954 - - arm_func_start ov29_022DE968 -ov29_022DE968: ; 0x022DE968 - cmp r0, #0 - beq _022DE984 - cmp r0, #1 - beq _022DE990 - cmp r0, #2 - beq _022DE99C - b _022DE9A8 -_022DE984: - mov r0, #0 - mov r3, #1 - b _022DE9B0 -_022DE990: - mov r0, #0x1b - mov r3, #4 - b _022DE9B0 -_022DE99C: - mov r0, #1 - mov r3, #0x14 - b _022DE9B0 -_022DE9A8: - mov r3, #0 - mov r0, r3 -_022DE9B0: - ldr r1, _022DE9F4 ; =ov29_02353534 - mov r2, #0 - ldr ip, [r1] - b _022DE9E4 -_022DE9C0: - ldrb r1, [ip, r0] - cmp r1, #0 - bxeq lr - add r2, r2, #1 - add r1, r0, #1 - mov r0, r2, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r2, r0, asr #0x10 - mov r0, r1, asr #0x10 -_022DE9E4: - cmp r2, r3 - blt _022DE9C0 - mvn r0, #0 - bx lr - .align 2, 0 -_022DE9F4: .word ov29_02353534 - arm_func_end ov29_022DE968 - - arm_func_start ov29_022DE9F8 -ov29_022DE9F8: ; 0x022DE9F8 - ldr r1, _022DEA0C ; =ov29_02353534 - mov r2, #1 - ldr r1, [r1] - strb r2, [r1, r0] - bx lr - .align 2, 0 -_022DEA0C: .word ov29_02353534 - arm_func_end ov29_022DE9F8 - - arm_func_start ov29_022DEA10 -ov29_022DEA10: ; 0x022DEA10 - ldr ip, _022DEA18 ; =ov29_022DE968 - bx ip - .align 2, 0 -_022DEA18: .word ov29_022DE968 - arm_func_end ov29_022DEA10 - - arm_func_start ov29_022DEA1C -ov29_022DEA1C: ; 0x022DEA1C - ldr r1, _022DEA30 ; =ov29_02353534 - mov r2, #0 - ldr r1, [r1] - strb r2, [r1, r0] - bx lr - .align 2, 0 -_022DEA30: .word ov29_02353534 - arm_func_end ov29_022DEA1C - - arm_func_start ov29_022DEA34 -ov29_022DEA34: ; 0x022DEA34 - mov r3, #0 - ldr r0, _022DEA58 ; =ov29_02353534 - mov r2, r3 -_022DEA40: - ldr r1, [r0] - strb r2, [r1, r3] - add r3, r3, #1 - cmp r3, #0x20 - blt _022DEA40 - bx lr - .align 2, 0 -_022DEA58: .word ov29_02353534 - arm_func_end ov29_022DEA34 diff --git a/asm/overlay_29_022DC65C.s b/asm/overlay_29_022DC65C.s new file mode 100644 index 00000000..87648414 --- /dev/null +++ b/asm/overlay_29_022DC65C.s @@ -0,0 +1,2756 @@ + .include "asm/macros.inc" + .include "overlay_29_022DC65C.inc" + + .text + + arm_func_start ov29_022DC65C +ov29_022DC65C: ; 0x022DC65C + ldr ip, _022DC668 ; =ov29_022DC2B8 + ldr r0, _022DC66C ; =ov29_023538B4 + bx ip + .align 2, 0 +_022DC668: .word ov29_022DC2B8 +_022DC66C: .word ov29_023538B4 + arm_func_end ov29_022DC65C + + arm_func_start ov29_022DC670 +ov29_022DC670: ; 0x022DC670 + ldr ip, _022DC67C ; =ov29_022DC33C + ldr r0, _022DC680 ; =ov29_023538B4 + bx ip + .align 2, 0 +_022DC67C: .word ov29_022DC33C +_022DC680: .word ov29_023538B4 + arm_func_end ov29_022DC670 + + arm_func_start ov29_022DC684 +ov29_022DC684: ; 0x022DC684 + ldr ip, _022DC690 ; =ov10_022C0998 + mov r1, #1 + bx ip + .align 2, 0 +_022DC690: .word ov10_022C0998 + arm_func_end ov29_022DC684 + + arm_func_start ov29_022DC694 +ov29_022DC694: ; 0x022DC694 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x14 + mov r5, r0 + add r0, sp, #0 + mov r4, r1 + bl ov10_022C22A0 + add r0, sp, #0 + mov r1, r4 + bl ov10_022C0814 + mov r0, r5 + mov r1, #0 + mov r2, #1 + bl DrawTeamStats + add sp, sp, #0x14 + ldmia sp!, {r4, r5, pc} + arm_func_end ov29_022DC694 + + arm_func_start ov29_022DC6D0 +ov29_022DC6D0: ; 0x022DC6D0 + ldr ip, _022DC6D8 ; =UpdateTeamStats + bx ip + .align 2, 0 +_022DC6D8: .word UpdateTeamStats + arm_func_end ov29_022DC6D0 + + arm_func_start ov29_022DC6DC +ov29_022DC6DC: ; 0x022DC6DC + ldr ip, _022DC6E4 ; =ov10_022C11D8 + bx ip + .align 2, 0 +_022DC6E4: .word ov10_022C11D8 + arm_func_end ov29_022DC6DC + + arm_func_start ov29_022DC6E8 +ov29_022DC6E8: ; 0x022DC6E8 + stmdb sp!, {r4, lr} + sub sp, sp, #0x18 + ldrb r4, [sp, #0x20] + ldrsh ip, [sp, #0x24] + ldrsh lr, [sp, #0x28] + stmia sp, {r4, ip} + str lr, [sp, #8] + ldrsh ip, [sp, #0x2c] + ldrsh lr, [sp, #0x30] + str ip, [sp, #0xc] + ldrb ip, [sp, #0x34] + str lr, [sp, #0x10] + str ip, [sp, #0x14] + bl ov10_022C0F6C + add sp, sp, #0x18 + ldmia sp!, {r4, pc} + arm_func_end ov29_022DC6E8 + + arm_func_start ov29_022DC728 +ov29_022DC728: ; 0x022DC728 + stmdb sp!, {r3, lr} + bl FreeTeamStats + bl ov10_022C096C + ldmia sp!, {r3, pc} + arm_func_end ov29_022DC728 + + arm_func_start ov29_022DC738 +ov29_022DC738: ; 0x022DC738 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x14 + mov r5, r0 + add r0, sp, #0 + mov r4, r1 + bl ov10_022C22A0 + add r0, sp, #0 + mov r1, r4 + bl ov10_022C0814 + mov r0, r5 + bl ov10_022C14D0 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, pc} + arm_func_end ov29_022DC738 + + arm_func_start ov29_022DC76C +ov29_022DC76C: ; 0x022DC76C + ldr ip, _022DC774 ; =ov10_022C159C + bx ip + .align 2, 0 +_022DC774: .word ov10_022C159C + arm_func_end ov29_022DC76C + + arm_func_start ov29_022DC778 +ov29_022DC778: ; 0x022DC778 + bx lr + arm_func_end ov29_022DC778 + + arm_func_start ov29_022DC77C +ov29_022DC77C: ; 0x022DC77C + stmdb sp!, {r3, lr} + bl FreeMapAndTeam + bl ov10_022C096C + ldmia sp!, {r3, pc} + arm_func_end ov29_022DC77C + + arm_func_start ov29_022DC78C +ov29_022DC78C: ; 0x022DC78C + stmdb sp!, {r4, lr} + ldr r1, _022DC7E0 ; =ov29_02353518 + mov lr, #0 + ldr r4, [r1] + mov r1, #0x50 + b _022DC7D0 +_022DC7A4: + mul ip, lr, r1 + add r3, r4, ip + ldrb r2, [r3, #4] + cmp r2, #0 + beq _022DC7CC + ldr r2, [r3, #8] + cmp r0, r2 + addeq r0, r4, #4 + addeq r0, r0, ip + ldmeqia sp!, {r4, pc} +_022DC7CC: + add lr, lr, #1 +_022DC7D0: + cmp lr, #0x16 + blt _022DC7A4 + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_022DC7E0: .word ov29_02353518 + arm_func_end ov29_022DC78C + +; https://decomp.me/scratch/qiwjF + arm_func_start ov29_022DC7E4 +ov29_022DC7E4: ; 0x022DC7E4 + stmdb sp!, {r3, lr} + mov lr, #0 + mov r3, lr + mov r2, lr + b _022DC80C +_022DC7F8: + mov r0, r0, lsr #1 + mov ip, r1, lsr #1 + orr r0, r0, r1, lsl #31 + mov r1, ip + add lr, lr, #1 +_022DC80C: + cmp r1, r3 + cmpeq r0, r2 + bne _022DC7F8 + mov r0, lr + ldmia sp!, {r3, pc} + arm_func_end ov29_022DC7E4 + + arm_func_start ov29_022DC820 +ov29_022DC820: ; 0x022DC820 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x3c + mov r8, r1 + mov r1, #0xc + mul r1, r8, r1 + mov sb, r0 + ldr r0, [sb, #0x10] + add r4, sb, #0x2c + ldr r3, [sb, #0xc] + cmp r0, #0 + add r4, r4, r1 + mov r5, #0 + cmpeq r3, #0 + streq r5, [r4] + str r2, [sp, #0xc] + streq r5, [r4, #4] + beq _022DD084 + ldr r0, [r4, #4] + ldr r2, [r4] + cmp r0, r5 + cmpeq r2, r5 + streq r5, [r4, #8] + ldr r0, [r4, #8] + moveq r5, #1 + cmp r0, #0 + bgt _022DC99C + add r0, sb, #0x2c + cmp r8, #0 + add r0, r0, r1 + moveq r1, #1 + streq r1, [sp, #0x10] + moveq r1, #0 + streq r1, [sp, #0x14] + movne r1, #0 + strne r1, [sp, #0x10] + movne r1, #1 + strne r1, [sp, #0x14] + cmp r8, #0 + ldr r1, [sb, #0x10] + moveq sl, #0x80000000 + str r1, [sp, #0x1c] + ldr r1, [sb, #0xc] + moveq lr, #0 + str r1, [sp, #0x18] + ldr r1, [sp, #0x1c] + movne sl, #0 + movne lr, #1 + cmp r8, #0 + moveq ip, #0x20 + movne ip, #1 + cmp r1, #0 + ldr r1, [sp, #0x18] + cmpeq r1, #0 + mov r1, #0 + moveq r7, r1 + moveq r6, r1 + beq _022DC978 + ldr r6, [r0, #4] + ldr r7, [r0] + cmp r6, r1 + cmpeq r7, r1 + mov r3, #0 + ldreq r7, [sp, #0x10] + ldreq r6, [sp, #0x14] + mov r1, r3 + b _022DC968 +_022DC928: + mov r6, r6, lsl #1 + orr r6, r6, r7, lsr #31 + mov r7, r7, lsl #1 + cmp r6, lr + cmpeq r7, sl + ldrhi r6, [sp, #0x14] + ldr r0, [sp, #0x1c] + ldrhi r7, [sp, #0x10] + and r2, r0, r6 + mov r0, #0 + cmp r2, r0 + ldr r0, [sp, #0x18] + and r0, r0, r7 + cmpeq r0, r1 + bne _022DC978 + add r3, r3, #1 +_022DC968: + cmp r3, ip + blt _022DC928 + mov r7, #0 + mov r6, r7 +_022DC978: + ldr r0, [r4, #4] + ldr r1, [r4] + cmp r0, r6 + cmpeq r1, r7 + strne r7, [r4] + strne r6, [r4, #4] + mov r0, #0x3c + str r0, [r4, #8] + b _022DC9A4 +_022DC99C: + sub r0, r0, #1 + str r0, [r4, #8] +_022DC9A4: + ldrb r0, [sb, #0x14] + cmp r0, #0 + beq _022DCA0C + ldmia r4, {r0, r1} + cmp r1, #0 + cmpeq r0, #0 + beq _022DCA0C + bl ov29_022DC7E4 + ldr r1, _022DD08C ; =ov29_02353518 + mov r0, r0, lsl #0x10 + ldr r2, [r1] + mov r1, r0, asr #0x10 + ldrb r0, [r2, #0x6e8] + cmp r0, #0 + beq _022DCA0C + ldr r0, [sp, #0xc] + add r2, sb, #0x16 + str r0, [sp] + ldrb r3, [sb, #0x15] + add r0, sb, #0x1a + str r3, [sp, #4] + ldr r6, [sb, #4] + add r3, r0, r8, lsl #2 + str r6, [sp, #8] + ldrsh r0, [sb, #8] + bl ov29_022DD0A4 +_022DCA0C: + ldrb r0, [sb, #0x44] + cmp r0, #0 + beq _022DD084 + ldmia r4, {r0, r1} + cmp r1, #0 + cmpeq r0, #0 + mov r6, #0 + beq _022DD084 + bl ov29_022DC7E4 + mov r0, r0, lsl #0x10 + cmp r5, #0 + mov r7, r0, asr #0x10 + movne r6, #1 + bne _022DCB24 + ldr r0, _022DD090 ; =ov29_02350F8C + ldr r0, [r0, r7, lsl #3] + cmp r0, #0x10 + addls pc, pc, r0, lsl #2 + b _022DCB24 +_022DCA58: ; jump table + b _022DCB24 ; case 0 + b _022DCA9C ; case 1 + b _022DCA9C ; case 2 + b _022DCA9C ; case 3 + b _022DCA9C ; case 4 + b _022DCABC ; case 5 + b _022DCABC ; case 6 + b _022DCABC ; case 7 + b _022DCABC ; case 8 + b _022DCAE0 ; case 9 + b _022DCAE0 ; case 10 + b _022DCAE0 ; case 11 + b _022DCAE0 ; case 12 + b _022DCB04 ; case 13 + b _022DCB04 ; case 14 + b _022DCB04 ; case 15 + b _022DCB04 ; case 16 +_022DCA9C: + ldr r0, _022DD08C ; =ov29_02353518 + ldr r0, [r0] + ldr r0, [r0] + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #30 + adds r0, r1, r0, ror #30 + moveq r6, #1 + b _022DCB24 +_022DCABC: + ldr r0, _022DD08C ; =ov29_02353518 + ldr r0, [r0] + ldr r0, [r0] + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #30 + add r0, r1, r0, ror #30 + cmp r0, #1 + moveq r6, #1 + b _022DCB24 +_022DCAE0: + ldr r0, _022DD08C ; =ov29_02353518 + ldr r0, [r0] + ldr r0, [r0] + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #30 + add r0, r1, r0, ror #30 + cmp r0, #2 + moveq r6, #1 + b _022DCB24 +_022DCB04: + ldr r0, _022DD08C ; =ov29_02353518 + ldr r0, [r0] + ldr r0, [r0] + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #30 + add r0, r1, r0, ror #30 + cmp r0, #3 + moveq r6, #1 +_022DCB24: + cmp r6, #0 + beq _022DCC3C + ldmia r4, {r0, r1} + bl ov29_022DC7E4 + ldr r2, _022DD090 ; =ov29_02350F8C + ldr r1, _022DD08C ; =ov29_02353518 + ldr r2, [r2, r7, lsl #3] + ldr r3, [r1] + mov r1, #0xc + ldr r5, [r3, #0x6f4] + mul r6, r2, r1 + ldr sl, [r5, #4] + ldr r1, _022DD094 ; =ov29_02350F90 + add r4, sl, r6 + ldr r0, [r1, r0, lsl #3] + ldr r3, [r3] + ldrb sl, [sl, r6] + ldrb r6, [r4, #1] + mov r2, r3, asr #1 + add r2, r3, r2, lsr #30 + smulbb r6, sl, r6 + mov r0, r0, lsl #0x10 + str r0, [sp, #0x20] + ldrsh r1, [r4, #8] + ldrh sl, [sb, #0x4a] + mov r3, r8, lsl #0x10 + mov fp, r6, lsl #5 + mov r0, r2, asr #2 + mov r6, r3, lsr #0x10 + bl _s32_div_f + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r2, [r4, #4] + ldr r0, _022DD098 ; =_020AFC4C + mla r1, fp, r1, r2 + mov r2, sl, lsl #0x11 + mov r2, r2, asr #0xe + add r2, r2, #0x50 + ldr r0, [r0] + ldr r4, [r5, #0xc] + add r2, r2, r6, lsl #2 + mov r2, r2, lsl #0x10 + mov r3, fp + add r0, r0, #0x70 + add r1, r4, r1 + mov r2, r2, asr #0x10 + bl sub_0201BAC8 + add r0, r6, sl, lsl #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + add r0, r0, #4 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r2, [r5, #0x14] + ldr r1, [sp, #0x20] + add r0, sp, #0x2c + add r1, r2, r1, lsr #10 + mov r2, #0 + mov r3, #0x10 + bl sub_0201F598 + ldr r0, _022DD098 ; =_020AFC4C + ldrh r2, [sp, #0x34] + ldr r0, [r0] + add r1, sp, #0x2c + add r0, r0, #0x70 + bl sub_0201B43C +_022DCC3C: + ldr r6, _022DD08C ; =ov29_02353518 + ldr r2, _022DD090 ; =ov29_02350F8C + ldr r1, [r6] + ldr r3, [r2, r7, lsl #3] + ldr r1, [r1, #0x6f4] + ldrh r4, [r6, #0xc] + ldrsh r0, [sb, #0x4a] + add r2, r2, r7, lsl #3 + ldr r2, [r2, #4] + ldr r1, [r1, #4] + bic r4, r4, #0x100 + strh r4, [r6, #0xc] + ldrh r4, [r6, #0xc] + mov fp, r0, lsl #1 + mov sl, #0xc + bic r4, r4, #0x200 + strh r4, [r6, #0xc] + ldrh r4, [r6, #0xc] + mov r0, r0, lsl #3 + mla r1, r3, sl, r1 + bic r4, r4, #0xc00 + strh r4, [r6, #0xc] + ldrh r5, [r6, #0xc] + add fp, fp, #4 + str r2, [sp, #0x28] + bic r5, r5, #0x1000 + strh r5, [r6, #0xc] + ldrh sl, [r6, #0xc] + mov r5, r8, lsl #0x10 + add r5, fp, r5, asr #16 + bic sl, sl, #0x2000 + strh sl, [r6, #0xc] + ldrh sl, [r6, #0x10] + mov fp, r5, lsl #0x10 + add r0, r0, #0x50 + bic r5, sl, #0xc00 + strh r5, [r6, #0x10] + ldrh sl, [r6, #0x12] + mov r4, #0 + add r8, r0, r8, lsl #2 + bic sl, sl, #1 + strh sl, [r6, #0x12] + ldrh sl, [r6, #0x12] + mov r5, r4 + str r3, [sp, #0x24] + bic r2, sl, #2 + strh r2, [r6, #0x12] + ldrh r2, [r6, #0xe] + cmp r3, #0x10 + mov r0, fp, asr #0x10 + bic r2, r2, #0x3e00 + strh r2, [r6, #0xe] + addls pc, pc, r3, lsl #2 + b _022DCFAC +_022DCD14: ; jump table + b _022DCFAC ; case 0 + b _022DCD58 ; case 1 + b _022DCE14 ; case 2 + b _022DCE14 ; case 3 + b _022DCF50 ; case 4 + b _022DCEE0 ; case 5 + b _022DCE14 ; case 6 + b _022DCE14 ; case 7 + b _022DCDB0 ; case 8 + b _022DCE14 ; case 9 + b _022DCE14 ; case 10 + b _022DCE14 ; case 11 + b _022DCD58 ; case 12 + b _022DCE14 ; case 13 + b _022DCD58 ; case 14 + b _022DCE14 ; case 15 + b _022DCE78 ; case 16 +_022DCD58: + ldrh r2, [r6, #0xc] + bic r2, r2, #0xc000 + strh r2, [r6, #0xc] + ldrh r2, [r6, #0xe] + bic r2, r2, #0xc000 + strh r2, [r6, #0xe] + ldrb r2, [r1, #1] + ldrb r4, [r1] + ldrsh r3, [sb, #0x24] + mov r1, r2, lsl #3 + mov r4, r4, lsl #3 + add r1, r1, r1, lsr #31 + sub r1, r3, r1, asr #1 + sub r1, r1, #0x10 + mov r2, r1, lsl #0x10 + ldrsh r3, [sb, #0x22] + add r1, r4, r4, lsr #31 + mov r4, r2, asr #0x10 + sub r1, r3, r1, asr #1 + mov r1, r1, lsl #0x10 + mov r5, r1, asr #0x10 + b _022DCFAC +_022DCDB0: + ldrh r2, [r6, #0xc] + bic r2, r2, #0xc000 + strh r2, [r6, #0xc] + ldrh r2, [r6, #0xc] + orr r2, r2, #0x8000 + strh r2, [r6, #0xc] + ldrh r2, [r6, #0xe] + bic r2, r2, #0xc000 + strh r2, [r6, #0xe] + ldrb r2, [r1, #1] + ldrb r4, [r1] + ldrsh r3, [sb, #0x24] + mov r1, r2, lsl #3 + mov r4, r4, lsl #3 + add r1, r1, r1, lsr #31 + sub r1, r3, r1, asr #1 + sub r1, r1, #0x10 + mov r2, r1, lsl #0x10 + ldrsh r3, [sb, #0x22] + add r1, r4, r4, lsr #31 + mov r4, r2, asr #0x10 + sub r1, r3, r1, asr #1 + mov r1, r1, lsl #0x10 + mov r5, r1, asr #0x10 + b _022DCFAC +_022DCE14: + ldrh r2, [r6, #0xc] + bic r2, r2, #0xc000 + strh r2, [r6, #0xc] + ldrh r2, [r6, #0xe] + bic r2, r2, #0xc000 + strh r2, [r6, #0xe] + ldrh r2, [r6, #0xe] + orr r2, r2, #0x4000 + strh r2, [r6, #0xe] + ldrb r2, [r1, #1] + ldrb r4, [r1] + ldrsh r3, [sb, #0x24] + mov r1, r2, lsl #3 + mov r4, r4, lsl #3 + add r1, r1, r1, lsr #31 + sub r1, r3, r1, asr #1 + sub r1, r1, #0x10 + mov r2, r1, lsl #0x10 + ldrsh r3, [sb, #0x22] + add r1, r4, r4, lsr #31 + mov r4, r2, asr #0x10 + sub r1, r3, r1, asr #1 + mov r1, r1, lsl #0x10 + mov r5, r1, asr #0x10 + b _022DCFAC +_022DCE78: + ldrh r2, [r6, #0xc] + bic r2, r2, #0xc000 + strh r2, [r6, #0xc] + ldrh r2, [r6, #0xe] + bic r2, r2, #0xc000 + strh r2, [r6, #0xe] + ldrh r2, [r6, #0xe] + orr r2, r2, #0x4000 + strh r2, [r6, #0xe] + ldrb r2, [r1] + ldrb r1, [r1, #1] + ldrsh r4, [sb, #0x22] + mov r3, r2, lsl #3 + mov r2, r1, lsl #3 + add r1, r3, r3, lsr #31 + sub r1, r4, r1, asr #1 + add r1, r1, #8 + mov r1, r1, lsl #0x10 + ldrsh r3, [sb, #0x24] + add r2, r2, r2, lsr #31 + mov r5, r1, asr #0x10 + sub r1, r3, r2, asr #1 + sub r1, r1, #0x10 + mov r1, r1, lsl #0x10 + mov r4, r1, asr #0x10 + b _022DCFAC +_022DCEE0: + ldrh r2, [r6, #0xc] + bic r2, r2, #0xc000 + strh r2, [r6, #0xc] + ldrh r2, [r6, #0xc] + orr r2, r2, #0x4000 + strh r2, [r6, #0xc] + ldrh r2, [r6, #0xe] + bic r2, r2, #0xc000 + strh r2, [r6, #0xe] + ldrh r2, [r6, #0xe] + orr r2, r2, #0x8000 + strh r2, [r6, #0xe] + ldrb r2, [r1, #1] + ldrb r4, [r1] + ldrsh r3, [sb, #0x24] + mov r1, r2, lsl #3 + mov r4, r4, lsl #3 + add r1, r1, r1, lsr #31 + sub r1, r3, r1, asr #1 + sub r1, r1, #0x10 + mov r2, r1, lsl #0x10 + ldrsh r3, [sb, #0x22] + add r1, r4, r4, lsr #31 + mov r4, r2, asr #0x10 + sub r1, r3, r1, asr #1 + mov r1, r1, lsl #0x10 + mov r5, r1, asr #0x10 + b _022DCFAC +_022DCF50: + ldrh r2, [r6, #0xc] + bic r2, r2, #0xc000 + strh r2, [r6, #0xc] + ldrh r2, [r6, #0xe] + bic r2, r2, #0xc000 + strh r2, [r6, #0xe] + ldrh r2, [r6, #0xe] + orr r2, r2, #0x8000 + strh r2, [r6, #0xe] + ldrb r2, [r1] + ldrb r1, [r1, #1] + ldrsh r4, [sb, #0x26] + mov r3, r2, lsl #3 + mov r2, r1, lsl #3 + add r1, r3, r3, lsr #31 + sub r1, r4, r1, asr #1 + mov r1, r1, lsl #0x10 + ldrsh r3, [sb, #0x28] + add r2, r2, r2, lsr #31 + mov r5, r1, asr #0x10 + sub r1, r3, r2, asr #1 + mov r1, r1, lsl #0x10 + mov r4, r1, asr #0x10 +_022DCFAC: + ldr r3, _022DD08C ; =ov29_02353518 + mov r1, #0x400 + ldrh r6, [r3, #0x10] + rsb r1, r1, #0 + and r2, r8, r1, lsr #22 + and r6, r6, r1 + strh r6, [r3, #0x10] + ldrh r8, [r3, #0x10] + mov r6, r0, lsl #0x1c + cmp r7, #0x20 + orr r2, r8, r2 + strh r2, [r3, #0x10] + ldrh r8, [r3, #0x10] + add r0, r1, #0x200 + ldr r2, _022DD09C ; =0xFFFF000F + bic r7, r8, #0xf000 + strh r7, [r3, #0x10] + ldrh r7, [r3, #0x10] + orr r6, r7, r6, lsr #16 + strh r6, [r3, #0x10] + ldrh r6, [r3, #0xe] + ldrsh r7, [sb, #0x46] + and r0, r6, r0 + strh r0, [r3, #0xe] + add r0, r7, r5 + ldrh r6, [r3, #0xe] + and r0, r0, r1, lsr #23 + orr r0, r6, r0 + strh r0, [r3, #0xe] + ldrh r0, [r3, #0x12] + ldrsh r5, [sb, #0x48] + and r0, r0, r2 + strh r0, [r3, #0x12] + add r0, r5, r4 + ldrh r1, [r3, #0x12] + mov r0, r0, lsl #0x14 + orr r0, r1, r0, lsr #16 + strh r0, [r3, #0x12] + ldrneh r0, [r3, #6] + bicne r0, r0, #0x3e00 + strneh r0, [r3, #6] + bne _022DD06C + ldrh r0, [r3, #0xe] + bic r0, r0, #0x3e00 + strh r0, [r3, #0xe] + ldrh r0, [r3, #0xe] + orr r0, r0, #0x2000 + strh r0, [r3, #0xe] +_022DD06C: + ldr r0, _022DD098 ; =_020AFC4C + ldr r1, _022DD0A0 ; =ov29_02353524 + ldr r0, [r0] + mov r2, #1 + add r0, r0, #0x70 + bl sub_0201B9F8 +_022DD084: + add sp, sp, #0x3c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022DD08C: .word ov29_02353518 +_022DD090: .word ov29_02350F8C +_022DD094: .word ov29_02350F90 +_022DD098: .word _020AFC4C +_022DD09C: .word 0xFFFF000F +_022DD0A0: .word ov29_02353524 + arm_func_end ov29_022DC820 + + arm_func_start ov29_022DD0A4 +ov29_022DD0A4: ; 0x022DD0A4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + ldr sb, _022DD500 ; =ov29_02350F8C + ldr r6, _022DD504 ; =ov29_02353518 + ldr r0, [sb, r1, lsl #3] + mov lr, #0xc + ldr r4, [r6] + mul r7, r0, lr + ldr r5, [r4, #0x6f4] + ldrh r4, [r6, #8] + ldr r8, [r5, #4] + add r5, sb, r1, lsl #3 + add sb, r8, r7 + ldr sl, [r5, #4] + ldrsh fp, [sb, #0xa] + bic r4, r4, #0xc00 + ldr ip, [sp, #0x30] + strh r4, [r6, #8] + ldr r4, [sp, #0x34] + ldrh r5, [r6, #8] + mov r4, r4, lsl #0x1e + str r0, [sp] + orr r4, r5, r4, lsr #20 + strh r4, [r6, #8] + ldrb r5, [r8, r7] + ldrb r4, [sb, #1] + ldrsh sb, [r2] + mov r7, r5, lsl #3 + mov r5, r4, lsl #3 + add r4, r7, r7, lsr #31 + sub sb, sb, r4, asr #1 + ldrsh r8, [ip] + ldrsh r7, [r2, #2] + add r5, r5, r5, lsr #31 + sub r8, sb, r8 + ldrsh sb, [r3] + sub r5, r7, r5, asr #1 + ldrsh r4, [ip, #2] + ldrsh r3, [r3, #2] + str sl, [sp, #4] + sub r4, r5, r4 + add r4, r3, r4 + add r5, sb, r8 + sub r3, lr, #0x2c + cmp r5, r3 + subge r8, lr, #0x2c + add r7, fp, #0x190 + sub r3, r4, #0x10 + cmpge r4, r8 + blt _022DD4F8 + cmp r5, #0xff + cmplt r4, #0xc0 + bge _022DD4F8 + ldrh r8, [r6, #4] + cmp r0, #0x10 + bic r8, r8, #0x2000 + strh r8, [r6, #4] + ldrh r8, [r6, #4] + orr r8, r8, #0x2000 + strh r8, [r6, #4] + addls pc, pc, r0, lsl #2 + b _022DD468 +_022DD19C: ; jump table + b _022DD468 ; case 0 + b _022DD1E0 ; case 1 + b _022DD2AC ; case 2 + b _022DD2AC ; case 3 + b _022DD400 ; case 4 + b _022DD388 ; case 5 + b _022DD2AC ; case 6 + b _022DD2AC ; case 7 + b _022DD240 ; case 8 + b _022DD2AC ; case 9 + b _022DD2AC ; case 10 + b _022DD2AC ; case 11 + b _022DD1E0 ; case 12 + b _022DD2AC ; case 13 + b _022DD1E0 ; case 14 + b _022DD2AC ; case 15 + b _022DD318 ; case 16 +_022DD1E0: + ldrh r8, [r6, #4] + ldr r4, _022DD508 ; =0x000001FF + sub r0, lr, #0x20c + bic r8, r8, #0xc000 + strh r8, [r6, #4] + ldrh r8, [r6, #6] + and r5, r5, r4 + ldr r4, _022DD50C ; =0xFFFF000F + bic r8, r8, #0xc000 + strh r8, [r6, #6] + ldrh r8, [r6, #6] + mov r3, r3, lsl #0x14 + and r0, r8, r0 + strh r0, [r6, #6] + ldrh r0, [r6, #6] + orr r0, r0, r5 + strh r0, [r6, #6] + ldrh r0, [r6, #0xa] + and r0, r0, r4 + strh r0, [r6, #0xa] + ldrh r0, [r6, #0xa] + orr r0, r0, r3, lsr #16 + strh r0, [r6, #0xa] + b _022DD468 +_022DD240: + ldrh r8, [r6, #4] + ldr r4, _022DD508 ; =0x000001FF + sub r0, lr, #0x20c + bic r8, r8, #0xc000 + strh r8, [r6, #4] + ldrh r8, [r6, #4] + and r5, r5, r4 + ldr r4, _022DD50C ; =0xFFFF000F + orr r8, r8, #0x8000 + strh r8, [r6, #4] + ldrh r8, [r6, #6] + mov r3, r3, lsl #0x14 + bic r8, r8, #0xc000 + strh r8, [r6, #6] + ldrh r8, [r6, #6] + and r0, r8, r0 + strh r0, [r6, #6] + ldrh r0, [r6, #6] + orr r0, r0, r5 + strh r0, [r6, #6] + ldrh r0, [r6, #0xa] + and r0, r0, r4 + strh r0, [r6, #0xa] + ldrh r0, [r6, #0xa] + orr r0, r0, r3, lsr #16 + strh r0, [r6, #0xa] + b _022DD468 +_022DD2AC: + ldrh r8, [r6, #4] + ldr r4, _022DD508 ; =0x000001FF + sub r0, lr, #0x20c + bic r8, r8, #0xc000 + strh r8, [r6, #4] + ldrh r8, [r6, #6] + and r5, r5, r4 + ldr r4, _022DD50C ; =0xFFFF000F + bic r8, r8, #0xc000 + strh r8, [r6, #6] + ldrh r8, [r6, #6] + mov r3, r3, lsl #0x14 + orr r8, r8, #0x4000 + strh r8, [r6, #6] + ldrh r8, [r6, #6] + and r0, r8, r0 + strh r0, [r6, #6] + ldrh r0, [r6, #6] + orr r0, r0, r5 + strh r0, [r6, #6] + ldrh r0, [r6, #0xa] + and r0, r0, r4 + strh r0, [r6, #0xa] + ldrh r0, [r6, #0xa] + orr r0, r0, r3, lsr #16 + strh r0, [r6, #0xa] + b _022DD468 +_022DD318: + ldrh r8, [r6, #4] + sub r0, lr, #0x20c + ldr r4, _022DD508 ; =0x000001FF + bic r8, r8, #0xc000 + strh r8, [r6, #4] + ldrh r8, [r6, #6] + add r5, r5, #8 + and r5, r5, r4 + bic r4, r8, #0xc000 + strh r4, [r6, #6] + ldrh r8, [r6, #6] + ldr r4, _022DD50C ; =0xFFFF000F + mov r3, r3, lsl #0x14 + orr r8, r8, #0x4000 + strh r8, [r6, #6] + ldrh r8, [r6, #6] + and r0, r8, r0 + strh r0, [r6, #6] + ldrh r0, [r6, #6] + orr r0, r0, r5 + strh r0, [r6, #6] + ldrh r0, [r6, #0xa] + and r0, r0, r4 + strh r0, [r6, #0xa] + ldrh r0, [r6, #0xa] + orr r0, r0, r3, lsr #16 + strh r0, [r6, #0xa] + b _022DD468 +_022DD388: + ldrh r8, [r6, #4] + ldr r4, _022DD508 ; =0x000001FF + sub r0, lr, #0x20c + bic r8, r8, #0xc000 + strh r8, [r6, #4] + ldrh r8, [r6, #4] + and r5, r5, r4 + ldr r4, _022DD50C ; =0xFFFF000F + orr r8, r8, #0x4000 + strh r8, [r6, #4] + ldrh r8, [r6, #6] + mov r3, r3, lsl #0x14 + bic r8, r8, #0xc000 + strh r8, [r6, #6] + ldrh r8, [r6, #6] + orr r8, r8, #0x8000 + strh r8, [r6, #6] + ldrh r8, [r6, #6] + and r0, r8, r0 + strh r0, [r6, #6] + ldrh r0, [r6, #6] + orr r0, r0, r5 + strh r0, [r6, #6] + ldrh r0, [r6, #0xa] + and r0, r0, r4 + strh r0, [r6, #0xa] + ldrh r0, [r6, #0xa] + orr r0, r0, r3, lsr #16 + strh r0, [r6, #0xa] + b _022DD468 +_022DD400: + ldrh r8, [r6, #4] + ldr r3, _022DD508 ; =0x000001FF + sub r0, lr, #0x20c + bic r8, r8, #0xc000 + strh r8, [r6, #4] + ldrh r8, [r6, #6] + and r5, r5, r3 + ldr r3, _022DD50C ; =0xFFFF000F + bic r8, r8, #0xc000 + strh r8, [r6, #6] + ldrh r8, [r6, #6] + mov r4, r4, lsl #0x14 + orr r8, r8, #0x8000 + strh r8, [r6, #6] + ldrh r8, [r6, #6] + and r0, r8, r0 + strh r0, [r6, #6] + ldrh r0, [r6, #6] + orr r0, r0, r5 + strh r0, [r6, #6] + ldrh r0, [r6, #0xa] + and r0, r0, r3 + strh r0, [r6, #0xa] + ldrh r0, [r6, #0xa] + orr r0, r0, r4, lsr #16 + strh r0, [r6, #0xa] +_022DD468: + ldr r3, _022DD504 ; =ov29_02353518 + mov r0, #0x400 + ldrh r5, [r3, #8] + rsb r0, r0, #0 + ldr r4, [sp, #4] + and r5, r5, r0 + strh r5, [r3, #8] + ldrh r6, [r3, #8] + and r5, r7, r0, lsr #22 + mov r0, r4, lsl #0x1c + orr r4, r6, r5 + strh r4, [r3, #8] + ldrh r4, [r3, #8] + cmp r1, #0x20 + bic r1, r4, #0xf000 + strh r1, [r3, #8] + ldrh r1, [r3, #8] + orr r0, r1, r0, lsr #16 + strh r0, [r3, #8] + ldrh r0, [r3, #6] + ldr r1, _022DD510 ; =ov29_0235351C + biceq r0, r0, #0x3e00 + streqh r0, [r3, #6] + ldreqh r0, [r3, #6] + orreq r0, r0, #0x2000 + bicne r0, r0, #0x3e00 + strh r0, [r3, #6] + ldrsh r3, [r2, #2] + ldrsh r0, [ip, #2] + ldr r2, _022DD514 ; =_020AFC4C + sub r0, r3, r0 + add r0, r0, r0, lsr #31 + mov r3, r0, asr #1 + ldr r0, [r2] + add r2, r3, #1 + bl sub_0201B9F8 +_022DD4F8: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022DD500: .word ov29_02350F8C +_022DD504: .word ov29_02353518 +_022DD508: .word 0x000001FF +_022DD50C: .word 0xFFFF000F +_022DD510: .word ov29_0235351C +_022DD514: .word _020AFC4C + arm_func_end ov29_022DD0A4 + + arm_func_start ov29_022DD518 +ov29_022DD518: ; 0x022DD518 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + ldr r2, _022DD5AC ; =ov29_02353518 + mov r1, #0xc + ldr r3, [r2] + mul r2, r0, r1 + ldr r5, [r3, #0x6f4] + ldr r1, [r3] + ldr r3, [r5, #4] + mov r0, r1, asr #1 + add r4, r3, r2 + add r0, r1, r0, lsr #30 + ldrb r3, [r3, r2] + ldrb r2, [r4, #1] + ldrsh r1, [r4, #8] + mov r0, r0, asr #2 + smulbb r2, r3, r2 + mov r6, r2, lsl #5 + bl _s32_div_f + mov r0, #1 + str r0, [sp] + mov r0, #0xe + str r0, [sp, #4] + ldr r3, [r4, #4] + ldrsh r2, [r4, #0xa] + ldr r0, _022DD5B0 ; =_020AFC4C + mla r4, r6, r1, r3 + add r1, r2, #0x190 + ldr r5, [r5, #0xc] + mov r2, r1, lsl #0x10 + ldr r0, [r0] + mov r3, r6 + add r1, r5, r4 + mov r2, r2, asr #0x10 + bl sub_0201BAC8 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022DD5AC: .word ov29_02353518 +_022DD5B0: .word _020AFC4C + arm_func_end ov29_022DD518 + + arm_func_start ov29_022DD5B4 +ov29_022DD5B4: ; 0x022DD5B4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x18 + ldr r2, _022DD758 ; =ov29_02353518 + ldr r0, [r2] + cmp r0, #0 + bne _022DD60C + ldr r0, _022DD75C ; =ov29_0236CEF0 + ldr r1, _022DD760 ; =0x000006FC + str r0, [r2] + bl MemZero + ldr r0, _022DD764 ; =ov29_0236D5EC + mov r1, #0x6000 + bl MemZero + ldr r0, _022DD764 ; =ov29_0236D5EC + ldr r1, _022DD768 ; =ov29_0235109C + bl sub_02008BF4 + ldr r0, _022DD758 ; =ov29_02353518 + ldr r1, _022DD764 ; =ov29_0236D5EC + ldr r0, [r0] + add r0, r0, #0x2f4 + add r0, r0, #0x400 + bl HandleSir0Translation +_022DD60C: + ldr r0, _022DD758 ; =ov29_02353518 + mov r2, #1 + ldr r1, [r0] + mov sb, #0 + strb r2, [r1, #0x6e8] + ldr r1, [r0] + ldr r4, _022DD76C ; =_020AFC4C + str sb, [r1] + ldr r0, [r0] + mov r8, #0xe0 + ldr sl, [r0, #0x6f4] + mov r7, #0xff + add r6, sp, #8 + mov r5, r2 + mov fp, #0x10 +_022DD648: + str r8, [sp] + str r7, [sp, #4] + ldr r1, [sl, #0x14] + mov r0, r6 + mov r2, r5 + mov r3, fp + add r1, r1, sb, lsl #6 + bl sub_0201F598 + mov r2, sb, lsl #0x10 + ldr r0, [r4] + mov r1, r6 + mov r2, r2, lsr #0x10 + bl sub_0201B43C + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov sb, r0, asr #0x10 + cmp sb, #0x10 + blt _022DD648 + mov r0, #1 + mov r1, #0 + bl ov29_022DD518 + mov r0, #2 + mov r1, #0 + bl ov29_022DD518 + mov r0, #3 + mov r1, #0 + bl ov29_022DD518 + mov r0, #4 + mov r1, #0 + bl ov29_022DD518 + mov r0, #5 + mov r1, #0 + bl ov29_022DD518 + mov r0, #6 + mov r1, #0 + bl ov29_022DD518 + mov r0, #7 + mov r1, #0 + bl ov29_022DD518 + mov r0, #8 + mov r1, #0 + bl ov29_022DD518 + mov r0, #9 + mov r1, #0 + bl ov29_022DD518 + mov r0, #0xa + mov r1, #0 + bl ov29_022DD518 + mov r0, #0xb + mov r1, #0 + bl ov29_022DD518 + mov r0, #0xc + mov r1, #0 + bl ov29_022DD518 + mov r0, #0xd + mov r1, #0 + bl ov29_022DD518 + mov r0, #0xe + mov r1, #0 + bl ov29_022DD518 + mov r0, #0xf + mov r1, #0 + bl ov29_022DD518 + mov r0, #0x10 + mov r1, #0 + bl ov29_022DD518 + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022DD758: .word ov29_02353518 +_022DD75C: .word ov29_0236CEF0 +_022DD760: .word 0x000006FC +_022DD764: .word ov29_0236D5EC +_022DD768: .word ov29_0235109C +_022DD76C: .word _020AFC4C + arm_func_end ov29_022DD5B4 + + arm_func_start ov29_022DD770 +ov29_022DD770: ; 0x022DD770 + stmdb sp!, {r3, lr} + ldr r0, _022DD7A8 ; =ov29_02353518 + mov r1, #8 + ldr r0, [r0] + add r0, r0, #0x2ec + add r0, r0, #0x400 + bl MemZero + ldr r0, _022DD7A8 ; =ov29_02353518 + mov r2, #0 + ldr r1, [r0] + str r2, [r1, #0x6f4] + ldr r0, [r0] + str r2, [r0, #0x6f8] + ldmia sp!, {r3, pc} + .align 2, 0 +_022DD7A8: .word ov29_02353518 + arm_func_end ov29_022DD770 + + arm_func_start ov29_022DD7AC +ov29_022DD7AC: ; 0x022DD7AC + stmdb sp!, {r3, lr} + ldr r0, _022DD7D4 ; =ov29_02353518 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl ov29_022DD770 + ldr r0, _022DD7D4 ; =ov29_02353518 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022DD7D4: .word ov29_02353518 + arm_func_end ov29_022DD7AC + + arm_func_start ov29_022DD7D8 +ov29_022DD7D8: ; 0x022DD7D8 + stmdb sp!, {r4, r5, r6, lr} + ldr ip, _022DD824 ; =ov29_02353518 + mov r6, r1 + ldr r1, [ip] + mov r5, r2 + mov r4, r3 + cmp r1, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl ov29_022DC78C + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + strh r6, [r0, #8] + str r5, [r0, #0xc] + ldrb r2, [sp, #0x10] + str r4, [r0, #0x10] + mov r1, #0 + strb r2, [r0, #0x14] + strb r1, [r0, #0x44] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022DD824: .word ov29_02353518 + arm_func_end ov29_022DD7D8 + + arm_func_start ov29_022DD828 +ov29_022DD828: ; 0x022DD828 + ldr r1, _022DD838 ; =ov29_02353518 + ldr r1, [r1] + strb r0, [r1, #0x6e8] + bx lr + .align 2, 0 +_022DD838: .word ov29_02353518 + arm_func_end ov29_022DD828 + + arm_func_start ov29_022DD83C +ov29_022DD83C: ; 0x022DD83C + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _022DD8B0 ; =ov29_02353518 + ldr r4, [sp, #0x14] + ldr r1, [r1] + mov r6, r2 + mov r5, r3 + cmp r1, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl ov29_022DC78C + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r1, r6, lsl #0x10 + mov r2, #1 + strb r2, [r0, #0x44] + mov r1, r1, asr #0x10 + strh r1, [r0, #0x4a] + strh r1, [r0, #0x4c] + ldr r1, [sp, #0x10] + strh r5, [r0, #0x46] + strh r1, [r0, #0x48] + ldrh r1, [r4] + strh r1, [r0, #0x22] + ldrh r1, [r4, #2] + strh r1, [r0, #0x24] + ldrh r1, [r4, #0xc] + strh r1, [r0, #0x26] + ldrh r1, [r4, #0xe] + strh r1, [r0, #0x28] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022DD8B0: .word ov29_02353518 + arm_func_end ov29_022DD83C + + arm_func_start ov29_022DD8B4 +ov29_022DD8B4: ; 0x022DD8B4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r1, _022DDA50 ; =ov29_02353518 + mov r4, r0 + ldr r0, [r1] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r0] + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #30 + add r0, r1, r0, ror #30 + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _022DD9C4 +_022DD8E8: ; jump table + b _022DD8F8 ; case 0 + b _022DD92C ; case 1 + b _022DD960 ; case 2 + b _022DD994 ; case 3 +_022DD8F8: + mov r0, #1 + mov r1, r0 + bl ov29_022DD518 + mov r0, #2 + mov r1, #1 + bl ov29_022DD518 + mov r0, #3 + mov r1, #1 + bl ov29_022DD518 + mov r0, #4 + mov r1, #1 + bl ov29_022DD518 + b _022DD9C4 +_022DD92C: + mov r0, #5 + mov r1, #1 + bl ov29_022DD518 + mov r0, #6 + mov r1, #1 + bl ov29_022DD518 + mov r0, #7 + mov r1, #1 + bl ov29_022DD518 + mov r0, #8 + mov r1, #1 + bl ov29_022DD518 + b _022DD9C4 +_022DD960: + mov r0, #9 + mov r1, #1 + bl ov29_022DD518 + mov r0, #0xa + mov r1, #1 + bl ov29_022DD518 + mov r0, #0xb + mov r1, #1 + bl ov29_022DD518 + mov r0, #0xc + mov r1, #1 + bl ov29_022DD518 + b _022DD9C4 +_022DD994: + mov r0, #0xd + mov r1, #1 + bl ov29_022DD518 + mov r0, #0xe + mov r1, #1 + bl ov29_022DD518 + mov r0, #0xf + mov r1, #1 + bl ov29_022DD518 + mov r0, #0x10 + mov r1, #1 + bl ov29_022DD518 +_022DD9C4: + mov sb, #0 + ldr r6, _022DDA50 ; =ov29_02353518 + mov r8, sb + mov fp, #1 + mov r7, sb + mov r5, #0x50 +_022DD9DC: + mul r1, sb, r5 + ldr r2, [r6] + add r0, r2, r1 + ldrb r0, [r0, #4] + cmp r0, #0 + beq _022DDA20 + add r0, r2, #4 + add sl, r0, r1 + mov r0, sl + mov r1, r8 + mov r2, r4 + bl ov29_022DC820 + mov r0, sl + mov r1, fp + mov r2, r4 + bl ov29_022DC820 + strb r7, [sl, #0x44] +_022DDA20: + add sb, sb, #1 + cmp sb, #0x16 + blt _022DD9DC + ldr r0, _022DDA50 ; =ov29_02353518 + mov r2, #0 + ldr r1, [r0] + str r2, [r1, #0x6e4] + ldr r1, [r0] + ldr r0, [r1] + add r0, r0, #1 + str r0, [r1] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022DDA50: .word ov29_02353518 + arm_func_end ov29_022DD8B4 + + arm_func_start ov29_022DDA54 +ov29_022DDA54: ; 0x022DDA54 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r4, _022DDB60 ; =ov29_02353518 + mov r7, r0 + ldr ip, [r4] + mov r6, r1 + mov r5, r2 + mov r4, r3 + cmp ip, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + bl ov29_022DC78C + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, _022DDB60 ; =ov29_02353518 + mov r3, #0 + ldr ip, [r0] + mov r0, #0x50 + b _022DDAB8 +_022DDA98: + mul r2, r3, r0 + add r1, ip, r2 + ldrb r1, [r1, #4] + cmp r1, #0 + addeq r0, ip, #4 + addeq r1, r0, r2 + beq _022DDAC4 + add r3, r3, #1 +_022DDAB8: + cmp r3, #0x16 + blt _022DDA98 + mov r1, #0 +_022DDAC4: + cmp r1, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, #1 + strb r0, [r1] + str r7, [r1, #4] + strh r6, [r1, #8] + mov r0, #0 + str r0, [r1, #0xc] + str r0, [r1, #0x10] + ldrh r3, [r5] + ldr r2, _022DDB64 ; =ov29_02350F88 + strh r3, [r1, #0x16] + ldrh r3, [r5, #2] + strh r3, [r1, #0x18] + strb r4, [r1, #0x15] + ldrh r3, [r2, #2] + ldrh r4, [r2] + strh r3, [sp, #2] + mov r3, r3 + strh r4, [r1, #0x1e] + strh r3, [r1, #0x20] + ldrh r2, [r1, #0x1e] + strh r4, [sp] + strh r2, [r1, #0x1a] + ldrh r2, [r1, #0x20] + strh r2, [r1, #0x1c] + strh r4, [r1, #0x26] + strh r3, [r1, #0x28] + ldrh r2, [r1, #0x26] + strh r2, [r1, #0x22] + ldrh r2, [r1, #0x28] + strh r2, [r1, #0x24] + str r0, [r1, #0x2c] + str r0, [r1, #0x30] + str r0, [r1, #0x34] + str r0, [r1, #0x38] + str r0, [r1, #0x3c] + str r0, [r1, #0x40] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022DDB60: .word ov29_02353518 +_022DDB64: .word ov29_02350F88 + arm_func_end ov29_022DDA54 + + arm_func_start ov29_022DDB68 +ov29_022DDB68: ; 0x022DDB68 + stmdb sp!, {r3, lr} + ldr r1, _022DDB94 ; =ov29_02353518 + ldr r1, [r1] + cmp r1, #0 + ldmeqia sp!, {r3, pc} + bl ov29_022DC78C + cmp r0, #0 + ldmeqia sp!, {r3, pc} + mov r1, #0x50 + bl MemZero + ldmia sp!, {r3, pc} + .align 2, 0 +_022DDB94: .word ov29_02353518 + arm_func_end ov29_022DDB68 + + arm_func_start ov29_022DDB98 +ov29_022DDB98: ; 0x022DDB98 + stmdb sp!, {r4, r5, r6, lr} + ldr r4, _022DDBFC ; =ov29_02353518 + mov r6, r1 + ldr r1, [r4] + mov r4, r2 + mov r5, r3 + cmp r1, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl ov29_022DC78C + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldrh r1, [r6] + strh r1, [r0, #0x16] + ldrh r1, [r6, #2] + strh r1, [r0, #0x18] + strb r5, [r0, #0x15] + ldrh r1, [r4] + strh r1, [r0, #0x1a] + ldrh r1, [r4, #2] + strh r1, [r0, #0x1c] + ldrh r1, [r4, #0xc] + strh r1, [r0, #0x1e] + ldrh r1, [r4, #0xe] + strh r1, [r0, #0x20] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022DDBFC: .word ov29_02353518 + arm_func_end ov29_022DDB98 + + arm_func_start ov29_022DDC00 +ov29_022DDC00: ; 0x022DDC00 + stmdb sp!, {r3, lr} + ldr r0, _022DDC8C ; =0x027E0068 + mov r1, #0x2000 + bl MemZero + ldr r1, _022DDC8C ; =0x027E0068 + ldr r0, _022DDC90 ; =ov29_023735EC + ldr r3, _022DDC94 ; =ov29_02373690 + ldr r2, _022DDC98 ; =ov29_023735FC + mov lr, #1 + str r1, [r0, #0x10] +_022DDC28: + sub r0, lr, #1 + add r0, r0, r0, lsl #1 + add r1, lr, #1 + add ip, r3, r0, lsl #12 + mov r0, r1, lsl #0x10 + str ip, [r2, lr, lsl #2] + mov lr, r0, asr #0x10 + cmp lr, #4 + blt _022DDC28 + mov r0, #0 + ldr r2, _022DDC9C ; =ov29_0237360C + mov r1, r0 +_022DDC58: + add r0, r0, #1 + mov r0, r0, lsl #0x10 + str r1, [r2] + mov r0, r0, asr #0x10 + str r1, [r2, #4] + cmp r0, #4 + add r2, r2, #0x20 + blt _022DDC58 + ldr r0, _022DDC90 ; =ov29_023735EC + str r1, [r0, #0xc] + str r1, [r0, #8] + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022DDC8C: .word 0x027E0068 +_022DDC90: .word ov29_023735EC +_022DDC94: .word ov29_02373690 +_022DDC98: .word ov29_023735FC +_022DDC9C: .word ov29_0237360C + arm_func_end ov29_022DDC00 + + arm_func_start ov29_022DDCA0 +ov29_022DDCA0: ; 0x022DDCA0 + bx lr + arm_func_end ov29_022DDCA0 + + arm_func_start ov29_022DDCA4 +ov29_022DDCA4: ; 0x022DDCA4 + stmdb sp!, {r4, r5, r6, lr} + ldr r4, _022DDD40 ; =ov29_023735FC + ldr r6, _022DDD44 ; =ov29_0237360C + ldr r5, [r4, r0, lsl #2] + add r4, r6, r0, lsl #5 + stmib r4, {r1, r5} + cmp r0, #0 + ldreq r5, _022DDD48 ; =0x00001FFC + ldr ip, _022DDD40 ; =ov29_023735FC + ldrne r5, _022DDD4C ; =0x00002FFC + mov lr, #0xff + str r5, [r4, #0x14] + ldr r5, [ip, r0, lsl #2] + cmp r2, #0 + strb lr, [r5] + ldr r6, [ip, r0, lsl #2] + ldr r5, [r4, #0x14] + add r5, r6, r5 + strb lr, [r5, #3] + ldr r6, [ip, r0, lsl #2] + ldr r5, [r4, #0x14] + add r5, r6, r5 + strb lr, [r5, #2] + ldr ip, [ip, r0, lsl #2] + ldr r0, [r4, #0x14] + add r0, ip, r0 + strb lr, [r0, #1] + ldr ip, [r4, #8] + ldr r0, [r4, #0x14] + add r0, ip, r0 + str r0, [r4, #0xc] + str r1, [r4, #0x10] + str r2, [r4, #0x18] + str r3, [r4, #0x1c] + beq _022DDD34 + blx r2 +_022DDD34: + mov r0, #1 + str r0, [r4] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022DDD40: .word ov29_023735FC +_022DDD44: .word ov29_0237360C +_022DDD48: .word 0x00001FFC +_022DDD4C: .word 0x00002FFC + arm_func_end ov29_022DDCA4 + + arm_func_start ov29_022DDD50 +ov29_022DDD50: ; 0x022DDD50 + stmdb sp!, {r3, lr} + mov r3, r2 + movs lr, r0 + mov ip, r1 + ldmeqia sp!, {r3, pc} + ldr r0, _022DDDA0 ; =ov29_0237360C + mvn r1, #0 + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + rsb r0, r0, #0 + cmp r0, r1 + ldmeqia sp!, {r3, pc} + mov r1, lr + mov r2, ip + bl ov29_022DDCA4 + ldmia sp!, {r3, pc} + .align 2, 0 +_022DDDA0: .word ov29_0237360C + arm_func_end ov29_022DDD50 + + arm_func_start ov29_022DDDA4 +ov29_022DDDA4: ; 0x022DDDA4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + movs r4, r0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r7, #0 + ldr r6, _022DDDFC ; =ov29_0237360C + mov r5, r7 +_022DDDBC: + ldr r0, [r6, #4] + cmp r0, r4 + bne _022DDDE0 + ldr r0, [r6, #0x1c] + cmp r0, #0 + beq _022DDDD8 + blx r0 +_022DDDD8: + str r5, [r6] + str r5, [r6, #4] +_022DDDE0: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 + cmp r7, #4 + add r6, r6, #0x20 + blt _022DDDBC + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022DDDFC: .word ov29_0237360C + arm_func_end ov29_022DDDA4 + + arm_func_start ov29_022DDE00 +ov29_022DDE00: ; 0x022DDE00 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, #0 + b _022DDE18 +_022DDE10: + bl ov29_022DDEF8 + add r4, r4, #1 +_022DDE18: + cmp r4, r5 + blt _022DDE10 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_022DDE00 + + arm_func_start ov29_022DDE24 +ov29_022DDE24: ; 0x022DDE24 + ldr ip, _022DDE2C ; =ov29_022DDE30 + bx ip + .align 2, 0 +_022DDE2C: .word ov29_022DDE30 + arm_func_end ov29_022DDE24 + + arm_func_start ov29_022DDE30 +ov29_022DDE30: ; 0x022DDE30 + stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, lr} + ldr r0, _022DDEDC ; =ov29_023735F8 + mov r1, sp + str r1, [r0] + ldr r1, _022DDEE0 ; =ov29_023735EC + mov r2, #0 + str r2, [r1] + ldr r3, _022DDEE4 ; =ov29_023510B8 + ldr r4, [r3] + ldr r3, _022DDEE8 ; =ov29_0237360C +_022DDE58: + ldrh r5, [r3] + cmp r5, #1 + beq _022DDE7C + cmp r5, #2 + beq _022DDE7C + add r2, r2, #1 + add r3, r3, #0x20 + cmp r2, r4 + blt _022DDE58 +_022DDE7C: + str r2, [r1] + cmp r2, r4 + bge _022DDED8 + ldr r4, _022DDEEC ; =ov29_0237368C + str r2, [r4] + ldr r6, _022DDEF0 ; =ov29_023735F4 + ldr r7, [r3, #0xc] + str r7, [r6] + ldr r6, _022DDEF4 ; =ov29_023735F0 + ldr r7, [r3, #0x10] + str r7, [r6] + cmp r5, #2 + bne _022DDEC0 + ldr r6, _022DDEF0 ; =ov29_023735F4 + ldr sp, [r6] + ldmia sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, pc} +_022DDEBC: + b _022DDED8 +_022DDEC0: + ldr r6, _022DDEF0 ; =ov29_023735F4 + ldr sp, [r6] + ldr r7, _022DDEF4 ; =ov29_023735F0 + ldr r2, [r7] + bx r2 +_022DDED4: + b _022DDED8 +_022DDED8: + ldmia sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, pc} + .align 2, 0 +_022DDEDC: .word ov29_023735F8 +_022DDEE0: .word ov29_023735EC +_022DDEE4: .word ov29_023510B8 +_022DDEE8: .word ov29_0237360C +_022DDEEC: .word ov29_0237368C +_022DDEF0: .word ov29_023735F4 +_022DDEF4: .word ov29_023735F0 + arm_func_end ov29_022DDE30 + + arm_func_start ov29_022DDEF8 +ov29_022DDEF8: ; 0x022DDEF8 + stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, lr} + ldr r0, _022DDFD8 ; =ov29_023735F4 + str sp, [r0] + mov r1, #0x20 + ldr r3, _022DDFDC ; =ov29_023735EC + ldr r2, [r3] + mul r1, r1, r2 + ldr r3, _022DDFE0 ; =ov29_0237360C + add r4, r3, r1 + ldrh r5, [r4] + cmp r5, #1 + bne _022DDF30 + mov r5, #2 + str r5, [r4] +_022DDF30: + ldr r5, [r0] + str r5, [r4, #0xc] + ldr r5, _022DDFE4 ; =ov29_023735F0 + ldr r5, [r5] + str r5, [r4, #0x10] + mov r3, r4 + ldr r1, _022DDFE8 ; =ov29_023510B8 + ldr r4, [r1] +_022DDF50: + add r2, r2, #1 + add r3, r3, #0x20 + cmp r2, r4 + bge _022DDF78 + ldrh r5, [r3] + cmp r5, #1 + beq _022DDF78 + cmp r5, #2 + beq _022DDF78 + b _022DDF50 +_022DDF78: + ldr r6, _022DDFDC ; =ov29_023735EC + str r2, [r6] + cmp r2, r4 + bge _022DDFCC + ldr r6, _022DDFD8 ; =ov29_023735F4 + ldr r7, [r3, #0xc] + str r7, [r6] + ldr r6, _022DDFE4 ; =ov29_023735F0 + ldr r7, [r3, #0x10] + str r7, [r6] + cmp r5, #2 + bne _022DDFB8 + ldr r6, _022DDFD8 ; =ov29_023735F4 + ldr sp, [r6] + ldmia sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, pc} +_022DDFB4: + b _022DDFCC +_022DDFB8: + ldr r6, _022DDFD8 ; =ov29_023735F4 + ldr sp, [r6] + ldr r7, _022DDFE4 ; =ov29_023735F0 + ldr r2, [r7] + bx r2 +_022DDFCC: + ldr r0, _022DDFEC ; =ov29_023735F8 + ldr sp, [r0] + ldmia sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, pc} + .align 2, 0 +_022DDFD8: .word ov29_023735F4 +_022DDFDC: .word ov29_023735EC +_022DDFE0: .word ov29_0237360C +_022DDFE4: .word ov29_023735F0 +_022DDFE8: .word ov29_023510B8 +_022DDFEC: .word ov29_023735F8 + arm_func_end ov29_022DDEF8 + + arm_func_start ov29_022DDFF0 +ov29_022DDFF0: ; 0x022DDFF0 + ldr ip, _022DDFF8 ; =sub_020519D0 + bx ip + .align 2, 0 +_022DDFF8: .word sub_020519D0 + arm_func_end ov29_022DDFF0 + + arm_func_start ov29_022DDFFC +ov29_022DDFFC: ; 0x022DDFFC + stmdb sp!, {r3, lr} + mov r0, #0x44 + mov r1, #0 + bl MemAlloc + ldr r2, _022DE064 ; =ov29_0235352C + mov r1, #0x44 + str r0, [r2] + bl MemZero + ldr r0, _022DE064 ; =ov29_0235352C + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x20 + bl ov29_022DE22C + ldr r0, _022DE064 ; =ov29_0235352C + mov r1, #1 + ldr r0, [r0] + add r0, r0, #0x2c + bl ov29_022DE22C + mov r0, #0 + bl sub_02051ED4 + mov r1, r0 + ldr r0, _022DE064 ; =ov29_0235352C + mov r2, #0x20 + ldr r0, [r0] + bl sub_02063628 + ldmia sp!, {r3, pc} + .align 2, 0 +_022DE064: .word ov29_0235352C + arm_func_end ov29_022DDFFC + + arm_func_start ov29_022DE068 +ov29_022DE068: ; 0x022DE068 + stmdb sp!, {r3, lr} + ldr r0, _022DE09C ; =ov29_0235352C + ldr r0, [r0] + add r0, r0, #0x20 + bl ov29_022DE274 + ldr r0, _022DE09C ; =ov29_0235352C + ldr r0, [r0] + add r0, r0, #0x2c + bl ov29_022DE274 + ldr r0, _022DE09C ; =ov29_0235352C + ldr r0, [r0] + bl sub_0206367C + ldmia sp!, {r3, pc} + .align 2, 0 +_022DE09C: .word ov29_0235352C + arm_func_end ov29_022DE068 + + arm_func_start ov29_022DE0A0 +ov29_022DE0A0: ; 0x022DE0A0 + stmdb sp!, {r3, lr} + bl ov29_022DE068 + bl sub_02051B44 + ldr r0, _022DE0C8 ; =ov29_0235352C + ldr r0, [r0] + bl MemFree + ldr r0, _022DE0C8 ; =ov29_0235352C + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022DE0C8: .word ov29_0235352C + arm_func_end ov29_022DE0A0 + + arm_func_start ov29_022DE0CC +ov29_022DE0CC: ; 0x022DE0CC + stmdb sp!, {r3, lr} + ldr r0, _022DE0E8 ; =ov29_0235352C + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl sub_02051C24 + ldmia sp!, {r3, pc} + .align 2, 0 +_022DE0E8: .word ov29_0235352C + arm_func_end ov29_022DE0CC + + arm_func_start ov29_022DE0EC +ov29_022DE0EC: ; 0x022DE0EC + stmdb sp!, {r4, lr} + ldr r2, _022DE118 ; =ov29_0235352C + mov r4, r0 + ldr r0, [r2] + mov r2, r1 + mov r1, r4 + bl sub_02063734 + ldr r0, _022DE118 ; =ov29_0235352C + ldr r0, [r0] + str r4, [r0, #0x18] + ldmia sp!, {r4, pc} + .align 2, 0 +_022DE118: .word ov29_0235352C + arm_func_end ov29_022DE0EC + + arm_func_start ov29_022DE11C +ov29_022DE11C: ; 0x022DE11C + ldr r0, _022DE12C ; =ov29_0235352C + ldr ip, _022DE130 ; =sub_02063770 + ldr r0, [r0] + bx ip + .align 2, 0 +_022DE12C: .word ov29_0235352C +_022DE130: .word sub_02063770 + arm_func_end ov29_022DE11C + + arm_func_start ov29_022DE134 +ov29_022DE134: ; 0x022DE134 + stmdb sp!, {r3, lr} + ldr ip, _022DE158 ; =ov29_0235352C + str r3, [sp] + mov r2, r0 + mov r3, r1 + ldr r0, [ip] + mov r1, #0 + bl sub_02063830 + ldmia sp!, {r3, pc} + .align 2, 0 +_022DE158: .word ov29_0235352C + arm_func_end ov29_022DE134 + + arm_func_start ov29_022DE15C +ov29_022DE15C: ; 0x022DE15C + stmdb sp!, {r3, lr} + mov r0, #0 + mov r1, r0 + bl sub_02051DD0 + mov r0, #1 + mov r1, #0 + bl sub_02051DD0 + mov r0, #0 + mov r1, #1 + bl sub_02051DD0 + mov r0, #1 + mov r1, r0 + bl sub_02051DD0 + mov r0, #0 + mov r1, r0 + bl sub_02051E60 + mov r0, #1 + mov r1, #0 + bl sub_02051E60 + mov r0, #0 + mov r1, #1 + bl sub_02051E60 + mov r0, #1 + mov r1, r0 + bl sub_02051E60 + mov r0, #0 + bl ov29_022DE1E4 + mov r0, #1 + bl ov29_022DE1E4 + mov r0, #0 + bl ov29_022DE208 + mov r0, #1 + bl ov29_022DE208 + ldmia sp!, {r3, pc} + arm_func_end ov29_022DE15C + + arm_func_start ov29_022DE1E4 +ov29_022DE1E4: ; 0x022DE1E4 + ldr r2, _022DE200 ; =ov29_0235352C + mov r1, #0xc + ldr r2, [r2] + ldr ip, _022DE204 ; =sub_0200B3D4 + mla r1, r0, r1, r2 + ldr r0, [r1, #0x24] + bx ip + .align 2, 0 +_022DE200: .word ov29_0235352C +_022DE204: .word sub_0200B3D4 + arm_func_end ov29_022DE1E4 + + arm_func_start ov29_022DE208 +ov29_022DE208: ; 0x022DE208 + ldr r2, _022DE224 ; =ov29_0235352C + mov r1, #0xc + ldr r2, [r2] + ldr ip, _022DE228 ; =sub_0200B330 + mla r1, r0, r1, r2 + ldr r0, [r1, #0x24] + bx ip + .align 2, 0 +_022DE224: .word ov29_0235352C +_022DE228: .word sub_0200B330 + arm_func_end ov29_022DE208 + + arm_func_start ov29_022DE22C +ov29_022DE22C: ; 0x022DE22C + stmdb sp!, {r3, lr} + mov r3, r0 + cmp r1, #0 + bne _022DE254 + ldr r2, _022DE26C ; =0x06005000 + add r0, r3, #4 + add r1, r3, #8 + str r2, [r3] + bl sub_020275C0 + ldmia sp!, {r3, pc} +_022DE254: + ldr r2, _022DE270 ; =0x06205000 + add r0, r3, #4 + add r1, r3, #8 + str r2, [r3] + bl sub_020275DC + ldmia sp!, {r3, pc} + .align 2, 0 +_022DE26C: .word 0x06005000 +_022DE270: .word 0x06205000 + arm_func_end ov29_022DE22C + + arm_func_start ov29_022DE274 +ov29_022DE274: ; 0x022DE274 + mov r1, #0 + str r1, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + bx lr + arm_func_end ov29_022DE274 + + arm_func_start ov29_022DE288 +ov29_022DE288: ; 0x022DE288 + ldr r0, [r0] + bx lr + arm_func_end ov29_022DE288 + + arm_func_start ov29_022DE290 +ov29_022DE290: ; 0x022DE290 + strh r1, [r0, #0xa] + mov r2, #0 + strb r2, [r0, #0xc] + strb r2, [r0, #0xd] + strb r2, [r0, #0xe] + ldr r1, _022DE2C4 ; =DUNGEON_PTR + strb r2, [r0, #0xf] + ldr r2, [r1] + mov r1, #1 + add r2, r2, #0x1e0 + str r2, [r0, #0x10] + strb r1, [r0, #8] + bx lr + .align 2, 0 +_022DE2C4: .word DUNGEON_PTR + arm_func_end ov29_022DE290 + + arm_func_start ov29_022DE2C8 +ov29_022DE2C8: ; 0x022DE2C8 + str r2, [r0, #0x14] + strh r1, [r0, #0xa] + mov r2, #0 + strb r2, [r0, #0xc] + strb r2, [r0, #0xd] + strb r2, [r0, #0xe] + ldr r1, _022DE2FC ; =DUNGEON_PTR + strb r2, [r0, #0xf] + ldr r1, [r1] + add r1, r1, #0x1e0 + str r1, [r0, #0x10] + strb r2, [r0, #8] + bx lr + .align 2, 0 +_022DE2FC: .word DUNGEON_PTR + arm_func_end ov29_022DE2C8 + + arm_func_start ov29_022DE300 +ov29_022DE300: ; 0x022DE300 + stmdb sp!, {r3, lr} + mov r0, #0x74 + mov r1, #0 + bl MemAlloc + ldr r2, _022DE410 ; =ov29_02353530 + mov r1, #0x74 + str r0, [r2] + bl MemZero + ldr r0, _022DE410 ; =ov29_02353530 + mov r2, #0x100 + ldr r1, [r0] + strh r2, [r1, #4] + ldr r1, [r0] + strh r2, [r1, #2] + ldr r2, [r0] + ldrsh r1, [r2, #2] + strh r1, [r2, #6] + ldr r2, [r0] + ldrsh r1, [r2, #4] + strh r1, [r2, #8] + ldr r0, [r0] + add r0, r0, #0xc + bl sub_0200A2CC + ldr r1, _022DE410 ; =ov29_02353530 + mov r0, #0 + ldr r1, [r1] + strb r0, [r1, #0x4c] + strb r0, [r1, #0x4d] + strb r0, [r1, #0x4e] + strb r0, [r1, #0x4f] + bl sub_02051ED4 + ldr r2, [r0, #0x14] + ldr r1, _022DE410 ; =ov29_02353530 + mov r0, #0 + ldr r1, [r1] + str r2, [r1, #0x34] + bl sub_0201BCCC + ldr r2, [r0, #0x14] + ldr r1, _022DE410 ; =ov29_02353530 + mov r0, #0 + ldr r1, [r1] + str r2, [r1, #0x38] + bl sub_0201BCF4 + ldr r3, [r0, #0x14] + ldr r1, _022DE410 ; =ov29_02353530 + mov r0, #1 + ldr r2, [r1] + mov r1, #0 + str r3, [r2, #0x3c] + bl sub_0201BD1C + mov r0, #4 + ldr r1, _022DE414 ; =0x0000040A + ldr r2, _022DE410 ; =ov29_02353530 + mov r3, #0 + ldr r2, [r2] + add r2, r2, #0x40 + bl DirectoryFileMngr_OpenDirectoryFile + ldr r0, _022DE410 ; =ov29_02353530 + ldr r1, [r0] + add r0, r1, #0x48 + ldr r1, [r1, #0x40] + bl HandleSir0Translation + ldr r0, _022DE410 ; =ov29_02353530 + mov r1, #0x20 + ldr r0, [r0] + add r0, r0, #0x51 + bl MemZero + ldmia sp!, {r3, pc} + .align 2, 0 +_022DE410: .word ov29_02353530 +#ifdef JAPAN +_022DE414: .word 0x000003FE +#else +_022DE414: .word 0x0000040A +#endif + arm_func_end ov29_022DE300 + + arm_func_start ov29_022DE418 +ov29_022DE418: ; 0x022DE418 + stmdb sp!, {r3, lr} + ldr r0, _022DE478 ; =ov29_02353530 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + mov r0, #0 + bl sub_02051ED4 + ldr r1, _022DE478 ; =ov29_02353530 + ldr r1, [r1] + ldr r1, [r1, #0x34] + str r1, [r0, #0x14] + mov r0, #0 + bl sub_0201BCCC + ldr r1, _022DE478 ; =ov29_02353530 + ldr r1, [r1] + ldr r1, [r1, #0x38] + str r1, [r0, #0x14] + mov r0, #0 + bl sub_0201BCF4 + ldr r1, _022DE478 ; =ov29_02353530 + ldr r1, [r1] + ldr r1, [r1, #0x3c] + str r1, [r0, #0x14] + ldmia sp!, {r3, pc} + .align 2, 0 +_022DE478: .word ov29_02353530 + arm_func_end ov29_022DE418 + + arm_func_start ov29_022DE47C +ov29_022DE47C: ; 0x022DE47C + ldr r2, _022DE494 ; =ov29_02353530 + ldr r2, [r2] + cmp r2, #0 + addne r0, r2, r0 + strneb r1, [r0, #0x51] + bx lr + .align 2, 0 +_022DE494: .word ov29_02353530 + arm_func_end ov29_022DE47C + + arm_func_start ov29_022DE498 +ov29_022DE498: ; 0x022DE498 + stmdb sp!, {r3, lr} + ldr r0, _022DE4F8 ; =ov29_02353530 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl ov29_022DE418 + ldr r0, _022DE4F8 ; =ov29_02353530 + ldr r0, [r0] + add r0, r0, #0x40 + bl UnloadFile + mov r0, #0 + mov r1, r0 + bl sub_0201BD1C + ldr r0, _022DE4F8 ; =ov29_02353530 + ldr r0, [r0] + add r0, r0, #0xc + bl sub_0200A2F4 + ldr r0, _022DE4F8 ; =ov29_02353530 + ldr r0, [r0] + bl MemFree + ldr r0, _022DE4F8 ; =ov29_02353530 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022DE4F8: .word ov29_02353530 + arm_func_end ov29_022DE498 + + arm_func_start ov29_022DE4FC +ov29_022DE4FC: ; 0x022DE4FC + stmdb sp!, {r4, lr} + ldr r1, _022DE55C ; =ov29_02353530 + mov r0, #0 + ldr r1, [r1] + ldrh r4, [r1, #4] + bl sub_02051ED4 + ldr r2, _022DE560 ; =sub_01FF9BA0 + mov r1, r4 + bl ov29_022DE2C8 + mov r0, #0 + bl sub_0201BCCC + ldr r1, _022DE55C ; =ov29_02353530 + ldr r2, _022DE564 ; =sub_01FF9E14 + ldr r1, [r1] + ldrh r1, [r1, #2] + bl ov29_022DE2C8 + mov r0, #0 + bl sub_0201BCF4 + ldr r1, _022DE55C ; =ov29_02353530 + ldr r2, _022DE568 ; =sub_01FF9F80 + ldr r1, [r1] + ldrh r1, [r1, #2] + bl ov29_022DE2C8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022DE55C: .word ov29_02353530 +_022DE560: .word sub_01FF9BA0 +_022DE564: .word sub_01FF9E14 +_022DE568: .word sub_01FF9F80 + arm_func_end ov29_022DE4FC + + arm_func_start ov29_022DE56C +ov29_022DE56C: ; 0x022DE56C + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + mov r4, r0 + cmp r6, #1 + bne _022DE598 + mov r0, #0 + bl sub_02051ED4 + mov r1, r4, lsl #0x10 + mov r1, r1, lsr #0x10 + bl ov29_022DE290 + b _022DE5C0 +_022DE598: + mov r0, r4, lsl #0x10 + mov r5, r0, lsr #0x10 + mov r0, #0 + bl sub_0201BCCC + mov r1, r5 + bl ov29_022DE290 + mov r0, #0 + bl sub_0201BCF4 + mov r1, r5 + bl ov29_022DE290 +_022DE5C0: + ldr r0, _022DE5D4 ; =ov29_02353530 + ldr r0, [r0] + add r0, r0, r6, lsl #1 + strh r4, [r0, #2] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022DE5D4: .word ov29_02353530 + arm_func_end ov29_022DE56C + + arm_func_start ov29_022DE5D8 +ov29_022DE5D8: ; 0x022DE5D8 + ldr r2, _022DE5EC ; =ov29_02353530 + ldr r2, [r2] + add r1, r2, r1, lsl #1 + strh r0, [r1, #2] + bx lr + .align 2, 0 +_022DE5EC: .word ov29_02353530 + arm_func_end ov29_022DE5D8 + + arm_func_start ov29_022DE5F0 +ov29_022DE5F0: ; 0x022DE5F0 + ldr r1, _022DE604 ; =ov29_02353530 + ldr r1, [r1] + add r0, r1, r0, lsl #1 + ldrsh r0, [r0, #2] + bx lr + .align 2, 0 +_022DE604: .word ov29_02353530 + arm_func_end ov29_022DE5F0 + + arm_func_start ov29_022DE608 +ov29_022DE608: ; 0x022DE608 + ldr r0, _022DE61C ; =ov29_02353530 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x50] + bx lr + .align 2, 0 +_022DE61C: .word ov29_02353530 + arm_func_end ov29_022DE608 + + arm_func_start GetWeatherColorTable +GetWeatherColorTable: ; 0x022DE620 + ldr r1, _022DE634 ; =ov29_02353530 + ldr r1, [r1] + ldr r1, [r1, #0x48] + add r0, r1, r0, lsl #10 + bx lr + .align 2, 0 +_022DE634: .word ov29_02353530 + arm_func_end GetWeatherColorTable + + arm_func_start ov29_022DE638 +ov29_022DE638: ; 0x022DE638 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r1, _022DE844 ; =DUNGEON_PTR + mov r5, r0 + ldr r0, [r1] + mov r4, #0 + add r0, r0, #0x4000 +#ifdef JAPAN + ldrsh r0, [r0, #0x30] +#else + ldrsh r0, [r0, #0xd4] +#endif + bl IsBackgroundTileset + cmp r0, #0 + mov r1, r4 + bne _022DE754 + ldr r0, _022DE848 ; =ov29_023510BC + mov r2, r5 + mov r3, r1 + str r1, [sp] + bl sub_02051EF0 + mov r0, r4 + bl sub_02051D68 + mov r3, #1 + mov r1, r4 + str r3, [sp] + ldr r0, _022DE848 ; =ov29_023510BC + mov r2, r5 + mov r3, r1 + bl sub_02051EF0 + mov r0, #1 + bl sub_02051D68 + bl GetDefaultTileTextureId + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r7, #0 + add sb, r0, #4 + add r4, r4, #1 + mov r8, #1 + mov r6, r7 +_022DE6C4: + mov r1, r4, lsl #0x10 + mov r0, sb + mov r2, r5 + mov r3, r7 + mov r1, r1, asr #0x10 + str r7, [sp] + bl sub_02051EF0 + mov r0, r6 + bl sub_02051D68 + add r8, r8, #1 + cmp r8, #0xd0 + add sb, sb, #4 + add r4, r4, #1 + blt _022DE6C4 + mov sb, #0 + ldr r8, _022DE84C ; =ov29_0237C6D4 + mov r7, #0xd0 + mov r6, sb + mov r4, sb +_022DE710: + mov r1, r7, lsl #0x10 + mov r0, r8 + mov r2, r5 + mov r3, r6 + mov r1, r1, asr #0x10 + str r6, [sp] + bl sub_02051EF0 + mov r0, r4 + bl sub_02051D68 + add r7, r7, #1 + cmp r7, #0xe0 + add sb, sb, #1 + addeq r7, r7, #0x10 + add r8, r8, #4 + cmp sb, #0x20 + blt _022DE710 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022DE754: + ldr r0, _022DE848 ; =ov29_023510BC + mov r2, r5 + mov r3, r1 + str r1, [sp] + bl sub_02051EF0 + mov r0, r4 + bl sub_02051D68 + mov r3, #1 + mov r1, r4 + str r3, [sp] + ldr r0, _022DE848 ; =ov29_023510BC + mov r2, r5 + mov r3, r1 + bl sub_02051EF0 + mov r0, #1 + bl sub_02051D68 + bl GetDefaultTileTextureId + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r7, #0 + add r8, r0, #4 + add r4, r4, #1 + mov sb, #1 + mov r6, r7 +_022DE7B4: + mov r1, r4, lsl #0x10 + mov r0, r8 + mov r2, r5 + mov r3, r7 + mov r1, r1, asr #0x10 + str r7, [sp] + bl sub_02051EF0 + mov r0, r6 + bl sub_02051D68 + add sb, sb, #1 + cmp sb, #0xe0 + add r8, r8, #4 + add r4, r4, #1 + blt _022DE7B4 + ldr r8, _022DE850 ; =ov29_0237C714 + mov r7, #0xf0 + cmp r8, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov sb, #0 + mov r6, sb + mov r4, sb +_022DE808: + mov r1, r7, lsl #0x10 + mov r0, r8 + mov r2, r5 + mov r3, r6 + mov r1, r1, asr #0x10 + str r6, [sp] + bl sub_02051EF0 + mov r0, r4 + bl sub_02051D68 + add sb, sb, #1 + cmp sb, #0x10 + add r8, r8, #4 + add r7, r7, #1 + blt _022DE808 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022DE844: .word DUNGEON_PTR +_022DE848: .word ov29_023510BC +_022DE84C: .word ov29_0237C6D4 +_022DE850: .word ov29_0237C714 + arm_func_end ov29_022DE638 + + arm_func_start ov29_022DE854 +ov29_022DE854: ; 0x022DE854 + stmdb sp!, {r3, lr} + mov r0, #0 + bl sub_02051ED4 + bl sub_0200A544 + ldmia sp!, {r3, pc} + arm_func_end ov29_022DE854 + + arm_func_start ov29_022DE868 +ov29_022DE868: ; 0x022DE868 + stmdb sp!, {r3, lr} + ldr r0, _022DE900 ; =ov29_02353530 + ldr r2, [r0] + cmp r2, #0 + ldmeqia sp!, {r3, pc} + ldrb r0, [r2, #0x50] + cmp r0, #0 + ldreqsh r1, [r2, #4] + ldreqsh r0, [r2, #8] + cmpeq r1, r0 + beq _022DE8B0 + ldrsh r0, [r2, #4] + mov r1, #1 + bl ov29_022DE56C + ldr r0, _022DE900 ; =ov29_02353530 + ldr r1, [r0] + ldrsh r0, [r1, #4] + strh r0, [r1, #8] +_022DE8B0: + ldr r0, _022DE900 ; =ov29_02353530 + ldr r2, [r0] + ldrb r0, [r2, #0x50] + cmp r0, #0 + ldreqsh r1, [r2, #2] + ldreqsh r0, [r2, #6] + cmpeq r1, r0 + beq _022DE8EC + ldrsh r0, [r2, #2] + mov r1, #0 + bl ov29_022DE56C + ldr r0, _022DE900 ; =ov29_02353530 + ldr r1, [r0] + ldrsh r0, [r1, #2] + strh r0, [r1, #6] +_022DE8EC: + ldr r0, _022DE900 ; =ov29_02353530 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x50] + ldmia sp!, {r3, pc} + .align 2, 0 +_022DE900: .word ov29_02353530 + arm_func_end ov29_022DE868 + + arm_func_start ov29_022DE904 +ov29_022DE904: ; 0x022DE904 + stmdb sp!, {r3, lr} + mov r0, #0x20 + mov r1, #0 + bl MemAlloc + ldr r2, _022DE92C ; =ov29_02353534 + mov r1, #0x20 + str r0, [r2] + bl MemZero + bl ov29_022DEA34 + ldmia sp!, {r3, pc} + .align 2, 0 +_022DE92C: .word ov29_02353534 + arm_func_end ov29_022DE904 + + arm_func_start ov29_022DE930 +ov29_022DE930: ; 0x022DE930 + stmdb sp!, {r3, lr} + ldr r0, _022DE950 ; =ov29_02353534 + ldr r0, [r0] + bl MemFree + ldr r0, _022DE950 ; =ov29_02353534 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022DE950: .word ov29_02353534 + arm_func_end ov29_022DE930 + + arm_func_start ov29_022DE954 +ov29_022DE954: ; 0x022DE954 + cmp r0, #0x10 + movge r0, #1 + movlt r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end ov29_022DE954 + + arm_func_start ov29_022DE968 +ov29_022DE968: ; 0x022DE968 + cmp r0, #0 + beq _022DE984 + cmp r0, #1 + beq _022DE990 + cmp r0, #2 + beq _022DE99C + b _022DE9A8 +_022DE984: + mov r0, #0 + mov r3, #1 + b _022DE9B0 +_022DE990: + mov r0, #0x1b + mov r3, #4 + b _022DE9B0 +_022DE99C: + mov r0, #1 + mov r3, #0x14 + b _022DE9B0 +_022DE9A8: + mov r3, #0 + mov r0, r3 +_022DE9B0: + ldr r1, _022DE9F4 ; =ov29_02353534 + mov r2, #0 + ldr ip, [r1] + b _022DE9E4 +_022DE9C0: + ldrb r1, [ip, r0] + cmp r1, #0 + bxeq lr + add r2, r2, #1 + add r1, r0, #1 + mov r0, r2, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r2, r0, asr #0x10 + mov r0, r1, asr #0x10 +_022DE9E4: + cmp r2, r3 + blt _022DE9C0 + mvn r0, #0 + bx lr + .align 2, 0 +_022DE9F4: .word ov29_02353534 + arm_func_end ov29_022DE968 + + arm_func_start ov29_022DE9F8 +ov29_022DE9F8: ; 0x022DE9F8 + ldr r1, _022DEA0C ; =ov29_02353534 + mov r2, #1 + ldr r1, [r1] + strb r2, [r1, r0] + bx lr + .align 2, 0 +_022DEA0C: .word ov29_02353534 + arm_func_end ov29_022DE9F8 + + arm_func_start ov29_022DEA10 +ov29_022DEA10: ; 0x022DEA10 + ldr ip, _022DEA18 ; =ov29_022DE968 + bx ip + .align 2, 0 +_022DEA18: .word ov29_022DE968 + arm_func_end ov29_022DEA10 + + arm_func_start ov29_022DEA1C +ov29_022DEA1C: ; 0x022DEA1C + ldr r1, _022DEA30 ; =ov29_02353534 + mov r2, #0 + ldr r1, [r1] + strb r2, [r1, r0] + bx lr + .align 2, 0 +_022DEA30: .word ov29_02353534 + arm_func_end ov29_022DEA1C + + arm_func_start ov29_022DEA34 +ov29_022DEA34: ; 0x022DEA34 + mov r3, #0 + ldr r0, _022DEA58 ; =ov29_02353534 + mov r2, r3 +_022DEA40: + ldr r1, [r0] + strb r2, [r1, r3] + add r3, r3, #1 + cmp r3, #0x20 + blt _022DEA40 + bx lr + .align 2, 0 +_022DEA58: .word ov29_02353534 + arm_func_end ov29_022DEA34 diff --git a/include/overlay_29_022DC61C.h b/include/overlay_29_022DC61C.h new file mode 100644 index 00000000..20be6aba --- /dev/null +++ b/include/overlay_29_022DC61C.h @@ -0,0 +1,7 @@ +#ifndef PMDSKY_OVERLAY_29_022DC61C_H +#define PMDSKY_OVERLAY_29_022DC61C_H + +// mem init? +void ov29_022DC61C(); + +#endif //PMDSKY_OVERLAY_29_022DC61C_H diff --git a/main.lsf b/main.lsf index d2092f79..2b0488e6 100644 --- a/main.lsf +++ b/main.lsf @@ -261,6 +261,8 @@ Overlay OVY_29 Object asm/overlay_29_bss_02353860.o Object src/poly_text.o Object asm/overlay_29_022DC314.o + Object src/overlay_29_022DC61C.o + Object asm/overlay_29_022DC65C.o Object src/overlay_29_022DEAB0.o Object asm/overlay_29_022DEADC.o Object src/dg.o diff --git a/src/overlay_29_022DC61C.c b/src/overlay_29_022DC61C.c new file mode 100644 index 00000000..af830ddf --- /dev/null +++ b/src/overlay_29_022DC61C.c @@ -0,0 +1,17 @@ +#include "overlay_29_022DC61C.h" +#include "main_0200330C.h" + +extern u8 ov29_023538B4[0x0001963C]; +extern u8 *ov29_023534E0; + +extern void ov29_022DC544(s32); +extern void ov29_022DC240(u8*); +extern void ov29_022DC314(u8*, u8*); + +void ov29_022DC61C() +{ + MemZero(ov29_023538B4, sizeof(ov29_023538B4)); + ov29_022DC544(0); + ov29_022DC240(ov29_023538B4); + ov29_022DC314(ov29_023538B4, ov29_023534E0); +} diff --git a/src/overlay_29_0234BBE8.c b/src/overlay_29_0234BBE8.c index 1112ebeb..c6fce77f 100644 --- a/src/overlay_29_0234BBE8.c +++ b/src/overlay_29_0234BBE8.c @@ -1,4 +1,5 @@ #include "overlay_29_0234BBE8.h" +#include "overlay_29_022DC61C.h" #include "util.h" struct unk_ov29_023537DC { @@ -15,7 +16,6 @@ typedef struct { } unk_ov29_023537D8_t; extern unk_ov29_023537D8_t ov29_023537D8; -void ov29_022DC61C(); // mem init? void ov29_022DEBA4(); // thunk_FUN_022deadc void ov29_0234CB00(); s32 ov29_0234CA68(); From 8459169337de71bbaf7a58a179b1c4c5e5dbe9fb Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Sun, 15 Jun 2025 17:42:52 -0500 Subject: [PATCH 3/7] Decomped ov29_0234CA68 Decomped by ElectricGeorge --- asm/include/overlay_29_0234BEE0.inc | 64 --- asm/include/overlay_29_0234CA7C.inc | 69 +++ asm/overlay_29_0234BEE0.s | 783 ---------------------------- asm/overlay_29_0234CA7C.s | 777 +++++++++++++++++++++++++++ include/overlay_29_0234CA68.h | 6 + main.lsf | 2 + src/overlay_29_0234BBE8.c | 5 +- src/overlay_29_0234CA68.c | 8 + 8 files changed, 863 insertions(+), 851 deletions(-) create mode 100644 asm/include/overlay_29_0234CA7C.inc create mode 100644 asm/overlay_29_0234CA7C.s create mode 100644 include/overlay_29_0234CA68.h create mode 100644 src/overlay_29_0234CA68.c diff --git a/asm/include/overlay_29_0234BEE0.inc b/asm/include/overlay_29_0234BEE0.inc index 72bf3773..ccadb1da 100644 --- a/asm/include/overlay_29_0234BEE0.inc +++ b/asm/include/overlay_29_0234BEE0.inc @@ -2,37 +2,16 @@ .public AdvanceFrame .public DUNGEON_FADES_PTR .public DUNGEON_PTR -.public Debug_Print0 -.public DisplayMessageInternal .public DungeonAlloc .public DungeonFree .public DungeonZInit -.public FixedRoomIsSubstituteRoom .public G3X_Reset -.public GetDungeonTipShown -.public GetGameMode -.public GetItemCategoryVeneer -.public GetLeader -.public GetPerformanceFlagWithChecks -.public GetPlayerGender -.public GetRandomExplorerMazeMonster .public InitRender3dElement64 -.public IsFullFloorFixedRoom -.public IsFutureDungeon -.public IsMonster__0234D460 -.public IsSecretFloor -.public LoadOverlay -.public LoadScriptVariableValue -.public LogMessageByIdQuiet .public MemAlloc .public MemFree .public MemZero .public OverlayIsLoaded -.public SetBothScreensWindowsColor -.public SetDungeonTipShown -.public StringFromId .public UnloadOverlay -.public WriteQuicksaveData .public ov10_022BF764 .public ov10_022BF7D4 .public ov29_022DC670 @@ -55,56 +34,14 @@ .public ov29_022E6DD0 .public ov29_022E9F9C .public ov29_022EA008 -.public ov29_022EA428 -.public ov29_022EACBC .public ov29_022EAFB0 -.public ov29_0231ADA8 -.public ov29_02337EE8 -.public ov29_0233804C .public ov29_0233992C -.public ov29_0234B034 -.public ov29_0234BA54 .public ov29_0234BBDC .public ov29_0234BBE8 -.public ov29_0234D558 -.public ov29_0234D5D0 -.public ov29_02353238 -.public ov29_02353240 -.public ov29_02353248 -.public ov29_02353250 -.public ov29_02353258 -.public ov29_02353260 -.public ov29_02353268 -.public ov29_02353270 -.public ov29_02353278 -.public ov29_02353280 -.public ov29_02353288 -.public ov29_02353290 -.public ov29_02353298 -.public ov29_023532A0 -.public ov29_023532A8 -.public ov29_023532B0 -.public ov29_023532B8 -.public ov29_023532C0 -.public ov29_023532C8 -.public ov29_023532D8 -.public ov29_023532E0 -.public ov29_023532E8 -.public ov29_023532F0 -.public ov29_023532F8 -.public ov29_02353300 -.public ov29_02353308 -.public ov29_02353310 -.public ov29_02353368 -.public ov29_02353380 .public ov29_0235352C -.public ov29_02353563 .public ov29_023537D8 .public ov29_023537E4 -.public ov29_023537E8 -.public ov29_0237D000 .public ov30_02382A34 -.public ov30_023842F4 .public sub_0200383C .public sub_020038D8 .public sub_020038E8 @@ -138,7 +75,6 @@ .public sub_0201DE10 .public sub_0201F2A0 .public sub_0201F464 -.public sub_02025784 .public sub_02027148 .public sub_0202715C .public sub_02028848 diff --git a/asm/include/overlay_29_0234CA7C.inc b/asm/include/overlay_29_0234CA7C.inc new file mode 100644 index 00000000..e89f2777 --- /dev/null +++ b/asm/include/overlay_29_0234CA7C.inc @@ -0,0 +1,69 @@ +#pragma once +.public DUNGEON_PTR +.public Debug_Print0 +.public DisplayMessageInternal +.public FixedRoomIsSubstituteRoom +.public GetDungeonTipShown +.public GetGameMode +.public GetItemCategoryVeneer +.public GetLeader +.public GetPerformanceFlagWithChecks +.public GetPlayerGender +.public GetRandomExplorerMazeMonster +.public IsFullFloorFixedRoom +.public IsFutureDungeon +.public IsMonster__0234D460 +.public IsSecretFloor +.public LoadOverlay +.public LoadScriptVariableValue +.public LogMessageByIdQuiet +.public OverlayIsLoaded +.public SetBothScreensWindowsColor +.public SetDungeonTipShown +.public StringFromId +.public UnloadOverlay +.public WriteQuicksaveData +.public ov29_022EA428 +.public ov29_022EACBC +.public ov29_0231ADA8 +.public ov29_02337EE8 +.public ov29_0233804C +.public ov29_0234B034 +.public ov29_0234BA54 +.public ov29_0234D558 +.public ov29_0234D5D0 +.public ov29_02353238 +.public ov29_02353240 +.public ov29_02353248 +.public ov29_02353250 +.public ov29_02353258 +.public ov29_02353260 +.public ov29_02353268 +.public ov29_02353270 +.public ov29_02353278 +.public ov29_02353280 +.public ov29_02353288 +.public ov29_02353290 +.public ov29_02353298 +.public ov29_023532A0 +.public ov29_023532A8 +.public ov29_023532B0 +.public ov29_023532B8 +.public ov29_023532C0 +.public ov29_023532C8 +.public ov29_023532D8 +.public ov29_023532E0 +.public ov29_023532E8 +.public ov29_023532F0 +.public ov29_023532F8 +.public ov29_02353300 +.public ov29_02353308 +.public ov29_02353310 +.public ov29_02353368 +.public ov29_02353380 +.public ov29_02353563 +.public ov29_023537E4 +.public ov29_023537E8 +.public ov29_0237D000 +.public ov30_023842F4 +.public sub_02025784 diff --git a/asm/overlay_29_0234BEE0.s b/asm/overlay_29_0234BEE0.s index e372f085..f943b2ed 100644 --- a/asm/overlay_29_0234BEE0.s +++ b/asm/overlay_29_0234BEE0.s @@ -896,786 +896,3 @@ _0234CA48: .align 2, 0 _0234CA64: .word ov29_023537E4 arm_func_end ov29_0234CA2C - - arm_func_start ov29_0234CA68 -ov29_0234CA68: ; 0x0234CA68 - ldr r0, _0234CA78 ; =ov29_023537E4 - ldr r0, [r0] - ldr r0, [r0, #4] - bx lr - .align 2, 0 -_0234CA78: .word ov29_023537E4 - arm_func_end ov29_0234CA68 - - arm_func_start ov29_0234CA7C -ov29_0234CA7C: ; 0x0234CA7C - mov r0, #0x5800 - bx lr - arm_func_end ov29_0234CA7C - - arm_func_start ov29_0234CA84 -ov29_0234CA84: ; 0x0234CA84 - stmdb sp!, {r3, lr} - ldr r0, _0234CAC4 ; =ov29_023537E4 - mov r3, #1 - ldr r1, [r0] - ldr r2, _0234CAC8 ; =ov29_0237D000 - str r3, [r1] - ldr r1, [r0] - mov r0, #0x21 - str r2, [r1, #4] - bl LoadOverlay - ldr r0, _0234CAC4 ; =ov29_023537E4 - mov r1, #0x5800 - ldr r0, [r0] - ldr r0, [r0, #4] - bl WriteQuicksaveData - ldmia sp!, {r3, pc} - .align 2, 0 -_0234CAC4: .word ov29_023537E4 -_0234CAC8: .word ov29_0237D000 - arm_func_end ov29_0234CA84 - - arm_func_start ov29_0234CACC -ov29_0234CACC: ; 0x0234CACC - stmdb sp!, {r3, lr} - mov r0, #0x21 - bl OverlayIsLoaded - cmp r0, #0 - beq _0234CAE8 - mov r0, #0x21 - bl UnloadOverlay -_0234CAE8: - ldr r0, _0234CAFC ; =ov29_023537E4 - mov r1, #0 - ldr r0, [r0] - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0234CAFC: .word ov29_023537E4 - arm_func_end ov29_0234CACC - - arm_func_start ov29_0234CB00 -ov29_0234CB00: ; 0x0234CB00 - ldr r0, _0234CB28 ; =ov29_023537E4 - mov r3, #2 - ldr r1, [r0] - ldr r2, _0234CB2C ; =ov29_0237D000 - str r3, [r1] - ldr r1, [r0] - ldr ip, _0234CB30 ; =LoadOverlay - mov r0, #0x21 - str r2, [r1, #4] - bx ip - .align 2, 0 -_0234CB28: .word ov29_023537E4 -_0234CB2C: .word ov29_0237D000 -_0234CB30: .word LoadOverlay - arm_func_end ov29_0234CB00 - - arm_func_start ov29_0234CB34 -ov29_0234CB34: ; 0x0234CB34 - ldr r0, _0234CB4C ; =ov29_023537E4 - ldr ip, _0234CB50 ; =ov30_023842F4 - ldr r0, [r0] - mov r1, #0x5800 - ldr r0, [r0, #4] - bx ip - .align 2, 0 -_0234CB4C: .word ov29_023537E4 -_0234CB50: .word ov30_023842F4 - arm_func_end ov29_0234CB34 - - arm_func_start ov29_0234CB54 -ov29_0234CB54: ; 0x0234CB54 - stmdb sp!, {r3, lr} - mov r0, #0x21 - bl OverlayIsLoaded - cmp r0, #0 - beq _0234CB70 - mov r0, #0x21 - bl UnloadOverlay -_0234CB70: - ldr r0, _0234CB84 ; =ov29_023537E4 - mov r1, #0 - ldr r0, [r0] - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0234CB84: .word ov29_023537E4 - arm_func_end ov29_0234CB54 - - arm_func_start DisplayFloorTip -DisplayFloorTip: ; 0x0234CB88 - stmdb sp!, {r3, lr} - bl GetLeader - ldr r2, _0234CC88 ; =DUNGEON_PTR - mvn r3, #0 - ldr r1, [r2] - ldr r0, _0234CC8C ; =ov29_023532C0 - add r1, r1, #0x100 - strh r3, [r1, #0xd8] - ldr r2, [r2] - mov r1, #1 - add r2, r2, #0x100 - strh r3, [r2, #0xda] - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CC90 ; =ov29_023532B8 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CC94 ; =ov29_023532B0 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CC98 ; =ov29_02353240 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldreq r0, _0234CC88 ; =DUNGEON_PTR - ldreq r0, [r0] - ldreqb r0, [r0, #0x748] - cmpeq r0, #3 - ldmneia sp!, {r3, pc} - ldr r0, _0234CC9C ; =ov29_023532A0 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CCA0 ; =ov29_02353298 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CCA4 ; =ov29_02353290 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CCA8 ; =ov29_02353278 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CCAC ; =ov29_02353238 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CCB0 ; =ov29_023532E0 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0234CC88: .word DUNGEON_PTR -_0234CC8C: .word ov29_023532C0 -_0234CC90: .word ov29_023532B8 -_0234CC94: .word ov29_023532B0 -_0234CC98: .word ov29_02353240 -_0234CC9C: .word ov29_023532A0 -_0234CCA0: .word ov29_02353298 -_0234CCA4: .word ov29_02353290 -_0234CCA8: .word ov29_02353278 -_0234CCAC: .word ov29_02353238 -_0234CCB0: .word ov29_023532E0 - arm_func_end DisplayFloorTip - - arm_func_start DisplayItemTip -DisplayItemTip: ; 0x0234CCB4 - stmdb sp!, {r4, lr} - ldr r2, _0234CEA4 ; =DUNGEON_PTR - mvn r3, #0 - ldr r1, [r2] - mov r4, r0 - add r1, r1, #0x100 - strh r3, [r1, #0xd8] - ldr r1, [r2] - add r1, r1, #0x100 - strh r3, [r1, #0xda] - bl GetItemCategoryVeneer - cmp r0, #3 - bne _0234CCF8 - ldr r0, _0234CEA8 ; =ov29_023532F0 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CCF8: - cmp r4, #0x46 - bne _0234CD10 - ldr r0, _0234CEAC ; =ov29_023532F8 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CD10: - cmp r4, #0x52 - bne _0234CD28 - ldr r0, _0234CEB0 ; =ov29_023532D8 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CD28: - cmp r4, #0x57 - bne _0234CD40 - ldr r0, _0234CEB4 ; =ov29_023532C8 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CD40: - cmp r4, #8 - bne _0234CD58 - ldr r0, _0234CEB8 ; =ov29_02353250 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CD58: - cmp r4, #0x51 - bne _0234CD70 - ldr r0, _0234CEBC ; =ov29_02353248 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CD70: - cmp r4, #0x54 - bne _0234CD88 - ldr r0, _0234CEC0 ; =ov29_02353270 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CD88: - cmp r4, #0xb7 - bne _0234CDA0 - ldr r0, _0234CEC4 ; =ov29_02353280 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CDA0: - cmp r4, #0x63 - bne _0234CDB8 - ldr r0, _0234CEC8 ; =ov29_023532A8 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CDB8: - cmp r4, #0x45 - bne _0234CDD0 - ldr r0, _0234CECC ; =ov29_02353300 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CDD0: - cmp r4, #0x5b - bne _0234CDE8 - ldr r0, _0234CED0 ; =ov29_02353258 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CDE8: - cmp r4, #0x56 - bne _0234CE00 - ldr r0, _0234CED4 ; =ov29_02353268 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CE00: - cmp r4, #0x5e - bne _0234CE18 - ldr r0, _0234CED8 ; =ov29_02353288 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CE18: - cmp r4, #0x4c - bne _0234CE30 - ldr r0, _0234CEDC ; =ov29_023532E8 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CE30: - cmp r4, #0x60 - bne _0234CE48 - ldr r0, _0234CEE0 ; =ov29_02353260 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CE48: - cmp r4, #0x75 - bne _0234CE60 - ldr r0, _0234CEE4 ; =ov29_02353308 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CE60: - ldr r0, _0234CEA4 ; =DUNGEON_PTR - ldr r0, [r0] - ldrb r0, [r0, #0x748] -#ifdef JAPAN - cmp r0, #0x7a -#else - cmp r0, #0x7b -#endif - ldmneia sp!, {r4, pc} - ldr r0, _0234CEE8 ; =0xFFFFFED2 - add r0, r4, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - ldmhiia sp!, {r4, pc} - ldr r0, _0234CEEC ; =ov29_02353310 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} - .align 2, 0 -_0234CEA4: .word DUNGEON_PTR -_0234CEA8: .word ov29_023532F0 -_0234CEAC: .word ov29_023532F8 -_0234CEB0: .word ov29_023532D8 -_0234CEB4: .word ov29_023532C8 -_0234CEB8: .word ov29_02353250 -_0234CEBC: .word ov29_02353248 -_0234CEC0: .word ov29_02353270 -_0234CEC4: .word ov29_02353280 -_0234CEC8: .word ov29_023532A8 -_0234CECC: .word ov29_02353300 -_0234CED0: .word ov29_02353258 -_0234CED4: .word ov29_02353268 -_0234CED8: .word ov29_02353288 -_0234CEDC: .word ov29_023532E8 -_0234CEE0: .word ov29_02353260 -_0234CEE4: .word ov29_02353308 -_0234CEE8: .word 0xFFFFFED2 -_0234CEEC: .word ov29_02353310 - arm_func_end DisplayItemTip - - arm_func_start DisplayDungeonTip -DisplayDungeonTip: ; 0x0234CEF0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5] - mov r4, r1 - bl GetDungeonTipShown - cmp r0, #0 - bne _0234CF58 - ldrh r0, [r5, #4] - bl StringFromId - ldrb r0, [r0] - cmp r0, #0 - beq _0234CF58 - ldr r0, [r5] - bl SetDungeonTipShown - bl ov29_022EACBC - ldrh r1, [r5, #4] - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - cmp r4, #0 - beq _0234CF50 - bl GetLeader - ldrh r1, [r5, #4] - bl LogMessageByIdQuiet -_0234CF50: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_0234CF58: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end DisplayDungeonTip - - arm_func_start SetBothScreensWindowColorToDefault -SetBothScreensWindowColorToDefault: ; 0x0234CF60 - stmdb sp!, {r3, lr} - bl GetGameMode - cmp r0, #3 - bne _0234CF7C - mov r0, #2 - bl SetBothScreensWindowsColor - ldmia sp!, {r3, pc} -_0234CF7C: - bl GetPlayerGender - cmp r0, #1 - bne _0234CF94 - mov r0, #0 - bl SetBothScreensWindowsColor - ldmia sp!, {r3, pc} -_0234CF94: - mov r0, #1 - bl SetBothScreensWindowsColor - ldmia sp!, {r3, pc} - arm_func_end SetBothScreensWindowColorToDefault - - arm_func_start ov29_0234CFA0 -ov29_0234CFA0: ; 0x0234CFA0 - stmdb sp!, {r3, lr} - bl IsFullFloorFixedRoom - cmp r0, #0 - movne r0, #2 - ldmneia sp!, {r3, pc} - ldr r0, _0234CFE8 ; =DUNGEON_PTR - ldr r0, [r0] - ldrb r0, [r0, #0x748] - bl IsFutureDungeon - cmp r0, #0 - bne _0234CFD8 - bl IsSecretFloor - cmp r0, #0 - beq _0234CFE0 -_0234CFD8: - mov r0, #1 - ldmia sp!, {r3, pc} -_0234CFE0: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0234CFE8: .word DUNGEON_PTR - arm_func_end ov29_0234CFA0 - - arm_func_start GetPersonalityIndex -GetPersonalityIndex: ; 0x0234CFEC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldrb r0, [r5, #0x48] - cmp r0, #0xd8 - cmpne r0, #0xf9 - cmpne r0, #0xf7 - cmpne r0, #0xf8 - beq _0234D1D4 - cmp r0, #0xd6 - blo _0234D1D4 - cmp r0, #0xd7 - bne _0234D04C - mov r0, #0 - mov r1, #0x43 - bl LoadScriptVariableValue - cmp r0, #1 - moveq r4, #0x4b0 - beq _0234D1E0 - cmp r0, #2 - ldreq r4, _0234D1E8 ; =0x000004B1 - beq _0234D1E0 - cmp r0, #3 - ldreq r4, _0234D1EC ; =0x000004B2 - b _0234D1E0 -_0234D04C: - cmp r0, #0xd6 - bne _0234D0A0 - ldrsh r2, [r5, #2] - ldr r1, _0234D1F0 ; =0x000001B2 - cmp r2, r1 - ldreq r4, _0234D1F4 ; =0x000004CD - beq _0234D1E0 - cmp r2, #0xae - addeq r4, r1, #0x31c - beq _0234D1E0 - add r0, r1, #0x27c - cmp r2, r0 - ldreq r4, _0234D1F8 ; =0x000004CF - beq _0234D1E0 - sub r0, r1, #0x99 - cmp r2, r0 - moveq r4, #0x4d0 - beq _0234D1E0 - cmp r2, #0x318 - ldreq r4, _0234D1FC ; =0x000004D1 - b _0234D1E0 -_0234D0A0: - cmp r0, #0xda -#ifdef JAPAN - bne _0234E334 - ldr r0, _0234D204 ; =DUNGEON_PTR - ldr r0, [r0] - ldrb r0, [r0, #0x748] - bl IsFutureDungeon - cmp r0, #0 - ldrne r0, _0234E48C ; =0x000004BC - ldreq r0, _0234D200 ; =0x000004B3 - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 - b _0234D1E0 -_0234E334: -#else - ldreq r4, _0234D200 ; =0x000004B3 - beq _0234D1E0 -#endif - cmp r0, #0xed - bne _0234D148 - ldr r0, _0234D204 ; =DUNGEON_PTR - ldr r0, [r0] - ldrb r1, [r0, #0x748] - add r0, r1, #0x7b - and r0, r0, #0xff - cmp r0, #2 - ldrls r4, _0234D208 ; =0x000004C4 - bls _0234D1E0 - cmp r1, #0x88 - ldreq r4, _0234D20C ; =0x000004C6 - beq _0234D1E0 - add r0, r1, #0x77 - and r0, r0, #0xff - cmp r0, #1 - ldrls r4, _0234D210 ; =0x000004C7 - bls _0234D1E0 - add r0, r1, #0x75 - and r0, r0, #0xff - cmp r0, #1 - ldrls r4, _0234D214 ; =0x000004C8 - bls _0234D1E0 - cmp r1, #0x8d - ldreq r4, _0234D218 ; =0x000004C9 - beq _0234D1E0 - add r0, r1, #0x72 - and r0, r0, #0xff - cmp r0, #2 - ldrls r4, _0234D21C ; =0x000004CA - bls _0234D1E0 - cmp r1, #0x91 - ldreq r4, _0234D220 ; =0x000004CB - beq _0234D1E0 - add r0, r1, #0x6e - and r0, r0, #0xff - cmp r0, #2 - ldrls r4, _0234D224 ; =0x000004CC - b _0234D1E0 -_0234D148: - cmp r0, #0xe2 - bne _0234D170 - mov r0, #0x1a - bl GetPerformanceFlagWithChecks - cmp r0, #0 - beq _0234D170 - ldrsh r0, [r5, #2] - bl sub_02025784 - mov r4, r0 - b _0234D1E0 -_0234D170: - ldr r1, _0234D228 ; =ov29_023537E8 - b _0234D1C4 -_0234D178: - ldrb r0, [r5, #0x48] - cmp r0, r2 - bne _0234D1C0 - ldrsh r4, [r1, #2] - ldr r0, _0234D22C ; =0x000004B8 - cmp r4, r0 - bne _0234D1A8 - ldrsh r0, [r5, #2] - cmp r0, #0x1f8 - cmpne r0, #0x51 - ldreq r4, _0234D230 ; =0x000004D3 - beq _0234D1E0 -_0234D1A8: - cmp r4, #0 - bne _0234D1E0 - ldrsh r0, [r5, #2] - bl sub_02025784 - mov r4, r0 - b _0234D1E0 -_0234D1C0: - add r1, r1, #4 -_0234D1C4: - ldrb r2, [r1] - cmp r2, #0xff - bne _0234D178 - b _0234D1E0 -_0234D1D4: - ldrsh r0, [r5, #4] - bl sub_02025784 - mov r4, r0 -_0234D1E0: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0234D1E8: .word 0x000004B1 -_0234D1EC: .word 0x000004B2 -_0234D1F0: .word 0x000001B2 -_0234D1F4: .word 0x000004CD -_0234D1F8: .word 0x000004CF -_0234D1FC: .word 0x000004D1 -#ifdef JAPAN -_0234D204: .word DUNGEON_PTR -_0234E48C: .word 0x000004BC -_0234D200: .word 0x000004B3 -#else -_0234D200: .word 0x000004B3 -_0234D204: .word DUNGEON_PTR -#endif -_0234D208: .word 0x000004C4 -_0234D20C: .word 0x000004C6 -_0234D210: .word 0x000004C7 -_0234D214: .word 0x000004C8 -_0234D218: .word 0x000004C9 -_0234D21C: .word 0x000004CA -_0234D220: .word 0x000004CB -_0234D224: .word 0x000004CC -_0234D228: .word ov29_023537E8 -_0234D22C: .word 0x000004B8 -_0234D230: .word 0x000004D3 - arm_func_end GetPersonalityIndex - - arm_func_start ov29_0234D234 -ov29_0234D234: ; 0x0234D234 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr lr, [sp, #0x10] - ldrb ip, [sp, #0x14] - str lr, [sp] - str ip, [sp, #4] - bl ov29_0234D5D0 - add sp, sp, #8 - ldmia sp!, {r3, pc} - arm_func_end ov29_0234D234 - - arm_func_start DisplayMessage -DisplayMessage: ; 0x0234D258 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r6, r0 - mov r5, r1 - mov r4, r2 - mov r0, #0xa - bl ov29_0234BA54 - bl ov29_0234D558 - bl ov29_0234B034 - mov r1, r4 - mov r2, r6 - str r0, [sp] - mov r0, r5 - mov r3, #0 - str r3, [sp, #4] - bl DisplayMessageInternal - mov r0, #0xb - mov r1, #0 - bl ov29_022EA428 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end DisplayMessage - - arm_func_start DisplayMessage2 -DisplayMessage2: ; 0x0234D2AC - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r6, r0 - mov r5, r1 - mov r4, r2 - mov r0, #0xa - bl ov29_0234BA54 - bl ov29_0234D558 - bl ov29_0234B034 - mov r1, r4 - mov r2, r6 - str r0, [sp] - mov r0, r5 - mov r3, #1 - str r3, [sp, #4] - mov r3, #0 - bl DisplayMessageInternal - mov r0, #0 - mov r1, r0 - bl ov29_022EA428 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end DisplayMessage2 - - arm_func_start ov29_0234D304 -ov29_0234D304: ; 0x0234D304 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x58 - ldr r4, _0234D454 ; =ov29_02353563 - mov r8, r0 - ldrb r0, [r4] - mov r7, r1 - mov r6, r2 - mov r5, r3 - cmp r0, #0 - beq _0234D334 - mov r0, #0xa - bl ov29_0234BA54 -_0234D334: - bl ov29_0234D558 - mov r0, r8 - bl IsMonster__0234D460 - cmp r0, #0 - beq _0234D41C - mov r0, r8 - bl IsMonster__0234D460 - cmp r0, #0 - beq _0234D3F8 - ldr r4, [r8, #0xb4] - bl FixedRoomIsSubstituteRoom - cmp r0, #0 - beq _0234D3BC - bl GetRandomExplorerMazeMonster - cmp r0, #0 - moveq r1, #0 - beq _0234D38C - ldr r1, [r0] - cmp r1, #0 - movne r1, #1 - moveq r1, #0 - and r1, r1, #0xff -_0234D38C: - cmp r1, #0 - moveq r0, #0 - streq r0, [sp, #8] - beq _0234D3D0 - ldr r1, [r0, #0xb4] - ldr r0, _0234D458 ; =ov29_02353368 - ldrb r1, [r1, #0xbc] - sub r1, r1, #0xb - orr r1, r1, #0x90000 - str r1, [sp, #8] - bl Debug_Print0 - b _0234D3D0 -_0234D3BC: - bl ov29_02337EE8 - mov r1, r0 - ldr r0, _0234D45C ; =ov29_02353380 - str r1, [sp, #8] - bl Debug_Print0 -_0234D3D0: - ldrsh r0, [r4, #4] - str r0, [sp, #0xc] - bl ov29_0233804C - str r0, [sp, #0x18] - mov r0, r8 - bl ov29_0231ADA8 - str r0, [sp, #0x1c] - ldrsh r0, [r4, #0xc] - orr r0, r0, #0x30000 - str r0, [sp, #0x54] -_0234D3F8: - add r3, sp, #8 - str r3, [sp] - mov r3, #1 - mov r0, r6 - mov r1, r5 - mov r2, r7 - str r3, [sp, #4] - bl ov29_0234D5D0 - b _0234D440 -_0234D41C: - bl ov29_0234B034 - str r0, [sp] - mov r4, #1 - mov r0, r6 - mov r1, r5 - mov r2, r7 - mov r3, #0 - str r4, [sp, #4] - bl ov29_0234D5D0 -_0234D440: - mov r0, #0 - mov r1, r0 - bl ov29_022EA428 - add sp, sp, #0x58 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0234D454: .word ov29_02353563 -_0234D458: .word ov29_02353368 -_0234D45C: .word ov29_02353380 - arm_func_end ov29_0234D304 diff --git a/asm/overlay_29_0234CA7C.s b/asm/overlay_29_0234CA7C.s new file mode 100644 index 00000000..a64bec41 --- /dev/null +++ b/asm/overlay_29_0234CA7C.s @@ -0,0 +1,777 @@ + .include "asm/macros.inc" + .include "overlay_29_0234CA7C.inc" + + .text + + arm_func_start ov29_0234CA7C +ov29_0234CA7C: ; 0x0234CA7C + mov r0, #0x5800 + bx lr + arm_func_end ov29_0234CA7C + + arm_func_start ov29_0234CA84 +ov29_0234CA84: ; 0x0234CA84 + stmdb sp!, {r3, lr} + ldr r0, _0234CAC4 ; =ov29_023537E4 + mov r3, #1 + ldr r1, [r0] + ldr r2, _0234CAC8 ; =ov29_0237D000 + str r3, [r1] + ldr r1, [r0] + mov r0, #0x21 + str r2, [r1, #4] + bl LoadOverlay + ldr r0, _0234CAC4 ; =ov29_023537E4 + mov r1, #0x5800 + ldr r0, [r0] + ldr r0, [r0, #4] + bl WriteQuicksaveData + ldmia sp!, {r3, pc} + .align 2, 0 +_0234CAC4: .word ov29_023537E4 +_0234CAC8: .word ov29_0237D000 + arm_func_end ov29_0234CA84 + + arm_func_start ov29_0234CACC +ov29_0234CACC: ; 0x0234CACC + stmdb sp!, {r3, lr} + mov r0, #0x21 + bl OverlayIsLoaded + cmp r0, #0 + beq _0234CAE8 + mov r0, #0x21 + bl UnloadOverlay +_0234CAE8: + ldr r0, _0234CAFC ; =ov29_023537E4 + mov r1, #0 + ldr r0, [r0] + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0234CAFC: .word ov29_023537E4 + arm_func_end ov29_0234CACC + + arm_func_start ov29_0234CB00 +ov29_0234CB00: ; 0x0234CB00 + ldr r0, _0234CB28 ; =ov29_023537E4 + mov r3, #2 + ldr r1, [r0] + ldr r2, _0234CB2C ; =ov29_0237D000 + str r3, [r1] + ldr r1, [r0] + ldr ip, _0234CB30 ; =LoadOverlay + mov r0, #0x21 + str r2, [r1, #4] + bx ip + .align 2, 0 +_0234CB28: .word ov29_023537E4 +_0234CB2C: .word ov29_0237D000 +_0234CB30: .word LoadOverlay + arm_func_end ov29_0234CB00 + + arm_func_start ov29_0234CB34 +ov29_0234CB34: ; 0x0234CB34 + ldr r0, _0234CB4C ; =ov29_023537E4 + ldr ip, _0234CB50 ; =ov30_023842F4 + ldr r0, [r0] + mov r1, #0x5800 + ldr r0, [r0, #4] + bx ip + .align 2, 0 +_0234CB4C: .word ov29_023537E4 +_0234CB50: .word ov30_023842F4 + arm_func_end ov29_0234CB34 + + arm_func_start ov29_0234CB54 +ov29_0234CB54: ; 0x0234CB54 + stmdb sp!, {r3, lr} + mov r0, #0x21 + bl OverlayIsLoaded + cmp r0, #0 + beq _0234CB70 + mov r0, #0x21 + bl UnloadOverlay +_0234CB70: + ldr r0, _0234CB84 ; =ov29_023537E4 + mov r1, #0 + ldr r0, [r0] + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0234CB84: .word ov29_023537E4 + arm_func_end ov29_0234CB54 + + arm_func_start DisplayFloorTip +DisplayFloorTip: ; 0x0234CB88 + stmdb sp!, {r3, lr} + bl GetLeader + ldr r2, _0234CC88 ; =DUNGEON_PTR + mvn r3, #0 + ldr r1, [r2] + ldr r0, _0234CC8C ; =ov29_023532C0 + add r1, r1, #0x100 + strh r3, [r1, #0xd8] + ldr r2, [r2] + mov r1, #1 + add r2, r2, #0x100 + strh r3, [r2, #0xda] + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CC90 ; =ov29_023532B8 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CC94 ; =ov29_023532B0 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CC98 ; =ov29_02353240 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldreq r0, _0234CC88 ; =DUNGEON_PTR + ldreq r0, [r0] + ldreqb r0, [r0, #0x748] + cmpeq r0, #3 + ldmneia sp!, {r3, pc} + ldr r0, _0234CC9C ; =ov29_023532A0 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CCA0 ; =ov29_02353298 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CCA4 ; =ov29_02353290 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CCA8 ; =ov29_02353278 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CCAC ; =ov29_02353238 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CCB0 ; =ov29_023532E0 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0234CC88: .word DUNGEON_PTR +_0234CC8C: .word ov29_023532C0 +_0234CC90: .word ov29_023532B8 +_0234CC94: .word ov29_023532B0 +_0234CC98: .word ov29_02353240 +_0234CC9C: .word ov29_023532A0 +_0234CCA0: .word ov29_02353298 +_0234CCA4: .word ov29_02353290 +_0234CCA8: .word ov29_02353278 +_0234CCAC: .word ov29_02353238 +_0234CCB0: .word ov29_023532E0 + arm_func_end DisplayFloorTip + + arm_func_start DisplayItemTip +DisplayItemTip: ; 0x0234CCB4 + stmdb sp!, {r4, lr} + ldr r2, _0234CEA4 ; =DUNGEON_PTR + mvn r3, #0 + ldr r1, [r2] + mov r4, r0 + add r1, r1, #0x100 + strh r3, [r1, #0xd8] + ldr r1, [r2] + add r1, r1, #0x100 + strh r3, [r1, #0xda] + bl GetItemCategoryVeneer + cmp r0, #3 + bne _0234CCF8 + ldr r0, _0234CEA8 ; =ov29_023532F0 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CCF8: + cmp r4, #0x46 + bne _0234CD10 + ldr r0, _0234CEAC ; =ov29_023532F8 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CD10: + cmp r4, #0x52 + bne _0234CD28 + ldr r0, _0234CEB0 ; =ov29_023532D8 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CD28: + cmp r4, #0x57 + bne _0234CD40 + ldr r0, _0234CEB4 ; =ov29_023532C8 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CD40: + cmp r4, #8 + bne _0234CD58 + ldr r0, _0234CEB8 ; =ov29_02353250 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CD58: + cmp r4, #0x51 + bne _0234CD70 + ldr r0, _0234CEBC ; =ov29_02353248 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CD70: + cmp r4, #0x54 + bne _0234CD88 + ldr r0, _0234CEC0 ; =ov29_02353270 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CD88: + cmp r4, #0xb7 + bne _0234CDA0 + ldr r0, _0234CEC4 ; =ov29_02353280 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CDA0: + cmp r4, #0x63 + bne _0234CDB8 + ldr r0, _0234CEC8 ; =ov29_023532A8 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CDB8: + cmp r4, #0x45 + bne _0234CDD0 + ldr r0, _0234CECC ; =ov29_02353300 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CDD0: + cmp r4, #0x5b + bne _0234CDE8 + ldr r0, _0234CED0 ; =ov29_02353258 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CDE8: + cmp r4, #0x56 + bne _0234CE00 + ldr r0, _0234CED4 ; =ov29_02353268 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CE00: + cmp r4, #0x5e + bne _0234CE18 + ldr r0, _0234CED8 ; =ov29_02353288 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CE18: + cmp r4, #0x4c + bne _0234CE30 + ldr r0, _0234CEDC ; =ov29_023532E8 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CE30: + cmp r4, #0x60 + bne _0234CE48 + ldr r0, _0234CEE0 ; =ov29_02353260 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CE48: + cmp r4, #0x75 + bne _0234CE60 + ldr r0, _0234CEE4 ; =ov29_02353308 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CE60: + ldr r0, _0234CEA4 ; =DUNGEON_PTR + ldr r0, [r0] + ldrb r0, [r0, #0x748] +#ifdef JAPAN + cmp r0, #0x7a +#else + cmp r0, #0x7b +#endif + ldmneia sp!, {r4, pc} + ldr r0, _0234CEE8 ; =0xFFFFFED2 + add r0, r4, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + ldmhiia sp!, {r4, pc} + ldr r0, _0234CEEC ; =ov29_02353310 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} + .align 2, 0 +_0234CEA4: .word DUNGEON_PTR +_0234CEA8: .word ov29_023532F0 +_0234CEAC: .word ov29_023532F8 +_0234CEB0: .word ov29_023532D8 +_0234CEB4: .word ov29_023532C8 +_0234CEB8: .word ov29_02353250 +_0234CEBC: .word ov29_02353248 +_0234CEC0: .word ov29_02353270 +_0234CEC4: .word ov29_02353280 +_0234CEC8: .word ov29_023532A8 +_0234CECC: .word ov29_02353300 +_0234CED0: .word ov29_02353258 +_0234CED4: .word ov29_02353268 +_0234CED8: .word ov29_02353288 +_0234CEDC: .word ov29_023532E8 +_0234CEE0: .word ov29_02353260 +_0234CEE4: .word ov29_02353308 +_0234CEE8: .word 0xFFFFFED2 +_0234CEEC: .word ov29_02353310 + arm_func_end DisplayItemTip + + arm_func_start DisplayDungeonTip +DisplayDungeonTip: ; 0x0234CEF0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, [r5] + mov r4, r1 + bl GetDungeonTipShown + cmp r0, #0 + bne _0234CF58 + ldrh r0, [r5, #4] + bl StringFromId + ldrb r0, [r0] + cmp r0, #0 + beq _0234CF58 + ldr r0, [r5] + bl SetDungeonTipShown + bl ov29_022EACBC + ldrh r1, [r5, #4] + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + cmp r4, #0 + beq _0234CF50 + bl GetLeader + ldrh r1, [r5, #4] + bl LogMessageByIdQuiet +_0234CF50: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_0234CF58: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end DisplayDungeonTip + + arm_func_start SetBothScreensWindowColorToDefault +SetBothScreensWindowColorToDefault: ; 0x0234CF60 + stmdb sp!, {r3, lr} + bl GetGameMode + cmp r0, #3 + bne _0234CF7C + mov r0, #2 + bl SetBothScreensWindowsColor + ldmia sp!, {r3, pc} +_0234CF7C: + bl GetPlayerGender + cmp r0, #1 + bne _0234CF94 + mov r0, #0 + bl SetBothScreensWindowsColor + ldmia sp!, {r3, pc} +_0234CF94: + mov r0, #1 + bl SetBothScreensWindowsColor + ldmia sp!, {r3, pc} + arm_func_end SetBothScreensWindowColorToDefault + + arm_func_start ov29_0234CFA0 +ov29_0234CFA0: ; 0x0234CFA0 + stmdb sp!, {r3, lr} + bl IsFullFloorFixedRoom + cmp r0, #0 + movne r0, #2 + ldmneia sp!, {r3, pc} + ldr r0, _0234CFE8 ; =DUNGEON_PTR + ldr r0, [r0] + ldrb r0, [r0, #0x748] + bl IsFutureDungeon + cmp r0, #0 + bne _0234CFD8 + bl IsSecretFloor + cmp r0, #0 + beq _0234CFE0 +_0234CFD8: + mov r0, #1 + ldmia sp!, {r3, pc} +_0234CFE0: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0234CFE8: .word DUNGEON_PTR + arm_func_end ov29_0234CFA0 + + arm_func_start GetPersonalityIndex +GetPersonalityIndex: ; 0x0234CFEC + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldrb r0, [r5, #0x48] + cmp r0, #0xd8 + cmpne r0, #0xf9 + cmpne r0, #0xf7 + cmpne r0, #0xf8 + beq _0234D1D4 + cmp r0, #0xd6 + blo _0234D1D4 + cmp r0, #0xd7 + bne _0234D04C + mov r0, #0 + mov r1, #0x43 + bl LoadScriptVariableValue + cmp r0, #1 + moveq r4, #0x4b0 + beq _0234D1E0 + cmp r0, #2 + ldreq r4, _0234D1E8 ; =0x000004B1 + beq _0234D1E0 + cmp r0, #3 + ldreq r4, _0234D1EC ; =0x000004B2 + b _0234D1E0 +_0234D04C: + cmp r0, #0xd6 + bne _0234D0A0 + ldrsh r2, [r5, #2] + ldr r1, _0234D1F0 ; =0x000001B2 + cmp r2, r1 + ldreq r4, _0234D1F4 ; =0x000004CD + beq _0234D1E0 + cmp r2, #0xae + addeq r4, r1, #0x31c + beq _0234D1E0 + add r0, r1, #0x27c + cmp r2, r0 + ldreq r4, _0234D1F8 ; =0x000004CF + beq _0234D1E0 + sub r0, r1, #0x99 + cmp r2, r0 + moveq r4, #0x4d0 + beq _0234D1E0 + cmp r2, #0x318 + ldreq r4, _0234D1FC ; =0x000004D1 + b _0234D1E0 +_0234D0A0: + cmp r0, #0xda +#ifdef JAPAN + bne _0234E334 + ldr r0, _0234D204 ; =DUNGEON_PTR + ldr r0, [r0] + ldrb r0, [r0, #0x748] + bl IsFutureDungeon + cmp r0, #0 + ldrne r0, _0234E48C ; =0x000004BC + ldreq r0, _0234D200 ; =0x000004B3 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 + b _0234D1E0 +_0234E334: +#else + ldreq r4, _0234D200 ; =0x000004B3 + beq _0234D1E0 +#endif + cmp r0, #0xed + bne _0234D148 + ldr r0, _0234D204 ; =DUNGEON_PTR + ldr r0, [r0] + ldrb r1, [r0, #0x748] + add r0, r1, #0x7b + and r0, r0, #0xff + cmp r0, #2 + ldrls r4, _0234D208 ; =0x000004C4 + bls _0234D1E0 + cmp r1, #0x88 + ldreq r4, _0234D20C ; =0x000004C6 + beq _0234D1E0 + add r0, r1, #0x77 + and r0, r0, #0xff + cmp r0, #1 + ldrls r4, _0234D210 ; =0x000004C7 + bls _0234D1E0 + add r0, r1, #0x75 + and r0, r0, #0xff + cmp r0, #1 + ldrls r4, _0234D214 ; =0x000004C8 + bls _0234D1E0 + cmp r1, #0x8d + ldreq r4, _0234D218 ; =0x000004C9 + beq _0234D1E0 + add r0, r1, #0x72 + and r0, r0, #0xff + cmp r0, #2 + ldrls r4, _0234D21C ; =0x000004CA + bls _0234D1E0 + cmp r1, #0x91 + ldreq r4, _0234D220 ; =0x000004CB + beq _0234D1E0 + add r0, r1, #0x6e + and r0, r0, #0xff + cmp r0, #2 + ldrls r4, _0234D224 ; =0x000004CC + b _0234D1E0 +_0234D148: + cmp r0, #0xe2 + bne _0234D170 + mov r0, #0x1a + bl GetPerformanceFlagWithChecks + cmp r0, #0 + beq _0234D170 + ldrsh r0, [r5, #2] + bl sub_02025784 + mov r4, r0 + b _0234D1E0 +_0234D170: + ldr r1, _0234D228 ; =ov29_023537E8 + b _0234D1C4 +_0234D178: + ldrb r0, [r5, #0x48] + cmp r0, r2 + bne _0234D1C0 + ldrsh r4, [r1, #2] + ldr r0, _0234D22C ; =0x000004B8 + cmp r4, r0 + bne _0234D1A8 + ldrsh r0, [r5, #2] + cmp r0, #0x1f8 + cmpne r0, #0x51 + ldreq r4, _0234D230 ; =0x000004D3 + beq _0234D1E0 +_0234D1A8: + cmp r4, #0 + bne _0234D1E0 + ldrsh r0, [r5, #2] + bl sub_02025784 + mov r4, r0 + b _0234D1E0 +_0234D1C0: + add r1, r1, #4 +_0234D1C4: + ldrb r2, [r1] + cmp r2, #0xff + bne _0234D178 + b _0234D1E0 +_0234D1D4: + ldrsh r0, [r5, #4] + bl sub_02025784 + mov r4, r0 +_0234D1E0: + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0234D1E8: .word 0x000004B1 +_0234D1EC: .word 0x000004B2 +_0234D1F0: .word 0x000001B2 +_0234D1F4: .word 0x000004CD +_0234D1F8: .word 0x000004CF +_0234D1FC: .word 0x000004D1 +#ifdef JAPAN +_0234D204: .word DUNGEON_PTR +_0234E48C: .word 0x000004BC +_0234D200: .word 0x000004B3 +#else +_0234D200: .word 0x000004B3 +_0234D204: .word DUNGEON_PTR +#endif +_0234D208: .word 0x000004C4 +_0234D20C: .word 0x000004C6 +_0234D210: .word 0x000004C7 +_0234D214: .word 0x000004C8 +_0234D218: .word 0x000004C9 +_0234D21C: .word 0x000004CA +_0234D220: .word 0x000004CB +_0234D224: .word 0x000004CC +_0234D228: .word ov29_023537E8 +_0234D22C: .word 0x000004B8 +_0234D230: .word 0x000004D3 + arm_func_end GetPersonalityIndex + + arm_func_start ov29_0234D234 +ov29_0234D234: ; 0x0234D234 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr lr, [sp, #0x10] + ldrb ip, [sp, #0x14] + str lr, [sp] + str ip, [sp, #4] + bl ov29_0234D5D0 + add sp, sp, #8 + ldmia sp!, {r3, pc} + arm_func_end ov29_0234D234 + + arm_func_start DisplayMessage +DisplayMessage: ; 0x0234D258 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r6, r0 + mov r5, r1 + mov r4, r2 + mov r0, #0xa + bl ov29_0234BA54 + bl ov29_0234D558 + bl ov29_0234B034 + mov r1, r4 + mov r2, r6 + str r0, [sp] + mov r0, r5 + mov r3, #0 + str r3, [sp, #4] + bl DisplayMessageInternal + mov r0, #0xb + mov r1, #0 + bl ov29_022EA428 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end DisplayMessage + + arm_func_start DisplayMessage2 +DisplayMessage2: ; 0x0234D2AC + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r6, r0 + mov r5, r1 + mov r4, r2 + mov r0, #0xa + bl ov29_0234BA54 + bl ov29_0234D558 + bl ov29_0234B034 + mov r1, r4 + mov r2, r6 + str r0, [sp] + mov r0, r5 + mov r3, #1 + str r3, [sp, #4] + mov r3, #0 + bl DisplayMessageInternal + mov r0, #0 + mov r1, r0 + bl ov29_022EA428 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end DisplayMessage2 + + arm_func_start ov29_0234D304 +ov29_0234D304: ; 0x0234D304 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x58 + ldr r4, _0234D454 ; =ov29_02353563 + mov r8, r0 + ldrb r0, [r4] + mov r7, r1 + mov r6, r2 + mov r5, r3 + cmp r0, #0 + beq _0234D334 + mov r0, #0xa + bl ov29_0234BA54 +_0234D334: + bl ov29_0234D558 + mov r0, r8 + bl IsMonster__0234D460 + cmp r0, #0 + beq _0234D41C + mov r0, r8 + bl IsMonster__0234D460 + cmp r0, #0 + beq _0234D3F8 + ldr r4, [r8, #0xb4] + bl FixedRoomIsSubstituteRoom + cmp r0, #0 + beq _0234D3BC + bl GetRandomExplorerMazeMonster + cmp r0, #0 + moveq r1, #0 + beq _0234D38C + ldr r1, [r0] + cmp r1, #0 + movne r1, #1 + moveq r1, #0 + and r1, r1, #0xff +_0234D38C: + cmp r1, #0 + moveq r0, #0 + streq r0, [sp, #8] + beq _0234D3D0 + ldr r1, [r0, #0xb4] + ldr r0, _0234D458 ; =ov29_02353368 + ldrb r1, [r1, #0xbc] + sub r1, r1, #0xb + orr r1, r1, #0x90000 + str r1, [sp, #8] + bl Debug_Print0 + b _0234D3D0 +_0234D3BC: + bl ov29_02337EE8 + mov r1, r0 + ldr r0, _0234D45C ; =ov29_02353380 + str r1, [sp, #8] + bl Debug_Print0 +_0234D3D0: + ldrsh r0, [r4, #4] + str r0, [sp, #0xc] + bl ov29_0233804C + str r0, [sp, #0x18] + mov r0, r8 + bl ov29_0231ADA8 + str r0, [sp, #0x1c] + ldrsh r0, [r4, #0xc] + orr r0, r0, #0x30000 + str r0, [sp, #0x54] +_0234D3F8: + add r3, sp, #8 + str r3, [sp] + mov r3, #1 + mov r0, r6 + mov r1, r5 + mov r2, r7 + str r3, [sp, #4] + bl ov29_0234D5D0 + b _0234D440 +_0234D41C: + bl ov29_0234B034 + str r0, [sp] + mov r4, #1 + mov r0, r6 + mov r1, r5 + mov r2, r7 + mov r3, #0 + str r4, [sp, #4] + bl ov29_0234D5D0 +_0234D440: + mov r0, #0 + mov r1, r0 + bl ov29_022EA428 + add sp, sp, #0x58 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0234D454: .word ov29_02353563 +_0234D458: .word ov29_02353368 +_0234D45C: .word ov29_02353380 + arm_func_end ov29_0234D304 diff --git a/include/overlay_29_0234CA68.h b/include/overlay_29_0234CA68.h new file mode 100644 index 00000000..4aea2cf3 --- /dev/null +++ b/include/overlay_29_0234CA68.h @@ -0,0 +1,6 @@ +#ifndef PMDSKY_OVERLAY_29_0234CA68_H +#define PMDSKY_OVERLAY_29_0234CA68_H + +s32 ov29_0234CA68(); + +#endif //PMDSKY_OVERLAY_29_0234CA68_H diff --git a/main.lsf b/main.lsf index 2b0488e6..2ebb0fcd 100644 --- a/main.lsf +++ b/main.lsf @@ -483,6 +483,8 @@ Overlay OVY_29 Object asm/overlay_29_023498A0.o Object src/overlay_29_0234BBE8.o Object asm/overlay_29_0234BEE0.o + Object src/overlay_29_0234CA68.o + Object asm/overlay_29_0234CA7C.o Object src/overlay_29_0234D460.o Object asm/overlay_29_0234D484.o Object src/overlay_29_0234DDD0.o diff --git a/src/overlay_29_0234BBE8.c b/src/overlay_29_0234BBE8.c index c6fce77f..9742ea03 100644 --- a/src/overlay_29_0234BBE8.c +++ b/src/overlay_29_0234BBE8.c @@ -1,5 +1,6 @@ #include "overlay_29_0234BBE8.h" #include "overlay_29_022DC61C.h" +#include "overlay_29_0234CA68.h" #include "util.h" struct unk_ov29_023537DC { @@ -18,7 +19,6 @@ typedef struct { extern unk_ov29_023537D8_t ov29_023537D8; void ov29_022DEBA4(); // thunk_FUN_022deadc void ov29_0234CB00(); -s32 ov29_0234CA68(); s32 ov29_0234CA7C(); bool8 sub_0204AFF8(); // is GAME_MODE rescue? void ov30_02382820(s32, s32, s32); @@ -42,9 +42,6 @@ void StartFadeDungeonWrapper(s32,s32,s32); void ov29_0234C738(s32); void SetAdventureLogDungeonFloor(void *); void StopBgmCommand(); -bool8 sub_0204AFF8(); -s32 ov29_0234CA68(); -s32 ov29_0234CA7C(); void ov30_023829CC(s32, s32, s32); void ov29_022DDE00(s32); void ov30_02382C30(); diff --git a/src/overlay_29_0234CA68.c b/src/overlay_29_0234CA68.c new file mode 100644 index 00000000..c125123f --- /dev/null +++ b/src/overlay_29_0234CA68.c @@ -0,0 +1,8 @@ +#include "overlay_29_0234CA68.h" + +extern s32* ov29_023537E4; + +s32 ov29_0234CA68() +{ + return ov29_023537E4[1]; +} From 30f1982a60f8f3a7dee28dfaae77663c00a2f883 Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Sun, 15 Jun 2025 17:44:13 -0500 Subject: [PATCH 4/7] Decomped ov29_0234CA7C Decomped by ElectricGeorge --- .../{overlay_29_0234CA7C.inc => overlay_29_0234CA84.inc} | 0 asm/{overlay_29_0234CA7C.s => overlay_29_0234CA84.s} | 8 +------- include/overlay_29_0234CA68.h | 1 + main.lsf | 2 +- src/overlay_29_0234BBE8.c | 1 - src/overlay_29_0234CA68.c | 5 +++++ 6 files changed, 8 insertions(+), 9 deletions(-) rename asm/include/{overlay_29_0234CA7C.inc => overlay_29_0234CA84.inc} (100%) rename asm/{overlay_29_0234CA7C.s => overlay_29_0234CA84.s} (99%) diff --git a/asm/include/overlay_29_0234CA7C.inc b/asm/include/overlay_29_0234CA84.inc similarity index 100% rename from asm/include/overlay_29_0234CA7C.inc rename to asm/include/overlay_29_0234CA84.inc diff --git a/asm/overlay_29_0234CA7C.s b/asm/overlay_29_0234CA84.s similarity index 99% rename from asm/overlay_29_0234CA7C.s rename to asm/overlay_29_0234CA84.s index a64bec41..8f4229af 100644 --- a/asm/overlay_29_0234CA7C.s +++ b/asm/overlay_29_0234CA84.s @@ -1,14 +1,8 @@ .include "asm/macros.inc" - .include "overlay_29_0234CA7C.inc" + .include "overlay_29_0234CA84.inc" .text - arm_func_start ov29_0234CA7C -ov29_0234CA7C: ; 0x0234CA7C - mov r0, #0x5800 - bx lr - arm_func_end ov29_0234CA7C - arm_func_start ov29_0234CA84 ov29_0234CA84: ; 0x0234CA84 stmdb sp!, {r3, lr} diff --git a/include/overlay_29_0234CA68.h b/include/overlay_29_0234CA68.h index 4aea2cf3..e0c77d33 100644 --- a/include/overlay_29_0234CA68.h +++ b/include/overlay_29_0234CA68.h @@ -2,5 +2,6 @@ #define PMDSKY_OVERLAY_29_0234CA68_H s32 ov29_0234CA68(); +s32 ov29_0234CA7C(); #endif //PMDSKY_OVERLAY_29_0234CA68_H diff --git a/main.lsf b/main.lsf index 2ebb0fcd..369070da 100644 --- a/main.lsf +++ b/main.lsf @@ -484,7 +484,7 @@ Overlay OVY_29 Object src/overlay_29_0234BBE8.o Object asm/overlay_29_0234BEE0.o Object src/overlay_29_0234CA68.o - Object asm/overlay_29_0234CA7C.o + Object asm/overlay_29_0234CA84.o Object src/overlay_29_0234D460.o Object asm/overlay_29_0234D484.o Object src/overlay_29_0234DDD0.o diff --git a/src/overlay_29_0234BBE8.c b/src/overlay_29_0234BBE8.c index 9742ea03..c7945b9e 100644 --- a/src/overlay_29_0234BBE8.c +++ b/src/overlay_29_0234BBE8.c @@ -19,7 +19,6 @@ typedef struct { extern unk_ov29_023537D8_t ov29_023537D8; void ov29_022DEBA4(); // thunk_FUN_022deadc void ov29_0234CB00(); -s32 ov29_0234CA7C(); bool8 sub_0204AFF8(); // is GAME_MODE rescue? void ov30_02382820(s32, s32, s32); s32 ov30_02382874(); diff --git a/src/overlay_29_0234CA68.c b/src/overlay_29_0234CA68.c index c125123f..79341473 100644 --- a/src/overlay_29_0234CA68.c +++ b/src/overlay_29_0234CA68.c @@ -6,3 +6,8 @@ s32 ov29_0234CA68() { return ov29_023537E4[1]; } + +s32 ov29_0234CA7C() +{ + return 0x5800; +} From 89acbf9b5cb52ff4e85f77337378143bcca841e1 Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Sun, 15 Jun 2025 17:48:07 -0500 Subject: [PATCH 5/7] Decomped IsGameModeRescue Decomped by ElectricGeorge --- asm/include/main_02034974.inc | 576 ++- asm/include/main_0204B018.inc | 146 + asm/main_02034974.s | 7855 --------------------------------- asm/main_0204B018.s | 7846 ++++++++++++++++++++++++++++++++ include/main_0204AFF8.h | 20 + main.lsf | 2 + src/main_0204AFF8.c | 8 + src/overlay_29_0234BBE8.c | 6 +- 8 files changed, 8277 insertions(+), 8182 deletions(-) create mode 100644 asm/include/main_0204B018.inc create mode 100644 asm/main_0204B018.s create mode 100644 include/main_0204AFF8.h create mode 100644 src/main_0204AFF8.c diff --git a/asm/include/main_02034974.inc b/asm/include/main_02034974.inc index 46a3957f..d10122ee 100644 --- a/asm/include/main_02034974.inc +++ b/asm/include/main_02034974.inc @@ -1,4 +1,241 @@ #pragma once +.public AddItemToStorage +.public AddMoneyCarried +.public ApplyLevelUpBoostsToGroundMonster +.public Arm9LoadUnkFieldNa0x2029EC8 +.public Arm9StoreUnkFieldNa0x2029ED8 +.public BAG_ITEMS_PTR_MIRROR +.public CanMonsterUseMove +.public CardBackupError +.public CardPullOutWithStatus +.public CheckDebugMenuField0x1A4 +.public CheckOptionsMenuField0x1A4 +.public CheckParentMenuField0x1A0 +.public ClearAdventureLogStruct +.public ClearWindow +.public CloseAdvancedMenu +.public CloseAdvancedTextBox +.public CloseAdvancedTextBox2 +.public CloseCollectionMenu +.public CloseDebugMenu +.public CloseDialogueBox +.public CloseOptionsMenu +.public CloseParentMenu +.public ClosePortraitBox +.public CloseScrollBox +.public CloseSimpleMenu +.public CloseTeamSelectionMenu +.public CloseTextBox +.public CloseTextBox2 +.public ConvertStorageItemAtIdxToItem +.public CopyBitsFrom +.public CopyBitsTo +.public CopyNStringFromId +.public CopyProgressInfoFromScratchFrom +.public CopyProgressInfoFromScratchTo +.public CountNbOfItemsInStorage +.public CountNbOfValidItemsInStorage +.public CountNbOfValidItemsInTimeDarknessInStorage +.public CreateAdvancedMenu +.public CreateAdvancedTextBox +.public CreateAdvancedTextBoxWithArg +.public CreateCollectionMenu +.public CreateDebugMenu +.public CreateDialogueBox +.public CreateOptionsMenu +.public CreateParentMenu +.public CreateParentMenuFromStringIds +.public CreatePortraitBox +.public CreateScrollBoxMulti +.public CreateScrollBoxSingle +.public CreateSimpleMenu +.public CreateSimpleMenuFromStringIds +.public CreateTeamSelectionMenu +.public CreateTextBox +.public CreateTextBoxWithArg +.public DEFAULT_HERO_ID +.public DUNGEON_PTR +.public Debug_GetDebugFlag +.public Debug_GetLogFlag +.public Debug_Print0 +.public Debug_SetDebugFlag +.public Debug_SetLogFlag +.public DisableIqSkill +.public DrawTextInWindow +.public DrawTileGrid +.public DumpScriptVariableValues +.public EnableAllLearnableIqSkills +.public EventFlagBackup +.public EventFlagResume +.public FORBIDDEN_FORGOT_MOVE_LIST +.public FemaleToMaleForm +.public FormatMoveStringMore +.public GAME_MODE +.public GetActiveRosterIndex +.public GetActiveTeamMember +.public GetActualSellPrice +.public GetAdvancedMenuCurrentOption +.public GetAdvancedMenuResult +.public GetAdvancedTextBoxFlags2 +.public GetAdventureLogDungeonFloor +.public GetCurrentBagCapacity +.public GetDexNumber +.public GetDungeonResultString +.public GetEvolutionPossibilities +.public GetExecuteSpecialEpisodeType +.public GetHeldButtons +.public GetHero +.public GetHeroMemberIdx +.public GetInfoGroundMoveset +.public GetIqSkillStringId +.public GetItemAtIdx +.public GetItemCategory +.public GetItemCategoryVeneer +.public GetItemMoveId16 +.public GetKeyM2NSwitch +.public GetLanguageType +.public GetLearnableIqSkills +.public GetMainCharacter1MemberIdx +.public GetMainCharacter2MemberIdx +.public GetMainCharacter3MemberIdx +.public GetMaxPp +.public GetMoneyCarried +.public GetMonsterGenderVeneer +.public GetMonsterName +.public GetMoveRangeId +.public GetMoveType +.public GetNameRaw +.public GetNameString +.public GetNameWithGender +.public GetNbItemsInBag +.public GetNextIqSkill +.public GetOptionsMenuResult +.public GetOptionsMenuStates +.public GetPartner +.public GetPartnerMemberIdx +.public GetPerformanceFlagWithChecks +.public GetPpIncrease +.public GetPressedButtons +.public GetRank +.public GetRankUpEntry +.public GetReleasedStylus +.public GetRngSeed +.public GetSimpleMenuResult +.public GetSpecialEpisodeType +.public GetSpeciesString +.public GetStringFromFileVeneer +.public GetTeamMember +.public GetTime +.public GetType +.public GetTypeStringId +.public GetWindow +.public HidePortraitBox +.public InitMove +.public InitPortraitParams +.public InitPortraitParamsWithMonsterId +.public InitPreprocessorArgs +.public InitScriptVariableValues +.public IqSkillFlagTest +.public Is2TurnsMove +.public IsAdvancedMenuActive2 +.public IsAdvancedTextBoxActive +.public IsCollectionMenuActive +.public IsCollectionMenuState3 +.public IsDebugMenuActive +.public IsDeoxys +.public IsDialogueBoxActive +.public IsExclusiveItemIdForMonster +.public IsExperienceLocked +.public IsGummi +.public IsItemInTimeDarkness +.public IsItemValidVeneer +.public IsMainCharacter +.public IsMonsterIllegalForMissions +.public IsMovesetValidInTimeDarkness +.public IsNot2TurnsMoveOrSketch +.public IsOptionsMenuActive +.public IsParentMenuActive +.public IsScrollBoxActive +.public IsShaymin +.public IsShoppableItem +.public IsSimpleMenuActive +.public IsStorableItem +.public IsStorageFull +.public IsTeamSelectionMenuActive +.public IsTeamSelectionMenuState3 +.public IsThrownItem +.public IsTreasureBox +.public IsValidPortrait +.public IsValidTeamMember +.public KEYBOARD_STRING_IDS +.public LAST_NEW_MOVE +.public LearnMoves +.public LoadOverlay +.public LoadScriptVariableValue +.public MemAlloc +.public MemFree +.public MemZero +.public MemcpySimple +.public MemsetSimple +.public NOTIFY_NOTE +.public OS_GetLockID +.public OverlayIsLoaded +.public PARTNER_TALK_KIND_TABLE +.public PlayAdvancedTextBoxInputSound +.public PlayBgmByIdVeneer +.public PlaySeVolumeWrapper +.public PreprocessString +.public PreprocessStringFromId +.public Rand32Bit +.public RandInt +.public RandIntSafe +.public ReadItemsFromSave +.public ReadMonsterInfoFromSave +.public ReadStringFromDialogueBox +.public RemoveEmptyItemsInBag +.public ResetGlobalProgress +.public RestoreScriptVariableValues +.public ResumeAdvancedMenu +.public SPECIAL_EPISODE_MAIN_CHARACTERS +.public STATUSES_FULL_DESCRIPTION_STRING_IDS +.public SaveScriptVariableValue +.public SaveScriptVariableValueBytes +.public SetActiveInventory +.public SetActiveKecleonShop +.public SetActiveTeam +.public SetAdvancedTextBoxField0x1C2 +.public SetAdvancedTextBoxPartialMenu +.public SetAdvancedTextBoxState5 +.public SetBothScreensWindowsColor +.public SetCollectionMenuField0x1BC +.public SetCollectionMenuVoidFn +.public SetCollectionMenuWidth +.public SetMainTeamName +.public SetPortraitEmotion +.public SetPortraitLayout +.public SetPortraitOffset +.public SetRngSeed +.public SetSimpleMenuField0x1AC +.public SetTeamSetupHeroAndPartnerOnly +.public SetUnkAdvancedTextBoxFn +.public SetUnkAdvancedTextBoxWindowFn +.public ShowDialogueBox +.public ShowPortraitInPortraitBox +.public ShowStringIdInDialogueBox +.public ShowStringInDialogueBox +.public SortItemsInBag +.public SortItemsInStorage +.public StoreDefaultTeamData +.public StrcpySimple +.public StringFromId +.public StrncpyName +.public StrncpySimple +.public StrncpySimpleNoPadSafe +.public TEAM_MEMBER_TABLE_PTR +.public TryPointCameraToMonster +.public UpdateWindow +.public WriteItemsToSave +.public WriteMonsterInfoToSave .public _0209B08C .public _0209B09C .public _0209B0EC @@ -158,26 +395,7 @@ .public _0209CE78 .public _0209CE88 .public _0209CE89 -.public _0209CEAC -.public _0209CF0C -.public _0209CF28 -.public _0209CF48 -.public _0209CF64 -.public _0209CF84 -.public _0209DF70 -.public _0209DFA0 -.public _0209DFC8 -.public _0209DFE8 -.public _0209E008 -.public _0209E010 -.public _0209E011 -.public _0209E264 -.public _0209E3A1 -.public _0209E3A2 -.public _0209E3A3 -.public _0209E6BD .public _0209E912 -.public _020A192C .public _020A2808 .public _020A281C .public _020A2830 @@ -187,23 +405,6 @@ .public _020A2880 .public _020A2894 .public _020A28A8 -.public _020A28E0 -.public _020A2904 -.public _020A2928 -.public _020A294C -.public _020A2970 -.public _020A2994 -.public _020A29B8 -.public _020A29DC -.public _020A2A00 -.public _020A2A24 -.public _020A2A48 -.public _020A2A6C -.public _020A2A90 -.public _020A2AB4 -.public _020A2AD8 -.public _020A2AFC -.public _020A2B20 .public _020AFDB8 .public _020AFDBC .public _020AFDD0 @@ -264,221 +465,10 @@ .public _022AB0A1 .public _022AB0A2 .public _022AB0A9 -.public _022AB4F8 -.public _022AB510 -.public _022AB518 -.public _022AB5A8 -.public _022AB5AC -.public _022AB69C -.public _022AB924 .public _f2d .public _fsub .public _s32_div_f -.public AddItemToStorage -.public AddMoneyCarried -.public ADVENTURE_LOG_ENCOUNTERS_MONSTER_IDS -.public ADVENTURE_LOG_PTR -.public ApplyLevelUpBoostsToGroundMonster -.public ARM9_UNKNOWN_DATA__NA_209E6BC -.public ARM9_UNKNOWN_TABLE__NA_209E12C -.public ARM9_UNKNOWN_TABLE__NA_209E164 -.public ARM9_UNKNOWN_TABLE__NA_209E280 -.public Arm9LoadUnkFieldNa0x2029EC8 -.public Arm9StoreUnkFieldNa0x2029ED8 -.public BAG_ITEMS_PTR_MIRROR -.public CanMonsterUseMove -.public CardBackupError -.public CardPullOutWithStatus -.public CheckDebugMenuField0x1A4 -.public CheckOptionsMenuField0x1A4 -.public CheckParentMenuField0x1A0 -.public ClearWindow -.public CLIENT_LEVEL_TABLE -.public CloseAdvancedMenu -.public CloseAdvancedTextBox -.public CloseAdvancedTextBox2 -.public CloseCollectionMenu -.public CloseDebugMenu -.public CloseDialogueBox -.public CloseOptionsMenu -.public CloseParentMenu -.public ClosePortraitBox -.public CloseScrollBox -.public CloseSimpleMenu -.public CloseTeamSelectionMenu -.public CloseTextBox -.public CloseTextBox2 -.public ConvertStorageItemAtIdxToItem -.public Copy16BitsFrom -.public CopyNStringFromId -.public CountNbOfItemsInStorage -.public CountNbOfValidItemsInStorage -.public CountNbOfValidItemsInTimeDarknessInStorage -.public CreateAdvancedMenu -.public CreateAdvancedTextBox -.public CreateAdvancedTextBoxWithArg -.public CreateCollectionMenu -.public CreateDebugMenu -.public CreateDialogueBox -.public CreateOptionsMenu -.public CreateParentMenu -.public CreateParentMenuFromStringIds -.public CreatePortraitBox -.public CreateScrollBoxMulti -.public CreateScrollBoxSingle -.public CreateSimpleMenu -.public CreateSimpleMenuFromStringIds -.public CreateTeamSelectionMenu -.public CreateTextBox -.public CreateTextBoxWithArg -.public Debug_FatalError -.public Debug_GetDebugFlag -.public Debug_GetLogFlag -.public Debug_Print -.public Debug_Print0 -.public Debug_SetDebugFlag -.public Debug_SetLogFlag -.public DEBUG_SPECIAL_EPISODE_NUMBER -.public DEFAULT_HERO_ID -.public DisableIqSkill -.public DrawTextInWindow -.public DrawTileGrid -.public DUNGEON_DATA_LIST -.public DUNGEON_PTR -.public DungeonSwapIdToIdx -.public DungeonSwapIdxToId -.public EnableAllLearnableIqSkills -.public FemaleToMaleForm -.public FileClose -.public FileRom_HandleOpen -.public FileRom_HandleRead -.public FileRom_HandleSeek -.public FileRom_InitDataTransfer -.public FileRom_StopDataTransfer -.public FileRom_Veneer_FileInit -.public FORBIDDEN_FORGOT_MOVE_LIST -.public FormatMoveStringMore -.public GAME_MODE -.public GetActiveRosterIndex -.public GetActiveTeamMember -.public GetActualSellPrice -.public GetAdvancedMenuCurrentOption -.public GetAdvancedMenuResult -.public GetAdvancedTextBoxFlags2 -.public GetBaseFormCastformCherrimDeoxys -.public GetBodySize -.public GetCurrentBagCapacity -.public GetDexNumber -.public GetDexNumberVeneer -.public GetDungeonModeSpecial -.public GetDungeonResultString -.public GetEvolutionPossibilities -.public GetHeldButtons -.public GetHero -.public GetHeroMemberIdx -.public GetInfoGroundMoveset -.public GetIqSkillStringId -.public GetItemAtIdx -.public GetItemCategory -.public GetItemCategoryVeneer -.public GetItemMoveId16 -.public GetKeyM2NSwitch -.public GetLanguageType -.public GetLearnableIqSkills -.public GetMainCharacter1MemberIdx -.public GetMainCharacter2MemberIdx -.public GetMainCharacter3MemberIdx -.public GetMaxItemsAllowed -.public GetMaxMembersAllowed -.public GetMaxPp -.public GetMoneyCarried -.public GetMoneyStored -.public GetMonsterGenderVeneer -.public GetMonsterName -.public GetMoveRangeId -.public GetMoveType -.public GetNameRaw -.public GetNameString -.public GetNameWithGender -.public GetNbItemsInBag -.public GetNextIqSkill -.public GetOptionsMenuResult -.public GetOptionsMenuStates -.public GetPartner -.public GetPartnerMemberIdx -.public GetPartyMembers -.public GetPpIncrease -.public GetPressedButtons -.public GetRankUpEntry -.public GetReleasedStylus -.public GetRngSeed -.public GetSimpleMenuResult -.public GetSosMailCount -.public GetSpeciesString -.public GetStringFromFileVeneer -.public GetTeamMember -.public GetTime -.public GetType -.public GetWindow -.public GLOBAL_PROGRESS_PTR -.public GUEST_MONSTER_DATA -.public GuestMonsterToGroundMonster -.public HidePortraitBox -.public InitMove -.public InitPreprocessorArgs -.public IqSkillFlagTest -.public Is2TurnsMove -.public IsAdvancedMenuActive2 -.public IsAdvancedTextBoxActive -.public IsCollectionMenuActive -.public IsCollectionMenuState3 -.public IsDebugMenuActive -.public IsDeoxys -.public IsDialogueBoxActive -.public IsExclusiveItemIdForMonster -.public IsExperienceLocked -.public IsGummi -.public IsItemInTimeDarkness -.public IsItemValidVeneer -.public IsLevelResetDungeon -.public IsMainCharacter -.public IsMoneyAllowed -.public IsMonsterIllegalForMissions -.public IsMovesetValidInTimeDarkness -.public IsNot2TurnsMoveOrSketch -.public IsOptionsMenuActive -.public IsParentMenuActive -.public IsRealMove -.public IsRecruitingAllowed -.public IsScrollBoxActive -.public IsShaymin -.public IsShoppableItem -.public IsSimpleMenuActive -.public IsStorableItem -.public IsStorageFull -.public IsTeamSelectionMenuActive -.public IsTeamSelectionMenuState3 -.public IsThrownItem -.public IsTreasureBox -.public IsValidTeamMember -.public KAOMADO_FILEPATH -.public KAOMADO_STREAM -.public KEYBOARD_STRING_IDS -.public LAST_NEW_MOVE -.public LearnMoves -.public LoadOverlay -.public MemAlloc .public memcpy -.public MemcpySimple -.public MemFree -.public MemsetSimple -.public MemZero -.public MISSION_FLOOR_RANKS_PTRS -.public NormalizeTreasureBox -.public NOTIFY_NOTE -.public OS_GetLockID -.public OUTLAW_LEVEL_TABLE -.public OUTLAW_MINION_LEVEL_TABLE .public ov11_022E6E68 .public ov11_023061CC .public ov11_023061E4 @@ -494,76 +484,21 @@ .public ov29_022EA62C .public ov29_023002F0 .public ov29_02347100 -.public OverlayIsLoaded -.public PARTNER_TALK_KIND_TABLE -.public PENDING_DUNGEON_ID -.public PLAY_TIME_SECONDS -.public PlayAdvancedTextBoxInputSound -.public PlayBgmByIdVeneer -.public PlaySeVolumeWrapper -.public PORTRAIT_LAYOUTS -.public PreprocessString -.public PreprocessStringFromId -.public Rand32Bit -.public RandInt -.public RandIntSafe -.public ReadItemsFromSave -.public ReadMonsterInfoFromSave -.public ReadStringFromDialogueBox -.public RemoveEmptyItemsInBag -.public ResumeAdvancedMenu -.public SCRIPT_VARS -.public SCRIPT_VARS_LOCALS -.public SCRIPT_VARS_VALUES -.public SECONDARY_TERRAIN_TYPES -.public SetActiveInventory -.public SetActiveKecleonShop -.public SetActiveTeam -.public SetAdvancedTextBoxField0x1C2 -.public SetAdvancedTextBoxPartialMenu -.public SetAdvancedTextBoxState5 -.public SetBothScreensWindowsColor -.public SetCollectionMenuField0x1BC -.public SetCollectionMenuVoidFn -.public SetCollectionMenuWidth -.public SetMoneyCarried -.public SetMoneyStored -.public SetRngSeed -.public SetSimpleMenuField0x1AC -.public SetTeamSetupHeroAndPartnerOnly -.public SetUnkAdvancedTextBoxFn -.public SetUnkAdvancedTextBoxWindowFn -.public ShowDialogueBox -.public ShowPortraitInPortraitBox -.public ShowStringIdInDialogueBox -.public ShowStringInDialogueBox -.public SortItemsInBag -.public SortItemsInStorage -.public SPECIAL_EPISODE_MAIN_CHARACTERS .public sprintf -.public STATUSES_FULL_DESCRIPTION_STRING_IDS .public strcat .public strcpy -.public StrcpySimple -.public StringFromId .public strlen .public strncmp .public strncpy -.public StrncpyName -.public StrncpySimple -.public StrncpySimpleNoPad -.public StrncpySimpleNoPadSafe .public sub_02001808 .public sub_02002580 .public sub_020027F8 .public sub_02003B94 .public sub_02003BC8 -.public sub_02004F80 .public sub_020063F4 .public sub_02006498 .public sub_02006BFC .public sub_02006C8C -.public sub_0200C4CC .public sub_0200C5DC .public sub_0200CABC .public sub_0200CAD4 @@ -667,7 +602,21 @@ .public sub_020347F0 .public sub_02034840 .public sub_020348E4 -.public sub_020515C4 +.public sub_0204B028 +.public sub_0204C9F4 +.public sub_0204CDB8 +.public sub_0204DA1C +.public sub_0204E154 +.public sub_0204E19C +.public sub_0204E210 +.public sub_0204E3C8 +.public sub_0204F9B8 +.public sub_02050974 +.public sub_02050990 +.public sub_020509BC +.public sub_02050C10 +.public sub_02050CF8 +.public sub_02050D84 .public sub_02052C74 .public sub_02052CD8 .public sub_02052CE8 @@ -685,8 +634,6 @@ .public sub_02055B78 .public sub_02055D4C .public sub_02056228 -.public sub_0205633C -.public sub_02056360 .public sub_02056410 .public sub_02056460 .public sub_020564B0 @@ -705,20 +652,11 @@ .public sub_0205B0A0 .public sub_0205B0B8 .public sub_0205B478 -.public sub_0205B77C -.public sub_0205BB7C -.public sub_0205BD14 .public sub_0205BD9C .public sub_0205BFB0 -.public sub_0205C2A4 -.public sub_0205C548 .public sub_0205C75C -.public sub_0205EE40 -.public sub_0205F00C .public sub_0205FAB0 .public sub_0205FC20 -.public sub_0205FD88 -.public sub_0205FE80 .public sub_0206637C .public sub_02079094 .public sub_0207B9EC @@ -729,14 +667,4 @@ .public sub_02083B14 .public sub_02083B3C .public sub_02084304 -.public TEAM_MEMBER_TABLE_PTR -.public TEAM_NAME -.public TryPointCameraToMonster -.public UpdateWindow -.public VERSION_EXCLUSIVE_MONSTERS .public vsprintf -.public WONDER_MAIL_BITS_MAP -.public WONDER_MAIL_BITS_SWAP -.public WONDER_MAIL_ENCRYPTION_TABLE -.public WriteItemsToSave -.public WriteMonsterInfoToSave diff --git a/asm/include/main_0204B018.inc b/asm/include/main_0204B018.inc new file mode 100644 index 00000000..065e1a27 --- /dev/null +++ b/asm/include/main_0204B018.inc @@ -0,0 +1,146 @@ +#pragma once +.public ADVENTURE_LOG_ENCOUNTERS_MONSTER_IDS +.public ADVENTURE_LOG_PTR +.public ARM9_UNKNOWN_DATA__NA_209E6BC +.public ARM9_UNKNOWN_TABLE__NA_209E12C +.public ARM9_UNKNOWN_TABLE__NA_209E164 +.public ARM9_UNKNOWN_TABLE__NA_209E280 +.public AddMoneyCarried +.public ApplyLevelUpBoostsToGroundMonster +.public CLIENT_LEVEL_TABLE +.public Copy16BitsFrom +.public CopyNStringFromId +.public DEBUG_SPECIAL_EPISODE_NUMBER +.public DUNGEON_DATA_LIST +.public Debug_FatalError +.public Debug_Print +.public Debug_Print0 +.public DungeonSwapIdToIdx +.public DungeonSwapIdxToId +.public FemaleToMaleForm +.public FileClose +.public FileRom_HandleOpen +.public FileRom_HandleRead +.public FileRom_HandleSeek +.public FileRom_InitDataTransfer +.public FileRom_StopDataTransfer +.public FileRom_Veneer_FileInit +.public GAME_MODE +.public GLOBAL_PROGRESS_PTR +.public GUEST_MONSTER_DATA +.public GetBaseFormCastformCherrimDeoxys +.public GetBodySize +.public GetDexNumber +.public GetDexNumberVeneer +.public GetDungeonModeSpecial +.public GetGameMode +.public GetLanguageType +.public GetMaxItemsAllowed +.public GetMaxMembersAllowed +.public GetMoneyCarried +.public GetMoneyStored +.public GetNameString +.public GetNbItemsInBag +.public GetNotifyNote +.public GetPartyMembers +.public GetRankUpEntry +.public GetSosMailCount +.public GetStringFromFileVeneer +.public GuestMonsterToGroundMonster +.public IsItemValidVeneer +.public IsLevelResetDungeon +.public IsMoneyAllowed +.public IsRealMove +.public IsRecruitingAllowed +.public KAOMADO_FILEPATH +.public KAOMADO_STREAM +.public MISSION_FLOOR_RANKS_PTRS +.public MemAlloc +.public MemZero +.public MemcpySimple +.public NormalizeTreasureBox +.public OUTLAW_LEVEL_TABLE +.public OUTLAW_MINION_LEVEL_TABLE +.public PENDING_DUNGEON_ID +.public PLAY_TIME_SECONDS +.public PORTRAIT_LAYOUTS +.public RandInt +.public SCRIPT_VARS +.public SCRIPT_VARS_LOCALS +.public SCRIPT_VARS_VALUES +.public SECONDARY_TERRAIN_TYPES +.public SetMoneyCarried +.public SetMoneyStored +.public SetNotifyNote +.public StringFromId +.public StrncpyName +.public StrncpySimpleNoPad +.public StrncpySimpleNoPadSafe +.public TEAM_MEMBER_TABLE_PTR +.public TEAM_NAME +.public VERSION_EXCLUSIVE_MONSTERS +.public WONDER_MAIL_BITS_MAP +.public WONDER_MAIL_BITS_SWAP +.public WONDER_MAIL_ENCRYPTION_TABLE +.public _0209CEAC +.public _0209CF0C +.public _0209CF28 +.public _0209CF48 +.public _0209CF64 +.public _0209CF84 +.public _0209DF70 +.public _0209DFA0 +.public _0209DFC8 +.public _0209DFE8 +.public _0209E008 +.public _0209E010 +.public _0209E011 +.public _0209E264 +.public _0209E3A1 +.public _0209E3A2 +.public _0209E3A3 +.public _0209E6BD +.public _020A192C +.public _020A28E0 +.public _020A2904 +.public _020A2928 +.public _020A294C +.public _020A2970 +.public _020A2994 +.public _020A29B8 +.public _020A29DC +.public _020A2A00 +.public _020A2A24 +.public _020A2A48 +.public _020A2A6C +.public _020A2A90 +.public _020A2AB4 +.public _020A2AD8 +.public _020A2AFC +.public _020A2B20 +.public _022AB4F8 +.public _022AB510 +.public _022AB518 +.public _022AB5A8 +.public _022AB5AC +.public _022AB69C +.public _022AB924 +.public _s32_div_f +.public sub_02004F80 +.public sub_0200C4CC +.public sub_02048BFC +.public sub_02048CB8 +.public sub_0204ABB8 +.public sub_0204ACDC +.public sub_020515C4 +.public sub_0205633C +.public sub_02056360 +.public sub_0205B77C +.public sub_0205BB7C +.public sub_0205BD14 +.public sub_0205C2A4 +.public sub_0205C548 +.public sub_0205EE40 +.public sub_0205F00C +.public sub_0205FD88 +.public sub_0205FE80 diff --git a/asm/main_02034974.s b/asm/main_02034974.s index 7ab3ea0d..182a7d9f 100644 --- a/asm/main_02034974.s +++ b/asm/main_02034974.s @@ -28260,7858 +28260,3 @@ sub_0204AFD0: ; 0x0204AFD0 .align 2, 0 _0204AFF4: .word GAME_MODE arm_func_end sub_0204AFD0 - - arm_func_start sub_0204AFF8 -sub_0204AFF8: ; 0x0204AFF8 - ldr r0, _0204B014 ; =GAME_MODE - ldrb r0, [r0] - cmp r0, #4 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_0204B014: .word GAME_MODE - arm_func_end sub_0204AFF8 - - arm_func_start sub_0204B018 -sub_0204B018: ; 0x0204B018 - ldr r1, _0204B024 ; =GAME_MODE - strb r0, [r1] - bx lr - .align 2, 0 -_0204B024: .word GAME_MODE - arm_func_end sub_0204B018 - - arm_func_start sub_0204B028 -sub_0204B028: ; 0x0204B028 - ldr r1, _0204B040 ; =_0209DF70 - ldr ip, _0204B044 ; =Debug_Print0 - ldr r0, _0204B048 ; =_0209CF0C - ldrsh r1, [r1, #0x24] - mov r2, #0x400 - bx ip - .align 2, 0 -_0204B040: .word _0209DF70 -_0204B044: .word Debug_Print0 -_0204B048: .word _0209CF0C - arm_func_end sub_0204B028 - - arm_func_start InitScriptVariableValues -InitScriptVariableValues: ; 0x0204B04C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r1, #0 - ldr r0, _0204B2F8 ; =SCRIPT_VARS_VALUES - mov r7, r1 -_0204B05C: - strb r7, [r0, r1] - add r1, r1, #1 - cmp r1, #0x400 - blt _0204B05C - mov r4, #0 - ldr r6, _0204B2FC ; =SCRIPT_VARS - mov r5, r4 -_0204B078: - mov r0, r7, lsl #4 - ldrsh r0, [r6, r0] - add r8, r6, r7, lsl #4 - cmp r0, #0 - cmpne r0, #9 - beq _0204B0C4 - mov sb, r5 - b _0204B0B8 -_0204B098: - ldrsh r3, [r8, #0xa] - mov r0, r4 - mov r1, r7 - mov r2, sb - bl SaveScriptVariableValueAtIndex - add r0, sb, #1 - mov r0, r0, lsl #0x10 - mov sb, r0, lsr #0x10 -_0204B0B8: - ldrsh r0, [r8, #8] - cmp sb, r0 - blt _0204B098 -_0204B0C4: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - cmp r7, #0x72 - blt _0204B078 - mov r0, #0 - mov r2, r0 - mov r1, #0x46 - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #1 - bl ZinitScriptVariable - bl InitEventFlagScriptVars - mov sl, #0 -#ifdef JAPAN - mov sb, sl - mov r8, #0x21 - mov r7, #0x13c - mov r6, sl - mov r5, #0x22 - mov fp, sl - mvn r4, #0 -#else - ldr r7, _0204B300 ; =0x00000137 - mov sb, sl -#ifdef EUROPE - sub r4, r7, #0x144 -#else - sub r4, r7, #0x138 -#endif - mov r8, #0x21 - mov r6, sl - mov r5, #0x22 - mov fp, sl -#endif -_0204B118: - mov r2, sl, lsl #0x10 - mov r0, sb - mov r1, r8 - mov r2, r2, lsr #0x10 - mov r3, r7 - bl SaveScriptVariableValueAtIndex - mov r2, sl, lsl #0x10 - mov r0, r6 - mov r1, r5 - mov r2, r2, lsr #0x10 - mov r3, r6 - bl SaveScriptVariableValueAtIndex - mov r2, sl, lsl #0x10 - mov r0, fp - mov r1, #0x23 - mov r2, r2, lsr #0x10 -#ifdef JAPAN - mov r3, #0x13c -#else - mov r3, r7 -#endif - bl SaveScriptVariableValueAtIndex - mov r2, sl, lsl #0x10 - mov r0, #0 - mov r1, #0x24 - mov r2, r2, lsr #0x10 - mov r3, r4 - bl SaveScriptVariableValueAtIndex - mov r2, sl, lsl #0x10 - mov r0, #0 - mov r1, #0x25 - mov r2, r2, lsr #0x10 - mov r3, #0xbb - bl SaveScriptVariableValueAtIndex - mov r0, #0 - mov r2, sl, lsl #0x10 - mov r1, #0x2d - mov r2, r2, lsr #0x10 - mov r3, r0 - bl SaveScriptVariableValueAtIndex - mov r2, sl, lsl #0x10 - mov r0, #0 - mov r1, #0x2f - mov r2, r2, lsr #0x10 - mov r3, r4 - bl SaveScriptVariableValueAtIndex - mov r0, #0 - mov r2, sl, lsl #0x10 - mov r1, #0x31 - mov r2, r2, lsr #0x10 - mov r3, r0 - bl SaveScriptVariableValueAtIndex - mov r0, #0 - mov r2, sl, lsl #0x10 - mov r1, #0x32 - mov r2, r2, lsr #0x10 - mov r3, r0 - bl SaveScriptVariableValueAtIndex - mov r0, #0 - mov r2, sl, lsl #0x10 - mov r1, #0x37 - mov r2, r2, lsr #0x10 - mov r3, r0 - bl SaveScriptVariableValueAtIndex - mov r2, sl, lsl #0x10 - mov r0, #0 - mov r1, #0x38 - mov r2, r2, lsr #0x10 - mov r3, #2 - bl SaveScriptVariableValueAtIndex - mov r0, #0 - mov r2, sl, lsl #0x10 - mov r1, #0x39 - mov r2, r2, lsr #0x10 - mov r3, r0 - bl SaveScriptVariableValueAtIndex - add sl, sl, #1 - cmp sl, #4 - blt _0204B118 - mov r1, #0x26 - sub r2, r1, #0x27 - mov r0, #0 - bl SaveScriptVariableValue - mov r0, #0 - mov r2, r0 - mov r1, #0x33 - bl SaveScriptVariableValue - mov r0, #0 - mov r2, r0 - mov r1, #0x6e - bl SaveScriptVariableValue - mov r0, #0 - mov r2, r0 - mov r1, #0x3e - bl SaveScriptVariableValue - mov r0, #0 - mov r2, r0 - mov r1, #0x40 - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x42 - mov r2, #4 - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x43 - mov r2, #1 - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x4a - sub r2, r1, #0x4b - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x4b - bl ZinitScriptVariable - mov r0, #0 - mov r1, #0x4c - bl ZinitScriptVariable - mov r0, #0 - mov r1, #0x4d - bl ZinitScriptVariable - bl InitScenarioScriptVars - bl InitWorldMapScriptVars - bl InitDungeonListScriptVars - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0204B2F8: .word SCRIPT_VARS_VALUES -_0204B2FC: .word SCRIPT_VARS -#if defined(EUROPE) -_0204B300: .word 0x00000143 -#elif !defined(JAPAN) -_0204B300: .word 0x00000137 -#endif - arm_func_end InitScriptVariableValues - - arm_func_start InitEventFlagScriptVars -InitEventFlagScriptVars: ; 0x0204B304 - stmdb sp!, {r3, lr} -#ifdef JAPAN - mov r0, #0 - mov r1, #0x1c - mov r2, #0x13c -#else - ldr r2, _0204B3CC ; =0x00000137 - mov r0, #0 - mov r1, #0x1c -#endif - bl SaveScriptVariableValue - mov r0, #0 - mov r2, r0 - mov r1, #0x1d - bl SaveScriptVariableValue -#ifdef JAPAN - mov r0, #0 - mov r1, #0x1e - mov r2, #0x13c -#else - ldr r2, _0204B3CC ; =0x00000137 - mov r0, #0 - mov r1, #0x1e -#endif - bl SaveScriptVariableValue - mov r1, #0x1f - sub r2, r1, #0x20 - mov r0, #0 - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x20 - mov r2, #0xbb - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x27 - mov r2, r0 - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x29 - sub r2, r1, #0x2a - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x2b - mov r2, r0 - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x2c - mov r2, r0 - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x34 - mov r2, r0 - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x35 - mov r2, #2 - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x36 - mov r2, r0 - bl SaveScriptVariableValue - ldmia sp!, {r3, pc} - .align 2, 0 -#if defined(EUROPE) -_0204B3CC: .word 0x00000143 -#elif !defined(JAPAN) -_0204B3CC: .word 0x00000137 -#endif - arm_func_end InitEventFlagScriptVars - - arm_func_start sub_0204B3D0 -sub_0204B3D0: ; 0x0204B3D0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r1 - cmp r4, #0x400 - mov r5, r0 - ldrlt r0, _0204B42C ; =SCRIPT_VARS - ldrge r1, _0204B430 ; =SCRIPT_VARS_LOCALS - addlt r7, r0, r4, lsl #4 - subge r0, r4, #0x400 - addge r7, r1, r0, lsl #4 - mov r6, #0 - b _0204B41C -_0204B3FC: - ldrsh r3, [r7, #0xa] - mov r0, r5 - mov r1, r4 - mov r2, r6 - bl SaveScriptVariableValueAtIndex - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 -_0204B41C: - ldrsh r0, [r7, #8] - cmp r6, r0 - blt _0204B3FC - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0204B42C: .word SCRIPT_VARS -_0204B430: .word SCRIPT_VARS_LOCALS - arm_func_end sub_0204B3D0 - - arm_func_start ZinitScriptVariable -ZinitScriptVariable: ; 0x0204B434 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r5, r1 - cmp r5, #0x400 - mov r6, r0 - ldrlt r0, _0204B494 ; =SCRIPT_VARS - mov r8, #0 - addlt r4, r0, r5, lsl #4 - ldrge r1, _0204B498 ; =SCRIPT_VARS_LOCALS - subge r0, r5, #0x400 - addge r4, r1, r0, lsl #4 - mov r7, r8 - b _0204B484 -_0204B464: - mov r0, r6 - mov r1, r5 - mov r2, r8 - mov r3, r7 - bl SaveScriptVariableValueAtIndex - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, lsr #0x10 -_0204B484: - ldrsh r0, [r4, #8] - cmp r8, r0 - blt _0204B464 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0204B494: .word SCRIPT_VARS -_0204B498: .word SCRIPT_VARS_LOCALS - arm_func_end ZinitScriptVariable - - arm_func_start LoadScriptVariableRaw -LoadScriptVariableRaw: ; 0x0204B49C - cmp r2, #0x400 - bge _0204B4C0 - ldr r1, _0204B4E0 ; =SCRIPT_VARS - ldr r3, _0204B4E4 ; =SCRIPT_VARS_VALUES - add r1, r1, r2, lsl #4 - str r1, [r0] - ldrsh r1, [r1, #4] - add r1, r3, r1 - b _0204B4D8 -_0204B4C0: - ldr r3, _0204B4E8 ; =SCRIPT_VARS_LOCALS - sub r2, r2, #0x400 - add r2, r3, r2, lsl #4 - str r2, [r0] - ldrsh r2, [r2, #4] - add r1, r1, r2, lsl #2 -_0204B4D8: - str r1, [r0, #4] - bx lr - .align 2, 0 -_0204B4E0: .word SCRIPT_VARS -_0204B4E4: .word SCRIPT_VARS_VALUES -_0204B4E8: .word SCRIPT_VARS_LOCALS - arm_func_end LoadScriptVariableRaw - - arm_func_start LoadScriptVariableValue -LoadScriptVariableValue: ; 0x0204B4EC - stmdb sp!, {r4, lr} - sub sp, sp, #8 - mov r2, r0 - mov r4, r1 - mov r1, r2 - add r0, sp, #0 - mov r2, r4 - bl LoadScriptVariableRaw - ldr r1, [sp] - ldrsh r0, [r1] - cmp r0, #9 - addls pc, pc, r0, lsl #2 - b _0204B66C -_0204B520: ; jump table - b _0204B66C ; case 0 - b _0204B548 ; case 1 - b _0204B56C ; case 2 - b _0204B56C ; case 3 - b _0204B578 ; case 4 - b _0204B584 ; case 5 - b _0204B590 ; case 6 - b _0204B59C ; case 7 - b _0204B59C ; case 8 - b _0204B5A8 ; case 9 -_0204B548: - ldrsh r1, [r1, #6] - ldr r2, [sp, #4] - mov r0, #1 - mov r1, r0, lsl r1 - ldrb r2, [r2] - and r1, r1, #0xff - tst r2, r1 - moveq r0, #0 - b _0204B670 -_0204B56C: - ldr r0, [sp, #4] - ldrb r0, [r0] - b _0204B670 -_0204B578: - ldr r0, [sp, #4] - ldrsb r0, [r0] - b _0204B670 -_0204B584: - ldr r0, [sp, #4] - ldrh r0, [r0] - b _0204B670 -_0204B590: - ldr r0, [sp, #4] - ldrsh r0, [r0] - b _0204B670 -_0204B59C: - ldr r0, [sp, #4] - ldr r0, [r0] - b _0204B670 -_0204B5A8: - cmp r4, #0x48 - bgt _0204B5E4 - bge _0204B62C - cmp r4, #0x3d - bgt _0204B5D8 - subs r0, r4, #0x3a - addpl pc, pc, r0, lsl #2 - b _0204B66C -_0204B5C8: ; jump table - b _0204B600 ; case 0 - b _0204B608 ; case 1 - b _0204B614 ; case 2 - b _0204B61C ; case 3 -_0204B5D8: - cmp r4, #0x47 - beq _0204B624 - b _0204B66C -_0204B5E4: - cmp r4, #0x49 - bgt _0204B5F4 - beq _0204B634 - b _0204B66C -_0204B5F4: - cmp r4, #0x70 - beq _0204B664 - b _0204B66C -_0204B600: - mov r0, #1 - b _0204B670 -_0204B608: - mov r0, #0 - bl GetPartyMembers - b _0204B670 -_0204B614: - bl GetMoneyCarried - b _0204B670 -_0204B61C: - bl GetMoneyStored - b _0204B670 -_0204B624: - bl GetLanguageType - b _0204B670 -_0204B62C: - bl GetGameMode - b _0204B670 -_0204B634: - bl GetGameMode - cmp r0, #1 - beq _0204B64C - cmp r0, #3 - beq _0204B654 - b _0204B65C -_0204B64C: - bl sub_0204C918 - b _0204B670 -_0204B654: - bl GetSpecialEpisodeType - b _0204B670 -_0204B65C: - mvn r0, #0 - b _0204B670 -_0204B664: - bl GetNotifyNote - b _0204B670 -_0204B66C: - mov r0, #0 -_0204B670: - add sp, sp, #8 - ldmia sp!, {r4, pc} - arm_func_end LoadScriptVariableValue - - arm_func_start LoadScriptVariableValueAtIndex -LoadScriptVariableValueAtIndex: ; 0x0204B678 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r3, r0 - mov r5, r1 - mov r4, r2 - add r0, sp, #0 - mov r1, r3 - mov r2, r5 - bl LoadScriptVariableRaw - ldr r1, [sp] - ldrsh r0, [r1] - cmp r0, #9 - addls pc, pc, r0, lsl #2 - b _0204B814 -_0204B6B0: ; jump table - b _0204B814 ; case 0 - b _0204B6D8 ; case 1 - b _0204B70C ; case 2 - b _0204B70C ; case 3 - b _0204B718 ; case 4 - b _0204B724 ; case 5 - b _0204B734 ; case 6 - b _0204B744 ; case 7 - b _0204B744 ; case 8 - b _0204B750 ; case 9 -_0204B6D8: - ldrsh r1, [r1, #6] - ldr r2, [sp, #4] - mov r0, #1 - add r1, r4, r1 - mov r1, r1, lsl #0x10 - mov r3, r1, lsr #0x10 - and r1, r3, #7 - mov r1, r0, lsl r1 - ldrb r2, [r2, r3, lsr #3] - and r1, r1, #0xff - tst r2, r1 - moveq r0, #0 - b _0204B818 -_0204B70C: - ldr r0, [sp, #4] - ldrb r0, [r0, r4] - b _0204B818 -_0204B718: - ldr r0, [sp, #4] - ldrsb r0, [r0, r4] - b _0204B818 -_0204B724: - ldr r1, [sp, #4] - mov r0, r4, lsl #1 - ldrh r0, [r1, r0] - b _0204B818 -_0204B734: - ldr r1, [sp, #4] - mov r0, r4, lsl #1 - ldrsh r0, [r1, r0] - b _0204B818 -_0204B744: - ldr r0, [sp, #4] - ldr r0, [r0, r4, lsl #2] - b _0204B818 -_0204B750: - cmp r5, #0x48 - bgt _0204B78C - bge _0204B7D4 - cmp r5, #0x3d - bgt _0204B780 - subs r0, r5, #0x3a - addpl pc, pc, r0, lsl #2 - b _0204B814 -_0204B770: ; jump table - b _0204B7A8 ; case 0 - b _0204B7B0 ; case 1 - b _0204B7BC ; case 2 - b _0204B7C4 ; case 3 -_0204B780: - cmp r5, #0x47 - beq _0204B7CC - b _0204B814 -_0204B78C: - cmp r5, #0x49 - bgt _0204B79C - beq _0204B7DC - b _0204B814 -_0204B79C: - cmp r5, #0x70 - beq _0204B80C - b _0204B814 -_0204B7A8: - mov r0, #1 - b _0204B818 -_0204B7B0: - mov r0, #0 - bl GetPartyMembers - b _0204B818 -_0204B7BC: - bl GetMoneyCarried - b _0204B818 -_0204B7C4: - bl GetMoneyStored - b _0204B818 -_0204B7CC: - bl GetLanguageType - b _0204B818 -_0204B7D4: - bl GetGameMode - b _0204B818 -_0204B7DC: - bl GetGameMode - cmp r0, #1 - beq _0204B7F4 - cmp r0, #3 - beq _0204B7FC - b _0204B804 -_0204B7F4: - bl sub_0204C918 - b _0204B818 -_0204B7FC: - bl GetSpecialEpisodeType - b _0204B818 -_0204B804: - mvn r0, #0 - b _0204B818 -_0204B80C: - bl GetNotifyNote - b _0204B818 -_0204B814: - mov r0, #0 -_0204B818: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end LoadScriptVariableValueAtIndex - - arm_func_start SaveScriptVariableValue -SaveScriptVariableValue: ; 0x0204B820 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r3, r0 - mov r5, r1 - mov r4, r2 - add r0, sp, #0 - mov r1, r3 - mov r2, r5 - bl LoadScriptVariableRaw - ldr r1, [sp] - ldrsh r0, [r1] - cmp r0, #9 - addls pc, pc, r0, lsl #2 - b _0204B980 -_0204B858: ; jump table - b _0204B980 ; case 0 - b _0204B880 ; case 1 - b _0204B8C0 ; case 2 - b _0204B8C0 ; case 3 - b _0204B8CC ; case 4 - b _0204B8D8 ; case 5 - b _0204B8E4 ; case 6 - b _0204B8F0 ; case 7 - b _0204B8F0 ; case 8 - b _0204B8FC ; case 9 -_0204B880: - ldrsh r0, [r1, #6] - mov r1, #1 - cmp r4, #0 - mov r0, r1, lsl r0 - ldrne r1, [sp, #4] - and r2, r0, #0xff - ldrneb r0, [r1] - orrne r0, r0, r2 - strneb r0, [r1] - bne _0204B980 - ldr r1, [sp, #4] - ldrb r0, [r1] - orr r0, r0, r2 - eor r0, r2, r0 - strb r0, [r1] - b _0204B980 -_0204B8C0: - ldr r0, [sp, #4] - strb r4, [r0] - b _0204B980 -_0204B8CC: - ldr r0, [sp, #4] - strb r4, [r0] - b _0204B980 -_0204B8D8: - ldr r0, [sp, #4] - strh r4, [r0] - b _0204B980 -_0204B8E4: - ldr r0, [sp, #4] - strh r4, [r0] - b _0204B980 -_0204B8F0: - ldr r0, [sp, #4] - str r4, [r0] - b _0204B980 -_0204B8FC: - cmp r5, #0x49 - bgt _0204B928 - bge _0204B954 - cmp r5, #0x3d - bgt _0204B980 - cmp r5, #0x3c - blt _0204B980 - beq _0204B934 - cmp r5, #0x3d - beq _0204B948 - b _0204B980 -_0204B928: - cmp r5, #0x70 - beq _0204B96C - b _0204B980 -_0204B934: - mov r0, r4 - bl SetMoneyCarried - mov r0, #0 - bl AddMoneyCarried - b _0204B980 -_0204B948: - mov r0, r4 - bl SetMoneyStored - b _0204B980 -_0204B954: - bl GetGameMode - cmp r0, #1 - bne _0204B980 - mov r0, r4 - bl sub_0204C928 - b _0204B980 -_0204B96C: - cmp r4, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bl SetNotifyNote -_0204B980: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end SaveScriptVariableValue - - arm_func_start SaveScriptVariableValueAtIndex -SaveScriptVariableValueAtIndex: ; 0x0204B988 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r4, r0 - mov r6, r1 - mov r5, r2 - mov r1, r4 - add r0, sp, #0 - mov r2, r6 - mov r4, r3 - bl LoadScriptVariableRaw - ldr r1, [sp] - ldrsh r0, [r1] - cmp r0, #9 - addls pc, pc, r0, lsl #2 - b _0204BAF8 -_0204B9C4: ; jump table - b _0204BAF8 ; case 0 - b _0204B9EC ; case 1 - b _0204BA30 ; case 2 - b _0204BA30 ; case 3 - b _0204BA3C ; case 4 - b _0204BA48 ; case 5 - b _0204BA58 ; case 6 - b _0204BA68 ; case 7 - b _0204BA68 ; case 8 - b _0204BA74 ; case 9 -_0204B9EC: - ldrsh r0, [r1, #6] - mov r1, #1 - ldr r2, [sp, #4] - add r0, r5, r0 - mov r0, r0, lsl #0x10 - mov r3, r0, lsr #0x10 - and r0, r3, #7 - mov r0, r1, lsl r0 - and r1, r0, #0xff - ldrb r0, [r2, r3, lsr #3] - cmp r4, #0 - orrne r0, r0, r1 - strneb r0, [r2, r3, lsr #3] - orreq r0, r0, r1 - eoreq r0, r1, r0 - streqb r0, [r2, r3, lsr #3] - b _0204BAF8 -_0204BA30: - ldr r0, [sp, #4] - strb r4, [r0, r5] - b _0204BAF8 -_0204BA3C: - ldr r0, [sp, #4] - strb r4, [r0, r5] - b _0204BAF8 -_0204BA48: - ldr r1, [sp, #4] - mov r0, r5, lsl #1 - strh r4, [r1, r0] - b _0204BAF8 -_0204BA58: - ldr r1, [sp, #4] - mov r0, r5, lsl #1 - strh r4, [r1, r0] - b _0204BAF8 -_0204BA68: - ldr r0, [sp, #4] - str r4, [r0, r5, lsl #2] - b _0204BAF8 -_0204BA74: - cmp r6, #0x49 - bgt _0204BAA0 - bge _0204BACC - cmp r6, #0x3d - bgt _0204BAF8 - cmp r6, #0x3c - blt _0204BAF8 - beq _0204BAAC - cmp r6, #0x3d - beq _0204BAC0 - b _0204BAF8 -_0204BAA0: - cmp r6, #0x70 - beq _0204BAE4 - b _0204BAF8 -_0204BAAC: - mov r0, r4 - bl SetMoneyCarried - mov r0, #0 - bl AddMoneyCarried - b _0204BAF8 -_0204BAC0: - mov r0, r4 - bl SetMoneyStored - b _0204BAF8 -_0204BACC: - bl GetGameMode - cmp r0, #1 - bne _0204BAF8 - mov r0, r4 - bl sub_0204C928 - b _0204BAF8 -_0204BAE4: - cmp r4, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bl SetNotifyNote -_0204BAF8: - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end SaveScriptVariableValueAtIndex - - arm_func_start LoadScriptVariableValueSum -LoadScriptVariableValueSum: ; 0x0204BB00 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - mov r6, r1 - mov r4, #0 - mov r7, r0 - add r0, sp, #0 - mov r1, r4 - mov r2, r6 - bl LoadScriptVariableRaw - mov r5, r4 - b _0204BB48 -_0204BB2C: - mov r2, r5, lsl #0x10 - mov r0, r7 - mov r1, r6 - mov r2, r2, lsr #0x10 - bl LoadScriptVariableValueAtIndex - add r4, r4, r0 - add r5, r5, #1 -_0204BB48: - ldr r0, [sp] - ldrsh r0, [r0, #8] - cmp r5, r0 - blt _0204BB2C - mov r0, r4 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end LoadScriptVariableValueSum - - arm_func_start LoadScriptVariableValueBytes -LoadScriptVariableValueBytes: ; 0x0204BB64 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r3, r0 - mov r5, r1 - mov r4, r2 - add r0, sp, #0 - mov r2, r3 - mov r1, #0 - bl LoadScriptVariableRaw - ldr r2, [sp, #4] - mov r1, #0 - b _0204BBA0 -_0204BB94: - ldrb r0, [r2], #1 - add r1, r1, #1 - strb r0, [r5], #1 -_0204BBA0: - cmp r1, r4 - blt _0204BB94 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end LoadScriptVariableValueBytes - - arm_func_start sub_0204BBB0 -sub_0204BBB0: ; 0x0204BBB0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - mov r4, r2 - bl LoadScriptVariableValueBytes - mov r0, #0 - strb r0, [r5, r4] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_0204BBB0 - - arm_func_start SaveScriptVariableValueBytes -SaveScriptVariableValueBytes: ; 0x0204BBCC - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r3, r0 - mov r5, r1 - mov r4, r2 - add r0, sp, #0 - mov r2, r3 - mov r1, #0 - bl LoadScriptVariableRaw - ldr r2, [sp, #4] - mov r1, #0 - b _0204BC08 -_0204BBFC: - ldrb r0, [r5], #1 - add r1, r1, #1 - strb r0, [r2], #1 -_0204BC08: - cmp r1, r4 - blt _0204BBFC - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end SaveScriptVariableValueBytes - - arm_func_start ScriptVariablesEqual -ScriptVariablesEqual: ; 0x0204BC18 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x10 - mov r8, r0 - mov r7, r1 - mov r6, r2 - add r0, sp, #8 - mov r1, r8 - mov r2, r7 - bl LoadScriptVariableRaw - add r0, sp, #0 - mov r1, r8 - mov r2, r6 - bl LoadScriptVariableRaw - ldr r0, [sp, #8] - mov r5, #0 - ldrsh r4, [r0, #8] - b _0204BC98 -_0204BC5C: - mov r2, r5, lsl #0x10 - mov r0, r8 - mov r1, r7 - mov r2, r2, lsr #0x10 - bl LoadScriptVariableValueAtIndex - mov r2, r5, lsl #0x10 - mov sb, r0 - mov r0, r8 - mov r1, r6 - mov r2, r2, lsr #0x10 - bl LoadScriptVariableValueAtIndex - cmp sb, r0 - movne r0, #0 - bne _0204BCA4 - add r5, r5, #1 -_0204BC98: - cmp r5, r4 - blt _0204BC5C - mov r0, #1 -_0204BCA4: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ScriptVariablesEqual - - arm_func_start sub_0204BCAC -sub_0204BCAC: ; 0x0204BCAC - stmdb sp!, {r3, lr} - sub sp, sp, #8 - cmp r2, #0xb - addls pc, pc, r2, lsl #2 - b _0204BD68 -_0204BCC0: ; jump table - b _0204BCF0 ; case 0 - b _0204BCF8 ; case 1 - b _0204BD00 ; case 2 - b _0204BD08 ; case 3 - b _0204BD14 ; case 4 - b _0204BD1C ; case 5 - b _0204BD28 ; case 6 - b _0204BD30 ; case 7 - b _0204BD38 ; case 8 - b _0204BD40 ; case 9 - b _0204BD4C ; case 10 - b _0204BD5C ; case 11 -_0204BCF0: - mov r0, r1 - b _0204BD88 -_0204BCF8: - sub r0, r0, r1 - b _0204BD88 -_0204BD00: - add r0, r0, r1 - b _0204BD88 -_0204BD08: - mul r1, r0, r1 - mov r0, r1 - b _0204BD88 -_0204BD14: - bl _s32_div_f - b _0204BD88 -_0204BD1C: - bl _s32_div_f - mov r0, r1 - b _0204BD88 -_0204BD28: - and r0, r0, r1 - b _0204BD88 -_0204BD30: - orr r0, r0, r1 - b _0204BD88 -_0204BD38: - eor r0, r0, r1 - b _0204BD88 -_0204BD40: - mov r2, #1 - orr r0, r0, r2, lsl r1 - b _0204BD88 -_0204BD4C: - mov r2, #1 - mvn r1, r2, lsl r1 - and r0, r0, r1 - b _0204BD88 -_0204BD5C: - mov r0, r1 - bl RandInt - b _0204BD88 -_0204BD68: - ldr r1, _0204BD90 ; =_0209CEAC - add r0, sp, #0 - ldr r3, [r1, #4] - ldr ip, [r1] - ldr r1, _0204BD94 ; =_0209CF28 - str ip, [sp] - str r3, [sp, #4] - bl Debug_FatalError -_0204BD88: - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_0204BD90: .word _0209CEAC -_0204BD94: .word _0209CF28 - arm_func_end sub_0204BCAC - - arm_func_start sub_0204BD98 -sub_0204BD98: ; 0x0204BD98 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - cmp r2, #0xa - addls pc, pc, r2, lsl #2 - b _0204BE9C -_0204BDAC: ; jump table - b _0204BDD8 ; case 0 - b _0204BDE0 ; case 1 - b _0204BDE8 ; case 2 - b _0204BE10 ; case 3 - b _0204BE38 ; case 4 - b _0204BE24 ; case 5 - b _0204BE4C ; case 6 - b _0204BDFC ; case 7 - b _0204BE60 ; case 8 - b _0204BE74 ; case 9 - b _0204BE88 ; case 10 -_0204BDD8: - mov r0, #1 - b _0204BEBC -_0204BDE0: - mov r0, #0 - b _0204BEBC -_0204BDE8: - cmp r0, r1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - b _0204BEBC -_0204BDFC: - cmp r0, r1 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - b _0204BEBC -_0204BE10: - cmp r0, r1 - movgt r0, #1 - movle r0, #0 - and r0, r0, #0xff - b _0204BEBC -_0204BE24: - cmp r0, r1 - movge r0, #1 - movlt r0, #0 - and r0, r0, #0xff - b _0204BEBC -_0204BE38: - cmp r0, r1 - movlt r0, #1 - movge r0, #0 - and r0, r0, #0xff - b _0204BEBC -_0204BE4C: - cmp r0, r1 - movle r0, #1 - movgt r0, #0 - and r0, r0, #0xff - b _0204BEBC -_0204BE60: - tst r0, r1 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - b _0204BEBC -_0204BE74: - teq r0, r1 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - b _0204BEBC -_0204BE88: - mov r2, #1 - tst r0, r2, lsl r1 - moveq r2, #0 - and r0, r2, #0xff - b _0204BEBC -_0204BE9C: - ldr r1, _0204BEC4 ; =_0209CEAC - add r0, sp, #0 - ldr r3, [r1, #0xc] - ldr ip, [r1, #8] - ldr r1, _0204BEC8 ; =_0209CF48 - str ip, [sp] - str r3, [sp, #4] - bl Debug_FatalError -_0204BEBC: - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_0204BEC4: .word _0209CEAC -_0204BEC8: .word _0209CF48 - arm_func_end sub_0204BD98 - - arm_func_start sub_0204BECC -sub_0204BECC: ; 0x0204BECC - ldr ip, _0204BED4 ; =sub_0204BCAC - bx ip - .align 2, 0 -_0204BED4: .word sub_0204BCAC - arm_func_end sub_0204BECC - - arm_func_start sub_0204BED8 -sub_0204BED8: ; 0x0204BED8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r2 - mov r4, r3 - mov r7, r0 - mov r6, r1 - bl LoadScriptVariableValue - mov r1, r5 - mov r2, r4 - bl sub_0204BCAC - mov r2, r0 - mov r0, r7 - mov r1, r6 - bl SaveScriptVariableValue - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_0204BED8 - - arm_func_start sub_0204BF10 -sub_0204BF10: ; 0x0204BF10 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - mov r6, r2 - mov r7, r1 - mov r5, r3 - bl LoadScriptVariableValue - mov r4, r0 - mov r0, r8 - mov r1, r6 - bl LoadScriptVariableValue - mov r1, r0 - mov r0, r4 - mov r2, r5 - bl sub_0204BCAC - mov r2, r0 - mov r0, r8 - mov r1, r7 - bl SaveScriptVariableValue - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end sub_0204BF10 - - arm_func_start sub_0204BF5C -sub_0204BF5C: ; 0x0204BF5C - ldr ip, _0204BF64 ; =sub_0204BD98 - bx ip - .align 2, 0 -_0204BF64: .word sub_0204BD98 - arm_func_end sub_0204BF5C - - arm_func_start sub_0204BF68 -sub_0204BF68: ; 0x0204BF68 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r2 - mov r4, r3 - bl LoadScriptVariableValue - mov r1, r5 - mov r2, r4 - bl sub_0204BD98 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_0204BF68 - - arm_func_start sub_0204BF88 -sub_0204BF88: ; 0x0204BF88 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r2 - mov r5, r3 - bl LoadScriptVariableValue - mov r4, r0 - mov r0, r7 - mov r1, r6 - bl LoadScriptVariableValue - mov r1, r0 - mov r0, r4 - mov r2, r5 - bl sub_0204BD98 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_0204BF88 - - arm_func_start EventFlagResume -EventFlagResume: ; 0x0204BFC0 - stmdb sp!, {r4, lr} - bl GetGameMode - cmp r0, #1 - ldmlsia sp!, {r4, pc} - sub r4, r0, #2 - ldr r0, _0204C1E0 ; =_0209CF64 - mov r1, r4 - bl Debug_Print0 - mov r0, r4, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, #0 - mov r1, #0x21 - bl LoadScriptVariableValueAtIndex - mov r2, r0 - mov r0, #0 - mov r1, #0x1c - bl SaveScriptVariableValue - mov r0, r4, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, #0 - mov r1, #0x22 - bl LoadScriptVariableValueAtIndex - mov r2, r0 - mov r0, #0 - mov r1, #0x1d - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x23 - mov r2, r4, lsl #0x10 - mov r2, r2, lsr #0x10 - bl LoadScriptVariableValueAtIndex - mov r2, r0 - mov r0, #0 - mov r1, #0x1e - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x24 - mov r2, r4, lsl #0x10 - mov r2, r2, lsr #0x10 - bl LoadScriptVariableValueAtIndex - mov r2, r0 - mov r0, #0 - mov r1, #0x1f - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x25 - mov r2, r4, lsl #0x10 - mov r2, r2, lsr #0x10 - bl LoadScriptVariableValueAtIndex - mov r2, r0 - mov r0, #0 - mov r1, #0x20 - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x2d - mov r2, r4, lsl #0x10 - mov r2, r2, lsr #0x10 - bl LoadScriptVariableValueAtIndex - mov r2, r0 - mov r0, #0 - mov r1, #0x27 - bl SaveScriptVariableValue - mov r0, r4, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, #0 - mov r1, #0x2e - bl LoadScriptVariableValueAtIndex - mov r2, r0 - mov r0, #0 - mov r1, #0x28 - bl SaveScriptVariableValue - mov r0, r4, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, #0 - mov r1, #0x2f - bl LoadScriptVariableValueAtIndex - mov r2, r0 - mov r0, #0 - mov r1, #0x29 - bl SaveScriptVariableValue - mov r0, r4, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, #0 - mov r1, #0x30 - bl LoadScriptVariableValueAtIndex - mov r2, r0 - mov r0, #0 - mov r1, #0x2a - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x31 - mov r2, r4, lsl #0x10 - mov r2, r2, lsr #0x10 - bl LoadScriptVariableValueAtIndex - mov r2, r0 - mov r0, #0 - mov r1, #0x2b - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x32 - mov r2, r4, lsl #0x10 - mov r2, r2, lsr #0x10 - bl LoadScriptVariableValueAtIndex - mov r2, r0 - mov r0, #0 - mov r1, #0x2c - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x37 - mov r2, r4, lsl #0x10 - mov r2, r2, lsr #0x10 - bl LoadScriptVariableValueAtIndex - mov r2, r0 - mov r0, #0 - mov r1, #0x34 - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x38 - mov r2, r4, lsl #0x10 - mov r2, r2, lsr #0x10 - bl LoadScriptVariableValueAtIndex - mov r2, r0 - mov r0, #0 - mov r1, #0x35 - bl SaveScriptVariableValue - mov r0, r4, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, #0 - mov r1, #0x39 - bl LoadScriptVariableValueAtIndex - mov r2, r0 - mov r0, #0 - mov r1, #0x36 - bl SaveScriptVariableValue - bl sub_0204CBE8 - ldmia sp!, {r4, pc} - .align 2, 0 -_0204C1E0: .word _0209CF64 - arm_func_end EventFlagResume - - arm_func_start EventFlagBackup -EventFlagBackup: ; 0x0204C1E4 - stmdb sp!, {r4, lr} - bl GetGameMode - cmp r0, #1 - ldmlsia sp!, {r4, pc} - sub r4, r0, #2 - ldr r0, _0204C404 ; =_0209CF84 - mov r1, r4 - bl Debug_Print0 - mov r0, #0 - mov r1, #0x1c - bl LoadScriptVariableValue - mov r1, r4, lsl #0x10 - mov r3, r0 - mov r2, r1, lsr #0x10 - mov r0, #0 - mov r1, #0x21 - bl SaveScriptVariableValueAtIndex - mov r0, #0 - mov r1, #0x1d - bl LoadScriptVariableValue - mov r3, r0 - mov r0, #0 - mov r1, #0x22 - mov r2, r4, lsl #0x10 - mov r2, r2, lsr #0x10 - bl SaveScriptVariableValueAtIndex - mov r0, #0 - mov r1, #0x1e - bl LoadScriptVariableValue - mov r3, r0 - mov r0, #0 - mov r1, #0x23 - mov r2, r4, lsl #0x10 - mov r2, r2, lsr #0x10 - bl SaveScriptVariableValueAtIndex - mov r0, #0 - mov r1, #0x1f - bl LoadScriptVariableValue - mov r3, r0 - mov r0, #0 - mov r1, #0x24 - mov r2, r4, lsl #0x10 - mov r2, r2, lsr #0x10 - bl SaveScriptVariableValueAtIndex - mov r0, #0 - mov r1, #0x20 - bl LoadScriptVariableValue - mov r3, r0 - mov r0, #0 - mov r1, #0x25 - mov r2, r4, lsl #0x10 - mov r2, r2, lsr #0x10 - bl SaveScriptVariableValueAtIndex - mov r0, #0 - mov r1, #0x27 - bl LoadScriptVariableValue - mov r3, r0 - mov r0, #0 - mov r1, #0x2d - mov r2, r4, lsl #0x10 - mov r2, r2, lsr #0x10 - bl SaveScriptVariableValueAtIndex - mov r0, #0 - mov r1, #0x28 - bl LoadScriptVariableValue - mov r1, r4, lsl #0x10 - mov r3, r0 - mov r2, r1, lsr #0x10 - mov r0, #0 - mov r1, #0x2e - bl SaveScriptVariableValueAtIndex - mov r0, #0 - mov r1, #0x29 - bl LoadScriptVariableValue - mov r1, r4, lsl #0x10 - mov r2, r1, lsr #0x10 - mov r3, r0 - mov r0, #0 - mov r1, #0x2f - bl SaveScriptVariableValueAtIndex - mov r0, #0 - mov r1, #0x2a - bl LoadScriptVariableValue - mov r3, r0 - mov r0, #0 - mov r1, #0x30 - mov r2, r4, lsl #0x10 - mov r2, r2, lsr #0x10 - bl SaveScriptVariableValueAtIndex - mov r0, #0 - mov r1, #0x2b - bl LoadScriptVariableValue - mov r3, r0 - mov r0, #0 - mov r1, #0x31 - mov r2, r4, lsl #0x10 - mov r2, r2, lsr #0x10 - bl SaveScriptVariableValueAtIndex - mov r0, #0 - mov r1, #0x2c - bl LoadScriptVariableValue - mov r3, r0 - mov r0, #0 - mov r1, #0x32 - mov r2, r4, lsl #0x10 - mov r2, r2, lsr #0x10 - bl SaveScriptVariableValueAtIndex - mov r0, #0 - mov r1, #0x34 - bl LoadScriptVariableValue - mov r3, r0 - mov r0, #0 - mov r1, #0x37 - mov r2, r4, lsl #0x10 - mov r2, r2, lsr #0x10 - bl SaveScriptVariableValueAtIndex - mov r0, #0 - mov r1, #0x35 - bl LoadScriptVariableValue - mov r3, r0 - mov r0, r4, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, #0 - mov r1, #0x38 - bl SaveScriptVariableValueAtIndex - mov r0, #0 - mov r1, #0x36 - bl LoadScriptVariableValue - mov r1, r4, lsl #0x10 - mov r3, r0 - mov r2, r1, lsr #0x10 - mov r0, #0 - mov r1, #0x39 - bl SaveScriptVariableValueAtIndex - bl ScenarioFlagBackup - ldmia sp!, {r4, pc} - .align 2, 0 -_0204C404: .word _0209CF84 - arm_func_end EventFlagBackup - - arm_func_start DumpScriptVariableValues -DumpScriptVariableValues: ; 0x0204C408 - stmdb sp!, {r4, lr} - mov r4, r0 - bl EventFlagBackup - ldr r1, _0204C42C ; =SCRIPT_VARS_VALUES - mov r0, r4 - mov r2, #0x400 - bl MemcpySimple - mov r0, #1 - ldmia sp!, {r4, pc} - .align 2, 0 -_0204C42C: .word SCRIPT_VARS_VALUES - arm_func_end DumpScriptVariableValues - - arm_func_start RestoreScriptVariableValues -RestoreScriptVariableValues: ; 0x0204C430 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - mov r1, #0 - mov r4, r0 - add r0, sp, #0 - mov r2, r1 - bl LoadScriptVariableRaw - ldr r0, _0204C484 ; =SCRIPT_VARS_VALUES - mov r1, r4 - mov r2, #0x400 - bl MemcpySimple - ldr r1, [sp] - ldr r0, [sp, #4] - ldrsh r1, [r1, #0xa] - ldr r0, [r0] - cmp r1, r0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_0204C484: .word SCRIPT_VARS_VALUES - arm_func_end RestoreScriptVariableValues - - arm_func_start InitScenarioScriptVars -InitScenarioScriptVars: ; 0x0204C488 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r1, #0 - mov r2, r1 - mov r0, #2 - bl SetScenarioScriptVar - mov r1, #0 - mov r2, r1 - mov r0, #3 - bl SetScenarioScriptVar - mov r1, #0 - mov r2, r1 - mov r0, #4 - bl SetScenarioScriptVar - mov r1, #0 - mov r2, r1 - mov r0, #5 - bl SetScenarioScriptVar - mov r1, #0 - mov r2, r1 - mov r0, #6 - bl SetScenarioScriptVar - mov r1, #0 - mov r0, #7 - mov r2, r1 - bl SetScenarioScriptVar - mov r1, #0 - mov r0, #8 - mov r2, r1 - bl SetScenarioScriptVar - mov r1, #0 - mov r0, #9 - mov r2, r1 - bl SetScenarioScriptVar - mov r1, #0 - mov r0, #0xa - mov r2, r1 - bl SetScenarioScriptVar - mov r1, #0 - mov r0, #0xb - mov r2, r1 - bl SetScenarioScriptVar - mov r1, #0 - mov r0, #0xc - mov r2, r1 - bl SetScenarioScriptVar - mov r0, #0 - mov r1, #0x11 - bl ZinitScriptVariable - mov r0, #0 - mov r1, #0x1b - bl ZinitScriptVariable - mov r8, #0 - mov r6, #0x1a - mov r7, r8 - mov r5, r8 - mov r4, r6 -_0204C568: - mov r2, r8, lsl #0x10 - mov r0, r7 - mov r1, r6 - mov r3, r7 - mov r2, r2, lsr #0x10 - bl SaveScriptVariableValueAtIndex - add r0, r8, #4 - mov r2, r0, lsl #0x10 - mov r0, r5 - mov r1, r4 - mov r3, r5 - mov r2, r2, lsr #0x10 - bl SaveScriptVariableValueAtIndex - add r8, r8, #1 - cmp r8, #4 - blt _0204C568 - mov r0, #0 - mov r2, r0 - mov r1, #0x13 - bl SaveScriptVariableValue - mov r1, #0x14 - sub r2, r1, #0x15 - mov r0, #0 - bl SaveScriptVariableValue - mov r0, #0 - mov r2, r0 - mov r1, #0x6f - bl SaveScriptVariableValue - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end InitScenarioScriptVars - - arm_func_start sub_0204C5DC -sub_0204C5DC: ; 0x0204C5DC - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r0, #0 - mov r4, r2 - mov r1, r6 - mov r2, r0 - bl LoadScriptVariableValueAtIndex - str r0, [r5] - mov r1, r6 - mov r0, #0 - mov r2, #1 - bl LoadScriptVariableValueAtIndex - str r0, [r4] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end sub_0204C5DC - - arm_func_start SetScenarioScriptVar -SetScenarioScriptVar: ; 0x0204C618 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0xc - mov r8, r0 - mov r7, r1 - mov r0, #0 - mov r6, r2 - mov r1, r8 - mov r2, r0 - bl LoadScriptVariableValueAtIndex - mov r5, r0 - mov r1, r8 - mov r0, #0 - mov r2, #1 - bl LoadScriptVariableValueAtIndex - mov r4, r0 - stmia sp, {r4, r7} - ldr r1, _0204C6C4 ; =_0209DFA0 - mov r0, #9 - mov r2, r8 - mov r3, r5 - str r6, [sp, #8] - bl Debug_Print - cmp r8, #3 - bne _0204C694 - cmp r7, r5 - cmpeq r6, r4 - beq _0204C694 - mov r0, #0 - mov r2, r0 - mov r1, #0x33 - bl SaveScriptVariableValue -_0204C694: - mov r0, #0 - mov r1, r8 - mov r2, r0 - mov r3, r7 - bl SaveScriptVariableValueAtIndex - mov r1, r8 - mov r3, r6 - mov r0, #0 - mov r2, #1 - bl SaveScriptVariableValueAtIndex - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0204C6C4: .word _0209DFA0 - arm_func_end SetScenarioScriptVar - - arm_func_start sub_0204C6C8 -sub_0204C6C8: ; 0x0204C6C8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r0, #0 - mov r5, r2 - mov r1, r7 - mov r2, r0 - bl LoadScriptVariableValueAtIndex - mov r4, r0 - mov r1, r7 - mov r0, #0 - mov r2, #1 - bl LoadScriptVariableValueAtIndex - cmp r4, #0x35 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r4, r6 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - bne _0204C72C - cmp r5, #0 - blt _0204C72C - cmp r0, r5 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} -_0204C72C: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_0204C6C8 - - arm_func_start sub_0204C734 -sub_0204C734: ; 0x0204C734 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r0, #0 - mov r5, r2 - mov r1, r7 - mov r2, r0 - bl LoadScriptVariableValueAtIndex - mov r4, r0 - mov r1, r7 - mov r0, #0 - mov r2, #1 - bl LoadScriptVariableValueAtIndex - cmp r4, #0x35 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r4, r6 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - bne _0204C7A4 - cmp r5, #0 - blt _0204C79C - cmp r0, r5 - bgt _0204C7A4 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0204C79C: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0204C7A4: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_0204C734 - - arm_func_start sub_0204C7AC -sub_0204C7AC: ; 0x0204C7AC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r0, #0 - mov r5, r2 - mov r1, r7 - mov r2, r0 - bl LoadScriptVariableValueAtIndex - mov r4, r0 - mov r1, r7 - mov r0, #0 - mov r2, #1 - bl LoadScriptVariableValueAtIndex - cmp r4, r6 - bne _0204C800 - cmp r5, #0 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - cmp r0, r5 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_0204C800: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_0204C7AC - - arm_func_start sub_0204C808 -sub_0204C808: ; 0x0204C808 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r0, #0 - mov r5, r2 - mov r1, r7 - mov r2, r0 - bl LoadScriptVariableValueAtIndex - mov r4, r0 - mov r1, r7 - mov r0, #0 - mov r2, #1 - bl LoadScriptVariableValueAtIndex - cmp r4, #0x35 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r4, r6 - movgt r0, #1 - ldmgtia sp!, {r3, r4, r5, r6, r7, pc} - bne _0204C878 - cmp r5, #0 - blt _0204C870 - cmp r0, r5 - blt _0204C878 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0204C870: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0204C878: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_0204C808 - - arm_func_start sub_0204C880 -sub_0204C880: ; 0x0204C880 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r0, #0 - mov r5, r2 - mov r1, r7 - mov r2, r0 - bl LoadScriptVariableValueAtIndex - mov r4, r0 - mov r1, r7 - mov r0, #0 - mov r2, #1 - bl LoadScriptVariableValueAtIndex - cmp r4, #0x35 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r4, r6 - movgt r0, #1 - ldmgtia sp!, {r3, r4, r5, r6, r7, pc} - bne _0204C8E4 - cmp r5, #0 - blt _0204C8E4 - cmp r0, r5 - movgt r0, #1 - ldmgtia sp!, {r3, r4, r5, r6, r7, pc} -_0204C8E4: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_0204C880 - - arm_func_start GetSpecialEpisodeType -GetSpecialEpisodeType: ; 0x0204C8EC - ldr ip, _0204C8FC ; =LoadScriptVariableValue - mov r0, #0 - mov r1, #0x4a - bx ip - .align 2, 0 -_0204C8FC: .word LoadScriptVariableValue - arm_func_end GetSpecialEpisodeType - - arm_func_start SetSpecialEpisodeType -SetSpecialEpisodeType: ; 0x0204C900 - ldr ip, _0204C914 ; =SaveScriptVariableValue - mov r2, r0 - mov r0, #0 - mov r1, #0x4a - bx ip - .align 2, 0 -_0204C914: .word SaveScriptVariableValue - arm_func_end SetSpecialEpisodeType - - arm_func_start sub_0204C918 -sub_0204C918: ; 0x0204C918 - ldr r0, _0204C924 ; =DEBUG_SPECIAL_EPISODE_NUMBER - ldr r0, [r0] - bx lr - .align 2, 0 -_0204C924: .word DEBUG_SPECIAL_EPISODE_NUMBER - arm_func_end sub_0204C918 - - arm_func_start sub_0204C928 -sub_0204C928: ; 0x0204C928 - ldr r1, _0204C934 ; =DEBUG_SPECIAL_EPISODE_NUMBER - str r0, [r1] - bx lr - .align 2, 0 -_0204C934: .word DEBUG_SPECIAL_EPISODE_NUMBER - arm_func_end sub_0204C928 - - arm_func_start GetExecuteSpecialEpisodeType -GetExecuteSpecialEpisodeType: ; 0x0204C938 - ldr ip, _0204C948 ; =LoadScriptVariableValue - mov r0, #0 - mov r1, #0x49 - bx ip - .align 2, 0 -_0204C948: .word LoadScriptVariableValue - arm_func_end GetExecuteSpecialEpisodeType - - arm_func_start IsSpecialEpisodeOpen -IsSpecialEpisodeOpen: ; 0x0204C94C - stmdb sp!, {r3, lr} - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, #0 - mov r1, #0x4b - bl LoadScriptVariableValueAtIndex - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end IsSpecialEpisodeOpen - - arm_func_start sub_0204C978 -sub_0204C978: ; 0x0204C978 - ldr ip, _0204C99C ; =SaveScriptVariableValueAtIndex - cmp r1, #0 - movne r3, #1 - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - moveq r3, #0 - mov r0, #0 - mov r1, #0x4b - bx ip - .align 2, 0 -_0204C99C: .word SaveScriptVariableValueAtIndex - arm_func_end sub_0204C978 - - arm_func_start sub_0204C9A0 -sub_0204C9A0: ; 0x0204C9A0 - stmdb sp!, {r3, lr} - mov r0, #0 - mov r1, #0x4b - mov r2, #0x4c - bl ScriptVariablesEqual - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end sub_0204C9A0 - - arm_func_start sub_0204C9C8 -sub_0204C9C8: ; 0x0204C9C8 - stmdb sp!, {r3, lr} - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, #0 - mov r1, #0x4c - bl LoadScriptVariableValueAtIndex - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end sub_0204C9C8 - - arm_func_start sub_0204C9F4 -sub_0204C9F4: ; 0x0204C9F4 - ldr ip, _0204CA18 ; =SaveScriptVariableValueAtIndex - cmp r1, #0 - movne r3, #1 - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - moveq r3, #0 - mov r0, #0 - mov r1, #0x4c - bx ip - .align 2, 0 -_0204CA18: .word SaveScriptVariableValueAtIndex - arm_func_end sub_0204C9F4 - - arm_func_start sub_0204CA1C -sub_0204CA1C: ; 0x0204CA1C - stmdb sp!, {r3, lr} - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, #0 - mov r1, #0x4d - bl LoadScriptVariableValueAtIndex - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end sub_0204CA1C - - arm_func_start sub_0204CA48 -sub_0204CA48: ; 0x0204CA48 - ldr ip, _0204CA6C ; =SaveScriptVariableValueAtIndex - cmp r1, #0 - movne r3, #1 - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - moveq r3, #0 - mov r0, #0 - mov r1, #0x4d - bx ip - .align 2, 0 -_0204CA6C: .word SaveScriptVariableValueAtIndex - arm_func_end sub_0204CA48 - - arm_func_start HasPlayedOldGame -HasPlayedOldGame: ; 0x0204CA70 - stmdb sp!, {r3, lr} - mov r0, #0 - mov r1, #0x6f - bl LoadScriptVariableValue - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end HasPlayedOldGame - - arm_func_start GetPerformanceFlagWithChecks -GetPerformanceFlagWithChecks: ; 0x0204CA94 - stmdb sp!, {r4, lr} - mov r4, r0 - cmp r4, #7 - addls pc, pc, r4, lsl #2 - b _0204CB10 -_0204CAA8: ; jump table - b _0204CAC8 ; case 0 - b _0204CB00 ; case 1 - b _0204CB00 ; case 2 - b _0204CAEC ; case 3 - b _0204CAEC ; case 4 - b _0204CAEC ; case 5 - b _0204CAEC ; case 6 - b _0204CAEC ; case 7 -_0204CAC8: - mov r0, #0 - mov r2, r0 - mov r1, #3 - bl LoadScriptVariableValueAtIndex - cmp r0, #0x35 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, pc} -_0204CAEC: - bl GetGameMode - cmp r0, #3 - bne _0204CB10 - mov r0, #0 - ldmia sp!, {r4, pc} -_0204CB00: - bl GetGameMode - cmp r0, #3 - moveq r0, #1 - ldmeqia sp!, {r4, pc} -_0204CB10: - mov r0, r4, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, #0 - mov r1, #0x4e - bl LoadScriptVariableValueAtIndex - and r0, r0, #0xff - ldmia sp!, {r4, pc} - arm_func_end GetPerformanceFlagWithChecks - - arm_func_start sub_0204CB2C -sub_0204CB2C: ; 0x0204CB2C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - cmp r5, #7 - addls pc, pc, r5, lsl #2 - b _0204CB70 -_0204CB44: ; jump table - b _0204CB70 ; case 0 - b _0204CB64 ; case 1 - b _0204CB64 ; case 2 - b _0204CB64 ; case 3 - b _0204CB64 ; case 4 - b _0204CB64 ; case 5 - b _0204CB64 ; case 6 - b _0204CB64 ; case 7 -_0204CB64: - bl GetGameMode - cmp r0, #3 - ldmeqia sp!, {r3, r4, r5, pc} -_0204CB70: - cmp r4, #0 - movne r3, #1 - mov r0, r5, lsl #0x10 - mov r2, r0, lsr #0x10 - moveq r3, #0 - mov r0, #0 - mov r1, #0x4e - bl SaveScriptVariableValueAtIndex - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_0204CB2C - - arm_func_start GetScenarioBalance -GetScenarioBalance: ; 0x0204CB94 - stmdb sp!, {r3, lr} - mov r0, #0 - mov r1, #0x49 - bl LoadScriptVariableValue - mvn r1, #0 - cmp r0, r1 - bne _0204CBD8 - mov r0, #0 - mov r1, #0x14 - bl LoadScriptVariableValue - cmp r0, #0 - bge _0204CBD0 - mov r0, #0 - mov r1, #0x13 - bl LoadScriptVariableValue -_0204CBD0: - and r0, r0, #0xff - ldmia sp!, {r3, pc} -_0204CBD8: - cmp r0, #0 - moveq r0, #1 - movne r0, #3 - ldmia sp!, {r3, pc} - arm_func_end GetScenarioBalance - - arm_func_start sub_0204CBE8 -sub_0204CBE8: ; 0x0204CBE8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - bl GetGameMode - cmp r0, #1 - ldmlsia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - sub r4, r0, #2 - ldr r0, _0204CCB4 ; =_0209DFC8 - mov r1, r4 - bl Debug_Print0 - mov r0, r4, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, #0 - mov r1, #0x1a - bl LoadScriptVariableValueAtIndex - mov r3, r0 - mov r0, #0 - mov r2, r0 - mov r1, #2 - bl SaveScriptVariableValueAtIndex - add r2, r4, #4 - mov r2, r2, lsl #0x10 - mov r0, #0 - mov r1, #0x1a - mov r2, r2, lsr #0x10 - bl LoadScriptVariableValueAtIndex - mov r3, r0 - mov r0, #0 - mov r1, #2 - mov r2, #1 - bl SaveScriptVariableValueAtIndex - mov r8, #0 - mov sb, r4, lsl #7 - mov r7, r8 - mov r6, #0x1b - mov r5, r8 - mov r4, #0x11 -_0204CC74: - mov r2, sb, lsl #0x10 - mov r0, r7 - mov r1, r6 - mov r2, r2, lsr #0x10 - bl LoadScriptVariableValueAtIndex - mov r2, r8, lsl #0x10 - mov r3, r0 - mov r0, r5 - mov r1, r4 - mov r2, r2, lsr #0x10 - bl SaveScriptVariableValueAtIndex - add r8, r8, #1 - cmp r8, #0x80 - add sb, sb, #1 - blt _0204CC74 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0204CCB4: .word _0209DFC8 - arm_func_end sub_0204CBE8 - - arm_func_start ScenarioFlagBackup -ScenarioFlagBackup: ; 0x0204CCB8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - bl GetGameMode - cmp r0, #1 - ldmlsia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - sub r4, r0, #2 - ldr r0, _0204CD84 ; =_0209DFE8 - mov r1, r4 - bl Debug_Print0 - mov r0, #0 - mov r2, r0 - mov r1, #2 - bl LoadScriptVariableValueAtIndex - mov r1, r4, lsl #0x10 - mov r3, r0 - mov r2, r1, lsr #0x10 - mov r0, #0 - mov r1, #0x1a - bl SaveScriptVariableValueAtIndex - mov r0, #0 - mov r1, #2 - mov r2, #1 - bl LoadScriptVariableValueAtIndex - add r2, r4, #4 - mov r2, r2, lsl #0x10 - mov r3, r0 - mov r0, #0 - mov r1, #0x1a - mov r2, r2, lsr #0x10 - bl SaveScriptVariableValueAtIndex - mov r8, #0 - mov sb, r4, lsl #7 - mov r7, r8 - mov r6, #0x11 - mov r5, r8 - mov r4, #0x1b -_0204CD44: - mov r2, r8, lsl #0x10 - mov r0, r7 - mov r1, r6 - mov r2, r2, lsr #0x10 - bl LoadScriptVariableValueAtIndex - mov r2, sb, lsl #0x10 - mov r3, r0 - mov r0, r5 - mov r1, r4 - mov r2, r2, lsr #0x10 - bl SaveScriptVariableValueAtIndex - add r8, r8, #1 - cmp r8, #0x80 - add sb, sb, #1 - blt _0204CD44 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0204CD84: .word _0209DFE8 - arm_func_end ScenarioFlagBackup - - arm_func_start InitWorldMapScriptVars -InitWorldMapScriptVars: ; 0x0204CD88 - stmdb sp!, {r3, lr} - mov r0, #0 - mov r1, #0x55 - bl ZinitScriptVariable - mov r0, #0 - mov r1, #0x56 - bl ZinitScriptVariable - mov r0, #0 - mov r1, #0x57 - mov r2, #1 - bl SaveScriptVariableValue - ldmia sp!, {r3, pc} - arm_func_end InitWorldMapScriptVars - - arm_func_start sub_0204CDB8 -sub_0204CDB8: ; 0x0204CDB8 - ldr ip, _0204CDC8 ; =ZinitScriptVariable - mov r0, #0 - mov r1, #0x56 - bx ip - .align 2, 0 -_0204CDC8: .word ZinitScriptVariable - arm_func_end sub_0204CDB8 - - arm_func_start sub_0204CDCC -sub_0204CDCC: ; 0x0204CDCC - stmdb sp!, {r3, lr} - mov r0, #0 - mov r1, #0x57 - bl LoadScriptVariableValue - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - ldmia sp!, {r3, pc} - arm_func_end sub_0204CDCC - - arm_func_start sub_0204CDE8 -sub_0204CDE8: ; 0x0204CDE8 - ldr ip, _0204CDFC ; =SaveScriptVariableValue - mov r2, r0 - mov r0, #0 - mov r1, #0x57 - bx ip - .align 2, 0 -_0204CDFC: .word SaveScriptVariableValue - arm_func_end sub_0204CDE8 - - arm_func_start sub_0204CE00 -sub_0204CE00: ; 0x0204CE00 - stmdb sp!, {r4, lr} - mov r4, r0 - bl GetGameMode - cmp r0, #3 - mov r0, r4, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, #0 - bne _0204CE2C - mov r1, #0x56 - bl LoadScriptVariableValueAtIndex - b _0204CE34 -_0204CE2C: - mov r1, #0x55 - bl LoadScriptVariableValueAtIndex -_0204CE34: - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, pc} - arm_func_end sub_0204CE00 - - arm_func_start sub_0204CE48 -sub_0204CE48: ; 0x0204CE48 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl GetGameMode - cmp r0, #3 - mov r0, r5, lsl #0x10 - mov r3, r4 - bne _0204CE7C - mov r2, r0, lsr #0x10 - mov r0, #0 - mov r1, #0x56 - bl SaveScriptVariableValueAtIndex - ldmia sp!, {r3, r4, r5, pc} -_0204CE7C: - mov r2, r0, lsr #0x10 - mov r0, #0 - mov r1, #0x55 - bl SaveScriptVariableValueAtIndex - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_0204CE48 - - arm_func_start InitDungeonListScriptVars -InitDungeonListScriptVars: ; 0x0204CE90 - stmdb sp!, {r3, lr} - mov r0, #0 - mov r1, #0x4f - bl ZinitScriptVariable - mov r0, #0 - mov r1, #0x54 - bl ZinitScriptVariable - mov r0, #0 - mov r1, #0x50 - bl ZinitScriptVariable - mov r0, #0 - mov r1, #0x51 - bl ZinitScriptVariable - mov r0, #0 - mov r1, #0x52 - bl ZinitScriptVariable - mov r0, #0 - mov r1, #0x53 - bl ZinitScriptVariable - ldmia sp!, {r3, pc} - arm_func_end InitDungeonListScriptVars - - arm_func_start sub_0204CEE0 -sub_0204CEE0: ; 0x0204CEE0 - stmdb sp!, {r3, lr} - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, #0 - mov r1, #0x50 - bl LoadScriptVariableValueAtIndex - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end sub_0204CEE0 - - arm_func_start sub_0204CF0C -sub_0204CF0C: ; 0x0204CF0C - stmdb sp!, {r3, lr} - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, #0 - mov r1, #0x52 - bl LoadScriptVariableValueAtIndex - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end sub_0204CF0C - - arm_func_start SetDungeonConquest -SetDungeonConquest: ; 0x0204CF38 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r0, r0, lsl #0x10 - mov r3, r1 - mov r2, r0, lsr #0x10 - mov r0, #0 - mov r1, #0x52 - bl SaveScriptVariableValueAtIndex - mov r7, #0 - ldr r6, _0204CF98 ; =_0209E008 - mov r5, r7 - mov r4, #0x52 -_0204CF64: - ldrb r2, [r6, r7] - add r7, r7, #1 - cmp r2, #0xff - bne _0204CF80 - mov r0, #0x23 - bl SetAdventureLogCompleted - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0204CF80: - mov r0, r5 - mov r1, r4 - bl LoadScriptVariableValueAtIndex - cmp r0, #0 - bne _0204CF64 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0204CF98: .word _0209E008 - arm_func_end SetDungeonConquest - - arm_func_start GetDungeonMode -GetDungeonMode: ; 0x0204CF9C - stmdb sp!, {r4, lr} - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 - mov r2, r4 - mov r0, #0 - mov r1, #0x4f - bl LoadScriptVariableValueAtIndex - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - mov r2, r4 - mov r0, #0 - mov r1, #0x54 - beq _0204CFF8 - bl LoadScriptVariableValueAtIndex - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - movne r0, #3 - moveq r0, #1 - ldmia sp!, {r4, pc} -_0204CFF8: - bl LoadScriptVariableValueAtIndex - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - movne r0, #2 - moveq r0, #0 - ldmia sp!, {r4, pc} - arm_func_end GetDungeonMode - - arm_func_start sub_0204D018 -sub_0204D018: ; 0x0204D018 - stmdb sp!, {r4, lr} - cmp r1, #3 - addls pc, pc, r1, lsl #2 - ldmia sp!, {r4, pc} -_0204D028: ; jump table - b _0204D038 ; case 0 - b _0204D06C ; case 1 - b _0204D0A0 ; case 2 - b _0204D0D4 ; case 3 -_0204D038: - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 - mov r0, #0 - mov r2, r4 - mov r3, r0 - mov r1, #0x4f - bl SaveScriptVariableValueAtIndex - mov r0, #0 - mov r2, r4 - mov r3, r0 - mov r1, #0x54 - bl SaveScriptVariableValueAtIndex - ldmia sp!, {r4, pc} -_0204D06C: - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 - mov r2, r4 - mov r0, #0 - mov r1, #0x4f - mov r3, #1 - bl SaveScriptVariableValueAtIndex - mov r0, #0 - mov r2, r4 - mov r3, r0 - mov r1, #0x54 - bl SaveScriptVariableValueAtIndex - ldmia sp!, {r4, pc} -_0204D0A0: - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 - mov r0, #0 - mov r2, r4 - mov r3, r0 - mov r1, #0x4f - bl SaveScriptVariableValueAtIndex - mov r2, r4 - mov r0, #0 - mov r1, #0x54 - mov r3, #1 - bl SaveScriptVariableValueAtIndex - ldmia sp!, {r4, pc} -_0204D0D4: - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 - mov r2, r4 - mov r0, #0 - mov r1, #0x4f - mov r3, #1 - bl SaveScriptVariableValueAtIndex - mov r2, r4 - mov r0, #0 - mov r1, #0x54 - mov r3, #1 - bl SaveScriptVariableValueAtIndex - ldmia sp!, {r4, pc} - arm_func_end sub_0204D018 - - arm_func_start GlobalProgressAlloc -GlobalProgressAlloc: ; 0x0204D108 - stmdb sp!, {r3, lr} - mov r0, #0x20c - mov r1, #0 - bl MemAlloc - ldr r2, _0204D12C ; =GLOBAL_PROGRESS_PTR - mov r1, #0x20c - str r0, [r2] - bl MemZero - ldmia sp!, {r3, pc} - .align 2, 0 -_0204D12C: .word GLOBAL_PROGRESS_PTR - arm_func_end GlobalProgressAlloc - - arm_func_start ResetGlobalProgress -ResetGlobalProgress: ; 0x0204D130 - ldr r0, _0204D144 ; =GLOBAL_PROGRESS_PTR - ldr ip, _0204D148 ; =MemZero - mov r1, #0x20c - ldr r0, [r0] - bx ip - .align 2, 0 -_0204D144: .word GLOBAL_PROGRESS_PTR -_0204D148: .word MemZero - arm_func_end ResetGlobalProgress - - arm_func_start SetMonsterFlag1 -SetMonsterFlag1: ; 0x0204D14C - stmdb sp!, {r3, lr} - ldr r3, _0204D184 ; =GLOBAL_PROGRESS_PTR - mov r1, r0, asr #4 - add r1, r0, r1, lsr #27 - mov r2, r0, lsr #0x1f - rsb r0, r2, r0, lsl #27 - ldr lr, [r3] - mov ip, r1, asr #5 - ldr r3, [lr, ip, lsl #2] - add r0, r2, r0, ror #27 - mov r1, #1 - orr r0, r3, r1, lsl r0 - str r0, [lr, ip, lsl #2] - ldmia sp!, {r3, pc} - .align 2, 0 -_0204D184: .word GLOBAL_PROGRESS_PTR - arm_func_end SetMonsterFlag1 - - arm_func_start GetMonsterFlag1 -GetMonsterFlag1: ; 0x0204D188 - ldr r3, _0204D1C0 ; =GLOBAL_PROGRESS_PTR - mov r1, r0, asr #4 - add r2, r0, r1, lsr #27 - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #27 - add r0, r1, r0, ror #27 - ldr r3, [r3] - mov r2, r2, asr #5 - ldr r2, [r3, r2, lsl #2] - mov r1, #1 - tst r2, r1, lsl r0 - moveq r1, #0 - and r0, r1, #0xff - bx lr - .align 2, 0 -_0204D1C0: .word GLOBAL_PROGRESS_PTR - arm_func_end GetMonsterFlag1 - - arm_func_start SetMonsterFlag2 -SetMonsterFlag2: ; 0x0204D1C4 - stmdb sp!, {r3, lr} - bl FemaleToMaleForm - ldr r2, _0204D204 ; =GLOBAL_PROGRESS_PTR - mov r1, r0, asr #4 - ldr r3, [r2] - add r1, r0, r1, lsr #27 - mov r2, r0, lsr #0x1f - rsb r0, r2, r0, lsl #27 - add lr, r3, #0x98 - mov ip, r1, asr #5 - ldr r3, [lr, ip, lsl #2] - add r0, r2, r0, ror #27 - mov r1, #1 - orr r0, r3, r1, lsl r0 - str r0, [lr, ip, lsl #2] - ldmia sp!, {r3, pc} - .align 2, 0 -_0204D204: .word GLOBAL_PROGRESS_PTR - arm_func_end SetMonsterFlag2 - - arm_func_start HasMonsterBeenAttackedInDungeons -HasMonsterBeenAttackedInDungeons: ; 0x0204D208 - stmdb sp!, {r3, lr} - bl FemaleToMaleForm - ldr r3, _0204D24C ; =GLOBAL_PROGRESS_PTR - mov r1, r0, asr #4 - add r2, r0, r1, lsr #27 - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #27 - add r0, r1, r0, ror #27 - ldr r3, [r3] - mov r2, r2, asr #5 - add r2, r3, r2, lsl #2 - ldr r2, [r2, #0x98] - mov r1, #1 - tst r2, r1, lsl r0 - moveq r1, #0 - and r0, r1, #0xff - ldmia sp!, {r3, pc} - .align 2, 0 -_0204D24C: .word GLOBAL_PROGRESS_PTR - arm_func_end HasMonsterBeenAttackedInDungeons - - arm_func_start SetDungeonTipShown -SetDungeonTipShown: ; 0x0204D250 - stmdb sp!, {r3, lr} - ldr r2, _0204D28C ; =GLOBAL_PROGRESS_PTR - mov r1, r0, asr #4 - ldr r3, [r2] - add r1, r0, r1, lsr #27 - mov r2, r0, lsr #0x1f - rsb r0, r2, r0, lsl #27 - add lr, r3, #0x94 - mov ip, r1, asr #5 - ldr r3, [lr, ip, lsl #2] - add r0, r2, r0, ror #27 - mov r1, #1 - orr r0, r3, r1, lsl r0 - str r0, [lr, ip, lsl #2] - ldmia sp!, {r3, pc} - .align 2, 0 -_0204D28C: .word GLOBAL_PROGRESS_PTR - arm_func_end SetDungeonTipShown - - arm_func_start GetDungeonTipShown -GetDungeonTipShown: ; 0x0204D290 - cmp r0, #0x1f - movge r0, #0 - bxge lr - ldr r2, _0204D2D8 ; =GLOBAL_PROGRESS_PTR - mov r1, r0, asr #4 - add r1, r0, r1, lsr #27 - ldr r3, [r2] - mov r2, r1, asr #5 - mov r1, r0, lsr #0x1f - add r2, r3, r2, lsl #2 - rsb r0, r1, r0, lsl #27 - add r0, r1, r0, ror #27 - ldr r2, [r2, #0x94] - mov r1, #1 - tst r2, r1, lsl r0 - moveq r1, #0 - and r0, r1, #0xff - bx lr - .align 2, 0 -_0204D2D8: .word GLOBAL_PROGRESS_PTR - arm_func_end GetDungeonTipShown - - arm_func_start SetMaxReachedFloor -SetMaxReachedFloor: ; 0x0204D2DC - cmp r0, #0xb4 - ldrlo r2, _0204D2F4 ; =GLOBAL_PROGRESS_PTR - ldrlo r2, [r2] - addlo r0, r2, r0 - strlob r1, [r0, #0x143] - bx lr - .align 2, 0 -_0204D2F4: .word GLOBAL_PROGRESS_PTR - arm_func_end SetMaxReachedFloor - - arm_func_start GetMaxReachedFloor -GetMaxReachedFloor: ; 0x0204D2F8 - cmp r0, #0xb4 - ldrlo r1, _0204D314 ; =GLOBAL_PROGRESS_PTR - movhs r0, #0 - ldrlo r1, [r1] - addlo r0, r1, r0 - ldrlob r0, [r0, #0x143] - bx lr - .align 2, 0 -_0204D314: .word GLOBAL_PROGRESS_PTR - arm_func_end GetMaxReachedFloor - - arm_func_start IncrementNbAdventures -IncrementNbAdventures: ; 0x0204D318 - ldr r0, _0204D344 ; =GLOBAL_PROGRESS_PTR - ldr r1, _0204D348 ; =0x000F423F - ldr r3, [r0] - ldr r2, [r3, #0x1f8] - add r2, r2, #1 - str r2, [r3, #0x1f8] - ldr r2, [r0] - ldr r0, [r2, #0x1f8] - cmp r0, r1 - strhi r1, [r2, #0x1f8] - bx lr - .align 2, 0 -_0204D344: .word GLOBAL_PROGRESS_PTR -_0204D348: .word 0x000F423F - arm_func_end IncrementNbAdventures - - arm_func_start GetNbAdventures -GetNbAdventures: ; 0x0204D34C - ldr r0, _0204D35C ; =GLOBAL_PROGRESS_PTR - ldr r0, [r0] - ldr r0, [r0, #0x1f8] - bx lr - .align 2, 0 -_0204D35C: .word GLOBAL_PROGRESS_PTR - arm_func_end GetNbAdventures - - arm_func_start CanMonsterSpawn -CanMonsterSpawn: ; 0x0204D360 - mov r0, #1 - bx lr - arm_func_end CanMonsterSpawn - - arm_func_start IncrementExclusiveMonsterCounts -IncrementExclusiveMonsterCounts: ; 0x0204D368 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r4, _0204D3B8 ; =VERSION_EXCLUSIVE_MONSTERS - ldr r7, _0204D3BC ; =GLOBAL_PROGRESS_PTR - mov r6, r0 - mov r5, #0 - mov r8, #1 -_0204D380: - mov r0, r5, lsl #2 - ldrsh r0, [r4, r0] - bl GetDexNumber - mov sb, r0 - mov r0, r6 - bl GetDexNumber - cmp sb, r0 - ldreq r0, [r7] - addeq r0, r0, r5 - add r5, r5, #1 - streqb r8, [r0, #0x12c] - cmp r5, #0x17 - blt _0204D380 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0204D3B8: .word VERSION_EXCLUSIVE_MONSTERS -_0204D3BC: .word GLOBAL_PROGRESS_PTR - arm_func_end IncrementExclusiveMonsterCounts - - arm_func_start CopyProgressInfoTo -CopyProgressInfoTo: ; 0x0204D3C0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r4, _0204D538 ; =0x00000483 - mov r5, r0 - mov r8, #0 - add r7, sp, #0 - mov r6, #1 -_0204D3D8: - mov r0, r8, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetMonsterFlag1 - strb r0, [sp] - mov r0, r5 - mov r1, r7 - mov r2, r6 - bl CopyBitsTo - add r8, r8, #1 - cmp r8, r4 - blt _0204D3D8 - mov r7, #0 - add r6, sp, #0 - mov r4, #1 -_0204D410: - mov r0, r7 - bl GetDungeonTipShown - strb r0, [sp] - mov r0, r5 - mov r1, r6 - mov r2, r4 - bl CopyBitsTo - add r7, r7, #1 - cmp r7, #0x1f - blt _0204D410 - ldr r4, _0204D538 ; =0x00000483 - mov r8, #0 - add r7, sp, #0 - mov r6, #1 -_0204D448: - mov r0, r8, lsl #0x10 - mov r0, r0, asr #0x10 - bl HasMonsterBeenAttackedInDungeons - strb r0, [sp] - mov r0, r5 - mov r1, r7 - mov r2, r6 - bl CopyBitsTo - add r8, r8, #1 - cmp r8, r4 - blt _0204D448 - ldr r8, _0204D53C ; =_0209E011 - ldr sb, _0204D540 ; =_0209E010 - ldr r6, _0204D544 ; =GLOBAL_PROGRESS_PTR - mov r4, #0 - mov r7, #1 -_0204D488: - ldr r0, [r6] - mov r2, r7 - add r0, r0, r4 - ldrb r0, [r0, #0x12c] - cmp r0, #0 - movne r1, sb - moveq r1, r8 - mov r0, r5 - bl CopyBitsTo - add r4, r4, #1 - cmp r4, #0x17 - blt _0204D488 - ldr r4, _0204D544 ; =GLOBAL_PROGRESS_PTR - mov r7, #0 - mov r6, #7 -_0204D4C4: - ldr r1, [r4] - mov r0, r5 - add r1, r1, #0x43 - add r1, r1, #0x100 - mov r2, r6 - add r1, r1, r7 - bl CopyBitsTo - add r7, r7, #1 - cmp r7, #0xb4 - blt _0204D4C4 - ldr r1, _0204D544 ; =GLOBAL_PROGRESS_PTR - mov r0, r5 - ldr r1, [r1] - mov r2, #0x20 - add r1, r1, #0x1f8 - bl CopyBitsTo - ldr r4, _0204D544 ; =GLOBAL_PROGRESS_PTR - mov r7, #0 - mov r6, #8 -_0204D510: - ldr r1, [r4] - mov r0, r5 - add r1, r1, #0x1fc - mov r2, r6 - add r1, r1, r7 - bl CopyBitsTo - add r7, r7, #1 - cmp r7, #0x10 - blt _0204D510 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0204D538: .word 0x00000483 -_0204D53C: .word _0209E011 -_0204D540: .word _0209E010 -_0204D544: .word GLOBAL_PROGRESS_PTR - arm_func_end CopyProgressInfoTo - - arm_func_start CopyProgressInfoFromScratchTo -CopyProgressInfoFromScratchTo: ; 0x0204D548 - stmdb sp!, {r3, lr} - sub sp, sp, #0x10 - mov r3, r0 - mov r2, r1 - add r0, sp, #0 - mov r1, r3 - bl sub_02050990 - add r0, sp, #0 - bl CopyProgressInfoTo - add r0, sp, #0 - bl sub_020509BC - ldr r0, [sp, #8] - add sp, sp, #0x10 - ldmia sp!, {r3, pc} - arm_func_end CopyProgressInfoFromScratchTo - - arm_func_start CopyProgressInfoFrom -CopyProgressInfoFrom: ; 0x0204D580 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #4 - ldr r1, _0204D740 ; =GLOBAL_PROGRESS_PTR - mov r4, r0 - ldr r0, [r1] - mov r1, #0x20c - bl MemZero - ldr r5, _0204D744 ; =0x00000483 - mov r8, #0 - add r7, sp, #0 - mov r6, #1 -_0204D5AC: - mov r0, r4 - mov r1, r7 - mov r2, r6 - bl CopyBitsFrom - ldrb r0, [sp] - cmp r0, #0 - beq _0204D5D4 - mov r0, r8, lsl #0x10 - mov r0, r0, asr #0x10 - bl SetMonsterFlag1 -_0204D5D4: - add r8, r8, #1 - cmp r8, r5 - blt _0204D5AC - mov r7, #0 - add r6, sp, #0 - mov r5, #1 -_0204D5EC: - mov r0, r4 - mov r1, r6 - mov r2, r5 - bl CopyBitsFrom - ldrb r0, [sp] - cmp r0, #0 - beq _0204D610 - mov r0, r7 - bl SetDungeonTipShown -_0204D610: - add r7, r7, #1 - cmp r7, #0x1f - blt _0204D5EC - ldr r5, _0204D744 ; =0x00000483 - mov r8, #0 - add r7, sp, #0 - mov r6, #1 -_0204D62C: - mov r0, r4 - mov r1, r7 - mov r2, r6 - bl CopyBitsFrom - ldrb r0, [sp] - cmp r0, #0 - beq _0204D654 - mov r0, r8, lsl #0x10 - mov r0, r0, asr #0x10 - bl SetMonsterFlag2 -_0204D654: - add r8, r8, #1 - cmp r8, r5 - blt _0204D62C - mov sb, #0 - mov r6, #1 - ldr sl, _0204D740 ; =GLOBAL_PROGRESS_PTR - mov r5, sb - add r8, sp, #1 - mov r7, r6 -_0204D678: - mov r0, r4 - mov r1, r8 - mov r2, r7 - bl CopyBitsFrom - ldrb r0, [sp, #1] - tst r0, #1 - ldr r0, [sl] - movne r1, r6 - add r0, r0, sb - moveq r1, r5 - add sb, sb, #1 - strb r1, [r0, #0x12c] - cmp sb, #0x17 - blt _0204D678 - ldr r8, _0204D740 ; =GLOBAL_PROGRESS_PTR - mov r7, #0 - add r6, sp, #1 - mov r5, #7 -_0204D6C0: - mov r0, r4 - mov r1, r6 - mov r2, r5 - bl CopyBitsFrom - ldrb r1, [sp, #1] - ldr r0, [r8] - add r0, r0, r7 - and r1, r1, #0x7f - add r7, r7, #1 - strb r1, [r0, #0x143] - cmp r7, #0xb4 - blt _0204D6C0 - ldr r1, _0204D740 ; =GLOBAL_PROGRESS_PTR - mov r0, r4 - ldr r1, [r1] - mov r2, #0x20 - add r1, r1, #0x1f8 - bl CopyBitsFrom - ldr r5, _0204D740 ; =GLOBAL_PROGRESS_PTR - mov r7, #0 - mov r6, #8 -_0204D714: - ldr r1, [r5] - mov r0, r4 - add r1, r1, #0x1fc - mov r2, r6 - add r1, r1, r7 - bl CopyBitsFrom - add r7, r7, #1 - cmp r7, #0x10 - blt _0204D714 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0204D740: .word GLOBAL_PROGRESS_PTR -_0204D744: .word 0x00000483 - arm_func_end CopyProgressInfoFrom - - arm_func_start CopyProgressInfoFromScratchFrom -CopyProgressInfoFromScratchFrom: ; 0x0204D748 - stmdb sp!, {r3, lr} - sub sp, sp, #0x10 - mov r3, r0 - mov r2, r1 - add r0, sp, #0 - mov r1, r3 - bl sub_02050974 - add r0, sp, #0 - bl CopyProgressInfoFrom - add r0, sp, #0 - bl sub_020509BC - ldr r0, [sp, #8] - add sp, sp, #0x10 - ldmia sp!, {r3, pc} - arm_func_end CopyProgressInfoFromScratchFrom - - arm_func_start InitKaomadoStream -InitKaomadoStream: ; 0x0204D780 - stmdb sp!, {r3, lr} - bl FileRom_InitDataTransfer - ldr r0, _0204D798 ; =KAOMADO_STREAM - bl FileRom_Veneer_FileInit - bl FileRom_StopDataTransfer - ldmia sp!, {r3, pc} - .align 2, 0 -_0204D798: .word KAOMADO_STREAM - arm_func_end InitKaomadoStream - - arm_func_start InitPortraitParams -InitPortraitParams: ; 0x0204D79C - mov r2, #0 - strh r2, [r0] - sub r1, r2, #2 - strb r1, [r0, #2] - strb r2, [r0, #3] - mov r1, #2 - str r1, [r0, #4] - mov r1, #9 - str r1, [r0, #8] - strb r2, [r0, #0xc] - strb r2, [r0, #0xd] - strb r2, [r0, #0xe] - strb r2, [r0, #0xf] - bx lr - arm_func_end InitPortraitParams - - arm_func_start InitPortraitParamsWithMonsterId -InitPortraitParamsWithMonsterId: ; 0x0204D7D4 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl InitPortraitParams - strh r4, [r5] - mov r0, #0 - strb r0, [r5, #2] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end InitPortraitParamsWithMonsterId - - arm_func_start SetPortraitEmotion -SetPortraitEmotion: ; 0x0204D7F4 - ldrsh r2, [r0] - cmp r2, #0 - strneb r1, [r0, #2] - bx lr - arm_func_end SetPortraitEmotion - - arm_func_start SetPortraitLayout -SetPortraitLayout: ; 0x0204D804 - ldrsh r2, [r0] - cmp r2, #0 - cmpne r1, #0x20 - bxeq lr - mov r2, #6 - mul r2, r1, r2 - ldr r3, _0204D844 ; =PORTRAIT_LAYOUTS - strb r1, [r0, #3] - ldrsh r1, [r3, r2] - add r2, r3, r2 - str r1, [r0, #4] - ldrsh r1, [r2, #2] - str r1, [r0, #8] - ldrb r1, [r2, #4] - strb r1, [r0, #0xc] - bx lr - .align 2, 0 -_0204D844: .word PORTRAIT_LAYOUTS - arm_func_end SetPortraitLayout - - arm_func_start SetPortraitOffset -SetPortraitOffset: ; 0x0204D848 - stmdb sp!, {r3, lr} - ldrsh r2, [r0] - cmp r2, #0 - ldmeqia sp!, {r3, pc} - ldrb r3, [r0, #3] - mov r2, #6 - ldr lr, _0204D890 ; =PORTRAIT_LAYOUTS - smulbb ip, r3, r2 - ldrsh r3, [lr, ip] - ldr r2, [r1] - add ip, lr, ip - add r2, r3, r2 - str r2, [r0, #4] - ldrsh r2, [ip, #2] - ldr r1, [r1, #4] - add r1, r2, r1 - str r1, [r0, #8] - ldmia sp!, {r3, pc} - .align 2, 0 -_0204D890: .word PORTRAIT_LAYOUTS - arm_func_end SetPortraitOffset - - arm_func_start AllowPortraitDefault -AllowPortraitDefault: ; 0x0204D894 - strb r1, [r0, #0xf] - bx lr - arm_func_end AllowPortraitDefault - - arm_func_start IsValidPortrait -IsValidPortrait: ; 0x0204D89C - ldrsh r1, [r0] - cmp r1, #0 - ldrnesb r1, [r0, #2] - mvnne r0, #1 - cmpne r1, r0 - movne r0, #1 - moveq r0, #0 - bx lr - arm_func_end IsValidPortrait - - arm_func_start LoadPortrait -LoadPortrait: ; 0x0204D8BC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov sl, r0 - mov sb, r1 - ldrsh r7, [sl] - ldrsb r8, [sl, #2] - bl FileRom_InitDataTransfer - ldr r0, _0204DA14 ; =KAOMADO_STREAM - ldr r1, _0204DA18 ; =KAOMADO_FILEPATH - bl FileRom_HandleOpen - mov fp, #0 - mov r4, fp - mov r5, #1 - b _0204D9DC -_0204D8F4: - mov r0, #0x28 - mul r0, r7, r0 - add r0, r0, r8, lsl #1 - mov r1, r0, lsl #2 - ldr r0, _0204DA14 ; =KAOMADO_STREAM - mov r2, #0 - sub r7, r7, #0x258 - bl FileRom_HandleSeek - ldr r0, _0204DA14 ; =KAOMADO_STREAM - add r1, sp, #0 - mov r2, #0xc - bl FileRom_HandleRead - ldr r0, [sp, #4] - cmp r0, #0 - movge r0, #1 - movlt r0, #0 - strb r0, [sl, #0xd] - ldrb r0, [sl, #0xc] - cmp r0, #0 - beq _0204D984 - ldr r0, [sp, #4] - cmp r0, #0 - mov r1, r0 - bge _0204D96C - ldr r1, [sp] - cmp r0, #0 - rsblt r0, r0, #0 - sub r6, r0, r1 - strb r5, [sl, #0xe] - b _0204D99C -_0204D96C: - ldr r2, [sp, #8] - cmp r2, #0 - rsblt r2, r2, #0 - sub r6, r2, r0 - strb r4, [sl, #0xe] - b _0204D99C -_0204D984: - ldr r0, [sp, #4] - ldr r1, [sp] - cmp r0, #0 - rsblt r0, r0, #0 - sub r6, r0, r1 - strb fp, [sl, #0xe] -_0204D99C: - cmp r1, #0 - ble _0204D9DC - cmp sb, #0 - beq _0204D9C8 - ldr r0, _0204DA14 ; =KAOMADO_STREAM - mov r2, #0 - bl FileRom_HandleSeek - ldr r0, _0204DA14 ; =KAOMADO_STREAM - mov r1, sb - mov r2, r6 - bl FileRom_HandleRead -_0204D9C8: - ldr r0, _0204DA14 ; =KAOMADO_STREAM - bl FileClose - bl FileRom_StopDataTransfer - mov r0, #1 - b _0204DA0C -_0204D9DC: - cmp r7, #0 - bgt _0204D8F4 - ldrb r0, [sl, #0xf] - cmp r0, #0 - cmpne r8, #0 - movne r8, #0 - ldrnesh r7, [sl] - bne _0204D9DC - ldr r0, _0204DA14 ; =KAOMADO_STREAM - bl FileClose - bl FileRom_StopDataTransfer - mov r0, #0 -_0204DA0C: - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0204DA14: .word KAOMADO_STREAM -_0204DA18: .word KAOMADO_FILEPATH - arm_func_end LoadPortrait - - arm_func_start sub_0204DA1C -sub_0204DA1C: ; 0x0204DA1C - ldr r1, _0204DA28 ; =ARM9_UNKNOWN_TABLE__NA_209E164 - ldrb r0, [r1, r0] - bx lr - .align 2, 0 -_0204DA28: .word ARM9_UNKNOWN_TABLE__NA_209E164 - arm_func_end sub_0204DA1C - - arm_func_start sub_0204DA2C -sub_0204DA2C: ; 0x0204DA2C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x68 - mov r4, r2 - mov r2, #0 - mov r5, r1 - mov r6, r2 - add r1, sp, #0 -_0204DA48: - strb r6, [r1, r2] - add r2, r2, #1 - cmp r2, #0x22 - blt _0204DA48 - add r3, sp, #0x22 - ldr r2, _0204DB04 ; =ARM9_UNKNOWN_TABLE__NA_209E164 - b _0204DA84 -_0204DA64: - ldrb r1, [r0] - ldrb r1, [r2, r1] - cmp r1, #0xff - strb r1, [r3, r6] - moveq r0, #0 - beq _0204DAFC - add r0, r0, #1 - add r6, r6, #1 -_0204DA84: - cmp r6, r4 - blt _0204DA64 - add r1, r4, r4, lsl #2 - and r0, r1, #7 - add r0, r0, #7 - mov r0, r0, asr #3 - add sl, r0, r1, asr #3 - add r0, sp, #0x58 - add r1, sp, #0 - mov r2, sl - bl sub_02050990 - mov sb, #0 - add r8, sp, #0x58 - add r7, sp, #0x22 - mov r6, #5 - b _0204DAD8 -_0204DAC4: - mov r0, r8 - mov r2, r6 - add r1, r7, sb - bl CopyBitsTo - add sb, sb, #1 -_0204DAD8: - cmp sb, r4 - blt _0204DAC4 - add r0, sp, #0x58 - bl sub_020509BC - add r1, sp, #0 - mov r0, r5 - mov r2, sl - bl MemcpySimple - mov r0, #1 -_0204DAFC: - add sp, sp, #0x68 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0204DB04: .word ARM9_UNKNOWN_TABLE__NA_209E164 - arm_func_end sub_0204DA2C - - arm_func_start sub_0204DB08 -sub_0204DB08: ; 0x0204DB08 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x48 - mov r4, r2 - add r3, r4, r4, lsl #2 - and r2, r3, #7 - add r2, r2, #7 - mov r2, r2, asr #3 - mov r5, r0 - add r0, sp, #0x38 - add r2, r2, r3, asr #3 - bl sub_02050974 - mov sb, #0 - add r8, sp, #0x38 - add r7, sp, #0 - mov r6, #5 - b _0204DB5C -_0204DB48: - mov r0, r8 - mov r2, r6 - add r1, r7, sb - bl CopyBitsFrom - add sb, sb, #1 -_0204DB5C: - cmp sb, r4 - blt _0204DB48 - add r0, sp, #0x38 - bl sub_020509BC - mov r3, #0 - add r2, sp, #0 - ldr r1, _0204DB9C ; =WONDER_MAIL_BITS_MAP - b _0204DB8C -_0204DB7C: - ldrb r0, [r2, r3] - add r3, r3, #1 - ldrb r0, [r1, r0] - strb r0, [r5], #1 -_0204DB8C: - cmp r3, r4 - blt _0204DB7C - add sp, sp, #0x48 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0204DB9C: .word WONDER_MAIL_BITS_MAP - arm_func_end sub_0204DB08 - - arm_func_start sub_0204DBA0 -sub_0204DBA0: ; 0x0204DBA0 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0xa0 - mov r2, r0 - mov r5, r1 - mov r1, r2 - add r0, sp, #0x10 - mov r2, #0x36 - mov r4, #0 - bl MemcpySimple - ldr r3, _0204DC9C ; =ARM9_UNKNOWN_TABLE__NA_209E12C - mov r6, r4 - add r2, sp, #0x10 - add r0, sp, #0x46 - mov ip, r4 -_0204DBD8: - mov lr, ip - ldrb r1, [r3, r6] - b _0204DBF0 -_0204DBE4: - cmp lr, r1 - beq _0204DBF8 - add lr, lr, #1 -_0204DBF0: - cmp lr, #0x36 - blt _0204DBE4 -_0204DBF8: - ldrb r1, [r2, lr] - strb r1, [r0, r6] - add r6, r6, #1 - cmp r6, #0x36 - blt _0204DBD8 - add r1, sp, #0x7c - mov r2, #0x36 - bl sub_0204DA2C - cmp r0, #0 - moveq r0, #0 - beq _0204DC94 - ldrb r0, [sp, #0x7c] - add r1, sp, #0x7d - mov r2, #0x20 - bl sub_0204E0A0 - mov r3, #1 - add r2, sp, #0x7c -_0204DC3C: - ldrb r1, [r2, r3] - and r0, r3, #0xff - add r3, r3, #1 - add r0, r1, r0 - add r0, r4, r0 - cmp r3, #0x21 - and r4, r0, #0xff - blt _0204DC3C - ldrb r0, [sp, #0x7c] - cmp r0, r4 - movne r0, #0 - bne _0204DC94 - add r0, sp, #0 - add r1, sp, #0x7d - mov r2, #0x20 - bl sub_02050974 - add r0, sp, #0 - mov r1, r5 - bl sub_0205C2A4 - add r0, sp, #0 - bl sub_020509BC - mov r0, #1 -_0204DC94: - add sp, sp, #0xa0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0204DC9C: .word ARM9_UNKNOWN_TABLE__NA_209E12C - arm_func_end sub_0204DBA0 - - arm_func_start sub_0204DCA0 -sub_0204DCA0: ; 0x0204DCA0 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0xa0 - mov r4, #0 - mov r5, r0 - mov r6, r1 - mov r2, r4 - mov r1, r4 - add r0, sp, #0x7c -_0204DCC0: - strb r1, [r0, r2] - add r2, r2, #1 - cmp r2, #0x22 - blt _0204DCC0 - add r0, sp, #0 - add r1, sp, #0x7d - mov r2, #0x20 - bl sub_02050990 - add r0, sp, #0 - mov r1, r6 - bl sub_0205C548 - add r0, sp, #0 - bl sub_020509BC - mov r3, #1 - add r2, sp, #0x7c -_0204DCFC: - ldrb r1, [r2, r3] - and r0, r3, #0xff - add r3, r3, #1 - add r0, r1, r0 - add r0, r4, r0 - cmp r3, #0x21 - and r4, r0, #0xff - blt _0204DCFC - add r1, sp, #0x7d - mov r0, r4 - mov r2, #0x20 - strb r4, [sp, #0x7c] - bl sub_0204E02C - add r0, sp, #0x46 - add r1, sp, #0x7c - mov r2, #0x36 - bl sub_0204DB08 - ldr r2, _0204DD7C ; =ARM9_UNKNOWN_TABLE__NA_209E12C - mov ip, #0 - add r4, sp, #0x46 - add r1, sp, #0x10 -_0204DD50: - ldrb r3, [r4, ip] - ldrb r0, [r2, ip] - add ip, ip, #1 - cmp ip, #0x36 - strb r3, [r1, r0] - blt _0204DD50 - mov r0, r5 - mov r2, #0x36 - bl MemcpySimple - add sp, sp, #0xa0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0204DD7C: .word ARM9_UNKNOWN_TABLE__NA_209E12C - arm_func_end sub_0204DCA0 - - arm_func_start WonderMailPasswordToMission -WonderMailPasswordToMission: ; 0x0204DD80 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x6c - mov r2, r0 - mov r4, r1 - mov r1, r2 - add r0, sp, #0x10 - mov r2, #0x22 - bl MemcpySimple - mov lr, #0 - ldr r3, _0204DE74 ; =WONDER_MAIL_BITS_SWAP - add r2, sp, #0x10 - add r0, sp, #0x32 - mov r5, lr -_0204DDB4: - mov ip, r5 - ldrb r1, [r3, lr] - b _0204DDCC -_0204DDC0: - cmp ip, r1 - beq _0204DDD4 - add ip, ip, #1 -_0204DDCC: - cmp ip, #0x22 - blt _0204DDC0 -_0204DDD4: - ldrb r1, [r2, ip] - strb r1, [r0, lr] - add lr, lr, #1 - cmp lr, #0x22 - blt _0204DDB4 - add r1, sp, #0x54 - mov r2, #0x22 - bl sub_0204DA2C - cmp r0, #0 - moveq r0, #0 - beq _0204DE6C - ldrb r0, [sp, #0x54] - add r1, sp, #0x58 - mov r2, #0x11 - bl sub_0204E0A0 - add r0, sp, #0x58 - mov r1, #0x11 - bl sub_02004F80 - mov r5, r0 - ldrb r2, [sp, #0x54] - ldr r0, _0204DE78 ; =_0209E264 - mov r1, r5 - bl Debug_Print0 - ldr r0, [sp, #0x54] - cmp r0, r5 - movne r0, #0 - bne _0204DE6C - add r0, sp, #0 - add r1, sp, #0x58 - mov r2, #0x11 - bl sub_02050974 - add r0, sp, #0 - mov r1, r4 - mov r2, #1 - bl sub_0205FD88 - add r0, sp, #0 - bl sub_020509BC - mov r0, #1 -_0204DE6C: - add sp, sp, #0x6c - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_0204DE74: .word WONDER_MAIL_BITS_SWAP -_0204DE78: .word _0209E264 - arm_func_end WonderMailPasswordToMission - - arm_func_start MissionToWonderMailPassword -MissionToWonderMailPassword: ; 0x0204DE7C - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x6c - mov r2, #0 - mov r4, r0 - mov r5, r1 - mov r1, r2 - add r0, sp, #0x54 -_0204DE98: - strb r1, [r0, r2] - add r2, r2, #1 - cmp r2, #0x16 - blt _0204DE98 - add r0, sp, #0 - add r1, sp, #0x58 - mov r2, #0x11 - bl sub_02050990 - add r0, sp, #0 - mov r1, r5 - mov r2, #1 - bl sub_0205FE80 - add r0, sp, #0 - bl sub_020509BC - add r0, sp, #0x58 - mov r1, #0x11 - bl sub_02004F80 - mov r1, r0 - str r1, [sp, #0x54] - ldrb r2, [sp, #0x54] - ldr r0, _0204DF4C ; =_0209E264 - bl Debug_Print0 - ldrb r0, [sp, #0x54] - add r1, sp, #0x58 - mov r2, #0x11 - bl sub_0204E02C - add r0, sp, #0x32 - add r1, sp, #0x54 - mov r2, #0x22 - bl sub_0204DB08 - ldr r2, _0204DF50 ; =WONDER_MAIL_BITS_SWAP - mov lr, #0 - add ip, sp, #0x32 - add r1, sp, #0x10 -_0204DF20: - ldrb r3, [ip, lr] - ldrb r0, [r2, lr] - add lr, lr, #1 - cmp lr, #0x22 - strb r3, [r1, r0] - blt _0204DF20 - mov r0, r4 - mov r2, #0x22 - bl MemcpySimple - add sp, sp, #0x6c - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_0204DF4C: .word _0209E264 -_0204DF50: .word WONDER_MAIL_BITS_SWAP - arm_func_end MissionToWonderMailPassword - - arm_func_start sub_0204DF54 -sub_0204DF54: ; 0x0204DF54 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - tst r2, #0x1f - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - mov r5, #0 - ldr ip, _0204DFAC ; =ARM9_UNKNOWN_TABLE__NA_209E280 - mov r4, r5 - b _0204DF9C -_0204DF74: - mov r6, r4 - add r7, r1, r5 - add r8, r0, r5 -_0204DF80: - ldrb lr, [r7, r6] - ldrb r3, [ip, r6] - add r6, r6, #1 - cmp r6, #0x20 - strb lr, [r8, r3] - blt _0204DF80 - add r5, r5, #0x20 -_0204DF9C: - cmp r5, r2 - blo _0204DF74 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0204DFAC: .word ARM9_UNKNOWN_TABLE__NA_209E280 - arm_func_end sub_0204DF54 - - arm_func_start sub_0204DFB0 -sub_0204DFB0: ; 0x0204DFB0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - tst r2, #0x1f - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r5, #0 - mov lr, r5 - ldr ip, _0204E028 ; =ARM9_UNKNOWN_TABLE__NA_209E280 - mov r4, r5 - b _0204E018 -_0204DFD4: - mov sb, r4 - add r7, r1, r5 - add r8, r0, r5 -_0204DFE0: - mov r6, lr - ldrb r3, [ip, sb] - b _0204DFF8 -_0204DFEC: - cmp r6, r3 - beq _0204E000 - add r6, r6, #1 -_0204DFF8: - cmp r6, #0x20 - blt _0204DFEC -_0204E000: - ldrb r3, [r7, r6] - strb r3, [r8, sb] - add sb, sb, #1 - cmp sb, #0x20 - blt _0204DFE0 - add r5, r5, #0x20 -_0204E018: - cmp r5, r2 - blo _0204DFD4 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0204E028: .word ARM9_UNKNOWN_TABLE__NA_209E280 - arm_func_end sub_0204DFB0 - - arm_func_start sub_0204E02C -sub_0204E02C: ; 0x0204E02C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov sl, r0 - and r0, sl, #0xf - add r0, r0, sl, asr #4 - add r0, r0, #8 - tst sl, #1 - movne r7, #1 - mov r5, #0 - mov sb, r1 - mov r8, r2 - and r6, r0, #0xff - mvneq r7, #0 - mov r1, r5 - ldr r4, _0204E09C ; =WONDER_MAIL_ENCRYPTION_TABLE - b _0204E090 -_0204E068: - mla r0, r1, r7, sl - and r0, r0, #0xff - ldrb r3, [sb, r5] - ldrb r2, [r4, r0] - add r0, r1, #1 - mov r1, r6 - add r2, r3, r2 - strb r2, [sb, r5] - bl _s32_div_f - add r5, r5, #1 -_0204E090: - cmp r5, r8 - blo _0204E068 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0204E09C: .word WONDER_MAIL_ENCRYPTION_TABLE - arm_func_end sub_0204E02C - - arm_func_start sub_0204E0A0 -sub_0204E0A0: ; 0x0204E0A0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov sl, r0 - and r0, sl, #0xf - add r0, r0, sl, asr #4 - add r0, r0, #8 - tst sl, #1 - movne r7, #1 - mov r5, #0 - mov sb, r1 - mov r8, r2 - and r6, r0, #0xff - mvneq r7, #0 - mov r1, r5 - ldr r4, _0204E110 ; =WONDER_MAIL_ENCRYPTION_TABLE - b _0204E104 -_0204E0DC: - mla r0, r1, r7, sl - and r0, r0, #0xff - ldrb r3, [sb, r5] - ldrb r2, [r4, r0] - add r0, r1, #1 - mov r1, r6 - sub r2, r3, r2 - strb r2, [sb, r5] - bl _s32_div_f - add r5, r5, #1 -_0204E104: - cmp r5, r8 - blo _0204E0DC - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0204E110: .word WONDER_MAIL_ENCRYPTION_TABLE - arm_func_end sub_0204E0A0 - - arm_func_start sub_0204E114 -sub_0204E114: ; 0x0204E114 - stmdb sp!, {r4, lr} - mov r4, r0 - bl GetDungeonModeSpecial - cmp r0, #3 -#ifdef JAPAN - moveq r0, #0x37c -#else - ldreq r0, _0204E14C ; =0x00000B2C -#endif - beq _0204E144 - cmp r4, #0xd4 - ldreq r0, _0204E150 ; =0x00000B2D -#ifdef JAPAN - addne r0, r4, #0x2c8 -#else - addne r0, r4, #0x278 - addne r0, r0, #0x800 -#endif - movne r0, r0, lsl #0x10 - movne r0, r0, lsr #0x10 -_0204E144: - bl StringFromId - ldmia sp!, {r4, pc} - .align 2, 0 -#ifdef JAPAN -_0204E150: .word 0x0000037D -#else -_0204E14C: .word 0x00000B2C -_0204E150: .word 0x00000B2D -#endif - arm_func_end sub_0204E114 - - arm_func_start sub_0204E154 -sub_0204E154: ; 0x0204E154 - stmdb sp!, {r3, lr} - sub sp, sp, #0x10 - mov r3, r0 - mov r2, r1 - add r0, sp, #0 - mov r1, r3 - bl sub_02050990 - add r0, sp, #0 - bl sub_0204ABB8 - add r0, sp, #0 - bl sub_0204F9F4 - add r0, sp, #0 - bl CopyLogTo - add r0, sp, #0 - bl sub_020509BC - ldr r0, [sp, #8] - add sp, sp, #0x10 - ldmia sp!, {r3, pc} - arm_func_end sub_0204E154 - - arm_func_start sub_0204E19C -sub_0204E19C: ; 0x0204E19C - stmdb sp!, {r3, lr} - sub sp, sp, #0x10 - mov r3, r0 - mov r2, r1 - add r0, sp, #0 - mov r1, r3 - bl sub_02050974 - add r0, sp, #0 - bl sub_0204ACDC - add r0, sp, #0 - bl sub_0204FA0C - add r0, sp, #0 - bl CopyLogFrom - add r0, sp, #0 - bl sub_020509BC - ldr r0, [sp, #8] - add sp, sp, #0x10 - ldmia sp!, {r3, pc} - arm_func_end sub_0204E19C - - arm_func_start sub_0204E1E4 -sub_0204E1E4: ; 0x0204E1E4 - stmdb sp!, {r3, lr} - mov r0, #0 - bl sub_0204E8EC - ldr r1, _0204E208 ; =_022AB4F8 - mov r2, #0 - ldr r0, _0204E20C ; =_022AB5AC - strb r2, [r1, #1] - bl sub_0200C4CC - ldmia sp!, {r3, pc} - .align 2, 0 -_0204E208: .word _022AB4F8 -_0204E20C: .word _022AB5AC - arm_func_end sub_0204E1E4 - - arm_func_start sub_0204E210 -sub_0204E210: ; 0x0204E210 - stmdb sp!, {r3, lr} - bl GetGameMode - cmp r0, #1 - mov r0, #0 - bhi _0204E2AC - mov r2, r0 - mov r1, #0x32 - bl LoadScriptVariableValueAtIndex - cmp r0, #6 - cmpne r0, #0xa - mov r0, #0 - bne _0204E258 - mov r2, r0 - mov r1, #0x2e - bl LoadScriptVariableValueAtIndex - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - ldmia sp!, {r3, pc} -_0204E258: - mov r1, #0x32 - mov r2, #1 - bl LoadScriptVariableValueAtIndex - cmp r0, #6 - cmpne r0, #0xa - mov r0, #0 - bne _0204E28C - mov r1, #0x2e - mov r2, #1 - bl LoadScriptVariableValueAtIndex - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - ldmia sp!, {r3, pc} -_0204E28C: - mov r1, #0x32 - mov r2, #2 - bl LoadScriptVariableValueAtIndex - cmp r0, #6 - cmpne r0, #0xa - bne _0204E2D4 - mov r0, #2 - ldmia sp!, {r3, pc} -_0204E2AC: - mov r1, #0x2c - bl LoadScriptVariableValue - cmp r0, #6 - bne _0204E2D4 - mov r0, #0 - mov r1, #0x28 - bl LoadScriptVariableValue - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - ldmia sp!, {r3, pc} -_0204E2D4: - mvn r0, #0 - ldmia sp!, {r3, pc} - arm_func_end sub_0204E210 - - arm_func_start sub_0204E2DC -sub_0204E2DC: ; 0x0204E2DC - stmdb sp!, {r4, lr} - mov r4, r0 - bl GetGameMode - strb r0, [r4] - cmp r0, #1 - mov r0, #0 - bhi _0204E398 - mov r2, r0 - mov r1, #0x32 - bl LoadScriptVariableValueAtIndex - cmp r0, #6 - cmpne r0, #0xa - mov r0, #0 - bne _0204E334 - mov r3, #2 - mov r2, r0 - mov r1, #0x2e - strb r3, [r4] - bl LoadScriptVariableValueAtIndex - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - ldmia sp!, {r4, pc} -_0204E334: - mov r1, #0x32 - mov r2, #1 - bl LoadScriptVariableValueAtIndex - cmp r0, #6 - cmpne r0, #0xa - mov r0, #0 - bne _0204E370 - mov r3, #3 - mov r1, #0x2e - mov r2, #1 - strb r3, [r4] - bl LoadScriptVariableValueAtIndex - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - ldmia sp!, {r4, pc} -_0204E370: - mov r1, #0x32 - mov r2, #2 - bl LoadScriptVariableValueAtIndex - cmp r0, #6 - cmpne r0, #0xa - bne _0204E3C0 - mov r0, #4 - strb r0, [r4] - mov r0, #2 - ldmia sp!, {r4, pc} -_0204E398: - mov r1, #0x2c - bl LoadScriptVariableValue - cmp r0, #6 - bne _0204E3C0 - mov r0, #0 - mov r1, #0x28 - bl LoadScriptVariableValue - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - ldmia sp!, {r4, pc} -_0204E3C0: - mvn r0, #0 - ldmia sp!, {r4, pc} - arm_func_end sub_0204E2DC - - arm_func_start sub_0204E3C8 -sub_0204E3C8: ; 0x0204E3C8 - stmdb sp!, {r3, lr} - bl sub_02048BFC - cmp r0, #2 - bne _0204E400 - bl sub_02048CB8 - ldr r1, _0204E408 ; =0x000F1207 - cmp r0, r1 - bne _0204E400 - mov r0, #1 - mov r1, #0 - bl GetSosMailCount - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} -_0204E400: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0204E408: .word 0x000F1207 - arm_func_end sub_0204E3C8 - - arm_func_start sub_0204E40C -sub_0204E40C: ; 0x0204E40C - stmdb sp!, {r3, lr} - bl sub_02048BFC - cmp r0, #2 - bne _0204E458 - bl sub_02048CB8 - ldr r1, _0204E460 ; =0x000F1207 - cmp r0, r1 - bne _0204E458 - mov r0, #1 - mov r1, #0 - bl GetSosMailCount - cmp r0, #0 - bne _0204E458 - mov r0, #7 - mov r1, #0 - bl GetSosMailCount - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} -_0204E458: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0204E460: .word 0x000F1207 - arm_func_end sub_0204E40C - - arm_func_start sub_0204E464 -sub_0204E464: ; 0x0204E464 - stmdb sp!, {r3, lr} - bl sub_02048BFC - cmp r0, #2 - bne _0204E4B0 - bl sub_02048CB8 - ldr r1, _0204E4B8 ; =0x000F1207 - cmp r0, r1 - bne _0204E4B0 - mov r0, #1 - mov r1, #0 - bl GetSosMailCount - cmp r0, #0 - beq _0204E4B0 - mov r0, #7 - mov r1, #0 - bl GetSosMailCount - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} -_0204E4B0: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0204E4B8: .word 0x000F1207 - arm_func_end sub_0204E464 - - arm_func_start sub_0204E4BC -sub_0204E4BC: ; 0x0204E4BC - stmdb sp!, {r3, lr} - bl sub_02048BFC - cmp r0, #2 - bne _0204E4E0 - bl sub_02048CB8 - ldr r1, _0204E4E8 ; =0x000F1207 - cmp r0, r1 - moveq r0, #0 - ldmeqia sp!, {r3, pc} -_0204E4E0: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0204E4E8: .word 0x000F1207 - arm_func_end sub_0204E4BC - - arm_func_start sub_0204E4EC -sub_0204E4EC: ; 0x0204E4EC - stmdb sp!, {r4, lr} - bl sub_02048CB8 - mov r4, r0 - bl sub_02048BFC - cmp r0, #2 - bne _0204E524 - ldr r1, _0204E52C ; =0x000F1207 - cmp r4, r1 - addne r0, r1, #1 - cmpne r4, r0 - addne r0, r1, #3 - cmpne r4, r0 - movne r0, #1 - ldmneia sp!, {r4, pc} -_0204E524: - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_0204E52C: .word 0x000F1207 - arm_func_end sub_0204E4EC - - arm_func_start sub_0204E530 -sub_0204E530: ; 0x0204E530 - stmdb sp!, {r3, lr} - bl sub_02048BFC - cmp r0, #1 - bne _0204E57C - mov r0, #1 - mov r1, #0 - bl GetSosMailCount - cmp r0, #0 - bne _0204E57C - mov r0, #7 - mov r1, #0 - bl GetSosMailCount - cmp r0, #0 - bne _0204E57C - bl sub_0204E210 - mvn r1, #0 - cmp r0, r1 - moveq r0, #1 - ldmeqia sp!, {r3, pc} -_0204E57C: - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end sub_0204E530 - - arm_func_start sub_0204E584 -sub_0204E584: ; 0x0204E584 - stmdb sp!, {r3, lr} - bl sub_02048BFC - cmp r0, #1 - bne _0204E5DC - mov r0, #1 - mov r1, #0 - bl GetSosMailCount - cmp r0, #0 - bne _0204E5DC - mov r0, #7 - mov r1, #0 - bl GetSosMailCount - cmp r0, #0 - bne _0204E5DC - bl sub_0204E210 - mvn r1, #0 - cmp r0, r1 - bne _0204E5DC - bl sub_0205633C - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} -_0204E5DC: - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end sub_0204E584 - - arm_func_start sub_0204E5E4 -sub_0204E5E4: ; 0x0204E5E4 - stmdb sp!, {r3, lr} - bl sub_02048BFC - cmp r0, #1 - bne _0204E63C - mov r0, #1 - mov r1, #0 - bl GetSosMailCount - cmp r0, #0 - bne _0204E63C - mov r0, #7 - mov r1, #0 - bl GetSosMailCount - cmp r0, #0 - bne _0204E63C - bl sub_0204E210 - mvn r1, #0 - cmp r0, r1 - bne _0204E63C - bl sub_02056360 - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} -_0204E63C: - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end sub_0204E5E4 - - arm_func_start sub_0204E644 -sub_0204E644: ; 0x0204E644 - stmdb sp!, {r3, lr} - mov r0, #4 - bl GetPerformanceFlagWithChecks - cmp r0, #0 - beq _0204E69C - bl sub_02048BFC - cmp r0, #1 - bne _0204E69C - mov r0, #1 - mov r1, #0 - bl GetSosMailCount - cmp r0, #0 - bne _0204E69C - mov r0, #7 - mov r1, #0 - bl GetSosMailCount - cmp r0, #0 - bne _0204E69C - bl sub_0205633C - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} -_0204E69C: - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end sub_0204E644 - - arm_func_start sub_0204E6A4 -sub_0204E6A4: ; 0x0204E6A4 - stmdb sp!, {r3, lr} - bl sub_02048BFC - cmp r0, #2 - bne _0204E6F0 - bl sub_02048CB8 - ldr r1, _0204E6F8 ; =0x000F1207 - cmp r0, r1 - bne _0204E6F0 - mov r0, #1 - mov r1, #0 - bl GetSosMailCount - cmp r0, #0 - beq _0204E6F0 - mov r0, #7 - mov r1, #0 - bl GetSosMailCount - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} -_0204E6F0: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0204E6F8: .word 0x000F1207 - arm_func_end sub_0204E6A4 - - arm_func_start sub_0204E6FC -sub_0204E6FC: ; 0x0204E6FC - ldr r0, _0204E708 ; =PENDING_DUNGEON_ID - ldrsb r0, [r0, #0xd] - bx lr - .align 2, 0 -_0204E708: .word PENDING_DUNGEON_ID - arm_func_end sub_0204E6FC - - arm_func_start sub_0204E70C -sub_0204E70C: ; 0x0204E70C - stmdb sp!, {r4, lr} - ldr r0, _0204E75C ; =PENDING_DUNGEON_ID - ldrsb r4, [r0, #0xd] - and r1, r4, #0xff - cmp r1, #1 - bhi _0204E754 - ldrsh r0, [r0, #2] - bl GetDungeonModeSpecial - cmp r0, #1 - beq _0204E744 - cmp r0, #2 - beq _0204E74C - cmp r0, #3 - bne _0204E754 -_0204E744: - mov r0, #0 - ldmia sp!, {r4, pc} -_0204E74C: - mov r0, #1 - ldmia sp!, {r4, pc} -_0204E754: - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_0204E75C: .word PENDING_DUNGEON_ID - arm_func_end sub_0204E70C - - arm_func_start sub_0204E760 -sub_0204E760: ; 0x0204E760 - ldr r0, _0204E76C ; =PENDING_DUNGEON_ID - ldrsh r0, [r0, #2] - bx lr - .align 2, 0 -_0204E76C: .word PENDING_DUNGEON_ID - arm_func_end sub_0204E760 - - arm_func_start sub_0204E770 -sub_0204E770: ; 0x0204E770 - ldr r0, _0204E77C ; =PENDING_DUNGEON_ID - ldrb r0, [r0] - bx lr - .align 2, 0 -_0204E77C: .word PENDING_DUNGEON_ID - arm_func_end sub_0204E770 - - arm_func_start sub_0204E780 -sub_0204E780: ; 0x0204E780 - ldr r0, _0204E78C ; =PENDING_DUNGEON_ID - ldrb r0, [r0, #0x14] - bx lr - .align 2, 0 -_0204E78C: .word PENDING_DUNGEON_ID - arm_func_end sub_0204E780 - - arm_func_start sub_0204E790 -sub_0204E790: ; 0x0204E790 - stmdb sp!, {r4, lr} - ldr lr, _0204E7B4 ; =PENDING_DUNGEON_ID - mov r4, r0 - mov ip, #0xb -_0204E7A0: - ldmia lr!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _0204E7A0 - ldmia sp!, {r4, pc} - .align 2, 0 -_0204E7B4: .word PENDING_DUNGEON_ID - arm_func_end sub_0204E790 - - arm_func_start sub_0204E7B8 -sub_0204E7B8: ; 0x0204E7B8 - stmdb sp!, {r3, lr} - ldr r1, _0204E8E0 ; =PENDING_DUNGEON_ID - mov r0, #0 - ldrsb r2, [r1, #0xd] - mov r1, #0x28 - bl SaveScriptVariableValue - ldr r1, _0204E8E0 ; =PENDING_DUNGEON_ID - mov r0, #0 - ldrsh r2, [r1, #2] - mov r1, #0x27 - bl SaveScriptVariableValue - ldr r1, _0204E8E0 ; =PENDING_DUNGEON_ID - mov r0, #0 - ldrsh r2, [r1, #2] - mov r1, #0x29 - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x2c - mov r2, #6 - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x2b - mov r2, #6 - bl SaveScriptVariableValue - ldr r0, _0204E8E0 ; =PENDING_DUNGEON_ID - ldrsb r0, [r0, #0xd] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _0204E8D4 -_0204E82C: ; jump table - b _0204E8D4 ; case 0 - b _0204E83C ; case 1 - b _0204E8B0 ; case 2 - b _0204E8D4 ; case 3 -_0204E83C: - mov r0, #0 - mov r1, #0x27 - mov r2, #0xd7 - bl SaveScriptVariableValue - ldr r0, _0204E8E0 ; =PENDING_DUNGEON_ID - ldr r1, _0204E8E4 ; =_022AB518 - ldrb r0, [r0] - bl sub_0205F00C - cmp r0, #0 - beq _0204E8D4 - ldr r1, _0204E8E0 ; =PENDING_DUNGEON_ID - ldrb r1, [r1, #0x1d] - cmp r1, #0 - beq _0204E8A0 - add r0, r0, #4 - bl sub_0204F7A8 - ldr r1, _0204E8E8 ; =CLIENT_LEVEL_TABLE - mov r0, r0, lsl #1 - ldrsh r1, [r1, r0] - ldr r3, _0204E8E0 ; =PENDING_DUNGEON_ID - mov ip, #1 - ldr r0, _0204E8E4 ; =_022AB518 - mov r2, #0 - strb ip, [r3, #0x1d] - bl ApplyLevelUpBoostsToGroundMonster -_0204E8A0: - ldr r0, _0204E8E0 ; =PENDING_DUNGEON_ID - mov r1, #1 - strb r1, [r0, #0xf] - b _0204E8D4 -_0204E8B0: - mov r0, #0 - mov r1, #0x27 - mov r2, #0xd6 - bl SaveScriptVariableValue - ldr r1, _0204E8E0 ; =PENDING_DUNGEON_ID - mov r0, #0 - ldrsb r2, [r1, #0x12] - mov r1, #0x29 - bl SaveScriptVariableValue -_0204E8D4: - ldr r0, _0204E8E0 ; =PENDING_DUNGEON_ID - ldrsb r0, [r0, #0xd] - ldmia sp!, {r3, pc} - .align 2, 0 -_0204E8E0: .word PENDING_DUNGEON_ID -_0204E8E4: .word _022AB518 -_0204E8E8: .word CLIENT_LEVEL_TABLE - arm_func_end sub_0204E7B8 - - arm_func_start sub_0204E8EC -sub_0204E8EC: ; 0x0204E8EC - stmdb sp!, {r4, lr} - movs r4, r0 - beq _0204E920 - ldr lr, _0204E944 ; =PENDING_DUNGEON_ID - mov ip, #0xb -_0204E900: - ldmia r4!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _0204E900 - ldr r0, _0204E948 ; =_022AB4F8 - mov r1, #1 - strb r1, [r0] - ldmia sp!, {r4, pc} -_0204E920: - mov r3, #0 - ldr r0, _0204E944 ; =PENDING_DUNGEON_ID - sub r2, r3, #1 - strb r2, [r0, #0xd] - ldr r1, _0204E948 ; =_022AB4F8 - strb r2, [r0, #0xe] - strb r3, [r1] - strh r2, [r0, #2] - ldmia sp!, {r4, pc} - .align 2, 0 -_0204E944: .word PENDING_DUNGEON_ID -_0204E948: .word _022AB4F8 - arm_func_end sub_0204E8EC - - arm_func_start SetEnterDungeon -SetEnterDungeon: ; 0x0204E94C - stmdb sp!, {r3, lr} - mov r1, r0 - ldr r0, _0204E96C ; =PENDING_DUNGEON_ID - bl InitDungeonInit - ldr r0, _0204E970 ; =_022AB4F8 - mov r1, #1 - strb r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0204E96C: .word PENDING_DUNGEON_ID -_0204E970: .word _022AB4F8 - arm_func_end SetEnterDungeon - - arm_func_start sub_0204E974 -sub_0204E974: ; 0x0204E974 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl sub_0205B77C - ldr r2, _0204EA4C ; =PENDING_DUNGEON_ID - mov r1, #2 - mov r4, r0 - strb r1, [r2, #0xd] - sub r0, r1, #3 - strb r0, [r2, #0xe] - mov r0, #0xd6 - strh r0, [r2, #2] - ldr r0, _0204EA50 ; =_022AB510 - mov r1, r5 - strb r5, [r2, #0x12] - bl sub_0205BB7C - ldr r0, _0204EA54 ; =_022AB5A8 - mov r1, r5 - bl sub_0205BD14 - ldr r1, _0204EA4C ; =PENDING_DUNGEON_ID - mov r2, #0 - strb r2, [r1, #0xf] - strb r2, [r1, #0x10] - strb r2, [r1, #4] - mov r0, #7 - strb r2, [r1, #0x11] - bl GetPerformanceFlagWithChecks - ldr r1, _0204EA4C ; =PENDING_DUNGEON_ID - mov r2, #0 - strb r0, [r1, #5] - mov r0, #6 - strb r2, [r1, #6] - bl GetPerformanceFlagWithChecks - ldr r1, _0204EA4C ; =PENDING_DUNGEON_ID - strb r0, [r1, #8] - mov r0, #1 - bl GetPerformanceFlagWithChecks - ldr r1, _0204EA4C ; =PENDING_DUNGEON_ID - mov r2, #0 - strb r0, [r1, #9] - strb r2, [r1, #0xa] - strb r2, [r1, #0xb] - strb r2, [r1, #7] - strb r2, [r1, #0xc] - ldrb r0, [r4, #4] - add r0, r0, #0xda - and r0, r0, #0xff - cmp r0, #5 - strlsb r2, [r1, #5] - movls r0, #1 - strlsb r0, [r1, #7] - ldr r0, _0204EA58 ; =_022AB4F8 - mov r1, #1 - strb r1, [r0] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0204EA4C: .word PENDING_DUNGEON_ID -_0204EA50: .word _022AB510 -_0204EA54: .word _022AB5A8 -_0204EA58: .word _022AB4F8 - arm_func_end sub_0204E974 - - arm_func_start InitDungeonInit -InitDungeonInit: ; 0x0204EA5C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - bl GetGameMode - mov r4, r0 - mov r0, r6 - strh r6, [r7, #2] - bl DungeonSwapIdxToId - strb r0, [r7] - mov r1, #1 - strb r1, [r7, #1] - sub r1, r1, #2 - strb r1, [r7, #0x12] - mov r0, #0 - str r0, [r7, #0xac] - strb r0, [r7, #0xd] - strb r1, [r7, #0xe] - strb r0, [r7, #4] - strb r0, [r7, #0xf] - strb r0, [r7, #0x10] - strb r0, [r7, #0x11] - cmp r4, #2 - strneb r0, [r7, #5] - strneb r0, [r7, #6] - strneb r0, [r7, #8] - bne _0204EAF0 - mov r0, #7 - bl GetPerformanceFlagWithChecks - strb r0, [r7, #5] - mov r0, #5 - bl GetPerformanceFlagWithChecks - strb r0, [r7, #6] - mov r0, #6 - bl GetPerformanceFlagWithChecks - strb r0, [r7, #8] - mov r0, #1 - bl GetPerformanceFlagWithChecks -_0204EAF0: - strb r0, [r7, #9] - mov r3, #0 - strb r3, [r7, #0xa] - strb r3, [r7, #0xb] - strb r3, [r7, #7] - strb r3, [r7, #0xc] - mov r1, r3 - mov r0, #0x44 -_0204EB10: - mla r2, r3, r0, r7 - strb r1, [r2, #0x1c] - add r3, r3, #1 - strh r1, [r2, #0x20] - cmp r3, #2 - blt _0204EB10 - cmp r4, #5 - bne _0204EB88 - mov r0, #1 - strb r0, [r7, #5] - strb r1, [r7, #6] - strb r1, [r7, #8] - strb r1, [r7, #9] - strb r1, [r7, #0xb] - mov r0, #3 - strb r0, [r7, #0xd] - strb r1, [r7, #4] - sub r0, r6, #0x26 - strb r1, [r7, #0x11] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _0204EB84 -_0204EB68: ; jump table - b _0204EB80 ; case 0 - b _0204EB80 ; case 1 - b _0204EB80 ; case 2 - b _0204EB80 ; case 3 - b _0204EB80 ; case 4 - b _0204EB80 ; case 5 -_0204EB80: - strb r1, [r7, #5] -_0204EB84: - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0204EB88: - mov r0, r6 - bl GetDungeonModeSpecial - cmp r0, #1 - beq _0204EBB0 - cmp r0, #2 - beq _0204EF50 - cmp r0, #3 - moveq r0, #0 - streqb r0, [r7, #0xd] - b _0204EF88 -_0204EBB0: - mov r4, #0 - mov r0, r6 - strb r4, [r7, #0xd] - mov r5, r4 - bl IsNoLossPenaltyDungeon - strb r0, [r7, #0xc] - cmp r6, #0x44 - bgt _0204ECA4 - bge _0204EE70 - cmp r6, #0x3e - bgt _0204EC60 - bge _0204EE68 - cmp r6, #0x21 - bgt _0204EC1C - bge _0204EDEC - cmp r6, #0xb - bgt _0204EC10 - subs r0, r6, #8 - addpl pc, pc, r0, lsl #2 - b _0204EF34 -_0204EC00: ; jump table - b _0204ED88 ; case 0 - b _0204ED9C ; case 1 - b _0204EDB0 ; case 2 - b _0204EDC4 ; case 3 -_0204EC10: - cmp r6, #0x20 - beq _0204EDD8 - b _0204EF34 -_0204EC1C: - cmp r6, #0x22 - bgt _0204EC2C - beq _0204EE10 - b _0204EF34 -_0204EC2C: - sub r0, r6, #0x23 - cmp r0, #8 - addls pc, pc, r0, lsl #2 - b _0204EF34 -_0204EC3C: ; jump table - b _0204EE24 ; case 0 - b _0204EF34 ; case 1 - b _0204EF34 ; case 2 - b _0204EE48 ; case 3 - b _0204EE48 ; case 4 - b _0204EE48 ; case 5 - b _0204EE60 ; case 6 - b _0204EE60 ; case 7 - b _0204EE60 ; case 8 -_0204EC60: - cmp r6, #0x41 - bgt _0204EC88 - bge _0204EE68 - cmp r6, #0x3f - bgt _0204EC7C - beq _0204EE68 - b _0204EF34 -_0204EC7C: - cmp r6, #0x40 - beq _0204EE68 - b _0204EF34 -_0204EC88: - cmp r6, #0x42 - bgt _0204EC98 - beq _0204EE68 - b _0204EF34 -_0204EC98: - cmp r6, #0x43 - beq _0204EE70 - b _0204EF34 -_0204ECA4: - cmp r6, #0x73 - bgt _0204ECF4 - bge _0204EE88 - cmp r6, #0x70 - bgt _0204ECD8 - bge _0204EE88 - cmp r6, #0x45 - bgt _0204ECCC - beq _0204EE70 - b _0204EF34 -_0204ECCC: - cmp r6, #0x6f - beq _0204EE88 - b _0204EF34 -_0204ECD8: - cmp r6, #0x71 - bgt _0204ECE8 - beq _0204EE88 - b _0204EF34 -_0204ECE8: - cmp r6, #0x72 - beq _0204EE88 - b _0204EF34 -_0204ECF4: - cmp r6, #0x76 - bgt _0204ED1C - bge _0204EE88 - cmp r6, #0x74 - bgt _0204ED10 - beq _0204EE88 - b _0204EF34 -_0204ED10: - cmp r6, #0x75 - beq _0204EE88 - b _0204EF34 -_0204ED1C: - cmp r6, #0x87 - bgt _0204ED7C - subs r0, r6, #0x78 - addpl pc, pc, r0, lsl #2 - b _0204ED70 -_0204ED30: ; jump table - b _0204EE88 ; case 0 - b _0204EE88 ; case 1 - b _0204EE88 ; case 2 - b _0204EE9C ; case 3 - b _0204EEC4 ; case 4 - b _0204EF34 ; case 5 - b _0204EF34 ; case 6 - b _0204EF34 ; case 7 - b _0204EEEC ; case 8 - b _0204EF34 ; case 9 - b _0204EF34 ; case 10 - b _0204EF34 ; case 11 - b _0204EF34 ; case 12 - b _0204EF34 ; case 13 - b _0204EF34 ; case 14 - b _0204EF10 ; case 15 -_0204ED70: - cmp r6, #0x77 - beq _0204EE88 - b _0204EF34 -_0204ED7C: - cmp r6, #0xa4 - beq _0204EF24 - b _0204EF34 -_0204ED88: - ldr r2, _0204EF98 ; =_020A2904 - mov r0, r7 - mov r1, r4 - bl AddGuestMonster - b _0204EF34 -_0204ED9C: - ldr r2, _0204EF9C ; =_020A2AD8 - mov r0, r7 - mov r1, r4 - bl AddGuestMonster - b _0204EF34 -_0204EDB0: - ldr r2, _0204EFA0 ; =_020A2AB4 - mov r0, r7 - mov r1, r4 - bl AddGuestMonster - b _0204EF34 -_0204EDC4: - ldr r2, _0204EFA4 ; =_020A294C - mov r0, r7 - mov r1, r4 - bl AddGuestMonster - b _0204EF34 -_0204EDD8: - ldr r2, _0204EFA8 ; =_020A2970 - mov r0, r7 - mov r1, #0 - bl AddGuestMonster - b _0204EF34 -_0204EDEC: - ldr r2, _0204EFAC ; =_020A2A48 - mov r0, r7 - mov r1, r4 - bl AddGuestMonster - ldr r2, _0204EFB0 ; =_020A2A24 - mov r0, r7 - mov r1, #1 - bl AddGuestMonster - b _0204EF34 -_0204EE10: - ldr r2, _0204EFB4 ; =_020A29DC - mov r0, r7 - mov r1, r4 - bl AddGuestMonster - b _0204EF34 -_0204EE24: - mov r0, #0x19 - bl GetPerformanceFlagWithChecks - cmp r0, #0 - bne _0204EF34 - ldr r2, _0204EFB8 ; =_020A2A00 - mov r0, r7 - mov r1, r4 - bl AddGuestMonster - b _0204EF34 -_0204EE48: - ldr r2, _0204EFBC ; =_020A2A6C - mov r0, r7 - mov r1, r4 - mov r5, #1 - bl AddGuestMonster - b _0204EF34 -_0204EE60: - mov r4, #1 - b _0204EF34 -_0204EE68: - mov r4, #1 - b _0204EF34 -_0204EE70: - ldr r2, _0204EFC0 ; =_020A2A90 - mov r0, r7 - mov r1, #0 - bl AddGuestMonster - mov r4, #1 - b _0204EF34 -_0204EE88: - ldr r2, _0204EFC4 ; =_020A2AFC - mov r0, r7 - mov r1, #0 - bl AddGuestMonster - b _0204EF34 -_0204EE9C: - mov r0, r4 - mov r1, #0x10 - bl LoadScriptVariableValue - cmp r0, #0 - bne _0204EF34 - ldr r2, _0204EFC8 ; =_020A2B20 - mov r0, r7 - mov r1, r4 - bl AddGuestMonster - b _0204EF34 -_0204EEC4: - mov r0, r4 - mov r1, #0x10 - bl LoadScriptVariableValue - cmp r0, #0 - bne _0204EF34 - ldr r2, _0204EFCC ; =_020A2928 - mov r0, r7 - mov r1, r4 - bl AddGuestMonster - b _0204EF34 -_0204EEEC: - ldr r2, _0204EFD0 ; =GUEST_MONSTER_DATA - mov r0, r7 - mov r1, r4 - bl AddGuestMonster - ldr r2, _0204EFD4 ; =_020A28E0 - mov r0, r7 - mov r1, #1 - bl AddGuestMonster - b _0204EF34 -_0204EF10: - ldr r2, _0204EFD8 ; =_020A29B8 - mov r0, r7 - mov r1, r4 - bl AddGuestMonster - b _0204EF34 -_0204EF24: - ldr r2, _0204EFDC ; =_020A2994 - mov r0, r7 - mov r1, r4 - bl AddGuestMonster -_0204EF34: - cmp r4, #0 - movne r0, #1 - strneb r0, [r7, #0xb] - cmp r5, #0 - movne r0, #1 - strneb r0, [r7, #7] - b _0204EF88 -_0204EF50: - sub r0, r6, #0x26 - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _0204EF80 -_0204EF60: ; jump table - b _0204EF78 ; case 0 - b _0204EF78 ; case 1 - b _0204EF78 ; case 2 - b _0204EF78 ; case 3 - b _0204EF78 ; case 4 - b _0204EF78 ; case 5 -_0204EF78: - mov r0, #1 - strb r0, [r7, #0xb] -_0204EF80: - mov r0, #1 - strb r0, [r7, #0xd] -_0204EF88: - mov r0, #0 - strb r0, [r7, #4] - strb r0, [r7, #0x11] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0204EF98: .word _020A2904 -_0204EF9C: .word _020A2AD8 -_0204EFA0: .word _020A2AB4 -_0204EFA4: .word _020A294C -_0204EFA8: .word _020A2970 -_0204EFAC: .word _020A2A48 -_0204EFB0: .word _020A2A24 -_0204EFB4: .word _020A29DC -_0204EFB8: .word _020A2A00 -_0204EFBC: .word _020A2A6C -_0204EFC0: .word _020A2A90 -_0204EFC4: .word _020A2AFC -_0204EFC8: .word _020A2B20 -_0204EFCC: .word _020A2928 -_0204EFD0: .word GUEST_MONSTER_DATA -_0204EFD4: .word _020A28E0 -_0204EFD8: .word _020A29B8 -_0204EFDC: .word _020A2994 - arm_func_end InitDungeonInit - - arm_func_start IsNoLossPenaltyDungeon -IsNoLossPenaltyDungeon: ; 0x0204EFE0 - stmdb sp!, {r4, lr} - cmp r0, #0x1a - mov r4, #0 - cmpne r0, #0x79 - beq _0204F000 - cmp r0, #0x7d - beq _0204F008 - b _0204F01C -_0204F000: - mov r4, #1 - b _0204F01C -_0204F008: - mov r0, r4 - mov r1, #0x10 - bl LoadScriptVariableValue - cmp r0, #0 - moveq r4, #1 -_0204F01C: - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end IsNoLossPenaltyDungeon - - arm_func_start sub_0204F024 -sub_0204F024: ; 0x0204F024 - ldr r1, _0204F030 ; =PENDING_DUNGEON_ID - strb r0, [r1, #0xe] - bx lr - .align 2, 0 -_0204F030: .word PENDING_DUNGEON_ID - arm_func_end sub_0204F024 - - arm_func_start sub_0204F034 -sub_0204F034: ; 0x0204F034 - stmdb sp!, {r3, lr} - mov r0, #0 - mov r1, #0x28 - bl LoadScriptVariableValue - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - ldmia sp!, {r3, pc} - arm_func_end sub_0204F034 - - arm_func_start sub_0204F050 -sub_0204F050: ; 0x0204F050 - stmdb sp!, {r3, lr} - mov r0, #0 - mov r1, #0x27 - bl LoadScriptVariableValue - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mvn r1, #0 - cmp r0, r1 - cmpne r0, #0xd6 - ldmeqia sp!, {r3, pc} - cmp r0, #0xd7 - cmpeq r0, #0xd9 - cmpeq r0, #0xd8 - ldmeqia sp!, {r3, pc} - mov r0, #0 - mov r1, #0x29 - bl LoadScriptVariableValue - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - ldmia sp!, {r3, pc} - arm_func_end sub_0204F050 - - arm_func_start sub_0204F0A0 -sub_0204F0A0: ; 0x0204F0A0 - stmdb sp!, {r3, lr} - mov r0, #0 - mov r1, #0x27 - bl LoadScriptVariableValue - mov r0, r0, lsl #0x10 - mvn r1, #0 - cmp r1, r0, asr #16 - mov r0, r0, asr #0x10 - moveq r0, #0xff - ldmeqia sp!, {r3, pc} - cmp r0, #0xd6 - moveq r0, #0xd4 - ldmeqia sp!, {r3, pc} - sub r1, r0, #0xd7 - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - cmp r1, #2 - bhi _0204F104 - mov r0, #0 - mov r1, #0x29 - bl LoadScriptVariableValue - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 -_0204F104: - bl DungeonSwapIdxToId - ldmia sp!, {r3, pc} - arm_func_end sub_0204F0A0 - - arm_func_start sub_0204F10C -sub_0204F10C: ; 0x0204F10C - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0 - mov r1, #0x27 - bl LoadScriptVariableValue - mov r0, r0, lsl #0x10 - mov r1, r0, asr #0x10 - mvn r0, #0 - cmp r1, r0 - cmpne r1, #0xd6 - cmpne r1, #0xd7 - cmpne r1, #0xd8 - cmpne r1, #0xd9 - movne r0, #1 - strneh r1, [r4] - mvneq r0, #0 - streqh r0, [r4] - moveq r0, #0 - ldmia sp!, {r4, pc} - arm_func_end sub_0204F10C - - arm_func_start sub_0204F158 -sub_0204F158: ; 0x0204F158 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0 - mov r1, #0x27 - bl LoadScriptVariableValue - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - cmp r0, #0xd7 - bne _0204F1AC - mov r0, #0 - mov r1, #0x29 - bl LoadScriptVariableValue - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl DungeonSwapIdxToId - cmp r0, #0xff - beq _0204F1AC - cmp r0, #0xb4 - strlob r0, [r4] - movlo r0, #1 - ldmloia sp!, {r4, pc} -_0204F1AC: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end sub_0204F158 - - arm_func_start sub_0204F1B4 -sub_0204F1B4: ; 0x0204F1B4 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0 - mov r1, #0x27 - bl LoadScriptVariableValue - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - cmp r0, #0xd6 - mov r0, #0 - ldmneia sp!, {r4, pc} - mov r1, #0x29 - bl LoadScriptVariableValue - strb r0, [r4] - mov r0, #1 - ldmia sp!, {r4, pc} - arm_func_end sub_0204F1B4 - - arm_func_start sub_0204F1F0 -sub_0204F1F0: ; 0x0204F1F0 - stmdb sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - beq _0204F22C - ldr lr, _0204F23C ; =_022AB5AC - mov ip, #0xe -_0204F208: - ldmia r5!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _0204F208 - ldmia r5, {r0, r1} - ldr r2, _0204F240 ; =_022AB4F8 - stmia lr, {r0, r1} - strb r4, [r2, #1] - ldmia sp!, {r3, r4, r5, pc} -_0204F22C: - ldr r0, _0204F240 ; =_022AB4F8 - mov r1, #0 - strb r1, [r0, #1] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0204F23C: .word _022AB5AC -_0204F240: .word _022AB4F8 - arm_func_end sub_0204F1F0 - - arm_func_start sub_0204F244 -sub_0204F244: ; 0x0204F244 - stmdb sp!, {r4, lr} - movs r4, r0 - beq _0204F270 - ldr lr, _0204F27C ; =_022AB5AC - mov ip, #0xe -_0204F258: - ldmia lr!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _0204F258 - ldmia lr, {r0, r1} - stmia r4, {r0, r1} -_0204F270: - ldr r0, _0204F280 ; =_022AB4F8 - ldrb r0, [r0, #1] - ldmia sp!, {r4, pc} - .align 2, 0 -_0204F27C: .word _022AB5AC -_0204F280: .word _022AB4F8 - arm_func_end sub_0204F244 - - arm_func_start sub_0204F284 -sub_0204F284: ; 0x0204F284 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov sl, r0 - add r0, sp, #0 - mov sb, r1 - bl GetPartyMembers - mov r6, r0 - mov r0, sl - bl GetMaxMembersAllowed - cmp r6, r0 - ble _0204F2C0 - cmp r0, #1 - ldreq r0, _0204F354 ; =0x00000301 - ldrne r0, _0204F358 ; =0x00000101 - b _0204F34C -_0204F2C0: - cmp sb, #0 - beq _0204F2D8 - add r0, r6, #1 - cmp r0, #4 - ldrgt r0, _0204F358 ; =0x00000101 - bgt _0204F34C -_0204F2D8: - mov r7, #0 - mov r8, r7 - add r5, sp, #0 - ldr r4, _0204F35C ; =TEAM_MEMBER_TABLE_PTR - mov fp, #0x44 - b _0204F310 -_0204F2F0: - mov r0, r8, lsl #1 - ldrsh r0, [r5, r0] - ldr r1, [r4] - smlabb r0, r0, fp, r1 - ldrsh r0, [r0, #4] - bl GetBodySize - add r7, r7, r0 - add r8, r8, #1 -_0204F310: - cmp r8, r6 - blt _0204F2F0 - cmp sb, #0 - beq _0204F32C - mov r0, sb - bl GetBodySize - add r7, r7, r0 -_0204F32C: - cmp r7, #6 - movgt r0, #0x81 - bgt _0204F34C - mov r0, sl - bl IsLevelResetDungeon - cmp r0, #0 - ldrne r0, _0204F360 ; =0x00002002 - moveq r0, #0 -_0204F34C: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0204F354: .word 0x00000301 -_0204F358: .word 0x00000101 -_0204F35C: .word TEAM_MEMBER_TABLE_PTR -_0204F360: .word 0x00002002 - arm_func_end sub_0204F284 - - arm_func_start sub_0204F364 -sub_0204F364: ; 0x0204F364 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, #0 - bl GetMaxItemsAllowed - mov r4, r0 - bl GetNbItemsInBag - cmp r4, #0 - ble _0204F39C - cmp r4, r0 - bge _0204F39C - orr r5, r5, #2 - cmp r4, #0 - orreq r5, r5, #0x800 - orrne r5, r5, #0x400 -_0204F39C: - mov r0, r6 - bl IsMoneyAllowed - cmp r0, #0 - bne _0204F3BC - bl GetMoneyCarried - cmp r0, #0 - orrgt r5, r5, #2 - orrgt r5, r5, #0x1000 -_0204F3BC: - mov r0, r5 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end sub_0204F364 - - arm_func_start CheckMissionRestrictions -CheckMissionRestrictions: ; 0x0204F3C4 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl GetGameMode - cmp r0, #2 - bne _0204F424 - mov r0, r5 - bl DungeonSwapIdToIdx - bl GetDungeonModeSpecial - cmp r0, #2 - bne _0204F424 - add r1, sp, #2 - add r2, sp, #0 - mov r0, r5 - bl sub_0205EE40 - cmp r0, #0 - beq _0204F424 - ldrsh r0, [sp] - cmp r0, #0 - movne r0, #0x21 - ldmneia sp!, {r3, r4, r5, pc} - ldrh r0, [sp, #2] - cmp r0, #0 - movne r0, #0x41 - ldmneia sp!, {r3, r4, r5, pc} -_0204F424: - cmp r5, #0x26 - cmpne r5, #0x29 - cmpne r5, #0x3f - cmpne r5, #0x63 - cmpne r5, #0x64 - cmpne r5, #0x65 - cmpne r5, #0x66 - cmpne r5, #0x67 - cmpne r5, #0x68 - cmpne r5, #0x6b - cmpne r5, #0x6c - cmpne r5, #0x6d - cmpne r5, #0x6e - cmpne r5, #0xae - ldreq r0, _0204F484 ; =0x00004001 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, #0 - bl sub_0204F284 - mov r4, r0 - mov r0, r5 - bl sub_0204F364 - orr r0, r4, r0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0204F484: .word 0x00004001 - arm_func_end CheckMissionRestrictions - - arm_func_start sub_0204F488 -sub_0204F488: ; 0x0204F488 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - mov r8, r1 - mov r7, r2 - bl DungeonSwapIdToIdx - mov r5, r0 - mov r0, sb - bl GetMaxReachedFloor - mov r6, r0 - mov r0, r5 - bl GetDungeonMode - mov r4, r0 - cmp r4, #1 - moveq r0, #0x11 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r6, #1 - bge _0204F4EC - mov r0, r5 - bl sub_0204CEE0 - cmp r0, #0 - bne _0204F4EC - cmp r4, #3 - movne r0, #5 - moveq r0, #9 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0204F4EC: - cmp r8, r6 - movgt r0, #9 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp sb, #0x26 - cmpne sb, #0x29 - cmpne sb, #0x3f - cmpne sb, #0x63 - cmpne sb, #0x64 - cmpne sb, #0x65 - cmpne sb, #0x66 - cmpne sb, #0x67 - cmpne sb, #0x68 - cmpne sb, #0x6b - cmpne sb, #0x6c - cmpne sb, #0x6d - cmpne sb, #0x6e - cmpne sb, #0xae - ldreq r0, _0204F558 ; =0x00004001 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, sb - mov r1, r7 - bl sub_0204F284 - mov r4, r0 - mov r0, sb - bl sub_0204F364 - orr r0, r4, r0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0204F558: .word 0x00004001 - arm_func_end sub_0204F488 - - arm_func_start sub_0204F55C -sub_0204F55C: ; 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 sub_0204F55C - - 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 GetPerformanceFlagWithChecks - cmp r0, #0 - bne _0204F99C - ldr r0, _0204F9B0 ; =0x000042B9 - ldmia sp!, {r4, pc} -_0204F980: - cmp r4, #0x15 - bne _0204F99C - mov r0, #0x1c - bl GetPerformanceFlagWithChecks - 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 sub_0204CB2C -_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 sub_020515C4 - 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 GetPerformanceFlagWithChecks - 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 GetPerformanceFlagWithChecks - 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 GetPerformanceFlagWithChecks - 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 GetPerformanceFlagWithChecks - 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 GetPerformanceFlagWithChecks - 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_0204B018.s b/asm/main_0204B018.s new file mode 100644 index 00000000..793a484a --- /dev/null +++ b/asm/main_0204B018.s @@ -0,0 +1,7846 @@ + .include "asm/macros.inc" + .include "main_0204B018.inc" + + .text + + arm_func_start sub_0204B018 +sub_0204B018: ; 0x0204B018 + ldr r1, _0204B024 ; =GAME_MODE + strb r0, [r1] + bx lr + .align 2, 0 +_0204B024: .word GAME_MODE + arm_func_end sub_0204B018 + + arm_func_start sub_0204B028 +sub_0204B028: ; 0x0204B028 + ldr r1, _0204B040 ; =_0209DF70 + ldr ip, _0204B044 ; =Debug_Print0 + ldr r0, _0204B048 ; =_0209CF0C + ldrsh r1, [r1, #0x24] + mov r2, #0x400 + bx ip + .align 2, 0 +_0204B040: .word _0209DF70 +_0204B044: .word Debug_Print0 +_0204B048: .word _0209CF0C + arm_func_end sub_0204B028 + + arm_func_start InitScriptVariableValues +InitScriptVariableValues: ; 0x0204B04C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r1, #0 + ldr r0, _0204B2F8 ; =SCRIPT_VARS_VALUES + mov r7, r1 +_0204B05C: + strb r7, [r0, r1] + add r1, r1, #1 + cmp r1, #0x400 + blt _0204B05C + mov r4, #0 + ldr r6, _0204B2FC ; =SCRIPT_VARS + mov r5, r4 +_0204B078: + mov r0, r7, lsl #4 + ldrsh r0, [r6, r0] + add r8, r6, r7, lsl #4 + cmp r0, #0 + cmpne r0, #9 + beq _0204B0C4 + mov sb, r5 + b _0204B0B8 +_0204B098: + ldrsh r3, [r8, #0xa] + mov r0, r4 + mov r1, r7 + mov r2, sb + bl SaveScriptVariableValueAtIndex + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov sb, r0, lsr #0x10 +_0204B0B8: + ldrsh r0, [r8, #8] + cmp sb, r0 + blt _0204B098 +_0204B0C4: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 + cmp r7, #0x72 + blt _0204B078 + mov r0, #0 + mov r2, r0 + mov r1, #0x46 + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #1 + bl ZinitScriptVariable + bl InitEventFlagScriptVars + mov sl, #0 +#ifdef JAPAN + mov sb, sl + mov r8, #0x21 + mov r7, #0x13c + mov r6, sl + mov r5, #0x22 + mov fp, sl + mvn r4, #0 +#else + ldr r7, _0204B300 ; =0x00000137 + mov sb, sl +#ifdef EUROPE + sub r4, r7, #0x144 +#else + sub r4, r7, #0x138 +#endif + mov r8, #0x21 + mov r6, sl + mov r5, #0x22 + mov fp, sl +#endif +_0204B118: + mov r2, sl, lsl #0x10 + mov r0, sb + mov r1, r8 + mov r2, r2, lsr #0x10 + mov r3, r7 + bl SaveScriptVariableValueAtIndex + mov r2, sl, lsl #0x10 + mov r0, r6 + mov r1, r5 + mov r2, r2, lsr #0x10 + mov r3, r6 + bl SaveScriptVariableValueAtIndex + mov r2, sl, lsl #0x10 + mov r0, fp + mov r1, #0x23 + mov r2, r2, lsr #0x10 +#ifdef JAPAN + mov r3, #0x13c +#else + mov r3, r7 +#endif + bl SaveScriptVariableValueAtIndex + mov r2, sl, lsl #0x10 + mov r0, #0 + mov r1, #0x24 + mov r2, r2, lsr #0x10 + mov r3, r4 + bl SaveScriptVariableValueAtIndex + mov r2, sl, lsl #0x10 + mov r0, #0 + mov r1, #0x25 + mov r2, r2, lsr #0x10 + mov r3, #0xbb + bl SaveScriptVariableValueAtIndex + mov r0, #0 + mov r2, sl, lsl #0x10 + mov r1, #0x2d + mov r2, r2, lsr #0x10 + mov r3, r0 + bl SaveScriptVariableValueAtIndex + mov r2, sl, lsl #0x10 + mov r0, #0 + mov r1, #0x2f + mov r2, r2, lsr #0x10 + mov r3, r4 + bl SaveScriptVariableValueAtIndex + mov r0, #0 + mov r2, sl, lsl #0x10 + mov r1, #0x31 + mov r2, r2, lsr #0x10 + mov r3, r0 + bl SaveScriptVariableValueAtIndex + mov r0, #0 + mov r2, sl, lsl #0x10 + mov r1, #0x32 + mov r2, r2, lsr #0x10 + mov r3, r0 + bl SaveScriptVariableValueAtIndex + mov r0, #0 + mov r2, sl, lsl #0x10 + mov r1, #0x37 + mov r2, r2, lsr #0x10 + mov r3, r0 + bl SaveScriptVariableValueAtIndex + mov r2, sl, lsl #0x10 + mov r0, #0 + mov r1, #0x38 + mov r2, r2, lsr #0x10 + mov r3, #2 + bl SaveScriptVariableValueAtIndex + mov r0, #0 + mov r2, sl, lsl #0x10 + mov r1, #0x39 + mov r2, r2, lsr #0x10 + mov r3, r0 + bl SaveScriptVariableValueAtIndex + add sl, sl, #1 + cmp sl, #4 + blt _0204B118 + mov r1, #0x26 + sub r2, r1, #0x27 + mov r0, #0 + bl SaveScriptVariableValue + mov r0, #0 + mov r2, r0 + mov r1, #0x33 + bl SaveScriptVariableValue + mov r0, #0 + mov r2, r0 + mov r1, #0x6e + bl SaveScriptVariableValue + mov r0, #0 + mov r2, r0 + mov r1, #0x3e + bl SaveScriptVariableValue + mov r0, #0 + mov r2, r0 + mov r1, #0x40 + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x42 + mov r2, #4 + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x43 + mov r2, #1 + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x4a + sub r2, r1, #0x4b + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x4b + bl ZinitScriptVariable + mov r0, #0 + mov r1, #0x4c + bl ZinitScriptVariable + mov r0, #0 + mov r1, #0x4d + bl ZinitScriptVariable + bl InitScenarioScriptVars + bl InitWorldMapScriptVars + bl InitDungeonListScriptVars + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0204B2F8: .word SCRIPT_VARS_VALUES +_0204B2FC: .word SCRIPT_VARS +#if defined(EUROPE) +_0204B300: .word 0x00000143 +#elif !defined(JAPAN) +_0204B300: .word 0x00000137 +#endif + arm_func_end InitScriptVariableValues + + arm_func_start InitEventFlagScriptVars +InitEventFlagScriptVars: ; 0x0204B304 + stmdb sp!, {r3, lr} +#ifdef JAPAN + mov r0, #0 + mov r1, #0x1c + mov r2, #0x13c +#else + ldr r2, _0204B3CC ; =0x00000137 + mov r0, #0 + mov r1, #0x1c +#endif + bl SaveScriptVariableValue + mov r0, #0 + mov r2, r0 + mov r1, #0x1d + bl SaveScriptVariableValue +#ifdef JAPAN + mov r0, #0 + mov r1, #0x1e + mov r2, #0x13c +#else + ldr r2, _0204B3CC ; =0x00000137 + mov r0, #0 + mov r1, #0x1e +#endif + bl SaveScriptVariableValue + mov r1, #0x1f + sub r2, r1, #0x20 + mov r0, #0 + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x20 + mov r2, #0xbb + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x27 + mov r2, r0 + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x29 + sub r2, r1, #0x2a + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x2b + mov r2, r0 + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x2c + mov r2, r0 + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x34 + mov r2, r0 + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x35 + mov r2, #2 + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x36 + mov r2, r0 + bl SaveScriptVariableValue + ldmia sp!, {r3, pc} + .align 2, 0 +#if defined(EUROPE) +_0204B3CC: .word 0x00000143 +#elif !defined(JAPAN) +_0204B3CC: .word 0x00000137 +#endif + arm_func_end InitEventFlagScriptVars + + arm_func_start sub_0204B3D0 +sub_0204B3D0: ; 0x0204B3D0 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, r1 + cmp r4, #0x400 + mov r5, r0 + ldrlt r0, _0204B42C ; =SCRIPT_VARS + ldrge r1, _0204B430 ; =SCRIPT_VARS_LOCALS + addlt r7, r0, r4, lsl #4 + subge r0, r4, #0x400 + addge r7, r1, r0, lsl #4 + mov r6, #0 + b _0204B41C +_0204B3FC: + ldrsh r3, [r7, #0xa] + mov r0, r5 + mov r1, r4 + mov r2, r6 + bl SaveScriptVariableValueAtIndex + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 +_0204B41C: + ldrsh r0, [r7, #8] + cmp r6, r0 + blt _0204B3FC + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0204B42C: .word SCRIPT_VARS +_0204B430: .word SCRIPT_VARS_LOCALS + arm_func_end sub_0204B3D0 + + arm_func_start ZinitScriptVariable +ZinitScriptVariable: ; 0x0204B434 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r5, r1 + cmp r5, #0x400 + mov r6, r0 + ldrlt r0, _0204B494 ; =SCRIPT_VARS + mov r8, #0 + addlt r4, r0, r5, lsl #4 + ldrge r1, _0204B498 ; =SCRIPT_VARS_LOCALS + subge r0, r5, #0x400 + addge r4, r1, r0, lsl #4 + mov r7, r8 + b _0204B484 +_0204B464: + mov r0, r6 + mov r1, r5 + mov r2, r8 + mov r3, r7 + bl SaveScriptVariableValueAtIndex + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, lsr #0x10 +_0204B484: + ldrsh r0, [r4, #8] + cmp r8, r0 + blt _0204B464 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0204B494: .word SCRIPT_VARS +_0204B498: .word SCRIPT_VARS_LOCALS + arm_func_end ZinitScriptVariable + + arm_func_start LoadScriptVariableRaw +LoadScriptVariableRaw: ; 0x0204B49C + cmp r2, #0x400 + bge _0204B4C0 + ldr r1, _0204B4E0 ; =SCRIPT_VARS + ldr r3, _0204B4E4 ; =SCRIPT_VARS_VALUES + add r1, r1, r2, lsl #4 + str r1, [r0] + ldrsh r1, [r1, #4] + add r1, r3, r1 + b _0204B4D8 +_0204B4C0: + ldr r3, _0204B4E8 ; =SCRIPT_VARS_LOCALS + sub r2, r2, #0x400 + add r2, r3, r2, lsl #4 + str r2, [r0] + ldrsh r2, [r2, #4] + add r1, r1, r2, lsl #2 +_0204B4D8: + str r1, [r0, #4] + bx lr + .align 2, 0 +_0204B4E0: .word SCRIPT_VARS +_0204B4E4: .word SCRIPT_VARS_VALUES +_0204B4E8: .word SCRIPT_VARS_LOCALS + arm_func_end LoadScriptVariableRaw + + arm_func_start LoadScriptVariableValue +LoadScriptVariableValue: ; 0x0204B4EC + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r2, r0 + mov r4, r1 + mov r1, r2 + add r0, sp, #0 + mov r2, r4 + bl LoadScriptVariableRaw + ldr r1, [sp] + ldrsh r0, [r1] + cmp r0, #9 + addls pc, pc, r0, lsl #2 + b _0204B66C +_0204B520: ; jump table + b _0204B66C ; case 0 + b _0204B548 ; case 1 + b _0204B56C ; case 2 + b _0204B56C ; case 3 + b _0204B578 ; case 4 + b _0204B584 ; case 5 + b _0204B590 ; case 6 + b _0204B59C ; case 7 + b _0204B59C ; case 8 + b _0204B5A8 ; case 9 +_0204B548: + ldrsh r1, [r1, #6] + ldr r2, [sp, #4] + mov r0, #1 + mov r1, r0, lsl r1 + ldrb r2, [r2] + and r1, r1, #0xff + tst r2, r1 + moveq r0, #0 + b _0204B670 +_0204B56C: + ldr r0, [sp, #4] + ldrb r0, [r0] + b _0204B670 +_0204B578: + ldr r0, [sp, #4] + ldrsb r0, [r0] + b _0204B670 +_0204B584: + ldr r0, [sp, #4] + ldrh r0, [r0] + b _0204B670 +_0204B590: + ldr r0, [sp, #4] + ldrsh r0, [r0] + b _0204B670 +_0204B59C: + ldr r0, [sp, #4] + ldr r0, [r0] + b _0204B670 +_0204B5A8: + cmp r4, #0x48 + bgt _0204B5E4 + bge _0204B62C + cmp r4, #0x3d + bgt _0204B5D8 + subs r0, r4, #0x3a + addpl pc, pc, r0, lsl #2 + b _0204B66C +_0204B5C8: ; jump table + b _0204B600 ; case 0 + b _0204B608 ; case 1 + b _0204B614 ; case 2 + b _0204B61C ; case 3 +_0204B5D8: + cmp r4, #0x47 + beq _0204B624 + b _0204B66C +_0204B5E4: + cmp r4, #0x49 + bgt _0204B5F4 + beq _0204B634 + b _0204B66C +_0204B5F4: + cmp r4, #0x70 + beq _0204B664 + b _0204B66C +_0204B600: + mov r0, #1 + b _0204B670 +_0204B608: + mov r0, #0 + bl GetPartyMembers + b _0204B670 +_0204B614: + bl GetMoneyCarried + b _0204B670 +_0204B61C: + bl GetMoneyStored + b _0204B670 +_0204B624: + bl GetLanguageType + b _0204B670 +_0204B62C: + bl GetGameMode + b _0204B670 +_0204B634: + bl GetGameMode + cmp r0, #1 + beq _0204B64C + cmp r0, #3 + beq _0204B654 + b _0204B65C +_0204B64C: + bl sub_0204C918 + b _0204B670 +_0204B654: + bl GetSpecialEpisodeType + b _0204B670 +_0204B65C: + mvn r0, #0 + b _0204B670 +_0204B664: + bl GetNotifyNote + b _0204B670 +_0204B66C: + mov r0, #0 +_0204B670: + add sp, sp, #8 + ldmia sp!, {r4, pc} + arm_func_end LoadScriptVariableValue + + arm_func_start LoadScriptVariableValueAtIndex +LoadScriptVariableValueAtIndex: ; 0x0204B678 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + mov r3, r0 + mov r5, r1 + mov r4, r2 + add r0, sp, #0 + mov r1, r3 + mov r2, r5 + bl LoadScriptVariableRaw + ldr r1, [sp] + ldrsh r0, [r1] + cmp r0, #9 + addls pc, pc, r0, lsl #2 + b _0204B814 +_0204B6B0: ; jump table + b _0204B814 ; case 0 + b _0204B6D8 ; case 1 + b _0204B70C ; case 2 + b _0204B70C ; case 3 + b _0204B718 ; case 4 + b _0204B724 ; case 5 + b _0204B734 ; case 6 + b _0204B744 ; case 7 + b _0204B744 ; case 8 + b _0204B750 ; case 9 +_0204B6D8: + ldrsh r1, [r1, #6] + ldr r2, [sp, #4] + mov r0, #1 + add r1, r4, r1 + mov r1, r1, lsl #0x10 + mov r3, r1, lsr #0x10 + and r1, r3, #7 + mov r1, r0, lsl r1 + ldrb r2, [r2, r3, lsr #3] + and r1, r1, #0xff + tst r2, r1 + moveq r0, #0 + b _0204B818 +_0204B70C: + ldr r0, [sp, #4] + ldrb r0, [r0, r4] + b _0204B818 +_0204B718: + ldr r0, [sp, #4] + ldrsb r0, [r0, r4] + b _0204B818 +_0204B724: + ldr r1, [sp, #4] + mov r0, r4, lsl #1 + ldrh r0, [r1, r0] + b _0204B818 +_0204B734: + ldr r1, [sp, #4] + mov r0, r4, lsl #1 + ldrsh r0, [r1, r0] + b _0204B818 +_0204B744: + ldr r0, [sp, #4] + ldr r0, [r0, r4, lsl #2] + b _0204B818 +_0204B750: + cmp r5, #0x48 + bgt _0204B78C + bge _0204B7D4 + cmp r5, #0x3d + bgt _0204B780 + subs r0, r5, #0x3a + addpl pc, pc, r0, lsl #2 + b _0204B814 +_0204B770: ; jump table + b _0204B7A8 ; case 0 + b _0204B7B0 ; case 1 + b _0204B7BC ; case 2 + b _0204B7C4 ; case 3 +_0204B780: + cmp r5, #0x47 + beq _0204B7CC + b _0204B814 +_0204B78C: + cmp r5, #0x49 + bgt _0204B79C + beq _0204B7DC + b _0204B814 +_0204B79C: + cmp r5, #0x70 + beq _0204B80C + b _0204B814 +_0204B7A8: + mov r0, #1 + b _0204B818 +_0204B7B0: + mov r0, #0 + bl GetPartyMembers + b _0204B818 +_0204B7BC: + bl GetMoneyCarried + b _0204B818 +_0204B7C4: + bl GetMoneyStored + b _0204B818 +_0204B7CC: + bl GetLanguageType + b _0204B818 +_0204B7D4: + bl GetGameMode + b _0204B818 +_0204B7DC: + bl GetGameMode + cmp r0, #1 + beq _0204B7F4 + cmp r0, #3 + beq _0204B7FC + b _0204B804 +_0204B7F4: + bl sub_0204C918 + b _0204B818 +_0204B7FC: + bl GetSpecialEpisodeType + b _0204B818 +_0204B804: + mvn r0, #0 + b _0204B818 +_0204B80C: + bl GetNotifyNote + b _0204B818 +_0204B814: + mov r0, #0 +_0204B818: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end LoadScriptVariableValueAtIndex + + arm_func_start SaveScriptVariableValue +SaveScriptVariableValue: ; 0x0204B820 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + mov r3, r0 + mov r5, r1 + mov r4, r2 + add r0, sp, #0 + mov r1, r3 + mov r2, r5 + bl LoadScriptVariableRaw + ldr r1, [sp] + ldrsh r0, [r1] + cmp r0, #9 + addls pc, pc, r0, lsl #2 + b _0204B980 +_0204B858: ; jump table + b _0204B980 ; case 0 + b _0204B880 ; case 1 + b _0204B8C0 ; case 2 + b _0204B8C0 ; case 3 + b _0204B8CC ; case 4 + b _0204B8D8 ; case 5 + b _0204B8E4 ; case 6 + b _0204B8F0 ; case 7 + b _0204B8F0 ; case 8 + b _0204B8FC ; case 9 +_0204B880: + ldrsh r0, [r1, #6] + mov r1, #1 + cmp r4, #0 + mov r0, r1, lsl r0 + ldrne r1, [sp, #4] + and r2, r0, #0xff + ldrneb r0, [r1] + orrne r0, r0, r2 + strneb r0, [r1] + bne _0204B980 + ldr r1, [sp, #4] + ldrb r0, [r1] + orr r0, r0, r2 + eor r0, r2, r0 + strb r0, [r1] + b _0204B980 +_0204B8C0: + ldr r0, [sp, #4] + strb r4, [r0] + b _0204B980 +_0204B8CC: + ldr r0, [sp, #4] + strb r4, [r0] + b _0204B980 +_0204B8D8: + ldr r0, [sp, #4] + strh r4, [r0] + b _0204B980 +_0204B8E4: + ldr r0, [sp, #4] + strh r4, [r0] + b _0204B980 +_0204B8F0: + ldr r0, [sp, #4] + str r4, [r0] + b _0204B980 +_0204B8FC: + cmp r5, #0x49 + bgt _0204B928 + bge _0204B954 + cmp r5, #0x3d + bgt _0204B980 + cmp r5, #0x3c + blt _0204B980 + beq _0204B934 + cmp r5, #0x3d + beq _0204B948 + b _0204B980 +_0204B928: + cmp r5, #0x70 + beq _0204B96C + b _0204B980 +_0204B934: + mov r0, r4 + bl SetMoneyCarried + mov r0, #0 + bl AddMoneyCarried + b _0204B980 +_0204B948: + mov r0, r4 + bl SetMoneyStored + b _0204B980 +_0204B954: + bl GetGameMode + cmp r0, #1 + bne _0204B980 + mov r0, r4 + bl sub_0204C928 + b _0204B980 +_0204B96C: + cmp r4, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bl SetNotifyNote +_0204B980: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end SaveScriptVariableValue + + arm_func_start SaveScriptVariableValueAtIndex +SaveScriptVariableValueAtIndex: ; 0x0204B988 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r4, r0 + mov r6, r1 + mov r5, r2 + mov r1, r4 + add r0, sp, #0 + mov r2, r6 + mov r4, r3 + bl LoadScriptVariableRaw + ldr r1, [sp] + ldrsh r0, [r1] + cmp r0, #9 + addls pc, pc, r0, lsl #2 + b _0204BAF8 +_0204B9C4: ; jump table + b _0204BAF8 ; case 0 + b _0204B9EC ; case 1 + b _0204BA30 ; case 2 + b _0204BA30 ; case 3 + b _0204BA3C ; case 4 + b _0204BA48 ; case 5 + b _0204BA58 ; case 6 + b _0204BA68 ; case 7 + b _0204BA68 ; case 8 + b _0204BA74 ; case 9 +_0204B9EC: + ldrsh r0, [r1, #6] + mov r1, #1 + ldr r2, [sp, #4] + add r0, r5, r0 + mov r0, r0, lsl #0x10 + mov r3, r0, lsr #0x10 + and r0, r3, #7 + mov r0, r1, lsl r0 + and r1, r0, #0xff + ldrb r0, [r2, r3, lsr #3] + cmp r4, #0 + orrne r0, r0, r1 + strneb r0, [r2, r3, lsr #3] + orreq r0, r0, r1 + eoreq r0, r1, r0 + streqb r0, [r2, r3, lsr #3] + b _0204BAF8 +_0204BA30: + ldr r0, [sp, #4] + strb r4, [r0, r5] + b _0204BAF8 +_0204BA3C: + ldr r0, [sp, #4] + strb r4, [r0, r5] + b _0204BAF8 +_0204BA48: + ldr r1, [sp, #4] + mov r0, r5, lsl #1 + strh r4, [r1, r0] + b _0204BAF8 +_0204BA58: + ldr r1, [sp, #4] + mov r0, r5, lsl #1 + strh r4, [r1, r0] + b _0204BAF8 +_0204BA68: + ldr r0, [sp, #4] + str r4, [r0, r5, lsl #2] + b _0204BAF8 +_0204BA74: + cmp r6, #0x49 + bgt _0204BAA0 + bge _0204BACC + cmp r6, #0x3d + bgt _0204BAF8 + cmp r6, #0x3c + blt _0204BAF8 + beq _0204BAAC + cmp r6, #0x3d + beq _0204BAC0 + b _0204BAF8 +_0204BAA0: + cmp r6, #0x70 + beq _0204BAE4 + b _0204BAF8 +_0204BAAC: + mov r0, r4 + bl SetMoneyCarried + mov r0, #0 + bl AddMoneyCarried + b _0204BAF8 +_0204BAC0: + mov r0, r4 + bl SetMoneyStored + b _0204BAF8 +_0204BACC: + bl GetGameMode + cmp r0, #1 + bne _0204BAF8 + mov r0, r4 + bl sub_0204C928 + b _0204BAF8 +_0204BAE4: + cmp r4, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bl SetNotifyNote +_0204BAF8: + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end SaveScriptVariableValueAtIndex + + arm_func_start LoadScriptVariableValueSum +LoadScriptVariableValueSum: ; 0x0204BB00 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + mov r6, r1 + mov r4, #0 + mov r7, r0 + add r0, sp, #0 + mov r1, r4 + mov r2, r6 + bl LoadScriptVariableRaw + mov r5, r4 + b _0204BB48 +_0204BB2C: + mov r2, r5, lsl #0x10 + mov r0, r7 + mov r1, r6 + mov r2, r2, lsr #0x10 + bl LoadScriptVariableValueAtIndex + add r4, r4, r0 + add r5, r5, #1 +_0204BB48: + ldr r0, [sp] + ldrsh r0, [r0, #8] + cmp r5, r0 + blt _0204BB2C + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end LoadScriptVariableValueSum + + arm_func_start LoadScriptVariableValueBytes +LoadScriptVariableValueBytes: ; 0x0204BB64 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + mov r3, r0 + mov r5, r1 + mov r4, r2 + add r0, sp, #0 + mov r2, r3 + mov r1, #0 + bl LoadScriptVariableRaw + ldr r2, [sp, #4] + mov r1, #0 + b _0204BBA0 +_0204BB94: + ldrb r0, [r2], #1 + add r1, r1, #1 + strb r0, [r5], #1 +_0204BBA0: + cmp r1, r4 + blt _0204BB94 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end LoadScriptVariableValueBytes + + arm_func_start sub_0204BBB0 +sub_0204BBB0: ; 0x0204BBB0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + mov r4, r2 + bl LoadScriptVariableValueBytes + mov r0, #0 + strb r0, [r5, r4] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end sub_0204BBB0 + + arm_func_start SaveScriptVariableValueBytes +SaveScriptVariableValueBytes: ; 0x0204BBCC + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + mov r3, r0 + mov r5, r1 + mov r4, r2 + add r0, sp, #0 + mov r2, r3 + mov r1, #0 + bl LoadScriptVariableRaw + ldr r2, [sp, #4] + mov r1, #0 + b _0204BC08 +_0204BBFC: + ldrb r0, [r5], #1 + add r1, r1, #1 + strb r0, [r2], #1 +_0204BC08: + cmp r1, r4 + blt _0204BBFC + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end SaveScriptVariableValueBytes + + arm_func_start ScriptVariablesEqual +ScriptVariablesEqual: ; 0x0204BC18 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x10 + mov r8, r0 + mov r7, r1 + mov r6, r2 + add r0, sp, #8 + mov r1, r8 + mov r2, r7 + bl LoadScriptVariableRaw + add r0, sp, #0 + mov r1, r8 + mov r2, r6 + bl LoadScriptVariableRaw + ldr r0, [sp, #8] + mov r5, #0 + ldrsh r4, [r0, #8] + b _0204BC98 +_0204BC5C: + mov r2, r5, lsl #0x10 + mov r0, r8 + mov r1, r7 + mov r2, r2, lsr #0x10 + bl LoadScriptVariableValueAtIndex + mov r2, r5, lsl #0x10 + mov sb, r0 + mov r0, r8 + mov r1, r6 + mov r2, r2, lsr #0x10 + bl LoadScriptVariableValueAtIndex + cmp sb, r0 + movne r0, #0 + bne _0204BCA4 + add r5, r5, #1 +_0204BC98: + cmp r5, r4 + blt _0204BC5C + mov r0, #1 +_0204BCA4: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end ScriptVariablesEqual + + arm_func_start sub_0204BCAC +sub_0204BCAC: ; 0x0204BCAC + stmdb sp!, {r3, lr} + sub sp, sp, #8 + cmp r2, #0xb + addls pc, pc, r2, lsl #2 + b _0204BD68 +_0204BCC0: ; jump table + b _0204BCF0 ; case 0 + b _0204BCF8 ; case 1 + b _0204BD00 ; case 2 + b _0204BD08 ; case 3 + b _0204BD14 ; case 4 + b _0204BD1C ; case 5 + b _0204BD28 ; case 6 + b _0204BD30 ; case 7 + b _0204BD38 ; case 8 + b _0204BD40 ; case 9 + b _0204BD4C ; case 10 + b _0204BD5C ; case 11 +_0204BCF0: + mov r0, r1 + b _0204BD88 +_0204BCF8: + sub r0, r0, r1 + b _0204BD88 +_0204BD00: + add r0, r0, r1 + b _0204BD88 +_0204BD08: + mul r1, r0, r1 + mov r0, r1 + b _0204BD88 +_0204BD14: + bl _s32_div_f + b _0204BD88 +_0204BD1C: + bl _s32_div_f + mov r0, r1 + b _0204BD88 +_0204BD28: + and r0, r0, r1 + b _0204BD88 +_0204BD30: + orr r0, r0, r1 + b _0204BD88 +_0204BD38: + eor r0, r0, r1 + b _0204BD88 +_0204BD40: + mov r2, #1 + orr r0, r0, r2, lsl r1 + b _0204BD88 +_0204BD4C: + mov r2, #1 + mvn r1, r2, lsl r1 + and r0, r0, r1 + b _0204BD88 +_0204BD5C: + mov r0, r1 + bl RandInt + b _0204BD88 +_0204BD68: + ldr r1, _0204BD90 ; =_0209CEAC + add r0, sp, #0 + ldr r3, [r1, #4] + ldr ip, [r1] + ldr r1, _0204BD94 ; =_0209CF28 + str ip, [sp] + str r3, [sp, #4] + bl Debug_FatalError +_0204BD88: + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_0204BD90: .word _0209CEAC +_0204BD94: .word _0209CF28 + arm_func_end sub_0204BCAC + + arm_func_start sub_0204BD98 +sub_0204BD98: ; 0x0204BD98 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + cmp r2, #0xa + addls pc, pc, r2, lsl #2 + b _0204BE9C +_0204BDAC: ; jump table + b _0204BDD8 ; case 0 + b _0204BDE0 ; case 1 + b _0204BDE8 ; case 2 + b _0204BE10 ; case 3 + b _0204BE38 ; case 4 + b _0204BE24 ; case 5 + b _0204BE4C ; case 6 + b _0204BDFC ; case 7 + b _0204BE60 ; case 8 + b _0204BE74 ; case 9 + b _0204BE88 ; case 10 +_0204BDD8: + mov r0, #1 + b _0204BEBC +_0204BDE0: + mov r0, #0 + b _0204BEBC +_0204BDE8: + cmp r0, r1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + b _0204BEBC +_0204BDFC: + cmp r0, r1 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + b _0204BEBC +_0204BE10: + cmp r0, r1 + movgt r0, #1 + movle r0, #0 + and r0, r0, #0xff + b _0204BEBC +_0204BE24: + cmp r0, r1 + movge r0, #1 + movlt r0, #0 + and r0, r0, #0xff + b _0204BEBC +_0204BE38: + cmp r0, r1 + movlt r0, #1 + movge r0, #0 + and r0, r0, #0xff + b _0204BEBC +_0204BE4C: + cmp r0, r1 + movle r0, #1 + movgt r0, #0 + and r0, r0, #0xff + b _0204BEBC +_0204BE60: + tst r0, r1 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + b _0204BEBC +_0204BE74: + teq r0, r1 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + b _0204BEBC +_0204BE88: + mov r2, #1 + tst r0, r2, lsl r1 + moveq r2, #0 + and r0, r2, #0xff + b _0204BEBC +_0204BE9C: + ldr r1, _0204BEC4 ; =_0209CEAC + add r0, sp, #0 + ldr r3, [r1, #0xc] + ldr ip, [r1, #8] + ldr r1, _0204BEC8 ; =_0209CF48 + str ip, [sp] + str r3, [sp, #4] + bl Debug_FatalError +_0204BEBC: + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_0204BEC4: .word _0209CEAC +_0204BEC8: .word _0209CF48 + arm_func_end sub_0204BD98 + + arm_func_start sub_0204BECC +sub_0204BECC: ; 0x0204BECC + ldr ip, _0204BED4 ; =sub_0204BCAC + bx ip + .align 2, 0 +_0204BED4: .word sub_0204BCAC + arm_func_end sub_0204BECC + + arm_func_start sub_0204BED8 +sub_0204BED8: ; 0x0204BED8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r2 + mov r4, r3 + mov r7, r0 + mov r6, r1 + bl LoadScriptVariableValue + mov r1, r5 + mov r2, r4 + bl sub_0204BCAC + mov r2, r0 + mov r0, r7 + mov r1, r6 + bl SaveScriptVariableValue + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_0204BED8 + + arm_func_start sub_0204BF10 +sub_0204BF10: ; 0x0204BF10 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r0 + mov r6, r2 + mov r7, r1 + mov r5, r3 + bl LoadScriptVariableValue + mov r4, r0 + mov r0, r8 + mov r1, r6 + bl LoadScriptVariableValue + mov r1, r0 + mov r0, r4 + mov r2, r5 + bl sub_0204BCAC + mov r2, r0 + mov r0, r8 + mov r1, r7 + bl SaveScriptVariableValue + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end sub_0204BF10 + + arm_func_start sub_0204BF5C +sub_0204BF5C: ; 0x0204BF5C + ldr ip, _0204BF64 ; =sub_0204BD98 + bx ip + .align 2, 0 +_0204BF64: .word sub_0204BD98 + arm_func_end sub_0204BF5C + + arm_func_start sub_0204BF68 +sub_0204BF68: ; 0x0204BF68 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r2 + mov r4, r3 + bl LoadScriptVariableValue + mov r1, r5 + mov r2, r4 + bl sub_0204BD98 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end sub_0204BF68 + + arm_func_start sub_0204BF88 +sub_0204BF88: ; 0x0204BF88 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r2 + mov r5, r3 + bl LoadScriptVariableValue + mov r4, r0 + mov r0, r7 + mov r1, r6 + bl LoadScriptVariableValue + mov r1, r0 + mov r0, r4 + mov r2, r5 + bl sub_0204BD98 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_0204BF88 + + arm_func_start EventFlagResume +EventFlagResume: ; 0x0204BFC0 + stmdb sp!, {r4, lr} + bl GetGameMode + cmp r0, #1 + ldmlsia sp!, {r4, pc} + sub r4, r0, #2 + ldr r0, _0204C1E0 ; =_0209CF64 + mov r1, r4 + bl Debug_Print0 + mov r0, r4, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, #0 + mov r1, #0x21 + bl LoadScriptVariableValueAtIndex + mov r2, r0 + mov r0, #0 + mov r1, #0x1c + bl SaveScriptVariableValue + mov r0, r4, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, #0 + mov r1, #0x22 + bl LoadScriptVariableValueAtIndex + mov r2, r0 + mov r0, #0 + mov r1, #0x1d + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x23 + mov r2, r4, lsl #0x10 + mov r2, r2, lsr #0x10 + bl LoadScriptVariableValueAtIndex + mov r2, r0 + mov r0, #0 + mov r1, #0x1e + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x24 + mov r2, r4, lsl #0x10 + mov r2, r2, lsr #0x10 + bl LoadScriptVariableValueAtIndex + mov r2, r0 + mov r0, #0 + mov r1, #0x1f + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x25 + mov r2, r4, lsl #0x10 + mov r2, r2, lsr #0x10 + bl LoadScriptVariableValueAtIndex + mov r2, r0 + mov r0, #0 + mov r1, #0x20 + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x2d + mov r2, r4, lsl #0x10 + mov r2, r2, lsr #0x10 + bl LoadScriptVariableValueAtIndex + mov r2, r0 + mov r0, #0 + mov r1, #0x27 + bl SaveScriptVariableValue + mov r0, r4, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, #0 + mov r1, #0x2e + bl LoadScriptVariableValueAtIndex + mov r2, r0 + mov r0, #0 + mov r1, #0x28 + bl SaveScriptVariableValue + mov r0, r4, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, #0 + mov r1, #0x2f + bl LoadScriptVariableValueAtIndex + mov r2, r0 + mov r0, #0 + mov r1, #0x29 + bl SaveScriptVariableValue + mov r0, r4, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, #0 + mov r1, #0x30 + bl LoadScriptVariableValueAtIndex + mov r2, r0 + mov r0, #0 + mov r1, #0x2a + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x31 + mov r2, r4, lsl #0x10 + mov r2, r2, lsr #0x10 + bl LoadScriptVariableValueAtIndex + mov r2, r0 + mov r0, #0 + mov r1, #0x2b + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x32 + mov r2, r4, lsl #0x10 + mov r2, r2, lsr #0x10 + bl LoadScriptVariableValueAtIndex + mov r2, r0 + mov r0, #0 + mov r1, #0x2c + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x37 + mov r2, r4, lsl #0x10 + mov r2, r2, lsr #0x10 + bl LoadScriptVariableValueAtIndex + mov r2, r0 + mov r0, #0 + mov r1, #0x34 + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x38 + mov r2, r4, lsl #0x10 + mov r2, r2, lsr #0x10 + bl LoadScriptVariableValueAtIndex + mov r2, r0 + mov r0, #0 + mov r1, #0x35 + bl SaveScriptVariableValue + mov r0, r4, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, #0 + mov r1, #0x39 + bl LoadScriptVariableValueAtIndex + mov r2, r0 + mov r0, #0 + mov r1, #0x36 + bl SaveScriptVariableValue + bl sub_0204CBE8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0204C1E0: .word _0209CF64 + arm_func_end EventFlagResume + + arm_func_start EventFlagBackup +EventFlagBackup: ; 0x0204C1E4 + stmdb sp!, {r4, lr} + bl GetGameMode + cmp r0, #1 + ldmlsia sp!, {r4, pc} + sub r4, r0, #2 + ldr r0, _0204C404 ; =_0209CF84 + mov r1, r4 + bl Debug_Print0 + mov r0, #0 + mov r1, #0x1c + bl LoadScriptVariableValue + mov r1, r4, lsl #0x10 + mov r3, r0 + mov r2, r1, lsr #0x10 + mov r0, #0 + mov r1, #0x21 + bl SaveScriptVariableValueAtIndex + mov r0, #0 + mov r1, #0x1d + bl LoadScriptVariableValue + mov r3, r0 + mov r0, #0 + mov r1, #0x22 + mov r2, r4, lsl #0x10 + mov r2, r2, lsr #0x10 + bl SaveScriptVariableValueAtIndex + mov r0, #0 + mov r1, #0x1e + bl LoadScriptVariableValue + mov r3, r0 + mov r0, #0 + mov r1, #0x23 + mov r2, r4, lsl #0x10 + mov r2, r2, lsr #0x10 + bl SaveScriptVariableValueAtIndex + mov r0, #0 + mov r1, #0x1f + bl LoadScriptVariableValue + mov r3, r0 + mov r0, #0 + mov r1, #0x24 + mov r2, r4, lsl #0x10 + mov r2, r2, lsr #0x10 + bl SaveScriptVariableValueAtIndex + mov r0, #0 + mov r1, #0x20 + bl LoadScriptVariableValue + mov r3, r0 + mov r0, #0 + mov r1, #0x25 + mov r2, r4, lsl #0x10 + mov r2, r2, lsr #0x10 + bl SaveScriptVariableValueAtIndex + mov r0, #0 + mov r1, #0x27 + bl LoadScriptVariableValue + mov r3, r0 + mov r0, #0 + mov r1, #0x2d + mov r2, r4, lsl #0x10 + mov r2, r2, lsr #0x10 + bl SaveScriptVariableValueAtIndex + mov r0, #0 + mov r1, #0x28 + bl LoadScriptVariableValue + mov r1, r4, lsl #0x10 + mov r3, r0 + mov r2, r1, lsr #0x10 + mov r0, #0 + mov r1, #0x2e + bl SaveScriptVariableValueAtIndex + mov r0, #0 + mov r1, #0x29 + bl LoadScriptVariableValue + mov r1, r4, lsl #0x10 + mov r2, r1, lsr #0x10 + mov r3, r0 + mov r0, #0 + mov r1, #0x2f + bl SaveScriptVariableValueAtIndex + mov r0, #0 + mov r1, #0x2a + bl LoadScriptVariableValue + mov r3, r0 + mov r0, #0 + mov r1, #0x30 + mov r2, r4, lsl #0x10 + mov r2, r2, lsr #0x10 + bl SaveScriptVariableValueAtIndex + mov r0, #0 + mov r1, #0x2b + bl LoadScriptVariableValue + mov r3, r0 + mov r0, #0 + mov r1, #0x31 + mov r2, r4, lsl #0x10 + mov r2, r2, lsr #0x10 + bl SaveScriptVariableValueAtIndex + mov r0, #0 + mov r1, #0x2c + bl LoadScriptVariableValue + mov r3, r0 + mov r0, #0 + mov r1, #0x32 + mov r2, r4, lsl #0x10 + mov r2, r2, lsr #0x10 + bl SaveScriptVariableValueAtIndex + mov r0, #0 + mov r1, #0x34 + bl LoadScriptVariableValue + mov r3, r0 + mov r0, #0 + mov r1, #0x37 + mov r2, r4, lsl #0x10 + mov r2, r2, lsr #0x10 + bl SaveScriptVariableValueAtIndex + mov r0, #0 + mov r1, #0x35 + bl LoadScriptVariableValue + mov r3, r0 + mov r0, r4, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, #0 + mov r1, #0x38 + bl SaveScriptVariableValueAtIndex + mov r0, #0 + mov r1, #0x36 + bl LoadScriptVariableValue + mov r1, r4, lsl #0x10 + mov r3, r0 + mov r2, r1, lsr #0x10 + mov r0, #0 + mov r1, #0x39 + bl SaveScriptVariableValueAtIndex + bl ScenarioFlagBackup + ldmia sp!, {r4, pc} + .align 2, 0 +_0204C404: .word _0209CF84 + arm_func_end EventFlagBackup + + arm_func_start DumpScriptVariableValues +DumpScriptVariableValues: ; 0x0204C408 + stmdb sp!, {r4, lr} + mov r4, r0 + bl EventFlagBackup + ldr r1, _0204C42C ; =SCRIPT_VARS_VALUES + mov r0, r4 + mov r2, #0x400 + bl MemcpySimple + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_0204C42C: .word SCRIPT_VARS_VALUES + arm_func_end DumpScriptVariableValues + + arm_func_start RestoreScriptVariableValues +RestoreScriptVariableValues: ; 0x0204C430 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r1, #0 + mov r4, r0 + add r0, sp, #0 + mov r2, r1 + bl LoadScriptVariableRaw + ldr r0, _0204C484 ; =SCRIPT_VARS_VALUES + mov r1, r4 + mov r2, #0x400 + bl MemcpySimple + ldr r1, [sp] + ldr r0, [sp, #4] + ldrsh r1, [r1, #0xa] + ldr r0, [r0] + cmp r1, r0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0204C484: .word SCRIPT_VARS_VALUES + arm_func_end RestoreScriptVariableValues + + arm_func_start InitScenarioScriptVars +InitScenarioScriptVars: ; 0x0204C488 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r1, #0 + mov r2, r1 + mov r0, #2 + bl SetScenarioScriptVar + mov r1, #0 + mov r2, r1 + mov r0, #3 + bl SetScenarioScriptVar + mov r1, #0 + mov r2, r1 + mov r0, #4 + bl SetScenarioScriptVar + mov r1, #0 + mov r2, r1 + mov r0, #5 + bl SetScenarioScriptVar + mov r1, #0 + mov r2, r1 + mov r0, #6 + bl SetScenarioScriptVar + mov r1, #0 + mov r0, #7 + mov r2, r1 + bl SetScenarioScriptVar + mov r1, #0 + mov r0, #8 + mov r2, r1 + bl SetScenarioScriptVar + mov r1, #0 + mov r0, #9 + mov r2, r1 + bl SetScenarioScriptVar + mov r1, #0 + mov r0, #0xa + mov r2, r1 + bl SetScenarioScriptVar + mov r1, #0 + mov r0, #0xb + mov r2, r1 + bl SetScenarioScriptVar + mov r1, #0 + mov r0, #0xc + mov r2, r1 + bl SetScenarioScriptVar + mov r0, #0 + mov r1, #0x11 + bl ZinitScriptVariable + mov r0, #0 + mov r1, #0x1b + bl ZinitScriptVariable + mov r8, #0 + mov r6, #0x1a + mov r7, r8 + mov r5, r8 + mov r4, r6 +_0204C568: + mov r2, r8, lsl #0x10 + mov r0, r7 + mov r1, r6 + mov r3, r7 + mov r2, r2, lsr #0x10 + bl SaveScriptVariableValueAtIndex + add r0, r8, #4 + mov r2, r0, lsl #0x10 + mov r0, r5 + mov r1, r4 + mov r3, r5 + mov r2, r2, lsr #0x10 + bl SaveScriptVariableValueAtIndex + add r8, r8, #1 + cmp r8, #4 + blt _0204C568 + mov r0, #0 + mov r2, r0 + mov r1, #0x13 + bl SaveScriptVariableValue + mov r1, #0x14 + sub r2, r1, #0x15 + mov r0, #0 + bl SaveScriptVariableValue + mov r0, #0 + mov r2, r0 + mov r1, #0x6f + bl SaveScriptVariableValue + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end InitScenarioScriptVars + + arm_func_start sub_0204C5DC +sub_0204C5DC: ; 0x0204C5DC + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r0, #0 + mov r4, r2 + mov r1, r6 + mov r2, r0 + bl LoadScriptVariableValueAtIndex + str r0, [r5] + mov r1, r6 + mov r0, #0 + mov r2, #1 + bl LoadScriptVariableValueAtIndex + str r0, [r4] + ldmia sp!, {r4, r5, r6, pc} + arm_func_end sub_0204C5DC + + arm_func_start SetScenarioScriptVar +SetScenarioScriptVar: ; 0x0204C618 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0xc + mov r8, r0 + mov r7, r1 + mov r0, #0 + mov r6, r2 + mov r1, r8 + mov r2, r0 + bl LoadScriptVariableValueAtIndex + mov r5, r0 + mov r1, r8 + mov r0, #0 + mov r2, #1 + bl LoadScriptVariableValueAtIndex + mov r4, r0 + stmia sp, {r4, r7} + ldr r1, _0204C6C4 ; =_0209DFA0 + mov r0, #9 + mov r2, r8 + mov r3, r5 + str r6, [sp, #8] + bl Debug_Print + cmp r8, #3 + bne _0204C694 + cmp r7, r5 + cmpeq r6, r4 + beq _0204C694 + mov r0, #0 + mov r2, r0 + mov r1, #0x33 + bl SaveScriptVariableValue +_0204C694: + mov r0, #0 + mov r1, r8 + mov r2, r0 + mov r3, r7 + bl SaveScriptVariableValueAtIndex + mov r1, r8 + mov r3, r6 + mov r0, #0 + mov r2, #1 + bl SaveScriptVariableValueAtIndex + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0204C6C4: .word _0209DFA0 + arm_func_end SetScenarioScriptVar + + arm_func_start sub_0204C6C8 +sub_0204C6C8: ; 0x0204C6C8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r0, #0 + mov r5, r2 + mov r1, r7 + mov r2, r0 + bl LoadScriptVariableValueAtIndex + mov r4, r0 + mov r1, r7 + mov r0, #0 + mov r2, #1 + bl LoadScriptVariableValueAtIndex + cmp r4, #0x35 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r4, r6 + movlt r0, #1 + ldmltia sp!, {r3, r4, r5, r6, r7, pc} + bne _0204C72C + cmp r5, #0 + blt _0204C72C + cmp r0, r5 + movlt r0, #1 + ldmltia sp!, {r3, r4, r5, r6, r7, pc} +_0204C72C: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_0204C6C8 + + arm_func_start sub_0204C734 +sub_0204C734: ; 0x0204C734 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r0, #0 + mov r5, r2 + mov r1, r7 + mov r2, r0 + bl LoadScriptVariableValueAtIndex + mov r4, r0 + mov r1, r7 + mov r0, #0 + mov r2, #1 + bl LoadScriptVariableValueAtIndex + cmp r4, #0x35 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r4, r6 + movlt r0, #1 + ldmltia sp!, {r3, r4, r5, r6, r7, pc} + bne _0204C7A4 + cmp r5, #0 + blt _0204C79C + cmp r0, r5 + bgt _0204C7A4 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0204C79C: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0204C7A4: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_0204C734 + + arm_func_start sub_0204C7AC +sub_0204C7AC: ; 0x0204C7AC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r0, #0 + mov r5, r2 + mov r1, r7 + mov r2, r0 + bl LoadScriptVariableValueAtIndex + mov r4, r0 + mov r1, r7 + mov r0, #0 + mov r2, #1 + bl LoadScriptVariableValueAtIndex + cmp r4, r6 + bne _0204C800 + cmp r5, #0 + movlt r0, #1 + ldmltia sp!, {r3, r4, r5, r6, r7, pc} + cmp r0, r5 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} +_0204C800: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_0204C7AC + + arm_func_start sub_0204C808 +sub_0204C808: ; 0x0204C808 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r0, #0 + mov r5, r2 + mov r1, r7 + mov r2, r0 + bl LoadScriptVariableValueAtIndex + mov r4, r0 + mov r1, r7 + mov r0, #0 + mov r2, #1 + bl LoadScriptVariableValueAtIndex + cmp r4, #0x35 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r4, r6 + movgt r0, #1 + ldmgtia sp!, {r3, r4, r5, r6, r7, pc} + bne _0204C878 + cmp r5, #0 + blt _0204C870 + cmp r0, r5 + blt _0204C878 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0204C870: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0204C878: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_0204C808 + + arm_func_start sub_0204C880 +sub_0204C880: ; 0x0204C880 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r0, #0 + mov r5, r2 + mov r1, r7 + mov r2, r0 + bl LoadScriptVariableValueAtIndex + mov r4, r0 + mov r1, r7 + mov r0, #0 + mov r2, #1 + bl LoadScriptVariableValueAtIndex + cmp r4, #0x35 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r4, r6 + movgt r0, #1 + ldmgtia sp!, {r3, r4, r5, r6, r7, pc} + bne _0204C8E4 + cmp r5, #0 + blt _0204C8E4 + cmp r0, r5 + movgt r0, #1 + ldmgtia sp!, {r3, r4, r5, r6, r7, pc} +_0204C8E4: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_0204C880 + + arm_func_start GetSpecialEpisodeType +GetSpecialEpisodeType: ; 0x0204C8EC + ldr ip, _0204C8FC ; =LoadScriptVariableValue + mov r0, #0 + mov r1, #0x4a + bx ip + .align 2, 0 +_0204C8FC: .word LoadScriptVariableValue + arm_func_end GetSpecialEpisodeType + + arm_func_start SetSpecialEpisodeType +SetSpecialEpisodeType: ; 0x0204C900 + ldr ip, _0204C914 ; =SaveScriptVariableValue + mov r2, r0 + mov r0, #0 + mov r1, #0x4a + bx ip + .align 2, 0 +_0204C914: .word SaveScriptVariableValue + arm_func_end SetSpecialEpisodeType + + arm_func_start sub_0204C918 +sub_0204C918: ; 0x0204C918 + ldr r0, _0204C924 ; =DEBUG_SPECIAL_EPISODE_NUMBER + ldr r0, [r0] + bx lr + .align 2, 0 +_0204C924: .word DEBUG_SPECIAL_EPISODE_NUMBER + arm_func_end sub_0204C918 + + arm_func_start sub_0204C928 +sub_0204C928: ; 0x0204C928 + ldr r1, _0204C934 ; =DEBUG_SPECIAL_EPISODE_NUMBER + str r0, [r1] + bx lr + .align 2, 0 +_0204C934: .word DEBUG_SPECIAL_EPISODE_NUMBER + arm_func_end sub_0204C928 + + arm_func_start GetExecuteSpecialEpisodeType +GetExecuteSpecialEpisodeType: ; 0x0204C938 + ldr ip, _0204C948 ; =LoadScriptVariableValue + mov r0, #0 + mov r1, #0x49 + bx ip + .align 2, 0 +_0204C948: .word LoadScriptVariableValue + arm_func_end GetExecuteSpecialEpisodeType + + arm_func_start IsSpecialEpisodeOpen +IsSpecialEpisodeOpen: ; 0x0204C94C + stmdb sp!, {r3, lr} + mov r0, r0, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, #0 + mov r1, #0x4b + bl LoadScriptVariableValueAtIndex + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end IsSpecialEpisodeOpen + + arm_func_start sub_0204C978 +sub_0204C978: ; 0x0204C978 + ldr ip, _0204C99C ; =SaveScriptVariableValueAtIndex + cmp r1, #0 + movne r3, #1 + mov r0, r0, lsl #0x10 + mov r2, r0, lsr #0x10 + moveq r3, #0 + mov r0, #0 + mov r1, #0x4b + bx ip + .align 2, 0 +_0204C99C: .word SaveScriptVariableValueAtIndex + arm_func_end sub_0204C978 + + arm_func_start sub_0204C9A0 +sub_0204C9A0: ; 0x0204C9A0 + stmdb sp!, {r3, lr} + mov r0, #0 + mov r1, #0x4b + mov r2, #0x4c + bl ScriptVariablesEqual + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end sub_0204C9A0 + + arm_func_start sub_0204C9C8 +sub_0204C9C8: ; 0x0204C9C8 + stmdb sp!, {r3, lr} + mov r0, r0, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, #0 + mov r1, #0x4c + bl LoadScriptVariableValueAtIndex + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end sub_0204C9C8 + + arm_func_start sub_0204C9F4 +sub_0204C9F4: ; 0x0204C9F4 + ldr ip, _0204CA18 ; =SaveScriptVariableValueAtIndex + cmp r1, #0 + movne r3, #1 + mov r0, r0, lsl #0x10 + mov r2, r0, lsr #0x10 + moveq r3, #0 + mov r0, #0 + mov r1, #0x4c + bx ip + .align 2, 0 +_0204CA18: .word SaveScriptVariableValueAtIndex + arm_func_end sub_0204C9F4 + + arm_func_start sub_0204CA1C +sub_0204CA1C: ; 0x0204CA1C + stmdb sp!, {r3, lr} + mov r0, r0, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, #0 + mov r1, #0x4d + bl LoadScriptVariableValueAtIndex + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end sub_0204CA1C + + arm_func_start sub_0204CA48 +sub_0204CA48: ; 0x0204CA48 + ldr ip, _0204CA6C ; =SaveScriptVariableValueAtIndex + cmp r1, #0 + movne r3, #1 + mov r0, r0, lsl #0x10 + mov r2, r0, lsr #0x10 + moveq r3, #0 + mov r0, #0 + mov r1, #0x4d + bx ip + .align 2, 0 +_0204CA6C: .word SaveScriptVariableValueAtIndex + arm_func_end sub_0204CA48 + + arm_func_start HasPlayedOldGame +HasPlayedOldGame: ; 0x0204CA70 + stmdb sp!, {r3, lr} + mov r0, #0 + mov r1, #0x6f + bl LoadScriptVariableValue + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end HasPlayedOldGame + + arm_func_start GetPerformanceFlagWithChecks +GetPerformanceFlagWithChecks: ; 0x0204CA94 + stmdb sp!, {r4, lr} + mov r4, r0 + cmp r4, #7 + addls pc, pc, r4, lsl #2 + b _0204CB10 +_0204CAA8: ; jump table + b _0204CAC8 ; case 0 + b _0204CB00 ; case 1 + b _0204CB00 ; case 2 + b _0204CAEC ; case 3 + b _0204CAEC ; case 4 + b _0204CAEC ; case 5 + b _0204CAEC ; case 6 + b _0204CAEC ; case 7 +_0204CAC8: + mov r0, #0 + mov r2, r0 + mov r1, #3 + bl LoadScriptVariableValueAtIndex + cmp r0, #0x35 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, pc} +_0204CAEC: + bl GetGameMode + cmp r0, #3 + bne _0204CB10 + mov r0, #0 + ldmia sp!, {r4, pc} +_0204CB00: + bl GetGameMode + cmp r0, #3 + moveq r0, #1 + ldmeqia sp!, {r4, pc} +_0204CB10: + mov r0, r4, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, #0 + mov r1, #0x4e + bl LoadScriptVariableValueAtIndex + and r0, r0, #0xff + ldmia sp!, {r4, pc} + arm_func_end GetPerformanceFlagWithChecks + + arm_func_start sub_0204CB2C +sub_0204CB2C: ; 0x0204CB2C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + cmp r5, #7 + addls pc, pc, r5, lsl #2 + b _0204CB70 +_0204CB44: ; jump table + b _0204CB70 ; case 0 + b _0204CB64 ; case 1 + b _0204CB64 ; case 2 + b _0204CB64 ; case 3 + b _0204CB64 ; case 4 + b _0204CB64 ; case 5 + b _0204CB64 ; case 6 + b _0204CB64 ; case 7 +_0204CB64: + bl GetGameMode + cmp r0, #3 + ldmeqia sp!, {r3, r4, r5, pc} +_0204CB70: + cmp r4, #0 + movne r3, #1 + mov r0, r5, lsl #0x10 + mov r2, r0, lsr #0x10 + moveq r3, #0 + mov r0, #0 + mov r1, #0x4e + bl SaveScriptVariableValueAtIndex + ldmia sp!, {r3, r4, r5, pc} + arm_func_end sub_0204CB2C + + arm_func_start GetScenarioBalance +GetScenarioBalance: ; 0x0204CB94 + stmdb sp!, {r3, lr} + mov r0, #0 + mov r1, #0x49 + bl LoadScriptVariableValue + mvn r1, #0 + cmp r0, r1 + bne _0204CBD8 + mov r0, #0 + mov r1, #0x14 + bl LoadScriptVariableValue + cmp r0, #0 + bge _0204CBD0 + mov r0, #0 + mov r1, #0x13 + bl LoadScriptVariableValue +_0204CBD0: + and r0, r0, #0xff + ldmia sp!, {r3, pc} +_0204CBD8: + cmp r0, #0 + moveq r0, #1 + movne r0, #3 + ldmia sp!, {r3, pc} + arm_func_end GetScenarioBalance + + arm_func_start sub_0204CBE8 +sub_0204CBE8: ; 0x0204CBE8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + bl GetGameMode + cmp r0, #1 + ldmlsia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + sub r4, r0, #2 + ldr r0, _0204CCB4 ; =_0209DFC8 + mov r1, r4 + bl Debug_Print0 + mov r0, r4, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, #0 + mov r1, #0x1a + bl LoadScriptVariableValueAtIndex + mov r3, r0 + mov r0, #0 + mov r2, r0 + mov r1, #2 + bl SaveScriptVariableValueAtIndex + add r2, r4, #4 + mov r2, r2, lsl #0x10 + mov r0, #0 + mov r1, #0x1a + mov r2, r2, lsr #0x10 + bl LoadScriptVariableValueAtIndex + mov r3, r0 + mov r0, #0 + mov r1, #2 + mov r2, #1 + bl SaveScriptVariableValueAtIndex + mov r8, #0 + mov sb, r4, lsl #7 + mov r7, r8 + mov r6, #0x1b + mov r5, r8 + mov r4, #0x11 +_0204CC74: + mov r2, sb, lsl #0x10 + mov r0, r7 + mov r1, r6 + mov r2, r2, lsr #0x10 + bl LoadScriptVariableValueAtIndex + mov r2, r8, lsl #0x10 + mov r3, r0 + mov r0, r5 + mov r1, r4 + mov r2, r2, lsr #0x10 + bl SaveScriptVariableValueAtIndex + add r8, r8, #1 + cmp r8, #0x80 + add sb, sb, #1 + blt _0204CC74 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0204CCB4: .word _0209DFC8 + arm_func_end sub_0204CBE8 + + arm_func_start ScenarioFlagBackup +ScenarioFlagBackup: ; 0x0204CCB8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + bl GetGameMode + cmp r0, #1 + ldmlsia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + sub r4, r0, #2 + ldr r0, _0204CD84 ; =_0209DFE8 + mov r1, r4 + bl Debug_Print0 + mov r0, #0 + mov r2, r0 + mov r1, #2 + bl LoadScriptVariableValueAtIndex + mov r1, r4, lsl #0x10 + mov r3, r0 + mov r2, r1, lsr #0x10 + mov r0, #0 + mov r1, #0x1a + bl SaveScriptVariableValueAtIndex + mov r0, #0 + mov r1, #2 + mov r2, #1 + bl LoadScriptVariableValueAtIndex + add r2, r4, #4 + mov r2, r2, lsl #0x10 + mov r3, r0 + mov r0, #0 + mov r1, #0x1a + mov r2, r2, lsr #0x10 + bl SaveScriptVariableValueAtIndex + mov r8, #0 + mov sb, r4, lsl #7 + mov r7, r8 + mov r6, #0x11 + mov r5, r8 + mov r4, #0x1b +_0204CD44: + mov r2, r8, lsl #0x10 + mov r0, r7 + mov r1, r6 + mov r2, r2, lsr #0x10 + bl LoadScriptVariableValueAtIndex + mov r2, sb, lsl #0x10 + mov r3, r0 + mov r0, r5 + mov r1, r4 + mov r2, r2, lsr #0x10 + bl SaveScriptVariableValueAtIndex + add r8, r8, #1 + cmp r8, #0x80 + add sb, sb, #1 + blt _0204CD44 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0204CD84: .word _0209DFE8 + arm_func_end ScenarioFlagBackup + + arm_func_start InitWorldMapScriptVars +InitWorldMapScriptVars: ; 0x0204CD88 + stmdb sp!, {r3, lr} + mov r0, #0 + mov r1, #0x55 + bl ZinitScriptVariable + mov r0, #0 + mov r1, #0x56 + bl ZinitScriptVariable + mov r0, #0 + mov r1, #0x57 + mov r2, #1 + bl SaveScriptVariableValue + ldmia sp!, {r3, pc} + arm_func_end InitWorldMapScriptVars + + arm_func_start sub_0204CDB8 +sub_0204CDB8: ; 0x0204CDB8 + ldr ip, _0204CDC8 ; =ZinitScriptVariable + mov r0, #0 + mov r1, #0x56 + bx ip + .align 2, 0 +_0204CDC8: .word ZinitScriptVariable + arm_func_end sub_0204CDB8 + + arm_func_start sub_0204CDCC +sub_0204CDCC: ; 0x0204CDCC + stmdb sp!, {r3, lr} + mov r0, #0 + mov r1, #0x57 + bl LoadScriptVariableValue + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + ldmia sp!, {r3, pc} + arm_func_end sub_0204CDCC + + arm_func_start sub_0204CDE8 +sub_0204CDE8: ; 0x0204CDE8 + ldr ip, _0204CDFC ; =SaveScriptVariableValue + mov r2, r0 + mov r0, #0 + mov r1, #0x57 + bx ip + .align 2, 0 +_0204CDFC: .word SaveScriptVariableValue + arm_func_end sub_0204CDE8 + + arm_func_start sub_0204CE00 +sub_0204CE00: ; 0x0204CE00 + stmdb sp!, {r4, lr} + mov r4, r0 + bl GetGameMode + cmp r0, #3 + mov r0, r4, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, #0 + bne _0204CE2C + mov r1, #0x56 + bl LoadScriptVariableValueAtIndex + b _0204CE34 +_0204CE2C: + mov r1, #0x55 + bl LoadScriptVariableValueAtIndex +_0204CE34: + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, pc} + arm_func_end sub_0204CE00 + + arm_func_start sub_0204CE48 +sub_0204CE48: ; 0x0204CE48 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl GetGameMode + cmp r0, #3 + mov r0, r5, lsl #0x10 + mov r3, r4 + bne _0204CE7C + mov r2, r0, lsr #0x10 + mov r0, #0 + mov r1, #0x56 + bl SaveScriptVariableValueAtIndex + ldmia sp!, {r3, r4, r5, pc} +_0204CE7C: + mov r2, r0, lsr #0x10 + mov r0, #0 + mov r1, #0x55 + bl SaveScriptVariableValueAtIndex + ldmia sp!, {r3, r4, r5, pc} + arm_func_end sub_0204CE48 + + arm_func_start InitDungeonListScriptVars +InitDungeonListScriptVars: ; 0x0204CE90 + stmdb sp!, {r3, lr} + mov r0, #0 + mov r1, #0x4f + bl ZinitScriptVariable + mov r0, #0 + mov r1, #0x54 + bl ZinitScriptVariable + mov r0, #0 + mov r1, #0x50 + bl ZinitScriptVariable + mov r0, #0 + mov r1, #0x51 + bl ZinitScriptVariable + mov r0, #0 + mov r1, #0x52 + bl ZinitScriptVariable + mov r0, #0 + mov r1, #0x53 + bl ZinitScriptVariable + ldmia sp!, {r3, pc} + arm_func_end InitDungeonListScriptVars + + arm_func_start sub_0204CEE0 +sub_0204CEE0: ; 0x0204CEE0 + stmdb sp!, {r3, lr} + mov r0, r0, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, #0 + mov r1, #0x50 + bl LoadScriptVariableValueAtIndex + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end sub_0204CEE0 + + arm_func_start sub_0204CF0C +sub_0204CF0C: ; 0x0204CF0C + stmdb sp!, {r3, lr} + mov r0, r0, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, #0 + mov r1, #0x52 + bl LoadScriptVariableValueAtIndex + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end sub_0204CF0C + + arm_func_start SetDungeonConquest +SetDungeonConquest: ; 0x0204CF38 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r0, r0, lsl #0x10 + mov r3, r1 + mov r2, r0, lsr #0x10 + mov r0, #0 + mov r1, #0x52 + bl SaveScriptVariableValueAtIndex + mov r7, #0 + ldr r6, _0204CF98 ; =_0209E008 + mov r5, r7 + mov r4, #0x52 +_0204CF64: + ldrb r2, [r6, r7] + add r7, r7, #1 + cmp r2, #0xff + bne _0204CF80 + mov r0, #0x23 + bl SetAdventureLogCompleted + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0204CF80: + mov r0, r5 + mov r1, r4 + bl LoadScriptVariableValueAtIndex + cmp r0, #0 + bne _0204CF64 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0204CF98: .word _0209E008 + arm_func_end SetDungeonConquest + + arm_func_start GetDungeonMode +GetDungeonMode: ; 0x0204CF9C + stmdb sp!, {r4, lr} + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 + mov r2, r4 + mov r0, #0 + mov r1, #0x4f + bl LoadScriptVariableValueAtIndex + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + mov r2, r4 + mov r0, #0 + mov r1, #0x54 + beq _0204CFF8 + bl LoadScriptVariableValueAtIndex + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + movne r0, #3 + moveq r0, #1 + ldmia sp!, {r4, pc} +_0204CFF8: + bl LoadScriptVariableValueAtIndex + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + movne r0, #2 + moveq r0, #0 + ldmia sp!, {r4, pc} + arm_func_end GetDungeonMode + + arm_func_start sub_0204D018 +sub_0204D018: ; 0x0204D018 + stmdb sp!, {r4, lr} + cmp r1, #3 + addls pc, pc, r1, lsl #2 + ldmia sp!, {r4, pc} +_0204D028: ; jump table + b _0204D038 ; case 0 + b _0204D06C ; case 1 + b _0204D0A0 ; case 2 + b _0204D0D4 ; case 3 +_0204D038: + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 + mov r0, #0 + mov r2, r4 + mov r3, r0 + mov r1, #0x4f + bl SaveScriptVariableValueAtIndex + mov r0, #0 + mov r2, r4 + mov r3, r0 + mov r1, #0x54 + bl SaveScriptVariableValueAtIndex + ldmia sp!, {r4, pc} +_0204D06C: + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 + mov r2, r4 + mov r0, #0 + mov r1, #0x4f + mov r3, #1 + bl SaveScriptVariableValueAtIndex + mov r0, #0 + mov r2, r4 + mov r3, r0 + mov r1, #0x54 + bl SaveScriptVariableValueAtIndex + ldmia sp!, {r4, pc} +_0204D0A0: + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 + mov r0, #0 + mov r2, r4 + mov r3, r0 + mov r1, #0x4f + bl SaveScriptVariableValueAtIndex + mov r2, r4 + mov r0, #0 + mov r1, #0x54 + mov r3, #1 + bl SaveScriptVariableValueAtIndex + ldmia sp!, {r4, pc} +_0204D0D4: + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 + mov r2, r4 + mov r0, #0 + mov r1, #0x4f + mov r3, #1 + bl SaveScriptVariableValueAtIndex + mov r2, r4 + mov r0, #0 + mov r1, #0x54 + mov r3, #1 + bl SaveScriptVariableValueAtIndex + ldmia sp!, {r4, pc} + arm_func_end sub_0204D018 + + arm_func_start GlobalProgressAlloc +GlobalProgressAlloc: ; 0x0204D108 + stmdb sp!, {r3, lr} + mov r0, #0x20c + mov r1, #0 + bl MemAlloc + ldr r2, _0204D12C ; =GLOBAL_PROGRESS_PTR + mov r1, #0x20c + str r0, [r2] + bl MemZero + ldmia sp!, {r3, pc} + .align 2, 0 +_0204D12C: .word GLOBAL_PROGRESS_PTR + arm_func_end GlobalProgressAlloc + + arm_func_start ResetGlobalProgress +ResetGlobalProgress: ; 0x0204D130 + ldr r0, _0204D144 ; =GLOBAL_PROGRESS_PTR + ldr ip, _0204D148 ; =MemZero + mov r1, #0x20c + ldr r0, [r0] + bx ip + .align 2, 0 +_0204D144: .word GLOBAL_PROGRESS_PTR +_0204D148: .word MemZero + arm_func_end ResetGlobalProgress + + arm_func_start SetMonsterFlag1 +SetMonsterFlag1: ; 0x0204D14C + stmdb sp!, {r3, lr} + ldr r3, _0204D184 ; =GLOBAL_PROGRESS_PTR + mov r1, r0, asr #4 + add r1, r0, r1, lsr #27 + mov r2, r0, lsr #0x1f + rsb r0, r2, r0, lsl #27 + ldr lr, [r3] + mov ip, r1, asr #5 + ldr r3, [lr, ip, lsl #2] + add r0, r2, r0, ror #27 + mov r1, #1 + orr r0, r3, r1, lsl r0 + str r0, [lr, ip, lsl #2] + ldmia sp!, {r3, pc} + .align 2, 0 +_0204D184: .word GLOBAL_PROGRESS_PTR + arm_func_end SetMonsterFlag1 + + arm_func_start GetMonsterFlag1 +GetMonsterFlag1: ; 0x0204D188 + ldr r3, _0204D1C0 ; =GLOBAL_PROGRESS_PTR + mov r1, r0, asr #4 + add r2, r0, r1, lsr #27 + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #27 + add r0, r1, r0, ror #27 + ldr r3, [r3] + mov r2, r2, asr #5 + ldr r2, [r3, r2, lsl #2] + mov r1, #1 + tst r2, r1, lsl r0 + moveq r1, #0 + and r0, r1, #0xff + bx lr + .align 2, 0 +_0204D1C0: .word GLOBAL_PROGRESS_PTR + arm_func_end GetMonsterFlag1 + + arm_func_start SetMonsterFlag2 +SetMonsterFlag2: ; 0x0204D1C4 + stmdb sp!, {r3, lr} + bl FemaleToMaleForm + ldr r2, _0204D204 ; =GLOBAL_PROGRESS_PTR + mov r1, r0, asr #4 + ldr r3, [r2] + add r1, r0, r1, lsr #27 + mov r2, r0, lsr #0x1f + rsb r0, r2, r0, lsl #27 + add lr, r3, #0x98 + mov ip, r1, asr #5 + ldr r3, [lr, ip, lsl #2] + add r0, r2, r0, ror #27 + mov r1, #1 + orr r0, r3, r1, lsl r0 + str r0, [lr, ip, lsl #2] + ldmia sp!, {r3, pc} + .align 2, 0 +_0204D204: .word GLOBAL_PROGRESS_PTR + arm_func_end SetMonsterFlag2 + + arm_func_start HasMonsterBeenAttackedInDungeons +HasMonsterBeenAttackedInDungeons: ; 0x0204D208 + stmdb sp!, {r3, lr} + bl FemaleToMaleForm + ldr r3, _0204D24C ; =GLOBAL_PROGRESS_PTR + mov r1, r0, asr #4 + add r2, r0, r1, lsr #27 + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #27 + add r0, r1, r0, ror #27 + ldr r3, [r3] + mov r2, r2, asr #5 + add r2, r3, r2, lsl #2 + ldr r2, [r2, #0x98] + mov r1, #1 + tst r2, r1, lsl r0 + moveq r1, #0 + and r0, r1, #0xff + ldmia sp!, {r3, pc} + .align 2, 0 +_0204D24C: .word GLOBAL_PROGRESS_PTR + arm_func_end HasMonsterBeenAttackedInDungeons + + arm_func_start SetDungeonTipShown +SetDungeonTipShown: ; 0x0204D250 + stmdb sp!, {r3, lr} + ldr r2, _0204D28C ; =GLOBAL_PROGRESS_PTR + mov r1, r0, asr #4 + ldr r3, [r2] + add r1, r0, r1, lsr #27 + mov r2, r0, lsr #0x1f + rsb r0, r2, r0, lsl #27 + add lr, r3, #0x94 + mov ip, r1, asr #5 + ldr r3, [lr, ip, lsl #2] + add r0, r2, r0, ror #27 + mov r1, #1 + orr r0, r3, r1, lsl r0 + str r0, [lr, ip, lsl #2] + ldmia sp!, {r3, pc} + .align 2, 0 +_0204D28C: .word GLOBAL_PROGRESS_PTR + arm_func_end SetDungeonTipShown + + arm_func_start GetDungeonTipShown +GetDungeonTipShown: ; 0x0204D290 + cmp r0, #0x1f + movge r0, #0 + bxge lr + ldr r2, _0204D2D8 ; =GLOBAL_PROGRESS_PTR + mov r1, r0, asr #4 + add r1, r0, r1, lsr #27 + ldr r3, [r2] + mov r2, r1, asr #5 + mov r1, r0, lsr #0x1f + add r2, r3, r2, lsl #2 + rsb r0, r1, r0, lsl #27 + add r0, r1, r0, ror #27 + ldr r2, [r2, #0x94] + mov r1, #1 + tst r2, r1, lsl r0 + moveq r1, #0 + and r0, r1, #0xff + bx lr + .align 2, 0 +_0204D2D8: .word GLOBAL_PROGRESS_PTR + arm_func_end GetDungeonTipShown + + arm_func_start SetMaxReachedFloor +SetMaxReachedFloor: ; 0x0204D2DC + cmp r0, #0xb4 + ldrlo r2, _0204D2F4 ; =GLOBAL_PROGRESS_PTR + ldrlo r2, [r2] + addlo r0, r2, r0 + strlob r1, [r0, #0x143] + bx lr + .align 2, 0 +_0204D2F4: .word GLOBAL_PROGRESS_PTR + arm_func_end SetMaxReachedFloor + + arm_func_start GetMaxReachedFloor +GetMaxReachedFloor: ; 0x0204D2F8 + cmp r0, #0xb4 + ldrlo r1, _0204D314 ; =GLOBAL_PROGRESS_PTR + movhs r0, #0 + ldrlo r1, [r1] + addlo r0, r1, r0 + ldrlob r0, [r0, #0x143] + bx lr + .align 2, 0 +_0204D314: .word GLOBAL_PROGRESS_PTR + arm_func_end GetMaxReachedFloor + + arm_func_start IncrementNbAdventures +IncrementNbAdventures: ; 0x0204D318 + ldr r0, _0204D344 ; =GLOBAL_PROGRESS_PTR + ldr r1, _0204D348 ; =0x000F423F + ldr r3, [r0] + ldr r2, [r3, #0x1f8] + add r2, r2, #1 + str r2, [r3, #0x1f8] + ldr r2, [r0] + ldr r0, [r2, #0x1f8] + cmp r0, r1 + strhi r1, [r2, #0x1f8] + bx lr + .align 2, 0 +_0204D344: .word GLOBAL_PROGRESS_PTR +_0204D348: .word 0x000F423F + arm_func_end IncrementNbAdventures + + arm_func_start GetNbAdventures +GetNbAdventures: ; 0x0204D34C + ldr r0, _0204D35C ; =GLOBAL_PROGRESS_PTR + ldr r0, [r0] + ldr r0, [r0, #0x1f8] + bx lr + .align 2, 0 +_0204D35C: .word GLOBAL_PROGRESS_PTR + arm_func_end GetNbAdventures + + arm_func_start CanMonsterSpawn +CanMonsterSpawn: ; 0x0204D360 + mov r0, #1 + bx lr + arm_func_end CanMonsterSpawn + + arm_func_start IncrementExclusiveMonsterCounts +IncrementExclusiveMonsterCounts: ; 0x0204D368 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r4, _0204D3B8 ; =VERSION_EXCLUSIVE_MONSTERS + ldr r7, _0204D3BC ; =GLOBAL_PROGRESS_PTR + mov r6, r0 + mov r5, #0 + mov r8, #1 +_0204D380: + mov r0, r5, lsl #2 + ldrsh r0, [r4, r0] + bl GetDexNumber + mov sb, r0 + mov r0, r6 + bl GetDexNumber + cmp sb, r0 + ldreq r0, [r7] + addeq r0, r0, r5 + add r5, r5, #1 + streqb r8, [r0, #0x12c] + cmp r5, #0x17 + blt _0204D380 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0204D3B8: .word VERSION_EXCLUSIVE_MONSTERS +_0204D3BC: .word GLOBAL_PROGRESS_PTR + arm_func_end IncrementExclusiveMonsterCounts + + arm_func_start CopyProgressInfoTo +CopyProgressInfoTo: ; 0x0204D3C0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r4, _0204D538 ; =0x00000483 + mov r5, r0 + mov r8, #0 + add r7, sp, #0 + mov r6, #1 +_0204D3D8: + mov r0, r8, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetMonsterFlag1 + strb r0, [sp] + mov r0, r5 + mov r1, r7 + mov r2, r6 + bl CopyBitsTo + add r8, r8, #1 + cmp r8, r4 + blt _0204D3D8 + mov r7, #0 + add r6, sp, #0 + mov r4, #1 +_0204D410: + mov r0, r7 + bl GetDungeonTipShown + strb r0, [sp] + mov r0, r5 + mov r1, r6 + mov r2, r4 + bl CopyBitsTo + add r7, r7, #1 + cmp r7, #0x1f + blt _0204D410 + ldr r4, _0204D538 ; =0x00000483 + mov r8, #0 + add r7, sp, #0 + mov r6, #1 +_0204D448: + mov r0, r8, lsl #0x10 + mov r0, r0, asr #0x10 + bl HasMonsterBeenAttackedInDungeons + strb r0, [sp] + mov r0, r5 + mov r1, r7 + mov r2, r6 + bl CopyBitsTo + add r8, r8, #1 + cmp r8, r4 + blt _0204D448 + ldr r8, _0204D53C ; =_0209E011 + ldr sb, _0204D540 ; =_0209E010 + ldr r6, _0204D544 ; =GLOBAL_PROGRESS_PTR + mov r4, #0 + mov r7, #1 +_0204D488: + ldr r0, [r6] + mov r2, r7 + add r0, r0, r4 + ldrb r0, [r0, #0x12c] + cmp r0, #0 + movne r1, sb + moveq r1, r8 + mov r0, r5 + bl CopyBitsTo + add r4, r4, #1 + cmp r4, #0x17 + blt _0204D488 + ldr r4, _0204D544 ; =GLOBAL_PROGRESS_PTR + mov r7, #0 + mov r6, #7 +_0204D4C4: + ldr r1, [r4] + mov r0, r5 + add r1, r1, #0x43 + add r1, r1, #0x100 + mov r2, r6 + add r1, r1, r7 + bl CopyBitsTo + add r7, r7, #1 + cmp r7, #0xb4 + blt _0204D4C4 + ldr r1, _0204D544 ; =GLOBAL_PROGRESS_PTR + mov r0, r5 + ldr r1, [r1] + mov r2, #0x20 + add r1, r1, #0x1f8 + bl CopyBitsTo + ldr r4, _0204D544 ; =GLOBAL_PROGRESS_PTR + mov r7, #0 + mov r6, #8 +_0204D510: + ldr r1, [r4] + mov r0, r5 + add r1, r1, #0x1fc + mov r2, r6 + add r1, r1, r7 + bl CopyBitsTo + add r7, r7, #1 + cmp r7, #0x10 + blt _0204D510 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0204D538: .word 0x00000483 +_0204D53C: .word _0209E011 +_0204D540: .word _0209E010 +_0204D544: .word GLOBAL_PROGRESS_PTR + arm_func_end CopyProgressInfoTo + + arm_func_start CopyProgressInfoFromScratchTo +CopyProgressInfoFromScratchTo: ; 0x0204D548 + stmdb sp!, {r3, lr} + sub sp, sp, #0x10 + mov r3, r0 + mov r2, r1 + add r0, sp, #0 + mov r1, r3 + bl sub_02050990 + add r0, sp, #0 + bl CopyProgressInfoTo + add r0, sp, #0 + bl sub_020509BC + ldr r0, [sp, #8] + add sp, sp, #0x10 + ldmia sp!, {r3, pc} + arm_func_end CopyProgressInfoFromScratchTo + + arm_func_start CopyProgressInfoFrom +CopyProgressInfoFrom: ; 0x0204D580 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #4 + ldr r1, _0204D740 ; =GLOBAL_PROGRESS_PTR + mov r4, r0 + ldr r0, [r1] + mov r1, #0x20c + bl MemZero + ldr r5, _0204D744 ; =0x00000483 + mov r8, #0 + add r7, sp, #0 + mov r6, #1 +_0204D5AC: + mov r0, r4 + mov r1, r7 + mov r2, r6 + bl CopyBitsFrom + ldrb r0, [sp] + cmp r0, #0 + beq _0204D5D4 + mov r0, r8, lsl #0x10 + mov r0, r0, asr #0x10 + bl SetMonsterFlag1 +_0204D5D4: + add r8, r8, #1 + cmp r8, r5 + blt _0204D5AC + mov r7, #0 + add r6, sp, #0 + mov r5, #1 +_0204D5EC: + mov r0, r4 + mov r1, r6 + mov r2, r5 + bl CopyBitsFrom + ldrb r0, [sp] + cmp r0, #0 + beq _0204D610 + mov r0, r7 + bl SetDungeonTipShown +_0204D610: + add r7, r7, #1 + cmp r7, #0x1f + blt _0204D5EC + ldr r5, _0204D744 ; =0x00000483 + mov r8, #0 + add r7, sp, #0 + mov r6, #1 +_0204D62C: + mov r0, r4 + mov r1, r7 + mov r2, r6 + bl CopyBitsFrom + ldrb r0, [sp] + cmp r0, #0 + beq _0204D654 + mov r0, r8, lsl #0x10 + mov r0, r0, asr #0x10 + bl SetMonsterFlag2 +_0204D654: + add r8, r8, #1 + cmp r8, r5 + blt _0204D62C + mov sb, #0 + mov r6, #1 + ldr sl, _0204D740 ; =GLOBAL_PROGRESS_PTR + mov r5, sb + add r8, sp, #1 + mov r7, r6 +_0204D678: + mov r0, r4 + mov r1, r8 + mov r2, r7 + bl CopyBitsFrom + ldrb r0, [sp, #1] + tst r0, #1 + ldr r0, [sl] + movne r1, r6 + add r0, r0, sb + moveq r1, r5 + add sb, sb, #1 + strb r1, [r0, #0x12c] + cmp sb, #0x17 + blt _0204D678 + ldr r8, _0204D740 ; =GLOBAL_PROGRESS_PTR + mov r7, #0 + add r6, sp, #1 + mov r5, #7 +_0204D6C0: + mov r0, r4 + mov r1, r6 + mov r2, r5 + bl CopyBitsFrom + ldrb r1, [sp, #1] + ldr r0, [r8] + add r0, r0, r7 + and r1, r1, #0x7f + add r7, r7, #1 + strb r1, [r0, #0x143] + cmp r7, #0xb4 + blt _0204D6C0 + ldr r1, _0204D740 ; =GLOBAL_PROGRESS_PTR + mov r0, r4 + ldr r1, [r1] + mov r2, #0x20 + add r1, r1, #0x1f8 + bl CopyBitsFrom + ldr r5, _0204D740 ; =GLOBAL_PROGRESS_PTR + mov r7, #0 + mov r6, #8 +_0204D714: + ldr r1, [r5] + mov r0, r4 + add r1, r1, #0x1fc + mov r2, r6 + add r1, r1, r7 + bl CopyBitsFrom + add r7, r7, #1 + cmp r7, #0x10 + blt _0204D714 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0204D740: .word GLOBAL_PROGRESS_PTR +_0204D744: .word 0x00000483 + arm_func_end CopyProgressInfoFrom + + arm_func_start CopyProgressInfoFromScratchFrom +CopyProgressInfoFromScratchFrom: ; 0x0204D748 + stmdb sp!, {r3, lr} + sub sp, sp, #0x10 + mov r3, r0 + mov r2, r1 + add r0, sp, #0 + mov r1, r3 + bl sub_02050974 + add r0, sp, #0 + bl CopyProgressInfoFrom + add r0, sp, #0 + bl sub_020509BC + ldr r0, [sp, #8] + add sp, sp, #0x10 + ldmia sp!, {r3, pc} + arm_func_end CopyProgressInfoFromScratchFrom + + arm_func_start InitKaomadoStream +InitKaomadoStream: ; 0x0204D780 + stmdb sp!, {r3, lr} + bl FileRom_InitDataTransfer + ldr r0, _0204D798 ; =KAOMADO_STREAM + bl FileRom_Veneer_FileInit + bl FileRom_StopDataTransfer + ldmia sp!, {r3, pc} + .align 2, 0 +_0204D798: .word KAOMADO_STREAM + arm_func_end InitKaomadoStream + + arm_func_start InitPortraitParams +InitPortraitParams: ; 0x0204D79C + mov r2, #0 + strh r2, [r0] + sub r1, r2, #2 + strb r1, [r0, #2] + strb r2, [r0, #3] + mov r1, #2 + str r1, [r0, #4] + mov r1, #9 + str r1, [r0, #8] + strb r2, [r0, #0xc] + strb r2, [r0, #0xd] + strb r2, [r0, #0xe] + strb r2, [r0, #0xf] + bx lr + arm_func_end InitPortraitParams + + arm_func_start InitPortraitParamsWithMonsterId +InitPortraitParamsWithMonsterId: ; 0x0204D7D4 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl InitPortraitParams + strh r4, [r5] + mov r0, #0 + strb r0, [r5, #2] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end InitPortraitParamsWithMonsterId + + arm_func_start SetPortraitEmotion +SetPortraitEmotion: ; 0x0204D7F4 + ldrsh r2, [r0] + cmp r2, #0 + strneb r1, [r0, #2] + bx lr + arm_func_end SetPortraitEmotion + + arm_func_start SetPortraitLayout +SetPortraitLayout: ; 0x0204D804 + ldrsh r2, [r0] + cmp r2, #0 + cmpne r1, #0x20 + bxeq lr + mov r2, #6 + mul r2, r1, r2 + ldr r3, _0204D844 ; =PORTRAIT_LAYOUTS + strb r1, [r0, #3] + ldrsh r1, [r3, r2] + add r2, r3, r2 + str r1, [r0, #4] + ldrsh r1, [r2, #2] + str r1, [r0, #8] + ldrb r1, [r2, #4] + strb r1, [r0, #0xc] + bx lr + .align 2, 0 +_0204D844: .word PORTRAIT_LAYOUTS + arm_func_end SetPortraitLayout + + arm_func_start SetPortraitOffset +SetPortraitOffset: ; 0x0204D848 + stmdb sp!, {r3, lr} + ldrsh r2, [r0] + cmp r2, #0 + ldmeqia sp!, {r3, pc} + ldrb r3, [r0, #3] + mov r2, #6 + ldr lr, _0204D890 ; =PORTRAIT_LAYOUTS + smulbb ip, r3, r2 + ldrsh r3, [lr, ip] + ldr r2, [r1] + add ip, lr, ip + add r2, r3, r2 + str r2, [r0, #4] + ldrsh r2, [ip, #2] + ldr r1, [r1, #4] + add r1, r2, r1 + str r1, [r0, #8] + ldmia sp!, {r3, pc} + .align 2, 0 +_0204D890: .word PORTRAIT_LAYOUTS + arm_func_end SetPortraitOffset + + arm_func_start AllowPortraitDefault +AllowPortraitDefault: ; 0x0204D894 + strb r1, [r0, #0xf] + bx lr + arm_func_end AllowPortraitDefault + + arm_func_start IsValidPortrait +IsValidPortrait: ; 0x0204D89C + ldrsh r1, [r0] + cmp r1, #0 + ldrnesb r1, [r0, #2] + mvnne r0, #1 + cmpne r1, r0 + movne r0, #1 + moveq r0, #0 + bx lr + arm_func_end IsValidPortrait + + arm_func_start LoadPortrait +LoadPortrait: ; 0x0204D8BC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sl, r0 + mov sb, r1 + ldrsh r7, [sl] + ldrsb r8, [sl, #2] + bl FileRom_InitDataTransfer + ldr r0, _0204DA14 ; =KAOMADO_STREAM + ldr r1, _0204DA18 ; =KAOMADO_FILEPATH + bl FileRom_HandleOpen + mov fp, #0 + mov r4, fp + mov r5, #1 + b _0204D9DC +_0204D8F4: + mov r0, #0x28 + mul r0, r7, r0 + add r0, r0, r8, lsl #1 + mov r1, r0, lsl #2 + ldr r0, _0204DA14 ; =KAOMADO_STREAM + mov r2, #0 + sub r7, r7, #0x258 + bl FileRom_HandleSeek + ldr r0, _0204DA14 ; =KAOMADO_STREAM + add r1, sp, #0 + mov r2, #0xc + bl FileRom_HandleRead + ldr r0, [sp, #4] + cmp r0, #0 + movge r0, #1 + movlt r0, #0 + strb r0, [sl, #0xd] + ldrb r0, [sl, #0xc] + cmp r0, #0 + beq _0204D984 + ldr r0, [sp, #4] + cmp r0, #0 + mov r1, r0 + bge _0204D96C + ldr r1, [sp] + cmp r0, #0 + rsblt r0, r0, #0 + sub r6, r0, r1 + strb r5, [sl, #0xe] + b _0204D99C +_0204D96C: + ldr r2, [sp, #8] + cmp r2, #0 + rsblt r2, r2, #0 + sub r6, r2, r0 + strb r4, [sl, #0xe] + b _0204D99C +_0204D984: + ldr r0, [sp, #4] + ldr r1, [sp] + cmp r0, #0 + rsblt r0, r0, #0 + sub r6, r0, r1 + strb fp, [sl, #0xe] +_0204D99C: + cmp r1, #0 + ble _0204D9DC + cmp sb, #0 + beq _0204D9C8 + ldr r0, _0204DA14 ; =KAOMADO_STREAM + mov r2, #0 + bl FileRom_HandleSeek + ldr r0, _0204DA14 ; =KAOMADO_STREAM + mov r1, sb + mov r2, r6 + bl FileRom_HandleRead +_0204D9C8: + ldr r0, _0204DA14 ; =KAOMADO_STREAM + bl FileClose + bl FileRom_StopDataTransfer + mov r0, #1 + b _0204DA0C +_0204D9DC: + cmp r7, #0 + bgt _0204D8F4 + ldrb r0, [sl, #0xf] + cmp r0, #0 + cmpne r8, #0 + movne r8, #0 + ldrnesh r7, [sl] + bne _0204D9DC + ldr r0, _0204DA14 ; =KAOMADO_STREAM + bl FileClose + bl FileRom_StopDataTransfer + mov r0, #0 +_0204DA0C: + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0204DA14: .word KAOMADO_STREAM +_0204DA18: .word KAOMADO_FILEPATH + arm_func_end LoadPortrait + + arm_func_start sub_0204DA1C +sub_0204DA1C: ; 0x0204DA1C + ldr r1, _0204DA28 ; =ARM9_UNKNOWN_TABLE__NA_209E164 + ldrb r0, [r1, r0] + bx lr + .align 2, 0 +_0204DA28: .word ARM9_UNKNOWN_TABLE__NA_209E164 + arm_func_end sub_0204DA1C + + arm_func_start sub_0204DA2C +sub_0204DA2C: ; 0x0204DA2C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x68 + mov r4, r2 + mov r2, #0 + mov r5, r1 + mov r6, r2 + add r1, sp, #0 +_0204DA48: + strb r6, [r1, r2] + add r2, r2, #1 + cmp r2, #0x22 + blt _0204DA48 + add r3, sp, #0x22 + ldr r2, _0204DB04 ; =ARM9_UNKNOWN_TABLE__NA_209E164 + b _0204DA84 +_0204DA64: + ldrb r1, [r0] + ldrb r1, [r2, r1] + cmp r1, #0xff + strb r1, [r3, r6] + moveq r0, #0 + beq _0204DAFC + add r0, r0, #1 + add r6, r6, #1 +_0204DA84: + cmp r6, r4 + blt _0204DA64 + add r1, r4, r4, lsl #2 + and r0, r1, #7 + add r0, r0, #7 + mov r0, r0, asr #3 + add sl, r0, r1, asr #3 + add r0, sp, #0x58 + add r1, sp, #0 + mov r2, sl + bl sub_02050990 + mov sb, #0 + add r8, sp, #0x58 + add r7, sp, #0x22 + mov r6, #5 + b _0204DAD8 +_0204DAC4: + mov r0, r8 + mov r2, r6 + add r1, r7, sb + bl CopyBitsTo + add sb, sb, #1 +_0204DAD8: + cmp sb, r4 + blt _0204DAC4 + add r0, sp, #0x58 + bl sub_020509BC + add r1, sp, #0 + mov r0, r5 + mov r2, sl + bl MemcpySimple + mov r0, #1 +_0204DAFC: + add sp, sp, #0x68 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0204DB04: .word ARM9_UNKNOWN_TABLE__NA_209E164 + arm_func_end sub_0204DA2C + + arm_func_start sub_0204DB08 +sub_0204DB08: ; 0x0204DB08 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x48 + mov r4, r2 + add r3, r4, r4, lsl #2 + and r2, r3, #7 + add r2, r2, #7 + mov r2, r2, asr #3 + mov r5, r0 + add r0, sp, #0x38 + add r2, r2, r3, asr #3 + bl sub_02050974 + mov sb, #0 + add r8, sp, #0x38 + add r7, sp, #0 + mov r6, #5 + b _0204DB5C +_0204DB48: + mov r0, r8 + mov r2, r6 + add r1, r7, sb + bl CopyBitsFrom + add sb, sb, #1 +_0204DB5C: + cmp sb, r4 + blt _0204DB48 + add r0, sp, #0x38 + bl sub_020509BC + mov r3, #0 + add r2, sp, #0 + ldr r1, _0204DB9C ; =WONDER_MAIL_BITS_MAP + b _0204DB8C +_0204DB7C: + ldrb r0, [r2, r3] + add r3, r3, #1 + ldrb r0, [r1, r0] + strb r0, [r5], #1 +_0204DB8C: + cmp r3, r4 + blt _0204DB7C + add sp, sp, #0x48 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0204DB9C: .word WONDER_MAIL_BITS_MAP + arm_func_end sub_0204DB08 + + arm_func_start sub_0204DBA0 +sub_0204DBA0: ; 0x0204DBA0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0xa0 + mov r2, r0 + mov r5, r1 + mov r1, r2 + add r0, sp, #0x10 + mov r2, #0x36 + mov r4, #0 + bl MemcpySimple + ldr r3, _0204DC9C ; =ARM9_UNKNOWN_TABLE__NA_209E12C + mov r6, r4 + add r2, sp, #0x10 + add r0, sp, #0x46 + mov ip, r4 +_0204DBD8: + mov lr, ip + ldrb r1, [r3, r6] + b _0204DBF0 +_0204DBE4: + cmp lr, r1 + beq _0204DBF8 + add lr, lr, #1 +_0204DBF0: + cmp lr, #0x36 + blt _0204DBE4 +_0204DBF8: + ldrb r1, [r2, lr] + strb r1, [r0, r6] + add r6, r6, #1 + cmp r6, #0x36 + blt _0204DBD8 + add r1, sp, #0x7c + mov r2, #0x36 + bl sub_0204DA2C + cmp r0, #0 + moveq r0, #0 + beq _0204DC94 + ldrb r0, [sp, #0x7c] + add r1, sp, #0x7d + mov r2, #0x20 + bl sub_0204E0A0 + mov r3, #1 + add r2, sp, #0x7c +_0204DC3C: + ldrb r1, [r2, r3] + and r0, r3, #0xff + add r3, r3, #1 + add r0, r1, r0 + add r0, r4, r0 + cmp r3, #0x21 + and r4, r0, #0xff + blt _0204DC3C + ldrb r0, [sp, #0x7c] + cmp r0, r4 + movne r0, #0 + bne _0204DC94 + add r0, sp, #0 + add r1, sp, #0x7d + mov r2, #0x20 + bl sub_02050974 + add r0, sp, #0 + mov r1, r5 + bl sub_0205C2A4 + add r0, sp, #0 + bl sub_020509BC + mov r0, #1 +_0204DC94: + add sp, sp, #0xa0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0204DC9C: .word ARM9_UNKNOWN_TABLE__NA_209E12C + arm_func_end sub_0204DBA0 + + arm_func_start sub_0204DCA0 +sub_0204DCA0: ; 0x0204DCA0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0xa0 + mov r4, #0 + mov r5, r0 + mov r6, r1 + mov r2, r4 + mov r1, r4 + add r0, sp, #0x7c +_0204DCC0: + strb r1, [r0, r2] + add r2, r2, #1 + cmp r2, #0x22 + blt _0204DCC0 + add r0, sp, #0 + add r1, sp, #0x7d + mov r2, #0x20 + bl sub_02050990 + add r0, sp, #0 + mov r1, r6 + bl sub_0205C548 + add r0, sp, #0 + bl sub_020509BC + mov r3, #1 + add r2, sp, #0x7c +_0204DCFC: + ldrb r1, [r2, r3] + and r0, r3, #0xff + add r3, r3, #1 + add r0, r1, r0 + add r0, r4, r0 + cmp r3, #0x21 + and r4, r0, #0xff + blt _0204DCFC + add r1, sp, #0x7d + mov r0, r4 + mov r2, #0x20 + strb r4, [sp, #0x7c] + bl sub_0204E02C + add r0, sp, #0x46 + add r1, sp, #0x7c + mov r2, #0x36 + bl sub_0204DB08 + ldr r2, _0204DD7C ; =ARM9_UNKNOWN_TABLE__NA_209E12C + mov ip, #0 + add r4, sp, #0x46 + add r1, sp, #0x10 +_0204DD50: + ldrb r3, [r4, ip] + ldrb r0, [r2, ip] + add ip, ip, #1 + cmp ip, #0x36 + strb r3, [r1, r0] + blt _0204DD50 + mov r0, r5 + mov r2, #0x36 + bl MemcpySimple + add sp, sp, #0xa0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0204DD7C: .word ARM9_UNKNOWN_TABLE__NA_209E12C + arm_func_end sub_0204DCA0 + + arm_func_start WonderMailPasswordToMission +WonderMailPasswordToMission: ; 0x0204DD80 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x6c + mov r2, r0 + mov r4, r1 + mov r1, r2 + add r0, sp, #0x10 + mov r2, #0x22 + bl MemcpySimple + mov lr, #0 + ldr r3, _0204DE74 ; =WONDER_MAIL_BITS_SWAP + add r2, sp, #0x10 + add r0, sp, #0x32 + mov r5, lr +_0204DDB4: + mov ip, r5 + ldrb r1, [r3, lr] + b _0204DDCC +_0204DDC0: + cmp ip, r1 + beq _0204DDD4 + add ip, ip, #1 +_0204DDCC: + cmp ip, #0x22 + blt _0204DDC0 +_0204DDD4: + ldrb r1, [r2, ip] + strb r1, [r0, lr] + add lr, lr, #1 + cmp lr, #0x22 + blt _0204DDB4 + add r1, sp, #0x54 + mov r2, #0x22 + bl sub_0204DA2C + cmp r0, #0 + moveq r0, #0 + beq _0204DE6C + ldrb r0, [sp, #0x54] + add r1, sp, #0x58 + mov r2, #0x11 + bl sub_0204E0A0 + add r0, sp, #0x58 + mov r1, #0x11 + bl sub_02004F80 + mov r5, r0 + ldrb r2, [sp, #0x54] + ldr r0, _0204DE78 ; =_0209E264 + mov r1, r5 + bl Debug_Print0 + ldr r0, [sp, #0x54] + cmp r0, r5 + movne r0, #0 + bne _0204DE6C + add r0, sp, #0 + add r1, sp, #0x58 + mov r2, #0x11 + bl sub_02050974 + add r0, sp, #0 + mov r1, r4 + mov r2, #1 + bl sub_0205FD88 + add r0, sp, #0 + bl sub_020509BC + mov r0, #1 +_0204DE6C: + add sp, sp, #0x6c + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0204DE74: .word WONDER_MAIL_BITS_SWAP +_0204DE78: .word _0209E264 + arm_func_end WonderMailPasswordToMission + + arm_func_start MissionToWonderMailPassword +MissionToWonderMailPassword: ; 0x0204DE7C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x6c + mov r2, #0 + mov r4, r0 + mov r5, r1 + mov r1, r2 + add r0, sp, #0x54 +_0204DE98: + strb r1, [r0, r2] + add r2, r2, #1 + cmp r2, #0x16 + blt _0204DE98 + add r0, sp, #0 + add r1, sp, #0x58 + mov r2, #0x11 + bl sub_02050990 + add r0, sp, #0 + mov r1, r5 + mov r2, #1 + bl sub_0205FE80 + add r0, sp, #0 + bl sub_020509BC + add r0, sp, #0x58 + mov r1, #0x11 + bl sub_02004F80 + mov r1, r0 + str r1, [sp, #0x54] + ldrb r2, [sp, #0x54] + ldr r0, _0204DF4C ; =_0209E264 + bl Debug_Print0 + ldrb r0, [sp, #0x54] + add r1, sp, #0x58 + mov r2, #0x11 + bl sub_0204E02C + add r0, sp, #0x32 + add r1, sp, #0x54 + mov r2, #0x22 + bl sub_0204DB08 + ldr r2, _0204DF50 ; =WONDER_MAIL_BITS_SWAP + mov lr, #0 + add ip, sp, #0x32 + add r1, sp, #0x10 +_0204DF20: + ldrb r3, [ip, lr] + ldrb r0, [r2, lr] + add lr, lr, #1 + cmp lr, #0x22 + strb r3, [r1, r0] + blt _0204DF20 + mov r0, r4 + mov r2, #0x22 + bl MemcpySimple + add sp, sp, #0x6c + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0204DF4C: .word _0209E264 +_0204DF50: .word WONDER_MAIL_BITS_SWAP + arm_func_end MissionToWonderMailPassword + + arm_func_start sub_0204DF54 +sub_0204DF54: ; 0x0204DF54 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + tst r2, #0x1f + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mov r5, #0 + ldr ip, _0204DFAC ; =ARM9_UNKNOWN_TABLE__NA_209E280 + mov r4, r5 + b _0204DF9C +_0204DF74: + mov r6, r4 + add r7, r1, r5 + add r8, r0, r5 +_0204DF80: + ldrb lr, [r7, r6] + ldrb r3, [ip, r6] + add r6, r6, #1 + cmp r6, #0x20 + strb lr, [r8, r3] + blt _0204DF80 + add r5, r5, #0x20 +_0204DF9C: + cmp r5, r2 + blo _0204DF74 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0204DFAC: .word ARM9_UNKNOWN_TABLE__NA_209E280 + arm_func_end sub_0204DF54 + + arm_func_start sub_0204DFB0 +sub_0204DFB0: ; 0x0204DFB0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + tst r2, #0x1f + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r5, #0 + mov lr, r5 + ldr ip, _0204E028 ; =ARM9_UNKNOWN_TABLE__NA_209E280 + mov r4, r5 + b _0204E018 +_0204DFD4: + mov sb, r4 + add r7, r1, r5 + add r8, r0, r5 +_0204DFE0: + mov r6, lr + ldrb r3, [ip, sb] + b _0204DFF8 +_0204DFEC: + cmp r6, r3 + beq _0204E000 + add r6, r6, #1 +_0204DFF8: + cmp r6, #0x20 + blt _0204DFEC +_0204E000: + ldrb r3, [r7, r6] + strb r3, [r8, sb] + add sb, sb, #1 + cmp sb, #0x20 + blt _0204DFE0 + add r5, r5, #0x20 +_0204E018: + cmp r5, r2 + blo _0204DFD4 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0204E028: .word ARM9_UNKNOWN_TABLE__NA_209E280 + arm_func_end sub_0204DFB0 + + arm_func_start sub_0204E02C +sub_0204E02C: ; 0x0204E02C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov sl, r0 + and r0, sl, #0xf + add r0, r0, sl, asr #4 + add r0, r0, #8 + tst sl, #1 + movne r7, #1 + mov r5, #0 + mov sb, r1 + mov r8, r2 + and r6, r0, #0xff + mvneq r7, #0 + mov r1, r5 + ldr r4, _0204E09C ; =WONDER_MAIL_ENCRYPTION_TABLE + b _0204E090 +_0204E068: + mla r0, r1, r7, sl + and r0, r0, #0xff + ldrb r3, [sb, r5] + ldrb r2, [r4, r0] + add r0, r1, #1 + mov r1, r6 + add r2, r3, r2 + strb r2, [sb, r5] + bl _s32_div_f + add r5, r5, #1 +_0204E090: + cmp r5, r8 + blo _0204E068 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0204E09C: .word WONDER_MAIL_ENCRYPTION_TABLE + arm_func_end sub_0204E02C + + arm_func_start sub_0204E0A0 +sub_0204E0A0: ; 0x0204E0A0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov sl, r0 + and r0, sl, #0xf + add r0, r0, sl, asr #4 + add r0, r0, #8 + tst sl, #1 + movne r7, #1 + mov r5, #0 + mov sb, r1 + mov r8, r2 + and r6, r0, #0xff + mvneq r7, #0 + mov r1, r5 + ldr r4, _0204E110 ; =WONDER_MAIL_ENCRYPTION_TABLE + b _0204E104 +_0204E0DC: + mla r0, r1, r7, sl + and r0, r0, #0xff + ldrb r3, [sb, r5] + ldrb r2, [r4, r0] + add r0, r1, #1 + mov r1, r6 + sub r2, r3, r2 + strb r2, [sb, r5] + bl _s32_div_f + add r5, r5, #1 +_0204E104: + cmp r5, r8 + blo _0204E0DC + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0204E110: .word WONDER_MAIL_ENCRYPTION_TABLE + arm_func_end sub_0204E0A0 + + arm_func_start sub_0204E114 +sub_0204E114: ; 0x0204E114 + stmdb sp!, {r4, lr} + mov r4, r0 + bl GetDungeonModeSpecial + cmp r0, #3 +#ifdef JAPAN + moveq r0, #0x37c +#else + ldreq r0, _0204E14C ; =0x00000B2C +#endif + beq _0204E144 + cmp r4, #0xd4 + ldreq r0, _0204E150 ; =0x00000B2D +#ifdef JAPAN + addne r0, r4, #0x2c8 +#else + addne r0, r4, #0x278 + addne r0, r0, #0x800 +#endif + movne r0, r0, lsl #0x10 + movne r0, r0, lsr #0x10 +_0204E144: + bl StringFromId + ldmia sp!, {r4, pc} + .align 2, 0 +#ifdef JAPAN +_0204E150: .word 0x0000037D +#else +_0204E14C: .word 0x00000B2C +_0204E150: .word 0x00000B2D +#endif + arm_func_end sub_0204E114 + + arm_func_start sub_0204E154 +sub_0204E154: ; 0x0204E154 + stmdb sp!, {r3, lr} + sub sp, sp, #0x10 + mov r3, r0 + mov r2, r1 + add r0, sp, #0 + mov r1, r3 + bl sub_02050990 + add r0, sp, #0 + bl sub_0204ABB8 + add r0, sp, #0 + bl sub_0204F9F4 + add r0, sp, #0 + bl CopyLogTo + add r0, sp, #0 + bl sub_020509BC + ldr r0, [sp, #8] + add sp, sp, #0x10 + ldmia sp!, {r3, pc} + arm_func_end sub_0204E154 + + arm_func_start sub_0204E19C +sub_0204E19C: ; 0x0204E19C + stmdb sp!, {r3, lr} + sub sp, sp, #0x10 + mov r3, r0 + mov r2, r1 + add r0, sp, #0 + mov r1, r3 + bl sub_02050974 + add r0, sp, #0 + bl sub_0204ACDC + add r0, sp, #0 + bl sub_0204FA0C + add r0, sp, #0 + bl CopyLogFrom + add r0, sp, #0 + bl sub_020509BC + ldr r0, [sp, #8] + add sp, sp, #0x10 + ldmia sp!, {r3, pc} + arm_func_end sub_0204E19C + + arm_func_start sub_0204E1E4 +sub_0204E1E4: ; 0x0204E1E4 + stmdb sp!, {r3, lr} + mov r0, #0 + bl sub_0204E8EC + ldr r1, _0204E208 ; =_022AB4F8 + mov r2, #0 + ldr r0, _0204E20C ; =_022AB5AC + strb r2, [r1, #1] + bl sub_0200C4CC + ldmia sp!, {r3, pc} + .align 2, 0 +_0204E208: .word _022AB4F8 +_0204E20C: .word _022AB5AC + arm_func_end sub_0204E1E4 + + arm_func_start sub_0204E210 +sub_0204E210: ; 0x0204E210 + stmdb sp!, {r3, lr} + bl GetGameMode + cmp r0, #1 + mov r0, #0 + bhi _0204E2AC + mov r2, r0 + mov r1, #0x32 + bl LoadScriptVariableValueAtIndex + cmp r0, #6 + cmpne r0, #0xa + mov r0, #0 + bne _0204E258 + mov r2, r0 + mov r1, #0x2e + bl LoadScriptVariableValueAtIndex + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + ldmia sp!, {r3, pc} +_0204E258: + mov r1, #0x32 + mov r2, #1 + bl LoadScriptVariableValueAtIndex + cmp r0, #6 + cmpne r0, #0xa + mov r0, #0 + bne _0204E28C + mov r1, #0x2e + mov r2, #1 + bl LoadScriptVariableValueAtIndex + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + ldmia sp!, {r3, pc} +_0204E28C: + mov r1, #0x32 + mov r2, #2 + bl LoadScriptVariableValueAtIndex + cmp r0, #6 + cmpne r0, #0xa + bne _0204E2D4 + mov r0, #2 + ldmia sp!, {r3, pc} +_0204E2AC: + mov r1, #0x2c + bl LoadScriptVariableValue + cmp r0, #6 + bne _0204E2D4 + mov r0, #0 + mov r1, #0x28 + bl LoadScriptVariableValue + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + ldmia sp!, {r3, pc} +_0204E2D4: + mvn r0, #0 + ldmia sp!, {r3, pc} + arm_func_end sub_0204E210 + + arm_func_start sub_0204E2DC +sub_0204E2DC: ; 0x0204E2DC + stmdb sp!, {r4, lr} + mov r4, r0 + bl GetGameMode + strb r0, [r4] + cmp r0, #1 + mov r0, #0 + bhi _0204E398 + mov r2, r0 + mov r1, #0x32 + bl LoadScriptVariableValueAtIndex + cmp r0, #6 + cmpne r0, #0xa + mov r0, #0 + bne _0204E334 + mov r3, #2 + mov r2, r0 + mov r1, #0x2e + strb r3, [r4] + bl LoadScriptVariableValueAtIndex + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + ldmia sp!, {r4, pc} +_0204E334: + mov r1, #0x32 + mov r2, #1 + bl LoadScriptVariableValueAtIndex + cmp r0, #6 + cmpne r0, #0xa + mov r0, #0 + bne _0204E370 + mov r3, #3 + mov r1, #0x2e + mov r2, #1 + strb r3, [r4] + bl LoadScriptVariableValueAtIndex + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + ldmia sp!, {r4, pc} +_0204E370: + mov r1, #0x32 + mov r2, #2 + bl LoadScriptVariableValueAtIndex + cmp r0, #6 + cmpne r0, #0xa + bne _0204E3C0 + mov r0, #4 + strb r0, [r4] + mov r0, #2 + ldmia sp!, {r4, pc} +_0204E398: + mov r1, #0x2c + bl LoadScriptVariableValue + cmp r0, #6 + bne _0204E3C0 + mov r0, #0 + mov r1, #0x28 + bl LoadScriptVariableValue + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + ldmia sp!, {r4, pc} +_0204E3C0: + mvn r0, #0 + ldmia sp!, {r4, pc} + arm_func_end sub_0204E2DC + + arm_func_start sub_0204E3C8 +sub_0204E3C8: ; 0x0204E3C8 + stmdb sp!, {r3, lr} + bl sub_02048BFC + cmp r0, #2 + bne _0204E400 + bl sub_02048CB8 + ldr r1, _0204E408 ; =0x000F1207 + cmp r0, r1 + bne _0204E400 + mov r0, #1 + mov r1, #0 + bl GetSosMailCount + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, pc} +_0204E400: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0204E408: .word 0x000F1207 + arm_func_end sub_0204E3C8 + + arm_func_start sub_0204E40C +sub_0204E40C: ; 0x0204E40C + stmdb sp!, {r3, lr} + bl sub_02048BFC + cmp r0, #2 + bne _0204E458 + bl sub_02048CB8 + ldr r1, _0204E460 ; =0x000F1207 + cmp r0, r1 + bne _0204E458 + mov r0, #1 + mov r1, #0 + bl GetSosMailCount + cmp r0, #0 + bne _0204E458 + mov r0, #7 + mov r1, #0 + bl GetSosMailCount + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, pc} +_0204E458: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0204E460: .word 0x000F1207 + arm_func_end sub_0204E40C + + arm_func_start sub_0204E464 +sub_0204E464: ; 0x0204E464 + stmdb sp!, {r3, lr} + bl sub_02048BFC + cmp r0, #2 + bne _0204E4B0 + bl sub_02048CB8 + ldr r1, _0204E4B8 ; =0x000F1207 + cmp r0, r1 + bne _0204E4B0 + mov r0, #1 + mov r1, #0 + bl GetSosMailCount + cmp r0, #0 + beq _0204E4B0 + mov r0, #7 + mov r1, #0 + bl GetSosMailCount + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, pc} +_0204E4B0: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0204E4B8: .word 0x000F1207 + arm_func_end sub_0204E464 + + arm_func_start sub_0204E4BC +sub_0204E4BC: ; 0x0204E4BC + stmdb sp!, {r3, lr} + bl sub_02048BFC + cmp r0, #2 + bne _0204E4E0 + bl sub_02048CB8 + ldr r1, _0204E4E8 ; =0x000F1207 + cmp r0, r1 + moveq r0, #0 + ldmeqia sp!, {r3, pc} +_0204E4E0: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0204E4E8: .word 0x000F1207 + arm_func_end sub_0204E4BC + + arm_func_start sub_0204E4EC +sub_0204E4EC: ; 0x0204E4EC + stmdb sp!, {r4, lr} + bl sub_02048CB8 + mov r4, r0 + bl sub_02048BFC + cmp r0, #2 + bne _0204E524 + ldr r1, _0204E52C ; =0x000F1207 + cmp r4, r1 + addne r0, r1, #1 + cmpne r4, r0 + addne r0, r1, #3 + cmpne r4, r0 + movne r0, #1 + ldmneia sp!, {r4, pc} +_0204E524: + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0204E52C: .word 0x000F1207 + arm_func_end sub_0204E4EC + + arm_func_start sub_0204E530 +sub_0204E530: ; 0x0204E530 + stmdb sp!, {r3, lr} + bl sub_02048BFC + cmp r0, #1 + bne _0204E57C + mov r0, #1 + mov r1, #0 + bl GetSosMailCount + cmp r0, #0 + bne _0204E57C + mov r0, #7 + mov r1, #0 + bl GetSosMailCount + cmp r0, #0 + bne _0204E57C + bl sub_0204E210 + mvn r1, #0 + cmp r0, r1 + moveq r0, #1 + ldmeqia sp!, {r3, pc} +_0204E57C: + mov r0, #0 + ldmia sp!, {r3, pc} + arm_func_end sub_0204E530 + + arm_func_start sub_0204E584 +sub_0204E584: ; 0x0204E584 + stmdb sp!, {r3, lr} + bl sub_02048BFC + cmp r0, #1 + bne _0204E5DC + mov r0, #1 + mov r1, #0 + bl GetSosMailCount + cmp r0, #0 + bne _0204E5DC + mov r0, #7 + mov r1, #0 + bl GetSosMailCount + cmp r0, #0 + bne _0204E5DC + bl sub_0204E210 + mvn r1, #0 + cmp r0, r1 + bne _0204E5DC + bl sub_0205633C + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, pc} +_0204E5DC: + mov r0, #0 + ldmia sp!, {r3, pc} + arm_func_end sub_0204E584 + + arm_func_start sub_0204E5E4 +sub_0204E5E4: ; 0x0204E5E4 + stmdb sp!, {r3, lr} + bl sub_02048BFC + cmp r0, #1 + bne _0204E63C + mov r0, #1 + mov r1, #0 + bl GetSosMailCount + cmp r0, #0 + bne _0204E63C + mov r0, #7 + mov r1, #0 + bl GetSosMailCount + cmp r0, #0 + bne _0204E63C + bl sub_0204E210 + mvn r1, #0 + cmp r0, r1 + bne _0204E63C + bl sub_02056360 + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, pc} +_0204E63C: + mov r0, #0 + ldmia sp!, {r3, pc} + arm_func_end sub_0204E5E4 + + arm_func_start sub_0204E644 +sub_0204E644: ; 0x0204E644 + stmdb sp!, {r3, lr} + mov r0, #4 + bl GetPerformanceFlagWithChecks + cmp r0, #0 + beq _0204E69C + bl sub_02048BFC + cmp r0, #1 + bne _0204E69C + mov r0, #1 + mov r1, #0 + bl GetSosMailCount + cmp r0, #0 + bne _0204E69C + mov r0, #7 + mov r1, #0 + bl GetSosMailCount + cmp r0, #0 + bne _0204E69C + bl sub_0205633C + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, pc} +_0204E69C: + mov r0, #0 + ldmia sp!, {r3, pc} + arm_func_end sub_0204E644 + + arm_func_start sub_0204E6A4 +sub_0204E6A4: ; 0x0204E6A4 + stmdb sp!, {r3, lr} + bl sub_02048BFC + cmp r0, #2 + bne _0204E6F0 + bl sub_02048CB8 + ldr r1, _0204E6F8 ; =0x000F1207 + cmp r0, r1 + bne _0204E6F0 + mov r0, #1 + mov r1, #0 + bl GetSosMailCount + cmp r0, #0 + beq _0204E6F0 + mov r0, #7 + mov r1, #0 + bl GetSosMailCount + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, pc} +_0204E6F0: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0204E6F8: .word 0x000F1207 + arm_func_end sub_0204E6A4 + + arm_func_start sub_0204E6FC +sub_0204E6FC: ; 0x0204E6FC + ldr r0, _0204E708 ; =PENDING_DUNGEON_ID + ldrsb r0, [r0, #0xd] + bx lr + .align 2, 0 +_0204E708: .word PENDING_DUNGEON_ID + arm_func_end sub_0204E6FC + + arm_func_start sub_0204E70C +sub_0204E70C: ; 0x0204E70C + stmdb sp!, {r4, lr} + ldr r0, _0204E75C ; =PENDING_DUNGEON_ID + ldrsb r4, [r0, #0xd] + and r1, r4, #0xff + cmp r1, #1 + bhi _0204E754 + ldrsh r0, [r0, #2] + bl GetDungeonModeSpecial + cmp r0, #1 + beq _0204E744 + cmp r0, #2 + beq _0204E74C + cmp r0, #3 + bne _0204E754 +_0204E744: + mov r0, #0 + ldmia sp!, {r4, pc} +_0204E74C: + mov r0, #1 + ldmia sp!, {r4, pc} +_0204E754: + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_0204E75C: .word PENDING_DUNGEON_ID + arm_func_end sub_0204E70C + + arm_func_start sub_0204E760 +sub_0204E760: ; 0x0204E760 + ldr r0, _0204E76C ; =PENDING_DUNGEON_ID + ldrsh r0, [r0, #2] + bx lr + .align 2, 0 +_0204E76C: .word PENDING_DUNGEON_ID + arm_func_end sub_0204E760 + + arm_func_start sub_0204E770 +sub_0204E770: ; 0x0204E770 + ldr r0, _0204E77C ; =PENDING_DUNGEON_ID + ldrb r0, [r0] + bx lr + .align 2, 0 +_0204E77C: .word PENDING_DUNGEON_ID + arm_func_end sub_0204E770 + + arm_func_start sub_0204E780 +sub_0204E780: ; 0x0204E780 + ldr r0, _0204E78C ; =PENDING_DUNGEON_ID + ldrb r0, [r0, #0x14] + bx lr + .align 2, 0 +_0204E78C: .word PENDING_DUNGEON_ID + arm_func_end sub_0204E780 + + arm_func_start sub_0204E790 +sub_0204E790: ; 0x0204E790 + stmdb sp!, {r4, lr} + ldr lr, _0204E7B4 ; =PENDING_DUNGEON_ID + mov r4, r0 + mov ip, #0xb +_0204E7A0: + ldmia lr!, {r0, r1, r2, r3} + stmia r4!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _0204E7A0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0204E7B4: .word PENDING_DUNGEON_ID + arm_func_end sub_0204E790 + + arm_func_start sub_0204E7B8 +sub_0204E7B8: ; 0x0204E7B8 + stmdb sp!, {r3, lr} + ldr r1, _0204E8E0 ; =PENDING_DUNGEON_ID + mov r0, #0 + ldrsb r2, [r1, #0xd] + mov r1, #0x28 + bl SaveScriptVariableValue + ldr r1, _0204E8E0 ; =PENDING_DUNGEON_ID + mov r0, #0 + ldrsh r2, [r1, #2] + mov r1, #0x27 + bl SaveScriptVariableValue + ldr r1, _0204E8E0 ; =PENDING_DUNGEON_ID + mov r0, #0 + ldrsh r2, [r1, #2] + mov r1, #0x29 + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x2c + mov r2, #6 + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x2b + mov r2, #6 + bl SaveScriptVariableValue + ldr r0, _0204E8E0 ; =PENDING_DUNGEON_ID + ldrsb r0, [r0, #0xd] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _0204E8D4 +_0204E82C: ; jump table + b _0204E8D4 ; case 0 + b _0204E83C ; case 1 + b _0204E8B0 ; case 2 + b _0204E8D4 ; case 3 +_0204E83C: + mov r0, #0 + mov r1, #0x27 + mov r2, #0xd7 + bl SaveScriptVariableValue + ldr r0, _0204E8E0 ; =PENDING_DUNGEON_ID + ldr r1, _0204E8E4 ; =_022AB518 + ldrb r0, [r0] + bl sub_0205F00C + cmp r0, #0 + beq _0204E8D4 + ldr r1, _0204E8E0 ; =PENDING_DUNGEON_ID + ldrb r1, [r1, #0x1d] + cmp r1, #0 + beq _0204E8A0 + add r0, r0, #4 + bl sub_0204F7A8 + ldr r1, _0204E8E8 ; =CLIENT_LEVEL_TABLE + mov r0, r0, lsl #1 + ldrsh r1, [r1, r0] + ldr r3, _0204E8E0 ; =PENDING_DUNGEON_ID + mov ip, #1 + ldr r0, _0204E8E4 ; =_022AB518 + mov r2, #0 + strb ip, [r3, #0x1d] + bl ApplyLevelUpBoostsToGroundMonster +_0204E8A0: + ldr r0, _0204E8E0 ; =PENDING_DUNGEON_ID + mov r1, #1 + strb r1, [r0, #0xf] + b _0204E8D4 +_0204E8B0: + mov r0, #0 + mov r1, #0x27 + mov r2, #0xd6 + bl SaveScriptVariableValue + ldr r1, _0204E8E0 ; =PENDING_DUNGEON_ID + mov r0, #0 + ldrsb r2, [r1, #0x12] + mov r1, #0x29 + bl SaveScriptVariableValue +_0204E8D4: + ldr r0, _0204E8E0 ; =PENDING_DUNGEON_ID + ldrsb r0, [r0, #0xd] + ldmia sp!, {r3, pc} + .align 2, 0 +_0204E8E0: .word PENDING_DUNGEON_ID +_0204E8E4: .word _022AB518 +_0204E8E8: .word CLIENT_LEVEL_TABLE + arm_func_end sub_0204E7B8 + + arm_func_start sub_0204E8EC +sub_0204E8EC: ; 0x0204E8EC + stmdb sp!, {r4, lr} + movs r4, r0 + beq _0204E920 + ldr lr, _0204E944 ; =PENDING_DUNGEON_ID + mov ip, #0xb +_0204E900: + ldmia r4!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _0204E900 + ldr r0, _0204E948 ; =_022AB4F8 + mov r1, #1 + strb r1, [r0] + ldmia sp!, {r4, pc} +_0204E920: + mov r3, #0 + ldr r0, _0204E944 ; =PENDING_DUNGEON_ID + sub r2, r3, #1 + strb r2, [r0, #0xd] + ldr r1, _0204E948 ; =_022AB4F8 + strb r2, [r0, #0xe] + strb r3, [r1] + strh r2, [r0, #2] + ldmia sp!, {r4, pc} + .align 2, 0 +_0204E944: .word PENDING_DUNGEON_ID +_0204E948: .word _022AB4F8 + arm_func_end sub_0204E8EC + + arm_func_start SetEnterDungeon +SetEnterDungeon: ; 0x0204E94C + stmdb sp!, {r3, lr} + mov r1, r0 + ldr r0, _0204E96C ; =PENDING_DUNGEON_ID + bl InitDungeonInit + ldr r0, _0204E970 ; =_022AB4F8 + mov r1, #1 + strb r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0204E96C: .word PENDING_DUNGEON_ID +_0204E970: .word _022AB4F8 + arm_func_end SetEnterDungeon + + arm_func_start sub_0204E974 +sub_0204E974: ; 0x0204E974 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl sub_0205B77C + ldr r2, _0204EA4C ; =PENDING_DUNGEON_ID + mov r1, #2 + mov r4, r0 + strb r1, [r2, #0xd] + sub r0, r1, #3 + strb r0, [r2, #0xe] + mov r0, #0xd6 + strh r0, [r2, #2] + ldr r0, _0204EA50 ; =_022AB510 + mov r1, r5 + strb r5, [r2, #0x12] + bl sub_0205BB7C + ldr r0, _0204EA54 ; =_022AB5A8 + mov r1, r5 + bl sub_0205BD14 + ldr r1, _0204EA4C ; =PENDING_DUNGEON_ID + mov r2, #0 + strb r2, [r1, #0xf] + strb r2, [r1, #0x10] + strb r2, [r1, #4] + mov r0, #7 + strb r2, [r1, #0x11] + bl GetPerformanceFlagWithChecks + ldr r1, _0204EA4C ; =PENDING_DUNGEON_ID + mov r2, #0 + strb r0, [r1, #5] + mov r0, #6 + strb r2, [r1, #6] + bl GetPerformanceFlagWithChecks + ldr r1, _0204EA4C ; =PENDING_DUNGEON_ID + strb r0, [r1, #8] + mov r0, #1 + bl GetPerformanceFlagWithChecks + ldr r1, _0204EA4C ; =PENDING_DUNGEON_ID + mov r2, #0 + strb r0, [r1, #9] + strb r2, [r1, #0xa] + strb r2, [r1, #0xb] + strb r2, [r1, #7] + strb r2, [r1, #0xc] + ldrb r0, [r4, #4] + add r0, r0, #0xda + and r0, r0, #0xff + cmp r0, #5 + strlsb r2, [r1, #5] + movls r0, #1 + strlsb r0, [r1, #7] + ldr r0, _0204EA58 ; =_022AB4F8 + mov r1, #1 + strb r1, [r0] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0204EA4C: .word PENDING_DUNGEON_ID +_0204EA50: .word _022AB510 +_0204EA54: .word _022AB5A8 +_0204EA58: .word _022AB4F8 + arm_func_end sub_0204E974 + + arm_func_start InitDungeonInit +InitDungeonInit: ; 0x0204EA5C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + bl GetGameMode + mov r4, r0 + mov r0, r6 + strh r6, [r7, #2] + bl DungeonSwapIdxToId + strb r0, [r7] + mov r1, #1 + strb r1, [r7, #1] + sub r1, r1, #2 + strb r1, [r7, #0x12] + mov r0, #0 + str r0, [r7, #0xac] + strb r0, [r7, #0xd] + strb r1, [r7, #0xe] + strb r0, [r7, #4] + strb r0, [r7, #0xf] + strb r0, [r7, #0x10] + strb r0, [r7, #0x11] + cmp r4, #2 + strneb r0, [r7, #5] + strneb r0, [r7, #6] + strneb r0, [r7, #8] + bne _0204EAF0 + mov r0, #7 + bl GetPerformanceFlagWithChecks + strb r0, [r7, #5] + mov r0, #5 + bl GetPerformanceFlagWithChecks + strb r0, [r7, #6] + mov r0, #6 + bl GetPerformanceFlagWithChecks + strb r0, [r7, #8] + mov r0, #1 + bl GetPerformanceFlagWithChecks +_0204EAF0: + strb r0, [r7, #9] + mov r3, #0 + strb r3, [r7, #0xa] + strb r3, [r7, #0xb] + strb r3, [r7, #7] + strb r3, [r7, #0xc] + mov r1, r3 + mov r0, #0x44 +_0204EB10: + mla r2, r3, r0, r7 + strb r1, [r2, #0x1c] + add r3, r3, #1 + strh r1, [r2, #0x20] + cmp r3, #2 + blt _0204EB10 + cmp r4, #5 + bne _0204EB88 + mov r0, #1 + strb r0, [r7, #5] + strb r1, [r7, #6] + strb r1, [r7, #8] + strb r1, [r7, #9] + strb r1, [r7, #0xb] + mov r0, #3 + strb r0, [r7, #0xd] + strb r1, [r7, #4] + sub r0, r6, #0x26 + strb r1, [r7, #0x11] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _0204EB84 +_0204EB68: ; jump table + b _0204EB80 ; case 0 + b _0204EB80 ; case 1 + b _0204EB80 ; case 2 + b _0204EB80 ; case 3 + b _0204EB80 ; case 4 + b _0204EB80 ; case 5 +_0204EB80: + strb r1, [r7, #5] +_0204EB84: + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0204EB88: + mov r0, r6 + bl GetDungeonModeSpecial + cmp r0, #1 + beq _0204EBB0 + cmp r0, #2 + beq _0204EF50 + cmp r0, #3 + moveq r0, #0 + streqb r0, [r7, #0xd] + b _0204EF88 +_0204EBB0: + mov r4, #0 + mov r0, r6 + strb r4, [r7, #0xd] + mov r5, r4 + bl IsNoLossPenaltyDungeon + strb r0, [r7, #0xc] + cmp r6, #0x44 + bgt _0204ECA4 + bge _0204EE70 + cmp r6, #0x3e + bgt _0204EC60 + bge _0204EE68 + cmp r6, #0x21 + bgt _0204EC1C + bge _0204EDEC + cmp r6, #0xb + bgt _0204EC10 + subs r0, r6, #8 + addpl pc, pc, r0, lsl #2 + b _0204EF34 +_0204EC00: ; jump table + b _0204ED88 ; case 0 + b _0204ED9C ; case 1 + b _0204EDB0 ; case 2 + b _0204EDC4 ; case 3 +_0204EC10: + cmp r6, #0x20 + beq _0204EDD8 + b _0204EF34 +_0204EC1C: + cmp r6, #0x22 + bgt _0204EC2C + beq _0204EE10 + b _0204EF34 +_0204EC2C: + sub r0, r6, #0x23 + cmp r0, #8 + addls pc, pc, r0, lsl #2 + b _0204EF34 +_0204EC3C: ; jump table + b _0204EE24 ; case 0 + b _0204EF34 ; case 1 + b _0204EF34 ; case 2 + b _0204EE48 ; case 3 + b _0204EE48 ; case 4 + b _0204EE48 ; case 5 + b _0204EE60 ; case 6 + b _0204EE60 ; case 7 + b _0204EE60 ; case 8 +_0204EC60: + cmp r6, #0x41 + bgt _0204EC88 + bge _0204EE68 + cmp r6, #0x3f + bgt _0204EC7C + beq _0204EE68 + b _0204EF34 +_0204EC7C: + cmp r6, #0x40 + beq _0204EE68 + b _0204EF34 +_0204EC88: + cmp r6, #0x42 + bgt _0204EC98 + beq _0204EE68 + b _0204EF34 +_0204EC98: + cmp r6, #0x43 + beq _0204EE70 + b _0204EF34 +_0204ECA4: + cmp r6, #0x73 + bgt _0204ECF4 + bge _0204EE88 + cmp r6, #0x70 + bgt _0204ECD8 + bge _0204EE88 + cmp r6, #0x45 + bgt _0204ECCC + beq _0204EE70 + b _0204EF34 +_0204ECCC: + cmp r6, #0x6f + beq _0204EE88 + b _0204EF34 +_0204ECD8: + cmp r6, #0x71 + bgt _0204ECE8 + beq _0204EE88 + b _0204EF34 +_0204ECE8: + cmp r6, #0x72 + beq _0204EE88 + b _0204EF34 +_0204ECF4: + cmp r6, #0x76 + bgt _0204ED1C + bge _0204EE88 + cmp r6, #0x74 + bgt _0204ED10 + beq _0204EE88 + b _0204EF34 +_0204ED10: + cmp r6, #0x75 + beq _0204EE88 + b _0204EF34 +_0204ED1C: + cmp r6, #0x87 + bgt _0204ED7C + subs r0, r6, #0x78 + addpl pc, pc, r0, lsl #2 + b _0204ED70 +_0204ED30: ; jump table + b _0204EE88 ; case 0 + b _0204EE88 ; case 1 + b _0204EE88 ; case 2 + b _0204EE9C ; case 3 + b _0204EEC4 ; case 4 + b _0204EF34 ; case 5 + b _0204EF34 ; case 6 + b _0204EF34 ; case 7 + b _0204EEEC ; case 8 + b _0204EF34 ; case 9 + b _0204EF34 ; case 10 + b _0204EF34 ; case 11 + b _0204EF34 ; case 12 + b _0204EF34 ; case 13 + b _0204EF34 ; case 14 + b _0204EF10 ; case 15 +_0204ED70: + cmp r6, #0x77 + beq _0204EE88 + b _0204EF34 +_0204ED7C: + cmp r6, #0xa4 + beq _0204EF24 + b _0204EF34 +_0204ED88: + ldr r2, _0204EF98 ; =_020A2904 + mov r0, r7 + mov r1, r4 + bl AddGuestMonster + b _0204EF34 +_0204ED9C: + ldr r2, _0204EF9C ; =_020A2AD8 + mov r0, r7 + mov r1, r4 + bl AddGuestMonster + b _0204EF34 +_0204EDB0: + ldr r2, _0204EFA0 ; =_020A2AB4 + mov r0, r7 + mov r1, r4 + bl AddGuestMonster + b _0204EF34 +_0204EDC4: + ldr r2, _0204EFA4 ; =_020A294C + mov r0, r7 + mov r1, r4 + bl AddGuestMonster + b _0204EF34 +_0204EDD8: + ldr r2, _0204EFA8 ; =_020A2970 + mov r0, r7 + mov r1, #0 + bl AddGuestMonster + b _0204EF34 +_0204EDEC: + ldr r2, _0204EFAC ; =_020A2A48 + mov r0, r7 + mov r1, r4 + bl AddGuestMonster + ldr r2, _0204EFB0 ; =_020A2A24 + mov r0, r7 + mov r1, #1 + bl AddGuestMonster + b _0204EF34 +_0204EE10: + ldr r2, _0204EFB4 ; =_020A29DC + mov r0, r7 + mov r1, r4 + bl AddGuestMonster + b _0204EF34 +_0204EE24: + mov r0, #0x19 + bl GetPerformanceFlagWithChecks + cmp r0, #0 + bne _0204EF34 + ldr r2, _0204EFB8 ; =_020A2A00 + mov r0, r7 + mov r1, r4 + bl AddGuestMonster + b _0204EF34 +_0204EE48: + ldr r2, _0204EFBC ; =_020A2A6C + mov r0, r7 + mov r1, r4 + mov r5, #1 + bl AddGuestMonster + b _0204EF34 +_0204EE60: + mov r4, #1 + b _0204EF34 +_0204EE68: + mov r4, #1 + b _0204EF34 +_0204EE70: + ldr r2, _0204EFC0 ; =_020A2A90 + mov r0, r7 + mov r1, #0 + bl AddGuestMonster + mov r4, #1 + b _0204EF34 +_0204EE88: + ldr r2, _0204EFC4 ; =_020A2AFC + mov r0, r7 + mov r1, #0 + bl AddGuestMonster + b _0204EF34 +_0204EE9C: + mov r0, r4 + mov r1, #0x10 + bl LoadScriptVariableValue + cmp r0, #0 + bne _0204EF34 + ldr r2, _0204EFC8 ; =_020A2B20 + mov r0, r7 + mov r1, r4 + bl AddGuestMonster + b _0204EF34 +_0204EEC4: + mov r0, r4 + mov r1, #0x10 + bl LoadScriptVariableValue + cmp r0, #0 + bne _0204EF34 + ldr r2, _0204EFCC ; =_020A2928 + mov r0, r7 + mov r1, r4 + bl AddGuestMonster + b _0204EF34 +_0204EEEC: + ldr r2, _0204EFD0 ; =GUEST_MONSTER_DATA + mov r0, r7 + mov r1, r4 + bl AddGuestMonster + ldr r2, _0204EFD4 ; =_020A28E0 + mov r0, r7 + mov r1, #1 + bl AddGuestMonster + b _0204EF34 +_0204EF10: + ldr r2, _0204EFD8 ; =_020A29B8 + mov r0, r7 + mov r1, r4 + bl AddGuestMonster + b _0204EF34 +_0204EF24: + ldr r2, _0204EFDC ; =_020A2994 + mov r0, r7 + mov r1, r4 + bl AddGuestMonster +_0204EF34: + cmp r4, #0 + movne r0, #1 + strneb r0, [r7, #0xb] + cmp r5, #0 + movne r0, #1 + strneb r0, [r7, #7] + b _0204EF88 +_0204EF50: + sub r0, r6, #0x26 + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _0204EF80 +_0204EF60: ; jump table + b _0204EF78 ; case 0 + b _0204EF78 ; case 1 + b _0204EF78 ; case 2 + b _0204EF78 ; case 3 + b _0204EF78 ; case 4 + b _0204EF78 ; case 5 +_0204EF78: + mov r0, #1 + strb r0, [r7, #0xb] +_0204EF80: + mov r0, #1 + strb r0, [r7, #0xd] +_0204EF88: + mov r0, #0 + strb r0, [r7, #4] + strb r0, [r7, #0x11] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0204EF98: .word _020A2904 +_0204EF9C: .word _020A2AD8 +_0204EFA0: .word _020A2AB4 +_0204EFA4: .word _020A294C +_0204EFA8: .word _020A2970 +_0204EFAC: .word _020A2A48 +_0204EFB0: .word _020A2A24 +_0204EFB4: .word _020A29DC +_0204EFB8: .word _020A2A00 +_0204EFBC: .word _020A2A6C +_0204EFC0: .word _020A2A90 +_0204EFC4: .word _020A2AFC +_0204EFC8: .word _020A2B20 +_0204EFCC: .word _020A2928 +_0204EFD0: .word GUEST_MONSTER_DATA +_0204EFD4: .word _020A28E0 +_0204EFD8: .word _020A29B8 +_0204EFDC: .word _020A2994 + arm_func_end InitDungeonInit + + arm_func_start IsNoLossPenaltyDungeon +IsNoLossPenaltyDungeon: ; 0x0204EFE0 + stmdb sp!, {r4, lr} + cmp r0, #0x1a + mov r4, #0 + cmpne r0, #0x79 + beq _0204F000 + cmp r0, #0x7d + beq _0204F008 + b _0204F01C +_0204F000: + mov r4, #1 + b _0204F01C +_0204F008: + mov r0, r4 + mov r1, #0x10 + bl LoadScriptVariableValue + cmp r0, #0 + moveq r4, #1 +_0204F01C: + mov r0, r4 + ldmia sp!, {r4, pc} + arm_func_end IsNoLossPenaltyDungeon + + arm_func_start sub_0204F024 +sub_0204F024: ; 0x0204F024 + ldr r1, _0204F030 ; =PENDING_DUNGEON_ID + strb r0, [r1, #0xe] + bx lr + .align 2, 0 +_0204F030: .word PENDING_DUNGEON_ID + arm_func_end sub_0204F024 + + arm_func_start sub_0204F034 +sub_0204F034: ; 0x0204F034 + stmdb sp!, {r3, lr} + mov r0, #0 + mov r1, #0x28 + bl LoadScriptVariableValue + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + ldmia sp!, {r3, pc} + arm_func_end sub_0204F034 + + arm_func_start sub_0204F050 +sub_0204F050: ; 0x0204F050 + stmdb sp!, {r3, lr} + mov r0, #0 + mov r1, #0x27 + bl LoadScriptVariableValue + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mvn r1, #0 + cmp r0, r1 + cmpne r0, #0xd6 + ldmeqia sp!, {r3, pc} + cmp r0, #0xd7 + cmpeq r0, #0xd9 + cmpeq r0, #0xd8 + ldmeqia sp!, {r3, pc} + mov r0, #0 + mov r1, #0x29 + bl LoadScriptVariableValue + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + ldmia sp!, {r3, pc} + arm_func_end sub_0204F050 + + arm_func_start sub_0204F0A0 +sub_0204F0A0: ; 0x0204F0A0 + stmdb sp!, {r3, lr} + mov r0, #0 + mov r1, #0x27 + bl LoadScriptVariableValue + mov r0, r0, lsl #0x10 + mvn r1, #0 + cmp r1, r0, asr #16 + mov r0, r0, asr #0x10 + moveq r0, #0xff + ldmeqia sp!, {r3, pc} + cmp r0, #0xd6 + moveq r0, #0xd4 + ldmeqia sp!, {r3, pc} + sub r1, r0, #0xd7 + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + cmp r1, #2 + bhi _0204F104 + mov r0, #0 + mov r1, #0x29 + bl LoadScriptVariableValue + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 +_0204F104: + bl DungeonSwapIdxToId + ldmia sp!, {r3, pc} + arm_func_end sub_0204F0A0 + + arm_func_start sub_0204F10C +sub_0204F10C: ; 0x0204F10C + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #0 + mov r1, #0x27 + bl LoadScriptVariableValue + mov r0, r0, lsl #0x10 + mov r1, r0, asr #0x10 + mvn r0, #0 + cmp r1, r0 + cmpne r1, #0xd6 + cmpne r1, #0xd7 + cmpne r1, #0xd8 + cmpne r1, #0xd9 + movne r0, #1 + strneh r1, [r4] + mvneq r0, #0 + streqh r0, [r4] + moveq r0, #0 + ldmia sp!, {r4, pc} + arm_func_end sub_0204F10C + + arm_func_start sub_0204F158 +sub_0204F158: ; 0x0204F158 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #0 + mov r1, #0x27 + bl LoadScriptVariableValue + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + cmp r0, #0xd7 + bne _0204F1AC + mov r0, #0 + mov r1, #0x29 + bl LoadScriptVariableValue + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl DungeonSwapIdxToId + cmp r0, #0xff + beq _0204F1AC + cmp r0, #0xb4 + strlob r0, [r4] + movlo r0, #1 + ldmloia sp!, {r4, pc} +_0204F1AC: + mov r0, #0 + ldmia sp!, {r4, pc} + arm_func_end sub_0204F158 + + arm_func_start sub_0204F1B4 +sub_0204F1B4: ; 0x0204F1B4 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #0 + mov r1, #0x27 + bl LoadScriptVariableValue + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + cmp r0, #0xd6 + mov r0, #0 + ldmneia sp!, {r4, pc} + mov r1, #0x29 + bl LoadScriptVariableValue + strb r0, [r4] + mov r0, #1 + ldmia sp!, {r4, pc} + arm_func_end sub_0204F1B4 + + arm_func_start sub_0204F1F0 +sub_0204F1F0: ; 0x0204F1F0 + stmdb sp!, {r3, r4, r5, lr} + movs r5, r0 + mov r4, r1 + beq _0204F22C + ldr lr, _0204F23C ; =_022AB5AC + mov ip, #0xe +_0204F208: + ldmia r5!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _0204F208 + ldmia r5, {r0, r1} + ldr r2, _0204F240 ; =_022AB4F8 + stmia lr, {r0, r1} + strb r4, [r2, #1] + ldmia sp!, {r3, r4, r5, pc} +_0204F22C: + ldr r0, _0204F240 ; =_022AB4F8 + mov r1, #0 + strb r1, [r0, #1] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0204F23C: .word _022AB5AC +_0204F240: .word _022AB4F8 + arm_func_end sub_0204F1F0 + + arm_func_start sub_0204F244 +sub_0204F244: ; 0x0204F244 + stmdb sp!, {r4, lr} + movs r4, r0 + beq _0204F270 + ldr lr, _0204F27C ; =_022AB5AC + mov ip, #0xe +_0204F258: + ldmia lr!, {r0, r1, r2, r3} + stmia r4!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _0204F258 + ldmia lr, {r0, r1} + stmia r4, {r0, r1} +_0204F270: + ldr r0, _0204F280 ; =_022AB4F8 + ldrb r0, [r0, #1] + ldmia sp!, {r4, pc} + .align 2, 0 +_0204F27C: .word _022AB5AC +_0204F280: .word _022AB4F8 + arm_func_end sub_0204F244 + + arm_func_start sub_0204F284 +sub_0204F284: ; 0x0204F284 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + mov sl, r0 + add r0, sp, #0 + mov sb, r1 + bl GetPartyMembers + mov r6, r0 + mov r0, sl + bl GetMaxMembersAllowed + cmp r6, r0 + ble _0204F2C0 + cmp r0, #1 + ldreq r0, _0204F354 ; =0x00000301 + ldrne r0, _0204F358 ; =0x00000101 + b _0204F34C +_0204F2C0: + cmp sb, #0 + beq _0204F2D8 + add r0, r6, #1 + cmp r0, #4 + ldrgt r0, _0204F358 ; =0x00000101 + bgt _0204F34C +_0204F2D8: + mov r7, #0 + mov r8, r7 + add r5, sp, #0 + ldr r4, _0204F35C ; =TEAM_MEMBER_TABLE_PTR + mov fp, #0x44 + b _0204F310 +_0204F2F0: + mov r0, r8, lsl #1 + ldrsh r0, [r5, r0] + ldr r1, [r4] + smlabb r0, r0, fp, r1 + ldrsh r0, [r0, #4] + bl GetBodySize + add r7, r7, r0 + add r8, r8, #1 +_0204F310: + cmp r8, r6 + blt _0204F2F0 + cmp sb, #0 + beq _0204F32C + mov r0, sb + bl GetBodySize + add r7, r7, r0 +_0204F32C: + cmp r7, #6 + movgt r0, #0x81 + bgt _0204F34C + mov r0, sl + bl IsLevelResetDungeon + cmp r0, #0 + ldrne r0, _0204F360 ; =0x00002002 + moveq r0, #0 +_0204F34C: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0204F354: .word 0x00000301 +_0204F358: .word 0x00000101 +_0204F35C: .word TEAM_MEMBER_TABLE_PTR +_0204F360: .word 0x00002002 + arm_func_end sub_0204F284 + + arm_func_start sub_0204F364 +sub_0204F364: ; 0x0204F364 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, #0 + bl GetMaxItemsAllowed + mov r4, r0 + bl GetNbItemsInBag + cmp r4, #0 + ble _0204F39C + cmp r4, r0 + bge _0204F39C + orr r5, r5, #2 + cmp r4, #0 + orreq r5, r5, #0x800 + orrne r5, r5, #0x400 +_0204F39C: + mov r0, r6 + bl IsMoneyAllowed + cmp r0, #0 + bne _0204F3BC + bl GetMoneyCarried + cmp r0, #0 + orrgt r5, r5, #2 + orrgt r5, r5, #0x1000 +_0204F3BC: + mov r0, r5 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end sub_0204F364 + + arm_func_start CheckMissionRestrictions +CheckMissionRestrictions: ; 0x0204F3C4 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl GetGameMode + cmp r0, #2 + bne _0204F424 + mov r0, r5 + bl DungeonSwapIdToIdx + bl GetDungeonModeSpecial + cmp r0, #2 + bne _0204F424 + add r1, sp, #2 + add r2, sp, #0 + mov r0, r5 + bl sub_0205EE40 + cmp r0, #0 + beq _0204F424 + ldrsh r0, [sp] + cmp r0, #0 + movne r0, #0x21 + ldmneia sp!, {r3, r4, r5, pc} + ldrh r0, [sp, #2] + cmp r0, #0 + movne r0, #0x41 + ldmneia sp!, {r3, r4, r5, pc} +_0204F424: + cmp r5, #0x26 + cmpne r5, #0x29 + cmpne r5, #0x3f + cmpne r5, #0x63 + cmpne r5, #0x64 + cmpne r5, #0x65 + cmpne r5, #0x66 + cmpne r5, #0x67 + cmpne r5, #0x68 + cmpne r5, #0x6b + cmpne r5, #0x6c + cmpne r5, #0x6d + cmpne r5, #0x6e + cmpne r5, #0xae + ldreq r0, _0204F484 ; =0x00004001 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, #0 + bl sub_0204F284 + mov r4, r0 + mov r0, r5 + bl sub_0204F364 + orr r0, r4, r0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0204F484: .word 0x00004001 + arm_func_end CheckMissionRestrictions + + arm_func_start sub_0204F488 +sub_0204F488: ; 0x0204F488 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov sb, r0 + mov r8, r1 + mov r7, r2 + bl DungeonSwapIdToIdx + mov r5, r0 + mov r0, sb + bl GetMaxReachedFloor + mov r6, r0 + mov r0, r5 + bl GetDungeonMode + mov r4, r0 + cmp r4, #1 + moveq r0, #0x11 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + cmp r6, #1 + bge _0204F4EC + mov r0, r5 + bl sub_0204CEE0 + cmp r0, #0 + bne _0204F4EC + cmp r4, #3 + movne r0, #5 + moveq r0, #9 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_0204F4EC: + cmp r8, r6 + movgt r0, #9 + ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + cmp sb, #0x26 + cmpne sb, #0x29 + cmpne sb, #0x3f + cmpne sb, #0x63 + cmpne sb, #0x64 + cmpne sb, #0x65 + cmpne sb, #0x66 + cmpne sb, #0x67 + cmpne sb, #0x68 + cmpne sb, #0x6b + cmpne sb, #0x6c + cmpne sb, #0x6d + cmpne sb, #0x6e + cmpne sb, #0xae + ldreq r0, _0204F558 ; =0x00004001 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, sb + mov r1, r7 + bl sub_0204F284 + mov r4, r0 + mov r0, sb + bl sub_0204F364 + orr r0, r4, r0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0204F558: .word 0x00004001 + arm_func_end sub_0204F488 + + arm_func_start sub_0204F55C +sub_0204F55C: ; 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 sub_0204F55C + + 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 GetPerformanceFlagWithChecks + cmp r0, #0 + bne _0204F99C + ldr r0, _0204F9B0 ; =0x000042B9 + ldmia sp!, {r4, pc} +_0204F980: + cmp r4, #0x15 + bne _0204F99C + mov r0, #0x1c + bl GetPerformanceFlagWithChecks + 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 sub_0204CB2C +_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 sub_020515C4 + 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 GetPerformanceFlagWithChecks + 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 GetPerformanceFlagWithChecks + 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 GetPerformanceFlagWithChecks + 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 GetPerformanceFlagWithChecks + 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 GetPerformanceFlagWithChecks + 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/include/main_0204AFF8.h b/include/main_0204AFF8.h new file mode 100644 index 00000000..e398c513 --- /dev/null +++ b/include/main_0204AFF8.h @@ -0,0 +1,20 @@ +#ifndef PMDSKY_MAIN_0204AFF8_H +#define PMDSKY_MAIN_0204AFF8_H + +#include "util.h" + +enum game_mode +{ + GAME_MODE_MENU = 0, // top menu + GAME_MODE_1 = 1, // also related to special episodes? But 3 is the main one + GAME_MODE_NORMAL = 2, // normal play, including both overworld/dungeons + GAME_MODE_SPECIAL_EPISODE = 3, // during special episodes + // Pelipper Island (and likely also in the dungeon while rescuing, need to confirm) + GAME_MODE_RESCUE = 4, + GAME_MODE_5 = 5, + // Possibly more? +}; + +bool8 IsGameModeRescue(); + +#endif //PMDSKY_MAIN_0204AFF8_H diff --git a/main.lsf b/main.lsf index 369070da..7d532fda 100644 --- a/main.lsf +++ b/main.lsf @@ -43,6 +43,8 @@ Static main Object asm/main_0202598C.o Object src/main_020348E4.o Object asm/main_02034974.o + Object src/main_0204AFF8.o + Object asm/main_0204B018.o Object src/number_util.o Object asm/main_02051098.o Object src/main_02052874.o diff --git a/src/main_0204AFF8.c b/src/main_0204AFF8.c new file mode 100644 index 00000000..6a081ce3 --- /dev/null +++ b/src/main_0204AFF8.c @@ -0,0 +1,8 @@ +#include "main_0204AFF8.h" + +extern enum game_mode GAME_MODE; + +bool8 IsGameModeRescue() +{ + return GAME_MODE == GAME_MODE_RESCUE; +} diff --git a/src/overlay_29_0234BBE8.c b/src/overlay_29_0234BBE8.c index c7945b9e..e5985eca 100644 --- a/src/overlay_29_0234BBE8.c +++ b/src/overlay_29_0234BBE8.c @@ -1,4 +1,5 @@ #include "overlay_29_0234BBE8.h" +#include "main_0204AFF8.h" #include "overlay_29_022DC61C.h" #include "overlay_29_0234CA68.h" #include "util.h" @@ -19,7 +20,6 @@ typedef struct { extern unk_ov29_023537D8_t ov29_023537D8; void ov29_022DEBA4(); // thunk_FUN_022deadc void ov29_0234CB00(); -bool8 sub_0204AFF8(); // is GAME_MODE rescue? void ov30_02382820(s32, s32, s32); s32 ov30_02382874(); void ov29_022DDEF8(); @@ -63,7 +63,7 @@ void ov29_0234BBE8(void) ov29_0234CB00(); // do something with overlays uVar3 = ov29_0234CA68(); uVar4 = ov29_0234CA7C(); - uVar5 = sub_0204AFF8(); // is GAME_MODE rescue? + uVar5 = IsGameModeRescue(); // is GAME_MODE rescue? ov30_02382820(uVar3,uVar4,uVar5); // alloc these values while (iVar6 = ov30_02382874(), iVar6 != 0) { @@ -138,7 +138,7 @@ void ov29_0234BBE8(void) ov29_0234C738(0); SetAdventureLogDungeonFloor(&(iVar7[12].v4)); sub_02017B70(); - if (iVar7[12].v0 != -2 && sub_0204AFF8()) + if (iVar7[12].v0 != -2 && IsGameModeRescue()) { uVar3 = 1; } From 2aca93a387317d1ea09d52236b6a3ae602bb9dbe Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Sun, 15 Jun 2025 17:51:17 -0500 Subject: [PATCH 6/7] Decomped ov29_022DEADC Decomped by ElectricGeorge --- ...9_022DEADC.inc => overlay_29_022DEB40.inc} | 67 ++++++++++--------- ...ay_29_022DEADC.s => overlay_29_022DEB40.s} | 31 +-------- include/overlay_29_022DEAB0.h | 1 + main.lsf | 2 +- src/overlay_29_022DEAB0.c | 20 +++++- src/overlay_29_0234BBE8.c | 2 +- 6 files changed, 57 insertions(+), 66 deletions(-) rename asm/include/{overlay_29_022DEADC.inc => overlay_29_022DEB40.inc} (99%) rename asm/{overlay_29_022DEADC.s => overlay_29_022DEB40.s} (98%) diff --git a/asm/include/overlay_29_022DEADC.inc b/asm/include/overlay_29_022DEB40.inc similarity index 99% rename from asm/include/overlay_29_022DEADC.inc rename to asm/include/overlay_29_022DEB40.inc index 5124fe6c..c04eae21 100644 --- a/asm/include/overlay_29_022DEADC.inc +++ b/asm/include/overlay_29_022DEB40.inc @@ -4,24 +4,24 @@ .public ClearHiddenStairs .public CloseFixedBin .public CountItemsOnFloorForAcuteSniffer +.public DIRECTIONS_XY +.public DUNGEON_PTR .public Debug_Print0 .public DeleteAllMonsterSpriteFiles .public DetermineAllMonsterShadow .public DetermineAllTilesWalkableNeighbors -.public DIRECTIONS_XY .public DisplayFloorCard .public DisplayFloorTip .public DisplayMessage .public DisplayMessage2 -.public DUNGEON_PTR .public DungeonGoesUp .public DungeonRandInt .public DungeonRngUnsetSecondary .public EnemyEvolution .public EntityIsValid__022E0354 +.public FIXED_ROOM_REVISIT_OVERRIDES .public FadeToBlack .public FillMissionDestinationInfo -.public FIXED_ROOM_REVISIT_OVERRIDES .public FreeLoadedAttackSpriteAndMore .public FreeTopScreenStatus .public GenerateDungeonRngSeed @@ -54,6 +54,36 @@ .public LoadWeather3DFiles .public MemZero .public OpenFixedBin +.public Rand16Bit +.public ReevaluateSnatchMonster +.public RefillTeam +.public ResetGravity +.public RunFractionalTurn +.public SetBaseStatsMovesGroundMonster +.public SetBothScreensWindowColorToDefault +.public SetDungeonRngPreseed +.public SetDungeonRngPreseed23Bit +.public SetEntityPixelPosXY +.public SetForcedLossReason +.public SetHiddenFloorField +.public SetHiddenStairsField +.public SetMaxReachedFloor +.public SetMinimapDataE447 +.public SpawnInitialMonsters +.public SpawnShopkeepers +.public SpawnTeam +.public StartFadeDungeonWrapper +.public TryActivateArtificialWeatherAbilities +.public TryActivateIqBooster +.public TryActivateSlowStart +.public TryActivateWeather +.public TryForcedLoss +.public TryInflictBurnStatusWholeTeam +.public TrySpawnDoughSeedPoke +.public UpdateMinimap +.public UpdateShouldBoostHiddenStairsSpawnChance +.public UpdateShouldBoostKecleonShopSpawnChance +.public UpdateTrapsVisibility .public ov10_022BDAB0 .public ov10_022BDB54 .public ov10_022BDB60 @@ -70,6 +100,7 @@ .public ov29_022DE904 .public ov29_022DE930 .public ov29_022DEA34 +.public ov29_022DEADC .public ov29_022E0434 .public ov29_022E081C .public ov29_022E0DFC @@ -211,25 +242,6 @@ .public ov29_023510C0 .public ov29_023510C8 .public ov29_02353563 -.public Rand16Bit -.public ReevaluateSnatchMonster -.public RefillTeam -.public ResetGravity -.public RunFractionalTurn -.public SetBaseStatsMovesGroundMonster -.public SetBothScreensWindowColorToDefault -.public SetDungeonRngPreseed -.public SetDungeonRngPreseed23Bit -.public SetEntityPixelPosXY -.public SetForcedLossReason -.public SetHiddenFloorField -.public SetHiddenStairsField -.public SetMaxReachedFloor -.public SetMinimapDataE447 -.public SpawnInitialMonsters -.public SpawnShopkeepers -.public SpawnTeam -.public StartFadeDungeonWrapper .public sub_02001808 .public sub_02009194 .public sub_020091B0 @@ -246,14 +258,3 @@ .public sub_0205B77C .public sub_020634F4 .public sub_02063504 -.public TryActivateArtificialWeatherAbilities -.public TryActivateIqBooster -.public TryActivateSlowStart -.public TryActivateWeather -.public TryForcedLoss -.public TryInflictBurnStatusWholeTeam -.public TrySpawnDoughSeedPoke -.public UpdateMinimap -.public UpdateShouldBoostHiddenStairsSpawnChance -.public UpdateShouldBoostKecleonShopSpawnChance -.public UpdateTrapsVisibility diff --git a/asm/overlay_29_022DEADC.s b/asm/overlay_29_022DEB40.s similarity index 98% rename from asm/overlay_29_022DEADC.s rename to asm/overlay_29_022DEB40.s index 4780d8f6..f5c1a3e1 100644 --- a/asm/overlay_29_022DEADC.s +++ b/asm/overlay_29_022DEB40.s @@ -1,37 +1,8 @@ .include "asm/macros.inc" - .include "overlay_29_022DEADC.inc" + .include "overlay_29_022DEB40.inc" .text - arm_func_start ov29_022DEADC -ov29_022DEADC: ; 0x022DEADC - stmdb sp!, {r3, lr} - mov r0, #0x20 - bl ov29_0234C654 - mov r0, #0 - mov r1, r0 - bl sub_020091B0 - mov r0, #1 - mov r1, #0 - bl sub_020091B0 - mov r0, #2 - mov r1, #0 - bl sub_02009194 - mov r0, #3 - mov r1, #0 - bl sub_02009194 - mov r0, #4 - mov r1, #0 - bl sub_020091B0 - mov r0, #1 - mov r1, #0x4000 - mov r2, #0 - bl StartFadeDungeonWrapper - mov r0, #0 - bl ov29_0234C738 - ldmia sp!, {r3, pc} - arm_func_end ov29_022DEADC - arm_func_start ov29_022DEB40 ov29_022DEB40: ; 0x022DEB40 stmdb sp!, {r3, lr} diff --git a/include/overlay_29_022DEAB0.h b/include/overlay_29_022DEAB0.h index 5203d492..b0ebee5e 100644 --- a/include/overlay_29_022DEAB0.h +++ b/include/overlay_29_022DEAB0.h @@ -12,5 +12,6 @@ struct dungeon* GetDungeonPtrMaster(void); void DungeonZInit(void); // Frees the dungeons struct pointer to by the master dungeon pointer, and nullifies the pointer. void DungeonFree(void); +void ov29_022DEADC(); #endif //PMDSKY_OVERLAY_29_022DEAB0_H diff --git a/main.lsf b/main.lsf index 7d532fda..321acecf 100644 --- a/main.lsf +++ b/main.lsf @@ -266,7 +266,7 @@ Overlay OVY_29 Object src/overlay_29_022DC61C.o Object asm/overlay_29_022DC65C.o Object src/overlay_29_022DEAB0.o - Object asm/overlay_29_022DEADC.o + Object asm/overlay_29_022DEB40.o Object src/dg.o Object asm/overlay_29_022E0378.o Object src/overlay_29_022E1610.o diff --git a/src/overlay_29_022DEAB0.c b/src/overlay_29_022DEAB0.c index 7940cc72..ae31664e 100644 --- a/src/overlay_29_022DEAB0.c +++ b/src/overlay_29_022DEAB0.c @@ -5,6 +5,12 @@ extern struct dungeon* DUNGEON_PTR[]; void MemFree(void* ptr); void MemZero(void* ptr, u32 len); void* MemAlloc(u32 len, u32 flags); +void ov29_0234C654(s32); +void sub_020091B0(s32, s32); +void sub_02009194(s32, s32); +void sub_020091B0(s32, s32); +void StartFadeDungeonWrapper(s32, s32, s32); +void ov29_0234C738(s32); struct dungeon* DungeonAlloc(void) { @@ -13,7 +19,7 @@ struct dungeon* DungeonAlloc(void) #else void* buf = MemAlloc(0x0002CB14,0); #endif - + DUNGEON_PTR[1]=buf; } @@ -39,3 +45,15 @@ void DungeonFree(void) MemFree(DUNGEON_PTR[1]); DUNGEON_PTR[1]=0; } + +void ov29_022DEADC() +{ + ov29_0234C654(0x20); + sub_020091B0(0, 0); + sub_020091B0(1, 0); + sub_02009194(2, 0); + sub_02009194(3, 0); + sub_020091B0(4, 0); + StartFadeDungeonWrapper(1, 0x4000, 0); + ov29_0234C738(0); +} diff --git a/src/overlay_29_0234BBE8.c b/src/overlay_29_0234BBE8.c index e5985eca..a413bab5 100644 --- a/src/overlay_29_0234BBE8.c +++ b/src/overlay_29_0234BBE8.c @@ -37,7 +37,7 @@ s32 sub_0205BAB0(void *); void ov29_022DE418(); void sub_020091B0(s32, s32); void sub_02009194(s32, s32); -void StartFadeDungeonWrapper(s32,s32,s32); +void StartFadeDungeonWrapper(s32, s32, s32); void ov29_0234C738(s32); void SetAdventureLogDungeonFloor(void *); void StopBgmCommand(); From dc245a189084a13caabbf03c9b88172d1ced3737 Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Sun, 15 Jun 2025 17:52:45 -0500 Subject: [PATCH 7/7] Decomped ov29_022DEB40 Decomped by ElectricGeorge --- ...9_022DEB40.inc => overlay_29_022DEBA4.inc} | 1 + ...ay_29_022DEB40.s => overlay_29_022DEBA4.s} | 31 +------------------ include/overlay_29_022DEAB0.h | 1 + main.lsf | 2 +- src/overlay_29_022DEAB0.c | 12 +++++++ 5 files changed, 16 insertions(+), 31 deletions(-) rename asm/include/{overlay_29_022DEB40.inc => overlay_29_022DEBA4.inc} (99%) rename asm/{overlay_29_022DEB40.s => overlay_29_022DEBA4.s} (98%) diff --git a/asm/include/overlay_29_022DEB40.inc b/asm/include/overlay_29_022DEBA4.inc similarity index 99% rename from asm/include/overlay_29_022DEB40.inc rename to asm/include/overlay_29_022DEBA4.inc index c04eae21..bc43de8d 100644 --- a/asm/include/overlay_29_022DEB40.inc +++ b/asm/include/overlay_29_022DEBA4.inc @@ -101,6 +101,7 @@ .public ov29_022DE930 .public ov29_022DEA34 .public ov29_022DEADC +.public ov29_022DEB40 .public ov29_022E0434 .public ov29_022E081C .public ov29_022E0DFC diff --git a/asm/overlay_29_022DEB40.s b/asm/overlay_29_022DEBA4.s similarity index 98% rename from asm/overlay_29_022DEB40.s rename to asm/overlay_29_022DEBA4.s index f5c1a3e1..85eaed06 100644 --- a/asm/overlay_29_022DEB40.s +++ b/asm/overlay_29_022DEBA4.s @@ -1,37 +1,8 @@ .include "asm/macros.inc" - .include "overlay_29_022DEB40.inc" + .include "overlay_29_022DEBA4.inc" .text - arm_func_start ov29_022DEB40 -ov29_022DEB40: ; 0x022DEB40 - stmdb sp!, {r3, lr} - mov r0, #2 - mov r1, #0x4000 - mov r2, #0 - bl StartFadeDungeonWrapper - mov r0, #0 - bl ov29_0234C738 - mov r0, #1 - bl ov29_0234C654 - mov r0, #0 - mov r1, r0 - bl sub_020091B0 - mov r0, #1 - mov r1, #0 - bl sub_020091B0 - mov r0, #2 - mov r1, #0 - bl sub_020091B0 - mov r0, #3 - mov r1, #0 - bl sub_020091B0 - mov r0, #4 - mov r1, #0 - bl sub_020091B0 - ldmia sp!, {r3, pc} - arm_func_end ov29_022DEB40 - arm_func_start ov29_022DEBA4 ov29_022DEBA4: ; 0x022DEBA4 ldr ip, _022DEBAC ; =ov29_022DEADC diff --git a/include/overlay_29_022DEAB0.h b/include/overlay_29_022DEAB0.h index b0ebee5e..3d7c15f3 100644 --- a/include/overlay_29_022DEAB0.h +++ b/include/overlay_29_022DEAB0.h @@ -13,5 +13,6 @@ void DungeonZInit(void); // Frees the dungeons struct pointer to by the master dungeon pointer, and nullifies the pointer. void DungeonFree(void); void ov29_022DEADC(); +void ov29_022DEB40(); #endif //PMDSKY_OVERLAY_29_022DEAB0_H diff --git a/main.lsf b/main.lsf index 321acecf..14df9627 100644 --- a/main.lsf +++ b/main.lsf @@ -266,7 +266,7 @@ Overlay OVY_29 Object src/overlay_29_022DC61C.o Object asm/overlay_29_022DC65C.o Object src/overlay_29_022DEAB0.o - Object asm/overlay_29_022DEB40.o + Object asm/overlay_29_022DEBA4.o Object src/dg.o Object asm/overlay_29_022E0378.o Object src/overlay_29_022E1610.o diff --git a/src/overlay_29_022DEAB0.c b/src/overlay_29_022DEAB0.c index ae31664e..53d27958 100644 --- a/src/overlay_29_022DEAB0.c +++ b/src/overlay_29_022DEAB0.c @@ -57,3 +57,15 @@ void ov29_022DEADC() StartFadeDungeonWrapper(1, 0x4000, 0); ov29_0234C738(0); } + +void ov29_022DEB40() +{ + StartFadeDungeonWrapper(2, 0x4000, 0); + ov29_0234C738(0); + ov29_0234C654(1); + sub_020091B0(0, 0); + sub_020091B0(1, 0); + sub_020091B0(2, 0); + sub_020091B0(3, 0); + sub_020091B0(4, 0); +}