From 4f46fed93873061bbcae934f5cf6ee41cd1f477a Mon Sep 17 00:00:00 2001 From: cecilarmitais Date: Mon, 17 Aug 2026 23:05:26 -0700 Subject: [PATCH] Decomp thirty adventure-log accessors Decompile from asm, all of them accessors on ADVENTURE_LOG_PTR: SetAdventureLogStructLocation SetAdventureLogCompleted IncrementNbEvolutions SetAdventureLogDungeonFloor GetAdventureLogCompleted GetNbEvolutions GetAdventureLogDungeonFloor IsAdventureLogNotEmpty IncrementNbEggsHatched IncrementNbDungeonsCleared GetNbDungeonsCleared GetNbEggsHatched IncrementNbFriendRescues GetNbFriendRescues GetNbPokemonJoined GetNbMovesLearned SetVictoriesOnOneFloor GetVictoriesOnOneFloor GetNbPokemonBattled IncrementNbBigTreasureWins SetNbBigTreasureWins GetNbBigTreasureWins SetNbRecycled GetNbRecycled IncrementNbSkyGiftsSent SetNbSkyGiftsSent GetNbSkyGiftsSent IncrementNbFainted GetNbFainted GetSentryDutyGamePoints No new types. struct adventure_log already exists in include/adventure_log.h with every field these touch named and offset-commented, and struct dungeon_floor_pair in dungeon.h; every offset in the asm lands on a named field. That header is the reason a batch this size was tractable: the only modelling needed was reading which field each function touches. Two orderings decided four of the thirty, both instances of the rule added to MATCHING_TIPS in the previous commit. IsAdventureLogNotEmpty needed its loop index declared before the pointer local, not after -- with the pointer first the two land in swapped registers, at 35. The three Set functions needed the completion-flag write placed before the clamp rather than after: written in the obvious order the clamp is emitted ahead of the first pointer load and the two literal-pool words come out reversed, at 250 each. Reordering the statement fixed all three. The counters clamp at 0x000F423F, decimal 999999, and each function sets one bit of completion_flags[0]. The exact shape differs per function and is reproduced rather than normalised: three increment then clamp, two clamp then increment, and the three setters write the flag before storing the value. Those differences are what the target does. The clamp comparisons are signed even though the fields are u32, so each is written with an explicit (s32) cast rather than retyping a shared struct. ADVENTURE_LOG_PTR and _022AB69C move into adventure_log.h. src/main_0204FDFC.c declared the pointer itself, from before any of this was decompiled; that line is replaced by the header it already includes, and the object rebuilds unchanged. Nine adventure-log functions remain in asm and are not in this commit: ClearAdventureLogStruct, ComputeSpecialCounters, CopyLogTo, CopyLogFrom, SetItemAcquired, GetNbItemAcquired, SetChallengeLetterCleared, SetPokemonBattled and SetSentryDutyGamePoints. No comments are added to any pmd-sky file. Authored by Claude (Opus 5) under human direction. Confirmed by a matching build: build/pmdsky.us/pmdsky.us.nds: OK. Co-Authored-By: Claude Opus 5 --- asm/include/main_0204F0A0.inc | 14 +- asm/include/main_0204FA70.inc | 2 + asm/include/main_0204FD38.inc | 1 + asm/include/main_0204FE58.inc | 24 - asm/include/main_0204FFEC.inc | 8 + asm/include/main_02050300.inc | 7 + asm/include/main_020504BC.inc | 18 + asm/main_0204F0A0.s | 352 -------- asm/main_0204FA70.s | 89 ++ asm/main_0204FD38.s | 9 + asm/main_0204FE58.s | 1497 --------------------------------- asm/main_0204FFEC.s | 206 +++++ asm/main_02050300.s | 131 +++ asm/main_020504BC.s | 1008 ++++++++++++++++++++++ include/adventure_log.h | 3 + include/main_0204FA24.h | 11 + include/main_0204FB9C.h | 17 + include/main_0204FD3C.h | 14 + include/main_0204FEB4.h | 17 + include/main_020502B0.h | 10 + include/main_020504A4.h | 9 + main.lsf | 11 + src/main_0204FA24.c | 17 + src/main_0204FB9C.c | 67 ++ src/main_0204FD3C.c | 39 + src/main_0204FDFC.c | 2 - src/main_0204FEB4.c | 59 ++ src/main_020502B0.c | 15 + src/main_020504A4.c | 7 + 29 files changed, 1781 insertions(+), 1883 deletions(-) create mode 100644 asm/include/main_0204FA70.inc create mode 100644 asm/include/main_0204FD38.inc create mode 100644 asm/include/main_0204FFEC.inc create mode 100644 asm/include/main_02050300.inc create mode 100644 asm/include/main_020504BC.inc create mode 100644 asm/main_0204FA70.s create mode 100644 asm/main_0204FD38.s create mode 100644 asm/main_0204FFEC.s create mode 100644 asm/main_02050300.s create mode 100644 asm/main_020504BC.s create mode 100644 include/main_0204FA24.h create mode 100644 include/main_0204FB9C.h create mode 100644 include/main_0204FD3C.h create mode 100644 include/main_0204FEB4.h create mode 100644 include/main_020502B0.h create mode 100644 include/main_020504A4.h create mode 100644 src/main_0204FA24.c create mode 100644 src/main_0204FB9C.c create mode 100644 src/main_0204FD3C.c create mode 100644 src/main_0204FEB4.c create mode 100644 src/main_020502B0.c create mode 100644 src/main_020504A4.c diff --git a/asm/include/main_0204F0A0.inc b/asm/include/main_0204F0A0.inc index 251de8a6..c60e0f52 100644 --- a/asm/include/main_0204F0A0.inc +++ b/asm/include/main_0204F0A0.inc @@ -1,11 +1,4 @@ #pragma once -.public _0209E3A1 -.public _0209E3A2 -.public _0209E3A3 -.public _022AB4F8 -.public _022AB5AC -.public _022AB69C -.public ADVENTURE_LOG_PTR .public DUNGEON_DATA_LIST .public DungeonSwapIdToIdx .public DungeonSwapIdxToId @@ -35,8 +28,13 @@ .public ResetPlayTimer .public SECONDARY_TERRAIN_TYPES .public StrncpyName +.public TEAM_MEMBER_TABLE_PTR +.public _0209E3A1 +.public _0209E3A2 +.public _0209E3A3 +.public _022AB4F8 +.public _022AB5AC .public sub_0204CEE0 .public sub_02050E5C .public sub_02050E8C .public sub_0205EE40 -.public TEAM_MEMBER_TABLE_PTR diff --git a/asm/include/main_0204FA70.inc b/asm/include/main_0204FA70.inc new file mode 100644 index 00000000..d6d4130b --- /dev/null +++ b/asm/include/main_0204FA70.inc @@ -0,0 +1,2 @@ +#pragma once +.public ADVENTURE_LOG_PTR diff --git a/asm/include/main_0204FD38.inc b/asm/include/main_0204FD38.inc new file mode 100644 index 00000000..6f70f09b --- /dev/null +++ b/asm/include/main_0204FD38.inc @@ -0,0 +1 @@ +#pragma once diff --git a/asm/include/main_0204FE58.inc b/asm/include/main_0204FE58.inc index d68ec0f2..37a84e25 100644 --- a/asm/include/main_0204FE58.inc +++ b/asm/include/main_0204FE58.inc @@ -1,27 +1,3 @@ #pragma once -.public _0209E6BD -.public _022AB924 -.public ADVENTURE_LOG_ENCOUNTERS_MONSTER_IDS .public ADVENTURE_LOG_PTR -.public ARM9_UNKNOWN_DATA__NA_209E6BC -.public CONVERSION2_TYPE_TABLE -.public Copy16BitsFrom -.public Copy16BitsTo -.public CopyNStringFromId -.public GetAdventureLogCompleted -.public GetBaseFormCastformCherrimDeoxys .public GetDexNumberVeneer -.public GetRankUpEntry -.public GetResolvedPerformanceProgressFlag -.public GetStringFromFileVeneer -.public IsItemValidVeneer -.public IsRealMove -.public MemZero -.public NormalizeTreasureBox -.public SetAdventureLogCompleted -.public SetResolvedPerformanceProgressFlag -.public StrncpyName -.public StrncpySimpleNoPad -.public StrncpySimpleNoPadSafe -.public TEAM_MEMBER_TABLE_PTR -.public TEAM_NAME diff --git a/asm/include/main_0204FFEC.inc b/asm/include/main_0204FFEC.inc new file mode 100644 index 00000000..dbca26e2 --- /dev/null +++ b/asm/include/main_0204FFEC.inc @@ -0,0 +1,8 @@ +#pragma once +.public ADVENTURE_LOG_ENCOUNTERS_MONSTER_IDS +.public ADVENTURE_LOG_PTR +.public GetBaseFormCastformCherrimDeoxys +.public GetDexNumberVeneer +.public IsRealMove +.public SetAdventureLogCompleted +.public TEAM_MEMBER_TABLE_PTR diff --git a/asm/include/main_02050300.inc b/asm/include/main_02050300.inc new file mode 100644 index 00000000..19875dc0 --- /dev/null +++ b/asm/include/main_02050300.inc @@ -0,0 +1,7 @@ +#pragma once +.public ADVENTURE_LOG_PTR +.public GetAdventureLogCompleted +.public IsItemValidVeneer +.public NormalizeTreasureBox +.public SetAdventureLogCompleted +.public SetResolvedPerformanceProgressFlag diff --git a/asm/include/main_020504BC.inc b/asm/include/main_020504BC.inc new file mode 100644 index 00000000..2122160b --- /dev/null +++ b/asm/include/main_020504BC.inc @@ -0,0 +1,18 @@ +#pragma once +.public ADVENTURE_LOG_PTR +.public ARM9_UNKNOWN_DATA__NA_209E6BC +.public CONVERSION2_TYPE_TABLE +.public ComputeSpecialCounters +.public Copy16BitsFrom +.public Copy16BitsTo +.public CopyNStringFromId +.public GetRankUpEntry +.public GetResolvedPerformanceProgressFlag +.public GetStringFromFileVeneer +.public MemZero +.public StrncpyName +.public StrncpySimpleNoPad +.public StrncpySimpleNoPadSafe +.public TEAM_NAME +.public _0209E6BD +.public _022AB924 diff --git a/asm/main_0204F0A0.s b/asm/main_0204F0A0.s index 5d5139c4..2df6a326 100644 --- a/asm/main_0204F0A0.s +++ b/asm/main_0204F0A0.s @@ -835,355 +835,3 @@ sub_0204FA0C: ; 0x0204FA0C _0204FA1C: .word sub_02050E8C _0204FA20: .word PLAY_TIME_SECONDS arm_func_end sub_0204FA0C - - arm_func_start SetAdventureLogStructLocation -SetAdventureLogStructLocation: ; 0x0204FA24 - ldr r1, _0204FA34 ; =_022AB69C - ldr r0, _0204FA38 ; =ADVENTURE_LOG_PTR - str r1, [r0] - bx lr - .align 2, 0 -_0204FA34: .word _022AB69C -_0204FA38: .word ADVENTURE_LOG_PTR - arm_func_end SetAdventureLogStructLocation - - arm_func_start SetAdventureLogDungeonFloor -SetAdventureLogDungeonFloor: ; 0x0204FA3C - ldr r1, _0204FA58 ; =ADVENTURE_LOG_PTR - ldrb r2, [r0] - ldr r1, [r1] - strb r2, [r1, #0x278] - ldrb r0, [r0, #1] - strb r0, [r1, #0x279] - bx lr - .align 2, 0 -_0204FA58: .word ADVENTURE_LOG_PTR - arm_func_end SetAdventureLogDungeonFloor - - arm_func_start GetAdventureLogDungeonFloor -GetAdventureLogDungeonFloor: ; 0x0204FA5C - ldr r0, _0204FA6C ; =ADVENTURE_LOG_PTR - ldr r0, [r0] - add r0, r0, #0x278 - bx lr - .align 2, 0 -_0204FA6C: .word ADVENTURE_LOG_PTR - arm_func_end GetAdventureLogDungeonFloor - - arm_func_start ClearAdventureLogStruct -ClearAdventureLogStruct: ; 0x0204FA70 - mov r3, #0 - ldr r1, _0204FB98 ; =ADVENTURE_LOG_PTR - mov r0, r3 -_0204FA7C: - ldr r2, [r1] - str r0, [r2, r3, lsl #2] - add r3, r3, #1 - cmp r3, #4 - blt _0204FA7C - ldr r1, _0204FB98 ; =ADVENTURE_LOG_PTR - mov r3, #0 - ldr r2, [r1] - str r0, [r2, #0x2c] - ldr r2, [r1] - str r0, [r2, #0x30] - ldr r2, [r1] - str r0, [r2, #0x34] - ldr r2, [r1] - str r0, [r2, #0x28] - ldr r2, [r1] - str r0, [r2, #0x10] - ldr r2, [r1] - str r0, [r2, #0x14] - ldr r2, [r1] - str r0, [r2, #0x18] - ldr r2, [r1] - str r0, [r2, #0x1c] - ldr r2, [r1] - str r0, [r2, #0x20] - ldr r2, [r1] - str r0, [r2, #0x24] - ldr r2, [r1] - str r0, [r2, #0x38] - ldr r2, [r1] - str r0, [r2, #0x3c] - ldr r2, [r1] - str r0, [r2, #0x40] -_0204FB00: - ldr r2, [r1] - add r2, r2, r0, lsl #2 - str r3, [r2, #0x44] - ldr r2, [r1] - add r2, r2, r0, lsl #2 - add r0, r0, #1 - str r3, [r2, #0xd8] - cmp r0, #0x25 - blt _0204FB00 - ldr r0, _0204FB98 ; =ADVENTURE_LOG_PTR - mov r2, #0 -_0204FB2C: - ldr r1, [r0] - add r1, r1, r3, lsl #2 - add r3, r3, #1 - str r2, [r1, #0x16c] - cmp r3, #0x11 - blt _0204FB2C - ldr r0, _0204FB98 ; =ADVENTURE_LOG_PTR - mov ip, #0 -_0204FB4C: - ldr r1, [r0] - add r1, r1, r2, lsl #2 - add r2, r2, #1 - str ip, [r1, #0x1b0] - cmp r2, #0x2c - blt _0204FB4C - ldr r1, _0204FB98 ; =ADVENTURE_LOG_PTR - ldr r0, [r1] - str ip, [r0, #0x260] - mov r0, #0x3e8 -_0204FB74: - rsb r2, ip, #5 - mul r3, r2, r0 - ldr r2, [r1] - add r2, r2, ip, lsl #2 - add ip, ip, #1 - str r3, [r2, #0x264] - cmp ip, #5 - blt _0204FB74 - bx lr - .align 2, 0 -_0204FB98: .word ADVENTURE_LOG_PTR - arm_func_end ClearAdventureLogStruct - - arm_func_start SetAdventureLogCompleted -SetAdventureLogCompleted: ; 0x0204FB9C - ldr r1, _0204FBC0 ; =ADVENTURE_LOG_PTR - mov r3, r0, asr #5 - ldr ip, [r1] - and r0, r0, #0x1f - ldr r2, [ip, r3, lsl #2] - mov r1, #1 - orr r0, r2, r1, lsl r0 - str r0, [ip, r3, lsl #2] - bx lr - .align 2, 0 -_0204FBC0: .word ADVENTURE_LOG_PTR - arm_func_end SetAdventureLogCompleted - - arm_func_start IsAdventureLogNotEmpty -IsAdventureLogNotEmpty: ; 0x0204FBC4 - ldr r0, _0204FBF8 ; =ADVENTURE_LOG_PTR - mov r1, #0 - ldr r2, [r0] - b _0204FBE8 -_0204FBD4: - ldr r0, [r2, r1, lsl #2] - cmp r0, #0 - movne r0, #1 - bxne lr - add r1, r1, #1 -_0204FBE8: - cmp r1, #4 - blt _0204FBD4 - mov r0, #0 - bx lr - .align 2, 0 -_0204FBF8: .word ADVENTURE_LOG_PTR - arm_func_end IsAdventureLogNotEmpty - - arm_func_start GetAdventureLogCompleted -GetAdventureLogCompleted: ; 0x0204FBFC - ldr r1, _0204FC24 ; =ADVENTURE_LOG_PTR - mov r2, r0, asr #5 - ldr r1, [r1] - and r3, r0, #0x1f - ldr r0, [r1, r2, lsl #2] - mov r1, #1 - tst r0, r1, lsl r3 - moveq r1, #0 - and r0, r1, #0xff - bx lr - .align 2, 0 -_0204FC24: .word ADVENTURE_LOG_PTR - arm_func_end GetAdventureLogCompleted - - arm_func_start IncrementNbDungeonsCleared -IncrementNbDungeonsCleared: ; 0x0204FC28 - ldr r0, _0204FC64 ; =ADVENTURE_LOG_PTR - ldr r1, _0204FC68 ; =0x000F423F - ldr r3, [r0] - ldr r2, [r3, #0x10] - add r2, r2, #1 - str r2, [r3, #0x10] - ldr r3, [r0] - ldr r2, [r3] - orr r2, r2, #0x10 - str r2, [r3] - ldr r2, [r0] - ldr r0, [r2, #0x10] - cmp r0, r1 - strgt r1, [r2, #0x10] - bx lr - .align 2, 0 -_0204FC64: .word ADVENTURE_LOG_PTR -_0204FC68: .word 0x000F423F - arm_func_end IncrementNbDungeonsCleared - - arm_func_start GetNbDungeonsCleared -GetNbDungeonsCleared: ; 0x0204FC6C - ldr r0, _0204FC7C ; =ADVENTURE_LOG_PTR - ldr r0, [r0] - ldr r0, [r0, #0x10] - bx lr - .align 2, 0 -_0204FC7C: .word ADVENTURE_LOG_PTR - arm_func_end GetNbDungeonsCleared - - arm_func_start IncrementNbFriendRescues -IncrementNbFriendRescues: ; 0x0204FC80 - ldr r0, _0204FCC0 ; =ADVENTURE_LOG_PTR - ldr r1, _0204FCC4 ; =0x000F423F - ldr r3, [r0] - ldr r2, [r3, #0x14] - add r2, r2, #1 - str r2, [r3, #0x14] - ldr r2, [r0] - ldr r0, [r2, #0x14] - cmp r0, r1 - ldr r0, _0204FCC0 ; =ADVENTURE_LOG_PTR - strgt r1, [r2, #0x14] - ldr r1, [r0] - ldr r0, [r1] - orr r0, r0, #0x40 - str r0, [r1] - bx lr - .align 2, 0 -_0204FCC0: .word ADVENTURE_LOG_PTR -_0204FCC4: .word 0x000F423F - arm_func_end IncrementNbFriendRescues - - arm_func_start GetNbFriendRescues -GetNbFriendRescues: ; 0x0204FCC8 - ldr r0, _0204FCD8 ; =ADVENTURE_LOG_PTR - ldr r0, [r0] - ldr r0, [r0, #0x14] - bx lr - .align 2, 0 -_0204FCD8: .word ADVENTURE_LOG_PTR - arm_func_end GetNbFriendRescues - - arm_func_start IncrementNbEvolutions -IncrementNbEvolutions: ; 0x0204FCDC - ldr r0, _0204FD1C ; =ADVENTURE_LOG_PTR - ldr r1, _0204FD20 ; =0x000F423F - ldr r3, [r0] - ldr r2, [r3, #0x18] - add r2, r2, #1 - str r2, [r3, #0x18] - ldr r2, [r0] - ldr r0, [r2, #0x18] - cmp r0, r1 - ldr r0, _0204FD1C ; =ADVENTURE_LOG_PTR - strgt r1, [r2, #0x18] - ldr r1, [r0] - ldr r0, [r1] - orr r0, r0, #0x80 - str r0, [r1] - bx lr - .align 2, 0 -_0204FD1C: .word ADVENTURE_LOG_PTR -_0204FD20: .word 0x000F423F - arm_func_end IncrementNbEvolutions - - arm_func_start GetNbEvolutions -GetNbEvolutions: ; 0x0204FD24 - ldr r0, _0204FD34 ; =ADVENTURE_LOG_PTR - ldr r0, [r0] - ldr r0, [r0, #0x18] - bx lr - .align 2, 0 -_0204FD34: .word ADVENTURE_LOG_PTR - arm_func_end GetNbEvolutions - - arm_func_start IncrementNbSteals -IncrementNbSteals: ; 0x0204FD38 - bx lr - arm_func_end IncrementNbSteals - - arm_func_start IncrementNbEggsHatched -IncrementNbEggsHatched: ; 0x0204FD3C - ldr r1, _0204FD70 ; =ADVENTURE_LOG_PTR - ldr r0, _0204FD74 ; =0x000F423F - ldr r2, [r1] - ldr r1, [r2, #0x1c] - cmp r1, r0 - addlt r0, r1, #1 - strlt r0, [r2, #0x1c] - ldr r0, _0204FD70 ; =ADVENTURE_LOG_PTR - ldr r1, [r0] - ldr r0, [r1] - orr r0, r0, #0x100 - str r0, [r1] - bx lr - .align 2, 0 -_0204FD70: .word ADVENTURE_LOG_PTR -_0204FD74: .word 0x000F423F - arm_func_end IncrementNbEggsHatched - - arm_func_start GetNbEggsHatched -GetNbEggsHatched: ; 0x0204FD78 - ldr r0, _0204FD88 ; =ADVENTURE_LOG_PTR - ldr r0, [r0] - ldr r0, [r0, #0x1c] - bx lr - .align 2, 0 -_0204FD88: .word ADVENTURE_LOG_PTR - arm_func_end GetNbEggsHatched - - arm_func_start GetNbPokemonJoined -GetNbPokemonJoined: ; 0x0204FD8C - ldr r0, _0204FD9C ; =ADVENTURE_LOG_PTR - ldr r0, [r0] - ldr r0, [r0, #0x2c] - bx lr - .align 2, 0 -_0204FD9C: .word ADVENTURE_LOG_PTR - arm_func_end GetNbPokemonJoined - - arm_func_start GetNbMovesLearned -GetNbMovesLearned: ; 0x0204FDA0 - ldr r0, _0204FDB0 ; =ADVENTURE_LOG_PTR - ldr r0, [r0] - ldr r0, [r0, #0x34] - bx lr - .align 2, 0 -_0204FDB0: .word ADVENTURE_LOG_PTR - arm_func_end GetNbMovesLearned - - arm_func_start SetVictoriesOnOneFloor -SetVictoriesOnOneFloor: ; 0x0204FDB4 - ldr r1, _0204FDE0 ; =0x000F423F - cmp r0, r1 - movgt r0, r1 - ldr r1, _0204FDE4 ; =ADVENTURE_LOG_PTR - ldr r2, [r1] - str r0, [r2, #0x28] - ldr r1, [r1] - ldr r0, [r1] - orr r0, r0, #0x200 - str r0, [r1] - bx lr - .align 2, 0 -_0204FDE0: .word 0x000F423F -_0204FDE4: .word ADVENTURE_LOG_PTR - arm_func_end SetVictoriesOnOneFloor - - arm_func_start GetVictoriesOnOneFloor -GetVictoriesOnOneFloor: ; 0x0204FDE8 - ldr r0, _0204FDF8 ; =ADVENTURE_LOG_PTR - ldr r0, [r0] - ldr r0, [r0, #0x28] - bx lr - .align 2, 0 -_0204FDF8: .word ADVENTURE_LOG_PTR - arm_func_end GetVictoriesOnOneFloor diff --git a/asm/main_0204FA70.s b/asm/main_0204FA70.s new file mode 100644 index 00000000..dcdd5c10 --- /dev/null +++ b/asm/main_0204FA70.s @@ -0,0 +1,89 @@ + .include "asm/macros.inc" + .include "main_0204FA70.inc" + + .text + + 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 diff --git a/asm/main_0204FD38.s b/asm/main_0204FD38.s new file mode 100644 index 00000000..03c79c2b --- /dev/null +++ b/asm/main_0204FD38.s @@ -0,0 +1,9 @@ + .include "asm/macros.inc" + .include "main_0204FD38.inc" + + .text + + arm_func_start IncrementNbSteals +IncrementNbSteals: ; 0x0204FD38 + bx lr + arm_func_end IncrementNbSteals diff --git a/asm/main_0204FE58.s b/asm/main_0204FE58.s index e922beb8..fe84bb9c 100644 --- a/asm/main_0204FE58.s +++ b/asm/main_0204FE58.s @@ -30,1500 +30,3 @@ SetPokemonBattled: ; 0x0204FE58 .align 2, 0 _0204FEB0: .word ADVENTURE_LOG_PTR arm_func_end SetPokemonBattled - - arm_func_start GetNbPokemonBattled -GetNbPokemonBattled: ; 0x0204FEB4 - ldr r0, _0204FEC4 ; =ADVENTURE_LOG_PTR - ldr r0, [r0] - ldr r0, [r0, #0x30] - bx lr - .align 2, 0 -_0204FEC4: .word ADVENTURE_LOG_PTR - arm_func_end GetNbPokemonBattled - - arm_func_start IncrementNbBigTreasureWins -IncrementNbBigTreasureWins: ; 0x0204FEC8 - ldr r0, _0204FEE0 ; =ADVENTURE_LOG_PTR - ldr ip, _0204FEE4 ; =SetNbBigTreasureWins - ldr r0, [r0] - ldr r0, [r0, #0x38] - add r0, r0, #1 - bx ip - .align 2, 0 -_0204FEE0: .word ADVENTURE_LOG_PTR -_0204FEE4: .word SetNbBigTreasureWins - arm_func_end IncrementNbBigTreasureWins - - arm_func_start SetNbBigTreasureWins -SetNbBigTreasureWins: ; 0x0204FEE8 - ldr r2, _0204FF18 ; =ADVENTURE_LOG_PTR - ldr r1, _0204FF1C ; =0x000F423F - ldr r3, [r2] - cmp r0, r1 - ldr r2, [r3] - movgt r0, r1 - orr r2, r2, #0x400 - ldr r1, _0204FF18 ; =ADVENTURE_LOG_PTR - str r2, [r3] - ldr r1, [r1] - str r0, [r1, #0x38] - bx lr - .align 2, 0 -_0204FF18: .word ADVENTURE_LOG_PTR -_0204FF1C: .word 0x000F423F - arm_func_end SetNbBigTreasureWins - - arm_func_start GetNbBigTreasureWins -GetNbBigTreasureWins: ; 0x0204FF20 - ldr r0, _0204FF30 ; =ADVENTURE_LOG_PTR - ldr r0, [r0] - ldr r0, [r0, #0x38] - bx lr - .align 2, 0 -_0204FF30: .word ADVENTURE_LOG_PTR - arm_func_end GetNbBigTreasureWins - - arm_func_start SetNbRecycled -SetNbRecycled: ; 0x0204FF34 - ldr r2, _0204FF64 ; =ADVENTURE_LOG_PTR - ldr r1, _0204FF68 ; =0x000F423F - ldr r3, [r2] - cmp r0, r1 - ldr r2, [r3] - movgt r0, r1 - orr r2, r2, #0x800 - ldr r1, _0204FF64 ; =ADVENTURE_LOG_PTR - str r2, [r3] - ldr r1, [r1] - str r0, [r1, #0x3c] - bx lr - .align 2, 0 -_0204FF64: .word ADVENTURE_LOG_PTR -_0204FF68: .word 0x000F423F - arm_func_end SetNbRecycled - - arm_func_start GetNbRecycled -GetNbRecycled: ; 0x0204FF6C - ldr r0, _0204FF7C ; =ADVENTURE_LOG_PTR - ldr r0, [r0] - ldr r0, [r0, #0x3c] - bx lr - .align 2, 0 -_0204FF7C: .word ADVENTURE_LOG_PTR - arm_func_end GetNbRecycled - - arm_func_start IncrementNbSkyGiftsSent -IncrementNbSkyGiftsSent: ; 0x0204FF80 - ldr r0, _0204FF98 ; =ADVENTURE_LOG_PTR - ldr ip, _0204FF9C ; =SetNbSkyGiftsSent - ldr r0, [r0] - ldr r0, [r0, #0x40] - add r0, r0, #1 - bx ip - .align 2, 0 -_0204FF98: .word ADVENTURE_LOG_PTR -_0204FF9C: .word SetNbSkyGiftsSent - arm_func_end IncrementNbSkyGiftsSent - - arm_func_start SetNbSkyGiftsSent -SetNbSkyGiftsSent: ; 0x0204FFA0 - ldr r2, _0204FFD0 ; =ADVENTURE_LOG_PTR - ldr r1, _0204FFD4 ; =0x000F423F - ldr r3, [r2] - cmp r0, r1 - ldr r2, [r3] - movgt r0, r1 - orr r2, r2, #0x1000 - ldr r1, _0204FFD0 ; =ADVENTURE_LOG_PTR - str r2, [r3] - ldr r1, [r1] - str r0, [r1, #0x40] - bx lr - .align 2, 0 -_0204FFD0: .word ADVENTURE_LOG_PTR -_0204FFD4: .word 0x000F423F - arm_func_end SetNbSkyGiftsSent - - arm_func_start GetNbSkyGiftsSent -GetNbSkyGiftsSent: ; 0x0204FFD8 - ldr r0, _0204FFE8 ; =ADVENTURE_LOG_PTR - ldr r0, [r0] - ldr r0, [r0, #0x40] - bx lr - .align 2, 0 -_0204FFE8: .word ADVENTURE_LOG_PTR - arm_func_end GetNbSkyGiftsSent - - arm_func_start ComputeSpecialCounters -ComputeSpecialCounters: ; 0x0204FFEC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r4, #0 - mov r8, r4 -_0204FFF8: - mov r0, #0x44 - mul sl, r8, r0 - ldr r0, _0205022C ; =TEAM_MEMBER_TABLE_PTR - ldr r0, [r0] - ldrb r0, [r0, sl] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _0205009C - mov sb, #0 - mov r7, #1 - ldr r3, _02050230 ; =ADVENTURE_LOG_PTR - ldr ip, _0205022C ; =TEAM_MEMBER_TABLE_PTR - mov fp, sb - mov lr, r7 - mov r2, #6 -_0205003C: - mul r1, sb, r2 - ldr r0, [ip] - add r0, r0, sl - add r5, r0, #0x22 - ldrb r0, [r5, r1] - add r1, r5, r1 - tst r0, #1 - movne r0, r7 - moveq r0, fp - tst r0, #0xff - beq _02050090 - ldrh r0, [r1, #2] - ldr r5, [r3] - mov r1, r0, lsr #5 - add r6, r5, r1, lsl #2 - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #27 - ldr r5, [r6, #0x16c] - add r0, r1, r0, ror #27 - orr r0, r5, lr, lsl r0 - str r0, [r6, #0x16c] -_02050090: - add sb, sb, #1 - cmp sb, #4 - blt _0205003C -_0205009C: - ldr r0, _02050234 ; =0x0000022B - add r8, r8, #1 - cmp r8, r0 - blt _0204FFF8 - mov r6, #0 - add r5, r0, #0x258 -_020500B4: - mov r0, r6, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetDexNumberVeneer - add r6, r6, #1 - cmp r6, r5 - blt _020500B4 - mov r7, #0 - ldr r5, _02050230 ; =ADVENTURE_LOG_PTR - ldr sb, _02050238 ; =0x0000021F - mov r8, r7 - mov r6, #1 -_020500E0: - mov r0, r8, lsl #0x10 - mov r0, r0, lsr #0x10 - bl IsRealMove - cmp r0, #0 - beq _02050120 - mov r0, r8, asr #4 - add r0, r8, r0, lsr #27 - ldr r2, [r5] - mov r0, r0, asr #5 - add r2, r2, r0, lsl #2 - mov r1, r8, lsr #0x1f - rsb r0, r1, r8, lsl #27 - ldr r2, [r2, #0x16c] - add r0, r1, r0, ror #27 - tst r2, r6, lsl r0 - addne r7, r7, #1 -_02050120: - add r8, r8, #1 - cmp r8, sb - blt _020500E0 - cmp r7, #0 - ble _02050150 - ldr r0, _02050230 ; =ADVENTURE_LOG_PTR - ldr r1, [r0] - str r7, [r1, #0x34] - ldr r1, [r0] - ldr r0, [r1] - orr r0, r0, #4 - str r0, [r1] -_02050150: - mov sb, #1 - ldr r5, _02050230 ; =ADVENTURE_LOG_PTR - ldr sl, _0205023C ; =0x00000483 - mov r8, #0 - mov r6, sb -_02050164: - mov r0, sb, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetBaseFormCastformCherrimDeoxys - mov r7, r0 - bl GetDexNumberVeneer - cmp r0, #0 - beq _020501B4 - mov r1, r0, asr #4 - add r1, r0, r1, lsr #27 - ldr r3, [r5] - mov r2, r1, asr #5 - mov r1, r0, lsr #0x1f - add r2, r3, r2, lsl #2 - rsb r0, r1, r0, lsl #27 - ldr r2, [r2, #0x44] - add r0, r1, r0, ror #27 - tst r2, r6, lsl r0 - beq _020501B4 - mov r0, r7 - bl RecruitSpecialPokemonLog -_020501B4: - add sb, sb, #1 - cmp sb, sl - blt _02050164 - ldr r0, _02050230 ; =ADVENTURE_LOG_PTR - mov r2, #1 - ldr r1, [r0] - ldr r3, _02050240 ; =0x000001ED - mov r0, r2 -_020501D4: - mov r5, r2, asr #4 - add r5, r2, r5, lsr #27 - mov sb, r5, asr #5 - mov r6, r2, lsr #0x1f - rsb r5, r6, r2, lsl #27 - add r7, r1, sb, lsl #2 - add r6, r6, r5, ror #27 - add r5, r1, sb, lsl #2 - ldr r7, [r7, #0x44] - ldr r5, [r5, #0xd8] - tst r7, r0, lsl r6 - addne r8, r8, #1 - tst r5, r0, lsl r6 - add r2, r2, #1 - addne r4, r4, #1 - cmp r2, r3 - blt _020501D4 - ldr r0, _02050230 ; =ADVENTURE_LOG_PTR - str r8, [r1, #0x2c] - ldr r0, [r0] - str r4, [r0, #0x30] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0205022C: .word TEAM_MEMBER_TABLE_PTR -_02050230: .word ADVENTURE_LOG_PTR -_02050234: .word 0x0000022B -_02050238: .word 0x0000021F -_0205023C: .word 0x00000483 -_02050240: .word 0x000001ED - arm_func_end ComputeSpecialCounters - - arm_func_start RecruitSpecialPokemonLog -RecruitSpecialPokemonLog: ; 0x02050244 - stmdb sp!, {r3, lr} - cmp r0, #0x258 - subge r0, r0, #0x258 - movge r0, r0, lsl #0x10 - ldr r2, _020502AC ; =ADVENTURE_LOG_ENCOUNTERS_MONSTER_IDS - mov r3, #0 - movge r0, r0, asr #0x10 -_02050260: - mov r1, r3, lsl #1 - ldrsh r1, [r2, r1] - cmp r1, #0 - ldmeqia sp!, {r3, pc} - cmp r1, #0xc9 - bne _0205028C - cmp r0, #0xc9 - blt _02050294 - cmp r0, #0xe4 - ble _0205029C - b _02050294 -_0205028C: - cmp r1, r0 - beq _0205029C -_02050294: - add r3, r3, #1 - b _02050260 -_0205029C: - add r0, r3, #0x24 - and r0, r0, #0xff - bl SetAdventureLogCompleted - ldmia sp!, {r3, pc} - .align 2, 0 -_020502AC: .word ADVENTURE_LOG_ENCOUNTERS_MONSTER_IDS - arm_func_end RecruitSpecialPokemonLog - - arm_func_start IncrementNbFainted -IncrementNbFainted: ; 0x020502B0 - ldr r1, _020502E4 ; =ADVENTURE_LOG_PTR - ldr r0, _020502E8 ; =0x000F423F - ldr r2, [r1] - ldr r1, [r2, #0x24] - cmp r1, r0 - addlt r0, r1, #1 - strlt r0, [r2, #0x24] - ldr r0, _020502E4 ; =ADVENTURE_LOG_PTR - ldr r1, [r0] - ldr r0, [r1] - orr r0, r0, #0x20 - str r0, [r1] - bx lr - .align 2, 0 -_020502E4: .word ADVENTURE_LOG_PTR -_020502E8: .word 0x000F423F - arm_func_end IncrementNbFainted - - arm_func_start GetNbFainted -GetNbFainted: ; 0x020502EC - ldr r0, _020502FC ; =ADVENTURE_LOG_PTR - ldr r0, [r0] - ldr r0, [r0, #0x24] - bx lr - .align 2, 0 -_020502FC: .word ADVENTURE_LOG_PTR - arm_func_end GetNbFainted - - arm_func_start SetItemAcquired -SetItemAcquired: ; 0x02050300 - stmdb sp!, {r4, r5, r6, lr} - ldrsh r0, [r0, #4] - bl NormalizeTreasureBox - mov r4, r0 - mov r0, r4, lsl #0x10 - mov r0, r0, asr #0x10 - bl IsItemValidVeneer - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r4, #0x3b - blt _02050380 - cmp r4, #0x41 - bgt _02050380 - sub r0, r4, #0x21 - and r0, r0, #0xff - mov r5, #1 - bl SetAdventureLogCompleted - mov r6, #0x1a - b _02050364 -_0205034C: - and r0, r6, #0xff - bl GetAdventureLogCompleted - cmp r0, #0 - moveq r5, #0 - beq _0205036C - add r6, r6, #1 -_02050364: - cmp r6, #0x20 - ble _0205034C -_0205036C: - cmp r5, #0 - beq _02050380 - mov r0, #0x15 - mov r1, #1 - bl SetResolvedPerformanceProgressFlag -_02050380: - ldr r3, _020503C8 ; =ADVENTURE_LOG_PTR - mov r0, r4, asr #4 - ldr ip, [r3] - add r0, r4, r0, lsr #27 - mov r2, r4, lsr #0x1f - rsb r1, r2, r4, lsl #27 - add lr, ip, #0x1b0 - mov ip, r0, asr #5 - ldr r4, [lr, ip, lsl #2] - add r0, r2, r1, ror #27 - mov r1, #1 - orr r0, r4, r1, lsl r0 - str r0, [lr, ip, lsl #2] - ldr r1, [r3] - ldr r0, [r1] - orr r0, r0, #8 - str r0, [r1] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020503C8: .word ADVENTURE_LOG_PTR - arm_func_end SetItemAcquired - - arm_func_start GetNbItemAcquired -GetNbItemAcquired: ; 0x020503CC - stmdb sp!, {r4, lr} - ldr r1, _0205041C ; =ADVENTURE_LOG_PTR - mov r0, #0 - ldr r4, [r1] - mov lr, r0 - mov ip, #1 -_020503E4: - mov r1, lr, asr #4 - add r1, lr, r1, lsr #27 - mov r1, r1, asr #5 - add r3, r4, r1, lsl #2 - mov r2, lr, lsr #0x1f - rsb r1, r2, lr, lsl #27 - ldr r3, [r3, #0x1b0] - add r1, r2, r1, ror #27 - tst r3, ip, lsl r1 - add lr, lr, #1 - addne r0, r0, #1 - cmp lr, #0x580 - blt _020503E4 - ldmia sp!, {r4, pc} - .align 2, 0 -_0205041C: .word ADVENTURE_LOG_PTR - arm_func_end GetNbItemAcquired - - arm_func_start SetChallengeLetterCleared -SetChallengeLetterCleared: ; 0x02050420 - stmdb sp!, {r4, lr} - ldr r3, _020504A0 ; =ADVENTURE_LOG_PTR - mov r2, r0, lsr #0x1f - ldr ip, [r3] - rsb r1, r2, r0, lsl #27 - mov lr, r0, lsr #5 - add r4, ip, #0x260 - ldr ip, [r4, lr, lsl #2] - add r1, r2, r1, ror #27 - mov r0, #1 - orr r1, ip, r0, lsl r1 - str r1, [r4, lr, lsl #2] - ldr r4, [r3] - mov ip, r0 - b _02050488 -_0205045C: - mov r1, r0, asr #4 - add r1, r0, r1, lsr #27 - mov r1, r1, asr #5 - add r3, r4, r1, lsl #2 - mov r2, r0, lsr #0x1f - rsb r1, r2, r0, lsl #27 - ldr r3, [r3, #0x260] - add r1, r2, r1, ror #27 - tst r3, ip, lsl r1 - ldmeqia sp!, {r4, pc} - add r0, r0, #1 -_02050488: - cmp r0, #6 - blt _0205045C - ldr r0, [r4, #4] - orr r0, r0, #4 - str r0, [r4, #4] - ldmia sp!, {r4, pc} - .align 2, 0 -_020504A0: .word ADVENTURE_LOG_PTR - arm_func_end SetChallengeLetterCleared - - arm_func_start GetSentryDutyGamePoints -GetSentryDutyGamePoints: ; 0x020504A4 - ldr r1, _020504B8 ; =ADVENTURE_LOG_PTR - ldr r1, [r1] - add r0, r1, r0, lsl #2 - ldr r0, [r0, #0x264] - bx lr - .align 2, 0 -_020504B8: .word ADVENTURE_LOG_PTR - arm_func_end GetSentryDutyGamePoints - - arm_func_start SetSentryDutyGamePoints -SetSentryDutyGamePoints: ; 0x020504BC - stmdb sp!, {r3, lr} - ldr r1, _02050548 ; =ADVENTURE_LOG_PTR - mov lr, #0 - ldr r2, [r1] - b _020504EC -_020504D0: - add r1, r2, lr, lsl #2 - ldr r1, [r1, #0x264] - cmp r0, r1 - bhi _020504F4 - add r1, lr, #1 - mov r1, r1, lsl #0x10 - mov lr, r1, asr #0x10 -_020504EC: - cmp lr, #5 - blt _020504D0 -_020504F4: - cmp lr, #5 - mvnge r0, #0 - ldmgeia sp!, {r3, pc} - mov ip, #4 - ldr r2, _02050548 ; =ADVENTURE_LOG_PTR - b _02050528 -_0205050C: - ldr r3, [r2] - sub r1, ip, #1 - add ip, r3, ip, lsl #2 - ldr r3, [ip, #0x260] - mov r1, r1, lsl #0x10 - str r3, [ip, #0x264] - mov ip, r1, asr #0x10 -_02050528: - cmp ip, lr - bgt _0205050C - ldr r1, _02050548 ; =ADVENTURE_LOG_PTR - ldr r1, [r1] - add r1, r1, lr, lsl #2 - str r0, [r1, #0x264] - mov r0, lr - ldmia sp!, {r3, pc} - .align 2, 0 -_02050548: .word ADVENTURE_LOG_PTR - arm_func_end SetSentryDutyGamePoints - - arm_func_start CopyLogTo -CopyLogTo: ; 0x0205054C - stmdb sp!, {r4, lr} - mov r4, r0 - bl ComputeSpecialCounters - ldr r1, _02050734 ; =ADVENTURE_LOG_PTR - mov r0, r4 - ldr r1, [r1] - mov r2, #0x14 - add r1, r1, #0x10 - bl CopyBitsTo - ldr r1, _02050734 ; =ADVENTURE_LOG_PTR - mov r0, r4 - ldr r1, [r1] - mov r2, #0x14 - add r1, r1, #0x14 - bl CopyBitsTo - ldr r1, _02050734 ; =ADVENTURE_LOG_PTR - mov r0, r4 - ldr r1, [r1] - mov r2, #0x14 - add r1, r1, #0x18 - bl CopyBitsTo - mov r0, r4 - ldr r1, _02050734 ; =ADVENTURE_LOG_PTR - mov r2, #0x80 - ldr r1, [r1] - bl CopyBitsTo - mov r0, r4 - ldr r1, _02050734 ; =ADVENTURE_LOG_PTR - mov r2, #0xe - ldr r1, [r1] - add r1, r1, #0x2c - bl CopyBitsTo - mov r0, r4 - ldr r1, _02050734 ; =ADVENTURE_LOG_PTR - mov r2, #0xe - ldr r1, [r1] - add r1, r1, #0x30 - bl CopyBitsTo - mov r0, r4 - ldr r1, _02050734 ; =ADVENTURE_LOG_PTR - mov r2, #9 - ldr r1, [r1] - add r1, r1, #0x34 - bl CopyBitsTo - mov r0, r4 - ldr r1, _02050734 ; =ADVENTURE_LOG_PTR - mov r2, #0x14 - ldr r1, [r1] - add r1, r1, #0x28 - bl CopyBitsTo - mov r0, r4 - ldr r1, _02050734 ; =ADVENTURE_LOG_PTR - mov r2, #0x14 - ldr r1, [r1] - add r1, r1, #0x24 - bl CopyBitsTo - mov r0, r4 - ldr r1, _02050734 ; =ADVENTURE_LOG_PTR - mov r2, #0x14 - ldr r1, [r1] - add r1, r1, #0x1c - bl CopyBitsTo - mov r0, r4 - ldr r1, _02050734 ; =ADVENTURE_LOG_PTR - mov r2, #0x14 - ldr r1, [r1] - add r1, r1, #0x38 - bl CopyBitsTo - mov r0, r4 - ldr r1, _02050734 ; =ADVENTURE_LOG_PTR - mov r2, #0x14 - ldr r1, [r1] - add r1, r1, #0x3c - bl CopyBitsTo - mov r0, r4 - ldr r1, _02050734 ; =ADVENTURE_LOG_PTR - mov r2, #0x14 - ldr r1, [r1] - add r1, r1, #0x40 - bl CopyBitsTo - mov r0, r4 - ldr r1, _02050734 ; =ADVENTURE_LOG_PTR - mov r2, #0x4a0 - ldr r1, [r1] - add r1, r1, #0x44 - bl CopyBitsTo - mov r0, r4 - ldr r1, _02050734 ; =ADVENTURE_LOG_PTR - mov r2, #0x4a0 - ldr r1, [r1] - add r1, r1, #0xd8 - bl CopyBitsTo - ldr r1, _02050734 ; =ADVENTURE_LOG_PTR - mov r0, r4 - ldr r1, [r1] - mov r2, #0x220 - add r1, r1, #0x16c - bl CopyBitsTo - ldr r1, _02050734 ; =ADVENTURE_LOG_PTR - mov r0, r4 - ldr r1, [r1] - mov r2, #0x580 - add r1, r1, #0x1b0 - bl CopyBitsTo - ldr r1, _02050734 ; =ADVENTURE_LOG_PTR - mov r0, r4 - ldr r1, [r1] - mov r2, #0x20 - add r1, r1, #0x260 - bl CopyBitsTo - ldr r1, _02050734 ; =ADVENTURE_LOG_PTR - mov r0, r4 - ldr r1, [r1] - mov r2, #0xa0 - add r1, r1, #0x264 - bl CopyBitsTo - ldr r1, _02050734 ; =ADVENTURE_LOG_PTR - mov r0, r4 - ldr r1, [r1] - add r1, r1, #0x278 - bl Copy16BitsTo - ldmia sp!, {r4, pc} - .align 2, 0 -_02050734: .word ADVENTURE_LOG_PTR - arm_func_end CopyLogTo - - arm_func_start CopyLogFrom -CopyLogFrom: ; 0x02050738 - stmdb sp!, {r4, lr} - ldr r1, _02050918 ; =ADVENTURE_LOG_PTR - mov r2, #0x14 - ldr r1, [r1] - mov r4, r0 - add r1, r1, #0x10 - bl CopyBitsFrom - ldr r1, _02050918 ; =ADVENTURE_LOG_PTR - mov r0, r4 - ldr r1, [r1] - mov r2, #0x14 - add r1, r1, #0x14 - bl CopyBitsFrom - ldr r1, _02050918 ; =ADVENTURE_LOG_PTR - mov r0, r4 - ldr r1, [r1] - mov r2, #0x14 - add r1, r1, #0x18 - bl CopyBitsFrom - ldr r1, _02050918 ; =ADVENTURE_LOG_PTR - mov r0, r4 - ldr r1, [r1] - mov r2, #0x80 - bl CopyBitsFrom - ldr r1, _02050918 ; =ADVENTURE_LOG_PTR - mov r0, r4 - ldr r1, [r1] - mov r2, #0xe - add r1, r1, #0x2c - bl CopyBitsFrom - mov r0, r4 - ldr r1, _02050918 ; =ADVENTURE_LOG_PTR - mov r2, #0xe - ldr r1, [r1] - add r1, r1, #0x30 - bl CopyBitsFrom - mov r0, r4 - ldr r1, _02050918 ; =ADVENTURE_LOG_PTR - mov r2, #9 - ldr r1, [r1] - add r1, r1, #0x34 - bl CopyBitsFrom - mov r0, r4 - ldr r1, _02050918 ; =ADVENTURE_LOG_PTR - mov r2, #0x14 - ldr r1, [r1] - add r1, r1, #0x28 - bl CopyBitsFrom - mov r0, r4 - ldr r1, _02050918 ; =ADVENTURE_LOG_PTR - mov r2, #0x14 - ldr r1, [r1] - add r1, r1, #0x24 - bl CopyBitsFrom - mov r0, r4 - ldr r1, _02050918 ; =ADVENTURE_LOG_PTR - mov r2, #0x14 - ldr r1, [r1] - add r1, r1, #0x1c - bl CopyBitsFrom - mov r0, r4 - ldr r1, _02050918 ; =ADVENTURE_LOG_PTR - mov r2, #0x14 - ldr r1, [r1] - add r1, r1, #0x38 - bl CopyBitsFrom - mov r0, r4 - ldr r1, _02050918 ; =ADVENTURE_LOG_PTR - mov r2, #0x14 - ldr r1, [r1] - add r1, r1, #0x3c - bl CopyBitsFrom - mov r0, r4 - ldr r1, _02050918 ; =ADVENTURE_LOG_PTR - mov r2, #0x14 - ldr r1, [r1] - add r1, r1, #0x40 - bl CopyBitsFrom - mov r0, r4 - ldr r1, _02050918 ; =ADVENTURE_LOG_PTR - mov r2, #0x4a0 - ldr r1, [r1] - add r1, r1, #0x44 - bl CopyBitsFrom - mov r0, r4 - ldr r1, _02050918 ; =ADVENTURE_LOG_PTR - mov r2, #0x4a0 - ldr r1, [r1] - add r1, r1, #0xd8 - bl CopyBitsFrom - ldr r1, _02050918 ; =ADVENTURE_LOG_PTR - mov r0, r4 - ldr r1, [r1] - mov r2, #0x220 - add r1, r1, #0x16c - bl CopyBitsFrom - ldr r1, _02050918 ; =ADVENTURE_LOG_PTR - mov r0, r4 - ldr r1, [r1] - mov r2, #0x580 - add r1, r1, #0x1b0 - bl CopyBitsFrom - ldr r1, _02050918 ; =ADVENTURE_LOG_PTR - mov r0, r4 - ldr r1, [r1] - mov r2, #0x20 - add r1, r1, #0x260 - bl CopyBitsFrom - ldr r1, _02050918 ; =ADVENTURE_LOG_PTR - mov r0, r4 - ldr r1, [r1] - mov r2, #0xa0 - add r1, r1, #0x264 - bl CopyBitsFrom - ldr r1, _02050918 ; =ADVENTURE_LOG_PTR - mov r0, r4 - ldr r1, [r1] - add r1, r1, #0x278 - bl Copy16BitsFrom - ldmia sp!, {r4, pc} - .align 2, 0 -_02050918: .word ADVENTURE_LOG_PTR - arm_func_end CopyLogFrom - - arm_func_start GetAbilityString -GetAbilityString: ; 0x0205091C -#if defined(EUROPE) - add r1, r1, #0x5e0 - add r1, r1, #0x3000 -#elif defined(JAPAN) - add r1, r1, #0x81 - add r1, r1, #0x4800 -#else - add r1, r1, #0xde - add r1, r1, #0x3500 -#endif - mov r1, r1, lsl #0x10 - ldr ip, _02050938 ; =CopyNStringFromId - mov r1, r1, lsr #0x10 - mov r2, #0x50 - bx ip - .align 2, 0 -_02050938: .word CopyNStringFromId - arm_func_end GetAbilityString - - arm_func_start GetAbilityDescStringId -GetAbilityDescStringId: ; 0x0205093C -#if defined(EUROPE) - add r0, r0, #0x25c - add r0, r0, #0x3400 -#elif defined(JAPAN) - add r0, r0, #0xfd - add r0, r0, #0x4800 -#else - add r0, r0, #0x5a - add r0, r0, #0x3600 -#endif - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bx lr - arm_func_end GetAbilityDescStringId - - arm_func_start GetTypeStringId -GetTypeStringId: ; 0x02050950 -#if defined(EUROPE) - add r0, r0, #0xcd - add r0, r0, #0x3500 -#elif defined(JAPAN) - add r0, r0, #0x6e - add r0, r0, #0x4800 -#else - add r0, r0, #0xcb - add r0, r0, #0x3500 -#endif - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bx lr - arm_func_end GetTypeStringId - - arm_func_start GetConversion2ConvertToType -GetConversion2ConvertToType: ; 0x02050964 - ldr r1, _02050970 ; =CONVERSION2_TYPE_TABLE - ldrb r0, [r1, r0] - bx lr - .align 2, 0 -_02050970: .word CONVERSION2_TYPE_TABLE - arm_func_end GetConversion2ConvertToType - - arm_func_start InitBitstreamForWrite -InitBitstreamForWrite: ; 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 InitBitstreamForWrite - - arm_func_start InitBitstreamForRead -InitBitstreamForRead: ; 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 InitBitstreamForRead - - arm_func_start BitstreamDebug -BitstreamDebug: ; 0x020509BC - bx lr - arm_func_end BitstreamDebug - - arm_func_start CopyBitsTo -CopyBitsTo: ; 0x020509C0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov ip, #0 - mov r3, #1 - mov r5, ip - mov r4, ip - b _02050A34 -_020509D8: - ldrb r6, [r1] - sub r2, r2, #1 - tst r6, r3, lsl ip - ldrne r7, [r0] - ldrne lr, [r0, #8] - ldrneb r6, [r7] - add ip, ip, #1 - orrne r6, r6, r3, lsl lr - strneb r6, [r7] - ldr lr, [r0, #8] - cmp ip, #8 - add lr, lr, #1 - moveq ip, r5 - addeq r1, r1, #1 - str lr, [r0, #8] - cmp lr, #8 - ldreq lr, [r0] - addeq lr, lr, #1 - streq lr, [r0] - streq r4, [r0, #8] - ldr lr, [r0, #0xc] - add lr, lr, #1 - str lr, [r0, #0xc] -_02050A34: - cmp r2, #0 - bne _020509D8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end CopyBitsTo - - arm_func_start CopyBitsFrom -CopyBitsFrom: ; 0x02050A40 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov lr, #0 - mov ip, lr - mov r3, #1 - mov r6, lr - mov r5, lr - b _02050AC0 -_02050A5C: - cmp lr, #0 - streqb ip, [r1] - ldr r7, [r0] - ldr r4, [r0, #8] - ldrb r7, [r7] - sub r2, r2, #1 - tst r7, r3, lsl r4 - ldrneb r4, [r1] - orrne r4, r4, r3, lsl lr - strneb r4, [r1] - ldr r4, [r0, #8] - add lr, lr, #1 - cmp lr, #8 - add r4, r4, #1 - moveq lr, r6 - addeq r1, r1, #1 - str r4, [r0, #8] - cmp r4, #8 - ldreq r4, [r0] - addeq r4, r4, #1 - streq r4, [r0] - streq r5, [r0, #8] - ldr r4, [r0, #0xc] - add r4, r4, #1 - str r4, [r0, #0xc] -_02050AC0: - cmp r2, #0 - bne _02050A5C - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end CopyBitsFrom - - arm_func_start StoreDefaultTeamData -StoreDefaultTeamData: ; 0x02050ACC - stmdb sp!, {lr} - sub sp, sp, #0x14 -#ifdef JAPAN - ldr r1, _02050E54 ; =0x000004C5 - add r0, sp, #0 -#else - add r0, sp, #0 - mov r1, #0x234 -#endif - bl GetStringFromFileVeneer - ldr r0, _02050B08 ; =TEAM_NAME - add r1, sp, #0 -#ifdef JAPAN - mov r2, #5 -#else - mov r2, #0xa -#endif - bl StrncpyName - ldr r0, _02050B0C ; =TEAM_NAME - mov r1, #0 -#ifdef JAPAN - str r1, [r0, #8] - strb r1, [r0, #0xc] -#else - str r1, [r0, #0xc] - strb r1, [r0, #0x10] -#endif - add sp, sp, #0x14 - ldmia sp!, {pc} - .align 2, 0 -#ifdef JAPAN -_02050E54: .word 0x000004C5 -#endif -_02050B08: .word TEAM_NAME -_02050B0C: .word TEAM_NAME - arm_func_end StoreDefaultTeamData - - arm_func_start GetMainTeamNameWithCheck -GetMainTeamNameWithCheck: ; 0x02050B10 - stmdb sp!, {r4, lr} - sub sp, sp, #0x40 - mov r4, r0 - mov r0, #1 - bl GetResolvedPerformanceProgressFlag - cmp r0, #0 - ldrne r0, _02050B70 ; =TEAM_NAME - ldrneb r0, [r0] - cmpne r0, #0 - beq _02050B4C - ldr r1, _02050B74 ; =TEAM_NAME - mov r0, r4 -#ifdef JAPAN - mov r2, #5 -#else - mov r2, #0xa -#endif - bl StrncpySimpleNoPad - b _02050B68 -_02050B4C: - ldr r1, _02050B78 ; =0x00000237 - add r0, sp, #0 - bl GetStringFromFileVeneer - add r1, sp, #0 - mov r0, r4 -#ifdef JAPAN - mov r2, #5 -#else - mov r2, #0xa -#endif - bl StrncpyName -_02050B68: - add sp, sp, #0x40 - ldmia sp!, {r4, pc} - .align 2, 0 -_02050B70: .word TEAM_NAME -_02050B74: .word TEAM_NAME -#ifdef JAPAN -_02050B78: .word 0x000004C8 -#else -_02050B78: .word 0x00000237 -#endif - arm_func_end GetMainTeamNameWithCheck - - arm_func_start GetMainTeamName -GetMainTeamName: ; 0x02050B7C - ldr ip, _02050B8C ; =StrncpySimpleNoPadSafe - ldr r1, _02050B90 ; =TEAM_NAME -#ifdef JAPAN - mov r2, #5 -#else - mov r2, #0xa -#endif - bx ip - .align 2, 0 -_02050B8C: .word StrncpySimpleNoPadSafe -_02050B90: .word TEAM_NAME - arm_func_end GetMainTeamName - - arm_func_start SetMainTeamName -SetMainTeamName: ; 0x02050B94 - ldr r1, _02050BB4 ; =TEAM_NAME - mov r3, #0 -_02050B9C: - ldrb r2, [r0], #1 - strb r2, [r1, r3] - add r3, r3, #1 -#ifdef JAPAN - cmp r3, #5 -#else - cmp r3, #0xa -#endif - blt _02050B9C - bx lr - .align 2, 0 -_02050BB4: .word TEAM_NAME - arm_func_end SetMainTeamName - - arm_func_start GetRankupPoints -GetRankupPoints: ; 0x02050BB8 - stmdb sp!, {r4, lr} - bl GetRank - mov r4, r0 - mov r0, #0x16 - bl GetResolvedPerformanceProgressFlag - cmp r0, #0 - beq _02050BE4 - cmp r4, #0xc - bne _02050BF0 - mov r0, #0 - ldmia sp!, {r4, pc} -_02050BE4: - cmp r4, #8 - movhs r0, #0 - ldmhsia sp!, {r4, pc} -_02050BF0: - mov r0, r4 - bl GetRankUpEntry - ldr r1, _02050C0C ; =TEAM_NAME - ldr r2, [r0, #4] -#ifdef JAPAN - ldr r0, [r1, #8] -#else - ldr r0, [r1, #0xc] -#endif - sub r0, r2, r0 - ldmia sp!, {r4, pc} - .align 2, 0 -_02050C0C: .word TEAM_NAME - arm_func_end GetRankupPoints - - arm_func_start sub_02050C10 -sub_02050C10: ; 0x02050C10 -#ifdef JAPAN -#define SUB_02050C10_OFFSET #8 -#else -#define SUB_02050C10_OFFSET #0xc -#endif - stmdb sp!, {r3, lr} - ldr r1, _02050C6C ; =TEAM_NAME - ldr r2, [r1, SUB_02050C10_OFFSET] - add r2, r2, r0 - mov r0, #0x16 - str r2, [r1, SUB_02050C10_OFFSET] - bl GetResolvedPerformanceProgressFlag - cmp r0, #0 - beq _02050C4C - ldr r0, _02050C6C ; =TEAM_NAME - ldr r1, _02050C70 ; =0x05F5E0FF - ldr r2, [r0, SUB_02050C10_OFFSET] - cmp r2, r1 - strgt r1, [r0, SUB_02050C10_OFFSET] - ldmia sp!, {r3, pc} -_02050C4C: - mov r0, #7 - bl GetRankUpEntry - ldr r1, _02050C6C ; =TEAM_NAME - ldr r2, [r0, #4] - ldr r0, [r1, SUB_02050C10_OFFSET] - cmp r0, r2 - strgt r2, [r1, SUB_02050C10_OFFSET] - ldmia sp!, {r3, pc} - .align 2, 0 -_02050C6C: .word TEAM_NAME -_02050C70: .word 0x05F5E0FF - arm_func_end sub_02050C10 - - arm_func_start GetRank -GetRank: ; 0x02050C74 - stmdb sp!, {r3, r4, r5, lr} - mov r5, #0 - ldr r4, _02050CCC ; =TEAM_NAME - b _02050CA4 -_02050C84: - mov r0, r5 - bl GetRankUpEntry -#ifdef JAPAN - ldr r1, [r4, #8] -#else - ldr r1, [r4, #0xc] -#endif - ldr r0, [r0, #4] - cmp r1, r0 - blt _02050CAC - add r0, r5, #1 - and r5, r0, #0xff -_02050CA4: - cmp r5, #0xc - blo _02050C84 -_02050CAC: - mov r0, #0x16 - bl GetResolvedPerformanceProgressFlag - cmp r0, #0 - bne _02050CC4 - cmp r5, #8 - movhi r5, #8 -_02050CC4: - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02050CCC: .word TEAM_NAME - arm_func_end GetRank - - arm_func_start sub_02050CD0 -sub_02050CD0: ; 0x02050CD0 - stmdb sp!, {r3, lr} - bl GetRank - cmp r0, #8 - movhi r0, #8 - ldmia sp!, {r3, pc} - arm_func_end sub_02050CD0 - - arm_func_start GetRankStorageSize -GetRankStorageSize: ; 0x02050CE4 - stmdb sp!, {r3, lr} - bl GetRank - bl GetRankUpEntry - ldr r0, [r0, #8] - ldmia sp!, {r3, pc} - arm_func_end GetRankStorageSize - - arm_func_start sub_02050CF8 -sub_02050CF8: ; 0x02050CF8 - stmdb sp!, {r3, lr} - sub sp, sp, #0x10 - mov r3, r0 - mov r2, r1 - add r0, sp, #0 - mov r1, r3 - bl InitBitstreamForRead - ldr r1, _02050D70 ; =TEAM_NAME - add r0, sp, #0 -#ifdef JAPAN - mov r2, #0x28 -#else - mov r2, #0x50 -#endif - bl CopyBitsTo - ldr r1, _02050D74 ; =_022AB924 - add r0, sp, #0 - mov r2, #0x20 - bl CopyBitsTo - mov r0, #1 - bl GetResolvedPerformanceProgressFlag - ldr r1, _02050D78 ; =TEAM_NAME - tst r0, #0xff -#ifdef JAPAN - strb r0, [r1, #0xc] -#else - strb r0, [r1, #0x10] -#endif - ldrne r1, _02050D7C ; =ARM9_UNKNOWN_DATA__NA_209E6BC - add r0, sp, #0 - ldreq r1, _02050D80 ; =_0209E6BD - mov r2, #1 - bl CopyBitsTo - add r0, sp, #0 - bl BitstreamDebug - 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 InitBitstreamForWrite - 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 BitstreamDebug - 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_0204FFEC.s b/asm/main_0204FFEC.s new file mode 100644 index 00000000..1ab2654f --- /dev/null +++ b/asm/main_0204FFEC.s @@ -0,0 +1,206 @@ + .include "asm/macros.inc" + .include "main_0204FFEC.inc" + + .text + + 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 diff --git a/asm/main_02050300.s b/asm/main_02050300.s new file mode 100644 index 00000000..e8f75947 --- /dev/null +++ b/asm/main_02050300.s @@ -0,0 +1,131 @@ + .include "asm/macros.inc" + .include "main_02050300.inc" + + .text + + arm_func_start SetItemAcquired +SetItemAcquired: ; 0x02050300 + stmdb sp!, {r4, r5, r6, lr} + ldrsh r0, [r0, #4] + bl NormalizeTreasureBox + mov r4, r0 + mov r0, r4, lsl #0x10 + mov r0, r0, asr #0x10 + bl IsItemValidVeneer + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r4, #0x3b + blt _02050380 + cmp r4, #0x41 + bgt _02050380 + sub r0, r4, #0x21 + and r0, r0, #0xff + mov r5, #1 + bl SetAdventureLogCompleted + mov r6, #0x1a + b _02050364 +_0205034C: + and r0, r6, #0xff + bl GetAdventureLogCompleted + cmp r0, #0 + moveq r5, #0 + beq _0205036C + add r6, r6, #1 +_02050364: + cmp r6, #0x20 + ble _0205034C +_0205036C: + cmp r5, #0 + beq _02050380 + mov r0, #0x15 + mov r1, #1 + bl SetResolvedPerformanceProgressFlag +_02050380: + ldr r3, _020503C8 ; =ADVENTURE_LOG_PTR + mov r0, r4, asr #4 + ldr ip, [r3] + add r0, r4, r0, lsr #27 + mov r2, r4, lsr #0x1f + rsb r1, r2, r4, lsl #27 + add lr, ip, #0x1b0 + mov ip, r0, asr #5 + ldr r4, [lr, ip, lsl #2] + add r0, r2, r1, ror #27 + mov r1, #1 + orr r0, r4, r1, lsl r0 + str r0, [lr, ip, lsl #2] + ldr r1, [r3] + ldr r0, [r1] + orr r0, r0, #8 + str r0, [r1] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_020503C8: .word ADVENTURE_LOG_PTR + arm_func_end SetItemAcquired + + arm_func_start GetNbItemAcquired +GetNbItemAcquired: ; 0x020503CC + stmdb sp!, {r4, lr} + ldr r1, _0205041C ; =ADVENTURE_LOG_PTR + mov r0, #0 + ldr r4, [r1] + mov lr, r0 + mov ip, #1 +_020503E4: + mov r1, lr, asr #4 + add r1, lr, r1, lsr #27 + mov r1, r1, asr #5 + add r3, r4, r1, lsl #2 + mov r2, lr, lsr #0x1f + rsb r1, r2, lr, lsl #27 + ldr r3, [r3, #0x1b0] + add r1, r2, r1, ror #27 + tst r3, ip, lsl r1 + add lr, lr, #1 + addne r0, r0, #1 + cmp lr, #0x580 + blt _020503E4 + ldmia sp!, {r4, pc} + .align 2, 0 +_0205041C: .word ADVENTURE_LOG_PTR + arm_func_end GetNbItemAcquired + + arm_func_start SetChallengeLetterCleared +SetChallengeLetterCleared: ; 0x02050420 + stmdb sp!, {r4, lr} + ldr r3, _020504A0 ; =ADVENTURE_LOG_PTR + mov r2, r0, lsr #0x1f + ldr ip, [r3] + rsb r1, r2, r0, lsl #27 + mov lr, r0, lsr #5 + add r4, ip, #0x260 + ldr ip, [r4, lr, lsl #2] + add r1, r2, r1, ror #27 + mov r0, #1 + orr r1, ip, r0, lsl r1 + str r1, [r4, lr, lsl #2] + ldr r4, [r3] + mov ip, r0 + b _02050488 +_0205045C: + mov r1, r0, asr #4 + add r1, r0, r1, lsr #27 + mov r1, r1, asr #5 + add r3, r4, r1, lsl #2 + mov r2, r0, lsr #0x1f + rsb r1, r2, r0, lsl #27 + ldr r3, [r3, #0x260] + add r1, r2, r1, ror #27 + tst r3, ip, lsl r1 + ldmeqia sp!, {r4, pc} + add r0, r0, #1 +_02050488: + cmp r0, #6 + blt _0205045C + ldr r0, [r4, #4] + orr r0, r0, #4 + str r0, [r4, #4] + ldmia sp!, {r4, pc} + .align 2, 0 +_020504A0: .word ADVENTURE_LOG_PTR + arm_func_end SetChallengeLetterCleared diff --git a/asm/main_020504BC.s b/asm/main_020504BC.s new file mode 100644 index 00000000..87bc2710 --- /dev/null +++ b/asm/main_020504BC.s @@ -0,0 +1,1008 @@ + .include "asm/macros.inc" + .include "main_020504BC.inc" + + .text + + arm_func_start SetSentryDutyGamePoints +SetSentryDutyGamePoints: ; 0x020504BC + stmdb sp!, {r3, lr} + ldr r1, _02050548 ; =ADVENTURE_LOG_PTR + mov lr, #0 + ldr r2, [r1] + b _020504EC +_020504D0: + add r1, r2, lr, lsl #2 + ldr r1, [r1, #0x264] + cmp r0, r1 + bhi _020504F4 + add r1, lr, #1 + mov r1, r1, lsl #0x10 + mov lr, r1, asr #0x10 +_020504EC: + cmp lr, #5 + blt _020504D0 +_020504F4: + cmp lr, #5 + mvnge r0, #0 + ldmgeia sp!, {r3, pc} + mov ip, #4 + ldr r2, _02050548 ; =ADVENTURE_LOG_PTR + b _02050528 +_0205050C: + ldr r3, [r2] + sub r1, ip, #1 + add ip, r3, ip, lsl #2 + ldr r3, [ip, #0x260] + mov r1, r1, lsl #0x10 + str r3, [ip, #0x264] + mov ip, r1, asr #0x10 +_02050528: + cmp ip, lr + bgt _0205050C + ldr r1, _02050548 ; =ADVENTURE_LOG_PTR + ldr r1, [r1] + add r1, r1, lr, lsl #2 + str r0, [r1, #0x264] + mov r0, lr + ldmia sp!, {r3, pc} + .align 2, 0 +_02050548: .word ADVENTURE_LOG_PTR + arm_func_end SetSentryDutyGamePoints + + arm_func_start CopyLogTo +CopyLogTo: ; 0x0205054C + stmdb sp!, {r4, lr} + mov r4, r0 + bl ComputeSpecialCounters + ldr r1, _02050734 ; =ADVENTURE_LOG_PTR + mov r0, r4 + ldr r1, [r1] + mov r2, #0x14 + add r1, r1, #0x10 + bl CopyBitsTo + ldr r1, _02050734 ; =ADVENTURE_LOG_PTR + mov r0, r4 + ldr r1, [r1] + mov r2, #0x14 + add r1, r1, #0x14 + bl CopyBitsTo + ldr r1, _02050734 ; =ADVENTURE_LOG_PTR + mov r0, r4 + ldr r1, [r1] + mov r2, #0x14 + add r1, r1, #0x18 + bl CopyBitsTo + mov r0, r4 + ldr r1, _02050734 ; =ADVENTURE_LOG_PTR + mov r2, #0x80 + ldr r1, [r1] + bl CopyBitsTo + mov r0, r4 + ldr r1, _02050734 ; =ADVENTURE_LOG_PTR + mov r2, #0xe + ldr r1, [r1] + add r1, r1, #0x2c + bl CopyBitsTo + mov r0, r4 + ldr r1, _02050734 ; =ADVENTURE_LOG_PTR + mov r2, #0xe + ldr r1, [r1] + add r1, r1, #0x30 + bl CopyBitsTo + mov r0, r4 + ldr r1, _02050734 ; =ADVENTURE_LOG_PTR + mov r2, #9 + ldr r1, [r1] + add r1, r1, #0x34 + bl CopyBitsTo + mov r0, r4 + ldr r1, _02050734 ; =ADVENTURE_LOG_PTR + mov r2, #0x14 + ldr r1, [r1] + add r1, r1, #0x28 + bl CopyBitsTo + mov r0, r4 + ldr r1, _02050734 ; =ADVENTURE_LOG_PTR + mov r2, #0x14 + ldr r1, [r1] + add r1, r1, #0x24 + bl CopyBitsTo + mov r0, r4 + ldr r1, _02050734 ; =ADVENTURE_LOG_PTR + mov r2, #0x14 + ldr r1, [r1] + add r1, r1, #0x1c + bl CopyBitsTo + mov r0, r4 + ldr r1, _02050734 ; =ADVENTURE_LOG_PTR + mov r2, #0x14 + ldr r1, [r1] + add r1, r1, #0x38 + bl CopyBitsTo + mov r0, r4 + ldr r1, _02050734 ; =ADVENTURE_LOG_PTR + mov r2, #0x14 + ldr r1, [r1] + add r1, r1, #0x3c + bl CopyBitsTo + mov r0, r4 + ldr r1, _02050734 ; =ADVENTURE_LOG_PTR + mov r2, #0x14 + ldr r1, [r1] + add r1, r1, #0x40 + bl CopyBitsTo + mov r0, r4 + ldr r1, _02050734 ; =ADVENTURE_LOG_PTR + mov r2, #0x4a0 + ldr r1, [r1] + add r1, r1, #0x44 + bl CopyBitsTo + mov r0, r4 + ldr r1, _02050734 ; =ADVENTURE_LOG_PTR + mov r2, #0x4a0 + ldr r1, [r1] + add r1, r1, #0xd8 + bl CopyBitsTo + ldr r1, _02050734 ; =ADVENTURE_LOG_PTR + mov r0, r4 + ldr r1, [r1] + mov r2, #0x220 + add r1, r1, #0x16c + bl CopyBitsTo + ldr r1, _02050734 ; =ADVENTURE_LOG_PTR + mov r0, r4 + ldr r1, [r1] + mov r2, #0x580 + add r1, r1, #0x1b0 + bl CopyBitsTo + ldr r1, _02050734 ; =ADVENTURE_LOG_PTR + mov r0, r4 + ldr r1, [r1] + mov r2, #0x20 + add r1, r1, #0x260 + bl CopyBitsTo + ldr r1, _02050734 ; =ADVENTURE_LOG_PTR + mov r0, r4 + ldr r1, [r1] + mov r2, #0xa0 + add r1, r1, #0x264 + bl CopyBitsTo + ldr r1, _02050734 ; =ADVENTURE_LOG_PTR + mov r0, r4 + ldr r1, [r1] + add r1, r1, #0x278 + bl Copy16BitsTo + ldmia sp!, {r4, pc} + .align 2, 0 +_02050734: .word ADVENTURE_LOG_PTR + arm_func_end CopyLogTo + + arm_func_start CopyLogFrom +CopyLogFrom: ; 0x02050738 + stmdb sp!, {r4, lr} + ldr r1, _02050918 ; =ADVENTURE_LOG_PTR + mov r2, #0x14 + ldr r1, [r1] + mov r4, r0 + add r1, r1, #0x10 + bl CopyBitsFrom + ldr r1, _02050918 ; =ADVENTURE_LOG_PTR + mov r0, r4 + ldr r1, [r1] + mov r2, #0x14 + add r1, r1, #0x14 + bl CopyBitsFrom + ldr r1, _02050918 ; =ADVENTURE_LOG_PTR + mov r0, r4 + ldr r1, [r1] + mov r2, #0x14 + add r1, r1, #0x18 + bl CopyBitsFrom + ldr r1, _02050918 ; =ADVENTURE_LOG_PTR + mov r0, r4 + ldr r1, [r1] + mov r2, #0x80 + bl CopyBitsFrom + ldr r1, _02050918 ; =ADVENTURE_LOG_PTR + mov r0, r4 + ldr r1, [r1] + mov r2, #0xe + add r1, r1, #0x2c + bl CopyBitsFrom + mov r0, r4 + ldr r1, _02050918 ; =ADVENTURE_LOG_PTR + mov r2, #0xe + ldr r1, [r1] + add r1, r1, #0x30 + bl CopyBitsFrom + mov r0, r4 + ldr r1, _02050918 ; =ADVENTURE_LOG_PTR + mov r2, #9 + ldr r1, [r1] + add r1, r1, #0x34 + bl CopyBitsFrom + mov r0, r4 + ldr r1, _02050918 ; =ADVENTURE_LOG_PTR + mov r2, #0x14 + ldr r1, [r1] + add r1, r1, #0x28 + bl CopyBitsFrom + mov r0, r4 + ldr r1, _02050918 ; =ADVENTURE_LOG_PTR + mov r2, #0x14 + ldr r1, [r1] + add r1, r1, #0x24 + bl CopyBitsFrom + mov r0, r4 + ldr r1, _02050918 ; =ADVENTURE_LOG_PTR + mov r2, #0x14 + ldr r1, [r1] + add r1, r1, #0x1c + bl CopyBitsFrom + mov r0, r4 + ldr r1, _02050918 ; =ADVENTURE_LOG_PTR + mov r2, #0x14 + ldr r1, [r1] + add r1, r1, #0x38 + bl CopyBitsFrom + mov r0, r4 + ldr r1, _02050918 ; =ADVENTURE_LOG_PTR + mov r2, #0x14 + ldr r1, [r1] + add r1, r1, #0x3c + bl CopyBitsFrom + mov r0, r4 + ldr r1, _02050918 ; =ADVENTURE_LOG_PTR + mov r2, #0x14 + ldr r1, [r1] + add r1, r1, #0x40 + bl CopyBitsFrom + mov r0, r4 + ldr r1, _02050918 ; =ADVENTURE_LOG_PTR + mov r2, #0x4a0 + ldr r1, [r1] + add r1, r1, #0x44 + bl CopyBitsFrom + mov r0, r4 + ldr r1, _02050918 ; =ADVENTURE_LOG_PTR + mov r2, #0x4a0 + ldr r1, [r1] + add r1, r1, #0xd8 + bl CopyBitsFrom + ldr r1, _02050918 ; =ADVENTURE_LOG_PTR + mov r0, r4 + ldr r1, [r1] + mov r2, #0x220 + add r1, r1, #0x16c + bl CopyBitsFrom + ldr r1, _02050918 ; =ADVENTURE_LOG_PTR + mov r0, r4 + ldr r1, [r1] + mov r2, #0x580 + add r1, r1, #0x1b0 + bl CopyBitsFrom + ldr r1, _02050918 ; =ADVENTURE_LOG_PTR + mov r0, r4 + ldr r1, [r1] + mov r2, #0x20 + add r1, r1, #0x260 + bl CopyBitsFrom + ldr r1, _02050918 ; =ADVENTURE_LOG_PTR + mov r0, r4 + ldr r1, [r1] + mov r2, #0xa0 + add r1, r1, #0x264 + bl CopyBitsFrom + ldr r1, _02050918 ; =ADVENTURE_LOG_PTR + mov r0, r4 + ldr r1, [r1] + add r1, r1, #0x278 + bl Copy16BitsFrom + ldmia sp!, {r4, pc} + .align 2, 0 +_02050918: .word ADVENTURE_LOG_PTR + arm_func_end CopyLogFrom + + arm_func_start GetAbilityString +GetAbilityString: ; 0x0205091C +#if defined(EUROPE) + add r1, r1, #0x5e0 + add r1, r1, #0x3000 +#elif defined(JAPAN) + add r1, r1, #0x81 + add r1, r1, #0x4800 +#else + add r1, r1, #0xde + add r1, r1, #0x3500 +#endif + mov r1, r1, lsl #0x10 + ldr ip, _02050938 ; =CopyNStringFromId + mov r1, r1, lsr #0x10 + mov r2, #0x50 + bx ip + .align 2, 0 +_02050938: .word CopyNStringFromId + arm_func_end GetAbilityString + + arm_func_start GetAbilityDescStringId +GetAbilityDescStringId: ; 0x0205093C +#if defined(EUROPE) + add r0, r0, #0x25c + add r0, r0, #0x3400 +#elif defined(JAPAN) + add r0, r0, #0xfd + add r0, r0, #0x4800 +#else + add r0, r0, #0x5a + add r0, r0, #0x3600 +#endif + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bx lr + arm_func_end GetAbilityDescStringId + + arm_func_start GetTypeStringId +GetTypeStringId: ; 0x02050950 +#if defined(EUROPE) + add r0, r0, #0xcd + add r0, r0, #0x3500 +#elif defined(JAPAN) + add r0, r0, #0x6e + add r0, r0, #0x4800 +#else + add r0, r0, #0xcb + add r0, r0, #0x3500 +#endif + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bx lr + arm_func_end GetTypeStringId + + arm_func_start GetConversion2ConvertToType +GetConversion2ConvertToType: ; 0x02050964 + ldr r1, _02050970 ; =CONVERSION2_TYPE_TABLE + ldrb r0, [r1, r0] + bx lr + .align 2, 0 +_02050970: .word CONVERSION2_TYPE_TABLE + arm_func_end GetConversion2ConvertToType + + arm_func_start InitBitstreamForWrite +InitBitstreamForWrite: ; 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 InitBitstreamForWrite + + arm_func_start InitBitstreamForRead +InitBitstreamForRead: ; 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 InitBitstreamForRead + + arm_func_start BitstreamDebug +BitstreamDebug: ; 0x020509BC + bx lr + arm_func_end BitstreamDebug + + arm_func_start CopyBitsTo +CopyBitsTo: ; 0x020509C0 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov ip, #0 + mov r3, #1 + mov r5, ip + mov r4, ip + b _02050A34 +_020509D8: + ldrb r6, [r1] + sub r2, r2, #1 + tst r6, r3, lsl ip + ldrne r7, [r0] + ldrne lr, [r0, #8] + ldrneb r6, [r7] + add ip, ip, #1 + orrne r6, r6, r3, lsl lr + strneb r6, [r7] + ldr lr, [r0, #8] + cmp ip, #8 + add lr, lr, #1 + moveq ip, r5 + addeq r1, r1, #1 + str lr, [r0, #8] + cmp lr, #8 + ldreq lr, [r0] + addeq lr, lr, #1 + streq lr, [r0] + streq r4, [r0, #8] + ldr lr, [r0, #0xc] + add lr, lr, #1 + str lr, [r0, #0xc] +_02050A34: + cmp r2, #0 + bne _020509D8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end CopyBitsTo + + arm_func_start CopyBitsFrom +CopyBitsFrom: ; 0x02050A40 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov lr, #0 + mov ip, lr + mov r3, #1 + mov r6, lr + mov r5, lr + b _02050AC0 +_02050A5C: + cmp lr, #0 + streqb ip, [r1] + ldr r7, [r0] + ldr r4, [r0, #8] + ldrb r7, [r7] + sub r2, r2, #1 + tst r7, r3, lsl r4 + ldrneb r4, [r1] + orrne r4, r4, r3, lsl lr + strneb r4, [r1] + ldr r4, [r0, #8] + add lr, lr, #1 + cmp lr, #8 + add r4, r4, #1 + moveq lr, r6 + addeq r1, r1, #1 + str r4, [r0, #8] + cmp r4, #8 + ldreq r4, [r0] + addeq r4, r4, #1 + streq r4, [r0] + streq r5, [r0, #8] + ldr r4, [r0, #0xc] + add r4, r4, #1 + str r4, [r0, #0xc] +_02050AC0: + cmp r2, #0 + bne _02050A5C + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end CopyBitsFrom + + arm_func_start StoreDefaultTeamData +StoreDefaultTeamData: ; 0x02050ACC + stmdb sp!, {lr} + sub sp, sp, #0x14 +#ifdef JAPAN + ldr r1, _02050E54 ; =0x000004C5 + add r0, sp, #0 +#else + add r0, sp, #0 + mov r1, #0x234 +#endif + bl GetStringFromFileVeneer + ldr r0, _02050B08 ; =TEAM_NAME + add r1, sp, #0 +#ifdef JAPAN + mov r2, #5 +#else + mov r2, #0xa +#endif + bl StrncpyName + ldr r0, _02050B0C ; =TEAM_NAME + mov r1, #0 +#ifdef JAPAN + str r1, [r0, #8] + strb r1, [r0, #0xc] +#else + str r1, [r0, #0xc] + strb r1, [r0, #0x10] +#endif + add sp, sp, #0x14 + ldmia sp!, {pc} + .align 2, 0 +#ifdef JAPAN +_02050E54: .word 0x000004C5 +#endif +_02050B08: .word TEAM_NAME +_02050B0C: .word TEAM_NAME + arm_func_end StoreDefaultTeamData + + arm_func_start GetMainTeamNameWithCheck +GetMainTeamNameWithCheck: ; 0x02050B10 + stmdb sp!, {r4, lr} + sub sp, sp, #0x40 + mov r4, r0 + mov r0, #1 + bl GetResolvedPerformanceProgressFlag + cmp r0, #0 + ldrne r0, _02050B70 ; =TEAM_NAME + ldrneb r0, [r0] + cmpne r0, #0 + beq _02050B4C + ldr r1, _02050B74 ; =TEAM_NAME + mov r0, r4 +#ifdef JAPAN + mov r2, #5 +#else + mov r2, #0xa +#endif + bl StrncpySimpleNoPad + b _02050B68 +_02050B4C: + ldr r1, _02050B78 ; =0x00000237 + add r0, sp, #0 + bl GetStringFromFileVeneer + add r1, sp, #0 + mov r0, r4 +#ifdef JAPAN + mov r2, #5 +#else + mov r2, #0xa +#endif + bl StrncpyName +_02050B68: + add sp, sp, #0x40 + ldmia sp!, {r4, pc} + .align 2, 0 +_02050B70: .word TEAM_NAME +_02050B74: .word TEAM_NAME +#ifdef JAPAN +_02050B78: .word 0x000004C8 +#else +_02050B78: .word 0x00000237 +#endif + arm_func_end GetMainTeamNameWithCheck + + arm_func_start GetMainTeamName +GetMainTeamName: ; 0x02050B7C + ldr ip, _02050B8C ; =StrncpySimpleNoPadSafe + ldr r1, _02050B90 ; =TEAM_NAME +#ifdef JAPAN + mov r2, #5 +#else + mov r2, #0xa +#endif + bx ip + .align 2, 0 +_02050B8C: .word StrncpySimpleNoPadSafe +_02050B90: .word TEAM_NAME + arm_func_end GetMainTeamName + + arm_func_start SetMainTeamName +SetMainTeamName: ; 0x02050B94 + ldr r1, _02050BB4 ; =TEAM_NAME + mov r3, #0 +_02050B9C: + ldrb r2, [r0], #1 + strb r2, [r1, r3] + add r3, r3, #1 +#ifdef JAPAN + cmp r3, #5 +#else + cmp r3, #0xa +#endif + blt _02050B9C + bx lr + .align 2, 0 +_02050BB4: .word TEAM_NAME + arm_func_end SetMainTeamName + + arm_func_start GetRankupPoints +GetRankupPoints: ; 0x02050BB8 + stmdb sp!, {r4, lr} + bl GetRank + mov r4, r0 + mov r0, #0x16 + bl GetResolvedPerformanceProgressFlag + cmp r0, #0 + beq _02050BE4 + cmp r4, #0xc + bne _02050BF0 + mov r0, #0 + ldmia sp!, {r4, pc} +_02050BE4: + cmp r4, #8 + movhs r0, #0 + ldmhsia sp!, {r4, pc} +_02050BF0: + mov r0, r4 + bl GetRankUpEntry + ldr r1, _02050C0C ; =TEAM_NAME + ldr r2, [r0, #4] +#ifdef JAPAN + ldr r0, [r1, #8] +#else + ldr r0, [r1, #0xc] +#endif + sub r0, r2, r0 + ldmia sp!, {r4, pc} + .align 2, 0 +_02050C0C: .word TEAM_NAME + arm_func_end GetRankupPoints + + arm_func_start sub_02050C10 +sub_02050C10: ; 0x02050C10 +#ifdef JAPAN +#define SUB_02050C10_OFFSET #8 +#else +#define SUB_02050C10_OFFSET #0xc +#endif + stmdb sp!, {r3, lr} + ldr r1, _02050C6C ; =TEAM_NAME + ldr r2, [r1, SUB_02050C10_OFFSET] + add r2, r2, r0 + mov r0, #0x16 + str r2, [r1, SUB_02050C10_OFFSET] + bl GetResolvedPerformanceProgressFlag + cmp r0, #0 + beq _02050C4C + ldr r0, _02050C6C ; =TEAM_NAME + ldr r1, _02050C70 ; =0x05F5E0FF + ldr r2, [r0, SUB_02050C10_OFFSET] + cmp r2, r1 + strgt r1, [r0, SUB_02050C10_OFFSET] + ldmia sp!, {r3, pc} +_02050C4C: + mov r0, #7 + bl GetRankUpEntry + ldr r1, _02050C6C ; =TEAM_NAME + ldr r2, [r0, #4] + ldr r0, [r1, SUB_02050C10_OFFSET] + cmp r0, r2 + strgt r2, [r1, SUB_02050C10_OFFSET] + ldmia sp!, {r3, pc} + .align 2, 0 +_02050C6C: .word TEAM_NAME +_02050C70: .word 0x05F5E0FF + arm_func_end sub_02050C10 + + arm_func_start GetRank +GetRank: ; 0x02050C74 + stmdb sp!, {r3, r4, r5, lr} + mov r5, #0 + ldr r4, _02050CCC ; =TEAM_NAME + b _02050CA4 +_02050C84: + mov r0, r5 + bl GetRankUpEntry +#ifdef JAPAN + ldr r1, [r4, #8] +#else + ldr r1, [r4, #0xc] +#endif + ldr r0, [r0, #4] + cmp r1, r0 + blt _02050CAC + add r0, r5, #1 + and r5, r0, #0xff +_02050CA4: + cmp r5, #0xc + blo _02050C84 +_02050CAC: + mov r0, #0x16 + bl GetResolvedPerformanceProgressFlag + cmp r0, #0 + bne _02050CC4 + cmp r5, #8 + movhi r5, #8 +_02050CC4: + mov r0, r5 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02050CCC: .word TEAM_NAME + arm_func_end GetRank + + arm_func_start sub_02050CD0 +sub_02050CD0: ; 0x02050CD0 + stmdb sp!, {r3, lr} + bl GetRank + cmp r0, #8 + movhi r0, #8 + ldmia sp!, {r3, pc} + arm_func_end sub_02050CD0 + + arm_func_start GetRankStorageSize +GetRankStorageSize: ; 0x02050CE4 + stmdb sp!, {r3, lr} + bl GetRank + bl GetRankUpEntry + ldr r0, [r0, #8] + ldmia sp!, {r3, pc} + arm_func_end GetRankStorageSize + + arm_func_start sub_02050CF8 +sub_02050CF8: ; 0x02050CF8 + stmdb sp!, {r3, lr} + sub sp, sp, #0x10 + mov r3, r0 + mov r2, r1 + add r0, sp, #0 + mov r1, r3 + bl InitBitstreamForRead + ldr r1, _02050D70 ; =TEAM_NAME + add r0, sp, #0 +#ifdef JAPAN + mov r2, #0x28 +#else + mov r2, #0x50 +#endif + bl CopyBitsTo + ldr r1, _02050D74 ; =_022AB924 + add r0, sp, #0 + mov r2, #0x20 + bl CopyBitsTo + mov r0, #1 + bl GetResolvedPerformanceProgressFlag + ldr r1, _02050D78 ; =TEAM_NAME + tst r0, #0xff +#ifdef JAPAN + strb r0, [r1, #0xc] +#else + strb r0, [r1, #0x10] +#endif + ldrne r1, _02050D7C ; =ARM9_UNKNOWN_DATA__NA_209E6BC + add r0, sp, #0 + ldreq r1, _02050D80 ; =_0209E6BD + mov r2, #1 + bl CopyBitsTo + add r0, sp, #0 + bl BitstreamDebug + 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 InitBitstreamForWrite + 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 BitstreamDebug + 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/adventure_log.h b/include/adventure_log.h index 0ae0f5bf..336b51d2 100644 --- a/include/adventure_log.h +++ b/include/adventure_log.h @@ -29,4 +29,7 @@ struct adventure_log { u16 padding; // 0x27A }; +extern struct adventure_log* ADVENTURE_LOG_PTR; +extern struct adventure_log _022AB69C; + #endif //PMDSKY_ADVENTURE_LOG_H diff --git a/include/main_0204FA24.h b/include/main_0204FA24.h new file mode 100644 index 00000000..285fb17e --- /dev/null +++ b/include/main_0204FA24.h @@ -0,0 +1,11 @@ +#ifndef PMDSKY_MAIN_0204FA24_H +#define PMDSKY_MAIN_0204FA24_H + +#include "adventure_log.h" +#include "util.h" + +void SetAdventureLogStructLocation(void); +void SetAdventureLogDungeonFloor(struct dungeon_floor_pair* floor); +struct dungeon_floor_pair* GetAdventureLogDungeonFloor(void); + +#endif diff --git a/include/main_0204FB9C.h b/include/main_0204FB9C.h new file mode 100644 index 00000000..87e6d230 --- /dev/null +++ b/include/main_0204FB9C.h @@ -0,0 +1,17 @@ +#ifndef PMDSKY_MAIN_0204FB9C_H +#define PMDSKY_MAIN_0204FB9C_H + +#include "adventure_log.h" +#include "util.h" + +void SetAdventureLogCompleted(s32 id); +s32 IsAdventureLogNotEmpty(void); +bool8 GetAdventureLogCompleted(s32 id); +void IncrementNbDungeonsCleared(void); +u32 GetNbDungeonsCleared(void); +void IncrementNbFriendRescues(void); +u32 GetNbFriendRescues(void); +void IncrementNbEvolutions(void); +u32 GetNbEvolutions(void); + +#endif diff --git a/include/main_0204FD3C.h b/include/main_0204FD3C.h new file mode 100644 index 00000000..5b203386 --- /dev/null +++ b/include/main_0204FD3C.h @@ -0,0 +1,14 @@ +#ifndef PMDSKY_MAIN_0204FD3C_H +#define PMDSKY_MAIN_0204FD3C_H + +#include "adventure_log.h" +#include "util.h" + +void IncrementNbEggsHatched(void); +u32 GetNbEggsHatched(void); +u32 GetNbPokemonJoined(void); +u32 GetNbMovesLearned(void); +void SetVictoriesOnOneFloor(s32 value); +u32 GetVictoriesOnOneFloor(void); + +#endif diff --git a/include/main_0204FEB4.h b/include/main_0204FEB4.h new file mode 100644 index 00000000..7672ded4 --- /dev/null +++ b/include/main_0204FEB4.h @@ -0,0 +1,17 @@ +#ifndef PMDSKY_MAIN_0204FEB4_H +#define PMDSKY_MAIN_0204FEB4_H + +#include "adventure_log.h" +#include "util.h" + +u32 GetNbPokemonBattled(void); +void IncrementNbBigTreasureWins(void); +void SetNbBigTreasureWins(s32 value); +u32 GetNbBigTreasureWins(void); +void SetNbRecycled(s32 value); +u32 GetNbRecycled(void); +void IncrementNbSkyGiftsSent(void); +void SetNbSkyGiftsSent(s32 value); +u32 GetNbSkyGiftsSent(void); + +#endif diff --git a/include/main_020502B0.h b/include/main_020502B0.h new file mode 100644 index 00000000..83e15be9 --- /dev/null +++ b/include/main_020502B0.h @@ -0,0 +1,10 @@ +#ifndef PMDSKY_MAIN_020502B0_H +#define PMDSKY_MAIN_020502B0_H + +#include "adventure_log.h" +#include "util.h" + +void IncrementNbFainted(void); +u32 GetNbFainted(void); + +#endif diff --git a/include/main_020504A4.h b/include/main_020504A4.h new file mode 100644 index 00000000..dc871d1f --- /dev/null +++ b/include/main_020504A4.h @@ -0,0 +1,9 @@ +#ifndef PMDSKY_MAIN_020504A4_H +#define PMDSKY_MAIN_020504A4_H + +#include "adventure_log.h" +#include "util.h" + +u32 GetSentryDutyGamePoints(s32 index); + +#endif diff --git a/main.lsf b/main.lsf index 01ea5a6c..8ce0997d 100644 --- a/main.lsf +++ b/main.lsf @@ -243,8 +243,19 @@ Static main Object src/dungeon_init.o Object src/main_0204F050.o Object asm/main_0204F0A0.o + Object src/main_0204FA24.o + Object asm/main_0204FA70.o + Object src/main_0204FB9C.o + Object asm/main_0204FD38.o + Object src/main_0204FD3C.o Object src/main_0204FDFC.o Object asm/main_0204FE58.o + Object src/main_0204FEB4.o + Object asm/main_0204FFEC.o + Object src/main_020502B0.o + Object asm/main_02050300.o + Object src/main_020504A4.o + Object asm/main_020504BC.o Object src/number_util.o Object asm/main_02051098.o Object src/dungeon_recruitment_2.o diff --git a/src/main_0204FA24.c b/src/main_0204FA24.c new file mode 100644 index 00000000..6fcef6e9 --- /dev/null +++ b/src/main_0204FA24.c @@ -0,0 +1,17 @@ +#include "main_0204FA24.h" +#include "adventure_log.h" + +void SetAdventureLogStructLocation(void) +{ + ADVENTURE_LOG_PTR = &_022AB69C; +} + +void SetAdventureLogDungeonFloor(struct dungeon_floor_pair *floor) +{ + ADVENTURE_LOG_PTR->current_floor = *floor; +} + +struct dungeon_floor_pair* GetAdventureLogDungeonFloor(void) +{ + return &ADVENTURE_LOG_PTR->current_floor; +} diff --git a/src/main_0204FB9C.c b/src/main_0204FB9C.c new file mode 100644 index 00000000..c316952d --- /dev/null +++ b/src/main_0204FB9C.c @@ -0,0 +1,67 @@ +#include "main_0204FB9C.h" +#include "adventure_log.h" + +void SetAdventureLogCompleted(s32 id) +{ + ADVENTURE_LOG_PTR->completion_flags[id >> 5] |= 1 << (id & 0x1F); +} + +s32 IsAdventureLogNotEmpty(void) +{ + s32 i; + struct adventure_log *log = ADVENTURE_LOG_PTR; + + for (i = 0; i < 4; i++) { + if (log->completion_flags[i] != 0) { + return 1; + } + } + return 0; +} + +bool8 GetAdventureLogCompleted(s32 id) +{ + return (ADVENTURE_LOG_PTR->completion_flags[id >> 5] & (1 << (id & 0x1F))) != 0; +} + +void IncrementNbDungeonsCleared(void) +{ + ADVENTURE_LOG_PTR->nb_dungeons_cleared++; + ADVENTURE_LOG_PTR->completion_flags[0] |= 0x10; + if ((s32) ADVENTURE_LOG_PTR->nb_dungeons_cleared > 999999) { + ADVENTURE_LOG_PTR->nb_dungeons_cleared = 999999; + } +} + +u32 GetNbDungeonsCleared(void) +{ + return ADVENTURE_LOG_PTR->nb_dungeons_cleared; +} + +void IncrementNbFriendRescues(void) +{ + ADVENTURE_LOG_PTR->nb_friend_rescues++; + if ((s32) ADVENTURE_LOG_PTR->nb_friend_rescues > 999999) { + ADVENTURE_LOG_PTR->nb_friend_rescues = 999999; + } + ADVENTURE_LOG_PTR->completion_flags[0] |= 0x40; +} + +u32 GetNbFriendRescues(void) +{ + return ADVENTURE_LOG_PTR->nb_friend_rescues; +} + +void IncrementNbEvolutions(void) +{ + ADVENTURE_LOG_PTR->nb_evolutions++; + if ((s32) ADVENTURE_LOG_PTR->nb_evolutions > 999999) { + ADVENTURE_LOG_PTR->nb_evolutions = 999999; + } + ADVENTURE_LOG_PTR->completion_flags[0] |= 0x80; +} + +u32 GetNbEvolutions(void) +{ + return ADVENTURE_LOG_PTR->nb_evolutions; +} diff --git a/src/main_0204FD3C.c b/src/main_0204FD3C.c new file mode 100644 index 00000000..7c367b08 --- /dev/null +++ b/src/main_0204FD3C.c @@ -0,0 +1,39 @@ +#include "main_0204FD3C.h" +#include "adventure_log.h" + +void IncrementNbEggsHatched(void) +{ + if ((s32) ADVENTURE_LOG_PTR->nb_eggs_hatched < 999999) { + ADVENTURE_LOG_PTR->nb_eggs_hatched++; + } + ADVENTURE_LOG_PTR->completion_flags[0] |= 0x100; +} + +u32 GetNbEggsHatched(void) +{ + return ADVENTURE_LOG_PTR->nb_eggs_hatched; +} + +u32 GetNbPokemonJoined(void) +{ + return ADVENTURE_LOG_PTR->pokemon_joined_counter; +} + +u32 GetNbMovesLearned(void) +{ + return ADVENTURE_LOG_PTR->moves_learned_counter; +} + +void SetVictoriesOnOneFloor(s32 value) +{ + if (value > 999999) { + value = 999999; + } + ADVENTURE_LOG_PTR->nb_victories_on_one_floor = value; + ADVENTURE_LOG_PTR->completion_flags[0] |= 0x200; +} + +u32 GetVictoriesOnOneFloor(void) +{ + return ADVENTURE_LOG_PTR->nb_victories_on_one_floor; +} diff --git a/src/main_0204FDFC.c b/src/main_0204FDFC.c index b1ef50a8..801cf673 100644 --- a/src/main_0204FDFC.c +++ b/src/main_0204FDFC.c @@ -1,8 +1,6 @@ #include "main_0204FDFC.h" #include "adventure_log.h" -extern struct adventure_log* ADVENTURE_LOG_PTR; - extern s32 GetDexNumberVeneer(); void SetPokemonJoined(u32 monster_id) diff --git a/src/main_0204FEB4.c b/src/main_0204FEB4.c new file mode 100644 index 00000000..c9a2bb8a --- /dev/null +++ b/src/main_0204FEB4.c @@ -0,0 +1,59 @@ +#include "main_0204FEB4.h" +#include "adventure_log.h" + +u32 GetNbPokemonBattled(void) +{ + return ADVENTURE_LOG_PTR->pokemon_battled_counter; +} + +void IncrementNbBigTreasureWins(void) +{ + SetNbBigTreasureWins(ADVENTURE_LOG_PTR->nb_big_treasure_wins + 1); +} + +void SetNbBigTreasureWins(s32 value) +{ + ADVENTURE_LOG_PTR->completion_flags[0] |= 0x400; + if (value > 999999) { + value = 999999; + } + ADVENTURE_LOG_PTR->nb_big_treasure_wins = value; +} + +u32 GetNbBigTreasureWins(void) +{ + return ADVENTURE_LOG_PTR->nb_big_treasure_wins; +} + +void SetNbRecycled(s32 value) +{ + ADVENTURE_LOG_PTR->completion_flags[0] |= 0x800; + if (value > 999999) { + value = 999999; + } + ADVENTURE_LOG_PTR->nb_recycled = value; +} + +u32 GetNbRecycled(void) +{ + return ADVENTURE_LOG_PTR->nb_recycled; +} + +void IncrementNbSkyGiftsSent(void) +{ + SetNbSkyGiftsSent(ADVENTURE_LOG_PTR->nb_gifts_sent + 1); +} + +void SetNbSkyGiftsSent(s32 value) +{ + ADVENTURE_LOG_PTR->completion_flags[0] |= 0x1000; + if (value > 999999) { + value = 999999; + } + ADVENTURE_LOG_PTR->nb_gifts_sent = value; +} + +u32 GetNbSkyGiftsSent(void) +{ + return ADVENTURE_LOG_PTR->nb_gifts_sent; +} diff --git a/src/main_020502B0.c b/src/main_020502B0.c new file mode 100644 index 00000000..a86ad84f --- /dev/null +++ b/src/main_020502B0.c @@ -0,0 +1,15 @@ +#include "main_020502B0.h" +#include "adventure_log.h" + +void IncrementNbFainted(void) +{ + if ((s32) ADVENTURE_LOG_PTR->nb_faints < 999999) { + ADVENTURE_LOG_PTR->nb_faints++; + } + ADVENTURE_LOG_PTR->completion_flags[0] |= 0x20; +} + +u32 GetNbFainted(void) +{ + return ADVENTURE_LOG_PTR->nb_faints; +} diff --git a/src/main_020504A4.c b/src/main_020504A4.c new file mode 100644 index 00000000..c0f52d85 --- /dev/null +++ b/src/main_020504A4.c @@ -0,0 +1,7 @@ +#include "main_020504A4.h" +#include "adventure_log.h" + +u32 GetSentryDutyGamePoints(s32 index) +{ + return ADVENTURE_LOG_PTR->sentry_duty_game_points[index]; +}