diff --git a/asm/include/main_02052A7C.inc b/asm/include/main_02052A7C.inc index 213ac5de..6fbbf6a1 100644 --- a/asm/include/main_02052A7C.inc +++ b/asm/include/main_02052A7C.inc @@ -1,88 +1,3 @@ #pragma once -.public _020A1880 -.public _020A1884 -.public _020A189C -.public _020A18C0 -.public _020A3210 -.public _020A322C -.public _020A3248 -.public _020A3258 -.public _020A327C -.public _020A328C -.public _020A32D4 -.public _020A32F8 -.public _020A3330 -.public _020B09C8 -.public _020B09D0 -.public _020B12F4_EU -.public _020B1308_EU -.public _s32_div_f -.public Debug_Print0 -.public DecompressAtNormalVeneer -.public DexNumbersEqual -.public DirectoryFileMngr_OpenDirectoryFile -.public DungeonToGroundMoveset -.public EnableAllLearnableIqSkills -.public FemaleToMaleForm -.public FORBIDDEN_FORGOT_MOVE_LIST -.public GetBaseDefensiveStat -.public GetBaseHp -.public GetBaseOffensiveStat -.public GetDexNumber -.public GetInfoGroundMoveset -.public GetInfoMoveGround -.public GetKeyM2NSwitch -.public GetKeyN2MSwitch -.public GetLanguage -.public GetMonsterGender -.public GetMonsterPreEvolution -.public GetMovesetEggPtr -.public GetMovesetHmTmPtr -.public GetMovesetIdx__02013CAC -.public GetMovesetLevelUpPtr -.public GetNameRaw -.public GetNameString -.public GetNbMoves -.public GetSpriteSize -.public GroundToDungeonMoveset -.public HandleSir0Translation -.public HIDDEN_POWER_BASE_POWER_TABLE -.public IsShaymin -.public IsValidTeamMember -.public ItemZInit -.public LEVEL_UP_DATA_DECOMPRESS_BUFFER -.public LEVEL_UP_DATA_MONSTER_ID -.public LoadFileFromRom -.public LoadMonsterMd -.public MemAlloc -.public MemFree .public MONSTER_DATA_TABLE_PTR -.public PointsToZero -.public Rand16Bit -.public RandIntSafe -.public RemoveActiveMembersFromAllTeams -.public RemoveActiveMembersFromRescueTeam -.public RemoveActiveMembersFromSpecialEpisodeTeam -.public SprintfStatic__02052418 -.public StrcpyName -.public StrncmpSimple -.public StrncpyName -.public StrncpySimple -.public sub_01FF8F28 -.public sub_02015090 -.public sub_02025304_JP -.public sub_02050FF8 -.public sub_02054FB8 -.public sub_02054FEC -.public sub_02055020 -.public sub_020550DC -.public sub_020550E0 -.public sub_02055118 -.public sub_020560B8 -.public sub_020564B0 -.public sub_02056504 -.public TEAM_MEMBER_TABLE -.public TEAM_MEMBER_TABLE_PTR -.public UnloadFile -.public vsprintf -.public ZInit8 +.public _s32_div_f diff --git a/asm/include/main_02052B44.inc b/asm/include/main_02052B44.inc new file mode 100644 index 00000000..21794d85 --- /dev/null +++ b/asm/include/main_02052B44.inc @@ -0,0 +1,88 @@ +#pragma once +.public Debug_Print0 +.public DecompressAtNormalVeneer +.public DexNumbersEqual +.public DirectoryFileMngr_OpenDirectoryFile +.public DungeonToGroundMoveset +.public EnableAllLearnableIqSkills +.public FORBIDDEN_FORGOT_MOVE_LIST +.public FemaleToMaleForm +.public GetBaseDefensiveStat +.public GetBaseHp +.public GetBaseOffensiveStat +.public GetDexNumber +.public GetInfoGroundMoveset +.public GetInfoMoveGround +.public GetKeyM2NSwitch +.public GetKeyN2MSwitch +.public GetLanguage +.public GetMonsterGender +.public GetMonsterPreEvolution +.public GetMovesetEggPtr +.public GetMovesetHmTmPtr +.public GetMovesetIdx__02013CAC +.public GetMovesetLevelUpPtr +.public GetNameRaw +.public GetNameString +.public GetNbMoves +.public GetSpriteSize +.public GroundToDungeonMoveset +.public HIDDEN_POWER_BASE_POWER_TABLE +.public HandleSir0Translation +.public IsShaymin +.public IsValidTeamMember +.public ItemZInit +.public LEVEL_UP_DATA_DECOMPRESS_BUFFER +.public LEVEL_UP_DATA_MONSTER_ID +.public LoadFileFromRom +.public LoadMonsterMd +.public MONSTER_DATA_TABLE_PTR +.public MemAlloc +.public MemFree +.public PointsToZero +.public Rand16Bit +.public RandIntSafe +.public RemoveActiveMembersFromAllTeams +.public RemoveActiveMembersFromRescueTeam +.public RemoveActiveMembersFromSpecialEpisodeTeam +.public SprintfStatic__02052418 +.public StrcpyName +.public StrncmpSimple +.public StrncpyName +.public StrncpySimple +.public TEAM_MEMBER_TABLE +.public TEAM_MEMBER_TABLE_PTR +.public UnloadFile +.public ZInit8 +.public _020A1880 +.public _020A1884 +.public _020A189C +.public _020A18C0 +.public _020A3210 +.public _020A322C +.public _020A3248 +.public _020A3258 +.public _020A327C +.public _020A328C +.public _020A32D4 +.public _020A32F8 +.public _020A3330 +.public _020B09C8 +.public _020B09D0 +.public _020B12F4_EU +.public _020B1308_EU +.public _s32_div_f +.public sub_01FF8F28 +.public sub_02015090 +.public sub_02025304_JP +.public sub_02050FF8 +.public sub_02054FB8 +.public sub_02054FEC +.public sub_02055020 +.public sub_020550DC +.public sub_020550E0 +.public sub_02055118 +.public sub_020560B8 +.public sub_020564B0 +.public sub_02056504 +.public vsprintf diff --git a/asm/include/main_02058C4C.inc b/asm/include/main_02058C4C.inc index 2cdc8a7e..ccf8ec4d 100644 --- a/asm/include/main_02058C4C.inc +++ b/asm/include/main_02058C4C.inc @@ -1,8 +1,2 @@ #pragma once -.public GetIqGroup -.public GetPerformanceFlagWithChecks -.public IQ_GROUP_SKILLS -.public IQ_SKILL_RESTRICTIONS -.public IQ_SKILLS -.public IqSkillFlagTest .public TACTICS_UNLOCK_LEVEL_TABLE diff --git a/asm/include/main_02058D04.inc b/asm/include/main_02058D04.inc new file mode 100644 index 00000000..77639576 --- /dev/null +++ b/asm/include/main_02058D04.inc @@ -0,0 +1,7 @@ +#pragma once +.public CanLearnIqSkill +.public GetIqGroup +.public GetPerformanceFlagWithChecks +.public IQ_GROUP_SKILLS +.public IQ_SKILL_RESTRICTIONS +.public IqSkillFlagTest diff --git a/asm/include/main_02058E8C.inc b/asm/include/main_02058E8C.inc new file mode 100644 index 00000000..17dc6634 --- /dev/null +++ b/asm/include/main_02058E8C.inc @@ -0,0 +1,3 @@ +#pragma once +.public EnableIqSkill +.public GetLearnableIqSkills diff --git a/asm/include/main_rodata_0209CECC.inc b/asm/include/main_rodata_0209CECC.inc new file mode 100644 index 00000000..ffbc56b2 --- /dev/null +++ b/asm/include/main_rodata_0209CECC.inc @@ -0,0 +1,220 @@ +#pragma once +.public ARM9_UNKNOWN_DATA__NA_209EAAC +.public MISSION_FLOOR_RANKS_AND_ITEM_LISTS_1 +.public _0209CE8C +.public _0209CE94 +.public _0209CE9C +.public _0209CEA4 +.public _0209CFA4 +.public _0209CFA8 +.public _0209CFB0 +.public _0209CFBC +.public _0209CFC8 +.public _0209CFD4 +.public _0209CFE0 +.public _0209CFEC +.public _0209CFF8 +.public _0209D004 +.public _0209D010 +.public _0209D01C +.public _0209D028 +.public _0209D034 +.public _0209D040 +.public _0209D04C +.public _0209D058 +.public _0209D068 +.public _0209D078 +.public _0209D088 +.public _0209D098 +.public _0209D0A8 +.public _0209D0B8 +.public _0209D0C8 +.public _0209D0D8 +.public _0209D0E8 +.public _0209D0F8 +.public _0209D108 +.public _0209D118 +.public _0209D128 +.public _0209D138 +.public _0209D148 +.public _0209D158 +.public _0209D168 +.public _0209D178 +.public _0209D188 +.public _0209D198 +.public _0209D1A8 +.public _0209D1B8 +.public _0209D1C8 +.public _0209D1D8 +.public _0209D1E8 +.public _0209D1F8 +.public _0209D208 +.public _0209D218 +.public _0209D228 +.public _0209D238 +.public _0209D248 +.public _0209D258 +.public _0209D268 +.public _0209D27C +.public _0209D290 +.public _0209D2A4 +.public _0209D2B8 +.public _0209D2CC +.public _0209D2E0 +.public _0209D2F4 +.public _0209D308 +.public _0209D31C +.public _0209D330 +.public _0209D344 +.public _0209D358 +.public _0209D36C +.public _0209D380 +.public _0209D394 +.public _0209D3A8 +.public _0209D3BC +.public _0209D3D0 +.public _0209D3E4 +.public _0209D3F8 +.public _0209D40C +.public _0209D420 +.public _0209D434 +.public _0209D448 +.public _0209D45C +.public _0209D470 +.public _0209D484 +.public _0209D498 +.public _0209D4AC +.public _0209D4C0 +.public _0209D4D8 +.public _0209D4F0 +.public _0209D508 +.public _0209D520 +.public _0209D538 +.public _0209D550 +.public _0209D568 +.public _0209D580 +.public _0209D598 +.public _0209D5B0 +.public _0209D5C8 +.public _0209D5E0 +.public _0209D5F8 +.public _0209D610 +.public _0209D628 +.public _0209D640 +.public _0209D658 +.public _0209D670 +.public _0209D688 +.public _0209D6A0 +.public _0209D6BC +.public _0209D6D8 +.public _0209D6F4 +.public _0209D710 +.public _0209D72C +.public _0209D748 +.public _0209D764 +.public _0209D780 +.public _0209D79C +.public _0209D7B8 +.public _0209D7D4 +.public _0209D7F0 +.public _0209D810 +.public _0209D830 +.public _0209D850 +.public _0209EAB4 +.public _0209EABC +.public _0209EAC4 +.public _0209EACC +.public _0209EAD4 +.public _0209EADC +.public _0209EAE4 +.public _0209EAEC +.public _0209EAF4 +.public _0209EAFC +.public _0209EB04 +.public _0209EB0C +.public _0209EB14 +.public _0209EB1C +.public _0209EB24 +.public _0209EB2C +.public _0209EB34 +.public _0209EB3C +.public _0209EB44 +.public _0209EB4C +.public _0209EB54 +.public _0209EB60 +.public _0209EB6C +.public _0209EB78 +.public _0209EB84 +.public _0209EB90 +.public _0209EB9C +.public _0209EBA8 +.public _0209EBB4 +.public _0209EBC0 +.public _0209EBCC +.public _0209EBD8 +.public _0209EBE4 +.public _0209EBF0 +.public _0209EBFC +.public _0209EC08 +.public _0209EC14 +.public _0209EC20 +.public _0209EC2C +.public _0209EC38 +.public _0209EC48 +.public _0209EC58 +.public _0209EC68 +.public _0209EC78 +.public _0209EC88 +.public _0209EC98 +.public _0209ECA8 +.public _0209ECB8 +.public _0209ECC8 +.public _0209ECD8 +.public _0209ECE8 +.public _0209ECF8 +.public _0209ED08 +.public _0209ED18 +.public _0209ED2C +.public _0209ED40 +.public _0209ED54 +.public _0209ED68 +.public _0209ED7C +.public _0209ED90 +.public _0209EDA4 +.public _0209EDB8 +.public _0209EDCC +.public _0209EDE0 +.public _0209EDF4 +.public _0209EE0C +.public _0209EE24 +.public _0209EE3C +.public _0209EE54 +.public _0209EE6C +.public _0209EE84 +.public _0209EE9C +.public _0209EEB4 +.public _0209EECC +.public _0209EEE4 +.public _0209EEFC +.public _0209EF14 +.public _0209EF2C +.public _0209EF48 +.public _0209EF64 +.public _0209EF80 +.public _0209EF9C +.public _0209EFB8 +.public _0209EFD4 +.public _0209EFF4 +.public _0209F014 +.public _0209F034 +.public _0209F054 +.public _0209F074 +.public _0209F0A0 +.public _0209F0CC +.public _0209F0F8 +.public _0209F12C +.public _0209F160 +.public _0209F1D4 +.public _0209F330 +.public _0209F394 +.public _0209F3F8 diff --git a/asm/include/main_rodata_020A1894.inc b/asm/include/main_rodata_020A1894.inc new file mode 100644 index 00000000..6f70f09b --- /dev/null +++ b/asm/include/main_rodata_020A1894.inc @@ -0,0 +1 @@ +#pragma once diff --git a/asm/include/main_rodata_020A18BC.inc b/asm/include/main_rodata_020A18BC.inc new file mode 100644 index 00000000..6f70f09b --- /dev/null +++ b/asm/include/main_rodata_020A18BC.inc @@ -0,0 +1 @@ +#pragma once diff --git a/asm/include/main_rodata_020A1BB0.inc b/asm/include/main_rodata_020A1BB0.inc index 3f59c932..6f70f09b 100644 --- a/asm/include/main_rodata_020A1BB0.inc +++ b/asm/include/main_rodata_020A1BB0.inc @@ -1,2 +1 @@ #pragma once - diff --git a/asm/include/main_rodata_020A20B1.inc b/asm/include/main_rodata_020A20B1.inc new file mode 100644 index 00000000..6f70f09b --- /dev/null +++ b/asm/include/main_rodata_020A20B1.inc @@ -0,0 +1 @@ +#pragma once diff --git a/asm/main_02052A7C.s b/asm/main_02052A7C.s index 9bb25301..dc7ba50b 100644 --- a/asm/main_02052A7C.s +++ b/asm/main_02052A7C.s @@ -62,2462 +62,3 @@ _02052AF4: .align 2, 0 _02052B24: .word MONSTER_DATA_TABLE_PTR arm_func_end GetTreasureBoxChances - - arm_func_start GetIqGroup -GetIqGroup: ; 0x02052B28 - ldr r2, _02052B40 ; =MONSTER_DATA_TABLE_PTR - mov r1, #0x44 - ldr r2, [r2] - smlabb r0, r0, r1, r2 - ldrb r0, [r0, #0x17] - bx lr - .align 2, 0 -_02052B40: .word MONSTER_DATA_TABLE_PTR - arm_func_end GetIqGroup - - arm_func_start GetSpawnThreshold -GetSpawnThreshold: ; 0x02052B44 - ldr r2, _02052B5C ; =MONSTER_DATA_TABLE_PTR - mov r1, #0x44 - ldr r2, [r2] - smlabb r0, r0, r1, r2 - ldrb r0, [r0, #0x31] - bx lr - .align 2, 0 -_02052B5C: .word MONSTER_DATA_TABLE_PTR - arm_func_end GetSpawnThreshold - - arm_func_start NeedsItemToSpawn -NeedsItemToSpawn: ; 0x02052B60 - ldr r2, _02052B88 ; =MONSTER_DATA_TABLE_PTR - mov r1, #0x44 - ldr r2, [r2] - smlabb r0, r0, r1, r2 - ldrb r0, [r0, #0x1a] - tst r0, #0x80 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_02052B88: .word MONSTER_DATA_TABLE_PTR - arm_func_end NeedsItemToSpawn - - arm_func_start GetExclusiveItem -GetExclusiveItem: ; 0x02052B8C - ldr r2, _02052BB4 ; =MONSTER_DATA_TABLE_PTR - mov r3, r1, lsr #0x1f - ldr ip, [r2] - mov r2, #0x44 - rsb r1, r3, r1, lsl #30 - smlabb r2, r0, r2, ip - add r0, r3, r1, ror #30 - add r0, r2, r0, lsl #1 - ldrsh r0, [r0, #0x34] - bx lr - .align 2, 0 -_02052BB4: .word MONSTER_DATA_TABLE_PTR - arm_func_end GetExclusiveItem - - arm_func_start GetFamilyIndex -GetFamilyIndex: ; 0x02052BB8 - ldr r2, _02052BD0 ; =MONSTER_DATA_TABLE_PTR - mov r1, #0x44 - ldr r2, [r2] - smlabb r0, r0, r1, r2 - ldrsh r0, [r0, #0x32] - bx lr - .align 2, 0 -_02052BD0: .word MONSTER_DATA_TABLE_PTR - arm_func_end GetFamilyIndex - - arm_func_start LoadM2nAndN2m -LoadM2nAndN2m: ; 0x02052BD4 - stmdb sp!, {r3, lr} -#ifdef EUROPE - sub sp, sp, #0x100 -#endif - ldr r0, _02052C2C ; =_020B09C8 - bl PointsToZero - cmp r0, #0 - beq _02052C00 -#ifdef EUROPE - bl GetLanguage - mov r2, r0 - ldr r1, _02052FA8 ; =_020B12F4_EU - add r0, sp, #0 - ldr r2, [r1, r2, lsl #2] - ldr r1, _02052FAC ; =_020A3210 - bl SprintfStatic__02052418 -#endif - ldr r0, _02052C2C ; =_020B09C8 - bl ZInit8 - ldr r0, _02052C2C ; =_020B09C8 -#ifdef EUROPE - add r1, sp, #0 -#else - ldr r1, _02052C30 ; =_020A3210 -#endif - mov r2, #0 - bl LoadFileFromRom -_02052C00: - ldr r0, _02052C34 ; =_020B09D0 - bl PointsToZero - cmp r0, #0 -#ifdef EUROPE - beq _02052F9C - bl GetLanguage - mov r2, r0 - ldr r1, _02052FB4 ; =_020B1308_EU - add r0, sp, #0 - ldr r2, [r1, r2, lsl #2] - ldr r1, _02052FAC ; =_020A3210 - bl SprintfStatic__02052418 -#else - ldmeqia sp!, {r3, pc} -#endif - ldr r0, _02052C34 ; =_020B09D0 - bl ZInit8 - ldr r0, _02052C34 ; =_020B09D0 -#ifdef EUROPE - add r1, sp, #0 -#else - ldr r1, _02052C38 ; =_020A322C -#endif - mov r2, #0 - bl LoadFileFromRom -#ifdef EUROPE -_02052F9C: - add sp, sp, #0x100 -#endif - ldmia sp!, {r3, pc} - .align 2, 0 -_02052C2C: .word _020B09C8 -#ifdef EUROPE -_02052FA8: .word _020B12F4_EU -_02052FAC: .word _020A3210 -#else -_02052C30: .word _020A3210 -#endif -_02052C34: .word _020B09D0 -#ifdef EUROPE -_02052FB4: .word _020B1308_EU -#else -_02052C38: .word _020A322C -#endif - arm_func_end LoadM2nAndN2m - - arm_func_start sub_02052C3C -sub_02052C3C: ; 0x02052C3C - stmdb sp!, {r3, lr} - ldr r1, _02052C68 ; =TEAM_MEMBER_TABLE - ldr r0, _02052C6C ; =TEAM_MEMBER_TABLE_PTR - str r1, [r0] - bl LoadMonsterMd - ldr r0, _02052C70 ; =LEVEL_UP_DATA_MONSTER_ID - mov r1, #0 - strh r1, [r0] - bl sub_020550DC - bl sub_020560B8 - ldmia sp!, {r3, pc} - .align 2, 0 -_02052C68: .word TEAM_MEMBER_TABLE -_02052C6C: .word TEAM_MEMBER_TABLE_PTR -_02052C70: .word LEVEL_UP_DATA_MONSTER_ID - arm_func_end sub_02052C3C - - arm_func_start sub_02052C74 -sub_02052C74: ; 0x02052C74 - stmdb sp!, {r3, lr} - bl sub_020550E0 - bl RemoveActiveMembersFromAllTeams - ldr r2, _02052CD4 ; =TEAM_MEMBER_TABLE_PTR - mov lr, #0 - ldr r0, [r2] - mov r3, lr - add r0, r0, #0x9000 - str lr, [r0, #0x878] - str lr, [r0, #0x87c] - mov r0, #0x44 -_02052CA0: - mul ip, lr, r0 - ldr r1, [r2] - add lr, lr, #1 - add r1, r1, ip - add r1, r1, #0x9800 - strh r3, [r1, #0x9c] - ldr r1, [r2] - cmp lr, #4 - add r1, r1, ip - add r1, r1, #0x9000 - strb r3, [r1, #0x898] - blt _02052CA0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02052CD4: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02052C74 - - arm_func_start sub_02052CD8 -sub_02052CD8: ; 0x02052CD8 - stmdb sp!, {r3, lr} - bl sub_02055118 - bl RemoveActiveMembersFromSpecialEpisodeTeam - ldmia sp!, {r3, pc} - arm_func_end sub_02052CD8 - - arm_func_start sub_02052CE8 -sub_02052CE8: ; 0x02052CE8 - ldr ip, _02052CF0 ; =RemoveActiveMembersFromRescueTeam - bx ip - .align 2, 0 -_02052CF0: .word RemoveActiveMembersFromRescueTeam - arm_func_end sub_02052CE8 - - arm_func_start sub_02052CF4 -sub_02052CF4: ; 0x02052CF4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x1c - mov r8, r0 - mov r4, #1 - mov r7, r1 - strb r4, [r8] - mov r0, r7 - strb r4, [r8, #1] - mov r6, r2 - mov r5, r3 - ldr r4, [sp, #0x38] - bl GetBaseHp - strh r0, [r8, #0xa] - mov r0, r7 - mov r1, #0 - bl GetBaseOffensiveStat - strb r0, [r8, #0xc] - mov r0, r7 - mov r1, #1 - bl GetBaseOffensiveStat - strb r0, [r8, #0xd] - mov r0, r7 - mov r1, #0 - bl GetBaseDefensiveStat - strb r0, [r8, #0xe] - mov r0, r7 - mov r1, #1 - bl GetBaseDefensiveStat - strb r0, [r8, #0xf] - strh r7, [r8, #4] - mov r3, #0 - str r3, [r8, #0x10] - strb r3, [r8, #0x20] - mov r0, #1 - strh r0, [r8, #8] - ldrb r2, [r5] - add r0, r8, #0x14 - mov r1, r7 - strb r2, [r8, #2] - ldrb r2, [r5, #1] - strb r2, [r8, #3] - strb r3, [r8, #6] - strb r3, [r8, #7] - ldrsh r2, [r8, #8] - bl EnableAllLearnableIqSkills - cmp r4, #0 - beq _02052DDC - mov r3, #0 - add r1, sp, #0 -_02052DB8: - mov r2, r3, lsl #1 - ldrh r0, [r4, r2] - add r3, r3, #1 - cmp r3, #4 - strh r0, [r1, r2] - blt _02052DB8 - add r0, r8, #0x22 - bl GetInfoGroundMoveset - b _02052DEC -_02052DDC: - ldrb r2, [sp, #0x3c] - mov r1, r7 - add r0, r8, #0x22 - bl sub_02053F10 -_02052DEC: - cmp r6, #0 - bne _02052E14 - add r0, sp, #8 - mov r1, r7 - bl GetNameRaw - add r1, sp, #8 - add r0, r8, #0x3a - mov r2, #0xa - bl StrncpyName - b _02052E24 -_02052E14: - mov r1, r6 - add r0, r8, #0x3a - mov r2, #0xa - bl StrncpySimple -_02052E24: - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - arm_func_end sub_02052CF4 - - arm_func_start sub_02052E2C -sub_02052E2C: ; 0x02052E2C - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr lr, [sp, #0x10] - mov ip, #0 - str lr, [sp] - str ip, [sp, #4] - bl sub_02052CF4 - add sp, sp, #8 - ldmia sp!, {r3, pc} - arm_func_end sub_02052E2C - - arm_func_start GuestMonsterToGroundMonster -GuestMonsterToGroundMonster: ; 0x02052E50 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r0, #1 - mov r4, r1 - strb r0, [r5] - ldrsh r1, [r4, #0x12] - mov r2, #0 - add r0, r5, #0x14 - strb r1, [r5, #1] - ldrsh r1, [r4, #0x10] - strh r1, [r5, #0xa] - ldrsh r1, [r4, #0x16] - strb r1, [r5, #0xc] - ldrsh r1, [r4, #0x18] - strb r1, [r5, #0xd] - ldrsh r1, [r4, #0x1a] - strb r1, [r5, #0xe] - ldrsh r1, [r4, #0x1c] - strb r1, [r5, #0xf] - ldrsh r1, [r4, #4] - strh r1, [r5, #4] - ldr r1, [r4, #0x20] - str r1, [r5, #0x10] - strb r2, [r5, #0x20] - ldrsh r1, [r4, #0x14] - strh r1, [r5, #8] - ldrb r1, [r4, #6] - strb r1, [r5, #2] - ldrb r1, [r4, #7] - strb r1, [r5, #3] - strb r2, [r5, #6] - strb r2, [r5, #7] - ldrsh r1, [r5, #4] - ldrsh r2, [r5, #8] - bl EnableAllLearnableIqSkills - add r0, r5, #0x22 - add r1, r4, #8 - bl GetInfoGroundMoveset - ldr r1, [r4] - add r0, r5, #0x3a - mov r2, #0xa - bl StrncpySimple - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GuestMonsterToGroundMonster - - arm_func_start SetBaseStatsMovesGroundMonster -SetBaseStatsMovesGroundMonster: ; 0x02052EFC - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #1 - strb r0, [r4, #1] - ldrsh r0, [r4, #4] - bl GetBaseHp - strh r0, [r4, #0xa] - ldrsh r0, [r4, #4] - mov r1, #0 - bl GetBaseOffensiveStat - strb r0, [r4, #0xc] - ldrsh r0, [r4, #4] - mov r1, #1 - bl GetBaseOffensiveStat - strb r0, [r4, #0xd] - ldrsh r0, [r4, #4] - mov r1, #0 - bl GetBaseDefensiveStat - strb r0, [r4, #0xe] - ldrsh r0, [r4, #4] - mov r1, #1 - bl GetBaseDefensiveStat - strb r0, [r4, #0xf] - mov r0, #0 - str r0, [r4, #0x10] - strb r0, [r4, #0x20] - mov r2, #1 - strh r2, [r4, #8] - ldrsh r1, [r4, #4] - add r0, r4, #0x14 - bl EnableAllLearnableIqSkills - ldrsh r1, [r4, #4] - add r0, r4, #0x22 - mov r2, #0 - bl sub_02053F10 - ldmia sp!, {r4, pc} - arm_func_end SetBaseStatsMovesGroundMonster - - arm_func_start sub_02052F8C -sub_02052F8C: ; 0x02052F8C - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr lr, [sp, #0x10] - mov ip, #1 - str lr, [sp] - str ip, [sp, #4] - bl sub_02052CF4 - add sp, sp, #8 - ldmia sp!, {r3, pc} - arm_func_end sub_02052F8C - - arm_func_start StrcmpMonsterName -StrcmpMonsterName: ; 0x02052FB0 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x14 - mov r4, r0 - mov r0, r1 - bl GetNameString - mov r1, r0 - add r0, sp, #0 -#ifdef JAPAN - bl sub_02025304_JP -#else - bl StrcpyName -#endif - add r1, sp, #0 - mov r0, r4 - mov r2, #0xa - bl StrncmpSimple - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - add sp, sp, #0x14 - ldmia sp!, {r3, r4, pc} - arm_func_end StrcmpMonsterName - - arm_func_start sub_02052FF8 -sub_02052FF8: ; 0x02052FF8 - stmdb sp!, {r3, lr} - ldr r2, _02053034 ; =TEAM_MEMBER_TABLE_PTR - mov r3, #0x44 - ldr ip, [r2] - mov r2, #0xa - smlabb r0, r0, r3, ip - smlabb r1, r1, r3, ip - add r0, r0, #0x3a - add r1, r1, #0x3a - bl sub_01FF8F28 - cmp r0, #0 - movlt r0, #1 - movge r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - .align 2, 0 -_02053034: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02052FF8 - - arm_func_start sub_02053038 -sub_02053038: ; 0x02053038 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x48 - mov ip, r1 - mov lr, r0 - cmp ip, #0xd - blo _020530BC - ldr r6, _020530CC ; =_020A328C - add r5, sp, #0 - mov r4, #4 -_0205305C: - ldmia r6!, {r0, r1, r2, r3} - stmia r5!, {r0, r1, r2, r3} - subs r4, r4, #1 - bne _0205305C - ldmia r6, {r0, r1} - stmia r5, {r0, r1} - mov r3, #0 - add r1, sp, #0 - b _020530AC -_02053080: - mov r2, r3, lsl #3 - ldrsh r0, [r1, r2] - cmp r0, #0 - beq _020530B4 - cmp lr, r0 - addeq r0, r1, r2 - ldreq r0, [r0, #4] - cmpeq ip, r0 - moveq r0, #1 - beq _020530C4 - add r3, r3, #1 -_020530AC: - cmp r3, #0xa - blt _02053080 -_020530B4: - mov r0, #0 - b _020530C4 -_020530BC: - ldr r0, _020530D0 ; =_020A327C - ldrb r0, [r0, ip] -_020530C4: - add sp, sp, #0x48 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020530CC: .word _020A328C -_020530D0: .word _020A327C - arm_func_end sub_02053038 - - arm_func_start sub_020530D4 -sub_020530D4: ; 0x020530D4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - mov r4, r0 - ldrb r5, [r4] - mov r0, #0x44 - ldr ip, _02053170 ; =TEAM_MEMBER_TABLE_PTR - tst r5, #1 - smulbb r6, r1, r0 - movne r0, #1 - moveq r0, #0 - mov r3, r2 - ldr r7, [ip] - tst r0, #0xff - beq _02053158 - ldrh r5, [r4, #0x3e] - ldrh lr, [r4, #0x40] - ldrh ip, [r4, #0x42] - mov r0, r4 - mov r2, r1 - strh r5, [sp] - add r1, r7, r6 - strh lr, [sp, #2] - strh ip, [sp, #4] - ldrb r5, [r4] - bl sub_02053250 - ldrh r2, [sp] - ldrh r1, [sp, #2] - ldrh r0, [sp, #4] - strh r2, [r4, #0x3e] - strh r1, [r4, #0x40] - strh r0, [r4, #0x42] - strb r5, [r4] - b _02053168 -_02053158: - mov r0, r4 - mov r2, r1 - add r1, r7, r6 - bl sub_02053250 -_02053168: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02053170: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_020530D4 - - arm_func_start sub_02053174 -sub_02053174: ; 0x02053174 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0xc - mov r5, r0 - ldrb r6, [r5] - mov r0, #0x44 - ldr r4, _02053220 ; =TEAM_MEMBER_TABLE_PTR - tst r6, #1 - smulbb r8, r1, r0 - movne r0, #1 - moveq r0, #0 - mov ip, r2 - ldr sb, [r4] - tst r0, #0xff - beq _02053200 - ldrh r7, [r5, #0x3e] - ldrh r6, [r5, #0x40] - ldrh lr, [r5, #0x42] - ldrb r4, [r5] - mov r0, r5 - mov r2, r1 - str r3, [sp] - mov r3, ip - strh r7, [sp, #4] - add r1, sb, r8 - strh r6, [sp, #6] - strh lr, [sp, #8] - bl sub_02053374 - ldrh r2, [sp, #4] - ldrh r1, [sp, #6] - ldrh r0, [sp, #8] - strh r2, [r5, #0x3e] - strh r1, [r5, #0x40] - strh r0, [r5, #0x42] - strb r4, [r5] - b _02053218 -_02053200: - str r3, [sp] - mov r0, r5 - mov r2, r1 - mov r3, ip - add r1, sb, r8 - bl sub_02053374 -_02053218: - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02053220: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02053174 - - arm_func_start sub_02053224 -sub_02053224: ; 0x02053224 - stmdb sp!, {r3, lr} - ldr r3, _0205324C ; =TEAM_MEMBER_TABLE_PTR - mov ip, r1 - ldr r3, [r3] - mov r1, #0x44 - smlabb r1, ip, r1, r3 - mov r3, r2 - mov r2, ip - bl sub_02053250 - ldmia sp!, {r3, pc} - .align 2, 0 -_0205324C: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02053224 - - arm_func_start sub_02053250 -sub_02053250: ; 0x02053250 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r5, r1 - ldrb r1, [r5] - mov r6, r0 - add r0, r5, #0x14 - strb r1, [r6] - ldrb r1, [r5, #1] - add r3, r6, #0x4c - mov r4, r2 - strb r1, [r6, #2] - ldrsh r1, [r5, #8] - strh r1, [r6, #6] - ldmia r0, {r0, r1, r2} - stmia r3, {r0, r1, r2} - add r0, r6, #0x5a - bl ShuffleHiddenPower - ldrb r1, [r5, #2] - mov r0, r4 - strb r1, [r6, #3] - ldrb r1, [r5, #3] - strb r1, [r6, #4] - bl sub_020564B0 - strb r0, [r6, #1] - strh r4, [r6, #8] - ldrsh r0, [r5, #4] - mov r3, #0 - strh r0, [r6, #0xc] - ldrb r0, [r5, #0x20] - strb r0, [r6, #0x58] - ldrsh r0, [r5, #0xa] - strh r0, [r6, #0x10] - strh r0, [r6, #0xe] -_020532D4: - add r2, r5, r3 - ldrb r0, [r2, #0xc] - add r1, r6, r3 - add r3, r3, #1 - strb r0, [r1, #0x12] - ldrb r0, [r2, #0xe] - cmp r3, #2 - strb r0, [r1, #0x14] - blt _020532D4 - ldr r2, [r5, #0x10] - add r0, r6, #0x1c - add r1, r5, #0x22 - str r2, [r6, #0x18] - bl GroundToDungeonMoveset - add r0, r6, #0x5e - add r1, r5, #0x3a - mov r2, #0xa - bl StrncpySimple - add r0, r6, #0x3e - bl ItemZInit - mov r0, #0x64 - bl sub_02050FF8 - strh r0, [sp, #4] - mov r0, r0, lsr #0x10 - strh r0, [sp, #6] - ldrh r2, [sp, #4] - ldrh r1, [sp, #6] - mov r0, #0x64 - strh r2, [r6, #0x44] - strh r1, [r6, #0x46] - bl sub_02050FF8 - strh r0, [sp] - mov r0, r0, lsr #0x10 - strh r0, [sp, #2] - ldrh r1, [sp] - ldrh r0, [sp, #2] - strh r1, [r6, #0x48] - strh r0, [r6, #0x4a] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end sub_02053250 - - arm_func_start sub_02053374 -sub_02053374: ; 0x02053374 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r5, r1 - ldrb r1, [r5] - mov r6, r0 - add r0, r5, #0x14 - strb r1, [r6] - ldrb r1, [r5, #1] - add r3, r6, #0x4c - mov r4, r2 - strb r1, [r6, #2] - ldrsh r1, [r5, #8] - strh r1, [r6, #6] - ldmia r0, {r0, r1, r2} - stmia r3, {r0, r1, r2} - add r0, r6, #0x5a - bl ShuffleHiddenPower - ldrb r2, [r5, #2] - ldrb r1, [sp, #0x18] - mov r0, r4 - strb r2, [r6, #3] - ldrb r2, [r5, #3] - strb r2, [r6, #4] - bl sub_02056504 - strb r0, [r6, #1] - strh r4, [r6, #8] - ldrsh r0, [r5, #4] - mov r3, #0 - strh r0, [r6, #0xc] - ldrb r0, [r5, #0x20] - strb r0, [r6, #0x58] - ldrsh r0, [r5, #0xa] - strh r0, [r6, #0x10] - strh r0, [r6, #0xe] -_020533FC: - add r2, r5, r3 - ldrb r0, [r2, #0xc] - add r1, r6, r3 - add r3, r3, #1 - strb r0, [r1, #0x12] - ldrb r0, [r2, #0xe] - cmp r3, #2 - strb r0, [r1, #0x14] - blt _020533FC - ldr r2, [r5, #0x10] - add r0, r6, #0x1c - add r1, r5, #0x22 - str r2, [r6, #0x18] - bl GroundToDungeonMoveset - add r0, r6, #0x5e - add r1, r5, #0x3a - mov r2, #0xa - bl StrncpySimple - add r0, r6, #0x3e - bl ItemZInit - mov r0, #0x64 - bl sub_02050FF8 - strh r0, [sp, #4] - mov r0, r0, lsr #0x10 - strh r0, [sp, #6] - ldrh r2, [sp, #4] - ldrh r1, [sp, #6] - mov r0, #0x64 - strh r2, [r6, #0x44] - strh r1, [r6, #0x46] - bl sub_02050FF8 - strh r0, [sp] - mov r0, r0, lsr #0x10 - strh r0, [sp, #2] - ldrh r1, [sp] - ldrh r0, [sp, #2] - strh r1, [r6, #0x48] - strh r0, [r6, #0x4a] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end sub_02053374 - - arm_func_start sub_0205349C -sub_0205349C: ; 0x0205349C - ldr r3, _020534B4 ; =TEAM_MEMBER_TABLE_PTR - ldr ip, _020534B8 ; =sub_020534BC - ldr r3, [r3] - mov r2, #0x44 - smlabb r0, r0, r2, r3 - bx ip - .align 2, 0 -_020534B4: .word TEAM_MEMBER_TABLE_PTR -_020534B8: .word sub_020534BC - arm_func_end sub_0205349C - - arm_func_start sub_020534BC -sub_020534BC: ; 0x020534BC - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - ldrb r1, [r4] - mov r5, r0 - add r0, r4, #0x4c - strb r1, [r5] - ldrb r1, [r4, #2] - add ip, r5, #0x14 - mov r3, #0 - strb r1, [r5, #1] - ldrsh r1, [r4, #6] - strh r1, [r5, #8] - ldmia r0, {r0, r1, r2} - stmia ip, {r0, r1, r2} - ldrb r0, [r4, #3] - strb r0, [r5, #2] - ldrb r0, [r4, #4] - strb r0, [r5, #3] - ldrsh r0, [r4, #0xc] - strh r0, [r5, #4] - ldrb r0, [r4, #0x58] - strb r0, [r5, #0x20] - ldrsh r0, [r4, #0x10] - strh r0, [r5, #0xa] -_0205351C: - add r2, r4, r3 - ldrb r0, [r2, #0x12] - add r1, r5, r3 - add r3, r3, #1 - strb r0, [r1, #0xc] - ldrb r0, [r2, #0x14] - cmp r3, #2 - strb r0, [r1, #0xe] - blt _0205351C - ldr r2, [r4, #0x18] - add r0, r5, #0x22 - add r1, r4, #0x1c - str r2, [r5, #0x10] - bl DungeonToGroundMoveset - add r0, r5, #0x3a - add r1, r4, #0x5e - mov r2, #0xa - bl StrncpySimple - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_020534BC - - arm_func_start sub_02053568 -sub_02053568: ; 0x02053568 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r4, _0205361C ; =_020A3258 - b _0205358C -_02053578: - ldrsh r1, [r5, #4] - bl DexNumbersEqual - cmp r0, #0 - bne _02053598 - add r4, r4, #4 -_0205358C: - ldrsh r0, [r4] - cmp r0, #0 - bne _02053578 -_02053598: - ldrsh r0, [r4] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - add r0, r5, #0x22 - bl GetNbMoves - cmp r0, #4 - bne _02053604 - ldrsh r0, [r4] - cmp r0, #0x148 - ldmneia sp!, {r3, r4, r5, pc} - ldr r1, _02053620 ; =0x0000013B - add r0, r5, #0x22 - bl GetMovesetIdx__02013CAC - mvn r1, #0 - cmp r0, r1 - ldmeqia sp!, {r3, r4, r5, pc} - mov r1, #6 - mul r2, r0, r1 - add r3, r5, #0x22 - mov r0, #0 - strb r0, [r3, r2] - ldrh r1, [r4, #2] - add r0, r3, r2 - bl GetInfoMoveGround - ldr r0, _02053624 ; =_020A32D4 - bl Debug_Print0 - ldmia sp!, {r3, r4, r5, pc} -_02053604: - add r2, r5, #0x22 - mov r1, #6 - mla r0, r1, r0, r2 - ldrh r1, [r4, #2] - bl GetInfoMoveGround - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0205361C: .word _020A3258 -_02053620: .word 0x0000013B -_02053624: .word _020A32D4 - arm_func_end sub_02053568 - - arm_func_start sub_02053628 -sub_02053628: ; 0x02053628 - b _0205364C -_0205362C: - ldrsh r2, [r0, #4] - cmp r3, r2 - ldreqb r3, [r1, #2] - ldreqb r2, [r0, #2] - cmpeq r3, r2 - addeq r0, r1, #4 - bxeq lr - add r1, r1, #6 - arm_func_end sub_02053628 -_0205364C: - ldrsh r3, [r1] - cmp r3, #0 - bne _0205362C - mov r0, #0 - bx lr - - arm_func_start sub_02053660 -sub_02053660: ; 0x02053660 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - movs r4, r2 - mov r5, r1 - mov r6, r0 - cmpne r5, #0 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r1, #0 - mov sb, r1 - add r0, sp, #0 -_02053688: - strb sb, [r0, r1] - add r1, r1, #1 - cmp r1, #4 - blt _02053688 - b _0205375C -_0205369C: - mov r1, r8 - add r0, r6, #0x22 - bl GetMovesetIdx__02013CAC - mvn r1, #0 - cmp r0, r1 - bne _02053758 - add r0, r6, #0x22 - bl GetNbMoves - mov r7, r0 - cmp r7, #4 - bne _02053738 - mov r7, #0 - mov sb, r7 - add r1, sp, #0 -_020536D4: - ldrb r0, [r1, sb] - add sb, sb, #1 - cmp r0, #0 - addeq r7, r7, #1 - cmp sb, #4 - blt _020536D4 - cmp r7, #0 - beq _02053774 - bl Rand16Bit - mov r1, r7 - bl _s32_div_f - mov r7, r1 - mov r0, #6 - mul ip, r7, r0 - add r0, r6, #0x22 - mov r1, r8 - add r2, r6, ip - mov r3, #0 - add r0, r0, ip - strb r3, [r2, #0x22] - bl GetInfoMoveGround - add r0, sp, #0 - mov r1, #1 - strb r1, [r0, r7] - b _02053758 -_02053738: - add r1, r6, #0x22 - mov r0, #6 - mla r0, r7, r0, r1 - mov r1, r8 - bl GetInfoMoveGround - add r0, sp, #0 - mov r1, #1 - strb r1, [r0, r7] -_02053758: - add sb, sb, #1 -_0205375C: - cmp sb, r4 - bge _02053774 - mov r0, sb, lsl #1 - ldrh r8, [r5, r0] - cmp r8, #0 - bne _0205369C -_02053774: - mov r0, #0 - mov r3, r0 - add r2, sp, #0 -_02053780: - ldrb r1, [r2, r3] - add r3, r3, #1 - cmp r1, #0 - addne r0, r0, #1 - cmp r3, #4 - blt _02053780 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end sub_02053660 - - arm_func_start GetLvlUpEntry -GetLvlUpEntry: ; 0x0205379C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - mov r6, r1 - mov r5, r0 - mov r0, r6 - mov r1, #0x258 - mov r4, r2 - bl _s32_div_f - ldr r0, _02053844 ; =LEVEL_UP_DATA_MONSTER_ID - ldrsh r0, [r0] - cmp r0, r1 - beq _02053820 - mov r0, r6 - mov r1, #0x258 - bl _s32_div_f - sub r0, r1, #1 - ldr r2, _02053844 ; =LEVEL_UP_DATA_MONSTER_ID - mov r0, r0, lsl #0x10 - strh r1, [r2] - mov r1, r0, lsr #0x10 - add r2, sp, #4 - mov r0, #5 - mov r3, #0 - bl DirectoryFileMngr_OpenDirectoryFile - ldr r1, [sp, #4] - add r0, sp, #0 - bl HandleSir0Translation - ldr r2, [sp] - ldr r0, _02053848 ; =LEVEL_UP_DATA_DECOMPRESS_BUFFER - mov r1, #0 - bl DecompressAtNormalVeneer - add r0, sp, #4 - bl UnloadFile -_02053820: - subs r4, r4, #1 - ldr r1, _02053848 ; =LEVEL_UP_DATA_DECOMPRESS_BUFFER - movmi r4, #0 - mov r0, #0xc - mla r0, r4, r0, r1 - ldmia r0, {r0, r1, r2} - stmia r5, {r0, r1, r2} - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02053844: .word LEVEL_UP_DATA_MONSTER_ID -_02053848: .word LEVEL_UP_DATA_DECOMPRESS_BUFFER - arm_func_end GetLvlUpEntry - - arm_func_start GetEncodedHalfword -GetEncodedHalfword: ; 0x0205384C - ldrb ip, [r0] - add r2, r0, #1 - mov r0, r2 - tst ip, #0x80 - addne r0, r2, #1 - ldrneb r2, [r2] - moveq r2, ip - moveq ip, #0 - and r3, r2, #0x7f - mov r2, ip, lsl #0x19 - orr r2, r3, r2, lsr #18 - strh r2, [r1] - bx lr - arm_func_end GetEncodedHalfword - - arm_func_start sub_02053880 -sub_02053880: ; 0x02053880 - cmp r0, #0xee - mov r3, #1 - bne _0205389C - ldr r2, _020538F0 ; =_020A18C0 - ldrsh r2, [r2] - cmp r1, r2 - movlt r3, #0 -_0205389C: - cmp r0, #0xef - bne _020538B4 - ldr r2, _020538F4 ; =_020A189C - ldrsh r2, [r2] - cmp r1, r2 - movlt r3, #0 -_020538B4: - cmp r0, #0x110 - bne _020538CC - ldr r2, _020538F8 ; =_020A1884 - ldrsh r2, [r2] - cmp r1, r2 - movlt r3, #0 -_020538CC: - ldr r2, _020538FC ; =0x0000021A - cmp r0, r2 - bne _020538E8 - ldr r0, _02053900 ; =_020A1880 - ldrsh r0, [r0] - cmp r1, r0 - movlt r3, #0 -_020538E8: - mov r0, r3 - bx lr - .align 2, 0 -_020538F0: .word _020A18C0 -_020538F4: .word _020A189C -_020538F8: .word _020A1884 -_020538FC: .word 0x0000021A -_02053900: .word _020A1880 - arm_func_end sub_02053880 - - arm_func_start sub_02053904 -sub_02053904: ; 0x02053904 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r4, _02053A08 ; =0x00000229 - ldr r8, [sp, #0x28] - mov sl, r0 - mov sb, r2 - mov fp, r3 - mov r6, #0 - cmp r1, r4 - moveq r0, r6 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r1, #0 - moveq r0, r6 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r8, #0 - beq _0205394C - ldrsh r5, [sp, #0x2c] - cmp r5, #0 - bgt _02053950 -_0205394C: - mov r5, #0 -_02053950: - mov r0, r1 - bl GetMovesetLevelUpPtr - mov r4, r0 - b _020539F4 -_02053960: - mov r0, r4 - add r1, sp, #0 - bl GetEncodedHalfword - ldrb r1, [r0] - add r4, r0, #1 - cmp r1, sb - bgt _02053A00 - bne _020539F4 - ldrh r0, [sp] - mov r1, fp - mov r7, #1 - bl sub_02053880 - cmp r0, #0 - moveq r7, #0 - cmp r5, #0 - ble _020539D8 - mov r2, #0 - ldrh r0, [sp] - b _020539C8 -_020539AC: - mov r1, r2, lsl #1 - ldrh r1, [r8, r1] - cmp r0, r1 - beq _020539D0 - add r1, r2, #1 - mov r1, r1, lsl #0x10 - mov r2, r1, asr #0x10 -_020539C8: - cmp r2, r5 - blt _020539AC -_020539D0: - cmp r2, r5 - bne _020539F4 -_020539D8: - cmp r7, #0 - beq _020539F4 - cmp r6, #0x10 - ldrlth r1, [sp] - movlt r0, r6, lsl #1 - addlt r6, r6, #1 - strlth r1, [sl, r0] -_020539F4: - ldrb r0, [r4] - cmp r0, #0 - bne _02053960 -_02053A00: - mov r0, r6 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02053A08: .word 0x00000229 - arm_func_end sub_02053904 - - arm_func_start sub_02053A0C -sub_02053A0C: ; 0x02053A0C - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r6, r0 - mov r0, r1 - mov r5, r2 - mov r4, r3 - bl FemaleToMaleForm - mov ip, #0 - mov r1, r0 - str ip, [sp] - mov r0, r6 - mov r2, r5 - mov r3, r4 - str ip, [sp, #4] - bl sub_02053904 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end sub_02053A0C - - arm_func_start sub_02053A50 -sub_02053A50: ; 0x02053A50 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - mov r0, r3 - ldr r7, [sp, #0x2c] - mov sb, r1 - mov r8, r2 - mov r5, #0 - bl FemaleToMaleForm - mov r4, r0 - bl sub_02053B38 - cmp r0, #0 - movne r0, r5 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sp, #0x28] - cmp r0, #1 - bne _02053B30 - mov r0, r4 - bl GetMovesetEggPtr - mov r4, r0 - mov fp, #1 - b _02053B24 -_02053AA4: - mov r0, r4 - add r1, sp, #0 - mov r6, fp - bl GetEncodedHalfword - mov r4, r0 - ldrh r0, [sp] - mov r1, r7 - bl sub_02053880 - cmp r0, #0 - moveq r6, #0 - cmp r6, #0 - beq _02053B24 - mov r2, #0 - mov r3, r2 - ldrh r0, [sp] - b _02053B04 -_02053AE4: - mov r1, r3, lsl #1 - ldrh r1, [sb, r1] - cmp r0, r1 - moveq r2, #1 - beq _02053B0C - add r1, r3, #1 - mov r1, r1, lsl #0x10 - mov r3, r1, asr #0x10 -_02053B04: - cmp r3, r8 - blt _02053AE4 -_02053B0C: - cmp r2, #0 - bne _02053B24 - cmp r5, #0x10 - movlt r1, r5, lsl #1 - strlth r0, [sl, r1] - addlt r5, r5, #1 -_02053B24: - ldrb r0, [r4] - cmp r0, #0 - bne _02053AA4 -_02053B30: - mov r0, r5 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end sub_02053A50 - - arm_func_start sub_02053B38 -sub_02053B38: ; 0x02053B38 - cmp r0, #0 - ble _02053B4C - ldr r1, _02053B5C ; =0x00000229 - cmp r0, r1 - blt _02053B54 -_02053B4C: - mov r0, #1 - bx lr -_02053B54: - mov r0, #0 - bx lr - .align 2, 0 -_02053B5C: .word 0x00000229 - arm_func_end sub_02053B38 - - arm_func_start sub_02053B60 -sub_02053B60: ; 0x02053B60 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x48 - mov r8, r0 - mov r0, r1 - mov r7, r2 - mov r6, r3 - bl FemaleToMaleForm - mov r4, r0 - bl sub_02053B38 - cmp r0, #0 - movne r0, #0 - bne _02053C98 - mov r0, r4 - bl FemaleToMaleForm - mov r5, #0 - mov r1, r0 - str r5, [sp] - mov r0, r8 - mov r2, r7 - mov r3, r6 - str r5, [sp, #4] - bl sub_02053904 - mov r5, r0 - cmp r5, #4 - bge _02053C68 - mov r3, #0 - add r0, sp, #0x28 - b _02053BE0 -_02053BD0: - mov r2, r3, lsl #1 - ldrh r1, [r8, r2] - add r3, r3, #1 - strh r1, [r0, r2] -_02053BE0: - cmp r3, r5 - blt _02053BD0 - mov r2, r5, lsl #0x10 - str r7, [sp] - add r0, sp, #8 - add r1, sp, #0x28 - mov r3, r4 - mov r2, r2, asr #0x10 - str r6, [sp, #4] - bl sub_02053A50 - mov r6, r0 - cmp r6, #0 - ble _02053C68 - add r4, sp, #8 - b _02053C60 -_02053C1C: - mov r0, r6 - bl RandIntSafe - mov r1, r0, lsl #1 - ldrh r2, [r4, r1] - mov r1, r5, lsl #1 - add r3, r0, #1 - strh r2, [r8, r1] - b _02053C50 -_02053C3C: - mov r0, r3, lsl #1 - ldrh r1, [r4, r0] - add r0, r4, r3, lsl #1 - add r3, r3, #1 - strh r1, [r0, #-2] -_02053C50: - cmp r3, r6 - blt _02053C3C - sub r6, r6, #1 - add r5, r5, #1 -_02053C60: - cmp r5, #4 - blt _02053C1C -_02053C68: - mov r0, r5, lsl #0x10 - mov r1, r0, asr #0x10 - mov r2, #0 - b _02053C8C -_02053C78: - add r0, r1, #1 - mov r1, r1, lsl #1 - mov r0, r0, lsl #0x10 - strh r2, [r8, r1] - mov r1, r0, asr #0x10 -_02053C8C: - cmp r1, #4 - blt _02053C78 - mov r0, r5 -_02053C98: - add sp, sp, #0x48 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end sub_02053B60 - - arm_func_start sub_02053CA0 -sub_02053CA0: ; 0x02053CA0 - stmdb sp!, {r4, lr} - mov r4, #0 - ldr lr, _02053D18 ; =FORBIDDEN_FORGOT_MOVE_LIST - b _02053CFC -_02053CB0: - cmp ip, r2 - ldreqb ip, [lr, #2] - cmpeq r3, ip - bne _02053CF8 - mov r2, #1 - cmp r1, #1 - suble r2, r1, #1 - mov r4, #0 - b _02053CDC -_02053CD4: - strh r1, [r0], #2 - add r4, r4, #1 -_02053CDC: - cmp r4, r2 - bge _02053D08 - add r1, lr, r4, lsl #1 - ldrh r1, [r1, #4] - cmp r1, #0 - bne _02053CD4 - b _02053D08 -_02053CF8: - add lr, lr, #6 -_02053CFC: - ldrsh ip, [lr] - cmp ip, #0 - bne _02053CB0 -_02053D08: - mov r1, #0 - strh r1, [r0] - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_02053D18: .word FORBIDDEN_FORGOT_MOVE_LIST - arm_func_end sub_02053CA0 - - arm_func_start sub_02053D1C -sub_02053D1C: ; 0x02053D1C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr r2, _02053DCC ; =0x00000229 - mov r6, r1 - mov r4, r0 - cmp r6, r2 - moveq r0, #0 - beq _02053DC4 - cmp r6, #0 - moveq r0, #0 - beq _02053DC4 - cmp r4, #0x160 - moveq r0, #0 - beq _02053DC4 - mov r0, r6 - bl GetMovesetLevelUpPtr - add r5, sp, #2 - b _02053D80 -_02053D64: - mov r1, r5 - bl GetEncodedHalfword - ldrh r1, [sp, #2] - add r0, r0, #1 - cmp r4, r1 - moveq r0, #1 - beq _02053DC4 -_02053D80: - ldrb r1, [r0] - cmp r1, #0 - bne _02053D64 - mov r0, r6 - bl GetMovesetHmTmPtr - add r5, sp, #0 - b _02053DB4 -_02053D9C: - mov r1, r5 - bl GetEncodedHalfword - ldrh r1, [sp] - cmp r1, r4 - moveq r0, #1 - beq _02053DC4 -_02053DB4: - ldrb r1, [r0] - cmp r1, #0 - bne _02053D9C - mov r0, #0 -_02053DC4: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02053DCC: .word 0x00000229 - arm_func_end sub_02053D1C - - arm_func_start GetEvoFamily -GetEvoFamily: ; 0x02053DD0 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - ldr r2, _02053E84 ; =_020A3248 - ldrsh r3, [r0, #4] - ldr r4, [r2, #8] - ldr r2, [r2, #0xc] - mov r7, r1 - strh r3, [r7] - ldrb r1, [r0, #1] - str r2, [sp, #4] - str r4, [sp] - strb r1, [r7, #2] - ldrb r5, [r0, #6] - mov r3, #0 - ldrsh r2, [r0, #4] - cmp r5, #0 - ldrneb r1, [r0, #7] - add r4, r3, #1 - add r8, sp, #0 - cmpne r1, #0 - strne r1, [sp] - ldreqb r0, [r0, #7] - strne r5, [sp, #4] - streq r5, [sp] - streq r0, [sp, #4] - mov r5, #0 - b _02053E70 -_02053E3C: - ldr r6, [r8, r5, lsl #2] - cmp r6, #0 - beq _02053E78 - mov r0, r2 - bl GetMonsterPreEvolution - movs r2, r0 - beq _02053E78 - mov r1, r4, lsl #2 - add r0, r7, r4, lsl #2 - strh r2, [r7, r1] - strb r6, [r0, #2] - add r4, r4, #1 - add r5, r5, #1 -_02053E70: - cmp r5, #2 - blt _02053E3C -_02053E78: - mov r0, r4 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02053E84: .word _020A3248 - arm_func_end GetEvoFamily - - arm_func_start GetEvolutions -GetEvolutions: ; 0x02053E88 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - mov sb, r1 - mov r8, r2 - mov fp, r3 - mov r5, #0 - mov r6, #1 -_02053EA4: - mov r0, r6, lsl #0x10 - mov r7, r0, asr #0x10 - mov r0, r7 - bl GetMonsterPreEvolution - cmp sl, r0 - bne _02053EF4 - cmp r8, #0 - bne _02053EE0 - mov r0, sl - bl GetSpriteSize - mov r4, r0 - mov r0, r7 - bl GetSpriteSize - cmp r4, r0 - bne _02053EF4 -_02053EE0: - cmp fp, #0 - cmpeq r7, #0x140 - movne r0, r5, lsl #1 - strneh r7, [sb, r0] - addne r5, r5, #1 -_02053EF4: - ldr r0, _02053F0C ; =0x00000483 - add r6, r6, #1 - cmp r6, r0 - blt _02053EA4 - mov r0, r5 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02053F0C: .word 0x00000483 - arm_func_end GetEvolutions - - arm_func_start sub_02053F10 -sub_02053F10: ; 0x02053F10 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x28 - mov r5, r0 - cmp r2, #0 - beq _02053F38 - mov r2, #1 - add r0, sp, #8 - rsb r3, r2, #0x3e8 - bl sub_02053B60 - b _02053F60 -_02053F38: - mov r0, r1 - bl FemaleToMaleForm - mov r4, #0 - mov r2, #1 - mov r1, r0 - str r4, [sp] - add r0, sp, #8 - rsb r3, r2, #0x3e8 - str r4, [sp, #4] - bl sub_02053904 -_02053F60: - mov r8, r0 - cmp r8, #0 - moveq r0, #0x198 - streqh r0, [sp, #8] - moveq r8, #1 - mov r4, #0 - add r7, sp, #8 - mov r6, #6 - b _02053F98 -_02053F84: - mla r0, r4, r6, r5 - mov r1, r4, lsl #1 - ldrh r1, [r7, r1] - bl GetInfoMoveGround - add r4, r4, #1 -_02053F98: - cmp r4, r8 - blt _02053F84 - mov r2, #0 - mov r0, #6 - b _02053FB8 -_02053FAC: - mul r1, r4, r0 - strb r2, [r5, r1] - add r4, r4, #1 -_02053FB8: - cmp r4, #4 - blt _02053FAC - add sp, sp, #0x28 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end sub_02053F10 - - arm_func_start ShuffleHiddenPower -ShuffleHiddenPower: ; 0x02053FC8 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r0, #0xa - bl RandIntSafe - ldr r1, _02054020 ; =HIDDEN_POWER_BASE_POWER_TABLE - mov r5, #0 - ldr r0, [r1, r0, lsl #2] - mov r4, #0x12 - strh r0, [r6] - b _02054008 -_02053FF0: - mov r0, r4 - bl RandIntSafe - strb r0, [r6, #2] - tst r0, #0xff - bne _02054010 - add r5, r5, #1 -_02054008: - cmp r5, #0x64 - blt _02053FF0 -_02054010: - cmp r5, #0x64 - moveq r0, #2 - streqb r0, [r6, #2] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02054020: .word HIDDEN_POWER_BASE_POWER_TABLE - arm_func_end ShuffleHiddenPower - - arm_func_start GetBaseForm -GetBaseForm: ; 0x02054024 - cmp r0, #0x17c - ldreq r0, _02054244 ; =0x0000017B - bxeq lr - ldr r3, _02054248 ; =0x0000017D - cmp r0, r3 - subeq r0, r3, #2 - bxeq lr - add r1, r3, #1 - cmp r0, r1 - subeq r0, r3, #2 - bxeq lr - cmp r0, #0x3d4 - rsbeq r0, r3, #0x550 - bxeq lr - add r1, r3, #0x258 - cmp r0, r1 - rsbeq r0, r3, #0x550 - bxeq lr - ldr r2, _0205424C ; =0x000003D6 - cmp r0, r2 - subeq r0, r2, #3 - bxeq lr - cmp r0, #0xca - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xcb - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xcc - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xcd - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xce - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xcf - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xd0 - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xd1 - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xd2 - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xd3 - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xd4 - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xd5 - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xd6 - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xd7 - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xd8 - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xd9 - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xda - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xdb - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xdc - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xdd - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xde - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xdf - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xe0 - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xe1 - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xe2 - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xe3 - moveq r0, #0xc9 - bxeq lr - cmp r0, #0xe4 - moveq r0, #0xc9 - bxeq lr - add r1, r3, #0x26 - cmp r0, r1 - subeq r0, r2, #0x234 - bxeq lr - cmp r0, #0x1a4 - subeq r0, r2, #0x234 - bxeq lr - add r1, r3, #0x28 - cmp r0, r1 - subeq r0, r2, #0x234 - bxeq lr - cmp r0, #0x1cc - moveq r0, #0x1cc - bxeq lr - add r1, r3, #0x50 - cmp r0, r1 - moveq r0, #0x1cc - bxeq lr - add r1, r2, #0x4e - cmp r0, r1 - moveq r0, r1 - bxeq lr - add r1, r2, #0x4f - cmp r0, r1 - addeq r0, r2, #0x4e - bxeq lr - add r1, r3, #0x9a - cmp r0, r1 - subeq r0, r2, #0x1c0 - bxeq lr - cmp r0, #0x218 - addeq r0, r3, #0x94 - bx lr - .align 2, 0 -_02054244: .word 0x0000017B -_02054248: .word 0x0000017D -_0205424C: .word 0x000003D6 - arm_func_end GetBaseForm - - arm_func_start GetBaseFormBurmyWormadamShellosGastrodonCherrim -GetBaseFormBurmyWormadamShellosGastrodonCherrim: ; 0x02054250 - ldr r2, _02054390 ; =0x000001BF - cmp r0, r2 - moveq r0, r2 - bxeq lr - cmp r0, #0x1c0 - moveq r0, r2 - bxeq lr - add r1, r2, #2 - cmp r0, r1 - moveq r0, r2 - bxeq lr - add r1, r2, #0x258 - cmp r0, r1 - moveq r0, r2 - bxeq lr - ldr r1, _02054394 ; =0x00000418 - cmp r0, r1 - moveq r0, r2 - bxeq lr - add r3, r1, #1 - cmp r0, r3 - moveq r0, r2 - bxeq lr - add r3, r2, #3 - cmp r0, r3 - moveq r0, r3 - bxeq lr - add r3, r2, #4 - cmp r0, r3 - addeq r0, r2, #3 - bxeq lr - cmp r0, #0x1c4 - addeq r0, r2, #3 - bxeq lr - add r3, r2, #0xf - cmp r0, r3 - moveq r0, r3 - bxeq lr - add r3, r2, #0x10 - cmp r0, r3 - addeq r0, r2, #0xf - bxeq lr - add r3, r1, #0xe - cmp r0, r3 - addeq r0, r2, #0xf - bxeq lr - add r3, r1, #0xf - cmp r0, r3 - addeq r0, r2, #0xf - bxeq lr - cmp r0, #0x1d0 - moveq r0, #0x1d0 - bxeq lr - add r3, r2, #0x12 - cmp r0, r3 - moveq r0, #0x1d0 - bxeq lr - add r3, r1, #0x10 - cmp r0, r3 - moveq r0, #0x1d0 - bxeq lr - add r3, r1, #0x11 - cmp r0, r3 - moveq r0, #0x1d0 - bxeq lr - cmp r0, #0x1cc - moveq r0, #0x1cc - bxeq lr - add r2, r2, #0xe - cmp r0, r2 - moveq r0, #0x1cc - bxeq lr - add r2, r1, #0xc - cmp r0, r2 - moveq r0, r2 - bxeq lr - add r2, r1, #0xd - cmp r0, r2 - addeq r0, r1, #0xc - bx lr - .align 2, 0 -_02054390: .word 0x000001BF -_02054394: .word 0x00000418 - arm_func_end GetBaseFormBurmyWormadamShellosGastrodonCherrim - - arm_func_start GetBaseFormCastformCherrimDeoxys -GetBaseFormCastformCherrimDeoxys: ; 0x02054398 - cmp r0, #0x17c - ldreq r0, _02054458 ; =0x0000017B - bxeq lr - ldr r3, _0205445C ; =0x0000017D - cmp r0, r3 - subeq r0, r3, #2 - bxeq lr - add r1, r3, #1 - cmp r0, r1 - subeq r0, r3, #2 - bxeq lr - cmp r0, #0x3d4 - rsbeq r0, r3, #0x550 - bxeq lr - add r1, r3, #0x258 - cmp r0, r1 - rsbeq r0, r3, #0x550 - bxeq lr - ldr r2, _02054460 ; =0x000003D6 - cmp r0, r2 - subeq r0, r2, #3 - bxeq lr - cmp r0, #0x1cc - moveq r0, #0x1cc - bxeq lr - add r1, r3, #0x50 - cmp r0, r1 - moveq r0, #0x1cc - bxeq lr - add r1, r2, #0x4e - cmp r0, r1 - moveq r0, r1 - bxeq lr - add r1, r2, #0x4f - cmp r0, r1 - addeq r0, r2, #0x4e - bxeq lr - add r1, r3, #0x26 - cmp r0, r1 - subeq r0, r2, #0x234 - bxeq lr - cmp r0, #0x1a4 - subeq r0, r2, #0x234 - bxeq lr - add r1, r3, #0x28 - cmp r0, r1 - subeq r0, r2, #0x234 - bx lr - .align 2, 0 -_02054458: .word 0x0000017B -_0205445C: .word 0x0000017D -_02054460: .word 0x000003D6 - arm_func_end GetBaseFormCastformCherrimDeoxys - - arm_func_start GetAllBaseForms -GetAllBaseForms: ; 0x02054464 - stmdb sp!, {r3, lr} - bl GetBaseForm - bl GetBaseFormBurmyWormadamShellosGastrodonCherrim - ldmia sp!, {r3, pc} - arm_func_end GetAllBaseForms - - arm_func_start GetDexNumberVeneer -GetDexNumberVeneer: ; 0x02054474 - ldr ip, _0205447C ; =GetDexNumber - bx ip - .align 2, 0 -_0205447C: .word GetDexNumber - arm_func_end GetDexNumberVeneer - - arm_func_start GetMonsterIdFromSpawnEntry -GetMonsterIdFromSpawnEntry: ; 0x02054480 - stmdb sp!, {r3, lr} - ldrsh r0, [r0, #6] - ldr r1, _0205449C ; =0x00000483 - bl _s32_div_f - mov r0, r1, lsl #0x10 - mov r0, r0, asr #0x10 - ldmia sp!, {r3, pc} - .align 2, 0 -_0205449C: .word 0x00000483 - arm_func_end GetMonsterIdFromSpawnEntry - - arm_func_start SetMonsterId -SetMonsterId: ; 0x020544A0 - strh r1, [r0, #6] - bx lr - arm_func_end SetMonsterId - - arm_func_start SetMonsterLevelAndId -SetMonsterLevelAndId: ; 0x020544A8 - mov r1, r1, lsl #9 - strh r1, [r0] - strh r2, [r0, #6] - bx lr - arm_func_end SetMonsterLevelAndId - - arm_func_start GetMonsterLevelFromSpawnEntry -GetMonsterLevelFromSpawnEntry: ; 0x020544B8 - ldrh r0, [r0] - mov r0, r0, asr #9 - and r0, r0, #0x7f - bx lr - arm_func_end GetMonsterLevelFromSpawnEntry - - arm_func_start ApplyLevelUpBoostsToGroundMonster -ApplyLevelUpBoostsToGroundMonster: ; 0x020544C8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x4c - mov sl, r0 - ldrb r0, [sl] - mov sb, r1 - mov fp, r2 - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _020546DC - ldrb r0, [sl, #1] - add r6, r0, #1 - b _020546D4 -_02054500: - mov r0, sl - bl sub_020546E8 - ldrsh r0, [sl, #4] - bl FemaleToMaleForm - mov r1, #0 - str r1, [sp] - str r1, [sp, #4] - mov r1, r0 - ldrb r2, [sl, #1] - ldr r3, _020546E4 ; =0x000003E7 - add r0, sp, #0x2a - bl sub_02053904 - str r0, [sp, #8] - cmp r0, #0 - beq _020546D0 - mov r8, #0 - add r5, sl, #0x22 - add r4, sp, #0xc - b _020546C4 -_0205454C: - mov r1, #0 - mov r3, r8, lsl #1 - add r2, sp, #0x2a - mov r0, r1 - ldrh r3, [r2, r3] - b _02054598 -_02054564: - mov r2, #6 - mla r7, r0, r2, sl - ldrb r2, [r7, #0x22] - tst r2, #1 - movne r2, #1 - moveq r2, #0 - tst r2, #0xff - beq _02054594 - ldrh r2, [r7, #0x24] - cmp r2, r3 - moveq r1, #1 - beq _020545A0 -_02054594: - add r0, r0, #1 -_02054598: - cmp r0, #4 - blt _02054564 -_020545A0: - cmp r1, #0 - bne _020546C0 - mov r7, #0 - b _020545F0 -_020545B0: - mov r0, #6 - mul r1, r7, r0 - add r0, sl, r1 - ldrb r0, [r0, #0x22] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - bne _020545EC - add r0, r5, r1 - mov r2, r8, lsl #1 - add r1, sp, #0x2a - ldrh r1, [r1, r2] - bl GetInfoMoveGround - b _020545F8 -_020545EC: - add r7, r7, #1 -_020545F0: - cmp r7, #4 - blt _020545B0 -_020545F8: - cmp fp, #0 - beq _020546C0 - cmp r7, #4 - bne _020546C0 - mov r1, r8, lsl #1 - add r0, sp, #0x2a - mov r7, #0 - ldrh r1, [r0, r1] - mov r3, r7 -_0205461C: - mov r0, #6 - mul lr, r3, r0 - add ip, sl, lr - ldrb r0, [ip, #0x22] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _02054660 - add r2, r4, lr - ldrh r0, [ip, #0x22] - add r7, r7, #1 - strh r0, [r4, lr] - ldrh r0, [ip, #0x24] - strh r0, [r2, #2] - ldrh r0, [ip, #0x26] - strh r0, [r2, #4] -_02054660: - add r3, r3, #1 - cmp r3, #4 - blt _0205461C - mov r0, #6 - mla r0, r3, r0, r4 - bl GetInfoMoveGround - mov r0, r4 - add r1, r7, #1 - bl sub_02015090 - mov r1, #0 - b _020546B8 -_0205468C: - mov r0, #6 - mul r2, r1, r0 - add r0, sl, r2 - add r3, r4, r2 - ldrh r2, [r4, r2] - add r1, r1, #1 - strh r2, [r0, #0x22] - ldrh r2, [r3, #2] - strh r2, [r0, #0x24] - ldrh r2, [r3, #4] - strh r2, [r0, #0x26] -_020546B8: - cmp r1, r7 - blt _0205468C -_020546C0: - add r8, r8, #1 -_020546C4: - ldr r0, [sp, #8] - cmp r8, r0 - blt _0205454C -_020546D0: - add r6, r6, #1 -_020546D4: - cmp r6, sb - ble _02054500 -_020546DC: - add sp, sp, #0x4c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020546E4: .word 0x000003E7 - arm_func_end ApplyLevelUpBoostsToGroundMonster - - arm_func_start sub_020546E8 -sub_020546E8: ; 0x020546E8 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0xc - mov r4, r0 - ldrb r2, [r4, #1] - ldrsh r1, [r4, #4] - add r0, sp, #0 - add r2, r2, #1 - bl GetLvlUpEntry - ldrb r1, [r4, #1] - add r0, r4, #0xa - add r1, r1, #1 - strb r1, [r4, #1] - ldr r1, [sp] - str r1, [r4, #0x10] - ldrh r1, [sp, #4] - bl sub_02054FB8 - ldrb r1, [sp, #6] - add r0, r4, #0xc - bl sub_02054FEC - ldrb r1, [sp, #7] - add r0, r4, #0xd - bl sub_02054FEC - ldrb r1, [sp, #8] - add r0, r4, #0xe - bl sub_02055020 - ldrb r1, [sp, #9] - add r0, r4, #0xf - bl sub_02055020 - add sp, sp, #0xc - ldmia sp!, {r3, r4, pc} - arm_func_end sub_020546E8 - - arm_func_start GetMonsterGenderVeneer -GetMonsterGenderVeneer: ; 0x02054760 - ldr ip, _02054768 ; =GetMonsterGender - bx ip - .align 2, 0 -_02054768: .word GetMonsterGender - arm_func_end GetMonsterGenderVeneer - - arm_func_start IsMonsterValid -IsMonsterValid: ; 0x0205476C - stmdb sp!, {r3, lr} - cmp r0, #0 - ble _02054798 - ldr r1, _020547C0 ; =0x00000229 - cmp r0, r1 - blt _0205478C - cmp r0, #0x258 - ble _02054798 -_0205478C: - ldr r1, _020547C4 ; =0x00000481 - cmp r0, r1 - blt _020547A0 -_02054798: - mov r0, #0 - ldmia sp!, {r3, pc} -_020547A0: - cmp r0, #0x258 - blt _020547B8 - bl GetMonsterGender - cmp r0, #2 - movne r0, #0 - ldmneia sp!, {r3, pc} -_020547B8: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_020547C0: .word 0x00000229 -_020547C4: .word 0x00000481 - arm_func_end IsMonsterValid - - arm_func_start sub_020547C8 -sub_020547C8: ; 0x020547C8 - mov r1, #0 - strh r1, [r0] - str r1, [r0, #4] - bx lr - arm_func_end sub_020547C8 - - arm_func_start sub_020547D8 -sub_020547D8: ; 0x020547D8 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0 - strh r0, [r4] - ldr r0, [r4, #4] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - bl MemFree - mov r0, #0 - str r0, [r4, #4] - ldmia sp!, {r4, pc} - arm_func_end sub_020547D8 - - arm_func_start sub_02054804 -sub_02054804: ; 0x02054804 - stmdb sp!, {r3, lr} - ldr r2, _02054820 ; =_020A3248 - mov r1, #0 - ldr r2, [r2, #4] - str r2, [sp] - blx r2 - ldmia sp!, {r3, pc} - .align 2, 0 -_02054820: .word _020A3248 - arm_func_end sub_02054804 - - arm_func_start sub_02054824 -sub_02054824: ; 0x02054824 - stmdb sp!, {r3, lr} - ldr r2, _02054840 ; =_020A3248 - mov r1, #1 - ldr r2, [r2] - str r2, [sp] - blx r2 - ldmia sp!, {r3, pc} - .align 2, 0 -_02054840: .word _020A3248 - arm_func_end sub_02054824 - - arm_func_start sub_02054844 -sub_02054844: ; 0x02054844 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xd0 - mov r3, #0 - mov sb, r0 - mov r8, r1 - mov r6, r3 - add r2, sp, #0x80 -_02054860: - add r0, r3, #1 - mov r0, r0, lsl #0x10 - str r6, [r2, r3, lsl #3] - add r1, r2, r3, lsl #3 - mov r3, r0, asr #0x10 - str r6, [r1, #4] - cmp r3, #0xa - blt _02054860 - ldr fp, _02054A50 ; =TEAM_MEMBER_TABLE_PTR - mov r7, r6 - add r5, sp, #0x80 - mov r4, #1 -_02054890: - mov r0, r7 - bl IsValidTeamMember - cmp r0, #0 - beq _0205493C - cmp r8, #0 - beq _020548C4 - ldr r1, [fp] - mov r0, #0x44 - smlabb r0, r7, r0, r1 - ldrsh r0, [r0, #4] - bl IsShaymin - cmp r0, #0 - bne _0205493C -_020548C4: - ldr r2, [fp] - mov r0, #0x44 - smlabb r0, r7, r0, r2 - ldrsh r0, [r0, #4] - mov r1, #1 - bl GetKeyM2NSwitch - mov r1, r0, asr #5 - add r1, r0, r1, lsr #26 - mov lr, r1, asr #6 - mov r2, r0, lsr #0x1f - rsb r0, r2, r0, lsl #26 - add r0, r2, r0, ror #26 - mov r1, #0 - add r2, r5, lr, lsl #3 - mov r1, r1, lsl r0 - rsb sl, r0, #0x20 - orr r1, r1, r4, lsr sl - sub sl, r0, #0x20 - ldr ip, [r5, lr, lsl #3] - ldr r3, [r2, #4] - orr r1, r1, r4, lsl sl - orr r1, r3, r1 - orr r0, ip, r4, lsl r0 - stmia r2, {r0, r1} - ldr r0, [r5, lr, lsl #3] - cmp r3, r1 - cmpeq ip, r0 - addne r0, r6, #1 - movne r0, r0, lsl #0x10 - movne r6, r0, asr #0x10 -_0205493C: - add r0, r7, #1 - mov r1, r0, lsl #0x10 - ldr r0, _02054A54 ; =0x0000022B - mov r7, r1, asr #0x10 - cmp r0, r1, asr #16 - bgt _02054890 - strh r6, [sb] - mov r0, r6, lsl #1 - mov r1, #0 - bl MemAlloc - str r0, [sb, #4] - ldr r0, _02054A58 ; =_020A32F8 - bl Debug_Print0 - mov r8, #0 - mov sl, r8 - mov r7, #1 - mov r5, r8 - add fp, sp, #0x80 - mov r4, r8 - b _02054A40 -_0205498C: - mov r1, sl, lsr #0x1f - rsb r0, r1, sl, lsl #26 - add r2, r1, r0, ror #26 - mov r0, sl, asr #5 - add r0, sl, r0, lsr #26 - mov r1, r0, asr #6 - add r0, fp, r1, lsl #3 - ldr r1, [fp, r1, lsl #3] - mov r3, r5, lsl r2 - rsb ip, r2, #0x20 - and r1, r1, r7, lsl r2 - orr r3, r3, r7, lsr ip - sub r2, r2, #0x20 - ldr r0, [r0, #4] - orr r3, r3, r7, lsl r2 - and r2, r3, r0 - mov r0, #0 - cmp r2, r0 - cmpeq r1, r4 - beq _02054A34 - mov r0, sl - mov r1, r7 - bl GetKeyN2MSwitch - ldr r1, [sb, #4] - mov r2, r8, lsl #1 - strh r0, [r1, r2] - ldr r1, [sb, #4] - add r0, sp, #0 - ldrsh r1, [r1, r2] - bl GetNameRaw - ldr r3, [sb, #4] - mov r2, r8, lsl #1 - ldrsh r2, [r3, r2] - ldr r0, _02054A5C ; =_020A3330 - mov r1, r8 - add r3, sp, #0 - bl Debug_Print0 - add r0, r8, #1 - mov r0, r0, lsl #0x10 - cmp r6, r0, asr #16 - mov r8, r0, asr #0x10 - ble _02054A48 -_02054A34: - add r0, sl, #1 - mov r0, r0, lsl #0x10 - mov sl, r0, asr #0x10 -_02054A40: - cmp sl, #0x280 - blt _0205498C -_02054A48: - add sp, sp, #0xd0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02054A50: .word TEAM_MEMBER_TABLE_PTR -_02054A54: .word 0x0000022B -_02054A58: .word _020A32F8 -_02054A5C: .word _020A3330 - arm_func_end sub_02054844 - - arm_func_start SprintfStatic__02054A60 -SprintfStatic__02054A60: ; 0x02054A60 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - add r2, sp, #0xc - bic r2, r2, #3 - ldr r1, [sp, #0xc] - add r2, r2, #4 - bl vsprintf - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end SprintfStatic__02054A60 diff --git a/asm/main_02052B44.s b/asm/main_02052B44.s new file mode 100644 index 00000000..525d9014 --- /dev/null +++ b/asm/main_02052B44.s @@ -0,0 +1,2451 @@ + .include "asm/macros.inc" + .include "main_02052B44.inc" + + .text + + arm_func_start GetSpawnThreshold +GetSpawnThreshold: ; 0x02052B44 + ldr r2, _02052B5C ; =MONSTER_DATA_TABLE_PTR + mov r1, #0x44 + ldr r2, [r2] + smlabb r0, r0, r1, r2 + ldrb r0, [r0, #0x31] + bx lr + .align 2, 0 +_02052B5C: .word MONSTER_DATA_TABLE_PTR + arm_func_end GetSpawnThreshold + + arm_func_start NeedsItemToSpawn +NeedsItemToSpawn: ; 0x02052B60 + ldr r2, _02052B88 ; =MONSTER_DATA_TABLE_PTR + mov r1, #0x44 + ldr r2, [r2] + smlabb r0, r0, r1, r2 + ldrb r0, [r0, #0x1a] + tst r0, #0x80 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_02052B88: .word MONSTER_DATA_TABLE_PTR + arm_func_end NeedsItemToSpawn + + arm_func_start GetExclusiveItem +GetExclusiveItem: ; 0x02052B8C + ldr r2, _02052BB4 ; =MONSTER_DATA_TABLE_PTR + mov r3, r1, lsr #0x1f + ldr ip, [r2] + mov r2, #0x44 + rsb r1, r3, r1, lsl #30 + smlabb r2, r0, r2, ip + add r0, r3, r1, ror #30 + add r0, r2, r0, lsl #1 + ldrsh r0, [r0, #0x34] + bx lr + .align 2, 0 +_02052BB4: .word MONSTER_DATA_TABLE_PTR + arm_func_end GetExclusiveItem + + arm_func_start GetFamilyIndex +GetFamilyIndex: ; 0x02052BB8 + ldr r2, _02052BD0 ; =MONSTER_DATA_TABLE_PTR + mov r1, #0x44 + ldr r2, [r2] + smlabb r0, r0, r1, r2 + ldrsh r0, [r0, #0x32] + bx lr + .align 2, 0 +_02052BD0: .word MONSTER_DATA_TABLE_PTR + arm_func_end GetFamilyIndex + + arm_func_start LoadM2nAndN2m +LoadM2nAndN2m: ; 0x02052BD4 + stmdb sp!, {r3, lr} +#ifdef EUROPE + sub sp, sp, #0x100 +#endif + ldr r0, _02052C2C ; =_020B09C8 + bl PointsToZero + cmp r0, #0 + beq _02052C00 +#ifdef EUROPE + bl GetLanguage + mov r2, r0 + ldr r1, _02052FA8 ; =_020B12F4_EU + add r0, sp, #0 + ldr r2, [r1, r2, lsl #2] + ldr r1, _02052FAC ; =_020A3210 + bl SprintfStatic__02052418 +#endif + ldr r0, _02052C2C ; =_020B09C8 + bl ZInit8 + ldr r0, _02052C2C ; =_020B09C8 +#ifdef EUROPE + add r1, sp, #0 +#else + ldr r1, _02052C30 ; =_020A3210 +#endif + mov r2, #0 + bl LoadFileFromRom +_02052C00: + ldr r0, _02052C34 ; =_020B09D0 + bl PointsToZero + cmp r0, #0 +#ifdef EUROPE + beq _02052F9C + bl GetLanguage + mov r2, r0 + ldr r1, _02052FB4 ; =_020B1308_EU + add r0, sp, #0 + ldr r2, [r1, r2, lsl #2] + ldr r1, _02052FAC ; =_020A3210 + bl SprintfStatic__02052418 +#else + ldmeqia sp!, {r3, pc} +#endif + ldr r0, _02052C34 ; =_020B09D0 + bl ZInit8 + ldr r0, _02052C34 ; =_020B09D0 +#ifdef EUROPE + add r1, sp, #0 +#else + ldr r1, _02052C38 ; =_020A322C +#endif + mov r2, #0 + bl LoadFileFromRom +#ifdef EUROPE +_02052F9C: + add sp, sp, #0x100 +#endif + ldmia sp!, {r3, pc} + .align 2, 0 +_02052C2C: .word _020B09C8 +#ifdef EUROPE +_02052FA8: .word _020B12F4_EU +_02052FAC: .word _020A3210 +#else +_02052C30: .word _020A3210 +#endif +_02052C34: .word _020B09D0 +#ifdef EUROPE +_02052FB4: .word _020B1308_EU +#else +_02052C38: .word _020A322C +#endif + arm_func_end LoadM2nAndN2m + + arm_func_start sub_02052C3C +sub_02052C3C: ; 0x02052C3C + stmdb sp!, {r3, lr} + ldr r1, _02052C68 ; =TEAM_MEMBER_TABLE + ldr r0, _02052C6C ; =TEAM_MEMBER_TABLE_PTR + str r1, [r0] + bl LoadMonsterMd + ldr r0, _02052C70 ; =LEVEL_UP_DATA_MONSTER_ID + mov r1, #0 + strh r1, [r0] + bl sub_020550DC + bl sub_020560B8 + ldmia sp!, {r3, pc} + .align 2, 0 +_02052C68: .word TEAM_MEMBER_TABLE +_02052C6C: .word TEAM_MEMBER_TABLE_PTR +_02052C70: .word LEVEL_UP_DATA_MONSTER_ID + arm_func_end sub_02052C3C + + arm_func_start sub_02052C74 +sub_02052C74: ; 0x02052C74 + stmdb sp!, {r3, lr} + bl sub_020550E0 + bl RemoveActiveMembersFromAllTeams + ldr r2, _02052CD4 ; =TEAM_MEMBER_TABLE_PTR + mov lr, #0 + ldr r0, [r2] + mov r3, lr + add r0, r0, #0x9000 + str lr, [r0, #0x878] + str lr, [r0, #0x87c] + mov r0, #0x44 +_02052CA0: + mul ip, lr, r0 + ldr r1, [r2] + add lr, lr, #1 + add r1, r1, ip + add r1, r1, #0x9800 + strh r3, [r1, #0x9c] + ldr r1, [r2] + cmp lr, #4 + add r1, r1, ip + add r1, r1, #0x9000 + strb r3, [r1, #0x898] + blt _02052CA0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02052CD4: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02052C74 + + arm_func_start sub_02052CD8 +sub_02052CD8: ; 0x02052CD8 + stmdb sp!, {r3, lr} + bl sub_02055118 + bl RemoveActiveMembersFromSpecialEpisodeTeam + ldmia sp!, {r3, pc} + arm_func_end sub_02052CD8 + + arm_func_start sub_02052CE8 +sub_02052CE8: ; 0x02052CE8 + ldr ip, _02052CF0 ; =RemoveActiveMembersFromRescueTeam + bx ip + .align 2, 0 +_02052CF0: .word RemoveActiveMembersFromRescueTeam + arm_func_end sub_02052CE8 + + arm_func_start sub_02052CF4 +sub_02052CF4: ; 0x02052CF4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x1c + mov r8, r0 + mov r4, #1 + mov r7, r1 + strb r4, [r8] + mov r0, r7 + strb r4, [r8, #1] + mov r6, r2 + mov r5, r3 + ldr r4, [sp, #0x38] + bl GetBaseHp + strh r0, [r8, #0xa] + mov r0, r7 + mov r1, #0 + bl GetBaseOffensiveStat + strb r0, [r8, #0xc] + mov r0, r7 + mov r1, #1 + bl GetBaseOffensiveStat + strb r0, [r8, #0xd] + mov r0, r7 + mov r1, #0 + bl GetBaseDefensiveStat + strb r0, [r8, #0xe] + mov r0, r7 + mov r1, #1 + bl GetBaseDefensiveStat + strb r0, [r8, #0xf] + strh r7, [r8, #4] + mov r3, #0 + str r3, [r8, #0x10] + strb r3, [r8, #0x20] + mov r0, #1 + strh r0, [r8, #8] + ldrb r2, [r5] + add r0, r8, #0x14 + mov r1, r7 + strb r2, [r8, #2] + ldrb r2, [r5, #1] + strb r2, [r8, #3] + strb r3, [r8, #6] + strb r3, [r8, #7] + ldrsh r2, [r8, #8] + bl EnableAllLearnableIqSkills + cmp r4, #0 + beq _02052DDC + mov r3, #0 + add r1, sp, #0 +_02052DB8: + mov r2, r3, lsl #1 + ldrh r0, [r4, r2] + add r3, r3, #1 + cmp r3, #4 + strh r0, [r1, r2] + blt _02052DB8 + add r0, r8, #0x22 + bl GetInfoGroundMoveset + b _02052DEC +_02052DDC: + ldrb r2, [sp, #0x3c] + mov r1, r7 + add r0, r8, #0x22 + bl sub_02053F10 +_02052DEC: + cmp r6, #0 + bne _02052E14 + add r0, sp, #8 + mov r1, r7 + bl GetNameRaw + add r1, sp, #8 + add r0, r8, #0x3a + mov r2, #0xa + bl StrncpyName + b _02052E24 +_02052E14: + mov r1, r6 + add r0, r8, #0x3a + mov r2, #0xa + bl StrncpySimple +_02052E24: + add sp, sp, #0x1c + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + arm_func_end sub_02052CF4 + + arm_func_start sub_02052E2C +sub_02052E2C: ; 0x02052E2C + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr lr, [sp, #0x10] + mov ip, #0 + str lr, [sp] + str ip, [sp, #4] + bl sub_02052CF4 + add sp, sp, #8 + ldmia sp!, {r3, pc} + arm_func_end sub_02052E2C + + arm_func_start GuestMonsterToGroundMonster +GuestMonsterToGroundMonster: ; 0x02052E50 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r0, #1 + mov r4, r1 + strb r0, [r5] + ldrsh r1, [r4, #0x12] + mov r2, #0 + add r0, r5, #0x14 + strb r1, [r5, #1] + ldrsh r1, [r4, #0x10] + strh r1, [r5, #0xa] + ldrsh r1, [r4, #0x16] + strb r1, [r5, #0xc] + ldrsh r1, [r4, #0x18] + strb r1, [r5, #0xd] + ldrsh r1, [r4, #0x1a] + strb r1, [r5, #0xe] + ldrsh r1, [r4, #0x1c] + strb r1, [r5, #0xf] + ldrsh r1, [r4, #4] + strh r1, [r5, #4] + ldr r1, [r4, #0x20] + str r1, [r5, #0x10] + strb r2, [r5, #0x20] + ldrsh r1, [r4, #0x14] + strh r1, [r5, #8] + ldrb r1, [r4, #6] + strb r1, [r5, #2] + ldrb r1, [r4, #7] + strb r1, [r5, #3] + strb r2, [r5, #6] + strb r2, [r5, #7] + ldrsh r1, [r5, #4] + ldrsh r2, [r5, #8] + bl EnableAllLearnableIqSkills + add r0, r5, #0x22 + add r1, r4, #8 + bl GetInfoGroundMoveset + ldr r1, [r4] + add r0, r5, #0x3a + mov r2, #0xa + bl StrncpySimple + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GuestMonsterToGroundMonster + + arm_func_start SetBaseStatsMovesGroundMonster +SetBaseStatsMovesGroundMonster: ; 0x02052EFC + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #1 + strb r0, [r4, #1] + ldrsh r0, [r4, #4] + bl GetBaseHp + strh r0, [r4, #0xa] + ldrsh r0, [r4, #4] + mov r1, #0 + bl GetBaseOffensiveStat + strb r0, [r4, #0xc] + ldrsh r0, [r4, #4] + mov r1, #1 + bl GetBaseOffensiveStat + strb r0, [r4, #0xd] + ldrsh r0, [r4, #4] + mov r1, #0 + bl GetBaseDefensiveStat + strb r0, [r4, #0xe] + ldrsh r0, [r4, #4] + mov r1, #1 + bl GetBaseDefensiveStat + strb r0, [r4, #0xf] + mov r0, #0 + str r0, [r4, #0x10] + strb r0, [r4, #0x20] + mov r2, #1 + strh r2, [r4, #8] + ldrsh r1, [r4, #4] + add r0, r4, #0x14 + bl EnableAllLearnableIqSkills + ldrsh r1, [r4, #4] + add r0, r4, #0x22 + mov r2, #0 + bl sub_02053F10 + ldmia sp!, {r4, pc} + arm_func_end SetBaseStatsMovesGroundMonster + + arm_func_start sub_02052F8C +sub_02052F8C: ; 0x02052F8C + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr lr, [sp, #0x10] + mov ip, #1 + str lr, [sp] + str ip, [sp, #4] + bl sub_02052CF4 + add sp, sp, #8 + ldmia sp!, {r3, pc} + arm_func_end sub_02052F8C + + arm_func_start StrcmpMonsterName +StrcmpMonsterName: ; 0x02052FB0 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x14 + mov r4, r0 + mov r0, r1 + bl GetNameString + mov r1, r0 + add r0, sp, #0 +#ifdef JAPAN + bl sub_02025304_JP +#else + bl StrcpyName +#endif + add r1, sp, #0 + mov r0, r4 + mov r2, #0xa + bl StrncmpSimple + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + add sp, sp, #0x14 + ldmia sp!, {r3, r4, pc} + arm_func_end StrcmpMonsterName + + arm_func_start sub_02052FF8 +sub_02052FF8: ; 0x02052FF8 + stmdb sp!, {r3, lr} + ldr r2, _02053034 ; =TEAM_MEMBER_TABLE_PTR + mov r3, #0x44 + ldr ip, [r2] + mov r2, #0xa + smlabb r0, r0, r3, ip + smlabb r1, r1, r3, ip + add r0, r0, #0x3a + add r1, r1, #0x3a + bl sub_01FF8F28 + cmp r0, #0 + movlt r0, #1 + movge r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + .align 2, 0 +_02053034: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02052FF8 + + arm_func_start sub_02053038 +sub_02053038: ; 0x02053038 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x48 + mov ip, r1 + mov lr, r0 + cmp ip, #0xd + blo _020530BC + ldr r6, _020530CC ; =_020A328C + add r5, sp, #0 + mov r4, #4 +_0205305C: + ldmia r6!, {r0, r1, r2, r3} + stmia r5!, {r0, r1, r2, r3} + subs r4, r4, #1 + bne _0205305C + ldmia r6, {r0, r1} + stmia r5, {r0, r1} + mov r3, #0 + add r1, sp, #0 + b _020530AC +_02053080: + mov r2, r3, lsl #3 + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _020530B4 + cmp lr, r0 + addeq r0, r1, r2 + ldreq r0, [r0, #4] + cmpeq ip, r0 + moveq r0, #1 + beq _020530C4 + add r3, r3, #1 +_020530AC: + cmp r3, #0xa + blt _02053080 +_020530B4: + mov r0, #0 + b _020530C4 +_020530BC: + ldr r0, _020530D0 ; =_020A327C + ldrb r0, [r0, ip] +_020530C4: + add sp, sp, #0x48 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_020530CC: .word _020A328C +_020530D0: .word _020A327C + arm_func_end sub_02053038 + + arm_func_start sub_020530D4 +sub_020530D4: ; 0x020530D4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + mov r4, r0 + ldrb r5, [r4] + mov r0, #0x44 + ldr ip, _02053170 ; =TEAM_MEMBER_TABLE_PTR + tst r5, #1 + smulbb r6, r1, r0 + movne r0, #1 + moveq r0, #0 + mov r3, r2 + ldr r7, [ip] + tst r0, #0xff + beq _02053158 + ldrh r5, [r4, #0x3e] + ldrh lr, [r4, #0x40] + ldrh ip, [r4, #0x42] + mov r0, r4 + mov r2, r1 + strh r5, [sp] + add r1, r7, r6 + strh lr, [sp, #2] + strh ip, [sp, #4] + ldrb r5, [r4] + bl sub_02053250 + ldrh r2, [sp] + ldrh r1, [sp, #2] + ldrh r0, [sp, #4] + strh r2, [r4, #0x3e] + strh r1, [r4, #0x40] + strh r0, [r4, #0x42] + strb r5, [r4] + b _02053168 +_02053158: + mov r0, r4 + mov r2, r1 + add r1, r7, r6 + bl sub_02053250 +_02053168: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02053170: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_020530D4 + + arm_func_start sub_02053174 +sub_02053174: ; 0x02053174 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0xc + mov r5, r0 + ldrb r6, [r5] + mov r0, #0x44 + ldr r4, _02053220 ; =TEAM_MEMBER_TABLE_PTR + tst r6, #1 + smulbb r8, r1, r0 + movne r0, #1 + moveq r0, #0 + mov ip, r2 + ldr sb, [r4] + tst r0, #0xff + beq _02053200 + ldrh r7, [r5, #0x3e] + ldrh r6, [r5, #0x40] + ldrh lr, [r5, #0x42] + ldrb r4, [r5] + mov r0, r5 + mov r2, r1 + str r3, [sp] + mov r3, ip + strh r7, [sp, #4] + add r1, sb, r8 + strh r6, [sp, #6] + strh lr, [sp, #8] + bl sub_02053374 + ldrh r2, [sp, #4] + ldrh r1, [sp, #6] + ldrh r0, [sp, #8] + strh r2, [r5, #0x3e] + strh r1, [r5, #0x40] + strh r0, [r5, #0x42] + strb r4, [r5] + b _02053218 +_02053200: + str r3, [sp] + mov r0, r5 + mov r2, r1 + mov r3, ip + add r1, sb, r8 + bl sub_02053374 +_02053218: + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02053220: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02053174 + + arm_func_start sub_02053224 +sub_02053224: ; 0x02053224 + stmdb sp!, {r3, lr} + ldr r3, _0205324C ; =TEAM_MEMBER_TABLE_PTR + mov ip, r1 + ldr r3, [r3] + mov r1, #0x44 + smlabb r1, ip, r1, r3 + mov r3, r2 + mov r2, ip + bl sub_02053250 + ldmia sp!, {r3, pc} + .align 2, 0 +_0205324C: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02053224 + + arm_func_start sub_02053250 +sub_02053250: ; 0x02053250 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r5, r1 + ldrb r1, [r5] + mov r6, r0 + add r0, r5, #0x14 + strb r1, [r6] + ldrb r1, [r5, #1] + add r3, r6, #0x4c + mov r4, r2 + strb r1, [r6, #2] + ldrsh r1, [r5, #8] + strh r1, [r6, #6] + ldmia r0, {r0, r1, r2} + stmia r3, {r0, r1, r2} + add r0, r6, #0x5a + bl ShuffleHiddenPower + ldrb r1, [r5, #2] + mov r0, r4 + strb r1, [r6, #3] + ldrb r1, [r5, #3] + strb r1, [r6, #4] + bl sub_020564B0 + strb r0, [r6, #1] + strh r4, [r6, #8] + ldrsh r0, [r5, #4] + mov r3, #0 + strh r0, [r6, #0xc] + ldrb r0, [r5, #0x20] + strb r0, [r6, #0x58] + ldrsh r0, [r5, #0xa] + strh r0, [r6, #0x10] + strh r0, [r6, #0xe] +_020532D4: + add r2, r5, r3 + ldrb r0, [r2, #0xc] + add r1, r6, r3 + add r3, r3, #1 + strb r0, [r1, #0x12] + ldrb r0, [r2, #0xe] + cmp r3, #2 + strb r0, [r1, #0x14] + blt _020532D4 + ldr r2, [r5, #0x10] + add r0, r6, #0x1c + add r1, r5, #0x22 + str r2, [r6, #0x18] + bl GroundToDungeonMoveset + add r0, r6, #0x5e + add r1, r5, #0x3a + mov r2, #0xa + bl StrncpySimple + add r0, r6, #0x3e + bl ItemZInit + mov r0, #0x64 + bl sub_02050FF8 + strh r0, [sp, #4] + mov r0, r0, lsr #0x10 + strh r0, [sp, #6] + ldrh r2, [sp, #4] + ldrh r1, [sp, #6] + mov r0, #0x64 + strh r2, [r6, #0x44] + strh r1, [r6, #0x46] + bl sub_02050FF8 + strh r0, [sp] + mov r0, r0, lsr #0x10 + strh r0, [sp, #2] + ldrh r1, [sp] + ldrh r0, [sp, #2] + strh r1, [r6, #0x48] + strh r0, [r6, #0x4a] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end sub_02053250 + + arm_func_start sub_02053374 +sub_02053374: ; 0x02053374 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r5, r1 + ldrb r1, [r5] + mov r6, r0 + add r0, r5, #0x14 + strb r1, [r6] + ldrb r1, [r5, #1] + add r3, r6, #0x4c + mov r4, r2 + strb r1, [r6, #2] + ldrsh r1, [r5, #8] + strh r1, [r6, #6] + ldmia r0, {r0, r1, r2} + stmia r3, {r0, r1, r2} + add r0, r6, #0x5a + bl ShuffleHiddenPower + ldrb r2, [r5, #2] + ldrb r1, [sp, #0x18] + mov r0, r4 + strb r2, [r6, #3] + ldrb r2, [r5, #3] + strb r2, [r6, #4] + bl sub_02056504 + strb r0, [r6, #1] + strh r4, [r6, #8] + ldrsh r0, [r5, #4] + mov r3, #0 + strh r0, [r6, #0xc] + ldrb r0, [r5, #0x20] + strb r0, [r6, #0x58] + ldrsh r0, [r5, #0xa] + strh r0, [r6, #0x10] + strh r0, [r6, #0xe] +_020533FC: + add r2, r5, r3 + ldrb r0, [r2, #0xc] + add r1, r6, r3 + add r3, r3, #1 + strb r0, [r1, #0x12] + ldrb r0, [r2, #0xe] + cmp r3, #2 + strb r0, [r1, #0x14] + blt _020533FC + ldr r2, [r5, #0x10] + add r0, r6, #0x1c + add r1, r5, #0x22 + str r2, [r6, #0x18] + bl GroundToDungeonMoveset + add r0, r6, #0x5e + add r1, r5, #0x3a + mov r2, #0xa + bl StrncpySimple + add r0, r6, #0x3e + bl ItemZInit + mov r0, #0x64 + bl sub_02050FF8 + strh r0, [sp, #4] + mov r0, r0, lsr #0x10 + strh r0, [sp, #6] + ldrh r2, [sp, #4] + ldrh r1, [sp, #6] + mov r0, #0x64 + strh r2, [r6, #0x44] + strh r1, [r6, #0x46] + bl sub_02050FF8 + strh r0, [sp] + mov r0, r0, lsr #0x10 + strh r0, [sp, #2] + ldrh r1, [sp] + ldrh r0, [sp, #2] + strh r1, [r6, #0x48] + strh r0, [r6, #0x4a] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end sub_02053374 + + arm_func_start sub_0205349C +sub_0205349C: ; 0x0205349C + ldr r3, _020534B4 ; =TEAM_MEMBER_TABLE_PTR + ldr ip, _020534B8 ; =sub_020534BC + ldr r3, [r3] + mov r2, #0x44 + smlabb r0, r0, r2, r3 + bx ip + .align 2, 0 +_020534B4: .word TEAM_MEMBER_TABLE_PTR +_020534B8: .word sub_020534BC + arm_func_end sub_0205349C + + arm_func_start sub_020534BC +sub_020534BC: ; 0x020534BC + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + ldrb r1, [r4] + mov r5, r0 + add r0, r4, #0x4c + strb r1, [r5] + ldrb r1, [r4, #2] + add ip, r5, #0x14 + mov r3, #0 + strb r1, [r5, #1] + ldrsh r1, [r4, #6] + strh r1, [r5, #8] + ldmia r0, {r0, r1, r2} + stmia ip, {r0, r1, r2} + ldrb r0, [r4, #3] + strb r0, [r5, #2] + ldrb r0, [r4, #4] + strb r0, [r5, #3] + ldrsh r0, [r4, #0xc] + strh r0, [r5, #4] + ldrb r0, [r4, #0x58] + strb r0, [r5, #0x20] + ldrsh r0, [r4, #0x10] + strh r0, [r5, #0xa] +_0205351C: + add r2, r4, r3 + ldrb r0, [r2, #0x12] + add r1, r5, r3 + add r3, r3, #1 + strb r0, [r1, #0xc] + ldrb r0, [r2, #0x14] + cmp r3, #2 + strb r0, [r1, #0xe] + blt _0205351C + ldr r2, [r4, #0x18] + add r0, r5, #0x22 + add r1, r4, #0x1c + str r2, [r5, #0x10] + bl DungeonToGroundMoveset + add r0, r5, #0x3a + add r1, r4, #0x5e + mov r2, #0xa + bl StrncpySimple + ldmia sp!, {r3, r4, r5, pc} + arm_func_end sub_020534BC + + arm_func_start sub_02053568 +sub_02053568: ; 0x02053568 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r4, _0205361C ; =_020A3258 + b _0205358C +_02053578: + ldrsh r1, [r5, #4] + bl DexNumbersEqual + cmp r0, #0 + bne _02053598 + add r4, r4, #4 +_0205358C: + ldrsh r0, [r4] + cmp r0, #0 + bne _02053578 +_02053598: + ldrsh r0, [r4] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + add r0, r5, #0x22 + bl GetNbMoves + cmp r0, #4 + bne _02053604 + ldrsh r0, [r4] + cmp r0, #0x148 + ldmneia sp!, {r3, r4, r5, pc} + ldr r1, _02053620 ; =0x0000013B + add r0, r5, #0x22 + bl GetMovesetIdx__02013CAC + mvn r1, #0 + cmp r0, r1 + ldmeqia sp!, {r3, r4, r5, pc} + mov r1, #6 + mul r2, r0, r1 + add r3, r5, #0x22 + mov r0, #0 + strb r0, [r3, r2] + ldrh r1, [r4, #2] + add r0, r3, r2 + bl GetInfoMoveGround + ldr r0, _02053624 ; =_020A32D4 + bl Debug_Print0 + ldmia sp!, {r3, r4, r5, pc} +_02053604: + add r2, r5, #0x22 + mov r1, #6 + mla r0, r1, r0, r2 + ldrh r1, [r4, #2] + bl GetInfoMoveGround + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0205361C: .word _020A3258 +_02053620: .word 0x0000013B +_02053624: .word _020A32D4 + arm_func_end sub_02053568 + + arm_func_start sub_02053628 +sub_02053628: ; 0x02053628 + b _0205364C +_0205362C: + ldrsh r2, [r0, #4] + cmp r3, r2 + ldreqb r3, [r1, #2] + ldreqb r2, [r0, #2] + cmpeq r3, r2 + addeq r0, r1, #4 + bxeq lr + add r1, r1, #6 + arm_func_end sub_02053628 +_0205364C: + ldrsh r3, [r1] + cmp r3, #0 + bne _0205362C + mov r0, #0 + bx lr + + arm_func_start sub_02053660 +sub_02053660: ; 0x02053660 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + movs r4, r2 + mov r5, r1 + mov r6, r0 + cmpne r5, #0 + mvneq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r1, #0 + mov sb, r1 + add r0, sp, #0 +_02053688: + strb sb, [r0, r1] + add r1, r1, #1 + cmp r1, #4 + blt _02053688 + b _0205375C +_0205369C: + mov r1, r8 + add r0, r6, #0x22 + bl GetMovesetIdx__02013CAC + mvn r1, #0 + cmp r0, r1 + bne _02053758 + add r0, r6, #0x22 + bl GetNbMoves + mov r7, r0 + cmp r7, #4 + bne _02053738 + mov r7, #0 + mov sb, r7 + add r1, sp, #0 +_020536D4: + ldrb r0, [r1, sb] + add sb, sb, #1 + cmp r0, #0 + addeq r7, r7, #1 + cmp sb, #4 + blt _020536D4 + cmp r7, #0 + beq _02053774 + bl Rand16Bit + mov r1, r7 + bl _s32_div_f + mov r7, r1 + mov r0, #6 + mul ip, r7, r0 + add r0, r6, #0x22 + mov r1, r8 + add r2, r6, ip + mov r3, #0 + add r0, r0, ip + strb r3, [r2, #0x22] + bl GetInfoMoveGround + add r0, sp, #0 + mov r1, #1 + strb r1, [r0, r7] + b _02053758 +_02053738: + add r1, r6, #0x22 + mov r0, #6 + mla r0, r7, r0, r1 + mov r1, r8 + bl GetInfoMoveGround + add r0, sp, #0 + mov r1, #1 + strb r1, [r0, r7] +_02053758: + add sb, sb, #1 +_0205375C: + cmp sb, r4 + bge _02053774 + mov r0, sb, lsl #1 + ldrh r8, [r5, r0] + cmp r8, #0 + bne _0205369C +_02053774: + mov r0, #0 + mov r3, r0 + add r2, sp, #0 +_02053780: + ldrb r1, [r2, r3] + add r3, r3, #1 + cmp r1, #0 + addne r0, r0, #1 + cmp r3, #4 + blt _02053780 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end sub_02053660 + + arm_func_start GetLvlUpEntry +GetLvlUpEntry: ; 0x0205379C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0xc + mov r6, r1 + mov r5, r0 + mov r0, r6 + mov r1, #0x258 + mov r4, r2 + bl _s32_div_f + ldr r0, _02053844 ; =LEVEL_UP_DATA_MONSTER_ID + ldrsh r0, [r0] + cmp r0, r1 + beq _02053820 + mov r0, r6 + mov r1, #0x258 + bl _s32_div_f + sub r0, r1, #1 + ldr r2, _02053844 ; =LEVEL_UP_DATA_MONSTER_ID + mov r0, r0, lsl #0x10 + strh r1, [r2] + mov r1, r0, lsr #0x10 + add r2, sp, #4 + mov r0, #5 + mov r3, #0 + bl DirectoryFileMngr_OpenDirectoryFile + ldr r1, [sp, #4] + add r0, sp, #0 + bl HandleSir0Translation + ldr r2, [sp] + ldr r0, _02053848 ; =LEVEL_UP_DATA_DECOMPRESS_BUFFER + mov r1, #0 + bl DecompressAtNormalVeneer + add r0, sp, #4 + bl UnloadFile +_02053820: + subs r4, r4, #1 + ldr r1, _02053848 ; =LEVEL_UP_DATA_DECOMPRESS_BUFFER + movmi r4, #0 + mov r0, #0xc + mla r0, r4, r0, r1 + ldmia r0, {r0, r1, r2} + stmia r5, {r0, r1, r2} + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02053844: .word LEVEL_UP_DATA_MONSTER_ID +_02053848: .word LEVEL_UP_DATA_DECOMPRESS_BUFFER + arm_func_end GetLvlUpEntry + + arm_func_start GetEncodedHalfword +GetEncodedHalfword: ; 0x0205384C + ldrb ip, [r0] + add r2, r0, #1 + mov r0, r2 + tst ip, #0x80 + addne r0, r2, #1 + ldrneb r2, [r2] + moveq r2, ip + moveq ip, #0 + and r3, r2, #0x7f + mov r2, ip, lsl #0x19 + orr r2, r3, r2, lsr #18 + strh r2, [r1] + bx lr + arm_func_end GetEncodedHalfword + + arm_func_start sub_02053880 +sub_02053880: ; 0x02053880 + cmp r0, #0xee + mov r3, #1 + bne _0205389C + ldr r2, _020538F0 ; =_020A18C0 + ldrsh r2, [r2] + cmp r1, r2 + movlt r3, #0 +_0205389C: + cmp r0, #0xef + bne _020538B4 + ldr r2, _020538F4 ; =_020A189C + ldrsh r2, [r2] + cmp r1, r2 + movlt r3, #0 +_020538B4: + cmp r0, #0x110 + bne _020538CC + ldr r2, _020538F8 ; =_020A1884 + ldrsh r2, [r2] + cmp r1, r2 + movlt r3, #0 +_020538CC: + ldr r2, _020538FC ; =0x0000021A + cmp r0, r2 + bne _020538E8 + ldr r0, _02053900 ; =_020A1880 + ldrsh r0, [r0] + cmp r1, r0 + movlt r3, #0 +_020538E8: + mov r0, r3 + bx lr + .align 2, 0 +_020538F0: .word _020A18C0 +_020538F4: .word _020A189C +_020538F8: .word _020A1884 +_020538FC: .word 0x0000021A +_02053900: .word _020A1880 + arm_func_end sub_02053880 + + arm_func_start sub_02053904 +sub_02053904: ; 0x02053904 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r4, _02053A08 ; =0x00000229 + ldr r8, [sp, #0x28] + mov sl, r0 + mov sb, r2 + mov fp, r3 + mov r6, #0 + cmp r1, r4 + moveq r0, r6 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r1, #0 + moveq r0, r6 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r8, #0 + beq _0205394C + ldrsh r5, [sp, #0x2c] + cmp r5, #0 + bgt _02053950 +_0205394C: + mov r5, #0 +_02053950: + mov r0, r1 + bl GetMovesetLevelUpPtr + mov r4, r0 + b _020539F4 +_02053960: + mov r0, r4 + add r1, sp, #0 + bl GetEncodedHalfword + ldrb r1, [r0] + add r4, r0, #1 + cmp r1, sb + bgt _02053A00 + bne _020539F4 + ldrh r0, [sp] + mov r1, fp + mov r7, #1 + bl sub_02053880 + cmp r0, #0 + moveq r7, #0 + cmp r5, #0 + ble _020539D8 + mov r2, #0 + ldrh r0, [sp] + b _020539C8 +_020539AC: + mov r1, r2, lsl #1 + ldrh r1, [r8, r1] + cmp r0, r1 + beq _020539D0 + add r1, r2, #1 + mov r1, r1, lsl #0x10 + mov r2, r1, asr #0x10 +_020539C8: + cmp r2, r5 + blt _020539AC +_020539D0: + cmp r2, r5 + bne _020539F4 +_020539D8: + cmp r7, #0 + beq _020539F4 + cmp r6, #0x10 + ldrlth r1, [sp] + movlt r0, r6, lsl #1 + addlt r6, r6, #1 + strlth r1, [sl, r0] +_020539F4: + ldrb r0, [r4] + cmp r0, #0 + bne _02053960 +_02053A00: + mov r0, r6 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02053A08: .word 0x00000229 + arm_func_end sub_02053904 + + arm_func_start sub_02053A0C +sub_02053A0C: ; 0x02053A0C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r6, r0 + mov r0, r1 + mov r5, r2 + mov r4, r3 + bl FemaleToMaleForm + mov ip, #0 + mov r1, r0 + str ip, [sp] + mov r0, r6 + mov r2, r5 + mov r3, r4 + str ip, [sp, #4] + bl sub_02053904 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end sub_02053A0C + + arm_func_start sub_02053A50 +sub_02053A50: ; 0x02053A50 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + mov r0, r3 + ldr r7, [sp, #0x2c] + mov sb, r1 + mov r8, r2 + mov r5, #0 + bl FemaleToMaleForm + mov r4, r0 + bl sub_02053B38 + cmp r0, #0 + movne r0, r5 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [sp, #0x28] + cmp r0, #1 + bne _02053B30 + mov r0, r4 + bl GetMovesetEggPtr + mov r4, r0 + mov fp, #1 + b _02053B24 +_02053AA4: + mov r0, r4 + add r1, sp, #0 + mov r6, fp + bl GetEncodedHalfword + mov r4, r0 + ldrh r0, [sp] + mov r1, r7 + bl sub_02053880 + cmp r0, #0 + moveq r6, #0 + cmp r6, #0 + beq _02053B24 + mov r2, #0 + mov r3, r2 + ldrh r0, [sp] + b _02053B04 +_02053AE4: + mov r1, r3, lsl #1 + ldrh r1, [sb, r1] + cmp r0, r1 + moveq r2, #1 + beq _02053B0C + add r1, r3, #1 + mov r1, r1, lsl #0x10 + mov r3, r1, asr #0x10 +_02053B04: + cmp r3, r8 + blt _02053AE4 +_02053B0C: + cmp r2, #0 + bne _02053B24 + cmp r5, #0x10 + movlt r1, r5, lsl #1 + strlth r0, [sl, r1] + addlt r5, r5, #1 +_02053B24: + ldrb r0, [r4] + cmp r0, #0 + bne _02053AA4 +_02053B30: + mov r0, r5 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end sub_02053A50 + + arm_func_start sub_02053B38 +sub_02053B38: ; 0x02053B38 + cmp r0, #0 + ble _02053B4C + ldr r1, _02053B5C ; =0x00000229 + cmp r0, r1 + blt _02053B54 +_02053B4C: + mov r0, #1 + bx lr +_02053B54: + mov r0, #0 + bx lr + .align 2, 0 +_02053B5C: .word 0x00000229 + arm_func_end sub_02053B38 + + arm_func_start sub_02053B60 +sub_02053B60: ; 0x02053B60 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x48 + mov r8, r0 + mov r0, r1 + mov r7, r2 + mov r6, r3 + bl FemaleToMaleForm + mov r4, r0 + bl sub_02053B38 + cmp r0, #0 + movne r0, #0 + bne _02053C98 + mov r0, r4 + bl FemaleToMaleForm + mov r5, #0 + mov r1, r0 + str r5, [sp] + mov r0, r8 + mov r2, r7 + mov r3, r6 + str r5, [sp, #4] + bl sub_02053904 + mov r5, r0 + cmp r5, #4 + bge _02053C68 + mov r3, #0 + add r0, sp, #0x28 + b _02053BE0 +_02053BD0: + mov r2, r3, lsl #1 + ldrh r1, [r8, r2] + add r3, r3, #1 + strh r1, [r0, r2] +_02053BE0: + cmp r3, r5 + blt _02053BD0 + mov r2, r5, lsl #0x10 + str r7, [sp] + add r0, sp, #8 + add r1, sp, #0x28 + mov r3, r4 + mov r2, r2, asr #0x10 + str r6, [sp, #4] + bl sub_02053A50 + mov r6, r0 + cmp r6, #0 + ble _02053C68 + add r4, sp, #8 + b _02053C60 +_02053C1C: + mov r0, r6 + bl RandIntSafe + mov r1, r0, lsl #1 + ldrh r2, [r4, r1] + mov r1, r5, lsl #1 + add r3, r0, #1 + strh r2, [r8, r1] + b _02053C50 +_02053C3C: + mov r0, r3, lsl #1 + ldrh r1, [r4, r0] + add r0, r4, r3, lsl #1 + add r3, r3, #1 + strh r1, [r0, #-2] +_02053C50: + cmp r3, r6 + blt _02053C3C + sub r6, r6, #1 + add r5, r5, #1 +_02053C60: + cmp r5, #4 + blt _02053C1C +_02053C68: + mov r0, r5, lsl #0x10 + mov r1, r0, asr #0x10 + mov r2, #0 + b _02053C8C +_02053C78: + add r0, r1, #1 + mov r1, r1, lsl #1 + mov r0, r0, lsl #0x10 + strh r2, [r8, r1] + mov r1, r0, asr #0x10 +_02053C8C: + cmp r1, #4 + blt _02053C78 + mov r0, r5 +_02053C98: + add sp, sp, #0x48 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end sub_02053B60 + + arm_func_start sub_02053CA0 +sub_02053CA0: ; 0x02053CA0 + stmdb sp!, {r4, lr} + mov r4, #0 + ldr lr, _02053D18 ; =FORBIDDEN_FORGOT_MOVE_LIST + b _02053CFC +_02053CB0: + cmp ip, r2 + ldreqb ip, [lr, #2] + cmpeq r3, ip + bne _02053CF8 + mov r2, #1 + cmp r1, #1 + suble r2, r1, #1 + mov r4, #0 + b _02053CDC +_02053CD4: + strh r1, [r0], #2 + add r4, r4, #1 +_02053CDC: + cmp r4, r2 + bge _02053D08 + add r1, lr, r4, lsl #1 + ldrh r1, [r1, #4] + cmp r1, #0 + bne _02053CD4 + b _02053D08 +_02053CF8: + add lr, lr, #6 +_02053CFC: + ldrsh ip, [lr] + cmp ip, #0 + bne _02053CB0 +_02053D08: + mov r1, #0 + strh r1, [r0] + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_02053D18: .word FORBIDDEN_FORGOT_MOVE_LIST + arm_func_end sub_02053CA0 + + arm_func_start sub_02053D1C +sub_02053D1C: ; 0x02053D1C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + ldr r2, _02053DCC ; =0x00000229 + mov r6, r1 + mov r4, r0 + cmp r6, r2 + moveq r0, #0 + beq _02053DC4 + cmp r6, #0 + moveq r0, #0 + beq _02053DC4 + cmp r4, #0x160 + moveq r0, #0 + beq _02053DC4 + mov r0, r6 + bl GetMovesetLevelUpPtr + add r5, sp, #2 + b _02053D80 +_02053D64: + mov r1, r5 + bl GetEncodedHalfword + ldrh r1, [sp, #2] + add r0, r0, #1 + cmp r4, r1 + moveq r0, #1 + beq _02053DC4 +_02053D80: + ldrb r1, [r0] + cmp r1, #0 + bne _02053D64 + mov r0, r6 + bl GetMovesetHmTmPtr + add r5, sp, #0 + b _02053DB4 +_02053D9C: + mov r1, r5 + bl GetEncodedHalfword + ldrh r1, [sp] + cmp r1, r4 + moveq r0, #1 + beq _02053DC4 +_02053DB4: + ldrb r1, [r0] + cmp r1, #0 + bne _02053D9C + mov r0, #0 +_02053DC4: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02053DCC: .word 0x00000229 + arm_func_end sub_02053D1C + + arm_func_start GetEvoFamily +GetEvoFamily: ; 0x02053DD0 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r2, _02053E84 ; =_020A3248 + ldrsh r3, [r0, #4] + ldr r4, [r2, #8] + ldr r2, [r2, #0xc] + mov r7, r1 + strh r3, [r7] + ldrb r1, [r0, #1] + str r2, [sp, #4] + str r4, [sp] + strb r1, [r7, #2] + ldrb r5, [r0, #6] + mov r3, #0 + ldrsh r2, [r0, #4] + cmp r5, #0 + ldrneb r1, [r0, #7] + add r4, r3, #1 + add r8, sp, #0 + cmpne r1, #0 + strne r1, [sp] + ldreqb r0, [r0, #7] + strne r5, [sp, #4] + streq r5, [sp] + streq r0, [sp, #4] + mov r5, #0 + b _02053E70 +_02053E3C: + ldr r6, [r8, r5, lsl #2] + cmp r6, #0 + beq _02053E78 + mov r0, r2 + bl GetMonsterPreEvolution + movs r2, r0 + beq _02053E78 + mov r1, r4, lsl #2 + add r0, r7, r4, lsl #2 + strh r2, [r7, r1] + strb r6, [r0, #2] + add r4, r4, #1 + add r5, r5, #1 +_02053E70: + cmp r5, #2 + blt _02053E3C +_02053E78: + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02053E84: .word _020A3248 + arm_func_end GetEvoFamily + + arm_func_start GetEvolutions +GetEvolutions: ; 0x02053E88 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + mov sb, r1 + mov r8, r2 + mov fp, r3 + mov r5, #0 + mov r6, #1 +_02053EA4: + mov r0, r6, lsl #0x10 + mov r7, r0, asr #0x10 + mov r0, r7 + bl GetMonsterPreEvolution + cmp sl, r0 + bne _02053EF4 + cmp r8, #0 + bne _02053EE0 + mov r0, sl + bl GetSpriteSize + mov r4, r0 + mov r0, r7 + bl GetSpriteSize + cmp r4, r0 + bne _02053EF4 +_02053EE0: + cmp fp, #0 + cmpeq r7, #0x140 + movne r0, r5, lsl #1 + strneh r7, [sb, r0] + addne r5, r5, #1 +_02053EF4: + ldr r0, _02053F0C ; =0x00000483 + add r6, r6, #1 + cmp r6, r0 + blt _02053EA4 + mov r0, r5 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02053F0C: .word 0x00000483 + arm_func_end GetEvolutions + + arm_func_start sub_02053F10 +sub_02053F10: ; 0x02053F10 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x28 + mov r5, r0 + cmp r2, #0 + beq _02053F38 + mov r2, #1 + add r0, sp, #8 + rsb r3, r2, #0x3e8 + bl sub_02053B60 + b _02053F60 +_02053F38: + mov r0, r1 + bl FemaleToMaleForm + mov r4, #0 + mov r2, #1 + mov r1, r0 + str r4, [sp] + add r0, sp, #8 + rsb r3, r2, #0x3e8 + str r4, [sp, #4] + bl sub_02053904 +_02053F60: + mov r8, r0 + cmp r8, #0 + moveq r0, #0x198 + streqh r0, [sp, #8] + moveq r8, #1 + mov r4, #0 + add r7, sp, #8 + mov r6, #6 + b _02053F98 +_02053F84: + mla r0, r4, r6, r5 + mov r1, r4, lsl #1 + ldrh r1, [r7, r1] + bl GetInfoMoveGround + add r4, r4, #1 +_02053F98: + cmp r4, r8 + blt _02053F84 + mov r2, #0 + mov r0, #6 + b _02053FB8 +_02053FAC: + mul r1, r4, r0 + strb r2, [r5, r1] + add r4, r4, #1 +_02053FB8: + cmp r4, #4 + blt _02053FAC + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end sub_02053F10 + + arm_func_start ShuffleHiddenPower +ShuffleHiddenPower: ; 0x02053FC8 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r0, #0xa + bl RandIntSafe + ldr r1, _02054020 ; =HIDDEN_POWER_BASE_POWER_TABLE + mov r5, #0 + ldr r0, [r1, r0, lsl #2] + mov r4, #0x12 + strh r0, [r6] + b _02054008 +_02053FF0: + mov r0, r4 + bl RandIntSafe + strb r0, [r6, #2] + tst r0, #0xff + bne _02054010 + add r5, r5, #1 +_02054008: + cmp r5, #0x64 + blt _02053FF0 +_02054010: + cmp r5, #0x64 + moveq r0, #2 + streqb r0, [r6, #2] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02054020: .word HIDDEN_POWER_BASE_POWER_TABLE + arm_func_end ShuffleHiddenPower + + arm_func_start GetBaseForm +GetBaseForm: ; 0x02054024 + cmp r0, #0x17c + ldreq r0, _02054244 ; =0x0000017B + bxeq lr + ldr r3, _02054248 ; =0x0000017D + cmp r0, r3 + subeq r0, r3, #2 + bxeq lr + add r1, r3, #1 + cmp r0, r1 + subeq r0, r3, #2 + bxeq lr + cmp r0, #0x3d4 + rsbeq r0, r3, #0x550 + bxeq lr + add r1, r3, #0x258 + cmp r0, r1 + rsbeq r0, r3, #0x550 + bxeq lr + ldr r2, _0205424C ; =0x000003D6 + cmp r0, r2 + subeq r0, r2, #3 + bxeq lr + cmp r0, #0xca + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xcb + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xcc + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xcd + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xce + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xcf + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xd0 + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xd1 + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xd2 + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xd3 + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xd4 + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xd5 + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xd6 + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xd7 + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xd8 + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xd9 + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xda + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xdb + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xdc + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xdd + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xde + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xdf + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xe0 + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xe1 + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xe2 + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xe3 + moveq r0, #0xc9 + bxeq lr + cmp r0, #0xe4 + moveq r0, #0xc9 + bxeq lr + add r1, r3, #0x26 + cmp r0, r1 + subeq r0, r2, #0x234 + bxeq lr + cmp r0, #0x1a4 + subeq r0, r2, #0x234 + bxeq lr + add r1, r3, #0x28 + cmp r0, r1 + subeq r0, r2, #0x234 + bxeq lr + cmp r0, #0x1cc + moveq r0, #0x1cc + bxeq lr + add r1, r3, #0x50 + cmp r0, r1 + moveq r0, #0x1cc + bxeq lr + add r1, r2, #0x4e + cmp r0, r1 + moveq r0, r1 + bxeq lr + add r1, r2, #0x4f + cmp r0, r1 + addeq r0, r2, #0x4e + bxeq lr + add r1, r3, #0x9a + cmp r0, r1 + subeq r0, r2, #0x1c0 + bxeq lr + cmp r0, #0x218 + addeq r0, r3, #0x94 + bx lr + .align 2, 0 +_02054244: .word 0x0000017B +_02054248: .word 0x0000017D +_0205424C: .word 0x000003D6 + arm_func_end GetBaseForm + + arm_func_start GetBaseFormBurmyWormadamShellosGastrodonCherrim +GetBaseFormBurmyWormadamShellosGastrodonCherrim: ; 0x02054250 + ldr r2, _02054390 ; =0x000001BF + cmp r0, r2 + moveq r0, r2 + bxeq lr + cmp r0, #0x1c0 + moveq r0, r2 + bxeq lr + add r1, r2, #2 + cmp r0, r1 + moveq r0, r2 + bxeq lr + add r1, r2, #0x258 + cmp r0, r1 + moveq r0, r2 + bxeq lr + ldr r1, _02054394 ; =0x00000418 + cmp r0, r1 + moveq r0, r2 + bxeq lr + add r3, r1, #1 + cmp r0, r3 + moveq r0, r2 + bxeq lr + add r3, r2, #3 + cmp r0, r3 + moveq r0, r3 + bxeq lr + add r3, r2, #4 + cmp r0, r3 + addeq r0, r2, #3 + bxeq lr + cmp r0, #0x1c4 + addeq r0, r2, #3 + bxeq lr + add r3, r2, #0xf + cmp r0, r3 + moveq r0, r3 + bxeq lr + add r3, r2, #0x10 + cmp r0, r3 + addeq r0, r2, #0xf + bxeq lr + add r3, r1, #0xe + cmp r0, r3 + addeq r0, r2, #0xf + bxeq lr + add r3, r1, #0xf + cmp r0, r3 + addeq r0, r2, #0xf + bxeq lr + cmp r0, #0x1d0 + moveq r0, #0x1d0 + bxeq lr + add r3, r2, #0x12 + cmp r0, r3 + moveq r0, #0x1d0 + bxeq lr + add r3, r1, #0x10 + cmp r0, r3 + moveq r0, #0x1d0 + bxeq lr + add r3, r1, #0x11 + cmp r0, r3 + moveq r0, #0x1d0 + bxeq lr + cmp r0, #0x1cc + moveq r0, #0x1cc + bxeq lr + add r2, r2, #0xe + cmp r0, r2 + moveq r0, #0x1cc + bxeq lr + add r2, r1, #0xc + cmp r0, r2 + moveq r0, r2 + bxeq lr + add r2, r1, #0xd + cmp r0, r2 + addeq r0, r1, #0xc + bx lr + .align 2, 0 +_02054390: .word 0x000001BF +_02054394: .word 0x00000418 + arm_func_end GetBaseFormBurmyWormadamShellosGastrodonCherrim + + arm_func_start GetBaseFormCastformCherrimDeoxys +GetBaseFormCastformCherrimDeoxys: ; 0x02054398 + cmp r0, #0x17c + ldreq r0, _02054458 ; =0x0000017B + bxeq lr + ldr r3, _0205445C ; =0x0000017D + cmp r0, r3 + subeq r0, r3, #2 + bxeq lr + add r1, r3, #1 + cmp r0, r1 + subeq r0, r3, #2 + bxeq lr + cmp r0, #0x3d4 + rsbeq r0, r3, #0x550 + bxeq lr + add r1, r3, #0x258 + cmp r0, r1 + rsbeq r0, r3, #0x550 + bxeq lr + ldr r2, _02054460 ; =0x000003D6 + cmp r0, r2 + subeq r0, r2, #3 + bxeq lr + cmp r0, #0x1cc + moveq r0, #0x1cc + bxeq lr + add r1, r3, #0x50 + cmp r0, r1 + moveq r0, #0x1cc + bxeq lr + add r1, r2, #0x4e + cmp r0, r1 + moveq r0, r1 + bxeq lr + add r1, r2, #0x4f + cmp r0, r1 + addeq r0, r2, #0x4e + bxeq lr + add r1, r3, #0x26 + cmp r0, r1 + subeq r0, r2, #0x234 + bxeq lr + cmp r0, #0x1a4 + subeq r0, r2, #0x234 + bxeq lr + add r1, r3, #0x28 + cmp r0, r1 + subeq r0, r2, #0x234 + bx lr + .align 2, 0 +_02054458: .word 0x0000017B +_0205445C: .word 0x0000017D +_02054460: .word 0x000003D6 + arm_func_end GetBaseFormCastformCherrimDeoxys + + arm_func_start GetAllBaseForms +GetAllBaseForms: ; 0x02054464 + stmdb sp!, {r3, lr} + bl GetBaseForm + bl GetBaseFormBurmyWormadamShellosGastrodonCherrim + ldmia sp!, {r3, pc} + arm_func_end GetAllBaseForms + + arm_func_start GetDexNumberVeneer +GetDexNumberVeneer: ; 0x02054474 + ldr ip, _0205447C ; =GetDexNumber + bx ip + .align 2, 0 +_0205447C: .word GetDexNumber + arm_func_end GetDexNumberVeneer + + arm_func_start GetMonsterIdFromSpawnEntry +GetMonsterIdFromSpawnEntry: ; 0x02054480 + stmdb sp!, {r3, lr} + ldrsh r0, [r0, #6] + ldr r1, _0205449C ; =0x00000483 + bl _s32_div_f + mov r0, r1, lsl #0x10 + mov r0, r0, asr #0x10 + ldmia sp!, {r3, pc} + .align 2, 0 +_0205449C: .word 0x00000483 + arm_func_end GetMonsterIdFromSpawnEntry + + arm_func_start SetMonsterId +SetMonsterId: ; 0x020544A0 + strh r1, [r0, #6] + bx lr + arm_func_end SetMonsterId + + arm_func_start SetMonsterLevelAndId +SetMonsterLevelAndId: ; 0x020544A8 + mov r1, r1, lsl #9 + strh r1, [r0] + strh r2, [r0, #6] + bx lr + arm_func_end SetMonsterLevelAndId + + arm_func_start GetMonsterLevelFromSpawnEntry +GetMonsterLevelFromSpawnEntry: ; 0x020544B8 + ldrh r0, [r0] + mov r0, r0, asr #9 + and r0, r0, #0x7f + bx lr + arm_func_end GetMonsterLevelFromSpawnEntry + + arm_func_start ApplyLevelUpBoostsToGroundMonster +ApplyLevelUpBoostsToGroundMonster: ; 0x020544C8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x4c + mov sl, r0 + ldrb r0, [sl] + mov sb, r1 + mov fp, r2 + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _020546DC + ldrb r0, [sl, #1] + add r6, r0, #1 + b _020546D4 +_02054500: + mov r0, sl + bl sub_020546E8 + ldrsh r0, [sl, #4] + bl FemaleToMaleForm + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, r0 + ldrb r2, [sl, #1] + ldr r3, _020546E4 ; =0x000003E7 + add r0, sp, #0x2a + bl sub_02053904 + str r0, [sp, #8] + cmp r0, #0 + beq _020546D0 + mov r8, #0 + add r5, sl, #0x22 + add r4, sp, #0xc + b _020546C4 +_0205454C: + mov r1, #0 + mov r3, r8, lsl #1 + add r2, sp, #0x2a + mov r0, r1 + ldrh r3, [r2, r3] + b _02054598 +_02054564: + mov r2, #6 + mla r7, r0, r2, sl + ldrb r2, [r7, #0x22] + tst r2, #1 + movne r2, #1 + moveq r2, #0 + tst r2, #0xff + beq _02054594 + ldrh r2, [r7, #0x24] + cmp r2, r3 + moveq r1, #1 + beq _020545A0 +_02054594: + add r0, r0, #1 +_02054598: + cmp r0, #4 + blt _02054564 +_020545A0: + cmp r1, #0 + bne _020546C0 + mov r7, #0 + b _020545F0 +_020545B0: + mov r0, #6 + mul r1, r7, r0 + add r0, sl, r1 + ldrb r0, [r0, #0x22] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + bne _020545EC + add r0, r5, r1 + mov r2, r8, lsl #1 + add r1, sp, #0x2a + ldrh r1, [r1, r2] + bl GetInfoMoveGround + b _020545F8 +_020545EC: + add r7, r7, #1 +_020545F0: + cmp r7, #4 + blt _020545B0 +_020545F8: + cmp fp, #0 + beq _020546C0 + cmp r7, #4 + bne _020546C0 + mov r1, r8, lsl #1 + add r0, sp, #0x2a + mov r7, #0 + ldrh r1, [r0, r1] + mov r3, r7 +_0205461C: + mov r0, #6 + mul lr, r3, r0 + add ip, sl, lr + ldrb r0, [ip, #0x22] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _02054660 + add r2, r4, lr + ldrh r0, [ip, #0x22] + add r7, r7, #1 + strh r0, [r4, lr] + ldrh r0, [ip, #0x24] + strh r0, [r2, #2] + ldrh r0, [ip, #0x26] + strh r0, [r2, #4] +_02054660: + add r3, r3, #1 + cmp r3, #4 + blt _0205461C + mov r0, #6 + mla r0, r3, r0, r4 + bl GetInfoMoveGround + mov r0, r4 + add r1, r7, #1 + bl sub_02015090 + mov r1, #0 + b _020546B8 +_0205468C: + mov r0, #6 + mul r2, r1, r0 + add r0, sl, r2 + add r3, r4, r2 + ldrh r2, [r4, r2] + add r1, r1, #1 + strh r2, [r0, #0x22] + ldrh r2, [r3, #2] + strh r2, [r0, #0x24] + ldrh r2, [r3, #4] + strh r2, [r0, #0x26] +_020546B8: + cmp r1, r7 + blt _0205468C +_020546C0: + add r8, r8, #1 +_020546C4: + ldr r0, [sp, #8] + cmp r8, r0 + blt _0205454C +_020546D0: + add r6, r6, #1 +_020546D4: + cmp r6, sb + ble _02054500 +_020546DC: + add sp, sp, #0x4c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_020546E4: .word 0x000003E7 + arm_func_end ApplyLevelUpBoostsToGroundMonster + + arm_func_start sub_020546E8 +sub_020546E8: ; 0x020546E8 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0xc + mov r4, r0 + ldrb r2, [r4, #1] + ldrsh r1, [r4, #4] + add r0, sp, #0 + add r2, r2, #1 + bl GetLvlUpEntry + ldrb r1, [r4, #1] + add r0, r4, #0xa + add r1, r1, #1 + strb r1, [r4, #1] + ldr r1, [sp] + str r1, [r4, #0x10] + ldrh r1, [sp, #4] + bl sub_02054FB8 + ldrb r1, [sp, #6] + add r0, r4, #0xc + bl sub_02054FEC + ldrb r1, [sp, #7] + add r0, r4, #0xd + bl sub_02054FEC + ldrb r1, [sp, #8] + add r0, r4, #0xe + bl sub_02055020 + ldrb r1, [sp, #9] + add r0, r4, #0xf + bl sub_02055020 + add sp, sp, #0xc + ldmia sp!, {r3, r4, pc} + arm_func_end sub_020546E8 + + arm_func_start GetMonsterGenderVeneer +GetMonsterGenderVeneer: ; 0x02054760 + ldr ip, _02054768 ; =GetMonsterGender + bx ip + .align 2, 0 +_02054768: .word GetMonsterGender + arm_func_end GetMonsterGenderVeneer + + arm_func_start IsMonsterValid +IsMonsterValid: ; 0x0205476C + stmdb sp!, {r3, lr} + cmp r0, #0 + ble _02054798 + ldr r1, _020547C0 ; =0x00000229 + cmp r0, r1 + blt _0205478C + cmp r0, #0x258 + ble _02054798 +_0205478C: + ldr r1, _020547C4 ; =0x00000481 + cmp r0, r1 + blt _020547A0 +_02054798: + mov r0, #0 + ldmia sp!, {r3, pc} +_020547A0: + cmp r0, #0x258 + blt _020547B8 + bl GetMonsterGender + cmp r0, #2 + movne r0, #0 + ldmneia sp!, {r3, pc} +_020547B8: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_020547C0: .word 0x00000229 +_020547C4: .word 0x00000481 + arm_func_end IsMonsterValid + + arm_func_start sub_020547C8 +sub_020547C8: ; 0x020547C8 + mov r1, #0 + strh r1, [r0] + str r1, [r0, #4] + bx lr + arm_func_end sub_020547C8 + + arm_func_start sub_020547D8 +sub_020547D8: ; 0x020547D8 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #0 + strh r0, [r4] + ldr r0, [r4, #4] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + bl MemFree + mov r0, #0 + str r0, [r4, #4] + ldmia sp!, {r4, pc} + arm_func_end sub_020547D8 + + arm_func_start sub_02054804 +sub_02054804: ; 0x02054804 + stmdb sp!, {r3, lr} + ldr r2, _02054820 ; =_020A3248 + mov r1, #0 + ldr r2, [r2, #4] + str r2, [sp] + blx r2 + ldmia sp!, {r3, pc} + .align 2, 0 +_02054820: .word _020A3248 + arm_func_end sub_02054804 + + arm_func_start sub_02054824 +sub_02054824: ; 0x02054824 + stmdb sp!, {r3, lr} + ldr r2, _02054840 ; =_020A3248 + mov r1, #1 + ldr r2, [r2] + str r2, [sp] + blx r2 + ldmia sp!, {r3, pc} + .align 2, 0 +_02054840: .word _020A3248 + arm_func_end sub_02054824 + + arm_func_start sub_02054844 +sub_02054844: ; 0x02054844 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xd0 + mov r3, #0 + mov sb, r0 + mov r8, r1 + mov r6, r3 + add r2, sp, #0x80 +_02054860: + add r0, r3, #1 + mov r0, r0, lsl #0x10 + str r6, [r2, r3, lsl #3] + add r1, r2, r3, lsl #3 + mov r3, r0, asr #0x10 + str r6, [r1, #4] + cmp r3, #0xa + blt _02054860 + ldr fp, _02054A50 ; =TEAM_MEMBER_TABLE_PTR + mov r7, r6 + add r5, sp, #0x80 + mov r4, #1 +_02054890: + mov r0, r7 + bl IsValidTeamMember + cmp r0, #0 + beq _0205493C + cmp r8, #0 + beq _020548C4 + ldr r1, [fp] + mov r0, #0x44 + smlabb r0, r7, r0, r1 + ldrsh r0, [r0, #4] + bl IsShaymin + cmp r0, #0 + bne _0205493C +_020548C4: + ldr r2, [fp] + mov r0, #0x44 + smlabb r0, r7, r0, r2 + ldrsh r0, [r0, #4] + mov r1, #1 + bl GetKeyM2NSwitch + mov r1, r0, asr #5 + add r1, r0, r1, lsr #26 + mov lr, r1, asr #6 + mov r2, r0, lsr #0x1f + rsb r0, r2, r0, lsl #26 + add r0, r2, r0, ror #26 + mov r1, #0 + add r2, r5, lr, lsl #3 + mov r1, r1, lsl r0 + rsb sl, r0, #0x20 + orr r1, r1, r4, lsr sl + sub sl, r0, #0x20 + ldr ip, [r5, lr, lsl #3] + ldr r3, [r2, #4] + orr r1, r1, r4, lsl sl + orr r1, r3, r1 + orr r0, ip, r4, lsl r0 + stmia r2, {r0, r1} + ldr r0, [r5, lr, lsl #3] + cmp r3, r1 + cmpeq ip, r0 + addne r0, r6, #1 + movne r0, r0, lsl #0x10 + movne r6, r0, asr #0x10 +_0205493C: + add r0, r7, #1 + mov r1, r0, lsl #0x10 + ldr r0, _02054A54 ; =0x0000022B + mov r7, r1, asr #0x10 + cmp r0, r1, asr #16 + bgt _02054890 + strh r6, [sb] + mov r0, r6, lsl #1 + mov r1, #0 + bl MemAlloc + str r0, [sb, #4] + ldr r0, _02054A58 ; =_020A32F8 + bl Debug_Print0 + mov r8, #0 + mov sl, r8 + mov r7, #1 + mov r5, r8 + add fp, sp, #0x80 + mov r4, r8 + b _02054A40 +_0205498C: + mov r1, sl, lsr #0x1f + rsb r0, r1, sl, lsl #26 + add r2, r1, r0, ror #26 + mov r0, sl, asr #5 + add r0, sl, r0, lsr #26 + mov r1, r0, asr #6 + add r0, fp, r1, lsl #3 + ldr r1, [fp, r1, lsl #3] + mov r3, r5, lsl r2 + rsb ip, r2, #0x20 + and r1, r1, r7, lsl r2 + orr r3, r3, r7, lsr ip + sub r2, r2, #0x20 + ldr r0, [r0, #4] + orr r3, r3, r7, lsl r2 + and r2, r3, r0 + mov r0, #0 + cmp r2, r0 + cmpeq r1, r4 + beq _02054A34 + mov r0, sl + mov r1, r7 + bl GetKeyN2MSwitch + ldr r1, [sb, #4] + mov r2, r8, lsl #1 + strh r0, [r1, r2] + ldr r1, [sb, #4] + add r0, sp, #0 + ldrsh r1, [r1, r2] + bl GetNameRaw + ldr r3, [sb, #4] + mov r2, r8, lsl #1 + ldrsh r2, [r3, r2] + ldr r0, _02054A5C ; =_020A3330 + mov r1, r8 + add r3, sp, #0 + bl Debug_Print0 + add r0, r8, #1 + mov r0, r0, lsl #0x10 + cmp r6, r0, asr #16 + mov r8, r0, asr #0x10 + ble _02054A48 +_02054A34: + add r0, sl, #1 + mov r0, r0, lsl #0x10 + mov sl, r0, asr #0x10 +_02054A40: + cmp sl, #0x280 + blt _0205498C +_02054A48: + add sp, sp, #0xd0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02054A50: .word TEAM_MEMBER_TABLE_PTR +_02054A54: .word 0x0000022B +_02054A58: .word _020A32F8 +_02054A5C: .word _020A3330 + arm_func_end sub_02054844 + + arm_func_start SprintfStatic__02054A60 +SprintfStatic__02054A60: ; 0x02054A60 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, lr} + add r2, sp, #0xc + bic r2, r2, #3 + ldr r1, [sp, #0xc] + add r2, r2, #4 + bl vsprintf + ldmia sp!, {r3, lr} + add sp, sp, #0x10 + bx lr + arm_func_end SprintfStatic__02054A60 diff --git a/asm/main_02058C4C.s b/asm/main_02058C4C.s index 14f912ce..0236b7c3 100644 --- a/asm/main_02058C4C.s +++ b/asm/main_02058C4C.s @@ -51,188 +51,3 @@ _02058CB0: .align 2, 0 _02058CD4: .word TACTICS_UNLOCK_LEVEL_TABLE arm_func_end GetUnlockedTacticFlags - - arm_func_start CanLearnIqSkill -CanLearnIqSkill: ; 0x02058CD8 - cmp r1, #0 - moveq r0, #0 - bxeq lr - ldr r2, _02058D00 ; =IQ_SKILLS - ldr r1, [r2, r1, lsl #2] - cmp r1, r0 - movle r0, #1 - movgt r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_02058D00: .word IQ_SKILLS - arm_func_end CanLearnIqSkill - - arm_func_start GetLearnableIqSkills -GetLearnableIqSkills: ; 0x02058D04 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r6, #0 - mov sl, r0 - mov sb, r1 - mov r8, r2 - mov r5, r6 - ldr r4, _02058DA0 ; =IQ_GROUP_SKILLS - mov fp, #0x19 - b _02058D74 -_02058D28: - mov r0, sb - bl GetIqGroup - mla r1, r0, fp, r4 - and r0, r5, #0xff - ldrb r7, [r0, r1] - cmp r7, #0xff - beq _02058D7C - cmp r7, #0x18 - bne _02058D58 - mov r0, #3 - bl GetPerformanceFlagWithChecks - b _02058D64 -_02058D58: - mov r0, r8 - mov r1, r7 - bl CanLearnIqSkill -_02058D64: - cmp r0, #0 - strneb r7, [sl, r6] - addne r6, r6, #1 - add r5, r5, #1 -_02058D74: - cmp r5, #0x19 - blt _02058D28 -_02058D7C: - mov r1, r6 - mov r0, #0 - b _02058D90 -_02058D88: - strb r0, [sl, r1] - add r1, r1, #1 -_02058D90: - cmp r1, #0x45 - blt _02058D88 - mov r0, r6 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02058DA0: .word IQ_GROUP_SKILLS - arm_func_end GetLearnableIqSkills - - arm_func_start DisableIqSkill -DisableIqSkill: ; 0x02058DA4 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r5, r1 - bl IqSkillFlagTest - cmp r0, #0 - beq _02058DE4 - mov r0, r5, asr #4 - add r0, r5, r0, lsr #27 - mov r2, r0, asr #5 - sub r0, r5, r2, lsl #5 - mov r1, #1 - mvn r0, r1, lsl r0 - ldr r1, [r4, r2, lsl #2] - and r0, r1, r0 - str r0, [r4, r2, lsl #2] - ldmia sp!, {r3, r4, r5, pc} -_02058DE4: - mov r0, r4 - mov r1, r5 - bl EnableIqSkill - ldmia sp!, {r3, r4, r5, pc} - arm_func_end DisableIqSkill - - arm_func_start EnableIqSkill -EnableIqSkill: ; 0x02058DF4 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _02058E64 ; =IQ_SKILL_RESTRICTIONS - mov r3, r1, lsl #1 - ldrsh ip, [r2, r3] - mov r3, #0 - mov r4, #1 -_02058E0C: - mov r5, r3, lsl #1 - ldrsh r5, [r2, r5] - cmp ip, r5 - bne _02058E3C - mov lr, r3, asr #4 - add lr, r3, lr, lsr #27 - mov r6, lr, asr #5 - sub lr, r3, r6, lsl #5 - mvn lr, r4, lsl lr - ldr r5, [r0, r6, lsl #2] - and r5, r5, lr - str r5, [r0, r6, lsl #2] -_02058E3C: - add r3, r3, #1 - cmp r3, #0x45 - blt _02058E0C - mov ip, r1, lsr #5 - ldr r3, [r0, ip, lsl #2] - sub r1, r1, ip, lsl #5 - mov r2, #1 - orr r1, r3, r2, lsl r1 - str r1, [r0, ip, lsl #2] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02058E64: .word IQ_SKILL_RESTRICTIONS - arm_func_end EnableIqSkill - - arm_func_start GetSpeciesIqSkill -GetSpeciesIqSkill: ; 0x02058E68 - stmdb sp!, {r4, lr} - mov r4, r1 - bl GetIqGroup - ldr r2, _02058E88 ; =IQ_GROUP_SKILLS - mov r1, #0x19 - mla r1, r0, r1, r2 - ldrb r0, [r4, r1] - ldmia sp!, {r4, pc} - .align 2, 0 -_02058E88: .word IQ_GROUP_SKILLS - arm_func_end GetSpeciesIqSkill - - arm_func_start DisableAllIqSkills -DisableAllIqSkills: ; 0x02058E8C - mov r3, #0 - mov r2, r3 -_02058E94: - add r1, r3, #1 - mov r1, r1, lsl #0x10 - str r2, [r0, r3, lsl #2] - mov r3, r1, asr #0x10 - cmp r3, #3 - blt _02058E94 - bx lr - arm_func_end DisableAllIqSkills - - arm_func_start EnableAllLearnableIqSkills -EnableAllLearnableIqSkills: ; 0x02058EB0 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x48 - mov r6, r0 - add r0, sp, #0 - bl GetLearnableIqSkills - mov r0, r6 - bl DisableAllIqSkills - mov r5, #0 - add r4, sp, #0 - b _02058EF4 -_02058ED8: - ldrb r0, [r4, r5] - cmp r0, #0 - beq _02058EFC - ldrb r1, [r4, r5] - mov r0, r6 - bl EnableIqSkill - add r5, r5, #1 -_02058EF4: - cmp r5, #0x45 - blt _02058ED8 -_02058EFC: - add sp, sp, #0x48 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end EnableAllLearnableIqSkills diff --git a/asm/main_02058D04.s b/asm/main_02058D04.s new file mode 100644 index 00000000..1b9e7d95 --- /dev/null +++ b/asm/main_02058D04.s @@ -0,0 +1,117 @@ + .include "asm/macros.inc" + .include "main_02058D04.inc" + + .text + + arm_func_start GetLearnableIqSkills +GetLearnableIqSkills: ; 0x02058D04 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r6, #0 + mov sl, r0 + mov sb, r1 + mov r8, r2 + mov r5, r6 + ldr r4, _02058DA0 ; =IQ_GROUP_SKILLS + mov fp, #0x19 + b _02058D74 +_02058D28: + mov r0, sb + bl GetIqGroup + mla r1, r0, fp, r4 + and r0, r5, #0xff + ldrb r7, [r0, r1] + cmp r7, #0xff + beq _02058D7C + cmp r7, #0x18 + bne _02058D58 + mov r0, #3 + bl GetPerformanceFlagWithChecks + b _02058D64 +_02058D58: + mov r0, r8 + mov r1, r7 + bl CanLearnIqSkill +_02058D64: + cmp r0, #0 + strneb r7, [sl, r6] + addne r6, r6, #1 + add r5, r5, #1 +_02058D74: + cmp r5, #0x19 + blt _02058D28 +_02058D7C: + mov r1, r6 + mov r0, #0 + b _02058D90 +_02058D88: + strb r0, [sl, r1] + add r1, r1, #1 +_02058D90: + cmp r1, #0x45 + blt _02058D88 + mov r0, r6 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02058DA0: .word IQ_GROUP_SKILLS + arm_func_end GetLearnableIqSkills + + arm_func_start DisableIqSkill +DisableIqSkill: ; 0x02058DA4 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + mov r5, r1 + bl IqSkillFlagTest + cmp r0, #0 + beq _02058DE4 + mov r0, r5, asr #4 + add r0, r5, r0, lsr #27 + mov r2, r0, asr #5 + sub r0, r5, r2, lsl #5 + mov r1, #1 + mvn r0, r1, lsl r0 + ldr r1, [r4, r2, lsl #2] + and r0, r1, r0 + str r0, [r4, r2, lsl #2] + ldmia sp!, {r3, r4, r5, pc} +_02058DE4: + mov r0, r4 + mov r1, r5 + bl EnableIqSkill + ldmia sp!, {r3, r4, r5, pc} + arm_func_end DisableIqSkill + + arm_func_start EnableIqSkill +EnableIqSkill: ; 0x02058DF4 + stmdb sp!, {r4, r5, r6, lr} + ldr r2, _02058E64 ; =IQ_SKILL_RESTRICTIONS + mov r3, r1, lsl #1 + ldrsh ip, [r2, r3] + mov r3, #0 + mov r4, #1 +_02058E0C: + mov r5, r3, lsl #1 + ldrsh r5, [r2, r5] + cmp ip, r5 + bne _02058E3C + mov lr, r3, asr #4 + add lr, r3, lr, lsr #27 + mov r6, lr, asr #5 + sub lr, r3, r6, lsl #5 + mvn lr, r4, lsl lr + ldr r5, [r0, r6, lsl #2] + and r5, r5, lr + str r5, [r0, r6, lsl #2] +_02058E3C: + add r3, r3, #1 + cmp r3, #0x45 + blt _02058E0C + mov ip, r1, lsr #5 + ldr r3, [r0, ip, lsl #2] + sub r1, r1, ip, lsl #5 + mov r2, #1 + orr r1, r3, r2, lsl r1 + str r1, [r0, ip, lsl #2] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02058E64: .word IQ_SKILL_RESTRICTIONS + arm_func_end EnableIqSkill diff --git a/asm/main_02058E8C.s b/asm/main_02058E8C.s new file mode 100644 index 00000000..7ad4f03d --- /dev/null +++ b/asm/main_02058E8C.s @@ -0,0 +1,46 @@ + .include "asm/macros.inc" + .include "main_02058E8C.inc" + + .text + + arm_func_start DisableAllIqSkills +DisableAllIqSkills: ; 0x02058E8C + mov r3, #0 + mov r2, r3 +_02058E94: + add r1, r3, #1 + mov r1, r1, lsl #0x10 + str r2, [r0, r3, lsl #2] + mov r3, r1, asr #0x10 + cmp r3, #3 + blt _02058E94 + bx lr + arm_func_end DisableAllIqSkills + + arm_func_start EnableAllLearnableIqSkills +EnableAllLearnableIqSkills: ; 0x02058EB0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x48 + mov r6, r0 + add r0, sp, #0 + bl GetLearnableIqSkills + mov r0, r6 + bl DisableAllIqSkills + mov r5, #0 + add r4, sp, #0 + b _02058EF4 +_02058ED8: + ldrb r0, [r4, r5] + cmp r0, #0 + beq _02058EFC + ldrb r1, [r4, r5] + mov r0, r6 + bl EnableIqSkill + add r5, r5, #1 +_02058EF4: + cmp r5, #0x45 + blt _02058ED8 +_02058EFC: + add sp, sp, #0x48 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end EnableAllLearnableIqSkills diff --git a/asm/main_rodata_0209CECC.s b/asm/main_rodata_0209CECC.s index 4ab4f3bc..0e4d3387 100644 --- a/asm/main_rodata_0209CECC.s +++ b/asm/main_rodata_0209CECC.s @@ -2441,93 +2441,3 @@ _020A1884: .global GUMMI_STAT_BOOST GUMMI_STAT_BOOST: .byte 0x01, 0x00, 0x00, 0x00 - .global MIN_IQ_EXCLUSIVE_MOVE_USER -MIN_IQ_EXCLUSIVE_MOVE_USER: - .byte 0x4B, 0x01, 0x00, 0x00 - .global WONDER_GUMMI_IQ_GAIN -WONDER_GUMMI_IQ_GAIN: - .byte 0x0F, 0x00, 0x00, 0x00 - .global _020A1894 -_020A1894: - .byte 0x32, 0x00, 0x00, 0x00 - .global AURA_BOW_STAT_BOOST -AURA_BOW_STAT_BOOST: - .byte 0x01, 0x00, 0x00, 0x00 - .global _020A189C -_020A189C: - .byte 0x2C, 0x01, 0x00, 0x00 - .global MULTITALENT_PP_BOOST_AMOUNT -MULTITALENT_PP_BOOST_AMOUNT: - .byte 0x05, 0x00, 0x00, 0x00 - .global MIN_IQ_ITEM_MASTER -MIN_IQ_ITEM_MASTER: - .byte 0x96, 0x00, 0x00, 0x00 - .global DEF_SCARF_STAT_BOOST -DEF_SCARF_STAT_BOOST: - .byte 0x08, 0x00, 0x00, 0x00 - .global POWER_BAND_STAT_BOOST -POWER_BAND_STAT_BOOST: - .byte 0x0C, 0x00, 0x00, 0x00 - .global WONDER_GUMMI_STAT_BOOST -WONDER_GUMMI_STAT_BOOST: - .byte 0x03, 0x00, 0x00, 0x00 - .global ZINC_BAND_STAT_BOOST -ZINC_BAND_STAT_BOOST: - .byte 0x08, 0x00, 0x00, 0x00 - .global EGG_HP_BONUS -EGG_HP_BONUS: - .byte 0x0A, 0x00, 0x00, 0x00 - .global _020A18BC -_020A18BC: - .byte 0x78, 0x05, 0x00, 0x00 - .global _020A18C0 -_020A18C0: - .byte 0x2C, 0x01, 0x00, 0x00 - .global EVOLUTION_HP_BONUS -EVOLUTION_HP_BONUS: - .byte 0x0A, 0x00, 0x00, 0x00 - .global EXCLUSIVE_ITEM_PP_BOOST_AMOUNT -EXCLUSIVE_ITEM_PP_BOOST_AMOUNT: - .byte 0x02, 0x00, 0x00, 0x00 - .global DAMAGE_FORMULA_FLV_SHIFT -DAMAGE_FORMULA_FLV_SHIFT: - .byte 0x00, 0x32, 0x00, 0x00 - .global EVOLUTION_PHYSICAL_STAT_BONUSES -EVOLUTION_PHYSICAL_STAT_BONUSES: - .byte 0x05, 0x00, 0x05, 0x00 - .global DAMAGE_FORMULA_CONSTANT_SHIFT -DAMAGE_FORMULA_CONSTANT_SHIFT: - .byte 0x00, 0xC9, 0xFE, 0xFF - .global DAMAGE_FORMULA_FLV_DEFICIT_DIVISOR -DAMAGE_FORMULA_FLV_DEFICIT_DIVISOR: - .byte 0x00, 0x08, 0x00, 0x00 - .global EGG_STAT_BONUSES -EGG_STAT_BONUSES: - .byte 0x05, 0x00, 0x05, 0x00 - .global _020A18E0 -_020A18E0: - .byte 0x05, 0x00, 0x05, 0x00 - .global EVOLUTION_SPECIAL_STAT_BONUSES -EVOLUTION_SPECIAL_STAT_BONUSES: - .byte 0x05, 0x00, 0x05, 0x00 - .global DAMAGE_FORMULA_NON_TEAM_MEMBER_MODIFIER -DAMAGE_FORMULA_NON_TEAM_MEMBER_MODIFIER: - .byte 0x54, 0x01, 0x00, 0x00 - .global DAMAGE_FORMULA_LN_PREFACTOR -DAMAGE_FORMULA_LN_PREFACTOR: - .byte 0x00, 0x32, 0x00, 0x00 - .global DAMAGE_FORMULA_DEF_PREFACTOR -DAMAGE_FORMULA_DEF_PREFACTOR: - .byte 0x80, 0xFF, 0xFF, 0xFF - .global DAMAGE_FORMULA_AT_PREFACTOR -DAMAGE_FORMULA_AT_PREFACTOR: - .byte 0x99, 0x00, 0x00, 0x00 - .global DAMAGE_FORMULA_LN_ARG_PREFACTOR -DAMAGE_FORMULA_LN_ARG_PREFACTOR: - .byte 0x00, 0x0A, 0x00, 0x00 - .global _020A18FC -_020A18FC: - .byte 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0x00, 0x00, 0x00 - .global _020A1904 -_020A1904: - .byte 0x96, 0x97, 0x98, 0x99, 0x9A, 0x00, 0x00, 0x00 diff --git a/asm/main_rodata_020A1894.s b/asm/main_rodata_020A1894.s new file mode 100644 index 00000000..2d700720 --- /dev/null +++ b/asm/main_rodata_020A1894.s @@ -0,0 +1,19 @@ + .include "asm/macros.inc" + .include "main_rodata_020A1894.inc" + + .rodata + .global WONDER_GUMMI_IQ_GAIN +WONDER_GUMMI_IQ_GAIN: + .byte 0x0F, 0x00, 0x00, 0x00 + .global _020A1894 +_020A1894: + .byte 0x32, 0x00, 0x00, 0x00 + .global AURA_BOW_STAT_BOOST +AURA_BOW_STAT_BOOST: + .byte 0x01, 0x00, 0x00, 0x00 + .global _020A189C +_020A189C: + .byte 0x2C, 0x01, 0x00, 0x00 + .global MULTITALENT_PP_BOOST_AMOUNT +MULTITALENT_PP_BOOST_AMOUNT: + .byte 0x05, 0x00, 0x00, 0x00 diff --git a/asm/main_rodata_020A18BC.s b/asm/main_rodata_020A18BC.s new file mode 100644 index 00000000..a01757b5 --- /dev/null +++ b/asm/main_rodata_020A18BC.s @@ -0,0 +1,73 @@ + .include "asm/macros.inc" + .include "main_rodata_020A18BC.inc" + + .rodata + .global DEF_SCARF_STAT_BOOST +DEF_SCARF_STAT_BOOST: + .byte 0x08, 0x00, 0x00, 0x00 + .global POWER_BAND_STAT_BOOST +POWER_BAND_STAT_BOOST: + .byte 0x0C, 0x00, 0x00, 0x00 + .global WONDER_GUMMI_STAT_BOOST +WONDER_GUMMI_STAT_BOOST: + .byte 0x03, 0x00, 0x00, 0x00 + .global ZINC_BAND_STAT_BOOST +ZINC_BAND_STAT_BOOST: + .byte 0x08, 0x00, 0x00, 0x00 + .global EGG_HP_BONUS +EGG_HP_BONUS: + .byte 0x0A, 0x00, 0x00, 0x00 + .global _020A18BC +_020A18BC: + .byte 0x78, 0x05, 0x00, 0x00 + .global _020A18C0 +_020A18C0: + .byte 0x2C, 0x01, 0x00, 0x00 + .global EVOLUTION_HP_BONUS +EVOLUTION_HP_BONUS: + .byte 0x0A, 0x00, 0x00, 0x00 + .global EXCLUSIVE_ITEM_PP_BOOST_AMOUNT +EXCLUSIVE_ITEM_PP_BOOST_AMOUNT: + .byte 0x02, 0x00, 0x00, 0x00 + .global DAMAGE_FORMULA_FLV_SHIFT +DAMAGE_FORMULA_FLV_SHIFT: + .byte 0x00, 0x32, 0x00, 0x00 + .global EVOLUTION_PHYSICAL_STAT_BONUSES +EVOLUTION_PHYSICAL_STAT_BONUSES: + .byte 0x05, 0x00, 0x05, 0x00 + .global DAMAGE_FORMULA_CONSTANT_SHIFT +DAMAGE_FORMULA_CONSTANT_SHIFT: + .byte 0x00, 0xC9, 0xFE, 0xFF + .global DAMAGE_FORMULA_FLV_DEFICIT_DIVISOR +DAMAGE_FORMULA_FLV_DEFICIT_DIVISOR: + .byte 0x00, 0x08, 0x00, 0x00 + .global EGG_STAT_BONUSES +EGG_STAT_BONUSES: + .byte 0x05, 0x00, 0x05, 0x00 + .global _020A18E0 +_020A18E0: + .byte 0x05, 0x00, 0x05, 0x00 + .global EVOLUTION_SPECIAL_STAT_BONUSES +EVOLUTION_SPECIAL_STAT_BONUSES: + .byte 0x05, 0x00, 0x05, 0x00 + .global DAMAGE_FORMULA_NON_TEAM_MEMBER_MODIFIER +DAMAGE_FORMULA_NON_TEAM_MEMBER_MODIFIER: + .byte 0x54, 0x01, 0x00, 0x00 + .global DAMAGE_FORMULA_LN_PREFACTOR +DAMAGE_FORMULA_LN_PREFACTOR: + .byte 0x00, 0x32, 0x00, 0x00 + .global DAMAGE_FORMULA_DEF_PREFACTOR +DAMAGE_FORMULA_DEF_PREFACTOR: + .byte 0x80, 0xFF, 0xFF, 0xFF + .global DAMAGE_FORMULA_AT_PREFACTOR +DAMAGE_FORMULA_AT_PREFACTOR: + .byte 0x99, 0x00, 0x00, 0x00 + .global DAMAGE_FORMULA_LN_ARG_PREFACTOR +DAMAGE_FORMULA_LN_ARG_PREFACTOR: + .byte 0x00, 0x0A, 0x00, 0x00 + .global _020A18FC +_020A18FC: + .byte 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0x00, 0x00, 0x00 + .global _020A1904 +_020A1904: + .byte 0x96, 0x97, 0x98, 0x99, 0x9A, 0x00, 0x00, 0x00 diff --git a/asm/main_rodata_020A190C.s b/asm/main_rodata_020A190C.s index b59639cd..0d10e6b9 100644 --- a/asm/main_rodata_020A190C.s +++ b/asm/main_rodata_020A190C.s @@ -49,15 +49,3 @@ VERSION_EXCLUSIVE_MONSTERS: .byte 0x19, 0x04, 0x00, 0x01, 0x0F, 0x00, 0x00, 0x01, 0x67, 0x02, 0x00, 0x01, 0xE9, 0x01, 0x01, 0x00 .byte 0x41, 0x04, 0x01, 0x00, 0xEA, 0x01, 0x01, 0x00, 0x42, 0x04, 0x01, 0x00, 0x16, 0x01, 0x01, 0x00 .byte 0x09, 0x02, 0x00, 0x01, 0x96, 0x00, 0x00, 0x01 - .global IQ_SKILL_RESTRICTIONS -IQ_SKILL_RESTRICTIONS: - .byte 0x0F, 0x27, 0x04, 0x00, 0x01, 0x00, 0x02, 0x00 - .byte 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00 - .byte 0x0A, 0x00, 0x0A, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x10, 0x00 - .byte 0x14, 0x00, 0x09, 0x00, 0x11, 0x00, 0x06, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00 - .byte 0x1C, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00 - .byte 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2A, 0x00, 0x2B, 0x00 - .byte 0x2C, 0x00, 0x2D, 0x00, 0x2E, 0x00, 0x2F, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00 - .byte 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3A, 0x00, 0x3B, 0x00 - .byte 0x3C, 0x00, 0x3D, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00 - .byte 0x44, 0x00, 0x00, 0x00 diff --git a/asm/main_rodata_020A1BB0.s b/asm/main_rodata_020A1BB0.s index 957570e7..8323c0da 100644 --- a/asm/main_rodata_020A1BB0.s +++ b/asm/main_rodata_020A1BB0.s @@ -18,204 +18,3 @@ SENTRY_DUTY_MONSTER_IDS: .byte 0x6F, 0x00, 0x65, 0x01, 0x64, 0x01, 0x51, 0x01, 0x3F, 0x01, 0x03, 0x01, 0x63, 0x01, 0x3A, 0x01 .byte 0x24, 0x01, 0x08, 0x01, 0x38, 0x00, 0xE9, 0x01, 0xEA, 0x01, 0xB7, 0x01, 0xB8, 0x01, 0x25, 0x00 .byte 0x05, 0x02, 0x88, 0x01, 0x22, 0x00, 0x00, 0x00 - .global IQ_SKILLS -IQ_SKILLS: - .byte 0x0F, 0x27, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00 - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x01, 0x00, 0x00, 0x1C, 0x02, 0x00, 0x00 - .byte 0x0F, 0x27, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00 - .byte 0x0A, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0xDE, 0x03, 0x00, 0x00 - .byte 0xF0, 0x00, 0x00, 0x00, 0x20, 0x03, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00 - .byte 0x46, 0x00, 0x00, 0x00, 0x58, 0x02, 0x00, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x0F, 0x27, 0x00, 0x00 - .byte 0xE0, 0x01, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00 - .byte 0x26, 0x02, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x0F, 0x27, 0x00, 0x00 - .byte 0xDC, 0x00, 0x00, 0x00, 0xE6, 0x00, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00 - .byte 0xA4, 0x01, 0x00, 0x00, 0x4A, 0x01, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x0E, 0x01, 0x00, 0x00 - .byte 0x0F, 0x27, 0x00, 0x00, 0xEE, 0x02, 0x00, 0x00, 0x3A, 0x02, 0x00, 0x00, 0xB4, 0x00, 0x00, 0x00 - .byte 0xAA, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00 - .byte 0x1E, 0x00, 0x00, 0x00, 0x84, 0x03, 0x00, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x22, 0x01, 0x00, 0x00 - .byte 0x32, 0x00, 0x00, 0x00, 0xBE, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00 - .byte 0xB6, 0x03, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x0F, 0x27, 0x00, 0x00 - .byte 0x5E, 0x01, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0xB8, 0x01, 0x00, 0x00, 0x44, 0x02, 0x00, 0x00 - .byte 0x52, 0x03, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, 0x0F, 0x27, 0x00, 0x00 - .global IQ_GROUP_SKILLS -IQ_GROUP_SKILLS: - .byte 0x18, 0x1A, 0x1B, 0x1F - .byte 0x25, 0x26, 0x36, 0x39, 0x3E, 0x41, 0x42, 0x43, 0x16, 0x03, 0x07, 0x08, 0x01, 0x17, 0x15, 0x0C - .byte 0x0F, 0x14, 0x02, 0x11, 0xFF, 0x18, 0x1B, 0x1E, 0x20, 0x26, 0x2E, 0x32, 0x33, 0x34, 0x37, 0x3E - .byte 0x42, 0x16, 0x03, 0x07, 0x08, 0x01, 0x17, 0x15, 0x0F, 0x13, 0x02, 0x11, 0x14, 0xFF, 0x18, 0x22 - .byte 0x24, 0x25, 0x28, 0x2C, 0x2F, 0x30, 0x31, 0x38, 0x3B, 0x3C, 0x3F, 0x42, 0x16, 0x03, 0x07, 0x08 - .byte 0x01, 0x17, 0x09, 0x02, 0x11, 0x14, 0xFF, 0x18, 0x1A, 0x1D, 0x1F, 0x27, 0x28, 0x2B, 0x2E, 0x30 - .byte 0x3C, 0x3F, 0x40, 0x16, 0x03, 0x07, 0x08, 0x17, 0x15, 0x0E, 0x12, 0x13, 0x02, 0x05, 0x14, 0xFF - .byte 0x18, 0x20, 0x23, 0x24, 0x25, 0x27, 0x2D, 0x2F, 0x32, 0x34, 0x35, 0x37, 0x38, 0x16, 0x03, 0x07 - .byte 0x08, 0x04, 0x17, 0x0A, 0x0F, 0x02, 0x10, 0x14, 0xFF, 0x18, 0x1A, 0x1C, 0x1D, 0x1F, 0x26, 0x29 - .byte 0x2C, 0x2D, 0x2E, 0x39, 0x42, 0x16, 0x03, 0x07, 0x08, 0x01, 0x17, 0x0B, 0x0C, 0x0F, 0x12, 0x14 - .byte 0x02, 0xFF, 0x18, 0x1A, 0x1C, 0x1F, 0x29, 0x2B, 0x35, 0x36, 0x3B, 0x3C, 0x40, 0x41, 0x16, 0x03 - .byte 0x07, 0x08, 0x17, 0x09, 0x0E, 0x12, 0x13, 0x02, 0x05, 0x14, 0xFF, 0x18, 0x1B, 0x1E, 0x20, 0x26 - .byte 0x2D, 0x33, 0x34, 0x35, 0x37, 0x38, 0x40, 0x16, 0x03, 0x07, 0x08, 0x17, 0x0A, 0x0C, 0x0F, 0x12 - .byte 0x14, 0x02, 0x05, 0xFF, 0x18, 0x16, 0x03, 0x07, 0x08, 0x17, 0x02, 0x14, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x18, 0x16, 0x03 - .byte 0x07, 0x08, 0x17, 0x02, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x18, 0x1D, 0x22, 0x24, 0x25, 0x28, 0x1F, 0x2F, 0x35, 0x37 - .byte 0x3A, 0x3C, 0x16, 0x03, 0x07, 0x08, 0x17, 0x09, 0x0C, 0x0F, 0x12, 0x14, 0x02, 0x05, 0xFF, 0x18 - .byte 0x1A, 0x1F, 0x23, 0x24, 0x29, 0x2D, 0x2E, 0x30, 0x39, 0x3C, 0x41, 0x16, 0x03, 0x07, 0x08, 0x04 - .byte 0x17, 0x0B, 0x0D, 0x0F, 0x14, 0x02, 0x10, 0xFF, 0x18, 0x16, 0x03, 0x07, 0x08, 0x17, 0x02, 0x14 - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0xFF, 0x18, 0x16, 0x03, 0x07, 0x08, 0x17, 0x02, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x18, 0x16, 0x03, 0x07, 0x08, 0x17 - .byte 0x02, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0xFF, 0x18, 0x16, 0x03, 0x07, 0x08, 0x17, 0x02, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF - .global MONEY_QUANTITY_TABLE -MONEY_QUANTITY_TABLE: - .byte 0x02, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0x0D, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00 - .byte 0x1D, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00 - .byte 0x2B, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00 - .byte 0x3E, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00 - .byte 0x50, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00 - .byte 0x65, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x00 - .byte 0x71, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00 - .byte 0x8B, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x9D, 0x00, 0x00, 0x00 - .byte 0xA3, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00, 0xAD, 0x00, 0x00, 0x00, 0xB3, 0x00, 0x00, 0x00 - .byte 0xB4, 0x00, 0x00, 0x00, 0xBE, 0x00, 0x00, 0x00, 0xC2, 0x00, 0x00, 0x00, 0xC5, 0x00, 0x00, 0x00 - .byte 0xC7, 0x00, 0x00, 0x00, 0xD4, 0x00, 0x00, 0x00, 0xDF, 0x00, 0x00, 0x00, 0xE3, 0x00, 0x00, 0x00 - .byte 0xE6, 0x00, 0x00, 0x00, 0xE9, 0x00, 0x00, 0x00, 0xEE, 0x00, 0x00, 0x00, 0xF1, 0x00, 0x00, 0x00 - .byte 0xFA, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x0D, 0x01, 0x00, 0x00 - .byte 0x10, 0x01, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x1C, 0x01, 0x00, 0x00 - .byte 0x25, 0x01, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00 - .byte 0x3D, 0x01, 0x00, 0x00, 0x4C, 0x01, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0x5C, 0x01, 0x00, 0x00 - .byte 0x5D, 0x01, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0x67, 0x01, 0x00, 0x00, 0x6F, 0x01, 0x00, 0x00 - .byte 0x76, 0x01, 0x00, 0x00, 0x7B, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00 - .byte 0x8D, 0x01, 0x00, 0x00, 0x91, 0x01, 0x00, 0x00, 0x9A, 0x01, 0x00, 0x00, 0xA3, 0x01, 0x00, 0x00 - .byte 0xA5, 0x01, 0x00, 0x00, 0xB0, 0x01, 0x00, 0x00, 0xB3, 0x01, 0x00, 0x00, 0xB8, 0x01, 0x00, 0x00 - .byte 0xBB, 0x01, 0x00, 0x00, 0xC2, 0x01, 0x00, 0x00, 0xC9, 0x01, 0x00, 0x00, 0xCE, 0x01, 0x00, 0x00 - .byte 0xD0, 0x01, 0x00, 0x00, 0xD3, 0x01, 0x00, 0x00, 0xDF, 0x01, 0x00, 0x00, 0xE8, 0x01, 0x00, 0x00 - .byte 0xEB, 0x01, 0x00, 0x00, 0xF3, 0x01, 0x00, 0x00, 0xF4, 0x01, 0x00, 0x00, 0x26, 0x02, 0x00, 0x00 - .byte 0x8A, 0x02, 0x00, 0x00, 0xEE, 0x02, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00 - .global ARM9_UNKNOWN_TABLE__NA_20A20B0 -ARM9_UNKNOWN_TABLE__NA_20A20B0: - .byte 0x00 - .global _020A20B1 -_020A20B1: - .byte 0x00, 0x01, 0x01 - .byte 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, 0x06, 0x07, 0x07, 0x08, 0x08, 0x09, 0x09 - .byte 0x0A, 0x0A, 0x0B, 0x0B, 0x0C, 0x0C, 0x0D, 0x0D, 0x0E, 0x0E, 0x0F, 0x0F, 0x10, 0x10, 0x11, 0x11 - .byte 0x12, 0x12, 0x13, 0x13, 0x14, 0x14, 0x15, 0x15, 0x16, 0x16, 0x17, 0x17, 0x18, 0x18, 0x19, 0x19 - .byte 0x1A, 0x1A, 0x1B, 0x1B, 0x1C, 0x1C, 0x1D, 0x1D, 0x1E, 0x1E, 0x1F, 0x1F, 0x20, 0x20, 0x21, 0x21 - .byte 0x22, 0x22, 0x23, 0x23, 0x24, 0x24, 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28, 0x29, 0x29 - .byte 0x2A, 0x2A, 0x2B, 0x2B, 0x2C, 0x2C, 0x2D, 0x2D, 0x2E, 0x2E, 0x2F, 0x2F, 0x30, 0x30, 0x31, 0x31 - .byte 0x32, 0x32, 0x33, 0x33, 0x34, 0x34, 0x35, 0x35, 0x36, 0x36, 0x37, 0x37, 0x38, 0x38, 0x39, 0x39 - .byte 0x3A, 0x3A, 0x3B, 0x3B, 0x3C, 0x3C, 0x3D, 0x3D, 0x3E, 0x3E, 0x3F, 0x3F, 0x40, 0x40, 0x41, 0x41 - .byte 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x45, 0x45, 0x46, 0x46, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49 - .byte 0x4A, 0x4A, 0x4B, 0x4B, 0x4C, 0x4C, 0x4D, 0x4D, 0x4E, 0x4E, 0x4F, 0x4F, 0x50, 0x50, 0x51, 0x51 - .byte 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x57, 0x57, 0x58, 0x58, 0x59, 0x59 - .byte 0x5A, 0x5A, 0x5B, 0x5B, 0x5C, 0x5C, 0x5D, 0x5D, 0x5E, 0x5E, 0x5F, 0x5F, 0x60, 0x60, 0x61, 0x61 - .byte 0x62, 0x62, 0x63, 0x63, 0x64, 0x64, 0x65, 0x65, 0x66, 0x66, 0x67, 0xFF, 0x68, 0xFF, 0x69, 0xB3 - .byte 0x6A, 0xFF, 0x6B, 0xFF, 0x6C, 0xFF, 0x6D, 0xFF, 0x6E, 0xFF, 0x6F, 0xFF, 0x70, 0xFF, 0x71, 0xFF - .byte 0x72, 0xFF, 0x73, 0xFF, 0x74, 0xFF, 0x75, 0xFF, 0x76, 0xFF, 0x77, 0xFF, 0x78, 0xFF, 0x79, 0xFF - .byte 0x7A, 0xFF, 0x7B, 0xFF, 0x7C, 0xFF, 0x7D, 0xFF, 0x7E, 0xB1, 0x7F, 0xB2, 0x80, 0xB4, 0x81, 0xB5 - .byte 0x82, 0xB6, 0x83, 0xB7, 0x84, 0xB8, 0x85, 0xB9, 0x86, 0xBA, 0x87, 0xBB, 0x88, 0xBC, 0x89, 0xBD - .byte 0x8A, 0xBE, 0x8B, 0xBF, 0x8C, 0xC0, 0x8D, 0xC1, 0x8E, 0xC2, 0x8F, 0xC3, 0x90, 0xC4, 0x91, 0xC5 - .byte 0x92, 0xC6, 0x93, 0xC7, 0x94, 0xC8, 0x95, 0xC9, 0x96, 0xCA, 0x97, 0xCB, 0x98, 0xCC, 0x99, 0xCD - .byte 0x9A, 0xCE, 0x9B, 0xCF, 0x9C, 0xD0, 0x9D, 0xD1, 0x9E, 0xD2, 0x9F, 0xD3, 0xA0, 0xD4, 0xA1, 0xD5 - .byte 0xA2, 0xD6, 0xA3, 0xD7, 0xA4, 0xD8, 0xA5, 0xD9, 0xA6, 0xDA, 0xA7, 0xDB, 0xA8, 0xDC, 0xA9, 0xDD - .byte 0xAA, 0xDE, 0xAB, 0xF1, 0xAC, 0xF2, 0xAD, 0xF7, 0xAE, 0xF8, 0xAF, 0xF9, 0xB0, 0xFA, 0xB1, 0xFF - .byte 0xB2, 0xFF, 0xB3, 0xFF, 0xB4, 0xFF, 0xB5, 0xFF, 0xB6, 0xFF, 0xB7, 0xFF, 0xB8, 0xFF, 0xB9, 0xFF - .byte 0xBA, 0xFF, 0xBB, 0xFF, 0xBC, 0xFF, 0xBD, 0xFF, 0xBE, 0xFF, 0xBF, 0xFF, 0xC0, 0xFF, 0xC1, 0xFF - .byte 0xC2, 0xFF, 0xC3, 0xFF, 0xC4, 0xFF, 0xC5, 0xFF, 0xC6, 0xFF, 0xC7, 0xFF, 0xC8, 0xFF, 0xC9, 0xFF - .byte 0xCA, 0xFF, 0xCB, 0xFF, 0xCC, 0xFF, 0xCD, 0xFF, 0xCE, 0xFF, 0xCF, 0xFF, 0xD0, 0xFF, 0xD1, 0xFF - .byte 0xD2, 0xFF, 0xD3, 0xFF, 0xD4, 0xFF, 0xD5, 0xFF, 0xD6, 0xFF, 0xD7, 0xFF, 0xD8, 0xFF, 0xD9, 0xFF - .byte 0xDA, 0xFF, 0xDB, 0xFF, 0xDC, 0xFF, 0xDD, 0xFF, 0xDE, 0xFF, 0xDF, 0xFF, 0xE0, 0xFF, 0xE1, 0xFF - .byte 0xE2, 0xFF, 0xE3, 0xFF, 0xE4, 0xFF, 0xE5, 0xFF, 0xE6, 0xFF, 0xE7, 0xFF, 0xE8, 0xFF, 0xE9, 0xFF - .byte 0xEA, 0xFF, 0xEB, 0xFF, 0xEC, 0xFF, 0xED, 0xFF, 0xEE, 0xFF, 0xEF, 0xFF, 0xF0, 0xFF, 0xF1, 0xFF - .byte 0xF2, 0xFF, 0xF3, 0xFF, 0xF4, 0xFF, 0xF5, 0xFF, 0xF6, 0xFF, 0xF7, 0xFF, 0xF8, 0xFF, 0xF9, 0xFF - .byte 0xFA, 0xFF, 0xFB, 0xFF, 0xFC, 0xFF, 0xFD, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF - .global IQ_GUMMI_GAIN_TABLE -IQ_GUMMI_GAIN_TABLE: - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00 - .byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00 - .byte 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00 - .byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x05, 0x00 - .byte 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00 - .byte 0x04, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00 - .byte 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 - .byte 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 - .byte 0x05, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00 - .byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00 - .byte 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x05, 0x00, 0x04, 0x00 - .byte 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 - .byte 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x03, 0x00 - .byte 0x02, 0x00, 0x05, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00 - .byte 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x05, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00 - .byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00 - .byte 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00 - .byte 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00 - .byte 0x04, 0x00, 0x03, 0x00, 0x05, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 - .byte 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00 - .byte 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00 - .byte 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00 - .byte 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00 - .byte 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00 - .byte 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00 - .byte 0x02, 0x00, 0x05, 0x00 - .global GUMMI_BELLY_RESTORE_TABLE -GUMMI_BELLY_RESTORE_TABLE: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x0F, 0x00 - .byte 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00 - .byte 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00 - .byte 0x1E, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x14, 0x00 - .byte 0x0F, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0A, 0x00 - .byte 0x00, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x1E, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x0F, 0x00 - .byte 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00 - .byte 0x0F, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x1E, 0x00, 0x0A, 0x00 - .byte 0x14, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x0F, 0x00 - .byte 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00 - .byte 0x0F, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x0F, 0x00 - .byte 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0F, 0x00 - .byte 0x14, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x0F, 0x00 - .byte 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x14, 0x00 - .byte 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00 - .byte 0x0F, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0F, 0x00, 0x0F, 0x00 - .byte 0x0A, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x0F, 0x00 - .byte 0x0F, 0x00, 0x0A, 0x00, 0x1E, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x0F, 0x00 - .byte 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x14, 0x00 - .byte 0x14, 0x00, 0x05, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x0F, 0x00 - .byte 0x0F, 0x00, 0x0A, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00 - .byte 0x0F, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x0F, 0x00, 0x05, 0x00 - .byte 0x1E, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00 - .byte 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0A, 0x00 - .byte 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x0F, 0x00 - .byte 0x14, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x0F, 0x00 - .byte 0x0F, 0x00, 0x0A, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x14, 0x00 - .byte 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x14, 0x00 - .byte 0x14, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x0F, 0x00 - .byte 0x0F, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x00, 0x00, 0x05, 0x00 - .byte 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x00, 0x0A, 0x00, 0x0F, 0x00 - .byte 0x0F, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x0F, 0x00 - .byte 0x00, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x0F, 0x00 - .byte 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00 - .byte 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00 - .byte 0x0F, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x00, 0x14, 0x00, 0x0F, 0x00 - .byte 0x0A, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x0F, 0x00 - .byte 0x0A, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x05, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x0A, 0x00 - .byte 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x1E, 0x00 diff --git a/asm/main_rodata_020A20B1.s b/asm/main_rodata_020A20B1.s new file mode 100644 index 00000000..99af67b0 --- /dev/null +++ b/asm/main_rodata_020A20B1.s @@ -0,0 +1,157 @@ + .include "asm/macros.inc" + .include "main_rodata_020A20B1.inc" + + .rodata + .global MONEY_QUANTITY_TABLE +MONEY_QUANTITY_TABLE: + .byte 0x02, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0x0D, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00 + .byte 0x1D, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00 + .byte 0x2B, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00 + .byte 0x3E, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00 + .byte 0x50, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00 + .byte 0x65, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x00 + .byte 0x71, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00 + .byte 0x8B, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x9D, 0x00, 0x00, 0x00 + .byte 0xA3, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00, 0xAD, 0x00, 0x00, 0x00, 0xB3, 0x00, 0x00, 0x00 + .byte 0xB4, 0x00, 0x00, 0x00, 0xBE, 0x00, 0x00, 0x00, 0xC2, 0x00, 0x00, 0x00, 0xC5, 0x00, 0x00, 0x00 + .byte 0xC7, 0x00, 0x00, 0x00, 0xD4, 0x00, 0x00, 0x00, 0xDF, 0x00, 0x00, 0x00, 0xE3, 0x00, 0x00, 0x00 + .byte 0xE6, 0x00, 0x00, 0x00, 0xE9, 0x00, 0x00, 0x00, 0xEE, 0x00, 0x00, 0x00, 0xF1, 0x00, 0x00, 0x00 + .byte 0xFA, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x0D, 0x01, 0x00, 0x00 + .byte 0x10, 0x01, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x1C, 0x01, 0x00, 0x00 + .byte 0x25, 0x01, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00 + .byte 0x3D, 0x01, 0x00, 0x00, 0x4C, 0x01, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0x5C, 0x01, 0x00, 0x00 + .byte 0x5D, 0x01, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0x67, 0x01, 0x00, 0x00, 0x6F, 0x01, 0x00, 0x00 + .byte 0x76, 0x01, 0x00, 0x00, 0x7B, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00 + .byte 0x8D, 0x01, 0x00, 0x00, 0x91, 0x01, 0x00, 0x00, 0x9A, 0x01, 0x00, 0x00, 0xA3, 0x01, 0x00, 0x00 + .byte 0xA5, 0x01, 0x00, 0x00, 0xB0, 0x01, 0x00, 0x00, 0xB3, 0x01, 0x00, 0x00, 0xB8, 0x01, 0x00, 0x00 + .byte 0xBB, 0x01, 0x00, 0x00, 0xC2, 0x01, 0x00, 0x00, 0xC9, 0x01, 0x00, 0x00, 0xCE, 0x01, 0x00, 0x00 + .byte 0xD0, 0x01, 0x00, 0x00, 0xD3, 0x01, 0x00, 0x00, 0xDF, 0x01, 0x00, 0x00, 0xE8, 0x01, 0x00, 0x00 + .byte 0xEB, 0x01, 0x00, 0x00, 0xF3, 0x01, 0x00, 0x00, 0xF4, 0x01, 0x00, 0x00, 0x26, 0x02, 0x00, 0x00 + .byte 0x8A, 0x02, 0x00, 0x00, 0xEE, 0x02, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00 + .global ARM9_UNKNOWN_TABLE__NA_20A20B0 +ARM9_UNKNOWN_TABLE__NA_20A20B0: + .byte 0x00 + .global _020A20B1 +_020A20B1: + .byte 0x00, 0x01, 0x01 + .byte 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, 0x06, 0x07, 0x07, 0x08, 0x08, 0x09, 0x09 + .byte 0x0A, 0x0A, 0x0B, 0x0B, 0x0C, 0x0C, 0x0D, 0x0D, 0x0E, 0x0E, 0x0F, 0x0F, 0x10, 0x10, 0x11, 0x11 + .byte 0x12, 0x12, 0x13, 0x13, 0x14, 0x14, 0x15, 0x15, 0x16, 0x16, 0x17, 0x17, 0x18, 0x18, 0x19, 0x19 + .byte 0x1A, 0x1A, 0x1B, 0x1B, 0x1C, 0x1C, 0x1D, 0x1D, 0x1E, 0x1E, 0x1F, 0x1F, 0x20, 0x20, 0x21, 0x21 + .byte 0x22, 0x22, 0x23, 0x23, 0x24, 0x24, 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28, 0x29, 0x29 + .byte 0x2A, 0x2A, 0x2B, 0x2B, 0x2C, 0x2C, 0x2D, 0x2D, 0x2E, 0x2E, 0x2F, 0x2F, 0x30, 0x30, 0x31, 0x31 + .byte 0x32, 0x32, 0x33, 0x33, 0x34, 0x34, 0x35, 0x35, 0x36, 0x36, 0x37, 0x37, 0x38, 0x38, 0x39, 0x39 + .byte 0x3A, 0x3A, 0x3B, 0x3B, 0x3C, 0x3C, 0x3D, 0x3D, 0x3E, 0x3E, 0x3F, 0x3F, 0x40, 0x40, 0x41, 0x41 + .byte 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x45, 0x45, 0x46, 0x46, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49 + .byte 0x4A, 0x4A, 0x4B, 0x4B, 0x4C, 0x4C, 0x4D, 0x4D, 0x4E, 0x4E, 0x4F, 0x4F, 0x50, 0x50, 0x51, 0x51 + .byte 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x57, 0x57, 0x58, 0x58, 0x59, 0x59 + .byte 0x5A, 0x5A, 0x5B, 0x5B, 0x5C, 0x5C, 0x5D, 0x5D, 0x5E, 0x5E, 0x5F, 0x5F, 0x60, 0x60, 0x61, 0x61 + .byte 0x62, 0x62, 0x63, 0x63, 0x64, 0x64, 0x65, 0x65, 0x66, 0x66, 0x67, 0xFF, 0x68, 0xFF, 0x69, 0xB3 + .byte 0x6A, 0xFF, 0x6B, 0xFF, 0x6C, 0xFF, 0x6D, 0xFF, 0x6E, 0xFF, 0x6F, 0xFF, 0x70, 0xFF, 0x71, 0xFF + .byte 0x72, 0xFF, 0x73, 0xFF, 0x74, 0xFF, 0x75, 0xFF, 0x76, 0xFF, 0x77, 0xFF, 0x78, 0xFF, 0x79, 0xFF + .byte 0x7A, 0xFF, 0x7B, 0xFF, 0x7C, 0xFF, 0x7D, 0xFF, 0x7E, 0xB1, 0x7F, 0xB2, 0x80, 0xB4, 0x81, 0xB5 + .byte 0x82, 0xB6, 0x83, 0xB7, 0x84, 0xB8, 0x85, 0xB9, 0x86, 0xBA, 0x87, 0xBB, 0x88, 0xBC, 0x89, 0xBD + .byte 0x8A, 0xBE, 0x8B, 0xBF, 0x8C, 0xC0, 0x8D, 0xC1, 0x8E, 0xC2, 0x8F, 0xC3, 0x90, 0xC4, 0x91, 0xC5 + .byte 0x92, 0xC6, 0x93, 0xC7, 0x94, 0xC8, 0x95, 0xC9, 0x96, 0xCA, 0x97, 0xCB, 0x98, 0xCC, 0x99, 0xCD + .byte 0x9A, 0xCE, 0x9B, 0xCF, 0x9C, 0xD0, 0x9D, 0xD1, 0x9E, 0xD2, 0x9F, 0xD3, 0xA0, 0xD4, 0xA1, 0xD5 + .byte 0xA2, 0xD6, 0xA3, 0xD7, 0xA4, 0xD8, 0xA5, 0xD9, 0xA6, 0xDA, 0xA7, 0xDB, 0xA8, 0xDC, 0xA9, 0xDD + .byte 0xAA, 0xDE, 0xAB, 0xF1, 0xAC, 0xF2, 0xAD, 0xF7, 0xAE, 0xF8, 0xAF, 0xF9, 0xB0, 0xFA, 0xB1, 0xFF + .byte 0xB2, 0xFF, 0xB3, 0xFF, 0xB4, 0xFF, 0xB5, 0xFF, 0xB6, 0xFF, 0xB7, 0xFF, 0xB8, 0xFF, 0xB9, 0xFF + .byte 0xBA, 0xFF, 0xBB, 0xFF, 0xBC, 0xFF, 0xBD, 0xFF, 0xBE, 0xFF, 0xBF, 0xFF, 0xC0, 0xFF, 0xC1, 0xFF + .byte 0xC2, 0xFF, 0xC3, 0xFF, 0xC4, 0xFF, 0xC5, 0xFF, 0xC6, 0xFF, 0xC7, 0xFF, 0xC8, 0xFF, 0xC9, 0xFF + .byte 0xCA, 0xFF, 0xCB, 0xFF, 0xCC, 0xFF, 0xCD, 0xFF, 0xCE, 0xFF, 0xCF, 0xFF, 0xD0, 0xFF, 0xD1, 0xFF + .byte 0xD2, 0xFF, 0xD3, 0xFF, 0xD4, 0xFF, 0xD5, 0xFF, 0xD6, 0xFF, 0xD7, 0xFF, 0xD8, 0xFF, 0xD9, 0xFF + .byte 0xDA, 0xFF, 0xDB, 0xFF, 0xDC, 0xFF, 0xDD, 0xFF, 0xDE, 0xFF, 0xDF, 0xFF, 0xE0, 0xFF, 0xE1, 0xFF + .byte 0xE2, 0xFF, 0xE3, 0xFF, 0xE4, 0xFF, 0xE5, 0xFF, 0xE6, 0xFF, 0xE7, 0xFF, 0xE8, 0xFF, 0xE9, 0xFF + .byte 0xEA, 0xFF, 0xEB, 0xFF, 0xEC, 0xFF, 0xED, 0xFF, 0xEE, 0xFF, 0xEF, 0xFF, 0xF0, 0xFF, 0xF1, 0xFF + .byte 0xF2, 0xFF, 0xF3, 0xFF, 0xF4, 0xFF, 0xF5, 0xFF, 0xF6, 0xFF, 0xF7, 0xFF, 0xF8, 0xFF, 0xF9, 0xFF + .byte 0xFA, 0xFF, 0xFB, 0xFF, 0xFC, 0xFF, 0xFD, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF + .global IQ_GUMMI_GAIN_TABLE +IQ_GUMMI_GAIN_TABLE: + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00 + .byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00 + .byte 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00 + .byte 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00 + .byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x05, 0x00 + .byte 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 + .byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00 + .byte 0x04, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00 + .byte 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 + .byte 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x03, 0x00 + .byte 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 + .byte 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 + .byte 0x05, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00 + .byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 + .byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00 + .byte 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00 + .byte 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x05, 0x00, 0x04, 0x00 + .byte 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 + .byte 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x03, 0x00 + .byte 0x02, 0x00, 0x05, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00 + .byte 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00 + .byte 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x05, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00 + .byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 + .byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00 + .byte 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00 + .byte 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00 + .byte 0x04, 0x00, 0x03, 0x00, 0x05, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 + .byte 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00 + .byte 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x03, 0x00 + .byte 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 + .byte 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00 + .byte 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00 + .byte 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 + .byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00 + .byte 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00 + .byte 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00 + .byte 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00 + .byte 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00 + .byte 0x02, 0x00, 0x05, 0x00 + .global GUMMI_BELLY_RESTORE_TABLE +GUMMI_BELLY_RESTORE_TABLE: + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x0F, 0x00 + .byte 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00 + .byte 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00 + .byte 0x1E, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x14, 0x00 + .byte 0x0F, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0A, 0x00 + .byte 0x00, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x1E, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x0F, 0x00 + .byte 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00 + .byte 0x0F, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x1E, 0x00, 0x0A, 0x00 + .byte 0x14, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x0F, 0x00 + .byte 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00 + .byte 0x0F, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x0F, 0x00 + .byte 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0F, 0x00 + .byte 0x14, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x0F, 0x00 + .byte 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x14, 0x00 + .byte 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00 + .byte 0x0F, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0F, 0x00, 0x0F, 0x00 + .byte 0x0A, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x0F, 0x00 + .byte 0x0F, 0x00, 0x0A, 0x00, 0x1E, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x0F, 0x00 + .byte 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x14, 0x00 + .byte 0x14, 0x00, 0x05, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x0F, 0x00 + .byte 0x0F, 0x00, 0x0A, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00 + .byte 0x0F, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x0F, 0x00, 0x05, 0x00 + .byte 0x1E, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00 + .byte 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0A, 0x00 + .byte 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x0F, 0x00 + .byte 0x14, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x0F, 0x00 + .byte 0x0F, 0x00, 0x0A, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x14, 0x00 + .byte 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x14, 0x00 + .byte 0x14, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x0F, 0x00 + .byte 0x0F, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x00, 0x00, 0x05, 0x00 + .byte 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x00, 0x0A, 0x00, 0x0F, 0x00 + .byte 0x0F, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x0F, 0x00 + .byte 0x00, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x0F, 0x00 + .byte 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00 + .byte 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00 + .byte 0x0F, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x00, 0x14, 0x00, 0x0F, 0x00 + .byte 0x0A, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x0F, 0x00 + .byte 0x0A, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x05, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x0A, 0x00 + .byte 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x1E, 0x00 diff --git a/asm/overlay_29_0232E864.s b/asm/overlay_29_0232E864.s index 4f99c834..f035cc4d 100644 --- a/asm/overlay_29_0232E864.s +++ b/asm/overlay_29_0232E864.s @@ -3,6 +3,7 @@ .text +; https://decomp.me/scratch/H0aXM arm_func_start ExecuteMoveEffect ExecuteMoveEffect: ; 0x0232E864 #ifdef JAPAN diff --git a/include/dungeon_parameters_3.h b/include/dungeon_parameters_3.h new file mode 100644 index 00000000..436f1ea6 --- /dev/null +++ b/include/dungeon_parameters_3.h @@ -0,0 +1,7 @@ +#ifndef PMDSKY_DUNGEON_PARAMETERS_3_H +#define PMDSKY_DUNGEON_PARAMETERS_3_H + +// Minimum IQ required for enemies to use Exclusive-Move User +extern const s16 MIN_IQ_EXCLUSIVE_MOVE_USER; + +#endif //PMDSKY_DUNGEON_PARAMETERS_3_H diff --git a/include/dungeon_parameters_4.h b/include/dungeon_parameters_4.h new file mode 100644 index 00000000..e440e716 --- /dev/null +++ b/include/dungeon_parameters_4.h @@ -0,0 +1,7 @@ +#ifndef PMDSKY_DUNGEON_PARAMETERS_4_H +#define PMDSKY_DUNGEON_PARAMETERS_4_H + +// Minimum IQ required for enemies to use Item Master +extern const s16 MIN_IQ_ITEM_MASTER; + +#endif //PMDSKY_DUNGEON_PARAMETERS_4_H diff --git a/include/enums.h b/include/enums.h index c53a9cdf..5dbc5480 100644 --- a/include/enums.h +++ b/include/enums.h @@ -2,7 +2,6 @@ #define PMDSKY_ENUMS_H #define NUM_TACTICS TACTIC_NONE + 1 -#define MAX_NUM_IQ_SKILLS 25 // Tactic ID. These are usually encoded as bitvectors. enum tactic_id { diff --git a/include/iq_skills.h b/include/iq_skills.h new file mode 100644 index 00000000..87bc433a --- /dev/null +++ b/include/iq_skills.h @@ -0,0 +1,14 @@ +#ifndef PMDSKY_IQ_SKILLS_H +#define PMDSKY_IQ_SKILLS_H + +#define NUM_IQ_SKILLS 69 +#define NUM_IQ_SKILLS_PER_GROUP 25 +#define NUM_IQ_GROUPS 16 + +#include "enums.h" + +// Table of 4-byte values for each IQ skill that represent the required IQ value to unlock a skill. +extern const s32 IQ_SKILLS[NUM_IQ_SKILLS]; +extern const enum iq_skill_id IQ_GROUP_SKILLS[NUM_IQ_GROUPS][NUM_IQ_SKILLS_PER_GROUP]; + +#endif //PMDSKY_IQ_SKILLS_H diff --git a/include/main_02052B28.h b/include/main_02052B28.h new file mode 100644 index 00000000..f4439f58 --- /dev/null +++ b/include/main_02052B28.h @@ -0,0 +1,6 @@ +#ifndef PMDSKY_MAIN_02052B28_H +#define PMDSKY_MAIN_02052B28_H + +s32 GetIqGroup(s16 monster_id); + +#endif //PMDSKY_MAIN_02052B28_H diff --git a/include/main_02058CD8.h b/include/main_02058CD8.h new file mode 100644 index 00000000..22a88d5d --- /dev/null +++ b/include/main_02058CD8.h @@ -0,0 +1,11 @@ +#ifndef PMDSKY_MAIN_02058CD8_H +#define PMDSKY_MAIN_02058CD8_H + +#include "enums.h" +#include "util.h" + +// Returns whether an IQ skill can be learned with a given IQ amount or not. +// If the specified amount is 0, it always returns false. +bool8 CanLearnIqSkill(s32 iq_amount, enum iq_skill_id iq_id); + +#endif //PMDSKY_MAIN_02058CD8_H diff --git a/include/main_02058E68.h b/include/main_02058E68.h new file mode 100644 index 00000000..35a5b927 --- /dev/null +++ b/include/main_02058E68.h @@ -0,0 +1,9 @@ +#ifndef PMDSKY_MAIN_02058E68_H +#define PMDSKY_MAIN_02058E68_H + +#include "enums.h" + +// Gets the th skill on the list of IQ skills that a given monster species can learn. +enum iq_skill_id GetSpeciesIqSkill(s16 monster_id, u8 index); + +#endif //PMDSKY_MAIN_02058E68_H diff --git a/include/monster_parameters.h b/include/monster_parameters.h new file mode 100644 index 00000000..3eca2e49 --- /dev/null +++ b/include/monster_parameters.h @@ -0,0 +1,9 @@ +#ifndef PMDSKY_MONSTER_PARAMETERS_H +#define PMDSKY_MONSTER_PARAMETERS_H + +#include "iq_skills.h" + +// Table of 2-byte values for each IQ skill that represent a group. IQ skills in the same group can not be enabled at the same time. +extern const s16 IQ_SKILL_RESTRICTIONS[NUM_IQ_SKILLS + 1]; + +#endif //PMDSKY_MONSTER_PARAMETERS_H diff --git a/main.lsf b/main.lsf index d3a61549..14bd2fb2 100644 --- a/main.lsf +++ b/main.lsf @@ -82,6 +82,10 @@ Static main Object asm/main_0204B018.o Object src/script_variable.o Object asm/main_rodata_0209CECC.o + Object src/dungeon_parameters_3.o + Object asm/main_rodata_020A1894.o + Object src/dungeon_parameters_4.o + Object asm/main_rodata_020A18BC.o Object src/story_progress.o Object src/special_episode.o Object src/dungeon_recruitment_3.o @@ -104,8 +108,11 @@ Static main Object asm/main_02051788.o Object src/tactics_data.o Object asm/main_rodata_020A190C.o + Object src/monster_parameters.o Object src/secondary_terrain_types.o Object asm/main_rodata_020A1BB0.o + Object src/iq_skills.o + Object asm/main_rodata_020A20B1.o Object src/main_020517D4.o Object asm/main_020517F4.o Object src/main_020526EC.o @@ -114,6 +121,8 @@ Static main Object asm/main_020527E0.o Object src/main_0205283C.o Object asm/main_02052A7C.o + Object src/main_02052B28.o + Object asm/main_02052B44.o Object src/main_02054AA4.o Object asm/main_02054AD4.o Object src/main_02054BE0.o @@ -122,6 +131,10 @@ Static main Object asm/main_02054E4C.o Object src/main_02058C3C.o Object asm/main_02058C4C.o + Object src/main_02058CD8.o + Object asm/main_02058D04.o + Object src/main_02058E68.o + Object asm/main_02058E8C.o Object src/pokemon.o Object asm/main_02058F24.o Object src/main_0206C98C.o diff --git a/src/dungeon_parameters_3.c b/src/dungeon_parameters_3.c new file mode 100644 index 00000000..109bf814 --- /dev/null +++ b/src/dungeon_parameters_3.c @@ -0,0 +1,3 @@ +#include "dungeon_parameters_3.h" + +const s16 MIN_IQ_EXCLUSIVE_MOVE_USER = 331; diff --git a/src/dungeon_parameters_4.c b/src/dungeon_parameters_4.c new file mode 100644 index 00000000..b3989642 --- /dev/null +++ b/src/dungeon_parameters_4.c @@ -0,0 +1,3 @@ +#include "dungeon_parameters_4.h" + +const s16 MIN_IQ_ITEM_MASTER = 150; diff --git a/src/dungeon_pokemon_attributes_1.c b/src/dungeon_pokemon_attributes_1.c index 9107d648..57069ed2 100644 --- a/src/dungeon_pokemon_attributes_1.c +++ b/src/dungeon_pokemon_attributes_1.c @@ -1,18 +1,18 @@ #include "dungeon_pokemon_attributes_1.h" #include "dungeon_logic_7.h" +#include "dungeon_parameters_3.h" +#include "dungeon_parameters_4.h" #include "dungeon_util_static.h" +#include "iq_skills.h" +#include "main_02058CD8.h" +#include "main_02058E68.h" #include "overlay_29_022FF898.h" #include "overlay_29_023000E4.h" #include "pokemon.h" -extern bool8 CanLearnIqSkill(s32 iq_amount, enum iq_skill_id iq_id); extern void DisableIqSkill(u32 *iq_skills_flags, enum iq_skill_id iq_id); extern void EnableIqSkill(u32 *iq_skills_flags, enum iq_skill_id iq_id); extern bool8 GetPerformanceFlagWithChecks(s32 flag_id); -extern enum iq_skill_id GetSpeciesIqSkill(s16 monster_id, u8 index); - -extern s16 MIN_IQ_EXCLUSIVE_MOVE_USER; -extern s16 MIN_IQ_ITEM_MASTER; bool8 CanSeeInvisibleMonsters(struct entity *entity) { @@ -59,7 +59,7 @@ void UpdateIqSkills(struct monster *monster) monster->iq_skill_flags.flags[1] = 0; monster->iq_skill_flags.flags[2] = 0; - for (s32 i = 0; i < MAX_NUM_IQ_SKILLS; i++) + for (s32 i = 0; i < NUM_IQ_SKILLS_PER_GROUP; i++) { enum iq_skill_id iq_skill = GetSpeciesIqSkill(monster->id, i); if (iq_skill == IQ_NONE_2) @@ -94,7 +94,7 @@ void UpdateIqSkills(struct monster *monster) monster->iq_skill_flags.flags[0] = 0; monster->iq_skill_flags.flags[1] = 0; monster->iq_skill_flags.flags[2] = 0; - for (s32 i = 0; i < MAX_NUM_IQ_SKILLS; i++) + for (s32 i = 0; i < NUM_IQ_SKILLS_PER_GROUP; i++) { enum iq_skill_id iq_skill = GetSpeciesIqSkill(monster->id, i); if (iq_skill == IQ_NONE_2) diff --git a/src/iq_skills.c b/src/iq_skills.c new file mode 100644 index 00000000..4d1ba298 --- /dev/null +++ b/src/iq_skills.c @@ -0,0 +1,519 @@ +#include "iq_skills.h" + +const s32 IQ_SKILLS[69] = +{ + 9999, // IQ_NONE + 105, // IQ_TYPE_ADVANTAGE_MASTER + -1, // IQ_ITEM_CATCHER + -1, // IQ_COURSE_CHECKER + 500, // IQ_SURE_HIT_ATTACKER + 540, // IQ_QUICK_DODGER + 9999, // IQ_PP_CHECKER + 40, // IQ_NONTRAITOR + 25, // IQ_STATUS_CHECKER + 200, // IQ_EXP_GO_GETTER + 10, // IQ_EFFICIENCY_EXPERT + 125, // IQ_WEAK_TYPE_PICKER + 400, // IQ_ALL_TERRAIN_HIKER + 990, // IQ_ABSOLUTE_MOVER + 240, // IQ_TRAP_AVOIDER + 800, // IQ_HOUSE_AVOIDER + 250, // IQ_ENERGY_SAVER + 160, // IQ_NONSLEEPER + 70, // IQ_SELF_CURER + 600, // IQ_TRAP_SEER + 300, // IQ_LAVA_EVADER + 1, // IQ_DEDICATED_TRAVELER + -1, // IQ_ITEM_MASTER + -1, // IQ_EXCLUSIVE_MOVE_USER + 1, // IQ_ESCAPIST + 9999, // IQ_LOCK_PICKER + 480, // IQ_STAIR_SENSOR + 150, // IQ_COIN_WATCHER + 320, // IQ_EXP_ELITE + 260, // IQ_SHARPSHOOTER + 550, // IQ_FAST_FRIEND + 55, // IQ_PP_SAVER + 65, // IQ_BODYGUARD + 9999, // IQ_CAUTIOUS_CREEPER + 220, // IQ_AGGRESSOR + 230, // IQ_DEFENDER + 560, // IQ_INTIMIDATOR + 140, // IQ_SURVIVALIST + 420, // IQ_TRAP_BUSTER + 330, // IQ_COUNTER_HITTER + 520, // IQ_EXTRA_STRIKER + 270, // IQ_HIT_AND_RUNNER + 9999, // IQ_PARRY_EXPERT + 750, // IQ_QUICK_STRIKER + 570, // IQ_NO_CHARGER + 180, // IQ_WARY_FIGHTER + 170, // IQ_GAP_PROBER + 130, // IQ_POWER_PITCHER + 185, // IQ_CONCENTRATOR + 280, // IQ_COUNTER_BASHER + 30, // IQ_CHEERLEADER + 900, // IQ_NATURE_GIFTER + 175, // IQ_WISE_HEALER + 290, // IQ_QUICK_HEALER + 50, // IQ_ACUTE_SNIFFER + 190, // IQ_DEEP_BREATHER + 100, // IQ_BRICK_TOUGH + 310, // IQ_MULTITALENT + 950, // IQ_TIME_TRIPPER + 340, // IQ_ERRATIC_PLAYER + 195, // IQ_PRACTICE_SWINGER + 9999, // IQ_NO_DEFEATIST + 350, // IQ_HAGGLER + 360, // IQ_CLUTCH_PERFORMER + 440, // IQ_CRITICAL_DODGER + 580, // IQ_MAP_SURVEYOR + 850, // IQ_PIERCE_HURLER + 370, // IQ_COLLECTOR + 9999, // IQ_TRUE_POWERIST +}; + +const enum iq_skill_id IQ_GROUP_SKILLS[16][25] = +{ + // Group A + { + IQ_ESCAPIST, + IQ_STAIR_SENSOR, + IQ_COIN_WATCHER, + IQ_PP_SAVER, + IQ_SURVIVALIST, + IQ_TRAP_BUSTER, + IQ_ACUTE_SNIFFER, + IQ_MULTITALENT, + IQ_HAGGLER, + IQ_MAP_SURVEYOR, + IQ_PIERCE_HURLER, + IQ_COLLECTOR, + IQ_ITEM_MASTER, + IQ_COURSE_CHECKER, + IQ_NONTRAITOR, + IQ_STATUS_CHECKER, + IQ_TYPE_ADVANTAGE_MASTER, + IQ_EXCLUSIVE_MOVE_USER, + IQ_DEDICATED_TRAVELER, + IQ_ALL_TERRAIN_HIKER, + IQ_HOUSE_AVOIDER, + IQ_LAVA_EVADER, + IQ_ITEM_CATCHER, + IQ_NONSLEEPER, + IQ_NONE_2 + }, + // Group B + { + IQ_ESCAPIST, + IQ_COIN_WATCHER, + IQ_FAST_FRIEND, + IQ_BODYGUARD, + IQ_TRAP_BUSTER, + IQ_GAP_PROBER, + IQ_CHEERLEADER, + IQ_NATURE_GIFTER, + IQ_WISE_HEALER, + IQ_DEEP_BREATHER, + IQ_HAGGLER, + IQ_PIERCE_HURLER, + IQ_ITEM_MASTER, + IQ_COURSE_CHECKER, + IQ_NONTRAITOR, + IQ_STATUS_CHECKER, + IQ_TYPE_ADVANTAGE_MASTER, + IQ_EXCLUSIVE_MOVE_USER, + IQ_DEDICATED_TRAVELER, + IQ_HOUSE_AVOIDER, + IQ_TRAP_SEER, + IQ_ITEM_CATCHER, + IQ_NONSLEEPER, + IQ_LAVA_EVADER, + IQ_NONE_2 + }, + // Group C + { + IQ_ESCAPIST, + IQ_AGGRESSOR, + IQ_INTIMIDATOR, + IQ_SURVIVALIST, + IQ_EXTRA_STRIKER, + IQ_NO_CHARGER, + IQ_POWER_PITCHER, + IQ_CONCENTRATOR, + IQ_COUNTER_BASHER, + IQ_BRICK_TOUGH, + IQ_ERRATIC_PLAYER, + IQ_PRACTICE_SWINGER, + IQ_CLUTCH_PERFORMER, + IQ_PIERCE_HURLER, + IQ_ITEM_MASTER, + IQ_COURSE_CHECKER, + IQ_NONTRAITOR, + IQ_STATUS_CHECKER, + IQ_TYPE_ADVANTAGE_MASTER, + IQ_EXCLUSIVE_MOVE_USER, + IQ_EXP_GO_GETTER, + IQ_ITEM_CATCHER, + IQ_NONSLEEPER, + IQ_LAVA_EVADER, + IQ_NONE_2 + }, + // Group D + { + IQ_ESCAPIST, + IQ_STAIR_SENSOR, + IQ_SHARPSHOOTER, + IQ_PP_SAVER, + IQ_COUNTER_HITTER, + IQ_EXTRA_STRIKER, + IQ_QUICK_STRIKER, + IQ_GAP_PROBER, + IQ_CONCENTRATOR, + IQ_PRACTICE_SWINGER, + IQ_CLUTCH_PERFORMER, + IQ_CRITICAL_DODGER, + IQ_ITEM_MASTER, + IQ_COURSE_CHECKER, + IQ_NONTRAITOR, + IQ_STATUS_CHECKER, + IQ_EXCLUSIVE_MOVE_USER, + IQ_DEDICATED_TRAVELER, + IQ_TRAP_AVOIDER, + IQ_SELF_CURER, + IQ_TRAP_SEER, + IQ_ITEM_CATCHER, + IQ_QUICK_DODGER, + IQ_LAVA_EVADER, + IQ_NONE_2 + }, + // Group E + { + IQ_ESCAPIST, + IQ_BODYGUARD, + IQ_DEFENDER, + IQ_INTIMIDATOR, + IQ_SURVIVALIST, + IQ_COUNTER_HITTER, + IQ_WARY_FIGHTER, + IQ_POWER_PITCHER, + IQ_CHEERLEADER, + IQ_WISE_HEALER, + IQ_QUICK_HEALER, + IQ_DEEP_BREATHER, + IQ_BRICK_TOUGH, + IQ_ITEM_MASTER, + IQ_COURSE_CHECKER, + IQ_NONTRAITOR, + IQ_STATUS_CHECKER, + IQ_SURE_HIT_ATTACKER, + IQ_EXCLUSIVE_MOVE_USER, + IQ_EFFICIENCY_EXPERT, + IQ_HOUSE_AVOIDER, + IQ_ITEM_CATCHER, + IQ_ENERGY_SAVER, + IQ_LAVA_EVADER, + IQ_NONE_2 + }, + // Group F + { + IQ_ESCAPIST, + IQ_STAIR_SENSOR, + IQ_EXP_ELITE, + IQ_SHARPSHOOTER, + IQ_PP_SAVER, + IQ_TRAP_BUSTER, + IQ_HIT_AND_RUNNER, + IQ_NO_CHARGER, + IQ_WARY_FIGHTER, + IQ_GAP_PROBER, + IQ_MULTITALENT, + IQ_PIERCE_HURLER, + IQ_ITEM_MASTER, + IQ_COURSE_CHECKER, + IQ_NONTRAITOR, + IQ_STATUS_CHECKER, + IQ_TYPE_ADVANTAGE_MASTER, + IQ_EXCLUSIVE_MOVE_USER, + IQ_WEAK_TYPE_PICKER, + IQ_ALL_TERRAIN_HIKER, + IQ_HOUSE_AVOIDER, + IQ_SELF_CURER, + IQ_LAVA_EVADER, + IQ_ITEM_CATCHER, + IQ_NONE_2 + }, + // Group G + { + IQ_ESCAPIST, + IQ_STAIR_SENSOR, + IQ_EXP_ELITE, + IQ_PP_SAVER, + IQ_HIT_AND_RUNNER, + IQ_QUICK_STRIKER, + IQ_QUICK_HEALER, + IQ_ACUTE_SNIFFER, + IQ_ERRATIC_PLAYER, + IQ_PRACTICE_SWINGER, + IQ_CRITICAL_DODGER, + IQ_MAP_SURVEYOR, + IQ_ITEM_MASTER, + IQ_COURSE_CHECKER, + IQ_NONTRAITOR, + IQ_STATUS_CHECKER, + IQ_EXCLUSIVE_MOVE_USER, + IQ_EXP_GO_GETTER, + IQ_TRAP_AVOIDER, + IQ_SELF_CURER, + IQ_TRAP_SEER, + IQ_ITEM_CATCHER, + IQ_QUICK_DODGER, + IQ_LAVA_EVADER, + IQ_NONE_2 + }, + // Group H + { + IQ_ESCAPIST, + IQ_COIN_WATCHER, + IQ_FAST_FRIEND, + IQ_BODYGUARD, + IQ_TRAP_BUSTER, + IQ_WARY_FIGHTER, + IQ_NATURE_GIFTER, + IQ_WISE_HEALER, + IQ_QUICK_HEALER, + IQ_DEEP_BREATHER, + IQ_BRICK_TOUGH, + IQ_CRITICAL_DODGER, + IQ_ITEM_MASTER, + IQ_COURSE_CHECKER, + IQ_NONTRAITOR, + IQ_STATUS_CHECKER, + IQ_EXCLUSIVE_MOVE_USER, + IQ_EFFICIENCY_EXPERT, + IQ_ALL_TERRAIN_HIKER, + IQ_HOUSE_AVOIDER, + IQ_SELF_CURER, + IQ_LAVA_EVADER, + IQ_ITEM_CATCHER, + IQ_QUICK_DODGER, + IQ_NONE_2 + }, + { + IQ_ESCAPIST, + IQ_ITEM_MASTER, + IQ_COURSE_CHECKER, + IQ_NONTRAITOR, + IQ_STATUS_CHECKER, + IQ_EXCLUSIVE_MOVE_USER, + IQ_ITEM_CATCHER, + IQ_LAVA_EVADER, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2 + }, + { + IQ_ESCAPIST, + IQ_ITEM_MASTER, + IQ_COURSE_CHECKER, + IQ_NONTRAITOR, + IQ_STATUS_CHECKER, + IQ_EXCLUSIVE_MOVE_USER, + IQ_ITEM_CATCHER, + IQ_LAVA_EVADER, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2 + }, + // Group I + { + IQ_ESCAPIST, + IQ_SHARPSHOOTER, + IQ_AGGRESSOR, + IQ_INTIMIDATOR, + IQ_SURVIVALIST, + IQ_EXTRA_STRIKER, + IQ_PP_SAVER, + IQ_POWER_PITCHER, + IQ_QUICK_HEALER, + IQ_DEEP_BREATHER, + IQ_TIME_TRIPPER, + IQ_PRACTICE_SWINGER, + IQ_ITEM_MASTER, + IQ_COURSE_CHECKER, + IQ_NONTRAITOR, + IQ_STATUS_CHECKER, + IQ_EXCLUSIVE_MOVE_USER, + IQ_EXP_GO_GETTER, + IQ_ALL_TERRAIN_HIKER, + IQ_HOUSE_AVOIDER, + IQ_SELF_CURER, + IQ_LAVA_EVADER, + IQ_ITEM_CATCHER, + IQ_QUICK_DODGER, + IQ_NONE_2 + }, + // Group J + { + IQ_ESCAPIST, + IQ_STAIR_SENSOR, + IQ_PP_SAVER, + IQ_DEFENDER, + IQ_INTIMIDATOR, + IQ_HIT_AND_RUNNER, + IQ_WARY_FIGHTER, + IQ_GAP_PROBER, + IQ_CONCENTRATOR, + IQ_MULTITALENT, + IQ_PRACTICE_SWINGER, + IQ_MAP_SURVEYOR, + IQ_ITEM_MASTER, + IQ_COURSE_CHECKER, + IQ_NONTRAITOR, + IQ_STATUS_CHECKER, + IQ_SURE_HIT_ATTACKER, + IQ_EXCLUSIVE_MOVE_USER, + IQ_WEAK_TYPE_PICKER, + IQ_ABSOLUTE_MOVER, + IQ_HOUSE_AVOIDER, + IQ_LAVA_EVADER, + IQ_ITEM_CATCHER, + IQ_ENERGY_SAVER, + IQ_NONE_2 + }, + { + IQ_ESCAPIST, + IQ_ITEM_MASTER, + IQ_COURSE_CHECKER, + IQ_NONTRAITOR, + IQ_STATUS_CHECKER, + IQ_EXCLUSIVE_MOVE_USER, + IQ_ITEM_CATCHER, + IQ_LAVA_EVADER, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2 + }, + { + IQ_ESCAPIST, + IQ_ITEM_MASTER, + IQ_COURSE_CHECKER, + IQ_NONTRAITOR, + IQ_STATUS_CHECKER, + IQ_EXCLUSIVE_MOVE_USER, + IQ_ITEM_CATCHER, + IQ_LAVA_EVADER, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2 + }, + { + IQ_ESCAPIST, + IQ_ITEM_MASTER, + IQ_COURSE_CHECKER, + IQ_NONTRAITOR, + IQ_STATUS_CHECKER, + IQ_EXCLUSIVE_MOVE_USER, + IQ_ITEM_CATCHER, + IQ_LAVA_EVADER, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2 + }, + { + IQ_ESCAPIST, + IQ_ITEM_MASTER, + IQ_COURSE_CHECKER, + IQ_NONTRAITOR, + IQ_STATUS_CHECKER, + IQ_EXCLUSIVE_MOVE_USER, + IQ_ITEM_CATCHER, + IQ_LAVA_EVADER, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2, + IQ_NONE_2} +}; diff --git a/src/main_02052B28.c b/src/main_02052B28.c new file mode 100644 index 00000000..8e908872 --- /dev/null +++ b/src/main_02052B28.c @@ -0,0 +1,7 @@ +#include "main_02052B28.h" +#include "monster_data.h" + +s32 GetIqGroup(s16 monster_id) +{ + return MONSTER_DATA_TABLE_PTR->entries[monster_id].iq_group; +} diff --git a/src/main_02058CD8.c b/src/main_02058CD8.c new file mode 100644 index 00000000..f1244058 --- /dev/null +++ b/src/main_02058CD8.c @@ -0,0 +1,10 @@ +#include "main_02058CD8.h" +#include "iq_skills.h" + +bool8 CanLearnIqSkill(s32 iq_amount, enum iq_skill_id iq_id) +{ + if (iq_id == IQ_NONE) + return 0; + + return IQ_SKILLS[iq_id] <= iq_amount; +} diff --git a/src/main_02058E68.c b/src/main_02058E68.c new file mode 100644 index 00000000..6de54a27 --- /dev/null +++ b/src/main_02058E68.c @@ -0,0 +1,8 @@ +#include "main_02058E68.h" +#include "iq_skills.h" +#include "main_02052B28.h" + +enum iq_skill_id GetSpeciesIqSkill(s16 monster_id, u8 index) +{ + return IQ_GROUP_SKILLS[GetIqGroup(monster_id)][index]; +} diff --git a/src/monster_parameters.c b/src/monster_parameters.c new file mode 100644 index 00000000..5465d4df --- /dev/null +++ b/src/monster_parameters.c @@ -0,0 +1,75 @@ +#include "monster_parameters.h" + +const s16 IQ_SKILL_RESTRICTIONS[NUM_IQ_SKILLS + 1] = +{ + 9999, // IQ_NONE + 4, // IQ_TYPE_ADVANTAGE_MASTER + 1, // IQ_ITEM_CATCHER + 2, // IQ_COURSE_CHECKER + 4, // IQ_SURE_HIT_ATTACKER + 4, // IQ_QUICK_DODGER + 6, // IQ_PP_CHECKER + 7, // IQ_NONTRAITOR + 8, // IQ_STATUS_CHECKER + 9, // IQ_EXP_GO_GETTER + 9, // IQ_EFFICIENCY_EXPERT + 9, // IQ_WEAK_TYPE_PICKER + 10, // IQ_ALL_TERRAIN_HIKER + 10, // IQ_ABSOLUTE_MOVER + 11, // IQ_TRAP_AVOIDER + 11, // IQ_HOUSE_AVOIDER + 14, // IQ_ENERGY_SAVER + 14, // IQ_NONSLEEPER + 14, // IQ_SELF_CURER + 16, // IQ_TRAP_SEER + 20, // IQ_LAVA_EVADER + 9, // IQ_DEDICATED_TRAVELER + 17, // IQ_ITEM_MASTER + 6, // IQ_EXCLUSIVE_MOVE_USER + 24, // IQ_ESCAPIST + 25, // IQ_LOCK_PICKER + 26, // IQ_STAIR_SENSOR + 27, // IQ_COIN_WATCHER + 28, // IQ_EXP_ELITE + 29, // IQ_SHARPSHOOTER + 30, // IQ_FAST_FRIEND + 31, // IQ_PP_SAVER + 32, // IQ_BODYGUARD + 33, // IQ_CAUTIOUS_CREEPER + 34, // IQ_AGGRESSOR + 35, // IQ_DEFENDER + 36, // IQ_INTIMIDATOR + 37, // IQ_SURVIVALIST + 38, // IQ_TRAP_BUSTER + 39, // IQ_COUNTER_HITTER + 40, // IQ_EXTRA_STRIKER + 41, // IQ_HIT_AND_RUNNER + 42, // IQ_PARRY_EXPERT + 43, // IQ_QUICK_STRIKER + 44, // IQ_NO_CHARGER + 45, // IQ_WARY_FIGHTER + 46, // IQ_GAP_PROBER + 47, // IQ_POWER_PITCHER + 48, // IQ_CONCENTRATOR + 49, // IQ_COUNTER_BASHER + 50, // IQ_CHEERLEADER + 51, // IQ_NATURE_GIFTER + 52, // IQ_WISE_HEALER + 53, // IQ_QUICK_HEALER + 54, // IQ_ACUTE_SNIFFER + 55, // IQ_DEEP_BREATHER + 56, // IQ_BRICK_TOUGH + 57, // IQ_MULTITALENT + 58, // IQ_TIME_TRIPPER + 59, // IQ_ERRATIC_PLAYER + 60, // IQ_PRACTICE_SWINGER + 61, // IQ_NO_DEFEATIST + 62, // IQ_HAGGLER + 63, // IQ_CLUTCH_PERFORMER + 64, // IQ_CRITICAL_DODGER + 65, // IQ_MAP_SURVEYOR + 66, // IQ_PIERCE_HURLER + 67, // IQ_COLLECTOR + 68, // IQ_TRUE_POWERIST + 0, // IQ_NONE_2 +}; diff --git a/src/type_matchup_table.c b/src/type_matchup_table.c index cc50ba4e..75385383 100644 --- a/src/type_matchup_table.c +++ b/src/type_matchup_table.c @@ -6,7 +6,8 @@ #define NEUTRAL MATCHUP_NEUTRAL #define SUPER MATCHUP_SUPER_EFFECTIVE -const struct type_matchup_table TYPE_MATCHUP_TABLE = { +const struct type_matchup_table TYPE_MATCHUP_TABLE = +{ { // NONE NORMAL FIRE WATER GRASS ELECTRIC ICE FIGHTING POISON GROUND FLYING PSYCHIC BUG ROCK GHOST DRAGON DARK STEEL [TYPE_NONE] = {NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL},