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/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/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/main.lsf b/main.lsf index 91733e82..6523bb55 100644 --- a/main.lsf +++ b/main.lsf @@ -120,6 +120,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 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_02058E68.c b/src/main_02058E68.c index d1329897..6de54a27 100644 --- a/src/main_02058E68.c +++ b/src/main_02058E68.c @@ -1,7 +1,6 @@ #include "main_02058E68.h" #include "iq_skills.h" - -extern s32 GetIqGroup(s16 monster_id); +#include "main_02052B28.h" enum iq_skill_id GetSpeciesIqSkill(s16 monster_id, u8 index) {