diff options
author | Cameron Hall <cameronghall@cox.net> | 2018-01-25 19:36:54 -0600 |
---|---|---|
committer | Cameron Hall <cameronghall@cox.net> | 2018-01-25 19:36:54 -0600 |
commit | e50f5e906776a799ec69418168f032880e16384c (patch) | |
tree | 9887680e36304f843f6e04d8d6b0864011417d06 /src/pokemon | |
parent | 9f7fa5781e8de8e23faea3785e8b3aebde79c8c6 (diff) |
more debug integrations
Diffstat (limited to 'src/pokemon')
-rw-r--r-- | src/pokemon/pokemon_1.c | 359 | ||||
-rw-r--r-- | src/pokemon/pokemon_menu.c | 151 |
2 files changed, 61 insertions, 449 deletions
diff --git a/src/pokemon/pokemon_1.c b/src/pokemon/pokemon_1.c index 6f187ad71..41579fa28 100644 --- a/src/pokemon/pokemon_1.c +++ b/src/pokemon/pokemon_1.c @@ -525,324 +525,49 @@ void CalculateMonStats(struct Pokemon *mon) } #if DEBUG -__attribute__((naked)) -void debug_sub_803F55C() +void debug_sub_803F55C(struct Pokemon *mon) { - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xffffffc4\n" - " add r5, r0, #0\n" - " mov r1, #0x39\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x1c]\n" - " add r0, r5, #0\n" - " mov r1, #0x27\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " add r7, r0, #0\n" - " add r0, r5, #0\n" - " mov r1, #0x1a\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " add r4, r0, #0\n" - " add r0, r5, #0\n" - " mov r1, #0x28\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " mov r9, r0\n" - " add r0, r5, #0\n" - " mov r1, #0x1b\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " mov r8, r0\n" - " add r0, r5, #0\n" - " mov r1, #0x29\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x20]\n" - " add r0, r5, #0\n" - " mov r1, #0x1c\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " mov sl, r0\n" - " add r0, r5, #0\n" - " mov r1, #0x2a\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x24]\n" - " add r0, r5, #0\n" - " mov r1, #0x1d\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x28]\n" - " add r0, r5, #0\n" - " mov r1, #0x2b\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x2c]\n" - " add r0, r5, #0\n" - " mov r1, #0x1e\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x30]\n" - " add r0, r5, #0\n" - " mov r1, #0x2c\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x34]\n" - " add r0, r5, #0\n" - " mov r1, #0x1f\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x38]\n" - " add r0, r5, #0\n" - " mov r1, #0xb\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " lsl r0, r0, #0x10\n" - " lsr r6, r0, #0x10\n" - " add r0, r5, #0\n" - " bl GetLevelFromMonExp\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " str r0, [sp]\n" - " add r0, r5, #0\n" - " mov r1, #0x38\n" - " mov r2, sp\n" - " bl SetMonData\n" - " ldr r0, ._71\n" - " cmp r6, r0\n" - " bne ._69 @cond_branch\n" - " mov r0, #0x1\n" - " str r0, [sp, #0x4]\n" - " lsl r7, r6, #0x3\n" - " b ._70\n" - "._72:\n" - " .align 2, 0\n" - "._71:\n" - " .word 0x12f\n" - "._69:\n" - " ldr r1, ._80\n" - " lsl r2, r6, #0x3\n" - " sub r0, r2, r6\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r1\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x1\n" - " add r1, r0, r7\n" - " add r0, r4, #0\n" - " add r7, r2, #0\n" - " cmp r0, #0\n" - " bge ._73 @cond_branch\n" - " add r0, r0, #0x3\n" - "._73:\n" - " asr r0, r0, #0x2\n" - " add r0, r1, r0\n" - " ldr r4, [sp]\n" - " mul r0, r0, r4\n" - " mov r1, #0x64\n" - " bl __divsi3\n" - " add r0, r0, r4\n" - " add r0, r0, #0xa\n" - " str r0, [sp, #0x4]\n" - "._70:\n" - " add r2, sp, #0x4\n" - " add r0, r5, #0\n" - " mov r1, #0x3a\n" - " bl SetMonData\n" - " ldr r1, ._80\n" - " sub r0, r7, r6\n" - " lsl r0, r0, #0x2\n" - " add r6, r0, r1\n" - " ldrb r0, [r6, #0x1]\n" - " lsl r0, r0, #0x1\n" - " mov r2, r9\n" - " add r1, r0, r2\n" - " mov r0, r8\n" - " cmp r0, #0\n" - " bge ._74 @cond_branch\n" - " add r0, r0, #0x3\n" - "._74:\n" - " asr r0, r0, #0x2\n" - " add r0, r1, r0\n" - " ldr r1, [sp]\n" - " mul r0, r0, r1\n" - " mov r1, #0x64\n" - " bl __divsi3\n" - " add r0, r0, #0x5\n" - " str r0, [sp, #0x8]\n" - " add r0, r5, #0\n" - " bl GetNature\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r4, sp, #0x8\n" - " ldrh r1, [r4]\n" - " mov r2, #0x1\n" - " bl nature_stat_mod\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " str r0, [sp, #0x8]\n" - " add r0, r5, #0\n" - " mov r1, #0x3b\n" - " add r2, r4, #0\n" - " bl SetMonData\n" - " ldrb r0, [r6, #0x2]\n" - " lsl r0, r0, #0x1\n" - " ldr r2, [sp, #0x20]\n" - " add r1, r0, r2\n" - " mov r0, sl\n" - " cmp r0, #0\n" - " bge ._75 @cond_branch\n" - " add r0, r0, #0x3\n" - "._75:\n" - " asr r0, r0, #0x2\n" - " add r0, r1, r0\n" - " ldr r1, [sp]\n" - " mul r0, r0, r1\n" - " mov r1, #0x64\n" - " bl __divsi3\n" - " add r0, r0, #0x5\n" - " str r0, [sp, #0xc]\n" - " add r0, r5, #0\n" - " bl GetNature\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r4, sp, #0xc\n" - " ldrh r1, [r4]\n" - " mov r2, #0x2\n" - " bl nature_stat_mod\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " str r0, [sp, #0xc]\n" - " add r0, r5, #0\n" - " mov r1, #0x3c\n" - " add r2, r4, #0\n" - " bl SetMonData\n" - " ldrb r0, [r6, #0x3]\n" - " lsl r0, r0, #0x1\n" - " ldr r2, [sp, #0x24]\n" - " add r1, r0, r2\n" - " ldr r0, [sp, #0x28]\n" - " cmp r0, #0\n" - " bge ._76 @cond_branch\n" - " add r0, r0, #0x3\n" - "._76:\n" - " asr r0, r0, #0x2\n" - " add r0, r1, r0\n" - " ldr r1, [sp]\n" - " mul r0, r0, r1\n" - " mov r1, #0x64\n" - " bl __divsi3\n" - " add r0, r0, #0x5\n" - " str r0, [sp, #0x10]\n" - " add r0, r5, #0\n" - " bl GetNature\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r4, sp, #0x10\n" - " ldrh r1, [r4]\n" - " mov r2, #0x3\n" - " bl nature_stat_mod\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " str r0, [sp, #0x10]\n" - " add r0, r5, #0\n" - " mov r1, #0x3d\n" - " add r2, r4, #0\n" - " bl SetMonData\n" - " ldrb r0, [r6, #0x4]\n" - " lsl r0, r0, #0x1\n" - " ldr r2, [sp, #0x2c]\n" - " add r1, r0, r2\n" - " ldr r0, [sp, #0x30]\n" - " cmp r0, #0\n" - " bge ._77 @cond_branch\n" - " add r0, r0, #0x3\n" - "._77:\n" - " asr r0, r0, #0x2\n" - " add r0, r1, r0\n" - " ldr r1, [sp]\n" - " mul r0, r0, r1\n" - " mov r1, #0x64\n" - " bl __divsi3\n" - " add r0, r0, #0x5\n" - " str r0, [sp, #0x14]\n" - " add r0, r5, #0\n" - " bl GetNature\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r4, sp, #0x14\n" - " ldrh r1, [r4]\n" - " mov r2, #0x4\n" - " bl nature_stat_mod\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " str r0, [sp, #0x14]\n" - " add r0, r5, #0\n" - " mov r1, #0x3e\n" - " add r2, r4, #0\n" - " bl SetMonData\n" - " ldrb r0, [r6, #0x5]\n" - " lsl r0, r0, #0x1\n" - " ldr r1, [sp, #0x34]\n" - " add r2, r0, r1\n" - " ldr r0, [sp, #0x38]\n" - " cmp r0, #0\n" - " bge ._78 @cond_branch\n" - " add r0, r0, #0x3\n" - "._78:\n" - " asr r0, r0, #0x2\n" - " add r0, r2, r0\n" - " ldr r1, [sp]\n" - " mul r0, r0, r1\n" - " mov r1, #0x64\n" - " bl __divsi3\n" - " add r0, r0, #0x5\n" - " str r0, [sp, #0x18]\n" - " add r0, r5, #0\n" - " bl GetNature\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r4, sp, #0x18\n" - " ldrh r1, [r4]\n" - " mov r2, #0x5\n" - " bl nature_stat_mod\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " str r0, [sp, #0x18]\n" - " add r0, r5, #0\n" - " mov r1, #0x3f\n" - " add r2, r4, #0\n" - " bl SetMonData\n" - " ldr r1, [sp, #0x4]\n" - " ldr r0, [sp, #0x1c]\n" - " cmp r1, r0\n" - " bge ._79 @cond_branch\n" - " str r1, [sp, #0x1c]\n" - "._79:\n" - " add r2, sp, #0x1c\n" - " add r0, r5, #0\n" - " mov r1, #0x39\n" - " bl SetMonData\n" - " add sp, sp, #0x3c\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._81:\n" - " .align 2, 0\n" - "._80:\n" - " .word gBaseStats\n" - "\n" - ); + s32 currentHP = GetMonData(mon, MON_DATA_HP, NULL); + s32 hpIV = GetMonData(mon, MON_DATA_HP_IV, NULL); + s32 hpEV = GetMonData(mon, MON_DATA_HP_EV, NULL); + s32 attackIV = GetMonData(mon, MON_DATA_ATK_IV, NULL); + s32 attackEV = GetMonData(mon, MON_DATA_ATK_EV, NULL); + s32 defenseIV = GetMonData(mon, MON_DATA_DEF_IV, NULL); + s32 defenseEV = GetMonData(mon, MON_DATA_DEF_EV, NULL); + s32 speedIV = GetMonData(mon, MON_DATA_SPEED_IV, NULL); + s32 speedEV = GetMonData(mon, MON_DATA_SPEED_EV, NULL); + s32 spAttackIV = GetMonData(mon, MON_DATA_SPATK_IV, NULL); + s32 spAttackEV = GetMonData(mon, MON_DATA_SPATK_EV, NULL); + s32 spDefenseIV = GetMonData(mon, MON_DATA_SPDEF_IV, NULL); + s32 spDefenseEV = GetMonData(mon, MON_DATA_SPDEF_EV, NULL); + u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); + s32 level = GetLevelFromMonExp(mon); + s32 newMaxHP; + + SetMonData(mon, MON_DATA_LEVEL, &level); + + if (species == SPECIES_SHEDINJA) + { + newMaxHP = 1; + } + else + { + s32 n = 2 * gBaseStats[species].baseHP + hpIV; + newMaxHP = (((n + hpEV / 4) * level) / 100) + level + 10; + } + + SetMonData(mon, MON_DATA_MAX_HP, &newMaxHP); + + CALC_STAT(baseAttack, attackIV, attackEV, 1, MON_DATA_ATK) + CALC_STAT(baseDefense, defenseIV, defenseEV, 2, MON_DATA_DEF) + CALC_STAT(baseSpeed, speedIV, speedEV, 3, MON_DATA_SPEED) + CALC_STAT(baseSpAttack, spAttackIV, spAttackEV, 4, MON_DATA_SPATK) + CALC_STAT(baseSpDefense, spDefenseIV, spDefenseEV, 5, MON_DATA_SPDEF) + + if (newMaxHP < currentHP) + currentHP = newMaxHP; + + SetMonData(mon, MON_DATA_HP, ¤tHP); } #endif diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c index 8e1bd1671..532340ce4 100644 --- a/src/pokemon/pokemon_menu.c +++ b/src/pokemon/pokemon_menu.c @@ -31,6 +31,7 @@ #include "item_menu.h" #include "player_pc.h" #include "ewram.h" +#include "script.h" /* Pokemon menu: @@ -45,6 +46,7 @@ struct PokeMenuFieldMoveFunc u8 field_1; }; +extern u8 gUnknown_020297ED; extern u8 gUnknown_020384F0; extern u8 gUnknown_0202E8F4; extern u8 gUnknown_0202E8F5; @@ -900,9 +902,10 @@ static void sub_808AE08(void) static bool8 SetUpFieldMove_Waterfall(void) { s16 x, y; + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y)) == TRUE - && IsPlayerSurfingNorth() == TRUE) + && IsPlayerSurfingNorth() == TRUE) { gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_808AE08; @@ -913,138 +916,19 @@ static bool8 SetUpFieldMove_Waterfall(void) } #if DEBUG -__attribute__((naked)) -void debug_sub_80986AC() -{ - asm("\ - push {r4, lr}\n\ - add sp, sp, #0xfffffffc\n\ - mov r4, sp\n\ - add r4, r4, #0x2\n\ - mov r0, sp\n\ - add r1, r4, #0\n\ - bl GetXYCoordsOneStepInFrontOfPlayer\n\ - mov r0, sp\n\ - mov r1, #0x0\n\ - ldsh r0, [r0, r1]\n\ - mov r2, #0x0\n\ - ldsh r1, [r4, r2]\n\ - bl MapGridGetMetatileBehaviorAt\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - bl MetatileBehavior_IsWaterfall\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x1\n\ - bne ._274 @cond_branch\n\ - bl IsPlayerSurfingNorth\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x1\n\ - bne ._274 @cond_branch\n\ - bl sub_808AE08\n\ - b ._275\n\ -._274:\n\ - bl ScriptContext2_Disable\n\ -._275:\n\ - add sp, sp, #0x4\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0"); +void debug_sub_80986AC(void) +{ + s16 x, y; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y)) == TRUE + && IsPlayerSurfingNorth() == TRUE) + sub_808AE08(); + else + ScriptContext2_Disable(); } #endif -#if DEBUG -__attribute__((naked)) -static void sub_808AE8C(void) -{ - asm("\ - push {r4, r5, r6, lr}\n\ - ldr r0, ._281\n\ - ldrb r0, [r0]\n\ - sub r0, r0, #0x21\n\ - lsl r0, r0, #0x18\n\ - lsr r6, r0, #0x18\n\ - mov r5, #0x0\n\ -._287:\n\ - mov r0, #0x64\n\ - add r1, r5, #0\n\ - mul r1, r1, r0\n\ - ldr r0, ._281 + 4\n\ - add r4, r1, r0\n\ - add r0, r4, #0\n\ - mov r1, #0xb\n\ - bl GetMonData\n\ - cmp r0, #0\n\ - beq ._284 @cond_branch\n\ - add r0, r5, #0\n\ - bl sub_806D668\n\ - ldr r0, ._281 + 8\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - bne ._279 @cond_branch\n\ - add r0, r4, #0\n\ - mov r1, #0x2d\n\ - bl GetMonData\n\ - cmp r0, #0\n\ - bne ._278 @cond_branch\n\ - add r0, r4, #0\n\ - add r1, r6, #0\n\ - bl CanMonLearnTMHM\n\ - cmp r0, #0\n\ - bne ._279 @cond_branch\n\ -._278:\n\ - add r0, r5, #0\n\ - mov r1, #0x9a\n\ - bl sub_806BC3C\n\ - b ._284\n\ -._282:\n\ - .align 2, 0\n\ -._281:\n\ - .word gSpecialVar_ItemId\n\ - .word gPlayerParty\n\ - .word gUnknown_020297ED\n\ -._279:\n\ - mov r0, #0x64\n\ - add r4, r5, #0\n\ - mul r4, r4, r0\n\ - ldr r0, ._285\n\ - add r4, r4, r0\n\ - ldr r0, ._285 + 4\n\ - ldrh r0, [r0]\n\ - bl ItemIdToBattleMoveId\n\ - add r1, r0, #0\n\ - lsl r1, r1, #0x10\n\ - lsr r1, r1, #0x10\n\ - add r0, r4, #0\n\ - bl pokemon_has_move\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._283 @cond_branch\n\ - add r0, r5, #0\n\ - mov r1, #0xa8\n\ - bl sub_806BC3C\n\ - b ._284\n\ -._286:\n\ - .align 2, 0\n\ -._285:\n\ - .word gPlayerParty\n\ - .word gSpecialVar_ItemId\n\ -._283:\n\ - add r0, r5, #0\n\ - mov r1, #0x8c\n\ - bl sub_806BC3C\n\ -._284:\n\ - add r0, r5, #1\n\ - lsl r0, r0, #0x18\n\ - lsr r5, r0, #0x18\n\ - cmp r5, #0x5\n\ - bls ._287 @cond_branch\n\ - pop {r4, r5, r6}\n\ - pop {r0}\n\ - bx r0"); -} -#else static void sub_808AE8C(void) { u8 i; @@ -1054,7 +938,11 @@ static void sub_808AE8C(void) if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES)) { sub_806D668(i); - if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !CanMonLearnTMHM(&gPlayerParty[i], arg)) + if ( +#if DEBUG + gUnknown_020297ED == 0 && +#endif + (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !CanMonLearnTMHM(&gPlayerParty[i], arg))) sub_806BC3C(i, 0x9A); else if (pokemon_has_move(&gPlayerParty[i], ItemIdToBattleMoveId(gSpecialVar_ItemId))) sub_806BC3C(i, 0xA8); @@ -1063,7 +951,6 @@ static void sub_808AE8C(void) } } } -#endif static void sub_808AF20(void) { |