From 9158d035af3ab866c62b7825ad332b74191d5ef2 Mon Sep 17 00:00:00 2001 From: Doesnty Date: Wed, 2 Aug 2017 14:18:39 -0500 Subject: Improve battle_4 --- data/battle_scripts_1.s | 6 +- include/battle.h | 5 +- src/battle_4.c | 620 ++++++++++++++++-------------------------------- 3 files changed, 212 insertions(+), 419 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 0945d75c8..e046794b3 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -3485,7 +3485,7 @@ BattleScript_PerishSongTimerGoesDown:: @ 81D921D waitmessage 64 end2 -gUnknown_081D9224:: @ 81D9224 +BattleScript_AllStatsUp:: @ 81D9224 jumpifstat USER, 3, 1, 12, BattleScript_1D9251 jumpifstat USER, 3, 2, 12, BattleScript_1D9251 jumpifstat USER, 3, 3, 12, BattleScript_1D9251 @@ -3659,7 +3659,7 @@ BattleScript_1D93EC: @ 81D93EC waitmessage 64 jump BattleScript_EndTurn -gUnknown_081D93FA:: @ 81D93FA +BattleScript_AtkDefDown:: @ 81D93FA setbyte 0x20160dc, 0 playstatchangeanimation USER, 6, 13 playstatchangeanimation USER, 2, 9 @@ -3731,7 +3731,7 @@ BattleScript_OneHitKOMsg:: @ 81D94A9 waitmessage 64 return -gUnknown_081D94B0:: @ 81D94B0 +BattleScript_SAtkDown2:: @ 81D94B0 setbyte 0x20160dc, 0 playstatchangeanimation USER, 16, 11 setbyte 0x201601e, 164 diff --git a/include/battle.h b/include/battle.h index 4b2542017..495432259 100644 --- a/include/battle.h +++ b/include/battle.h @@ -220,12 +220,11 @@ struct BattleStruct /* 0x2000000 */ /*0x16001*/ u8 turnEffectsBank; /*0x16002*/ u8 animTurn; /*0x16003*/ u8 scriptingActive; - /*0x16004*/ u8 wrappedMove1[4]; - /*0x16008*/ u8 wrappedMove2[4]; + /*0x16004*/ u8 wrappedMove[8]; /*0x1600C*/ u8 cmd49StateTracker; /*0x1600D*/ u8 unk1600D; /*0x1600E*/ u8 turncountersTracker; - /*0x1600F*/ u8 cmd23StateTracker; + /*0x1600F*/ u8 atk23StateTracker; /*0x16010*/ u8 moveTarget[4]; /*0x16014*/ u8 unk16014; /*0x16015*/ u8 unk16015; diff --git a/src/battle_4.c b/src/battle_4.c index 31d6c76dc..b5f774e6b 100644 --- a/src/battle_4.c +++ b/src/battle_4.c @@ -93,6 +93,7 @@ extern u16 gUnknown_02024C2C[4]; //last used moves 2, used by sketch extern u16 gUnknown_030041B0; extern u16 gUnknown_02024C4C[4]; //last used moves by banks, another one extern u8 gCurrentMoveTurn; +extern u16 gTrappingMoves[]; //extern functions u8 AtkCanceller_UnableToUseMove(void); @@ -199,6 +200,9 @@ extern u8 BattleScript_TrainerBallBlock[]; extern u8 BattleScript_WallyBallThrow[]; extern u8 BattleScript_SuccessBallThrow[]; extern u8 BattleScript_ShakeBallThrow[]; +extern u8 BattleScript_AllStatsUp[]; +extern u8 BattleScript_AtkDefDown[]; +extern u8 BattleScript_SAtkDown2[]; extern u8 gUnknown_081D919F[]; //spikes1 extern u8 gUnknown_081D9171[]; //spikes2 @@ -417,6 +421,7 @@ static void atk85_stockpile(void); static void atk86_stockpiletobasedamage(void); static void atk87_stockpiletohpheal(void); static void atk88_negativedamage(void); +static u8 ChangeStatBuffs(s8, u8, u8, u8*); static void atk89_statbuffchange(void); static void atk8A_normalisebuffs(void); static void atk8B_setbide(void); @@ -871,19 +876,19 @@ static const u32 gStatusFlagsForMoveEffects[] = 0x00000000 }; -extern const u8 BattleScript_1D963E[]; -extern const u8 BattleScript_1D965A[]; -extern const u8 BattleScript_1D9669[]; -extern const u8 BattleScript_1D9678[]; -extern const u8 BattleScript_1D9687[]; -extern const u8 BattleScript_1D969D[]; -extern const u8 BattleScript_1D96BA[]; -extern const u8 BattleScript_1D9696[]; -extern const u8 BattleScript_1D96B1[]; -extern const u8 BattleScript_1D96AA[]; -extern const u8 BattleScript_1D96C8[]; +extern u8 BattleScript_1D963E[]; +extern u8 BattleScript_1D965A[]; +extern u8 BattleScript_1D9669[]; +extern u8 BattleScript_1D9678[]; +extern u8 BattleScript_1D9687[]; +extern u8 BattleScript_1D969D[]; +extern u8 BattleScript_1D96BA[]; +extern u8 BattleScript_1D9696[]; +extern u8 BattleScript_1D96B1[]; +extern u8 BattleScript_1D96AA[]; +extern u8 BattleScript_1D96C8[]; -const u8* const gMoveEffectBS_Ptrs[] = +u8* const gMoveEffectBS_Ptrs[] = { BattleScript_1D963E, BattleScript_1D963E, @@ -956,7 +961,7 @@ static const u16 sUnknown_081FACFE[] = //banned moves to copy 0xFFFF }; -static const u8 sUnknown_081FAD26[] = +static const u8 sUnknown_081FAD26[] = //reversal+flail HP thresholds to power { 1, 200, 4, 150, @@ -1629,7 +1634,6 @@ static void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) //a literal c } } -#ifdef NONMATCHING u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def) { int i = 0; @@ -1671,7 +1675,7 @@ u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def) ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); //check type2 if (gTypeEffectiveness[i + 1] == gBattleMons[bank_def].type2 && - gBattleMons[bank_def].type1 != gBattleMons[bank_def].type2) + gBattleMons[gBankTarget /* what the christ */].type1 != gBattleMons[bank_def].type2) ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); } i += 3; @@ -1687,254 +1691,6 @@ u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def) } return flags; } -#else -__attribute__((naked)) -u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x14\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r10, r0\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - str r1, [sp, 0x4]\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - mov r9, r2\n\ - movs r7, 0\n\ - mov r0, sp\n\ - strb r7, [r0]\n\ - mov r0, r10\n\ - cmp r0, 0xA5\n\ - bne _0801D2AE\n\ - movs r0, 0\n\ - b _0801D43A\n\ - _0801D2AE:\n\ - ldr r1, _0801D31C @ =gBattleMoves\n\ - mov r3, r10\n\ - lsls r2, r3, 1\n\ - adds r0, r2, r3\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r0, [r0, 0x2]\n\ - str r0, [sp, 0x8]\n\ - ldr r1, _0801D320 @ =gBattleMons\n\ - movs r0, 0x58\n\ - ldr r3, [sp, 0x4]\n\ - muls r0, r3\n\ - adds r3, r0, r1\n\ - adds r0, r3, 0\n\ - adds r0, 0x21\n\ - ldrb r0, [r0]\n\ - str r2, [sp, 0xC]\n\ - adds r5, r1, 0\n\ - ldr r1, [sp, 0x8]\n\ - cmp r0, r1\n\ - beq _0801D2E2\n\ - adds r0, r3, 0\n\ - adds r0, 0x22\n\ - ldrb r0, [r0]\n\ - cmp r0, r1\n\ - bne _0801D2F4\n\ - _0801D2E2:\n\ - ldr r4, _0801D324 @ =gBattleMoveDamage\n\ - ldr r1, [r4]\n\ - lsls r0, r1, 4\n\ - subs r0, r1\n\ - str r0, [r4]\n\ - movs r1, 0xA\n\ - bl __divsi3\n\ - str r0, [r4]\n\ - _0801D2F4:\n\ - movs r0, 0x58\n\ - mov r2, r9\n\ - muls r2, r0\n\ - adds r0, r2, 0\n\ - adds r0, r5\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x1A\n\ - bne _0801D328\n\ - ldr r3, [sp, 0x8]\n\ - cmp r3, 0x4\n\ - bne _0801D328\n\ - movs r1, 0x9\n\ - mov r0, sp\n\ - ldrb r0, [r0]\n\ - orrs r0, r1\n\ - mov r1, sp\n\ - strb r0, [r1]\n\ - b _0801D3DC\n\ - .align 2, 0\n\ - _0801D31C: .4byte gBattleMoves\n\ - _0801D320: .4byte gBattleMons\n\ - _0801D324: .4byte gBattleMoveDamage\n\ - _0801D328:\n\ - ldr r1, _0801D344 @ =gTypeEffectiveness\n\ - adds r0, r7, r1\n\ - ldrb r0, [r0]\n\ - adds r2, r1, 0\n\ - cmp r0, 0xFF\n\ - beq _0801D3DC\n\ - cmp r0, 0xFE\n\ - bne _0801D34C\n\ - movs r0, 0x58\n\ - mov r1, r9\n\ - muls r1, r0\n\ - adds r0, r1, 0\n\ - b _0801D3CA\n\ - .align 2, 0\n\ - _0801D344: .4byte gTypeEffectiveness\n\ - _0801D348:\n\ - adds r7, 0x3\n\ - b _0801D3B6\n\ - _0801D34C:\n\ - ldr r6, _0801D44C @ =gTypeEffectiveness\n\ - adds r0, r7, r6\n\ - ldrb r0, [r0]\n\ - ldr r2, [sp, 0x8]\n\ - cmp r0, r2\n\ - bne _0801D3B0\n\ - adds r1, r7, 0x1\n\ - adds r1, r6\n\ - ldr r3, _0801D450 @ =gBattleMons\n\ - mov r8, r3\n\ - movs r3, 0x58\n\ - mov r0, r9\n\ - muls r0, r3\n\ - mov r2, r8\n\ - adds r5, r0, r2\n\ - adds r0, r5, 0\n\ - adds r0, 0x21\n\ - ldrb r4, [r1]\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - bne _0801D388\n\ - adds r0, r7, 0x2\n\ - adds r0, r6\n\ - ldrb r0, [r0]\n\ - mov r1, r10\n\ - mov r2, sp\n\ - str r3, [sp, 0x10]\n\ - bl ModulateDmgByType2\n\ - ldr r3, [sp, 0x10]\n\ - _0801D388:\n\ - adds r0, r5, 0\n\ - adds r0, 0x22\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - bne _0801D3B0\n\ - ldr r0, _0801D454 @ =gBankTarget\n\ - ldrb r0, [r0]\n\ - muls r0, r3\n\ - add r0, r8\n\ - adds r0, 0x21\n\ - ldrb r0, [r0]\n\ - cmp r0, r4\n\ - beq _0801D3B0\n\ - adds r0, r7, 0x2\n\ - adds r0, r6\n\ - ldrb r0, [r0]\n\ - mov r1, r10\n\ - mov r2, sp\n\ - bl ModulateDmgByType2\n\ - _0801D3B0:\n\ - adds r7, 0x3\n\ - ldr r5, _0801D450 @ =gBattleMons\n\ - ldr r2, _0801D44C @ =gTypeEffectiveness\n\ - _0801D3B6:\n\ - adds r0, r7, r2\n\ - ldrb r0, [r0]\n\ - cmp r0, 0xFF\n\ - beq _0801D3DC\n\ - cmp r0, 0xFE\n\ - bne _0801D34C\n\ - movs r0, 0x58\n\ - mov r3, r9\n\ - muls r3, r0\n\ - adds r0, r3, 0\n\ - _0801D3CA:\n\ - adds r1, r5, 0\n\ - adds r1, 0x50\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x80\n\ - lsls r1, 22\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0801D348\n\ - _0801D3DC:\n\ - movs r0, 0x58\n\ - mov r1, r9\n\ - muls r1, r0\n\ - adds r0, r1, 0\n\ - adds r0, r5\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x19\n\ - bne _0801D436\n\ - mov r0, sp\n\ - ldrb r1, [r0]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0801D436\n\ - ldr r0, [sp, 0x4]\n\ - mov r1, r10\n\ - bl AttacksThisTurn\n\ - lsls r0, 24\n\ - lsrs r1, r0, 24\n\ - cmp r1, 0x2\n\ - bne _0801D436\n\ - mov r0, sp\n\ - ldrb r3, [r0]\n\ - adds r0, r1, 0\n\ - ands r0, r3\n\ - cmp r0, 0\n\ - beq _0801D41E\n\ - movs r0, 0x6\n\ - ands r0, r3\n\ - cmp r0, 0x6\n\ - bne _0801D436\n\ - _0801D41E:\n\ - ldr r0, _0801D458 @ =gBattleMoves\n\ - ldr r1, [sp, 0xC]\n\ - add r1, r10\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x1]\n\ - cmp r0, 0\n\ - beq _0801D436\n\ - mov r0, sp\n\ - movs r1, 0x1\n\ - orrs r1, r3\n\ - strb r1, [r0]\n\ - _0801D436:\n\ - mov r0, sp\n\ - ldrb r0, [r0]\n\ - _0801D43A:\n\ - add sp, 0x14\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ - _0801D44C: .4byte gTypeEffectiveness\n\ - _0801D450: .4byte gBattleMons\n\ - _0801D454: .4byte gBankTarget\n\ - _0801D458: .4byte gBattleMoves\n\ - .syntax divided\n"); -} -#endif // NONMATCHING u8 AI_TypeCalc(u16 move, u16 species, u8 ability) { @@ -2519,7 +2275,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) #define EffectAffectsUser 0x40 register u8 certain asm("r5") = certainArg; register bool32 StatusChanged asm("r10") = 0; - register int AffectsUser asm("r6") = 0; //0x40 otherwise + register int AffectsUser asm("r6") = 0; //0x40 otherwise bool32 NoSunCanFreeze = 1; if (gBattleCommunication[MOVE_EFFECT_BYTE] & EffectAffectsUser) @@ -2535,16 +2291,16 @@ void SetMoveEffect(bool8 primary, u8 certainArg) BATTLE_STRUCT->scriptingActive = gBankAttacker; } - if (gBattleMons[gEffectBank].ability_id == ABILITY_SHIELD_DUST && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && + if (gBattleMons[gEffectBank].ability == ABILITY_SHIELD_DUST && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 9) {gBattlescriptCurrInstr++; return;} - if (gSideAffecting[get_bank_identity(gEffectBank) & 1] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && + if (gSideAffecting[GetBankIdentity(gEffectBank) & 1] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 7) {gBattlescriptCurrInstr++; return;} //make sure at least ONE HP except payday and thief - if (gBattleMons[gEffectBank].current_hp == 0 && gBattleCommunication[MOVE_EFFECT_BYTE] != 0xB && gBattleCommunication[MOVE_EFFECT_BYTE] != 0x1F) + if (gBattleMons[gEffectBank].hp == 0 && gBattleCommunication[MOVE_EFFECT_BYTE] != 0xB && gBattleCommunication[MOVE_EFFECT_BYTE] != 0x1F) {gBattlescriptCurrInstr++; return;} if (gBattleMons[gEffectBank].status2 & STATUS2_SUBSTITUTE && AffectsUser != EffectAffectsUser) @@ -2556,81 +2312,82 @@ void SetMoveEffect(bool8 primary, u8 certainArg) { case STATUS_SLEEP: //check active uproar - if (gBattleMons[gEffectBank].ability_id != ABILITY_SOUNDPROOF) + if (gBattleMons[gEffectBank].ability != ABILITY_SOUNDPROOF) { for (gActiveBank = 0; gActiveBank < gNoOfAllBanks && !(gBattleMons[gActiveBank].status2 & STATUS2_UPROAR); gActiveBank++) {} } else gActiveBank = gNoOfAllBanks; - if (gBattleMons[gEffectBank].status) {break;} + if (gBattleMons[gEffectBank].status1) {break;} if (gActiveBank != gNoOfAllBanks) {break;} //nice way of checking uproar... - if (gBattleMons[gEffectBank].ability_id == ABILITY_VITAL_SPIRIT) {break;} - if (gBattleMons[gEffectBank].ability_id == ABILITY_INSOMNIA) {break;} + if (gBattleMons[gEffectBank].ability == ABILITY_VITAL_SPIRIT) {break;} + if (gBattleMons[gEffectBank].ability == ABILITY_INSOMNIA) {break;} - b_cancel_multi_turn_move_maybe(gEffectBank); + CancelMultiTurnMoves(gEffectBank); StatusChanged = 1; break; case STATUS_POISON: - if (gBattleMons[gEffectBank].ability_id == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80)) + if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80)) { gLastUsedAbility = ABILITY_IMMUNITY; - RecordAbility(gEffectBank, ABILITY_IMMUNITY); + RecordAbilityBattle(gEffectBank, ABILITY_IMMUNITY); b_movescr_stack_push(gBattlescriptCurrInstr + 1); //_0801E664: - gBattlescriptCurrInstr = BS_PSN_PREVENTION; + gBattlescriptCurrInstr = BattleScript_PSNPrevention; if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) { - gBattleCommunication.multistring_chooser = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); return; } else - {gBattleCommunication.multistring_chooser = 0; return;} + {gBattleCommunication[MULTISTRING_CHOOSER] = 0; return;} } if ((gBattleMons[gEffectBank].type1 == TYPE_POISON || gBattleMons[gEffectBank].type2 == TYPE_POISON || gBattleMons[gEffectBank].type1 == TYPE_STEEL || gBattleMons[gEffectBank].type2 == TYPE_STEEL) && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && (primary == 1 || certain == 0x80)) { b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BS_PSN_PREVENTION; - gBattleCommunication.multistring_chooser = 2; + gBattlescriptCurrInstr = BattleScript_PSNPrevention; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; return; } if (gBattleMons[gEffectBank].type1 == TYPE_POISON) {break;} if (gBattleMons[gEffectBank].type2 == TYPE_POISON) {break;} if (gBattleMons[gEffectBank].type1 == TYPE_STEEL) {break;} if (gBattleMons[gEffectBank].type2 == TYPE_STEEL) {break;} - if (gBattleMons[gEffectBank].status) {break;} - if (gBattleMons[gEffectBank].ability_id == ABILITY_IMMUNITY) {break;} + if (gBattleMons[gEffectBank].status1) {break;} + if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY) {break;} + StatusChanged = 1; break; case STATUS_BURN: - if (gBattleMons[gEffectBank].ability_id == ABILITY_WATER_VEIL && (primary == 1 || certain == 0x80)) + if (gBattleMons[gEffectBank].ability == ABILITY_WATER_VEIL && (primary == 1 || certain == 0x80)) { gLastUsedAbility = ABILITY_WATER_VEIL; - RecordAbility(gEffectBank, ABILITY_WATER_VEIL); + RecordAbilityBattle(gEffectBank, ABILITY_WATER_VEIL); b_movescr_stack_push(gBattlescriptCurrInstr + 1); //_0801E664: - gBattlescriptCurrInstr = BS_BRN_PREVENTION; + gBattlescriptCurrInstr = BattleScript_BRNPrevention; if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) { - gBattleCommunication.multistring_chooser = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); return; } else - {gBattleCommunication.multistring_chooser = 0; return;} + {gBattleCommunication[MULTISTRING_CHOOSER] = 0; return;} } if ((gBattleMons[gEffectBank].type1 == TYPE_FIRE || gBattleMons[gEffectBank].type2 == TYPE_FIRE) && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && (primary == 1 || certain == 0x80)) { b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BS_BRN_PREVENTION; - gBattleCommunication.multistring_chooser = 2; + gBattlescriptCurrInstr = BattleScript_BRNPrevention; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; return; } if (gBattleMons[gEffectBank].type1 == TYPE_FIRE) {break;} if (gBattleMons[gEffectBank].type2 == TYPE_FIRE) {break;} - if (gBattleMons[gEffectBank].ability_id == ABILITY_WATER_VEIL) {break;} + if (gBattleMons[gEffectBank].ability == ABILITY_WATER_VEIL) {break;} if (gBattleMons[gEffectBank].status1 == 0) {break;} StatusChanged = 1; break; @@ -2638,70 +2395,70 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY) {NoSunCanFreeze = 0;} if (gBattleMons[gEffectBank].type1 == TYPE_ICE) {break;} if (gBattleMons[gEffectBank].type2 == TYPE_ICE) {break;} - if (gBattleMons[gEffectBank].status) {break;} + if (gBattleMons[gEffectBank].status1) {break;} if (NoSunCanFreeze == 0) {break;} - if (gBattleMons[gEffectBank].ability_id == ABILITY_MAGMA_ARMOR) {break;} + if (gBattleMons[gEffectBank].ability == ABILITY_MAGMA_ARMOR) {break;} - b_cancel_multi_turn_move_maybe(gEffectBank); + CancelMultiTurnMoves(gEffectBank); StatusChanged = 1; break; case STATUS_PARALYSIS: - if (gBattleMons[gEffectBank].ability_id == ABILITY_LIMBER) + if (gBattleMons[gEffectBank].ability == ABILITY_LIMBER) { if ((primary == 1 || certain == 0x80)) { gLastUsedAbility = ABILITY_LIMBER; - RecordAbility(gEffectBank, ABILITY_LIMBER); + RecordAbilityBattle(gEffectBank, ABILITY_LIMBER); b_movescr_stack_push(gBattlescriptCurrInstr + 1); //_0801E664: - gBattlescriptCurrInstr = BS_PRLZ_PREVENTION; + gBattlescriptCurrInstr = BattleScript_PRLZPrevention; if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) { - gBattleCommunication.multistring_chooser = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); return; } else - {gBattleCommunication.multistring_chooser = 0; return;} + {gBattleCommunication[MULTISTRING_CHOOSER] = 0; return;} } else {break;} } - if (gBattleMons[gEffectBank].status) {break;} + if (gBattleMons[gEffectBank].status1) {break;} StatusChanged = 1; break; case STATUS_TOXIC_POISON: - if (gBattleMons[gEffectBank].ability_id == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80)) + if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80)) { gLastUsedAbility = ABILITY_IMMUNITY; - RecordAbility(gEffectBank, ABILITY_IMMUNITY); + RecordAbilityBattle(gEffectBank, ABILITY_IMMUNITY); b_movescr_stack_push(gBattlescriptCurrInstr + 1); //_0801E664: - gBattlescriptCurrInstr = BS_PSN_PREVENTION; + gBattlescriptCurrInstr = BattleScript_PSNPrevention; if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) { - gBattleCommunication.multistring_chooser = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); return; } else - {gBattleCommunication.multistring_chooser = 0; return;} + {gBattleCommunication[MULTISTRING_CHOOSER] = 0; return;} } if ((gBattleMons[gEffectBank].type1 == TYPE_POISON || gBattleMons[gEffectBank].type2 == TYPE_POISON || gBattleMons[gEffectBank].type1 == TYPE_STEEL || gBattleMons[gEffectBank].type2 == TYPE_STEEL) && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && (primary == 1 || certain == 0x80)) { b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BS_PSN_PREVENTION; - gBattleCommunication.multistring_chooser = 2; + gBattlescriptCurrInstr = BattleScript_PSNPrevention; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; return; } - if (gBattleMons[gEffectBank].status) {break;} + if (gBattleMons[gEffectBank].status1) {break;} if (gBattleMons[gEffectBank].type1 != TYPE_POISON && gBattleMons[gEffectBank].type2 != TYPE_POISON && gBattleMons[gEffectBank].type1 != TYPE_STEEL && gBattleMons[gEffectBank].type2 != TYPE_STEEL) { - if (gBattleMons[gEffectBank].ability_id == ABILITY_IMMUNITY) {break;} - gBattleMons[gEffectBank].status1 |= ~(STATUS_POISON); //TODO: fix OR to AND + if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY) {break;} + gBattleMons[gEffectBank].status1 &= ~(0x9); //This gets (correctly) optimized out... StatusChanged = 1; break; } @@ -2716,20 +2473,20 @@ void SetMoveEffect(bool8 primary, u8 certainArg) gBattleMons[gEffectBank].status1 |= ((Random() & 3) + 2); else gBattleMons[gEffectBank].status1 |= gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; - gBattlescriptCurrInstr = MoveEffectBS_ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; gActiveBank = gEffectBank; - bb2_setattributes_in_battle(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBank].status); - mark_buffer_bank_for_execution(gActiveBank); + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBank].status1); + MarkBufferBankForExecution(gActiveBank); if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) { - gBattleCommunication.multistring_chooser = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); } else - gBattleCommunication.multistring_chooser = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; if (gBattleCommunication[MOVE_EFFECT_BYTE] == 2 || gBattleCommunication[MOVE_EFFECT_BYTE] == 6 || gBattleCommunication[MOVE_EFFECT_BYTE] == 5 || gBattleCommunication[MOVE_EFFECT_BYTE] == 3) { - BATTLE_STRUCT->SynchroniseEffect = gBattleCommunication[MOVE_EFFECT_BYTE]; + BATTLE_STRUCT->synchroniseEffect = gBattleCommunication[MOVE_EFFECT_BYTE]; gHitMarker |= HITMARKER_SYNCHRONISE_EFFECT; } return; @@ -2747,22 +2504,22 @@ void SetMoveEffect(bool8 primary, u8 certainArg) switch (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) { case 7: //confusion - if (gBattleMons[gEffectBank].ability_id == ABILITY_OWN_TEMPO) + if (gBattleMons[gEffectBank].ability == ABILITY_OWN_TEMPO) {gBattlescriptCurrInstr++; return;} if (gBattleMons[gEffectBank].status2 & STATUS2_CONFUSION) {gBattlescriptCurrInstr++; return;} gBattleMons[gEffectBank].status2 |= (((Random()) % 0x4)) + 2; b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = MoveEffectBS_ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; break; case 8: //flinch - if (gBattleMons[gEffectBank].ability_id == ABILITY_INNER_FOCUS) + if (gBattleMons[gEffectBank].ability == ABILITY_INNER_FOCUS) { if (primary == 1 || certain == 0x80) { gLastUsedAbility = ABILITY_INNER_FOCUS; - RecordAbility(gEffectBank, ABILITY_INNER_FOCUS); - gBattlescriptCurrInstr = BS_FLINCH_PREVENTION; + RecordAbilityBattle(gEffectBank, ABILITY_INNER_FOCUS); + gBattlescriptCurrInstr = BattleScript_FlinchPrevention; return; } else @@ -2782,21 +2539,21 @@ void SetMoveEffect(bool8 primary, u8 certainArg) gLockedMove[gEffectBank] = gCurrentMove; gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 4; b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = MoveEffectBS_ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; break; case 11: //pay day - if (!(get_bank_identity(gEffectBank) & 1)) + if (!(GetBankIdentity(gBankAttacker) & 1)) { u16 PayDay = gPaydayMoney; - gPaydayMoney += (gBattleMons[gEffectBank].level * 5); + gPaydayMoney += (gBattleMons[gBankAttacker].level * 5); if (PayDay > gPaydayMoney) gPaydayMoney = 0xFFFF; } b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = MoveEffectBS_ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; break; case 9: //tri attack - if (gBattleMons[gEffectBank].status) + if (gBattleMons[gEffectBank].status1) {gBattlescriptCurrInstr++; return;} gBattleCommunication[MOVE_EFFECT_BYTE] = Random() % 3 + 3; SetMoveEffect(0, 0); @@ -2804,73 +2561,73 @@ void SetMoveEffect(bool8 primary, u8 certainArg) case 12: //charging move gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS; gLockedMove[gEffectBank] = gCurrentMove; - gProtectStructs[gEffectBank].flag1_chargingturn = 1; + gProtectStructs[gEffectBank].chargingTurn = 1; gBattlescriptCurrInstr++; break; case 13: //wrap if (gBattleMons[gEffectBank].status2 & STATUS2_WRAPPED) {gBattlescriptCurrInstr++; return;} gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 0xD; - BATTLE_STRUCT->WrappedMove1[gEffectBank] = gCurrentMove; - BATTLE_STRUCT->WrappedMove2[gEffectBank] = gCurrentMove >> 8; - BATTLE_STRUCT->WrappedBy[gEffectBank] = gBankAttacker; + BATTLE_STRUCT->wrappedMove[gEffectBank*2] = (u8)gCurrentMove; + (1 + BATTLE_STRUCT->wrappedMove)[gEffectBank*2] = gCurrentMove >> 8; //don't ask. + BATTLE_STRUCT->wrappedBy[gEffectBank] = gBankAttacker; b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = MoveEffectBS_ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; - gBattleCommunication.multistring_chooser = 0; - while (gBattleCommunication.multistring_chooser <= 4 - && gCurrentMove != gTrappingMoves[gBattleCommunication.multistring_chooser]) - gBattleCommunication.multistring_chooser++; + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + while (gBattleCommunication[MULTISTRING_CHOOSER] <= 4 + && gCurrentMove != gTrappingMoves[gBattleCommunication[MULTISTRING_CHOOSER]]) + gBattleCommunication[MULTISTRING_CHOOSER]++; break; - case 14: //recoil + case 14: //25% recoil gBattleMoveDamage = (gHP_dealt) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = MoveEffectBS_ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; break; case 15 ... 21: //stat + 1 - if (ChangeStats(0x10, gBattleCommunication[MOVE_EFFECT_BYTE] + 0xF2, certain, 0)) {gBattlescriptCurrInstr++;} + if (ChangeStatBuffs(0x10, gBattleCommunication[MOVE_EFFECT_BYTE] + 0xF2, certain, 0)) {gBattlescriptCurrInstr++;} else { BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; //TODO: the arg ptr is wrong by one BATTLE_STRUCT->animArg2 = 0; b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BS_STAT_UP; + gBattlescriptCurrInstr = BattleScript_StatUp; } break; case 22 ... 28: //stat - 1 - if (ChangeStats(~(0x6f), gBattleCommunication[MOVE_EFFECT_BYTE] + 0xEB, certain, 0)) {gBattlescriptCurrInstr++;} //TODO: negation doesnt work correctly + if (ChangeStatBuffs(~(0x6f), gBattleCommunication[MOVE_EFFECT_BYTE] + 0xEB, certain, 0)) {gBattlescriptCurrInstr++;} //TODO: negation doesnt work correctly else { BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; BATTLE_STRUCT->animArg2 = 0; b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BS_STAT_DOWN; + gBattlescriptCurrInstr = BattleScript_StatDown; } break; case 39 ... 45: //stat + 2 - if (ChangeStats(0x20, gBattleCommunication[MOVE_EFFECT_BYTE] + 0xDA, certain, 0)) {gBattlescriptCurrInstr++;} + if (ChangeStatBuffs(0x20, gBattleCommunication[MOVE_EFFECT_BYTE] + 0xDA, certain, 0)) {gBattlescriptCurrInstr++;} else { BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; BATTLE_STRUCT->animArg2 = 0; b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BS_STAT_UP; + gBattlescriptCurrInstr = BattleScript_StatUp; } break; case 46 ... 52: //stat - 2 - if (ChangeStats(~(0x5f), gBattleCommunication[MOVE_EFFECT_BYTE] + 0xD3, certain, 0)) {gBattlescriptCurrInstr++;} + if (ChangeStatBuffs(~(0x5f), gBattleCommunication[MOVE_EFFECT_BYTE] + 0xD3, certain, 0)) {gBattlescriptCurrInstr++;} else { BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; BATTLE_STRUCT->animArg2 = 0; b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BS_STAT_DOWN; + gBattlescriptCurrInstr = BattleScript_StatDown; } break; case 29: //recharge gBattleMons[gEffectBank].status2 |= STATUS2_RECHARGE; - gDisableStructs[gEffectBank].recharge_counter = 2; + gDisableStructs[gEffectBank].rechargeCounter = 2; gLockedMove[gEffectBank] = gCurrentMove; gBattlescriptCurrInstr++; break; @@ -2880,83 +2637,85 @@ void SetMoveEffect(bool8 primary, u8 certainArg) break; case 31: //item steal { - u8 side = battle_side_get_owner(gBankAttacker); - if (battle_side_get_owner(gBankAttacker) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) && gTrainerBattleOpponent != 0x400) + u8 side = GetBankSide(gBankAttacker); + if (GetBankSide(gBankAttacker) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) && gTrainerBattleOpponent != 0x400) {gBattlescriptCurrInstr++; return;} - if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) && gTrainerBattleOpponent != 0x400 && (gWishFutureKnock.KnockedOff[side] & gBitTable[gBattlePartyID[gBankAttacker]])) + if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) && gTrainerBattleOpponent != 0x400 && (gWishFutureKnock.knockedOffPokes[side] & gBitTable[gBattlePartyID[gBankAttacker]])) {gBattlescriptCurrInstr++; return;} - if (gBattleMons[gBankTarget].held_item && gBattleMons[gBankTarget].ability_id == ABILITY_STICKY_HOLD) + if (gBattleMons[gBankTarget].item && gBattleMons[gBankTarget].ability == ABILITY_STICKY_HOLD) { b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BS_NO_ITEMSTEAL; - gLastUsedAbility = gBattleMons[gBankTarget].ability_id; - RecordAbility(gBankTarget, gLastUsedAbility); + gBattlescriptCurrInstr = BattleScript_NoItemSteal; + gLastUsedAbility = gBattleMons[gBankTarget].ability; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); return; } - if (gBattleMons[gBankAttacker].held_item) + if (gBattleMons[gBankAttacker].item) {gBattlescriptCurrInstr++; return;} - if (gBattleMons[gBankTarget].held_item == ITEM_ENIGMA_BERRY) + if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) {gBattlescriptCurrInstr++; return;} - if (gBattleMons[gBankTarget].held_item == 0) + if (gBattleMons[gBankTarget].item == 0) {gBattlescriptCurrInstr++; return;} - CHANGED_HELDITEMS[gBankAttacker] = gLastUsedItem = gBattleMons[gBankTarget].held_item; - gBattleMons[gBankTarget].held_item = 0; + gLastUsedItem = gBattleMons[gBankTarget].item; + unk_2000000[gBankAttacker * 2 + 0x160cc] = gLastUsedItem; + gBattleMons[gBankTarget].item = 0; gActiveBank = gBankAttacker; - bb2_setattributes_in_battle(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem); - mark_buffer_bank_for_execution(gBankAttacker); + EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem); + MarkBufferBankForExecution(gBankAttacker); gActiveBank = gBankTarget; - bb2_setattributes_in_battle(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBankTarget].held_item); - mark_buffer_bank_for_execution(gBankTarget); + EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBankTarget].item); + MarkBufferBankForExecution(gBankTarget); b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BS_ITEMSTEAL; + gBattlescriptCurrInstr = BattleScript_ItemSteal; - STORE_CHOICEMOVE(gBankTarget, 0); + ewram[gBankTarget * 2 + 0x160e8] = 0; + //STORE_CHOICEMOVE(gBankTarget, 0); } break; case 32: //escape prevention gBattleMons[gBankTarget].status2 |= STATUS2_RECHARGE; - gDisableStructs[gBankTarget].BankPreventingEscape = gBankAttacker; + gDisableStructs[gBankTarget].bankPreventingEscape = gBankAttacker; gBattlescriptCurrInstr++; break; case 33: //nightmare gBattleMons[gBankTarget].status2 |= STATUS2_NIGHTMARE; gBattlescriptCurrInstr++; break; - case 34: + case 34: //ancientpower b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = gUnknown_081D9224; + gBattlescriptCurrInstr = BattleScript_AllStatsUp; return; case 35: //break free rapidspin b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BS_RAPIDSPINAWAY; + gBattlescriptCurrInstr = BattleScript_RapidSpinAway; return; case 36: //paralysis removal if (gBattleMons[gBankTarget].status1 & STATUS_PARALYSIS) { gBattleMons[gBankTarget].status1 &= ~(STATUS_PARALYSIS); gActiveBank = gBankTarget; - bb2_setattributes_in_battle(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status); - mark_buffer_bank_for_execution(gActiveBank); + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status1); + MarkBufferBankForExecution(gActiveBank); b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BS_PARALYSISHEALED; + gBattlescriptCurrInstr = BattleScript_TargetPRLZHeal; } else {gBattlescriptCurrInstr++; return;} break; - case 37: // + case 37: //superpower b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = gUnknown_081D93FA; + gBattlescriptCurrInstr = BattleScript_AtkDefDown; return; - case 38: //recoil plus paralysis + case 38: //33% recoil gBattleMoveDamage = gHP_dealt / 3; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = MoveEffectBS_ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; break; case 53: //thrash if (!(gBattleMons[gEffectBank].status2 & STATUS2_LOCK_CONFUSE)) @@ -2969,32 +2728,33 @@ void SetMoveEffect(bool8 primary, u8 certainArg) {gBattlescriptCurrInstr++; return;} break; case 54: //knock off - if (gBattleMons[gEffectBank].ability_id == ABILITY_STICKY_HOLD) + if (gBattleMons[gEffectBank].ability == ABILITY_STICKY_HOLD) { - if (gBattleMons[gEffectBank].held_item == 0) + if (gBattleMons[gEffectBank].item == 0) {gBattlescriptCurrInstr++; return;} gLastUsedAbility = ABILITY_STICKY_HOLD; - gBattlescriptCurrInstr = BS_STICKYHOLD_ACTIVATES; - RecordAbility(gEffectBank, ABILITY_STICKY_HOLD); + gBattlescriptCurrInstr = BattleScript_NoItemSteal; + RecordAbilityBattle(gEffectBank, ABILITY_STICKY_HOLD); return; } - if (gBattleMons[gEffectBank].held_item == 0) + if (gBattleMons[gEffectBank].item == 0) {gBattlescriptCurrInstr++; return;} else { - u8 side = battle_side_get_owner(gEffectBank); - gLastUsedItem = gBattleMons[gEffectBank].held_item; - gBattleMons[gEffectBank].held_item = 0; - gWishFutureKnock.KnockedOff[side] |= gBitTable[gBattlePartyID[gEffectBank]]; + u8 side = GetBankSide(gEffectBank); + gLastUsedItem = gBattleMons[gEffectBank].item; + gBattleMons[gEffectBank].item = 0; + gWishFutureKnock.knockedOffPokes[side] |= gBitTable[gBattlePartyID[gEffectBank]]; b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BS_KNOCKEDOFF; + gBattlescriptCurrInstr = BattleScript_KnockedOff; - STORE_CHOICEMOVE(gEffectBank, 0); + ewram[gEffectBank * 2 + 0x160e8] = 0; + //STORE_CHOICEMOVE(gEffectBank, 0); } break; - case 59: //overheat I guess, dont remember + case 59: //overheat b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = gUnknown_081D94B0; + gBattlescriptCurrInstr = BattleScript_SAtkDown2; return; } } @@ -4897,11 +4657,11 @@ _0801F3BC:\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ bl b_movescr_stack_push\n\ - ldr r0, _0801F3D0 @ =gUnknown_081D9224\n\ + ldr r0, _0801F3D0 @ =BattleScript_AllStatsUp\n\ b _0801F5F8\n\ .align 2, 0\n\ _0801F3CC: .4byte gBattlescriptCurrInstr\n\ -_0801F3D0: .4byte gUnknown_081D9224\n\ +_0801F3D0: .4byte BattleScript_AllStatsUp\n\ _0801F3D4:\n\ ldr r4, _0801F3E4 @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ @@ -4961,11 +4721,11 @@ _0801F44C:\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ bl b_movescr_stack_push\n\ - ldr r0, _0801F460 @ =gUnknown_081D93FA\n\ + ldr r0, _0801F460 @ =BattleScript_AtkDefDown\n\ b _0801F5F8\n\ .align 2, 0\n\ _0801F45C: .4byte gBattlescriptCurrInstr\n\ -_0801F460: .4byte gUnknown_081D93FA\n\ +_0801F460: .4byte BattleScript_AtkDefDown\n\ _0801F464:\n\ ldr r4, _0801F494 @ =gBattleMoveDamage\n\ ldr r0, _0801F498 @ =gHP_dealt\n\ @@ -5150,7 +4910,7 @@ _0801F5EC:\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ bl b_movescr_stack_push\n\ - ldr r0, _0801F610 @ =gUnknown_081D94B0\n\ + ldr r0, _0801F610 @ =BattleScript_SAtkDown2\n\ _0801F5F8:\n\ str r0, [r4]\n\ _0801F5FA:\n\ @@ -5164,11 +4924,12 @@ _0801F5FA:\n\ bx r0\n\ .align 2, 0\n\ _0801F60C: .4byte gBattlescriptCurrInstr\n\ -_0801F610: .4byte gUnknown_081D94B0\n\ +_0801F610: .4byte BattleScript_SAtkDown2\n\ .syntax divided\n"); } #endif // NONMATCHING + static void atk15_seteffectwithchancetarget(void) { u32 PercentChance; @@ -5841,13 +5602,14 @@ static void atk23_getexp(void) else { BATTLE_STRUCT->atk23StateTracker++; - unk_2000000[0x16113] |= gBitTable[gBattlePartyID[gBank1]]; + ((u8*)ewram)[0x16113] |= gBitTable[gBattlePartyID[gBank1]]; } break; case 1: //calculate experience points to redistribute { - int via_sent_in = 0, i; + int via_sent_in = 0; u16 calculatedExp; + int i; for (i = 0; i < 6; i++) { u16 item; @@ -5903,15 +5665,14 @@ static void atk23_getexp(void) BATTLE_STRUCT->sentInPokes >>= 1; tracker = &BATTLE_STRUCT->atk23StateTracker; zero = 0; - goto LABEL; + *tracker = 5; //increment looper + gBattleMoveDamage = zero; //used for exp } else if (GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL) == 100) { - BATTLE_STRUCT->sentInPokes >>= 1; tracker = &BATTLE_STRUCT->atk23StateTracker; zero = 0; - LABEL: *tracker = 5; //increment looper gBattleMoveDamage = zero; //used for exp } @@ -5927,7 +5688,7 @@ static void atk23_getexp(void) if (GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP)) { - s16 stringID; + s16 stringID; if (BATTLE_STRUCT->sentInPokes & 1) gBattleMoveDamage = *exp; else @@ -5946,7 +5707,9 @@ static void atk23_getexp(void) stringID = 0x14A; } else - stringID = 0x149; + { + stringID = 0x149; + } //get exp getter bank if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) @@ -5971,12 +5734,13 @@ static void atk23_getexp(void) gBattleTextBuff1[3] = BATTLE_STRUCT->expGetterID; gBattleTextBuff1[4] = 0xFF; - //buffer 'gained' or 'gained a boosted' - gBattleTextBuff2[0] = 0xFD; - gBattleTextBuff2[1] = 0; - gBattleTextBuff2[2] = sBYTE0_32(stringID); - gBattleTextBuff2[3] = sBYTE1_32(stringID); - gBattleTextBuff2[4] = 0xFF; + //buffer 'gained' or 'gained a boosted' + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 0; + gBattleTextBuff2[2] = stringID; + stringID = (stringID >> 8) & (0xFF); //this does not want to cooperate + gBattleTextBuff2[3] = stringID; + gBattleTextBuff2[4] = 0xFF; //buffer exp number gBattleTextBuff3[0] = 0xFD; @@ -6003,12 +5767,12 @@ static void atk23_getexp(void) gBattleBufferB[BATTLE_STRUCT->expGetterBank][0] = 0; if (GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP) && GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL) != 100) { - BATTLE_STRUCT->beforeLvlUp[0] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MAX_HP); //doesnt match - BATTLE_STRUCT->beforeLvlUp[1] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_ATK); - BATTLE_STRUCT->beforeLvlUp[2] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_DEF); - BATTLE_STRUCT->beforeLvlUp[3] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD); - BATTLE_STRUCT->beforeLvlUp[4] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPATK); - BATTLE_STRUCT->beforeLvlUp[5] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPDEF); + ((u16*)ewram + 0xB8C0)[0] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MAX_HP); //doesnt match + ((u16*)ewram + 0xB8C0)[1] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_ATK); + ((u16*)ewram + 0xB8C0)[2] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_DEF); + ((u16*)ewram + 0xB8C0)[3] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD); + ((u16*)ewram + 0xB8C0)[4] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPATK); + ((u16*)ewram + 0xB8C0)[5] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPDEF); gActiveBank = BATTLE_STRUCT->expGetterBank; EmitExpBarUpdate(0, BATTLE_STRUCT->expGetterID, gBattleMoveDamage); @@ -8031,9 +7795,39 @@ _080214AE:\n\ #ifdef NONMATCHING static void atk46_playanimation2(void) { - + u8 arg1; + u8* arg2; + u16* arg3; + u32 something; + + arg1 = BSScriptRead8(gBattlescriptCurrInstr + 1); + gActiveBank = GetBattleBank(arg1); + arg2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2); + arg3 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6); + + if (*arg2 == 1 || *arg2 == 0x11 || *arg2 == 2) + { + EmitBattleAnimation(0, *arg2, *arg3); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 10; + return; + } + if ((gHitMarker & 0x80)) + { + something = (u32)(gBattlescriptCurrInstr + 10); + } + else + { + u8 yeah = *arg2 - 10; + if (yeah < 4 || (gStatuses3[gActiveBank] & 0x000400C0) == 0) + { + EmitBattleAnimation(0, *arg2, *arg3); + MarkBufferBankForExecution(gActiveBank); + } + something = (u32)(gBattlescriptCurrInstr + 10); + } + gBattlescriptCurrInstr = (u8*)something; } - #else __attribute__((naked)) static void atk46_playanimation2(void) -- cgit v1.2.3 From c66988abb03682f4fe8c79227452501c16110cfe Mon Sep 17 00:00:00 2001 From: Doesnty Date: Fri, 18 Aug 2017 19:25:16 -0500 Subject: match atk19_faint_pokemon (camthesaxman) --- src/battle_4.c | 521 ++++++++++++--------------------------------------------- 1 file changed, 104 insertions(+), 417 deletions(-) diff --git a/src/battle_4.c b/src/battle_4.c index b5f774e6b..1b8f43fcd 100644 --- a/src/battle_4.c +++ b/src/battle_4.c @@ -215,6 +215,11 @@ extern u8 BattleScript_CastformChange[]; extern u8 gUnknown_081D9834[]; extern u8 gUnknown_081D90FC[]; //bs random switchout extern u8 gUnknown_081D95DB[]; //bs payday money give +extern u8 gUnknown_081D8C58[]; +extern u8 gUnknown_081D8C65[]; +extern u8 gUnknown_081D9156[]; +extern u8 gUnknown_081D9468[]; + //useful macros //read via orr @@ -4978,425 +4983,107 @@ static void atk18_status_effect_clear(void) BATTLE_STRUCT->unk16112 = 0; } -//Fuck this, Maybe later -__attribute__((naked)) static void atk19_faint_pokemon(void) { - asm(".syntax unified\n\ -push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x4\n\ - ldr r0, _0801F81C @ =gBattlescriptCurrInstr\n\ - ldr r2, [r0]\n\ - ldrb r1, [r2, 0x2]\n\ - adds r6, r0, 0\n\ - cmp r1, 0\n\ - beq _0801F834\n\ - ldrb r0, [r2, 0x1]\n\ - bl GetBattleBank\n\ - ldr r5, _0801F820 @ =gActiveBank\n\ - strb r0, [r5]\n\ - ldr r2, _0801F824 @ =gHitMarker\n\ - ldr r1, _0801F828 @ =gBitTable\n\ - ldrb r0, [r5]\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldr r1, [r0]\n\ - lsls r1, 28\n\ - ldr r0, [r2]\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0801F7E6\n\ - b _0801FB1C\n\ -_0801F7E6:\n\ - ldr r1, [r6]\n\ - ldrb r4, [r1, 0x3]\n\ - ldrb r0, [r1, 0x4]\n\ - lsls r0, 8\n\ - orrs r4, r0\n\ - ldrb r0, [r1, 0x5]\n\ - lsls r0, 16\n\ - orrs r4, r0\n\ - ldrb r0, [r1, 0x6]\n\ - lsls r0, 24\n\ - orrs r4, r0\n\ - bl b_movescr_stack_pop_cursor\n\ - str r4, [r6]\n\ - ldrb r0, [r5]\n\ - bl GetBankSide\n\ - ldr r1, _0801F82C @ =gSideAffecting\n\ - lsls r0, 24\n\ - lsrs r0, 23\n\ - adds r0, r1\n\ - ldrh r2, [r0]\n\ - ldr r1, _0801F830 @ =0x0000fdff\n\ - ands r1, r2\n\ - strh r1, [r0]\n\ - b _0801FB22\n\ - .align 2, 0\n\ -_0801F81C: .4byte gBattlescriptCurrInstr\n\ -_0801F820: .4byte gActiveBank\n\ -_0801F824: .4byte gHitMarker\n\ -_0801F828: .4byte gBitTable\n\ -_0801F82C: .4byte gSideAffecting\n\ -_0801F830: .4byte 0x0000fdff\n\ -_0801F834:\n\ - ldrb r0, [r2, 0x1]\n\ - cmp r0, 0x1\n\ - bne _0801F85C\n\ - ldr r1, _0801F84C @ =gActiveBank\n\ - ldr r0, _0801F850 @ =gBankAttacker\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - ldr r0, _0801F854 @ =gBankTarget\n\ - ldrb r7, [r0]\n\ - ldr r4, _0801F858 @ =gUnknown_081D8C58\n\ - b _0801F86A\n\ - .align 2, 0\n\ -_0801F84C: .4byte gActiveBank\n\ -_0801F850: .4byte gBankAttacker\n\ -_0801F854: .4byte gBankTarget\n\ -_0801F858: .4byte gUnknown_081D8C58\n\ -_0801F85C:\n\ - ldr r1, _0801F954 @ =gActiveBank\n\ - ldr r0, _0801F958 @ =gBankTarget\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - ldr r0, _0801F95C @ =gBankAttacker\n\ - ldrb r7, [r0]\n\ - ldr r4, _0801F960 @ =gUnknown_081D8C65\n\ -_0801F86A:\n\ - ldr r0, _0801F964 @ =gAbsentBankFlags\n\ - ldrb r1, [r0]\n\ - ldr r0, _0801F968 @ =gBitTable\n\ - mov r12, r0\n\ - ldr r2, _0801F954 @ =gActiveBank\n\ - mov r8, r2\n\ - ldrb r2, [r2]\n\ - lsls r0, r2, 2\n\ - add r0, r12\n\ - ldr r0, [r0]\n\ - ands r1, r0\n\ - cmp r1, 0\n\ - beq _0801F886\n\ - b _0801FB1C\n\ -_0801F886:\n\ - ldr r3, _0801F96C @ =gBattleMons\n\ - mov r10, r3\n\ - movs r5, 0x58\n\ - mov r9, r5\n\ - mov r0, r9\n\ - muls r0, r2\n\ - add r0, r10\n\ - ldrh r3, [r0, 0x28]\n\ - cmp r3, 0\n\ - beq _0801F89C\n\ - b _0801FB1C\n\ -_0801F89C:\n\ - ldr r2, _0801F970 @ =0x02000000\n\ - lsls r1, r7, 1\n\ - ldr r5, _0801F974 @ =0x000160ac\n\ - adds r0, r1, r5\n\ - adds r0, r2\n\ - strb r3, [r0]\n\ - ldr r0, _0801F978 @ =0x000160ad\n\ - adds r1, r0\n\ - adds r1, r2\n\ - strb r3, [r1]\n\ - lsls r1, r7, 2\n\ - adds r5, 0x54\n\ - adds r0, r1, r5\n\ - adds r0, r2\n\ - strb r3, [r0]\n\ - adds r5, 0x1\n\ - adds r0, r1, r5\n\ - adds r0, r2\n\ - strb r3, [r0]\n\ - adds r5, 0x1\n\ - adds r0, r1, r5\n\ - adds r0, r2\n\ - strb r3, [r0]\n\ - ldr r0, _0801F97C @ =0x00016103\n\ - adds r1, r0\n\ - adds r1, r2\n\ - strb r3, [r1]\n\ - ldr r5, _0801F980 @ =gHitMarker\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - lsls r0, 2\n\ - add r0, r12\n\ - ldr r1, [r0]\n\ - lsls r1, 28\n\ - ldr r0, [r5]\n\ - orrs r0, r1\n\ - str r0, [r5]\n\ - ldr r0, [r6]\n\ - adds r0, 0x7\n\ - bl b_movescr_stack_push\n\ - str r4, [r6]\n\ - mov r2, r8\n\ - ldrb r0, [r2]\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _0801F9B0\n\ - ldr r0, [r5]\n\ - movs r1, 0x80\n\ - lsls r1, 15\n\ - orrs r0, r1\n\ - str r0, [r5]\n\ - ldr r1, _0801F984 @ =gBattleResults\n\ - ldrb r0, [r1]\n\ - cmp r0, 0xFE\n\ - bhi _0801F914\n\ - adds r0, 0x1\n\ - strb r0, [r1]\n\ -_0801F914:\n\ - mov r0, r9\n\ - muls r0, r7\n\ - add r0, r10\n\ - adds r3, r0, 0\n\ - adds r3, 0x2A\n\ - mov r4, r8\n\ - ldrb r2, [r4]\n\ - mov r0, r9\n\ - muls r0, r2\n\ - add r0, r10\n\ - adds r1, r0, 0\n\ - adds r1, 0x2A\n\ - ldrb r0, [r3]\n\ - ldrb r5, [r1]\n\ - cmp r0, r5\n\ - bls _0801F9CC\n\ - ldrb r1, [r1]\n\ - subs r0, r1\n\ - cmp r0, 0x1D\n\ - ble _0801F990\n\ - ldr r1, _0801F988 @ =gBattlePartyID\n\ - lsls r0, r2, 1\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - movs r0, 0x64\n\ - muls r0, r1\n\ - ldr r1, _0801F98C @ =gPlayerParty\n\ - adds r0, r1\n\ - movs r1, 0x8\n\ - bl AdjustFriendship\n\ - b _0801F9CC\n\ - .align 2, 0\n\ -_0801F954: .4byte gActiveBank\n\ -_0801F958: .4byte gBankTarget\n\ -_0801F95C: .4byte gBankAttacker\n\ -_0801F960: .4byte gUnknown_081D8C65\n\ -_0801F964: .4byte gAbsentBankFlags\n\ -_0801F968: .4byte gBitTable\n\ -_0801F96C: .4byte gBattleMons\n\ -_0801F970: .4byte 0x02000000\n\ -_0801F974: .4byte 0x000160ac\n\ -_0801F978: .4byte 0x000160ad\n\ -_0801F97C: .4byte 0x00016103\n\ -_0801F980: .4byte gHitMarker\n\ -_0801F984: .4byte gBattleResults\n\ -_0801F988: .4byte gBattlePartyID\n\ -_0801F98C: .4byte gPlayerParty\n\ -_0801F990:\n\ - ldr r1, _0801F9A8 @ =gBattlePartyID\n\ - lsls r0, r2, 1\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - movs r0, 0x64\n\ - muls r0, r1\n\ - ldr r1, _0801F9AC @ =gPlayerParty\n\ - adds r0, r1\n\ - movs r1, 0x6\n\ - bl AdjustFriendship\n\ - b _0801F9CC\n\ - .align 2, 0\n\ -_0801F9A8: .4byte gBattlePartyID\n\ -_0801F9AC: .4byte gPlayerParty\n\ -_0801F9B0:\n\ - ldr r1, _0801FAE0 @ =gBattleResults\n\ - ldrb r0, [r1, 0x1]\n\ - cmp r0, 0xFE\n\ - bhi _0801F9BC\n\ - adds r0, 0x1\n\ - strb r0, [r1, 0x1]\n\ -_0801F9BC:\n\ - ldr r2, _0801FAE4 @ =gActiveBank\n\ - ldrb r0, [r2]\n\ - mov r3, r9\n\ - muls r3, r0\n\ - adds r0, r3, 0\n\ - add r0, r10\n\ - ldrh r0, [r0]\n\ - strh r0, [r1, 0x20]\n\ -_0801F9CC:\n\ - ldr r0, _0801FAE8 @ =gHitMarker\n\ - ldr r0, [r0]\n\ - movs r1, 0x40\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0801FA02\n\ - ldr r6, _0801FAEC @ =gBattleMons\n\ - ldr r0, _0801FAF0 @ =gBankAttacker\n\ - ldrb r0, [r0]\n\ - movs r5, 0x58\n\ - muls r0, r5\n\ - adds r0, r6\n\ - ldrh r0, [r0, 0x28]\n\ - cmp r0, 0\n\ - beq _0801FA02\n\ - ldr r4, _0801FAF4 @ =gBattlescriptCurrInstr\n\ - ldr r0, [r4]\n\ - bl b_movescr_stack_push\n\ - ldr r1, _0801FAF8 @ =gBattleMoveDamage\n\ - adds r0, r7, 0\n\ - muls r0, r5\n\ - adds r0, r6\n\ - ldrh r0, [r0, 0x28]\n\ - str r0, [r1]\n\ - ldr r0, _0801FAFC @ =gUnknown_081D9156\n\ - str r0, [r4]\n\ -_0801FA02:\n\ - ldr r1, _0801FB00 @ =gStatuses3\n\ - ldr r6, _0801FB04 @ =gBankTarget\n\ - ldrb r0, [r6]\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x80\n\ - lsls r1, 7\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0801FA1A\n\ - b _0801FB22\n\ -_0801FA1A:\n\ - ldr r0, _0801FAE8 @ =gHitMarker\n\ - ldr r5, [r0]\n\ - movs r0, 0x80\n\ - lsls r0, 17\n\ - ands r5, r0\n\ - cmp r5, 0\n\ - bne _0801FB22\n\ - ldr r4, _0801FAF0 @ =gBankAttacker\n\ - mov r8, r4\n\ - ldrb r0, [r4]\n\ - bl GetBankSide\n\ - adds r4, r0, 0\n\ - ldrb r0, [r6]\n\ - bl GetBankSide\n\ - lsls r4, 24\n\ - lsls r0, 24\n\ - cmp r4, r0\n\ - beq _0801FB22\n\ - ldr r0, _0801FAEC @ =gBattleMons\n\ - mov r9, r0\n\ - mov r1, r8\n\ - ldrb r2, [r1]\n\ - movs r7, 0x58\n\ - adds r3, r2, 0\n\ - muls r3, r7\n\ - adds r0, r3, r0\n\ - ldrh r0, [r0, 0x28]\n\ - cmp r0, 0\n\ - beq _0801FB22\n\ - ldr r0, _0801FB08 @ =gCurrentMove\n\ - ldrh r0, [r0]\n\ - cmp r0, 0xA5\n\ - beq _0801FB22\n\ - ldr r1, _0801FB0C @ =0x02000000\n\ - ldr r4, _0801FB10 @ =0x0001608c\n\ - adds r0, r2, r4\n\ - adds r0, r1\n\ - ldrb r4, [r0]\n\ - adds r0, r4, r3\n\ - mov r6, r9\n\ - adds r6, 0x24\n\ - adds r0, r6\n\ - strb r5, [r0]\n\ - ldr r5, _0801FAF4 @ =gBattlescriptCurrInstr\n\ - ldr r0, [r5]\n\ - bl b_movescr_stack_push\n\ - ldr r0, _0801FB14 @ =gUnknown_081D9468\n\ - str r0, [r5]\n\ - ldr r5, _0801FAE4 @ =gActiveBank\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - strb r0, [r5]\n\ - adds r1, r4, 0\n\ - adds r1, 0x9\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - ldrb r0, [r5]\n\ - muls r0, r7\n\ - adds r0, r6\n\ - adds r0, r4\n\ - str r0, [sp]\n\ - movs r0, 0\n\ - movs r2, 0\n\ - movs r3, 0x1\n\ - bl EmitSetAttributes\n\ - ldrb r0, [r5]\n\ - bl MarkBufferBankForExecution\n\ - ldr r1, _0801FB18 @ =gBattleTextBuff1\n\ - movs r0, 0xFD\n\ - strb r0, [r1]\n\ - movs r0, 0x2\n\ - strb r0, [r1, 0x1]\n\ - lsls r4, 1\n\ - mov r2, r8\n\ - ldrb r0, [r2]\n\ - muls r0, r7\n\ - adds r0, r4, r0\n\ - mov r2, r9\n\ - adds r2, 0xC\n\ - adds r0, r2\n\ - ldrh r0, [r0]\n\ - strb r0, [r1, 0x2]\n\ - mov r3, r8\n\ - ldrb r0, [r3]\n\ - muls r0, r7\n\ - adds r4, r0\n\ - adds r4, r2\n\ - ldrh r0, [r4]\n\ - lsrs r0, 8\n\ - strb r0, [r1, 0x3]\n\ - movs r0, 0xFF\n\ - strb r0, [r1, 0x4]\n\ - b _0801FB22\n\ - .align 2, 0\n\ -_0801FAE0: .4byte gBattleResults\n\ -_0801FAE4: .4byte gActiveBank\n\ -_0801FAE8: .4byte gHitMarker\n\ -_0801FAEC: .4byte gBattleMons\n\ -_0801FAF0: .4byte gBankAttacker\n\ -_0801FAF4: .4byte gBattlescriptCurrInstr\n\ -_0801FAF8: .4byte gBattleMoveDamage\n\ -_0801FAFC: .4byte gUnknown_081D9156\n\ -_0801FB00: .4byte gStatuses3\n\ -_0801FB04: .4byte gBankTarget\n\ -_0801FB08: .4byte gCurrentMove\n\ -_0801FB0C: .4byte 0x02000000\n\ -_0801FB10: .4byte 0x0001608c\n\ -_0801FB14: .4byte gUnknown_081D9468\n\ -_0801FB18: .4byte gBattleTextBuff1\n\ -_0801FB1C:\n\ - ldr r0, [r6]\n\ - adds r0, 0x7\n\ - str r0, [r6]\n\ -_0801FB22:\n\ - add sp, 0x4\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); + u8 *r4; + + if (gBattlescriptCurrInstr[2] != 0) + { + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); + if (gHitMarker & HITMARKER_FAINTED(gActiveBank)) + { + r4 = BSScriptReadPtr(gBattlescriptCurrInstr + 3); + + b_movescr_stack_pop_cursor(); + gBattlescriptCurrInstr = r4; + gSideAffecting[GetBankSide(gActiveBank)] &= ~SIDE_STATUS_SPIKES_DAMAGED; + } + else + { + gBattlescriptCurrInstr += 7; + } + } + else + { + u8 bank; + + if (gBattlescriptCurrInstr[1] == 1) + { + gActiveBank = gBankAttacker; + bank = gBankTarget; + r4 = gUnknown_081D8C58; + } + else + { + gActiveBank = gBankTarget; + bank = gBankAttacker; + r4 = gUnknown_081D8C65; + } + if (!(gAbsentBankFlags & gBitTable[gActiveBank]) + && gBattleMons[gActiveBank].hp == 0) + { + ewram[0x160AC + bank * 2 + 0] = 0; + ewram[0x160AC + bank * 2 + 1] = 0; + ewram[0x16100 + bank * 4 + 0] = 0; + ewram[0x16100 + bank * 4 + 1] = 0; + ewram[0x16100 + bank * 4 + 2] = 0; + ewram[0x16100 + bank * 4 + 3] = 0; + + gHitMarker |= HITMARKER_FAINTED(gActiveBank); + b_movescr_stack_push(gBattlescriptCurrInstr + 7); + gBattlescriptCurrInstr = r4; + if (GetBankSide(gActiveBank) == 0) + { + gHitMarker |= HITMARKER_x400000; + if (gBattleResults.playerFaintCounter < 0xFF) + gBattleResults.playerFaintCounter++; + if (gBattleMons[bank].level > gBattleMons[gActiveBank].level) + { + if (gBattleMons[bank].level - gBattleMons[gActiveBank].level > 0x1D) + AdjustFriendship(&gPlayerParty[gBattlePartyID[gActiveBank]], 8); + else + AdjustFriendship(&gPlayerParty[gBattlePartyID[gActiveBank]], 6); + } + } + else + { + if (gBattleResults.opponentFaintCounter < 0xFF) + gBattleResults.opponentFaintCounter++; + gBattleResults.lastOpponentSpecies = gBattleMons[gActiveBank].species; + } + if ((gHitMarker & HITMARKER_DESTINYBOND) && gBattleMons[gBankAttacker].hp != 0) + { + b_movescr_stack_push(gBattlescriptCurrInstr); + gBattleMoveDamage = gBattleMons[bank].hp; + gBattlescriptCurrInstr = gUnknown_081D9156; + } + if ((gStatuses3[gBankTarget] & STATUS3_GRUDGE) + && !(gHitMarker & HITMARKER_GRUDGE) + && GetBankSide(gBankAttacker) != GetBankSide(gBankTarget) + && gBattleMons[gBankAttacker].hp != 0 + && gCurrentMove != MOVE_STRUGGLE) + { + u8 moveIndex = ewram[0x1608C + gBankAttacker]; + + gBattleMons[gBankAttacker].pp[moveIndex] = 0; + b_movescr_stack_push(gBattlescriptCurrInstr); + gBattlescriptCurrInstr = gUnknown_081D9468; + gActiveBank = gBankAttacker; + EmitSetAttributes(0, moveIndex + 9, 0, 1, &gBattleMons[gActiveBank].pp[moveIndex]); + MarkBufferBankForExecution(gActiveBank); + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = gBattleMons[gBankAttacker].moves[moveIndex]; + gBattleTextBuff1[3] = gBattleMons[gBankAttacker].moves[moveIndex] >> 8; + gBattleTextBuff1[4] = EOS; + } + } + else + { + gBattlescriptCurrInstr += 7; + } + } } static void atk1A_faint_animation(void) -- cgit v1.2.3 From 2175733e0f2fbbb678ae25afd204fdecfa30080b Mon Sep 17 00:00:00 2001 From: Doesnty Date: Fri, 18 Aug 2017 19:29:21 -0500 Subject: Also put some abominable lines back to how they were --- src/battle_4.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/battle_4.c b/src/battle_4.c index 1b8f43fcd..cf77fe81c 100644 --- a/src/battle_4.c +++ b/src/battle_4.c @@ -5454,12 +5454,13 @@ static void atk23_getexp(void) gBattleBufferB[BATTLE_STRUCT->expGetterBank][0] = 0; if (GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP) && GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL) != 100) { - ((u16*)ewram + 0xB8C0)[0] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MAX_HP); //doesnt match - ((u16*)ewram + 0xB8C0)[1] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_ATK); - ((u16*)ewram + 0xB8C0)[2] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_DEF); - ((u16*)ewram + 0xB8C0)[3] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD); - ((u16*)ewram + 0xB8C0)[4] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPATK); - ((u16*)ewram + 0xB8C0)[5] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPDEF); + // Doesn't match. + BATTLE_STRUCT->beforeLvlUp[0] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MAX_HP); + BATTLE_STRUCT->beforeLvlUp[1] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_ATK); + BATTLE_STRUCT->beforeLvlUp[2] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_DEF); + BATTLE_STRUCT->beforeLvlUp[3] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD); + BATTLE_STRUCT->beforeLvlUp[4] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPATK); + BATTLE_STRUCT->beforeLvlUp[5] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPDEF); gActiveBank = BATTLE_STRUCT->expGetterBank; EmitExpBarUpdate(0, BATTLE_STRUCT->expGetterID, gBattleMoveDamage); -- cgit v1.2.3 From 92a703333302194b1093788aa3725f1e22c77e52 Mon Sep 17 00:00:00 2001 From: Doesnty Date: Tue, 22 Aug 2017 11:54:28 -0500 Subject: Remove a goto from atk06_typecalc (camthesaxman) --- src/battle_4.c | 112 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 55 insertions(+), 57 deletions(-) diff --git a/src/battle_4.c b/src/battle_4.c index cf77fe81c..71c78a6b9 100644 --- a/src/battle_4.c +++ b/src/battle_4.c @@ -1464,73 +1464,71 @@ static void atk06_typecalc(void) { int i = 0; u8 move_type; - if (gCurrentMove == MOVE_STRUGGLE) {goto END;} - - if (BATTLE_STRUCT->dynamicMoveType) - move_type = BATTLE_STRUCT->dynamicMoveType & 0x3F; - else - move_type = gBattleMoves[gCurrentMove].type; - - //check stab - if (gBattleMons[gBankAttacker].type1 == move_type || gBattleMons[gBankAttacker].type2 == move_type) + if (gCurrentMove != MOVE_STRUGGLE) { - gBattleMoveDamage = gBattleMoveDamage * 15; - gBattleMoveDamage = gBattleMoveDamage / 10; - } + if (BATTLE_STRUCT->dynamicMoveType) + move_type = BATTLE_STRUCT->dynamicMoveType & 0x3F; + else + move_type = gBattleMoves[gCurrentMove].type; - if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) - { - gLastUsedAbility = gBattleMons[gBankTarget].ability; - gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED); - gMoveHitWith[gBankTarget] = 0; - gUnknown_02024C44[gBankTarget] = 0; - gBattleCommunication[6] = move_type; - RecordAbilityBattle(gBankTarget, gLastUsedAbility); - } - else - { - while (gTypeEffectiveness[i]!= TYPE_ENDTABLE) + //check stab + if (gBattleMons[gBankAttacker].type1 == move_type || gBattleMons[gBankAttacker].type2 == move_type) { - if (gTypeEffectiveness[i] == TYPE_FORESIGHT) - { - if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT) - break; - i += 3; - continue; - } + gBattleMoveDamage = gBattleMoveDamage * 15; + gBattleMoveDamage = gBattleMoveDamage / 10; + } - else if (gTypeEffectiveness[i] == move_type) + if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) + { + gLastUsedAbility = gBattleMons[gBankTarget].ability; + gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED); + gMoveHitWith[gBankTarget] = 0; + gUnknown_02024C44[gBankTarget] = 0; + gBattleCommunication[6] = move_type; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + else + { + while (gTypeEffectiveness[i]!= TYPE_ENDTABLE) { - //check type1 - if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1) - ModulateDmgByType(gTypeEffectiveness[i + 2]); - //check type2 - if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 && - gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2) - ModulateDmgByType(gTypeEffectiveness[i + 2]); + if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + { + if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT) + break; + i += 3; + continue; + } + + else if (gTypeEffectiveness[i] == move_type) + { + //check type1 + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1) + ModulateDmgByType(gTypeEffectiveness[i + 2]); + //check type2 + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 && + gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2) + ModulateDmgByType(gTypeEffectiveness[i + 2]); + } + i += 3; } - i += 3; } - } - if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2 - && (!(gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE) || ((gBattleMoveFlags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) - && gBattleMoves[gCurrentMove].power) - { - gLastUsedAbility = ABILITY_WONDER_GUARD; - gBattleMoveFlags |= MOVESTATUS_MISSED; - gMoveHitWith[gBankTarget] = 0; - gUnknown_02024C44[gBankTarget] = 0; - gBattleCommunication[6] = 3; - RecordAbilityBattle(gBankTarget, gLastUsedAbility); + if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2 + && (!(gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE) || ((gBattleMoveFlags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) + && gBattleMoves[gCurrentMove].power) + { + gLastUsedAbility = ABILITY_WONDER_GUARD; + gBattleMoveFlags |= MOVESTATUS_MISSED; + gMoveHitWith[gBankTarget] = 0; + gUnknown_02024C44[gBankTarget] = 0; + gBattleCommunication[6] = 3; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) + gProtectStructs[gBankAttacker].notEffective = 1; } - if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) - gProtectStructs[gBankAttacker].notEffective = 1; - - END: - gBattlescriptCurrInstr++; + gBattlescriptCurrInstr++; } - static void b_wonderguard_and_levitate(void) { u8 flags = 0; -- cgit v1.2.3 From 5487c755f054b464665849bbe5a31ab92ff34574 Mon Sep 17 00:00:00 2001 From: Doesnty Date: Tue, 22 Aug 2017 11:59:10 -0500 Subject: whitespace --- src/battle_4.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_4.c b/src/battle_4.c index 71c78a6b9..ecd7fc34b 100644 --- a/src/battle_4.c +++ b/src/battle_4.c @@ -5373,7 +5373,7 @@ static void atk23_getexp(void) if (GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP)) { - s16 stringID; + s16 stringID; if (BATTLE_STRUCT->sentInPokes & 1) gBattleMoveDamage = *exp; else -- cgit v1.2.3 From f25a1e6106fef11318301666359ee5ec2d45677f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 29 Aug 2017 22:14:29 -0400 Subject: Daycare_SendPokemon --- include/daycare.h | 2 +- include/global.h | 36 ++++++---- include/mail_data.h | 2 +- include/pokemon_storage_system.h | 2 + src/daycare.c | 151 ++++++++------------------------------- src/mori_debug_menu.c | 6 +- src/record_mixing.c | 32 ++++----- 7 files changed, 76 insertions(+), 155 deletions(-) diff --git a/include/daycare.h b/include/daycare.h index b90c50610..23ddb1cdd 100644 --- a/include/daycare.h +++ b/include/daycare.h @@ -2,7 +2,7 @@ #define GUARD_DAYCARE_H u8 Daycare_CountPokemon(struct BoxPokemon *); -void sub_8041324(struct BoxPokemon *, struct RecordMixing_UnknownStruct *); +void sub_8041324(struct BoxPokemon *, struct DayCareMailEtc *); void sub_8041790(int i); u16 sub_8041870(u16); void sub_8041940(void); diff --git a/include/global.h b/include/global.h index f076274cc..d5535a9c7 100644 --- a/include/global.h +++ b/include/global.h @@ -534,18 +534,32 @@ struct GabbyAndTyData /*2b1b*/ u8 valB_5:3; }; -struct RecordMixing_UnknownStructSub +struct DayCareMail { - u32 unk0; - u8 data[0x34]; - //u8 data[0x38]; + /*0x00*/ struct MailStruct mail; + /*0x24*/ u8 names[19]; }; -struct RecordMixing_UnknownStruct -{ - struct RecordMixing_UnknownStructSub data[2]; +struct DayCareMailExtra { u32 unk70; - u16 unk74[0x2]; + u16 unk74[2]; +}; + +struct DayCareMailEtc +{ + struct DayCareMail data[2]; + union { + struct DayCareMailExtra rc; + u32 unk70[2]; + } extra; +}; + +struct DayCareData { + struct BoxPokemon mons[2]; + struct DayCareMailEtc mail; + u8 unk_118[2]; + u8 unk_11a; + u8 unk_11b; }; struct LinkBattleRecord @@ -644,11 +658,7 @@ struct SaveBlock1 /* 0x02025734 */ /*0x2DD4*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff /*0x2DFC*/ u8 filler_2DFC[0x8]; /*0x2E04*/ SB_Struct sbStruct; - /*0x2F9C*/ struct BoxPokemon daycareData[2]; - /*0x303C*/ struct RecordMixing_UnknownStruct filler_303C; - /*0x30AC*/ u8 filler_30B4[0x2]; - /*0x30B6*/ u8 filler_30B6; - /*0x30B7*/ u8 filler_30B7[1]; + /*0x2F9C*/ struct DayCareData daycareData; /*0x30B8*/ struct LinkBattleRecord linkBattleRecords[5]; /*0x3108*/ u8 filler_3108[8]; /*0x3110*/ u8 giftRibbons[7]; diff --git a/include/mail_data.h b/include/mail_data.h index df4b385a1..2659c0d37 100644 --- a/include/mail_data.h +++ b/include/mail_data.h @@ -11,6 +11,6 @@ u8 GiveMailToMon2(struct Pokemon *, struct MailStruct *); void TakeMailFromMon(struct Pokemon *); u8 TakeMailFromMon2(struct Pokemon *); bool8 ItemIsMail(u16); -bool8 ItemIsMail(u16); +bool8 MonHasMail(struct Pokemon *); #endif // GUARD_MAIL_DATA_H diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index bd4e7915b..9fe3436ef 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -2,5 +2,7 @@ #define GUARD_POKEMON_STORAGE_SYSTEM_H void ResetPokemonStorageSystem(void); +void BoxMonRestorePP(struct BoxPokemon *); +void party_compaction(void); #endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/src/daycare.c b/src/daycare.c index cded18207..64eac981e 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -4,6 +4,9 @@ #include "species.h" #include "items.h" #include "string_util.h" +#include "mail_data.h" +#include "name_string_util.h" +#include "pokemon_storage_system.h" extern u8 gLastFieldPokeMenuOpened; @@ -35,7 +38,7 @@ u8 Daycare_CountPokemon(struct BoxPokemon *daycare_data) return count; } -void sub_8041324(struct BoxPokemon * box_pokemon, struct RecordMixing_UnknownStruct * void_pointer) +void sub_8041324(struct BoxPokemon * box_pokemon, struct DayCareMailEtc * void_pointer) { u8 i; u8 specCount; @@ -47,17 +50,17 @@ void sub_8041324(struct BoxPokemon * box_pokemon, struct RecordMixing_UnknownStr specCount ++; if (GetBoxMonData(&box_pokemon[i], MON_DATA_HELD_ITEM) == ITEM_NONE) { - void_pointer->unk74[i] = 0; + void_pointer->extra.rc.unk74[i] = 0; } else { - void_pointer->unk74[i] = 1; + void_pointer->extra.rc.unk74[i] = 1; } } else { - void_pointer->unk74[i] = 1; + void_pointer->extra.rc.unk74[i] = 1; } } - void_pointer->unk70 = specCount; + void_pointer->extra.rc.unk70 = specCount; } s8 Daycare_FindEmptySpot(struct BoxPokemon * daycare_data) @@ -71,126 +74,32 @@ s8 Daycare_FindEmptySpot(struct BoxPokemon * daycare_data) return -1; } -/*void Daycare_SendPokemon(struct Pokemon * mon, struct BoxPokemon * daycare_data){ // unfinished +void Daycare_SendPokemon(struct Pokemon * mon, struct DayCareData * daycare_data){ // unfinished s8 empty_slot; + u8 mail; + u8 *names; - empty_slot = Daycare_FindEmptySpot(daycare_data); - if(MonHasMail(mon) != 0){ // if the mon holds a mail? - u8 empty_slot_times_56 = empty_slot * 56; - u8 * something2 = ((u8 *) (daycare_data + 2)) + empty_slot_times_56 + 36; - StringCopy(something2, gSaveBlock2.playerName); - PadNameString(something2, 0xFC); - something2 += 8; - GetMonNick(mon, something2); - u8 pokerus = GetMonData(mon, MON_DATA_64); - something1 += (u8 * daycare_data) -}*/ - -__attribute__((naked)) -void Daycare_SendPokemon() -{ - // strange stack usage - happens because THUMB ARM only allows R0-R7 to be pushed/popped: - // all registers in reglist must be Lo registers, except that PUSH can include the LR, and POP can include the PC - // the ldm/stm section probably copies some struct, but I'm not sure how the code would look - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6,r7}\n\ - adds r7, r0, 0\n\ - mov r8, r1\n\ - mov r0, r8\n\ - bl Daycare_FindEmptySpot\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - mov r9, r4\n\ - adds r0, r7, 0\n\ - bl MonHasMail\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0804144A\n\ - lsls r0, r4, 24\n\ - asrs r0, 24\n\ - lsls r4, r0, 3\n\ - subs r4, r0\n\ - lsls r4, 3\n\ - adds r5, r4, 0\n\ - adds r5, 0xA0\n\ - add r5, r8\n\ - adds r6, r5, 0\n\ - adds r6, 0x24\n\ - ldr r1, _08041490 @ =gSaveBlock2\n\ - adds r0, r6, 0\n\ - bl StringCopy\n\ - adds r0, r6, 0\n\ - movs r1, 0xFC\n\ - bl PadNameString\n\ - adds r6, 0x8\n\ - adds r0, r7, 0\n\ - adds r1, r6, 0\n\ - bl GetMonNick\n\ - adds r0, r7, 0\n\ - movs r1, 0x40\n\ - bl GetMonData\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - add r4, r8\n\ - ldr r2, _08041494 @ =gSaveBlock1\n\ - lsls r1, r0, 3\n\ - adds r1, r0\n\ - lsls r1, 2\n\ - adds r1, r2\n\ - adds r4, 0xA0\n\ - ldr r0, _08041498 @ =0x00002b4c\n\ - adds r1, r0\n\ - ldm r1!, {r0,r2,r3}\n\ - stm r4!, {r0,r2,r3}\n\ - ldm r1!, {r0,r2,r3}\n\ - stm r4!, {r0,r2,r3}\n\ - ldm r1!, {r0,r2,r3}\n\ - stm r4!, {r0,r2,r3}\n\ - adds r0, r7, 0\n\ - bl TakeMailFromMon\n\ -_0804144A:\n\ - mov r2, r9\n\ - lsls r4, r2, 24\n\ - asrs r4, 24\n\ - lsls r5, r4, 2\n\ - adds r4, r5, r4\n\ - lsls r4, 4\n\ - add r4, r8\n\ - adds r0, r4, 0\n\ - adds r1, r7, 0\n\ - movs r2, 0x50\n\ - bl memcpy\n\ - adds r0, r4, 0\n\ - bl BoxMonRestorePP\n\ - movs r0, 0x88\n\ - lsls r0, 1\n\ - add r0, r8\n\ - adds r0, r5\n\ - movs r1, 0\n\ - str r1, [r0]\n\ - adds r0, r7, 0\n\ - bl ZeroMonData\n\ - bl party_compaction\n\ - bl CalculatePlayerPartyCount\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08041490: .4byte gSaveBlock2\n\ -_08041494: .4byte gSaveBlock1\n\ -_08041498: .4byte 0x00002b4c\n\ - .syntax divided\n"); + empty_slot = Daycare_FindEmptySpot(daycare_data->mons); + if(MonHasMail(mon)) { + StringCopy((names = daycare_data->mail.data[empty_slot].names), gSaveBlock2.playerName); + PadNameString(names, 0xFC); + names += 8; + GetMonNick(mon, names); + mail = GetMonData(mon, MON_DATA_MAIL); + daycare_data->mail.data[empty_slot].mail = gSaveBlock1.mail[mail]; + TakeMailFromMon(mon); + } + daycare_data->mons[empty_slot] = mon->box; + BoxMonRestorePP(&daycare_data->mons[empty_slot]); + daycare_data->mail.extra.unk70[empty_slot] = 0; + ZeroMonData(mon); + party_compaction(); + CalculatePlayerPartyCount(); } void Daycare_SendPokemon_Special() { - Daycare_SendPokemon(gPlayerParty + gLastFieldPokeMenuOpened, gSaveBlock1.daycareData); + Daycare_SendPokemon(gPlayerParty + gLastFieldPokeMenuOpened, &gSaveBlock1.daycareData); } void sub_80417F4(u8 *); @@ -235,7 +144,7 @@ void sub_804151C(struct Pokemon * mon) } __attribute__((naked)) -u16 sub_8041570(struct BoxPokemon * daycare_data, u8 a2){ +u16 sub_8041570(struct DayCareData * daycare_data, u8 a2){ asm(".syntax unified\n\ push {r4-r7,lr}\n\ mov r7, r9\n\ @@ -339,7 +248,7 @@ extern u8 gSpecialVar_0x8004; u16 sub_8041648() { - return sub_8041570(gSaveBlock1.daycareData, gSpecialVar_0x8004); + return sub_8041570(&gSaveBlock1.daycareData, gSpecialVar_0x8004); } u8 Daycare_GetLevelAfterSteps(struct BoxPokemon * mon, u32 steps){ diff --git a/src/mori_debug_menu.c b/src/mori_debug_menu.c index 4eadaa78b..abb09d889 100644 --- a/src/mori_debug_menu.c +++ b/src/mori_debug_menu.c @@ -67,7 +67,7 @@ u8 MoriDebugMenu_SearchChild(u8 a1, u8 a2, u8 *ptr) s8 MoriDebugMenu_Egg(void) { - if ( Daycare_CountPokemon(gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() ) + if ( Daycare_CountPokemon(gSaveBlock1.daycareData.mons) == 2 && daycare_relationship_score_from_savegame() ) sub_8041940(); CloseMenu(); @@ -76,7 +76,7 @@ s8 MoriDebugMenu_Egg(void) s8 MoriDebugMenu_MaleEgg(void) { - if ( Daycare_CountPokemon(gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() ) + if ( Daycare_CountPokemon(gSaveBlock1.daycareData.mons) == 2 && daycare_relationship_score_from_savegame() ) sub_8041950(); CloseMenu(); @@ -117,7 +117,7 @@ s8 MoriDebugMenu_BreedEgg(void) SetMonData(&gPlayerParty[loopCounter], MON_DATA_FRIENDSHIP, &friendship); } } - gSaveBlock1.filler_30B6 = -3; + gSaveBlock1.daycareData.extra.unk_2 = -3; CloseMenu(); return 1; } diff --git a/src/record_mixing.c b/src/record_mixing.c index d1083910c..aa6d2c5a9 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -29,7 +29,7 @@ extern u8 ewram[]; #define unk_2018000 (*(struct PlayerRecords *)(ewram + 0x18000)) #define unk_2008000 (*(struct PlayerRecords *)(ewram + 0x08000)) -extern struct RecordMixing_UnknownStruct gUnknown_02038738; +extern struct DayCareMailEtc gUnknown_02038738; extern u16 gSpecialVar_0x8005; u32 gUnknown_03005D2C; @@ -42,7 +42,7 @@ void *recordMixingTvShows = &gSaveBlock1.tvShows; void *gUnknown_083D0274 = &gSaveBlock1.unknown_2ABC; void *gUnknown_083D0278 = &gSaveBlock1.oldMan; void *recordMixingEasyChatPairs = &gSaveBlock1.easyChatPairs; -struct RecordMixing_UnknownStruct *gUnknown_083D0280 = &gUnknown_02038738; +struct DayCareMailEtc *gUnknown_083D0280 = &gUnknown_02038738; void *gUnknown_083D0284 = &gSaveBlock2.filler_A8; #define BUFFER_CHUNK_SIZE 200 @@ -59,7 +59,7 @@ struct PlayerRecords u8 filler1004[0x40]; u8 filler1044[0x40]; struct EasyChatPair easyChatPairs[5]; - struct RecordMixing_UnknownStruct filler10AC; + struct DayCareMailEtc filler10AC; u8 filler1124[0xA4]; u16 filler11C8[0x34]; }; @@ -74,10 +74,10 @@ void RecordMixing_PrepareExchangePacket(void) memcpy(unk_2018000.filler1004, gUnknown_083D0274, sizeof(unk_2008000.filler1004)); memcpy(unk_2018000.filler1044, gUnknown_083D0278, sizeof(unk_2008000.filler1044)); memcpy(unk_2018000.easyChatPairs, recordMixingEasyChatPairs, sizeof(unk_2018000.easyChatPairs)); - gUnknown_02038738.data[0] = gSaveBlock1.filler_303C.data[0]; - gUnknown_02038738.data[1] = gSaveBlock1.filler_303C.data[1]; - sub_8041324(gSaveBlock1.daycareData, &gUnknown_02038738); - memcpy(&unk_2018000.filler10AC, gUnknown_083D0280, sizeof(struct RecordMixing_UnknownStruct)); + gUnknown_02038738.data[0] = gSaveBlock1.daycareData.mail.data[0]; + gUnknown_02038738.data[1] = gSaveBlock1.daycareData.mail.data[1]; + sub_8041324(gSaveBlock1.daycareData.mons, &gUnknown_02038738); + memcpy(&unk_2018000.filler10AC, gUnknown_083D0280, sizeof(struct DayCareMailEtc)); memcpy(unk_2018000.filler1124, gUnknown_083D0284, sizeof(unk_2018000.filler1124)); if (GetMultiplayerId() == 0) @@ -461,10 +461,10 @@ u8 sub_80B9BBC(u16 *a) void sub_80B9BC4(u8 *a, size_t b, u8 c[][2], u8 d, u8 e) { - struct RecordMixing_UnknownStructSub *r6 = (struct RecordMixing_UnknownStructSub *)(a + b * c[d][0]); - struct RecordMixing_UnknownStructSub *src = r6 + c[d][1]; - struct RecordMixing_UnknownStructSub sp0 = *src; - struct RecordMixing_UnknownStructSub *r8 = (struct RecordMixing_UnknownStructSub *)(a + b * c[e][0]); + struct DayCareMail *r6 = (struct DayCareMail *)(a + b * c[d][0]); + struct DayCareMail *src = r6 + c[d][1]; + struct DayCareMail sp0 = *src; + struct DayCareMail *r8 = (struct DayCareMail *)(a + b * c[e][0]); r6 += c[d][1]; *r6 = *(r8 + c[e][1]); @@ -511,7 +511,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) u16 i; // r3 u16 r7; u8 r1; - struct RecordMixing_UnknownStruct *r6; + struct DayCareMailEtc *r6; //asm("":::"r8"); SeedRng(gLinkPlayers[0].trainerId); @@ -526,7 +526,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) sp3C = 0; for (i = 0; i < r8; i++) { - r6 = (struct RecordMixing_UnknownStruct *)(a + b * i); + r6 = (struct DayCareMailEtc *)(a + b * i); if (r6->unk70 != 0) { for (r7 = 0; r7 < r6->unk70; r7++) @@ -540,7 +540,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) //_080B9D46 for (r7 = 0, i = 0; i < r8; i++) { - r6 = (struct RecordMixing_UnknownStruct *)(a + b * i); + r6 = (struct DayCareMailEtc *)(a + b * i); if (sp1C[i][0] == 1 || sp1C[i][1] == 1) sp3C++; if (sp1C[i][0] == 1 && sp1C[i][1] == 0) @@ -596,7 +596,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) //_080B9E3E for (i = 0; i < 4; i++) { - r6 = (struct RecordMixing_UnknownStruct *)a + b * c; + r6 = (struct DayCareMailEtc *)a + b * c; spC[i] = r6; } r1 = sub_80B9C4C(d) % 3; @@ -630,7 +630,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) //_080B9EF0 //memcpy(&gSaveBlock1.filler_303C.data[0], a + b * c, 0x38); //memcpy(&gSaveBlock1.filler_303C.data[1], a + b * c + 0x38, 0x38); - r6 = (struct RecordMixing_UnknownStruct *)(a + b * c); + r6 = (struct DayCareMailEtc *)(a + b * c); gSaveBlock1.filler_303C.data[0] = r6->data[0]; gSaveBlock1.filler_303C.data[1] = r6->data[1]; //memcpy(&gSaveBlock1.filler_303C.data[0], &r6->data[0], 0x38); -- cgit v1.2.3 From 36bafa9f9fad1efd7baead651c7f357f6a832023 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 29 Aug 2017 22:41:26 -0400 Subject: sub_8041570 --- include/global.h | 2 +- include/pokemon.h | 4 +- src/daycare.c | 149 ++++++++++++++---------------------------------------- src/pokemon_1.c | 4 +- 4 files changed, 45 insertions(+), 114 deletions(-) diff --git a/include/global.h b/include/global.h index d5535a9c7..3f30544a8 100644 --- a/include/global.h +++ b/include/global.h @@ -550,7 +550,7 @@ struct DayCareMailEtc struct DayCareMail data[2]; union { struct DayCareMailExtra rc; - u32 unk70[2]; + u32 steps[2]; } extra; }; diff --git a/include/pokemon.h b/include/pokemon.h index 594295b40..7d94dbb7d 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -93,6 +93,8 @@ #define MON_DATA_SPATK2 87 #define MON_DATA_SPDEF2 88 +#define MAX_LEVEL 100 + #define MON_MALE 0x00 #define MON_FEMALE 0xFE #define MON_GENDERLESS 0xFF @@ -510,7 +512,7 @@ void sub_803ADE8(struct Pokemon *mon, struct UnknownPokemonStruct *src); void sub_803AF78(struct Pokemon *mon, struct UnknownPokemonStruct *dest); u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon); void CalculateMonStats(struct Pokemon *mon); -void sub_803B4B4(struct Pokemon *src, struct Pokemon *dest); +void sub_803B4B4(const struct BoxPokemon *src, struct Pokemon *dest); u8 GetLevelFromMonExp(struct Pokemon *mon); u8 GetLevelFromBoxMonExp(struct BoxPokemon *boxMon); u16 GiveMoveToMon(struct Pokemon *mon, u16 move); diff --git a/src/daycare.c b/src/daycare.c index 64eac981e..2f30c1479 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -3,6 +3,7 @@ #include "pokemon.h" #include "species.h" #include "items.h" +#include "text.h" #include "string_util.h" #include "mail_data.h" #include "name_string_util.h" @@ -91,7 +92,7 @@ void Daycare_SendPokemon(struct Pokemon * mon, struct DayCareData * daycare_data } daycare_data->mons[empty_slot] = mon->box; BoxMonRestorePP(&daycare_data->mons[empty_slot]); - daycare_data->mail.extra.unk70[empty_slot] = 0; + daycare_data->mail.extra.steps[empty_slot] = 0; ZeroMonData(mon); party_compaction(); CalculatePlayerPartyCount(); @@ -102,18 +103,18 @@ void Daycare_SendPokemon_Special() Daycare_SendPokemon(gPlayerParty + gLastFieldPokeMenuOpened, &gSaveBlock1.daycareData); } -void sub_80417F4(u8 *); +void sub_80417F4(struct MailStruct *); -void sub_80414C0(struct BoxPokemon * daycare_data) +void sub_80414C0(struct DayCareData * daycare_data) { - u32 second_species; - if((GetBoxMonData(&daycare_data[1], MON_DATA_SPECIES) != 0) && ((second_species = GetBoxMonData(&daycare_data[0], MON_DATA_SPECIES)) == 0)){ - daycare_data[0] = daycare_data[1]; - ZeroBoxMonData(&daycare_data[1]); - memcpy(daycare_data + 2, (u8 *) (daycare_data + 1) + 0x88, 0x38); - *((u32 *)(daycare_data) + 68) = *((u32 *)(daycare_data) + 69); - *((u32 *)(daycare_data) + 69) = second_species; - sub_80417F4((u8 *) (daycare_data + 1) + 0x88); + if((GetBoxMonData(&daycare_data->mons[1], MON_DATA_SPECIES) != 0) && GetBoxMonData(&daycare_data->mons[0], MON_DATA_SPECIES) == 0) + { + daycare_data->mons[0] = daycare_data->mons[1]; + ZeroBoxMonData(&daycare_data->mons[1]); + daycare_data->mail.data[0] = daycare_data->mail.data[1]; + daycare_data->mail.extra.steps[0] = daycare_data->mail.extra.steps[1]; + daycare_data->mail.extra.steps[1] = 0; + sub_80417F4(&daycare_data->mail.data[1].mail); } } @@ -143,105 +144,33 @@ void sub_804151C(struct Pokemon * mon) CalculateMonStats(mon); } -__attribute__((naked)) -u16 sub_8041570(struct DayCareData * daycare_data, u8 a2){ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6,r7}\n\ - sub sp, 0x68\n\ - adds r5, r0, 0\n\ - lsls r1, 24\n\ - lsrs r4, r1, 24\n\ - lsls r7, r4, 2\n\ - adds r0, r7, r4\n\ - lsls r0, 4\n\ - adds r6, r5, r0\n\ - ldr r1, _08041640 @ =gStringVar1\n\ - adds r0, r6, 0\n\ - bl GetBoxMonNick\n\ - adds r0, r6, 0\n\ - movs r1, 0xB\n\ - bl GetBoxMonData\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r9, r0\n\ - adds r0, r6, 0\n\ - mov r1, sp\n\ - bl sub_803B4B4\n\ - mov r0, sp\n\ - movs r1, 0x38\n\ - bl GetMonData\n\ - cmp r0, 0x64\n\ - beq _080415D8\n\ - mov r0, sp\n\ - movs r1, 0x19\n\ - bl GetMonData\n\ - movs r2, 0x88\n\ - lsls r2, 1\n\ - adds r1, r5, r2\n\ - adds r1, r7\n\ - ldr r1, [r1]\n\ - adds r0, r1\n\ - str r0, [sp, 0x64]\n\ - add r2, sp, 0x64\n\ - mov r0, sp\n\ - movs r1, 0x19\n\ - bl SetMonData\n\ - mov r0, sp\n\ - bl sub_804151C\n\ -_080415D8:\n\ - ldr r0, _08041644 @ =gPlayerParty\n\ - movs r1, 0xFA\n\ - lsls r1, 1\n\ - adds r1, r0\n\ - mov r8, r1\n\ - mov r0, r8\n\ - mov r1, sp\n\ - movs r2, 0x64\n\ - bl memcpy\n\ - lsls r0, r4, 3\n\ - subs r0, r4\n\ - lsls r1, r0, 3\n\ - adds r0, r5, r1\n\ - adds r0, 0xC0\n\ - ldrh r0, [r0]\n\ - cmp r0, 0\n\ - beq _08041610\n\ - adds r4, r1, 0\n\ - adds r4, 0xA0\n\ - adds r4, r5, r4\n\ - mov r0, r8\n\ - adds r1, r4, 0\n\ - bl GiveMailToMon2\n\ - adds r0, r4, 0\n\ - bl sub_80417F4\n\ -_08041610:\n\ - bl party_compaction\n\ - adds r0, r6, 0\n\ - bl ZeroBoxMonData\n\ - movs r2, 0x88\n\ - lsls r2, 1\n\ - adds r0, r5, r2\n\ - adds r0, r7\n\ - movs r1, 0\n\ - str r1, [r0]\n\ - adds r0, r5, 0\n\ - bl sub_80414C0\n\ - bl CalculatePlayerPartyCount\n\ - mov r0, r9\n\ - add sp, 0x68\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_08041640: .4byte gStringVar1\n\ -_08041644: .4byte gPlayerParty\n\ - .syntax divided"); +u16 sub_8041570(struct DayCareData * daycare_data, u8 a2) +{ + u16 species; + u32 experience; + struct Pokemon pokemon; + + GetBoxMonNick(&daycare_data->mons[a2], gStringVar1); + species = GetBoxMonData(&daycare_data->mons[a2], MON_DATA_SPECIES); + sub_803B4B4(&daycare_data->mons[a2], &pokemon); + if (GetMonData(&pokemon, MON_DATA_LEVEL) != MAX_LEVEL) + { + experience = GetMonData(&pokemon, MON_DATA_EXP) + daycare_data->mail.extra.steps[a2]; + SetMonData(&pokemon, MON_DATA_EXP, (u8 *)&experience); + sub_804151C(&pokemon); + } + gPlayerParty[PARTY_SIZE - 1] = pokemon; + if (daycare_data->mail.data[a2].mail.itemId) + { + GiveMailToMon2(&gPlayerParty[PARTY_SIZE - 1], &daycare_data->mail.data[a2].mail); + sub_80417F4(&daycare_data->mail.data[a2].mail); + } + party_compaction(); + ZeroBoxMonData(&daycare_data->mons[a2]); + daycare_data->mail.extra.steps[a2] = 0; + sub_80414C0(daycare_data); + CalculatePlayerPartyCount(); + return species; } extern u8 gSpecialVar_0x8004; diff --git a/src/pokemon_1.c b/src/pokemon_1.c index c65bfa185..5cfd2c794 100644 --- a/src/pokemon_1.c +++ b/src/pokemon_1.c @@ -467,10 +467,10 @@ void CalculateMonStats(struct Pokemon *mon) SetMonData(mon, MON_DATA_HP, (u8 *)¤tHP); } -void sub_803B4B4(struct Pokemon *src, struct Pokemon *dest) +void sub_803B4B4(const struct BoxPokemon *src, struct Pokemon *dest) { u32 value = 0; - memcpy(&dest->box, &src->box, sizeof(struct BoxPokemon)); + dest->box = *src; SetMonData(dest, MON_DATA_STATUS, (u8 *)&value); SetMonData(dest, MON_DATA_HP, (u8 *)&value); SetMonData(dest, MON_DATA_MAX_HP, (u8 *)&value); -- cgit v1.2.3 From 710346afa3c90682e123ebd981fb8c8ffb30784f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 29 Aug 2017 22:57:04 -0400 Subject: sub_80416A0 --- asm/daycare.s | 37 ------------------------------------- src/daycare.c | 33 +++++++++++++++++++++------------ 2 files changed, 21 insertions(+), 49 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index a0ea9124a..50f1eee69 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,43 +6,6 @@ .text - thumb_func_start sub_80416A0 -sub_80416A0: @ 80416A0 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r5, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - lsls r0, r4, 2 - mov r8, r0 - add r4, r8 - lsls r4, 4 - adds r4, r5, r4 - adds r0, r4, 0 - bl GetLevelFromBoxMonExp - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - movs r0, 0x88 - lsls r0, 1 - adds r5, r0 - add r5, r8 - ldr r1, [r5] - adds r0, r4, 0 - bl Daycare_GetLevelAfterSteps - lsls r0, 24 - lsrs r0, 24 - subs r0, r6 - lsls r0, 24 - lsrs r0, 24 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80416A0 - thumb_func_start sub_80416E8 sub_80416E8: @ 80416E8 push {r4-r6,lr} diff --git a/src/daycare.c b/src/daycare.c index 2f30c1479..f067ec8ec 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -1,6 +1,7 @@ #include "global.h" #include "daycare.h" #include "pokemon.h" +#include "event_data.h" #include "species.h" #include "items.h" #include "text.h" @@ -144,37 +145,35 @@ void sub_804151C(struct Pokemon * mon) CalculateMonStats(mon); } -u16 sub_8041570(struct DayCareData * daycare_data, u8 a2) +u16 sub_8041570(struct DayCareData * daycare_data, u8 slot) { u16 species; u32 experience; struct Pokemon pokemon; - GetBoxMonNick(&daycare_data->mons[a2], gStringVar1); - species = GetBoxMonData(&daycare_data->mons[a2], MON_DATA_SPECIES); - sub_803B4B4(&daycare_data->mons[a2], &pokemon); + GetBoxMonNick(&daycare_data->mons[slot], gStringVar1); + species = GetBoxMonData(&daycare_data->mons[slot], MON_DATA_SPECIES); + sub_803B4B4(&daycare_data->mons[slot], &pokemon); if (GetMonData(&pokemon, MON_DATA_LEVEL) != MAX_LEVEL) { - experience = GetMonData(&pokemon, MON_DATA_EXP) + daycare_data->mail.extra.steps[a2]; + experience = GetMonData(&pokemon, MON_DATA_EXP) + daycare_data->mail.extra.steps[slot]; SetMonData(&pokemon, MON_DATA_EXP, (u8 *)&experience); sub_804151C(&pokemon); } gPlayerParty[PARTY_SIZE - 1] = pokemon; - if (daycare_data->mail.data[a2].mail.itemId) + if (daycare_data->mail.data[slot].mail.itemId) { - GiveMailToMon2(&gPlayerParty[PARTY_SIZE - 1], &daycare_data->mail.data[a2].mail); - sub_80417F4(&daycare_data->mail.data[a2].mail); + GiveMailToMon2(&gPlayerParty[PARTY_SIZE - 1], &daycare_data->mail.data[slot].mail); + sub_80417F4(&daycare_data->mail.data[slot].mail); } party_compaction(); - ZeroBoxMonData(&daycare_data->mons[a2]); - daycare_data->mail.extra.steps[a2] = 0; + ZeroBoxMonData(&daycare_data->mons[slot]); + daycare_data->mail.extra.steps[slot] = 0; sub_80414C0(daycare_data); CalculatePlayerPartyCount(); return species; } -extern u8 gSpecialVar_0x8004; - u16 sub_8041648() { return sub_8041570(&gSaveBlock1.daycareData, gSpecialVar_0x8004); @@ -186,3 +185,13 @@ u8 Daycare_GetLevelAfterSteps(struct BoxPokemon * mon, u32 steps){ SetBoxMonData(&temp, MON_DATA_EXP, (u8 *) &new_exp); return GetLevelFromBoxMonExp(&temp); } + +u8 sub_80416A0(struct DayCareData *daycareData, u8 slot) +{ + u8 levelBefore; + u8 levelAfter; + + levelBefore = GetLevelFromBoxMonExp(&daycareData->mons[slot]); + levelAfter = Daycare_GetLevelAfterSteps(&daycareData->mons[slot], daycareData->mail.extra.steps[slot]); + return levelAfter - levelBefore; +} -- cgit v1.2.3 From 93809c58cfb8279f4faa086e8c5f8fd65a368fc3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 29 Aug 2017 23:01:28 -0400 Subject: sub_80416E8 --- asm/daycare.s | 32 -------------------------------- src/daycare.c | 8 ++++++++ 2 files changed, 8 insertions(+), 32 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index 50f1eee69..59c77d399 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,38 +6,6 @@ .text - thumb_func_start sub_80416E8 -sub_80416E8: @ 80416E8 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - adds r1, r4, 0 - bl sub_80416A0 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 4 - adds r6, r0 - ldr r1, _08041720 @ =gStringVar1 - adds r0, r6, 0 - bl GetBoxMonNick - ldr r0, _08041724 @ =gStringVar2 - adds r1, r5, 0 - movs r2, 0 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - adds r0, r5, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08041720: .4byte gStringVar1 -_08041724: .4byte gStringVar2 - thumb_func_end sub_80416E8 - thumb_func_start sub_8041728 sub_8041728: @ 8041728 push {r4-r6,lr} diff --git a/src/daycare.c b/src/daycare.c index f067ec8ec..bb503b041 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -195,3 +195,11 @@ u8 sub_80416A0(struct DayCareData *daycareData, u8 slot) levelAfter = Daycare_GetLevelAfterSteps(&daycareData->mons[slot], daycareData->mail.extra.steps[slot]); return levelAfter - levelBefore; } + +u8 sub_80416E8(struct DayCareData *dayCareData, u8 slot) +{ + u8 levelDelta = sub_80416A0(dayCareData, slot); + GetBoxMonNick(&dayCareData->mons[slot], gStringVar1); + ConvertIntToDecimalStringN(gStringVar2, levelDelta, STR_CONV_MODE_LEFT_ALIGN, 2); + return levelDelta; +} -- cgit v1.2.3 From b700afb37edcd53b2190fdbae05a4236a60ff46d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 29 Aug 2017 23:08:06 -0400 Subject: sub_8041728 --- asm/daycare.s | 36 ------------------------------------ src/daycare.c | 11 +++++++++++ 2 files changed, 11 insertions(+), 36 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index 59c77d399..7ed5009bc 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,42 +6,6 @@ .text - thumb_func_start sub_8041728 -sub_8041728: @ 8041728 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - adds r1, r4, 0 - bl sub_80416A0 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 4 - adds r6, r0 - ldr r1, _08041768 @ =gStringVar1 - adds r0, r6, 0 - bl GetBoxMonNick - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - adds r4, 0x64 - ldr r0, _0804176C @ =gStringVar2 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x5 - bl ConvertIntToDecimalStringN - adds r0, r4, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08041768: .4byte gStringVar1 -_0804176C: .4byte gStringVar2 - thumb_func_end sub_8041728 - thumb_func_start sub_8041770 sub_8041770: @ 8041770 push {lr} diff --git a/src/daycare.c b/src/daycare.c index bb503b041..77df3de23 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -203,3 +203,14 @@ u8 sub_80416E8(struct DayCareData *dayCareData, u8 slot) ConvertIntToDecimalStringN(gStringVar2, levelDelta, STR_CONV_MODE_LEFT_ALIGN, 2); return levelDelta; } + +int sub_8041728(struct DayCareData *dayCareData, u8 slot) +{ + int cost; + + u8 levelDelta = sub_80416A0(dayCareData, slot); + GetBoxMonNick(&dayCareData->mons[slot], gStringVar1); + cost = 100 + 100 * levelDelta; + ConvertIntToDecimalStringN(gStringVar2, cost, STR_CONV_MODE_LEFT_ALIGN, 5); + return cost; +} -- cgit v1.2.3 From c3f70c933c0a32d70ce1a471cc66833b88ce03f1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 29 Aug 2017 23:09:53 -0400 Subject: sub_8041770 --- asm/daycare.s | 17 ----------------- src/daycare.c | 9 +++++++-- 2 files changed, 7 insertions(+), 19 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index 7ed5009bc..e1ccebec9 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,23 +6,6 @@ .text - thumb_func_start sub_8041770 -sub_8041770: @ 8041770 - push {lr} - ldr r0, _08041784 @ =gSaveBlock1 + 0x2F9C - ldr r1, _08041788 @ =gSpecialVar_0x8004 - ldrb r1, [r1] - bl sub_8041728 - ldr r1, _0804178C @ =gSpecialVar_0x8005 - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08041784: .4byte gSaveBlock1 + 0x2F9C -_08041788: .4byte gSpecialVar_0x8004 -_0804178C: .4byte gSpecialVar_0x8005 - thumb_func_end sub_8041770 - thumb_func_start sub_8041790 sub_8041790: @ 8041790 lsls r0, 16 diff --git a/src/daycare.c b/src/daycare.c index 77df3de23..2a66548cf 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -204,9 +204,9 @@ u8 sub_80416E8(struct DayCareData *dayCareData, u8 slot) return levelDelta; } -int sub_8041728(struct DayCareData *dayCareData, u8 slot) +u16 sub_8041728(struct DayCareData *dayCareData, u8 slot) { - int cost; + u16 cost; u8 levelDelta = sub_80416A0(dayCareData, slot); GetBoxMonNick(&dayCareData->mons[slot], gStringVar1); @@ -214,3 +214,8 @@ int sub_8041728(struct DayCareData *dayCareData, u8 slot) ConvertIntToDecimalStringN(gStringVar2, cost, STR_CONV_MODE_LEFT_ALIGN, 5); return cost; } + +void sub_8041770(void) +{ + gSpecialVar_0x8005 = sub_8041728(&gSaveBlock1.daycareData, gSpecialVar_0x8004); +} -- cgit v1.2.3 From 99d478f1d392729a421c4d50ad074f49501857e3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 29 Aug 2017 23:18:46 -0400 Subject: Through sub_80417B8 --- asm/daycare.s | 53 ----------------------------------------------------- include/daycare.h | 2 +- src/daycare.c | 13 +++++++++++++ 3 files changed, 14 insertions(+), 54 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index e1ccebec9..7f62cc9a9 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,59 +6,6 @@ .text - thumb_func_start sub_8041790 -sub_8041790: @ 8041790 - lsls r0, 16 - lsrs r0, 16 - ldr r2, _080417AC @ =gSaveBlock1 - ldr r1, _080417B0 @ =0x000030ac - adds r3, r2, r1 - ldr r1, [r3] - adds r1, r0 - str r1, [r3] - ldr r1, _080417B4 @ =0x000030b0 - adds r2, r1 - ldr r1, [r2] - adds r1, r0 - str r1, [r2] - bx lr - .align 2, 0 -_080417AC: .4byte gSaveBlock1 -_080417B0: .4byte 0x000030ac -_080417B4: .4byte 0x000030b0 - thumb_func_end sub_8041790 - - thumb_func_start sub_80417B8 -sub_80417B8: @ 80417B8 - push {r4,r5,lr} - ldr r5, _080417D8 @ =gSpecialVar_0x8004 - ldrh r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - ldr r4, _080417DC @ =gSaveBlock1 + 0x2F9C - adds r0, r4 - movs r1, 0xB - bl GetBoxMonData - cmp r0, 0 - bne _080417E0 - movs r0, 0 - b _080417EC - .align 2, 0 -_080417D8: .4byte gSpecialVar_0x8004 -_080417DC: .4byte gSaveBlock1 + 0x2F9C -_080417E0: - ldrb r1, [r5] - adds r0, r4, 0 - bl sub_80416E8 - lsls r0, 24 - lsrs r0, 24 -_080417EC: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80417B8 - thumb_func_start sub_80417F4 sub_80417F4: @ 80417F4 push {lr} diff --git a/include/daycare.h b/include/daycare.h index 23ddb1cdd..59d10e18f 100644 --- a/include/daycare.h +++ b/include/daycare.h @@ -3,7 +3,7 @@ u8 Daycare_CountPokemon(struct BoxPokemon *); void sub_8041324(struct BoxPokemon *, struct DayCareMailEtc *); -void sub_8041790(int i); +void sub_8041790(u16 i); u16 sub_8041870(u16); void sub_8041940(void); void sub_8041950(void); diff --git a/src/daycare.c b/src/daycare.c index 2a66548cf..fc5e9a0d0 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -219,3 +219,16 @@ void sub_8041770(void) { gSpecialVar_0x8005 = sub_8041728(&gSaveBlock1.daycareData, gSpecialVar_0x8004); } + +void sub_8041790(u16 i) +{ + gSaveBlock1.daycareData.mail.extra.steps[0] += i; + gSaveBlock1.daycareData.mail.extra.steps[1] += i; +} + +u8 sub_80417B8(void) +{ + if (GetBoxMonData(&gSaveBlock1.daycareData.mons[gSpecialVar_0x8004], MON_DATA_SPECIES) != 0) + return sub_80416E8(&gSaveBlock1.daycareData, gSpecialVar_0x8004); + return 0; +} -- cgit v1.2.3 From d3b3cd6568afe59521c5fbc8ff878d3cb06134c9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 29 Aug 2017 23:38:07 -0400 Subject: sub_80417F4 --- asm/daycare.s | 28 ---------------------------- src/daycare.c | 22 +++++++++++++++++++--- 2 files changed, 19 insertions(+), 31 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index 7f62cc9a9..5377e4909 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,34 +6,6 @@ .text - thumb_func_start sub_80417F4 -sub_80417F4: @ 80417F4 - push {lr} - movs r3, 0 - movs r2, 0x7 - adds r1, r0, 0 - adds r1, 0x2B -_080417FE: - strb r3, [r1] - subs r1, 0x1 - subs r2, 0x1 - cmp r2, 0 - bge _080417FE - adds r2, r0, 0 - adds r2, 0x2C - movs r3, 0 - adds r1, r0, 0 - adds r1, 0x36 -_08041812: - strb r3, [r1] - subs r1, 0x1 - cmp r1, r2 - bge _08041812 - bl ClearMailStruct - pop {r0} - bx r0 - thumb_func_end sub_80417F4 - thumb_func_start unref_sub_8041824 unref_sub_8041824: @ 8041824 push {r4-r6,lr} diff --git a/src/daycare.c b/src/daycare.c index fc5e9a0d0..d7ded8721 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -104,7 +104,7 @@ void Daycare_SendPokemon_Special() Daycare_SendPokemon(gPlayerParty + gLastFieldPokeMenuOpened, &gSaveBlock1.daycareData); } -void sub_80417F4(struct MailStruct *); +void sub_80417F4(struct DayCareMail *); void sub_80414C0(struct DayCareData * daycare_data) { @@ -115,7 +115,7 @@ void sub_80414C0(struct DayCareData * daycare_data) daycare_data->mail.data[0] = daycare_data->mail.data[1]; daycare_data->mail.extra.steps[0] = daycare_data->mail.extra.steps[1]; daycare_data->mail.extra.steps[1] = 0; - sub_80417F4(&daycare_data->mail.data[1].mail); + sub_80417F4(&daycare_data->mail.data[1]); } } @@ -164,7 +164,7 @@ u16 sub_8041570(struct DayCareData * daycare_data, u8 slot) if (daycare_data->mail.data[slot].mail.itemId) { GiveMailToMon2(&gPlayerParty[PARTY_SIZE - 1], &daycare_data->mail.data[slot].mail); - sub_80417F4(&daycare_data->mail.data[slot].mail); + sub_80417F4(&daycare_data->mail.data[slot]); } party_compaction(); ZeroBoxMonData(&daycare_data->mons[slot]); @@ -232,3 +232,19 @@ u8 sub_80417B8(void) return sub_80416E8(&gSaveBlock1.daycareData, gSpecialVar_0x8004); return 0; } + +void sub_80417F4(struct DayCareMail *mail) +{ + u8 zero; + u8 *names; + u8 *names2; + int i; + zero = 0; + for (i = 7, names = mail->names + 7; i >= 0; i --) + *names-- = zero; + names2 = mail->names + 8; + zero = 0; + names = mail->names + 18; + do *names-- = zero; while ((int)names >= (int)names2); + ClearMailStruct(&mail->mail); +} -- cgit v1.2.3 From 885aa7d1b875de62569319f28a5d2836d5c366e6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 30 Aug 2017 08:15:03 -0400 Subject: unref_sub_8041824 --- asm/daycare.s | 41 ----------------------------------------- include/global.h | 2 +- src/daycare.c | 13 +++++++++++++ 3 files changed, 14 insertions(+), 42 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index 5377e4909..1882ad61e 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,47 +6,6 @@ .text - thumb_func_start unref_sub_8041824 -unref_sub_8041824: @ 8041824 - push {r4-r6,lr} - adds r6, r0, 0 - movs r5, 0 -_0804182A: - lsls r4, r5, 2 - adds r0, r4, r5 - lsls r0, 4 - adds r0, r6, r0 - bl ZeroBoxMonData - movs r1, 0x88 - lsls r1, 1 - adds r0, r6, r1 - adds r0, r4 - movs r4, 0 - str r4, [r0] - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 3 - adds r0, 0xA0 - adds r0, r6, r0 - bl sub_80417F4 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x1 - bls _0804182A - movs r2, 0x8C - lsls r2, 1 - adds r0, r6, r2 - movs r1, 0 - strh r4, [r0] - adds r2, 0x2 - adds r0, r6, r2 - strb r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end unref_sub_8041824 - thumb_func_start sub_8041870 sub_8041870: @ 8041870 push {r4-r7,lr} diff --git a/include/global.h b/include/global.h index 3f30544a8..ee54007b2 100644 --- a/include/global.h +++ b/include/global.h @@ -557,7 +557,7 @@ struct DayCareMailEtc struct DayCareData { struct BoxPokemon mons[2]; struct DayCareMailEtc mail; - u8 unk_118[2]; + u16 unk_118; u8 unk_11a; u8 unk_11b; }; diff --git a/src/daycare.c b/src/daycare.c index d7ded8721..3f65c5bea 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -248,3 +248,16 @@ void sub_80417F4(struct DayCareMail *mail) do *names-- = zero; while ((int)names >= (int)names2); ClearMailStruct(&mail->mail); } + +void unref_sub_8041824(struct DayCareData *dayCareData) +{ + u8 slot; + for (slot = 0; slot < ARRAY_COUNT(dayCareData->mons); slot ++) + { + ZeroBoxMonData(&dayCareData->mons[slot]); + dayCareData->mail.extra.steps[slot] = 0; + sub_80417F4(&dayCareData->mail.data[slot]); + } + dayCareData->unk_118 = 0; + dayCareData->unk_11a = 0; +} -- cgit v1.2.3 From 448df1097658cab72dca07b48d205acb0c7e7164 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 30 Aug 2017 08:43:32 -0400 Subject: sub_8041870 (find pre-evo) --- asm/daycare.s | 73 ----------------------------------------------------------- src/daycare.c | 27 ++++++++++++++++++++++ 2 files changed, 27 insertions(+), 73 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index 1882ad61e..764069e67 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,79 +6,6 @@ .text - thumb_func_start sub_8041870 -sub_8041870: @ 8041870 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - lsrs r2, r0, 16 - movs r0, 0 - mov r8, r0 - ldr r0, _0804189C @ =gEvolutionTable - mov r12, r0 -_08041882: - movs r7, 0 - movs r6, 0x1 - movs r4, 0x80 - lsls r4, 9 - movs r5, 0x28 - mov r3, r12 - adds r3, 0x28 -_08041890: - movs r1, 0 - ldrh r0, [r3, 0x4] - cmp r0, r2 - bne _080418A0 - lsrs r2, r4, 16 - b _080418CC - .align 2, 0 -_0804189C: .4byte gEvolutionTable -_080418A0: - adds r1, 0x1 - cmp r1, 0x4 - bgt _080418B6 - lsls r0, r1, 3 - adds r0, r5 - add r0, r12 - ldrh r0, [r0, 0x4] - cmp r0, r2 - bne _080418A0 - lsrs r2, r4, 16 - movs r7, 0x1 -_080418B6: - cmp r7, 0 - bne _080418CC - movs r0, 0x80 - lsls r0, 9 - adds r4, r0 - adds r5, 0x28 - adds r3, 0x28 - adds r6, 0x1 - ldr r0, _080418EC @ =0x0000019b - cmp r6, r0 - ble _08041890 -_080418CC: - movs r0, 0xCE - lsls r0, 1 - cmp r6, r0 - beq _080418DE - movs r0, 0x1 - add r8, r0 - mov r0, r8 - cmp r0, 0x4 - ble _08041882 -_080418DE: - adds r0, r2, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080418EC: .4byte 0x0000019b - thumb_func_end sub_8041870 - thumb_func_start sub_80418F0 sub_80418F0: @ 80418F0 push {r4,lr} diff --git a/src/daycare.c b/src/daycare.c index 3f65c5bea..dc1300182 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -261,3 +261,30 @@ void unref_sub_8041824(struct DayCareData *dayCareData) dayCareData->unk_118 = 0; dayCareData->unk_11a = 0; } + +u16 sub_8041870(u16 species) +{ + int i, j, k; + bool8 found; + for (i = 0; i < 5; i ++) + { + found = FALSE; + for (j = 1; j < NUM_SPECIES; j ++) + { + for (k = 0; k < 5; k ++) + { + if (gEvolutionTable[j].evolutions[k].targetSpecies == species) + { + species = j; + found = TRUE; + break; + } + } + if (found) + break; + } + if (j == 412) + break; + } + return species; +} -- cgit v1.2.3 From 2286c4306f67a091e48eac724536e7853117f0e0 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 30 Aug 2017 09:20:21 -0400 Subject: Fix building --- src/mori_debug_menu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mori_debug_menu.c b/src/mori_debug_menu.c index abb09d889..df3446d3e 100644 --- a/src/mori_debug_menu.c +++ b/src/mori_debug_menu.c @@ -117,7 +117,7 @@ s8 MoriDebugMenu_BreedEgg(void) SetMonData(&gPlayerParty[loopCounter], MON_DATA_FRIENDSHIP, &friendship); } } - gSaveBlock1.daycareData.extra.unk_2 = -3; + gSaveBlock1.daycareData.unk_11a = -3; CloseMenu(); return 1; } -- cgit v1.2.3 From b9cf26cd89505d5340343adeb41312012714fd0a Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 30 Aug 2017 09:24:57 -0400 Subject: sub_80418F0 --- asm/daycare.s | 23 ----------------------- src/daycare.c | 7 +++++++ 2 files changed, 7 insertions(+), 23 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index 764069e67..c30582c2e 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,29 +6,6 @@ .text - thumb_func_start sub_80418F0 -sub_80418F0: @ 80418F0 - push {r4,lr} - adds r4, r0, 0 - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _08041918 @ =0x0000fffe - bl __umodsi3 - adds r0, 0x1 - movs r1, 0x8C - lsls r1, 1 - adds r4, r1 - strh r0, [r4] - movs r0, 0x86 - bl FlagSet - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08041918: .4byte 0x0000fffe - thumb_func_end sub_80418F0 - thumb_func_start sub_804191C sub_804191C: @ 804191C push {r4,lr} diff --git a/src/daycare.c b/src/daycare.c index dc1300182..3fc1ecd99 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -9,6 +9,7 @@ #include "mail_data.h" #include "name_string_util.h" #include "pokemon_storage_system.h" +#include "rng.h" extern u8 gLastFieldPokeMenuOpened; @@ -288,3 +289,9 @@ u16 sub_8041870(u16 species) } return species; } + +void sub_80418F0(struct DayCareData *dayCareData) +{ + dayCareData->unk_118 = (Random() % 0xfffe) + 1; + FlagSet(0x86); +} -- cgit v1.2.3 From 7755869cd2b521cb0a608f5f71c8a272e81cb214 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 30 Aug 2017 09:43:48 -0400 Subject: Convert egg moves and daycare strings/pointers to C objects --- data/daycare.s | 17 - data/egg_moves.inc | 1306 ------------------------------------- include/data/pokemon/egg_moves.h | 1318 ++++++++++++++++++++++++++++++++++++++ ld_script.txt | 2 +- src/daycare.c | 12 + 5 files changed, 1331 insertions(+), 1324 deletions(-) delete mode 100644 data/daycare.s delete mode 100644 data/egg_moves.inc create mode 100644 include/data/pokemon/egg_moves.h diff --git a/data/daycare.s b/data/daycare.s deleted file mode 100644 index 92eb4637e..000000000 --- a/data/daycare.s +++ /dev/null @@ -1,17 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -@ 82091DC - .include "data/egg_moves.inc" - - .align 2 -gUnknown_08209AC4:: @ 8209AC4 - .4byte DaycareText_GetAlongVeryWell - .4byte DaycareText_GetAlong - .4byte DaycareText_DontLikeOther - .4byte DaycareText_PlayOther - -gUnknown_08209AD4:: @ 8209AD4 - .string "タマゴ$" diff --git a/data/egg_moves.inc b/data/egg_moves.inc deleted file mode 100644 index e684e04ce..000000000 --- a/data/egg_moves.inc +++ /dev/null @@ -1,1306 +0,0 @@ - .align 2 -gEggMoves:: @ 82091DC - egg_moves_begin SPECIES_BULBASAUR - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_SKULL_BASH - .2byte MOVE_SAFEGUARD - .2byte MOVE_CHARM - .2byte MOVE_PETAL_DANCE - .2byte MOVE_MAGICAL_LEAF - .2byte MOVE_GRASS_WHISTLE - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_CHARMANDER - .2byte MOVE_BELLY_DRUM - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_BITE - .2byte MOVE_OUTRAGE - .2byte MOVE_BEAT_UP - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_DRAGON_DANCE - - egg_moves_begin SPECIES_SQUIRTLE - .2byte MOVE_MIRROR_COAT - .2byte MOVE_HAZE - .2byte MOVE_MIST - .2byte MOVE_FORESIGHT - .2byte MOVE_FLAIL - .2byte MOVE_REFRESH - .2byte MOVE_MUD_SPORT - .2byte MOVE_YAWN - - egg_moves_begin SPECIES_PIDGEY - .2byte MOVE_PURSUIT - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_FORESIGHT - .2byte MOVE_STEEL_WING - .2byte MOVE_AIR_CUTTER - - egg_moves_begin SPECIES_RATTATA - .2byte MOVE_SCREECH - .2byte MOVE_FLAME_WHEEL - .2byte MOVE_FURY_SWIPES - .2byte MOVE_BITE - .2byte MOVE_COUNTER - .2byte MOVE_REVERSAL - .2byte MOVE_UPROAR - .2byte MOVE_SWAGGER - - egg_moves_begin SPECIES_SPEAROW - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_FALSE_SWIPE - .2byte MOVE_SCARY_FACE - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_TRI_ATTACK - .2byte MOVE_ASTONISH - .2byte MOVE_SKY_ATTACK - - egg_moves_begin SPECIES_EKANS - .2byte MOVE_PURSUIT - .2byte MOVE_SLAM - .2byte MOVE_SPITE - .2byte MOVE_BEAT_UP - .2byte MOVE_POISON_FANG - - egg_moves_begin SPECIES_SANDSHREW - .2byte MOVE_FLAIL - .2byte MOVE_SAFEGUARD - .2byte MOVE_COUNTER - .2byte MOVE_RAPID_SPIN - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_METAL_CLAW - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_CRUSH_CLAW - - egg_moves_begin SPECIES_NIDORAN_F - .2byte MOVE_SUPERSONIC - .2byte MOVE_DISABLE - .2byte MOVE_TAKE_DOWN - .2byte MOVE_FOCUS_ENERGY - .2byte MOVE_CHARM - .2byte MOVE_COUNTER - .2byte MOVE_BEAT_UP - - egg_moves_begin SPECIES_NIDORAN_M - .2byte MOVE_COUNTER - .2byte MOVE_DISABLE - .2byte MOVE_SUPERSONIC - .2byte MOVE_TAKE_DOWN - .2byte MOVE_AMNESIA - .2byte MOVE_CONFUSION - .2byte MOVE_BEAT_UP - - egg_moves_begin SPECIES_VULPIX - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_HYPNOSIS - .2byte MOVE_FLAIL - .2byte MOVE_SPITE - .2byte MOVE_DISABLE - .2byte MOVE_HOWL - .2byte MOVE_PSYCH_UP - .2byte MOVE_HEAT_WAVE - - egg_moves_begin SPECIES_ZUBAT - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_PURSUIT - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_GUST - .2byte MOVE_WHIRLWIND - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_ODDISH - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_RAZOR_LEAF - .2byte MOVE_FLAIL - .2byte MOVE_SYNTHESIS - .2byte MOVE_CHARM - .2byte MOVE_INGRAIN - - egg_moves_begin SPECIES_PARAS - .2byte MOVE_FALSE_SWIPE - .2byte MOVE_SCREECH - .2byte MOVE_COUNTER - .2byte MOVE_PSYBEAM - .2byte MOVE_FLAIL - .2byte MOVE_SWEET_SCENT - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_PURSUIT - - egg_moves_begin SPECIES_VENONAT - .2byte MOVE_BATON_PASS - .2byte MOVE_SCREECH - .2byte MOVE_GIGA_DRAIN - .2byte MOVE_SIGNAL_BEAM - - egg_moves_begin SPECIES_DIGLETT - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_SCREECH - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_PURSUIT - .2byte MOVE_BEAT_UP - .2byte MOVE_UPROAR - .2byte MOVE_ROCK_SLIDE - - egg_moves_begin SPECIES_MEOWTH - .2byte MOVE_SPITE - .2byte MOVE_CHARM - .2byte MOVE_HYPNOSIS - .2byte MOVE_AMNESIA - .2byte MOVE_PSYCH_UP - .2byte MOVE_ASSIST - - egg_moves_begin SPECIES_PSYDUCK - .2byte MOVE_HYPNOSIS - .2byte MOVE_PSYBEAM - .2byte MOVE_FORESIGHT - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_PSYCHIC - .2byte MOVE_CROSS_CHOP - .2byte MOVE_REFRESH - - egg_moves_begin SPECIES_MANKEY - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_FORESIGHT - .2byte MOVE_MEDITATE - .2byte MOVE_COUNTER - .2byte MOVE_REVERSAL - .2byte MOVE_BEAT_UP - .2byte MOVE_REVENGE - .2byte MOVE_SMELLING_SALT - - egg_moves_begin SPECIES_GROWLITHE - .2byte MOVE_BODY_SLAM - .2byte MOVE_SAFEGUARD - .2byte MOVE_CRUNCH - .2byte MOVE_THRASH - .2byte MOVE_FIRE_SPIN - .2byte MOVE_HOWL - .2byte MOVE_HEAT_WAVE - - egg_moves_begin SPECIES_POLIWAG - .2byte MOVE_MIST - .2byte MOVE_SPLASH - .2byte MOVE_BUBBLE_BEAM - .2byte MOVE_HAZE - .2byte MOVE_MIND_READER - .2byte MOVE_WATER_SPORT - .2byte MOVE_ICE_BALL - - egg_moves_begin SPECIES_ABRA - .2byte MOVE_ENCORE - .2byte MOVE_BARRIER - .2byte MOVE_KNOCK_OFF - .2byte MOVE_FIRE_PUNCH - .2byte MOVE_THUNDER_PUNCH - .2byte MOVE_ICE_PUNCH - - egg_moves_begin SPECIES_MACHOP - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_MEDITATE - .2byte MOVE_ROLLING_KICK - .2byte MOVE_ENCORE - .2byte MOVE_SMELLING_SALT - .2byte MOVE_COUNTER - .2byte MOVE_ROCK_SLIDE - - egg_moves_begin SPECIES_BELLSPROUT - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_ENCORE - .2byte MOVE_REFLECT - .2byte MOVE_SYNTHESIS - .2byte MOVE_LEECH_LIFE - .2byte MOVE_INGRAIN - .2byte MOVE_MAGICAL_LEAF - - egg_moves_begin SPECIES_TENTACOOL - .2byte MOVE_AURORA_BEAM - .2byte MOVE_MIRROR_COAT - .2byte MOVE_RAPID_SPIN - .2byte MOVE_HAZE - .2byte MOVE_SAFEGUARD - .2byte MOVE_CONFUSE_RAY - - egg_moves_begin SPECIES_GEODUDE - .2byte MOVE_MEGA_PUNCH - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_BLOCK - - egg_moves_begin SPECIES_PONYTA - .2byte MOVE_FLAME_WHEEL - .2byte MOVE_THRASH - .2byte MOVE_DOUBLE_KICK - .2byte MOVE_HYPNOSIS - .2byte MOVE_CHARM - .2byte MOVE_DOUBLE_EDGE - - egg_moves_begin SPECIES_SLOWPOKE - .2byte MOVE_SAFEGUARD - .2byte MOVE_BELLY_DRUM - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_STOMP - .2byte MOVE_MUD_SPORT - .2byte MOVE_SLEEP_TALK - .2byte MOVE_SNORE - - egg_moves_begin SPECIES_FARFETCHD - .2byte MOVE_STEEL_WING - .2byte MOVE_FORESIGHT - .2byte MOVE_MIRROR_MOVE - .2byte MOVE_GUST - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_FLAIL - .2byte MOVE_FEATHER_DANCE - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_DODUO - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_SUPERSONIC - .2byte MOVE_HAZE - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_FLAIL - .2byte MOVE_ENDEAVOR - - egg_moves_begin SPECIES_SEEL - .2byte MOVE_LICK - .2byte MOVE_PERISH_SONG - .2byte MOVE_DISABLE - .2byte MOVE_HORN_DRILL - .2byte MOVE_SLAM - .2byte MOVE_ENCORE - .2byte MOVE_FAKE_OUT - .2byte MOVE_ICICLE_SPEAR - - egg_moves_begin SPECIES_GRIMER - .2byte MOVE_HAZE - .2byte MOVE_MEAN_LOOK - .2byte MOVE_LICK - .2byte MOVE_IMPRISON - .2byte MOVE_CURSE - .2byte MOVE_SHADOW_PUNCH - .2byte MOVE_EXPLOSION - - egg_moves_begin SPECIES_SHELLDER - .2byte MOVE_BUBBLE_BEAM - .2byte MOVE_TAKE_DOWN - .2byte MOVE_BARRIER - .2byte MOVE_RAPID_SPIN - .2byte MOVE_SCREECH - .2byte MOVE_ICICLE_SPEAR - - egg_moves_begin SPECIES_GASTLY - .2byte MOVE_PSYWAVE - .2byte MOVE_PERISH_SONG - .2byte MOVE_HAZE - .2byte MOVE_ASTONISH - .2byte MOVE_WILL_O_WISP - .2byte MOVE_GRUDGE - .2byte MOVE_EXPLOSION - - egg_moves_begin SPECIES_ONIX - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_FLAIL - .2byte MOVE_EXPLOSION - .2byte MOVE_BLOCK - - egg_moves_begin SPECIES_DROWZEE - .2byte MOVE_BARRIER - .2byte MOVE_ASSIST - .2byte MOVE_ROLE_PLAY - .2byte MOVE_FIRE_PUNCH - .2byte MOVE_THUNDER_PUNCH - .2byte MOVE_ICE_PUNCH - - egg_moves_begin SPECIES_KRABBY - .2byte MOVE_DIG - .2byte MOVE_HAZE - .2byte MOVE_AMNESIA - .2byte MOVE_FLAIL - .2byte MOVE_SLAM - .2byte MOVE_KNOCK_OFF - .2byte MOVE_SWORDS_DANCE - - egg_moves_begin SPECIES_EXEGGCUTE - .2byte MOVE_SYNTHESIS - .2byte MOVE_MOONLIGHT - .2byte MOVE_REFLECT - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_PSYCH_UP - .2byte MOVE_INGRAIN - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_CUBONE - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_BELLY_DRUM - .2byte MOVE_SCREECH - .2byte MOVE_SKULL_BASH - .2byte MOVE_PERISH_SONG - .2byte MOVE_SWORDS_DANCE - - egg_moves_begin SPECIES_LICKITUNG - .2byte MOVE_BELLY_DRUM - .2byte MOVE_MAGNITUDE - .2byte MOVE_BODY_SLAM - .2byte MOVE_CURSE - .2byte MOVE_SMELLING_SALT - .2byte MOVE_SLEEP_TALK - .2byte MOVE_SNORE - .2byte MOVE_SUBSTITUTE - - egg_moves_begin SPECIES_KOFFING - .2byte MOVE_SCREECH - .2byte MOVE_PSYWAVE - .2byte MOVE_PSYBEAM - .2byte MOVE_DESTINY_BOND - .2byte MOVE_PAIN_SPLIT - .2byte MOVE_WILL_O_WISP - - egg_moves_begin SPECIES_RHYHORN - .2byte MOVE_CRUNCH - .2byte MOVE_REVERSAL - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_COUNTER - .2byte MOVE_MAGNITUDE - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_CURSE - .2byte MOVE_CRUSH_CLAW - - egg_moves_begin SPECIES_CHANSEY - .2byte MOVE_PRESENT - .2byte MOVE_METRONOME - .2byte MOVE_HEAL_BELL - .2byte MOVE_AROMATHERAPY - .2byte MOVE_SUBSTITUTE - - egg_moves_begin SPECIES_TANGELA - .2byte MOVE_FLAIL - .2byte MOVE_CONFUSION - .2byte MOVE_MEGA_DRAIN - .2byte MOVE_REFLECT - .2byte MOVE_AMNESIA - .2byte MOVE_LEECH_SEED - .2byte MOVE_NATURE_POWER - - egg_moves_begin SPECIES_KANGASKHAN - .2byte MOVE_STOMP - .2byte MOVE_FORESIGHT - .2byte MOVE_FOCUS_ENERGY - .2byte MOVE_SAFEGUARD - .2byte MOVE_DISABLE - .2byte MOVE_COUNTER - .2byte MOVE_CRUSH_CLAW - .2byte MOVE_SUBSTITUTE - - egg_moves_begin SPECIES_HORSEA - .2byte MOVE_FLAIL - .2byte MOVE_AURORA_BEAM - .2byte MOVE_OCTAZOOKA - .2byte MOVE_DISABLE - .2byte MOVE_SPLASH - .2byte MOVE_DRAGON_RAGE - .2byte MOVE_DRAGON_BREATH - - egg_moves_begin SPECIES_GOLDEEN - .2byte MOVE_PSYBEAM - .2byte MOVE_HAZE - .2byte MOVE_HYDRO_PUMP - .2byte MOVE_SLEEP_TALK - .2byte MOVE_MUD_SPORT - - egg_moves_begin SPECIES_MR_MIME - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_HYPNOSIS - .2byte MOVE_MIMIC - .2byte MOVE_PSYCH_UP - .2byte MOVE_FAKE_OUT - .2byte MOVE_TRICK - - egg_moves_begin SPECIES_SCYTHER - .2byte MOVE_COUNTER - .2byte MOVE_SAFEGUARD - .2byte MOVE_BATON_PASS - .2byte MOVE_RAZOR_WIND - .2byte MOVE_REVERSAL - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_ENDURE - .2byte MOVE_SILVER_WIND - - egg_moves_begin SPECIES_PINSIR - .2byte MOVE_FURY_ATTACK - .2byte MOVE_FLAIL - .2byte MOVE_FALSE_SWIPE - .2byte MOVE_FAINT_ATTACK - - egg_moves_begin SPECIES_LAPRAS - .2byte MOVE_FORESIGHT - .2byte MOVE_SUBSTITUTE - .2byte MOVE_TICKLE - .2byte MOVE_REFRESH - .2byte MOVE_DRAGON_DANCE - .2byte MOVE_CURSE - .2byte MOVE_SLEEP_TALK - .2byte MOVE_HORN_DRILL - - egg_moves_begin SPECIES_EEVEE - .2byte MOVE_CHARM - .2byte MOVE_FLAIL - .2byte MOVE_ENDURE - .2byte MOVE_CURSE - .2byte MOVE_TICKLE - .2byte MOVE_WISH - - egg_moves_begin SPECIES_OMANYTE - .2byte MOVE_BUBBLE_BEAM - .2byte MOVE_AURORA_BEAM - .2byte MOVE_SLAM - .2byte MOVE_SUPERSONIC - .2byte MOVE_HAZE - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_SPIKES - - egg_moves_begin SPECIES_KABUTO - .2byte MOVE_BUBBLE_BEAM - .2byte MOVE_AURORA_BEAM - .2byte MOVE_RAPID_SPIN - .2byte MOVE_DIG - .2byte MOVE_FLAIL - .2byte MOVE_KNOCK_OFF - .2byte MOVE_CONFUSE_RAY - - egg_moves_begin SPECIES_AERODACTYL - .2byte MOVE_WHIRLWIND - .2byte MOVE_PURSUIT - .2byte MOVE_FORESIGHT - .2byte MOVE_STEEL_WING - .2byte MOVE_DRAGON_BREATH - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_SNORLAX - .2byte MOVE_LICK - .2byte MOVE_CHARM - .2byte MOVE_DOUBLE_EDGE - .2byte MOVE_CURSE - .2byte MOVE_FISSURE - .2byte MOVE_SUBSTITUTE - - egg_moves_begin SPECIES_DRATINI - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_MIST - .2byte MOVE_HAZE - .2byte MOVE_SUPERSONIC - .2byte MOVE_DRAGON_BREATH - .2byte MOVE_DRAGON_DANCE - - egg_moves_begin SPECIES_CHIKORITA - .2byte MOVE_VINE_WHIP - .2byte MOVE_LEECH_SEED - .2byte MOVE_COUNTER - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_FLAIL - .2byte MOVE_NATURE_POWER - .2byte MOVE_INGRAIN - .2byte MOVE_GRASS_WHISTLE - - egg_moves_begin SPECIES_CYNDAQUIL - .2byte MOVE_FURY_SWIPES - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_REVERSAL - .2byte MOVE_THRASH - .2byte MOVE_FORESIGHT - .2byte MOVE_COVET - .2byte MOVE_HOWL - .2byte MOVE_CRUSH_CLAW - - egg_moves_begin SPECIES_TOTODILE - .2byte MOVE_CRUNCH - .2byte MOVE_THRASH - .2byte MOVE_HYDRO_PUMP - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_MUD_SPORT - .2byte MOVE_WATER_SPORT - .2byte MOVE_DRAGON_CLAW - - egg_moves_begin SPECIES_SENTRET - .2byte MOVE_DOUBLE_EDGE - .2byte MOVE_PURSUIT - .2byte MOVE_SLASH - .2byte MOVE_FOCUS_ENERGY - .2byte MOVE_REVERSAL - .2byte MOVE_SUBSTITUTE - .2byte MOVE_TRICK - .2byte MOVE_ASSIST - - egg_moves_begin SPECIES_HOOTHOOT - .2byte MOVE_MIRROR_MOVE - .2byte MOVE_SUPERSONIC - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_WING_ATTACK - .2byte MOVE_WHIRLWIND - .2byte MOVE_SKY_ATTACK - .2byte MOVE_FEATHER_DANCE - - egg_moves_begin SPECIES_LEDYBA - .2byte MOVE_PSYBEAM - .2byte MOVE_BIDE - .2byte MOVE_SILVER_WIND - - egg_moves_begin SPECIES_SPINARAK - .2byte MOVE_PSYBEAM - .2byte MOVE_DISABLE - .2byte MOVE_SONIC_BOOM - .2byte MOVE_BATON_PASS - .2byte MOVE_PURSUIT - .2byte MOVE_SIGNAL_BEAM - - egg_moves_begin SPECIES_CHINCHOU - .2byte MOVE_FLAIL - .2byte MOVE_SCREECH - .2byte MOVE_AMNESIA - - egg_moves_begin SPECIES_PICHU - .2byte MOVE_REVERSAL - .2byte MOVE_BIDE - .2byte MOVE_PRESENT - .2byte MOVE_ENCORE - .2byte MOVE_DOUBLE_SLAP - .2byte MOVE_WISH - .2byte MOVE_CHARGE - - egg_moves_begin SPECIES_CLEFFA - .2byte MOVE_PRESENT - .2byte MOVE_METRONOME - .2byte MOVE_AMNESIA - .2byte MOVE_BELLY_DRUM - .2byte MOVE_SPLASH - .2byte MOVE_MIMIC - .2byte MOVE_WISH - .2byte MOVE_SUBSTITUTE - - egg_moves_begin SPECIES_IGGLYBUFF - .2byte MOVE_PERISH_SONG - .2byte MOVE_PRESENT - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_WISH - .2byte MOVE_FAKE_TEARS - - egg_moves_begin SPECIES_TOGEPI - .2byte MOVE_PRESENT - .2byte MOVE_MIRROR_MOVE - .2byte MOVE_PECK - .2byte MOVE_FORESIGHT - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_SUBSTITUTE - .2byte MOVE_PSYCH_UP - - egg_moves_begin SPECIES_NATU - .2byte MOVE_HAZE - .2byte MOVE_DRILL_PECK - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_STEEL_WING - .2byte MOVE_PSYCH_UP - .2byte MOVE_FEATHER_DANCE - .2byte MOVE_REFRESH - - egg_moves_begin SPECIES_MAREEP - .2byte MOVE_TAKE_DOWN - .2byte MOVE_BODY_SLAM - .2byte MOVE_SAFEGUARD - .2byte MOVE_SCREECH - .2byte MOVE_REFLECT - .2byte MOVE_ODOR_SLEUTH - .2byte MOVE_CHARGE - - egg_moves_begin SPECIES_MARILL - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_PRESENT - .2byte MOVE_AMNESIA - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_BELLY_DRUM - .2byte MOVE_PERISH_SONG - .2byte MOVE_SUPERSONIC - .2byte MOVE_SUBSTITUTE - - egg_moves_begin SPECIES_SUDOWOODO - .2byte MOVE_SELF_DESTRUCT - - egg_moves_begin SPECIES_HOPPIP - .2byte MOVE_CONFUSION - .2byte MOVE_ENCORE - .2byte MOVE_DOUBLE_EDGE - .2byte MOVE_REFLECT - .2byte MOVE_AMNESIA - .2byte MOVE_HELPING_HAND - .2byte MOVE_PSYCH_UP - - egg_moves_begin SPECIES_AIPOM - .2byte MOVE_COUNTER - .2byte MOVE_SCREECH - .2byte MOVE_PURSUIT - .2byte MOVE_AGILITY - .2byte MOVE_SPITE - .2byte MOVE_SLAM - .2byte MOVE_DOUBLE_SLAP - .2byte MOVE_BEAT_UP - - egg_moves_begin SPECIES_SUNKERN - .2byte MOVE_GRASS_WHISTLE - .2byte MOVE_ENCORE - .2byte MOVE_LEECH_SEED - .2byte MOVE_NATURE_POWER - .2byte MOVE_CURSE - .2byte MOVE_HELPING_HAND - - egg_moves_begin SPECIES_YANMA - .2byte MOVE_WHIRLWIND - .2byte MOVE_REVERSAL - .2byte MOVE_LEECH_LIFE - .2byte MOVE_SIGNAL_BEAM - .2byte MOVE_SILVER_WIND - - egg_moves_begin SPECIES_WOOPER - .2byte MOVE_BODY_SLAM - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_SAFEGUARD - .2byte MOVE_CURSE - .2byte MOVE_MUD_SPORT - .2byte MOVE_STOCKPILE - .2byte MOVE_SWALLOW - .2byte MOVE_SPIT_UP - - egg_moves_begin SPECIES_MURKROW - .2byte MOVE_WHIRLWIND - .2byte MOVE_DRILL_PECK - .2byte MOVE_MIRROR_MOVE - .2byte MOVE_WING_ATTACK - .2byte MOVE_SKY_ATTACK - .2byte MOVE_CONFUSE_RAY - .2byte MOVE_FEATHER_DANCE - .2byte MOVE_PERISH_SONG - - egg_moves_begin SPECIES_MISDREAVUS - .2byte MOVE_SCREECH - .2byte MOVE_DESTINY_BOND - .2byte MOVE_PSYCH_UP - .2byte MOVE_IMPRISON - - egg_moves_begin SPECIES_GIRAFARIG - .2byte MOVE_TAKE_DOWN - .2byte MOVE_AMNESIA - .2byte MOVE_FORESIGHT - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_BEAT_UP - .2byte MOVE_PSYCH_UP - .2byte MOVE_WISH - .2byte MOVE_MAGIC_COAT - - egg_moves_begin SPECIES_PINECO - .2byte MOVE_REFLECT - .2byte MOVE_PIN_MISSILE - .2byte MOVE_FLAIL - .2byte MOVE_SWIFT - .2byte MOVE_COUNTER - .2byte MOVE_SAND_TOMB - - egg_moves_begin SPECIES_DUNSPARCE - .2byte MOVE_BIDE - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_BITE - .2byte MOVE_HEADBUTT - .2byte MOVE_ASTONISH - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_GLIGAR - .2byte MOVE_METAL_CLAW - .2byte MOVE_WING_ATTACK - .2byte MOVE_RAZOR_WIND - .2byte MOVE_COUNTER - .2byte MOVE_SAND_TOMB - - egg_moves_begin SPECIES_SNUBBULL - .2byte MOVE_METRONOME - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_REFLECT - .2byte MOVE_PRESENT - .2byte MOVE_CRUNCH - .2byte MOVE_HEAL_BELL - .2byte MOVE_SNORE - .2byte MOVE_SMELLING_SALT - - egg_moves_begin SPECIES_QWILFISH - .2byte MOVE_FLAIL - .2byte MOVE_HAZE - .2byte MOVE_BUBBLE_BEAM - .2byte MOVE_SUPERSONIC - .2byte MOVE_ASTONISH - - egg_moves_begin SPECIES_SHUCKLE - .2byte MOVE_SWEET_SCENT - - egg_moves_begin SPECIES_HERACROSS - .2byte MOVE_HARDEN - .2byte MOVE_BIDE - .2byte MOVE_FLAIL - .2byte MOVE_FALSE_SWIPE - - egg_moves_begin SPECIES_SNEASEL - .2byte MOVE_COUNTER - .2byte MOVE_SPITE - .2byte MOVE_FORESIGHT - .2byte MOVE_REFLECT - .2byte MOVE_BITE - .2byte MOVE_CRUSH_CLAW - .2byte MOVE_FAKE_OUT - - egg_moves_begin SPECIES_TEDDIURSA - .2byte MOVE_CRUNCH - .2byte MOVE_TAKE_DOWN - .2byte MOVE_SEISMIC_TOSS - .2byte MOVE_COUNTER - .2byte MOVE_METAL_CLAW - .2byte MOVE_FAKE_TEARS - .2byte MOVE_YAWN - .2byte MOVE_SLEEP_TALK - - egg_moves_begin SPECIES_SLUGMA - .2byte MOVE_ACID_ARMOR - .2byte MOVE_HEAT_WAVE - - egg_moves_begin SPECIES_SWINUB - .2byte MOVE_TAKE_DOWN - .2byte MOVE_BITE - .2byte MOVE_BODY_SLAM - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_MUD_SHOT - .2byte MOVE_ICICLE_SPEAR - .2byte MOVE_DOUBLE_EDGE - - egg_moves_begin SPECIES_CORSOLA - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_SCREECH - .2byte MOVE_MIST - .2byte MOVE_AMNESIA - .2byte MOVE_BARRIER - .2byte MOVE_INGRAIN - .2byte MOVE_CONFUSE_RAY - .2byte MOVE_ICICLE_SPEAR - - egg_moves_begin SPECIES_REMORAID - .2byte MOVE_AURORA_BEAM - .2byte MOVE_OCTAZOOKA - .2byte MOVE_SUPERSONIC - .2byte MOVE_HAZE - .2byte MOVE_SCREECH - .2byte MOVE_THUNDER_WAVE - .2byte MOVE_ROCK_BLAST - - egg_moves_begin SPECIES_DELIBIRD - .2byte MOVE_AURORA_BEAM - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_SPLASH - .2byte MOVE_RAPID_SPIN - .2byte MOVE_ICE_BALL - - egg_moves_begin SPECIES_MANTINE - .2byte MOVE_TWISTER - .2byte MOVE_HYDRO_PUMP - .2byte MOVE_HAZE - .2byte MOVE_SLAM - .2byte MOVE_MUD_SPORT - .2byte MOVE_ROCK_SLIDE - - egg_moves_begin SPECIES_SKARMORY - .2byte MOVE_DRILL_PECK - .2byte MOVE_PURSUIT - .2byte MOVE_WHIRLWIND - .2byte MOVE_SKY_ATTACK - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_HOUNDOUR - .2byte MOVE_FIRE_SPIN - .2byte MOVE_RAGE - .2byte MOVE_PURSUIT - .2byte MOVE_COUNTER - .2byte MOVE_SPITE - .2byte MOVE_REVERSAL - .2byte MOVE_BEAT_UP - .2byte MOVE_WILL_O_WISP - - egg_moves_begin SPECIES_PHANPY - .2byte MOVE_FOCUS_ENERGY - .2byte MOVE_BODY_SLAM - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_SNORE - .2byte MOVE_COUNTER - .2byte MOVE_FISSURE - - egg_moves_begin SPECIES_STANTLER - .2byte MOVE_SPITE - .2byte MOVE_DISABLE - .2byte MOVE_BITE - .2byte MOVE_SWAGGER - .2byte MOVE_PSYCH_UP - .2byte MOVE_EXTRASENSORY - - egg_moves_begin SPECIES_TYROGUE - .2byte MOVE_RAPID_SPIN - .2byte MOVE_HI_JUMP_KICK - .2byte MOVE_MACH_PUNCH - .2byte MOVE_MIND_READER - .2byte MOVE_HELPING_HAND - - egg_moves_begin SPECIES_SMOOCHUM - .2byte MOVE_MEDITATE - .2byte MOVE_PSYCH_UP - .2byte MOVE_FAKE_OUT - .2byte MOVE_WISH - .2byte MOVE_ICE_PUNCH - - egg_moves_begin SPECIES_ELEKID - .2byte MOVE_KARATE_CHOP - .2byte MOVE_BARRIER - .2byte MOVE_ROLLING_KICK - .2byte MOVE_MEDITATE - .2byte MOVE_CROSS_CHOP - .2byte MOVE_FIRE_PUNCH - .2byte MOVE_ICE_PUNCH - - egg_moves_begin SPECIES_MAGBY - .2byte MOVE_KARATE_CHOP - .2byte MOVE_MEGA_PUNCH - .2byte MOVE_BARRIER - .2byte MOVE_SCREECH - .2byte MOVE_CROSS_CHOP - .2byte MOVE_THUNDER_PUNCH - - egg_moves_begin SPECIES_MILTANK - .2byte MOVE_PRESENT - .2byte MOVE_REVERSAL - .2byte MOVE_SEISMIC_TOSS - .2byte MOVE_ENDURE - .2byte MOVE_PSYCH_UP - .2byte MOVE_CURSE - .2byte MOVE_HELPING_HAND - .2byte MOVE_SLEEP_TALK - - egg_moves_begin SPECIES_LARVITAR - .2byte MOVE_PURSUIT - .2byte MOVE_STOMP - .2byte MOVE_OUTRAGE - .2byte MOVE_FOCUS_ENERGY - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_DRAGON_DANCE - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_TREECKO - .2byte MOVE_CRUNCH - .2byte MOVE_MUD_SPORT - .2byte MOVE_ENDEAVOR - .2byte MOVE_LEECH_SEED - .2byte MOVE_DRAGON_BREATH - .2byte MOVE_CRUSH_CLAW - - egg_moves_begin SPECIES_TORCHIC - .2byte MOVE_COUNTER - .2byte MOVE_REVERSAL - .2byte MOVE_ENDURE - .2byte MOVE_SWAGGER - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_SMELLING_SALT - - egg_moves_begin SPECIES_MUDKIP - .2byte MOVE_REFRESH - .2byte MOVE_UPROAR - .2byte MOVE_CURSE - .2byte MOVE_STOMP - .2byte MOVE_ICE_BALL - .2byte MOVE_MIRROR_COAT - - egg_moves_begin SPECIES_POOCHYENA - .2byte MOVE_ASTONISH - .2byte MOVE_POISON_FANG - .2byte MOVE_COVET - .2byte MOVE_LEER - .2byte MOVE_YAWN - - egg_moves_begin SPECIES_ZIGZAGOON - .2byte MOVE_CHARM - .2byte MOVE_PURSUIT - .2byte MOVE_SUBSTITUTE - .2byte MOVE_TICKLE - .2byte MOVE_TRICK - - egg_moves_begin SPECIES_LOTAD - .2byte MOVE_SYNTHESIS - .2byte MOVE_RAZOR_LEAF - .2byte MOVE_SWEET_SCENT - .2byte MOVE_LEECH_SEED - .2byte MOVE_FLAIL - .2byte MOVE_WATER_GUN - - egg_moves_begin SPECIES_SEEDOT - .2byte MOVE_LEECH_SEED - .2byte MOVE_AMNESIA - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_RAZOR_WIND - .2byte MOVE_TAKE_DOWN - .2byte MOVE_FALSE_SWIPE - - egg_moves_begin SPECIES_NINCADA - .2byte MOVE_ENDURE - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_GUST - .2byte MOVE_SILVER_WIND - - egg_moves_begin SPECIES_TAILLOW - .2byte MOVE_PURSUIT - .2byte MOVE_SUPERSONIC - .2byte MOVE_REFRESH - .2byte MOVE_MIRROR_MOVE - .2byte MOVE_RAGE - .2byte MOVE_SKY_ATTACK - - egg_moves_begin SPECIES_SHROOMISH - .2byte MOVE_FAKE_TEARS - .2byte MOVE_SWAGGER - .2byte MOVE_CHARM - .2byte MOVE_FALSE_SWIPE - .2byte MOVE_HELPING_HAND - - egg_moves_begin SPECIES_SPINDA - .2byte MOVE_ENCORE - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_ASSIST - .2byte MOVE_DISABLE - .2byte MOVE_BATON_PASS - .2byte MOVE_WISH - .2byte MOVE_TRICK - .2byte MOVE_SMELLING_SALT - - egg_moves_begin SPECIES_WINGULL - .2byte MOVE_MIST - .2byte MOVE_TWISTER - .2byte MOVE_AGILITY - .2byte MOVE_GUST - .2byte MOVE_WATER_SPORT - - egg_moves_begin SPECIES_SURSKIT - .2byte MOVE_FORESIGHT - .2byte MOVE_MUD_SHOT - .2byte MOVE_PSYBEAM - .2byte MOVE_HYDRO_PUMP - .2byte MOVE_MIND_READER - - egg_moves_begin SPECIES_WAILMER - .2byte MOVE_DOUBLE_EDGE - .2byte MOVE_THRASH - .2byte MOVE_SWAGGER - .2byte MOVE_SNORE - .2byte MOVE_SLEEP_TALK - .2byte MOVE_CURSE - .2byte MOVE_FISSURE - .2byte MOVE_TICKLE - - egg_moves_begin SPECIES_SKITTY - .2byte MOVE_HELPING_HAND - .2byte MOVE_PSYCH_UP - .2byte MOVE_UPROAR - .2byte MOVE_FAKE_TEARS - .2byte MOVE_WISH - .2byte MOVE_BATON_PASS - .2byte MOVE_SUBSTITUTE - .2byte MOVE_TICKLE - - egg_moves_begin SPECIES_KECLEON - .2byte MOVE_DISABLE - .2byte MOVE_MAGIC_COAT - .2byte MOVE_TRICK - - egg_moves_begin SPECIES_NOSEPASS - .2byte MOVE_MAGNITUDE - .2byte MOVE_ROLLOUT - .2byte MOVE_EXPLOSION - - egg_moves_begin SPECIES_TORKOAL - .2byte MOVE_ERUPTION - .2byte MOVE_ENDURE - .2byte MOVE_SLEEP_TALK - .2byte MOVE_YAWN - - egg_moves_begin SPECIES_SABLEYE - .2byte MOVE_PSYCH_UP - .2byte MOVE_RECOVER - .2byte MOVE_MOONLIGHT - - egg_moves_begin SPECIES_BARBOACH - .2byte MOVE_THRASH - .2byte MOVE_WHIRLPOOL - .2byte MOVE_SPARK - - egg_moves_begin SPECIES_LUVDISC - .2byte MOVE_SPLASH - .2byte MOVE_SUPERSONIC - .2byte MOVE_WATER_SPORT - .2byte MOVE_MUD_SPORT - - egg_moves_begin SPECIES_CORPHISH - .2byte MOVE_MUD_SPORT - .2byte MOVE_ENDEAVOR - .2byte MOVE_BODY_SLAM - .2byte MOVE_ANCIENT_POWER - - egg_moves_begin SPECIES_FEEBAS - .2byte MOVE_MIRROR_COAT - .2byte MOVE_DRAGON_BREATH - .2byte MOVE_MUD_SPORT - .2byte MOVE_HYPNOSIS - .2byte MOVE_LIGHT_SCREEN - .2byte MOVE_CONFUSE_RAY - - egg_moves_begin SPECIES_CARVANHA - .2byte MOVE_HYDRO_PUMP - .2byte MOVE_DOUBLE_EDGE - .2byte MOVE_THRASH - - egg_moves_begin SPECIES_TRAPINCH - .2byte MOVE_FOCUS_ENERGY - .2byte MOVE_QUICK_ATTACK - .2byte MOVE_GUST - - egg_moves_begin SPECIES_MAKUHITA - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_DETECT - .2byte MOVE_FORESIGHT - .2byte MOVE_HELPING_HAND - .2byte MOVE_CROSS_CHOP - .2byte MOVE_REVENGE - .2byte MOVE_DYNAMIC_PUNCH - .2byte MOVE_COUNTER - - egg_moves_begin SPECIES_ELECTRIKE - .2byte MOVE_CRUNCH - .2byte MOVE_HEADBUTT - .2byte MOVE_UPROAR - .2byte MOVE_CURSE - .2byte MOVE_SWIFT - - egg_moves_begin SPECIES_NUMEL - .2byte MOVE_HOWL - .2byte MOVE_SCARY_FACE - .2byte MOVE_BODY_SLAM - .2byte MOVE_ROLLOUT - .2byte MOVE_DEFENSE_CURL - .2byte MOVE_STOMP - - egg_moves_begin SPECIES_SPHEAL - .2byte MOVE_WATER_SPORT - .2byte MOVE_STOCKPILE - .2byte MOVE_SWALLOW - .2byte MOVE_SPIT_UP - .2byte MOVE_YAWN - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_CURSE - .2byte MOVE_FISSURE - - egg_moves_begin SPECIES_CACNEA - .2byte MOVE_GRASS_WHISTLE - .2byte MOVE_ACID - .2byte MOVE_TEETER_DANCE - .2byte MOVE_DYNAMIC_PUNCH - .2byte MOVE_COUNTER - - egg_moves_begin SPECIES_SNORUNT - .2byte MOVE_BLOCK - .2byte MOVE_SPIKES - - egg_moves_begin SPECIES_AZURILL - .2byte MOVE_ENCORE - .2byte MOVE_SING - .2byte MOVE_REFRESH - .2byte MOVE_SLAM - .2byte MOVE_TICKLE - - egg_moves_begin SPECIES_SPOINK - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_EXTRASENSORY - .2byte MOVE_SUBSTITUTE - .2byte MOVE_TRICK - - egg_moves_begin SPECIES_PLUSLE - .2byte MOVE_SUBSTITUTE - .2byte MOVE_WISH - - egg_moves_begin SPECIES_MINUN - .2byte MOVE_SUBSTITUTE - .2byte MOVE_WISH - - egg_moves_begin SPECIES_MAWILE - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_FALSE_SWIPE - .2byte MOVE_POISON_FANG - .2byte MOVE_PSYCH_UP - .2byte MOVE_ANCIENT_POWER - .2byte MOVE_TICKLE - - egg_moves_begin SPECIES_MEDITITE - .2byte MOVE_FIRE_PUNCH - .2byte MOVE_THUNDER_PUNCH - .2byte MOVE_ICE_PUNCH - .2byte MOVE_FORESIGHT - .2byte MOVE_FAKE_OUT - .2byte MOVE_BATON_PASS - .2byte MOVE_DYNAMIC_PUNCH - - egg_moves_begin SPECIES_SWABLU - .2byte MOVE_AGILITY - .2byte MOVE_HAZE - .2byte MOVE_PURSUIT - .2byte MOVE_RAGE - - egg_moves_begin SPECIES_DUSKULL - .2byte MOVE_IMPRISON - .2byte MOVE_DESTINY_BOND - .2byte MOVE_PAIN_SPLIT - .2byte MOVE_GRUDGE - .2byte MOVE_MEMENTO - .2byte MOVE_FAINT_ATTACK - - egg_moves_begin SPECIES_ROSELIA - .2byte MOVE_SPIKES - .2byte MOVE_SYNTHESIS - .2byte MOVE_PIN_MISSILE - .2byte MOVE_COTTON_SPORE - - egg_moves_begin SPECIES_SLAKOTH - .2byte MOVE_PURSUIT - .2byte MOVE_SLASH - .2byte MOVE_BODY_SLAM - .2byte MOVE_SNORE - .2byte MOVE_CRUSH_CLAW - .2byte MOVE_CURSE - .2byte MOVE_SLEEP_TALK - - egg_moves_begin SPECIES_GULPIN - .2byte MOVE_DREAM_EATER - .2byte MOVE_ACID_ARMOR - .2byte MOVE_SMOG - .2byte MOVE_PAIN_SPLIT - - egg_moves_begin SPECIES_TROPIUS - .2byte MOVE_HEADBUTT - .2byte MOVE_SLAM - .2byte MOVE_RAZOR_WIND - .2byte MOVE_LEECH_SEED - .2byte MOVE_NATURE_POWER - - egg_moves_begin SPECIES_WHISMUR - .2byte MOVE_TAKE_DOWN - .2byte MOVE_SNORE - .2byte MOVE_SWAGGER - .2byte MOVE_EXTRASENSORY - .2byte MOVE_SMELLING_SALT - - egg_moves_begin SPECIES_CLAMPERL - .2byte MOVE_REFRESH - .2byte MOVE_MUD_SPORT - .2byte MOVE_BODY_SLAM - .2byte MOVE_SUPERSONIC - .2byte MOVE_BARRIER - .2byte MOVE_CONFUSE_RAY - - egg_moves_begin SPECIES_ABSOL - .2byte MOVE_BATON_PASS - .2byte MOVE_FAINT_ATTACK - .2byte MOVE_DOUBLE_EDGE - .2byte MOVE_MAGIC_COAT - .2byte MOVE_CURSE - .2byte MOVE_SUBSTITUTE - - egg_moves_begin SPECIES_SHUPPET - .2byte MOVE_DISABLE - .2byte MOVE_DESTINY_BOND - .2byte MOVE_FORESIGHT - .2byte MOVE_ASTONISH - .2byte MOVE_IMPRISON - - egg_moves_begin SPECIES_SEVIPER - .2byte MOVE_STOCKPILE - .2byte MOVE_SWALLOW - .2byte MOVE_SPIT_UP - .2byte MOVE_BODY_SLAM - - egg_moves_begin SPECIES_ZANGOOSE - .2byte MOVE_FLAIL - .2byte MOVE_DOUBLE_KICK - .2byte MOVE_RAZOR_WIND - .2byte MOVE_COUNTER - .2byte MOVE_ROAR - .2byte MOVE_CURSE - - egg_moves_begin SPECIES_RELICANTH - .2byte MOVE_MAGNITUDE - .2byte MOVE_SKULL_BASH - .2byte MOVE_WATER_SPORT - .2byte MOVE_AMNESIA - .2byte MOVE_SLEEP_TALK - .2byte MOVE_ROCK_SLIDE - - egg_moves_begin SPECIES_ARON - .2byte MOVE_ENDEAVOR - .2byte MOVE_BODY_SLAM - .2byte MOVE_STOMP - .2byte MOVE_SMELLING_SALT - - egg_moves_begin SPECIES_CASTFORM - .2byte MOVE_FUTURE_SIGHT - .2byte MOVE_PSYCH_UP - - egg_moves_begin SPECIES_VOLBEAT - .2byte MOVE_BATON_PASS - .2byte MOVE_SILVER_WIND - .2byte MOVE_TRICK - - egg_moves_begin SPECIES_ILLUMISE - .2byte MOVE_BATON_PASS - .2byte MOVE_SILVER_WIND - .2byte MOVE_GROWTH - - egg_moves_begin SPECIES_LILEEP - .2byte MOVE_BARRIER - .2byte MOVE_RECOVER - .2byte MOVE_MIRROR_COAT - .2byte MOVE_ROCK_SLIDE - - egg_moves_begin SPECIES_ANORITH - .2byte MOVE_RAPID_SPIN - .2byte MOVE_KNOCK_OFF - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_ROCK_SLIDE - - egg_moves_begin SPECIES_RALTS - .2byte MOVE_DISABLE - .2byte MOVE_WILL_O_WISP - .2byte MOVE_MEAN_LOOK - .2byte MOVE_MEMENTO - .2byte MOVE_DESTINY_BOND - - egg_moves_begin SPECIES_BAGON - .2byte MOVE_HYDRO_PUMP - .2byte MOVE_THRASH - .2byte MOVE_DRAGON_RAGE - .2byte MOVE_TWISTER - .2byte MOVE_DRAGON_DANCE - - egg_moves_begin SPECIES_CHIMECHO - .2byte MOVE_DISABLE - .2byte MOVE_CURSE - .2byte MOVE_HYPNOSIS - .2byte MOVE_DREAM_EATER - - .2byte -1 diff --git a/include/data/pokemon/egg_moves.h b/include/data/pokemon/egg_moves.h new file mode 100644 index 000000000..390052ec8 --- /dev/null +++ b/include/data/pokemon/egg_moves.h @@ -0,0 +1,1318 @@ +// +// Created by Scott Norton on 8/30/17. +// + +#ifndef POKERUBY_DAYCARE_H +#define POKERUBY_DAYCARE_H + +#define EGG_MOVES_SPECIES_OFFSET 20000 +#define egg_moves(species, moves...) (SPECIES_##species + EGG_MOVES_SPECIES_OFFSET), moves + +#endif //POKERUBY_DAYCARE_H + +const u16 gEggMoves[] = { + egg_moves(BULBASAUR, + MOVE_LIGHT_SCREEN, + MOVE_SKULL_BASH, + MOVE_SAFEGUARD, + MOVE_CHARM, + MOVE_PETAL_DANCE, + MOVE_MAGICAL_LEAF, + MOVE_GRASS_WHISTLE, + MOVE_CURSE), + + egg_moves(CHARMANDER, + MOVE_BELLY_DRUM, + MOVE_ANCIENT_POWER, + MOVE_ROCK_SLIDE, + MOVE_BITE, + MOVE_OUTRAGE, + MOVE_BEAT_UP, + MOVE_SWORDS_DANCE, + MOVE_DRAGON_DANCE), + + egg_moves(SQUIRTLE, + MOVE_MIRROR_COAT, + MOVE_HAZE, + MOVE_MIST, + MOVE_FORESIGHT, + MOVE_FLAIL, + MOVE_REFRESH, + MOVE_MUD_SPORT, + MOVE_YAWN), + + egg_moves(PIDGEY, + MOVE_PURSUIT, + MOVE_FAINT_ATTACK, + MOVE_FORESIGHT, + MOVE_STEEL_WING, + MOVE_AIR_CUTTER), + + egg_moves(RATTATA, + MOVE_SCREECH, + MOVE_FLAME_WHEEL, + MOVE_FURY_SWIPES, + MOVE_BITE, + MOVE_COUNTER, + MOVE_REVERSAL, + MOVE_UPROAR, + MOVE_SWAGGER), + + egg_moves(SPEAROW, + MOVE_FAINT_ATTACK, + MOVE_FALSE_SWIPE, + MOVE_SCARY_FACE, + MOVE_QUICK_ATTACK, + MOVE_TRI_ATTACK, + MOVE_ASTONISH, + MOVE_SKY_ATTACK), + + egg_moves(EKANS, + MOVE_PURSUIT, + MOVE_SLAM, + MOVE_SPITE, + MOVE_BEAT_UP, + MOVE_POISON_FANG), + + egg_moves(SANDSHREW, + MOVE_FLAIL, + MOVE_SAFEGUARD, + MOVE_COUNTER, + MOVE_RAPID_SPIN, + MOVE_ROCK_SLIDE, + MOVE_METAL_CLAW, + MOVE_SWORDS_DANCE, + MOVE_CRUSH_CLAW), + + egg_moves(NIDORAN_F, + MOVE_SUPERSONIC, + MOVE_DISABLE, + MOVE_TAKE_DOWN, + MOVE_FOCUS_ENERGY, + MOVE_CHARM, + MOVE_COUNTER, + MOVE_BEAT_UP), + + egg_moves(NIDORAN_M, + MOVE_COUNTER, + MOVE_DISABLE, + MOVE_SUPERSONIC, + MOVE_TAKE_DOWN, + MOVE_AMNESIA, + MOVE_CONFUSION, + MOVE_BEAT_UP), + + egg_moves(VULPIX, + MOVE_FAINT_ATTACK, + MOVE_HYPNOSIS, + MOVE_FLAIL, + MOVE_SPITE, + MOVE_DISABLE, + MOVE_HOWL, + MOVE_PSYCH_UP, + MOVE_HEAT_WAVE), + + egg_moves(ZUBAT, + MOVE_QUICK_ATTACK, + MOVE_PURSUIT, + MOVE_FAINT_ATTACK, + MOVE_GUST, + MOVE_WHIRLWIND, + MOVE_CURSE), + + egg_moves(ODDISH, + MOVE_SWORDS_DANCE, + MOVE_RAZOR_LEAF, + MOVE_FLAIL, + MOVE_SYNTHESIS, + MOVE_CHARM, + MOVE_INGRAIN), + + egg_moves(PARAS, + MOVE_FALSE_SWIPE, + MOVE_SCREECH, + MOVE_COUNTER, + MOVE_PSYBEAM, + MOVE_FLAIL, + MOVE_SWEET_SCENT, + MOVE_LIGHT_SCREEN, + MOVE_PURSUIT), + + egg_moves(VENONAT, + MOVE_BATON_PASS, + MOVE_SCREECH, + MOVE_GIGA_DRAIN, + MOVE_SIGNAL_BEAM), + + egg_moves(DIGLETT, + MOVE_FAINT_ATTACK, + MOVE_SCREECH, + MOVE_ANCIENT_POWER, + MOVE_PURSUIT, + MOVE_BEAT_UP, + MOVE_UPROAR, + MOVE_ROCK_SLIDE), + + egg_moves(MEOWTH, + MOVE_SPITE, + MOVE_CHARM, + MOVE_HYPNOSIS, + MOVE_AMNESIA, + MOVE_PSYCH_UP, + MOVE_ASSIST), + + egg_moves(PSYDUCK, + MOVE_HYPNOSIS, + MOVE_PSYBEAM, + MOVE_FORESIGHT, + MOVE_LIGHT_SCREEN, + MOVE_FUTURE_SIGHT, + MOVE_PSYCHIC, + MOVE_CROSS_CHOP, + MOVE_REFRESH), + + egg_moves(MANKEY, + MOVE_ROCK_SLIDE, + MOVE_FORESIGHT, + MOVE_MEDITATE, + MOVE_COUNTER, + MOVE_REVERSAL, + MOVE_BEAT_UP, + MOVE_REVENGE, + MOVE_SMELLING_SALT), + + egg_moves(GROWLITHE, + MOVE_BODY_SLAM, + MOVE_SAFEGUARD, + MOVE_CRUNCH, + MOVE_THRASH, + MOVE_FIRE_SPIN, + MOVE_HOWL, + MOVE_HEAT_WAVE), + + egg_moves(POLIWAG, + MOVE_MIST, + MOVE_SPLASH, + MOVE_BUBBLE_BEAM, + MOVE_HAZE, + MOVE_MIND_READER, + MOVE_WATER_SPORT, + MOVE_ICE_BALL), + + egg_moves(ABRA, + MOVE_ENCORE, + MOVE_BARRIER, + MOVE_KNOCK_OFF, + MOVE_FIRE_PUNCH, + MOVE_THUNDER_PUNCH, + MOVE_ICE_PUNCH), + + egg_moves(MACHOP, + MOVE_LIGHT_SCREEN, + MOVE_MEDITATE, + MOVE_ROLLING_KICK, + MOVE_ENCORE, + MOVE_SMELLING_SALT, + MOVE_COUNTER, + MOVE_ROCK_SLIDE), + + egg_moves(BELLSPROUT, + MOVE_SWORDS_DANCE, + MOVE_ENCORE, + MOVE_REFLECT, + MOVE_SYNTHESIS, + MOVE_LEECH_LIFE, + MOVE_INGRAIN, + MOVE_MAGICAL_LEAF), + + egg_moves(TENTACOOL, + MOVE_AURORA_BEAM, + MOVE_MIRROR_COAT, + MOVE_RAPID_SPIN, + MOVE_HAZE, + MOVE_SAFEGUARD, + MOVE_CONFUSE_RAY), + + egg_moves(GEODUDE, + MOVE_MEGA_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_BLOCK), + + egg_moves(PONYTA, + MOVE_FLAME_WHEEL, + MOVE_THRASH, + MOVE_DOUBLE_KICK, + MOVE_HYPNOSIS, + MOVE_CHARM, + MOVE_DOUBLE_EDGE), + + egg_moves(SLOWPOKE, + MOVE_SAFEGUARD, + MOVE_BELLY_DRUM, + MOVE_FUTURE_SIGHT, + MOVE_STOMP, + MOVE_MUD_SPORT, + MOVE_SLEEP_TALK, + MOVE_SNORE), + + egg_moves(FARFETCHD, + MOVE_STEEL_WING, + MOVE_FORESIGHT, + MOVE_MIRROR_MOVE, + MOVE_GUST, + MOVE_QUICK_ATTACK, + MOVE_FLAIL, + MOVE_FEATHER_DANCE, + MOVE_CURSE), + + egg_moves(DODUO, + MOVE_QUICK_ATTACK, + MOVE_SUPERSONIC, + MOVE_HAZE, + MOVE_FAINT_ATTACK, + MOVE_FLAIL, + MOVE_ENDEAVOR), + + egg_moves(SEEL, + MOVE_LICK, + MOVE_PERISH_SONG, + MOVE_DISABLE, + MOVE_HORN_DRILL, + MOVE_SLAM, + MOVE_ENCORE, + MOVE_FAKE_OUT, + MOVE_ICICLE_SPEAR), + + egg_moves(GRIMER, + MOVE_HAZE, + MOVE_MEAN_LOOK, + MOVE_LICK, + MOVE_IMPRISON, + MOVE_CURSE, + MOVE_SHADOW_PUNCH, + MOVE_EXPLOSION), + + egg_moves(SHELLDER, + MOVE_BUBBLE_BEAM, + MOVE_TAKE_DOWN, + MOVE_BARRIER, + MOVE_RAPID_SPIN, + MOVE_SCREECH, + MOVE_ICICLE_SPEAR), + + egg_moves(GASTLY, + MOVE_PSYWAVE, + MOVE_PERISH_SONG, + MOVE_HAZE, + MOVE_ASTONISH, + MOVE_WILL_O_WISP, + MOVE_GRUDGE, + MOVE_EXPLOSION), + + egg_moves(ONIX, + MOVE_ROCK_SLIDE, + MOVE_FLAIL, + MOVE_EXPLOSION, + MOVE_BLOCK), + + egg_moves(DROWZEE, + MOVE_BARRIER, + MOVE_ASSIST, + MOVE_ROLE_PLAY, + MOVE_FIRE_PUNCH, + MOVE_THUNDER_PUNCH, + MOVE_ICE_PUNCH), + + egg_moves(KRABBY, + MOVE_DIG, + MOVE_HAZE, + MOVE_AMNESIA, + MOVE_FLAIL, + MOVE_SLAM, + MOVE_KNOCK_OFF, + MOVE_SWORDS_DANCE), + + egg_moves(EXEGGCUTE, + MOVE_SYNTHESIS, + MOVE_MOONLIGHT, + MOVE_REFLECT, + MOVE_ANCIENT_POWER, + MOVE_PSYCH_UP, + MOVE_INGRAIN, + MOVE_CURSE), + + egg_moves(CUBONE, + MOVE_ROCK_SLIDE, + MOVE_ANCIENT_POWER, + MOVE_BELLY_DRUM, + MOVE_SCREECH, + MOVE_SKULL_BASH, + MOVE_PERISH_SONG, + MOVE_SWORDS_DANCE), + + egg_moves(LICKITUNG, + MOVE_BELLY_DRUM, + MOVE_MAGNITUDE, + MOVE_BODY_SLAM, + MOVE_CURSE, + MOVE_SMELLING_SALT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE), + + egg_moves(KOFFING, + MOVE_SCREECH, + MOVE_PSYWAVE, + MOVE_PSYBEAM, + MOVE_DESTINY_BOND, + MOVE_PAIN_SPLIT, + MOVE_WILL_O_WISP), + + egg_moves(RHYHORN, + MOVE_CRUNCH, + MOVE_REVERSAL, + MOVE_ROCK_SLIDE, + MOVE_COUNTER, + MOVE_MAGNITUDE, + MOVE_SWORDS_DANCE, + MOVE_CURSE, + MOVE_CRUSH_CLAW), + + egg_moves(CHANSEY, + MOVE_PRESENT, + MOVE_METRONOME, + MOVE_HEAL_BELL, + MOVE_AROMATHERAPY, + MOVE_SUBSTITUTE), + + egg_moves(TANGELA, + MOVE_FLAIL, + MOVE_CONFUSION, + MOVE_MEGA_DRAIN, + MOVE_REFLECT, + MOVE_AMNESIA, + MOVE_LEECH_SEED, + MOVE_NATURE_POWER), + + egg_moves(KANGASKHAN, + MOVE_STOMP, + MOVE_FORESIGHT, + MOVE_FOCUS_ENERGY, + MOVE_SAFEGUARD, + MOVE_DISABLE, + MOVE_COUNTER, + MOVE_CRUSH_CLAW, + MOVE_SUBSTITUTE), + + egg_moves(HORSEA, + MOVE_FLAIL, + MOVE_AURORA_BEAM, + MOVE_OCTAZOOKA, + MOVE_DISABLE, + MOVE_SPLASH, + MOVE_DRAGON_RAGE, + MOVE_DRAGON_BREATH), + + egg_moves(GOLDEEN, + MOVE_PSYBEAM, + MOVE_HAZE, + MOVE_HYDRO_PUMP, + MOVE_SLEEP_TALK, + MOVE_MUD_SPORT), + + egg_moves(MR_MIME, + MOVE_FUTURE_SIGHT, + MOVE_HYPNOSIS, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_FAKE_OUT, + MOVE_TRICK), + + egg_moves(SCYTHER, + MOVE_COUNTER, + MOVE_SAFEGUARD, + MOVE_BATON_PASS, + MOVE_RAZOR_WIND, + MOVE_REVERSAL, + MOVE_LIGHT_SCREEN, + MOVE_ENDURE, + MOVE_SILVER_WIND), + + egg_moves(PINSIR, + MOVE_FURY_ATTACK, + MOVE_FLAIL, + MOVE_FALSE_SWIPE, + MOVE_FAINT_ATTACK), + + egg_moves(LAPRAS, + MOVE_FORESIGHT, + MOVE_SUBSTITUTE, + MOVE_TICKLE, + MOVE_REFRESH, + MOVE_DRAGON_DANCE, + MOVE_CURSE, + MOVE_SLEEP_TALK, + MOVE_HORN_DRILL), + + egg_moves(EEVEE, + MOVE_CHARM, + MOVE_FLAIL, + MOVE_ENDURE, + MOVE_CURSE, + MOVE_TICKLE, + MOVE_WISH), + + egg_moves(OMANYTE, + MOVE_BUBBLE_BEAM, + MOVE_AURORA_BEAM, + MOVE_SLAM, + MOVE_SUPERSONIC, + MOVE_HAZE, + MOVE_ROCK_SLIDE, + MOVE_SPIKES), + + egg_moves(KABUTO, + MOVE_BUBBLE_BEAM, + MOVE_AURORA_BEAM, + MOVE_RAPID_SPIN, + MOVE_DIG, + MOVE_FLAIL, + MOVE_KNOCK_OFF, + MOVE_CONFUSE_RAY), + + egg_moves(AERODACTYL, + MOVE_WHIRLWIND, + MOVE_PURSUIT, + MOVE_FORESIGHT, + MOVE_STEEL_WING, + MOVE_DRAGON_BREATH, + MOVE_CURSE), + + egg_moves(SNORLAX, + MOVE_LICK, + MOVE_CHARM, + MOVE_DOUBLE_EDGE, + MOVE_CURSE, + MOVE_FISSURE, + MOVE_SUBSTITUTE), + + egg_moves(DRATINI, + MOVE_LIGHT_SCREEN, + MOVE_MIST, + MOVE_HAZE, + MOVE_SUPERSONIC, + MOVE_DRAGON_BREATH, + MOVE_DRAGON_DANCE), + + egg_moves(CHIKORITA, + MOVE_VINE_WHIP, + MOVE_LEECH_SEED, + MOVE_COUNTER, + MOVE_ANCIENT_POWER, + MOVE_FLAIL, + MOVE_NATURE_POWER, + MOVE_INGRAIN, + MOVE_GRASS_WHISTLE), + + egg_moves(CYNDAQUIL, + MOVE_FURY_SWIPES, + MOVE_QUICK_ATTACK, + MOVE_REVERSAL, + MOVE_THRASH, + MOVE_FORESIGHT, + MOVE_COVET, + MOVE_HOWL, + MOVE_CRUSH_CLAW), + + egg_moves(TOTODILE, + MOVE_CRUNCH, + MOVE_THRASH, + MOVE_HYDRO_PUMP, + MOVE_ANCIENT_POWER, + MOVE_ROCK_SLIDE, + MOVE_MUD_SPORT, + MOVE_WATER_SPORT, + MOVE_DRAGON_CLAW), + + egg_moves(SENTRET, + MOVE_DOUBLE_EDGE, + MOVE_PURSUIT, + MOVE_SLASH, + MOVE_FOCUS_ENERGY, + MOVE_REVERSAL, + MOVE_SUBSTITUTE, + MOVE_TRICK, + MOVE_ASSIST), + + egg_moves(HOOTHOOT, + MOVE_MIRROR_MOVE, + MOVE_SUPERSONIC, + MOVE_FAINT_ATTACK, + MOVE_WING_ATTACK, + MOVE_WHIRLWIND, + MOVE_SKY_ATTACK, + MOVE_FEATHER_DANCE), + + egg_moves(LEDYBA, + MOVE_PSYBEAM, + MOVE_BIDE, + MOVE_SILVER_WIND), + + egg_moves(SPINARAK, + MOVE_PSYBEAM, + MOVE_DISABLE, + MOVE_SONIC_BOOM, + MOVE_BATON_PASS, + MOVE_PURSUIT, + MOVE_SIGNAL_BEAM), + + egg_moves(CHINCHOU, + MOVE_FLAIL, + MOVE_SCREECH, + MOVE_AMNESIA), + + egg_moves(PICHU, + MOVE_REVERSAL, + MOVE_BIDE, + MOVE_PRESENT, + MOVE_ENCORE, + MOVE_DOUBLE_SLAP, + MOVE_WISH, + MOVE_CHARGE), + + egg_moves(CLEFFA, + MOVE_PRESENT, + MOVE_METRONOME, + MOVE_AMNESIA, + MOVE_BELLY_DRUM, + MOVE_SPLASH, + MOVE_MIMIC, + MOVE_WISH, + MOVE_SUBSTITUTE), + + egg_moves(IGGLYBUFF, + MOVE_PERISH_SONG, + MOVE_PRESENT, + MOVE_FAINT_ATTACK, + MOVE_WISH, + MOVE_FAKE_TEARS), + + egg_moves(TOGEPI, + MOVE_PRESENT, + MOVE_MIRROR_MOVE, + MOVE_PECK, + MOVE_FORESIGHT, + MOVE_FUTURE_SIGHT, + MOVE_SUBSTITUTE, + MOVE_PSYCH_UP), + + egg_moves(NATU, + MOVE_HAZE, + MOVE_DRILL_PECK, + MOVE_QUICK_ATTACK, + MOVE_FAINT_ATTACK, + MOVE_STEEL_WING, + MOVE_PSYCH_UP, + MOVE_FEATHER_DANCE, + MOVE_REFRESH), + + egg_moves(MAREEP, + MOVE_TAKE_DOWN, + MOVE_BODY_SLAM, + MOVE_SAFEGUARD, + MOVE_SCREECH, + MOVE_REFLECT, + MOVE_ODOR_SLEUTH, + MOVE_CHARGE), + + egg_moves(MARILL, + MOVE_LIGHT_SCREEN, + MOVE_PRESENT, + MOVE_AMNESIA, + MOVE_FUTURE_SIGHT, + MOVE_BELLY_DRUM, + MOVE_PERISH_SONG, + MOVE_SUPERSONIC, + MOVE_SUBSTITUTE), + + egg_moves(SUDOWOODO, + MOVE_SELF_DESTRUCT), + + egg_moves(HOPPIP, + MOVE_CONFUSION, + MOVE_ENCORE, + MOVE_DOUBLE_EDGE, + MOVE_REFLECT, + MOVE_AMNESIA, + MOVE_HELPING_HAND, + MOVE_PSYCH_UP), + + egg_moves(AIPOM, + MOVE_COUNTER, + MOVE_SCREECH, + MOVE_PURSUIT, + MOVE_AGILITY, + MOVE_SPITE, + MOVE_SLAM, + MOVE_DOUBLE_SLAP, + MOVE_BEAT_UP), + + egg_moves(SUNKERN, + MOVE_GRASS_WHISTLE, + MOVE_ENCORE, + MOVE_LEECH_SEED, + MOVE_NATURE_POWER, + MOVE_CURSE, + MOVE_HELPING_HAND), + + egg_moves(YANMA, + MOVE_WHIRLWIND, + MOVE_REVERSAL, + MOVE_LEECH_LIFE, + MOVE_SIGNAL_BEAM, + MOVE_SILVER_WIND), + + egg_moves(WOOPER, + MOVE_BODY_SLAM, + MOVE_ANCIENT_POWER, + MOVE_SAFEGUARD, + MOVE_CURSE, + MOVE_MUD_SPORT, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP), + + egg_moves(MURKROW, + MOVE_WHIRLWIND, + MOVE_DRILL_PECK, + MOVE_MIRROR_MOVE, + MOVE_WING_ATTACK, + MOVE_SKY_ATTACK, + MOVE_CONFUSE_RAY, + MOVE_FEATHER_DANCE, + MOVE_PERISH_SONG), + + egg_moves(MISDREAVUS, + MOVE_SCREECH, + MOVE_DESTINY_BOND, + MOVE_PSYCH_UP, + MOVE_IMPRISON), + + egg_moves(GIRAFARIG, + MOVE_TAKE_DOWN, + MOVE_AMNESIA, + MOVE_FORESIGHT, + MOVE_FUTURE_SIGHT, + MOVE_BEAT_UP, + MOVE_PSYCH_UP, + MOVE_WISH, + MOVE_MAGIC_COAT), + + egg_moves(PINECO, + MOVE_REFLECT, + MOVE_PIN_MISSILE, + MOVE_FLAIL, + MOVE_SWIFT, + MOVE_COUNTER, + MOVE_SAND_TOMB), + + egg_moves(DUNSPARCE, + MOVE_BIDE, + MOVE_ANCIENT_POWER, + MOVE_ROCK_SLIDE, + MOVE_BITE, + MOVE_HEADBUTT, + MOVE_ASTONISH, + MOVE_CURSE), + + egg_moves(GLIGAR, + MOVE_METAL_CLAW, + MOVE_WING_ATTACK, + MOVE_RAZOR_WIND, + MOVE_COUNTER, + MOVE_SAND_TOMB), + + egg_moves(SNUBBULL, + MOVE_METRONOME, + MOVE_FAINT_ATTACK, + MOVE_REFLECT, + MOVE_PRESENT, + MOVE_CRUNCH, + MOVE_HEAL_BELL, + MOVE_SNORE, + MOVE_SMELLING_SALT), + + egg_moves(QWILFISH, + MOVE_FLAIL, + MOVE_HAZE, + MOVE_BUBBLE_BEAM, + MOVE_SUPERSONIC, + MOVE_ASTONISH), + + egg_moves(SHUCKLE, + MOVE_SWEET_SCENT), + + egg_moves(HERACROSS, + MOVE_HARDEN, + MOVE_BIDE, + MOVE_FLAIL, + MOVE_FALSE_SWIPE), + + egg_moves(SNEASEL, + MOVE_COUNTER, + MOVE_SPITE, + MOVE_FORESIGHT, + MOVE_REFLECT, + MOVE_BITE, + MOVE_CRUSH_CLAW, + MOVE_FAKE_OUT), + + egg_moves(TEDDIURSA, + MOVE_CRUNCH, + MOVE_TAKE_DOWN, + MOVE_SEISMIC_TOSS, + MOVE_COUNTER, + MOVE_METAL_CLAW, + MOVE_FAKE_TEARS, + MOVE_YAWN, + MOVE_SLEEP_TALK), + + egg_moves(SLUGMA, + MOVE_ACID_ARMOR, + MOVE_HEAT_WAVE), + + egg_moves(SWINUB, + MOVE_TAKE_DOWN, + MOVE_BITE, + MOVE_BODY_SLAM, + MOVE_ROCK_SLIDE, + MOVE_ANCIENT_POWER, + MOVE_MUD_SHOT, + MOVE_ICICLE_SPEAR, + MOVE_DOUBLE_EDGE), + + egg_moves(CORSOLA, + MOVE_ROCK_SLIDE, + MOVE_SCREECH, + MOVE_MIST, + MOVE_AMNESIA, + MOVE_BARRIER, + MOVE_INGRAIN, + MOVE_CONFUSE_RAY, + MOVE_ICICLE_SPEAR), + + egg_moves(REMORAID, + MOVE_AURORA_BEAM, + MOVE_OCTAZOOKA, + MOVE_SUPERSONIC, + MOVE_HAZE, + MOVE_SCREECH, + MOVE_THUNDER_WAVE, + MOVE_ROCK_BLAST), + + egg_moves(DELIBIRD, + MOVE_AURORA_BEAM, + MOVE_QUICK_ATTACK, + MOVE_FUTURE_SIGHT, + MOVE_SPLASH, + MOVE_RAPID_SPIN, + MOVE_ICE_BALL), + + egg_moves(MANTINE, + MOVE_TWISTER, + MOVE_HYDRO_PUMP, + MOVE_HAZE, + MOVE_SLAM, + MOVE_MUD_SPORT, + MOVE_ROCK_SLIDE), + + egg_moves(SKARMORY, + MOVE_DRILL_PECK, + MOVE_PURSUIT, + MOVE_WHIRLWIND, + MOVE_SKY_ATTACK, + MOVE_CURSE), + + egg_moves(HOUNDOUR, + MOVE_FIRE_SPIN, + MOVE_RAGE, + MOVE_PURSUIT, + MOVE_COUNTER, + MOVE_SPITE, + MOVE_REVERSAL, + MOVE_BEAT_UP, + MOVE_WILL_O_WISP), + + egg_moves(PHANPY, + MOVE_FOCUS_ENERGY, + MOVE_BODY_SLAM, + MOVE_ANCIENT_POWER, + MOVE_SNORE, + MOVE_COUNTER, + MOVE_FISSURE), + + egg_moves(STANTLER, + MOVE_SPITE, + MOVE_DISABLE, + MOVE_BITE, + MOVE_SWAGGER, + MOVE_PSYCH_UP, + MOVE_EXTRASENSORY), + + egg_moves(TYROGUE, + MOVE_RAPID_SPIN, + MOVE_HI_JUMP_KICK, + MOVE_MACH_PUNCH, + MOVE_MIND_READER, + MOVE_HELPING_HAND), + + egg_moves(SMOOCHUM, + MOVE_MEDITATE, + MOVE_PSYCH_UP, + MOVE_FAKE_OUT, + MOVE_WISH, + MOVE_ICE_PUNCH), + + egg_moves(ELEKID, + MOVE_KARATE_CHOP, + MOVE_BARRIER, + MOVE_ROLLING_KICK, + MOVE_MEDITATE, + MOVE_CROSS_CHOP, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH), + + egg_moves(MAGBY, + MOVE_KARATE_CHOP, + MOVE_MEGA_PUNCH, + MOVE_BARRIER, + MOVE_SCREECH, + MOVE_CROSS_CHOP, + MOVE_THUNDER_PUNCH), + + egg_moves(MILTANK, + MOVE_PRESENT, + MOVE_REVERSAL, + MOVE_SEISMIC_TOSS, + MOVE_ENDURE, + MOVE_PSYCH_UP, + MOVE_CURSE, + MOVE_HELPING_HAND, + MOVE_SLEEP_TALK), + + egg_moves(LARVITAR, + MOVE_PURSUIT, + MOVE_STOMP, + MOVE_OUTRAGE, + MOVE_FOCUS_ENERGY, + MOVE_ANCIENT_POWER, + MOVE_DRAGON_DANCE, + MOVE_CURSE), + + egg_moves(TREECKO, + MOVE_CRUNCH, + MOVE_MUD_SPORT, + MOVE_ENDEAVOR, + MOVE_LEECH_SEED, + MOVE_DRAGON_BREATH, + MOVE_CRUSH_CLAW), + + egg_moves(TORCHIC, + MOVE_COUNTER, + MOVE_REVERSAL, + MOVE_ENDURE, + MOVE_SWAGGER, + MOVE_ROCK_SLIDE, + MOVE_SMELLING_SALT), + + egg_moves(MUDKIP, + MOVE_REFRESH, + MOVE_UPROAR, + MOVE_CURSE, + MOVE_STOMP, + MOVE_ICE_BALL, + MOVE_MIRROR_COAT), + + egg_moves(POOCHYENA, + MOVE_ASTONISH, + MOVE_POISON_FANG, + MOVE_COVET, + MOVE_LEER, + MOVE_YAWN), + + egg_moves(ZIGZAGOON, + MOVE_CHARM, + MOVE_PURSUIT, + MOVE_SUBSTITUTE, + MOVE_TICKLE, + MOVE_TRICK), + + egg_moves(LOTAD, + MOVE_SYNTHESIS, + MOVE_RAZOR_LEAF, + MOVE_SWEET_SCENT, + MOVE_LEECH_SEED, + MOVE_FLAIL, + MOVE_WATER_GUN), + + egg_moves(SEEDOT, + MOVE_LEECH_SEED, + MOVE_AMNESIA, + MOVE_QUICK_ATTACK, + MOVE_RAZOR_WIND, + MOVE_TAKE_DOWN, + MOVE_FALSE_SWIPE), + + egg_moves(NINCADA, + MOVE_ENDURE, + MOVE_FAINT_ATTACK, + MOVE_GUST, + MOVE_SILVER_WIND), + + egg_moves(TAILLOW, + MOVE_PURSUIT, + MOVE_SUPERSONIC, + MOVE_REFRESH, + MOVE_MIRROR_MOVE, + MOVE_RAGE, + MOVE_SKY_ATTACK), + + egg_moves(SHROOMISH, + MOVE_FAKE_TEARS, + MOVE_SWAGGER, + MOVE_CHARM, + MOVE_FALSE_SWIPE, + MOVE_HELPING_HAND), + + egg_moves(SPINDA, + MOVE_ENCORE, + MOVE_ROCK_SLIDE, + MOVE_ASSIST, + MOVE_DISABLE, + MOVE_BATON_PASS, + MOVE_WISH, + MOVE_TRICK, + MOVE_SMELLING_SALT), + + egg_moves(WINGULL, + MOVE_MIST, + MOVE_TWISTER, + MOVE_AGILITY, + MOVE_GUST, + MOVE_WATER_SPORT), + + egg_moves(SURSKIT, + MOVE_FORESIGHT, + MOVE_MUD_SHOT, + MOVE_PSYBEAM, + MOVE_HYDRO_PUMP, + MOVE_MIND_READER), + + egg_moves(WAILMER, + MOVE_DOUBLE_EDGE, + MOVE_THRASH, + MOVE_SWAGGER, + MOVE_SNORE, + MOVE_SLEEP_TALK, + MOVE_CURSE, + MOVE_FISSURE, + MOVE_TICKLE), + + egg_moves(SKITTY, + MOVE_HELPING_HAND, + MOVE_PSYCH_UP, + MOVE_UPROAR, + MOVE_FAKE_TEARS, + MOVE_WISH, + MOVE_BATON_PASS, + MOVE_SUBSTITUTE, + MOVE_TICKLE), + + egg_moves(KECLEON, + MOVE_DISABLE, + MOVE_MAGIC_COAT, + MOVE_TRICK), + + egg_moves(NOSEPASS, + MOVE_MAGNITUDE, + MOVE_ROLLOUT, + MOVE_EXPLOSION), + + egg_moves(TORKOAL, + MOVE_ERUPTION, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_YAWN), + + egg_moves(SABLEYE, + MOVE_PSYCH_UP, + MOVE_RECOVER, + MOVE_MOONLIGHT), + + egg_moves(BARBOACH, + MOVE_THRASH, + MOVE_WHIRLPOOL, + MOVE_SPARK), + + egg_moves(LUVDISC, + MOVE_SPLASH, + MOVE_SUPERSONIC, + MOVE_WATER_SPORT, + MOVE_MUD_SPORT), + + egg_moves(CORPHISH, + MOVE_MUD_SPORT, + MOVE_ENDEAVOR, + MOVE_BODY_SLAM, + MOVE_ANCIENT_POWER), + + egg_moves(FEEBAS, + MOVE_MIRROR_COAT, + MOVE_DRAGON_BREATH, + MOVE_MUD_SPORT, + MOVE_HYPNOSIS, + MOVE_LIGHT_SCREEN, + MOVE_CONFUSE_RAY), + + egg_moves(CARVANHA, + MOVE_HYDRO_PUMP, + MOVE_DOUBLE_EDGE, + MOVE_THRASH), + + egg_moves(TRAPINCH, + MOVE_FOCUS_ENERGY, + MOVE_QUICK_ATTACK, + MOVE_GUST), + + egg_moves(MAKUHITA, + MOVE_FAINT_ATTACK, + MOVE_DETECT, + MOVE_FORESIGHT, + MOVE_HELPING_HAND, + MOVE_CROSS_CHOP, + MOVE_REVENGE, + MOVE_DYNAMIC_PUNCH, + MOVE_COUNTER), + + egg_moves(ELECTRIKE, + MOVE_CRUNCH, + MOVE_HEADBUTT, + MOVE_UPROAR, + MOVE_CURSE, + MOVE_SWIFT), + + egg_moves(NUMEL, + MOVE_HOWL, + MOVE_SCARY_FACE, + MOVE_BODY_SLAM, + MOVE_ROLLOUT, + MOVE_DEFENSE_CURL, + MOVE_STOMP), + + egg_moves(SPHEAL, + MOVE_WATER_SPORT, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP, + MOVE_YAWN, + MOVE_ROCK_SLIDE, + MOVE_CURSE, + MOVE_FISSURE), + + egg_moves(CACNEA, + MOVE_GRASS_WHISTLE, + MOVE_ACID, + MOVE_TEETER_DANCE, + MOVE_DYNAMIC_PUNCH, + MOVE_COUNTER), + + egg_moves(SNORUNT, + MOVE_BLOCK, + MOVE_SPIKES), + + egg_moves(AZURILL, + MOVE_ENCORE, + MOVE_SING, + MOVE_REFRESH, + MOVE_SLAM, + MOVE_TICKLE), + + egg_moves(SPOINK, + MOVE_FUTURE_SIGHT, + MOVE_EXTRASENSORY, + MOVE_SUBSTITUTE, + MOVE_TRICK), + + egg_moves(PLUSLE, + MOVE_SUBSTITUTE, + MOVE_WISH), + + egg_moves(MINUN, + MOVE_SUBSTITUTE, + MOVE_WISH), + + egg_moves(MAWILE, + MOVE_SWORDS_DANCE, + MOVE_FALSE_SWIPE, + MOVE_POISON_FANG, + MOVE_PSYCH_UP, + MOVE_ANCIENT_POWER, + MOVE_TICKLE), + + egg_moves(MEDITITE, + MOVE_FIRE_PUNCH, + MOVE_THUNDER_PUNCH, + MOVE_ICE_PUNCH, + MOVE_FORESIGHT, + MOVE_FAKE_OUT, + MOVE_BATON_PASS, + MOVE_DYNAMIC_PUNCH), + + egg_moves(SWABLU, + MOVE_AGILITY, + MOVE_HAZE, + MOVE_PURSUIT, + MOVE_RAGE), + + egg_moves(DUSKULL, + MOVE_IMPRISON, + MOVE_DESTINY_BOND, + MOVE_PAIN_SPLIT, + MOVE_GRUDGE, + MOVE_MEMENTO, + MOVE_FAINT_ATTACK), + + egg_moves(ROSELIA, + MOVE_SPIKES, + MOVE_SYNTHESIS, + MOVE_PIN_MISSILE, + MOVE_COTTON_SPORE), + + egg_moves(SLAKOTH, + MOVE_PURSUIT, + MOVE_SLASH, + MOVE_BODY_SLAM, + MOVE_SNORE, + MOVE_CRUSH_CLAW, + MOVE_CURSE, + MOVE_SLEEP_TALK), + + egg_moves(GULPIN, + MOVE_DREAM_EATER, + MOVE_ACID_ARMOR, + MOVE_SMOG, + MOVE_PAIN_SPLIT), + + egg_moves(TROPIUS, + MOVE_HEADBUTT, + MOVE_SLAM, + MOVE_RAZOR_WIND, + MOVE_LEECH_SEED, + MOVE_NATURE_POWER), + + egg_moves(WHISMUR, + MOVE_TAKE_DOWN, + MOVE_SNORE, + MOVE_SWAGGER, + MOVE_EXTRASENSORY, + MOVE_SMELLING_SALT), + + egg_moves(CLAMPERL, + MOVE_REFRESH, + MOVE_MUD_SPORT, + MOVE_BODY_SLAM, + MOVE_SUPERSONIC, + MOVE_BARRIER, + MOVE_CONFUSE_RAY), + + egg_moves(ABSOL, + MOVE_BATON_PASS, + MOVE_FAINT_ATTACK, + MOVE_DOUBLE_EDGE, + MOVE_MAGIC_COAT, + MOVE_CURSE, + MOVE_SUBSTITUTE), + + egg_moves(SHUPPET, + MOVE_DISABLE, + MOVE_DESTINY_BOND, + MOVE_FORESIGHT, + MOVE_ASTONISH, + MOVE_IMPRISON), + + egg_moves(SEVIPER, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP, + MOVE_BODY_SLAM), + + egg_moves(ZANGOOSE, + MOVE_FLAIL, + MOVE_DOUBLE_KICK, + MOVE_RAZOR_WIND, + MOVE_COUNTER, + MOVE_ROAR, + MOVE_CURSE), + + egg_moves(RELICANTH, + MOVE_MAGNITUDE, + MOVE_SKULL_BASH, + MOVE_WATER_SPORT, + MOVE_AMNESIA, + MOVE_SLEEP_TALK, + MOVE_ROCK_SLIDE), + + egg_moves(ARON, + MOVE_ENDEAVOR, + MOVE_BODY_SLAM, + MOVE_STOMP, + MOVE_SMELLING_SALT), + + egg_moves(CASTFORM, + MOVE_FUTURE_SIGHT, + MOVE_PSYCH_UP), + + egg_moves(VOLBEAT, + MOVE_BATON_PASS, + MOVE_SILVER_WIND, + MOVE_TRICK), + + egg_moves(ILLUMISE, + MOVE_BATON_PASS, + MOVE_SILVER_WIND, + MOVE_GROWTH), + + egg_moves(LILEEP, + MOVE_BARRIER, + MOVE_RECOVER, + MOVE_MIRROR_COAT, + MOVE_ROCK_SLIDE), + + egg_moves(ANORITH, + MOVE_RAPID_SPIN, + MOVE_KNOCK_OFF, + MOVE_SWORDS_DANCE, + MOVE_ROCK_SLIDE), + + egg_moves(RALTS, + MOVE_DISABLE, + MOVE_WILL_O_WISP, + MOVE_MEAN_LOOK, + MOVE_MEMENTO, + MOVE_DESTINY_BOND), + + egg_moves(BAGON, + MOVE_HYDRO_PUMP, + MOVE_THRASH, + MOVE_DRAGON_RAGE, + MOVE_TWISTER, + MOVE_DRAGON_DANCE), + + egg_moves(CHIMECHO, + MOVE_DISABLE, + MOVE_CURSE, + MOVE_HYPNOSIS, + MOVE_DREAM_EATER), + + 0xFFFF +}; diff --git a/ld_script.txt b/ld_script.txt index 4f3ff093d..10905b93f 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -341,7 +341,7 @@ SECTIONS { . = ALIGN(4); src/trig.o(.rodata); src/util.o(.rodata); - data/daycare.o(.rodata); + src/daycare.o(.rodata); src/egg_hatch.o(.rodata); data/battle_interface.o(.rodata); src/pokeball.o(.rodata); diff --git a/src/daycare.c b/src/daycare.c index 3fc1ecd99..8096904b0 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -10,6 +10,18 @@ #include "name_string_util.h" #include "pokemon_storage_system.h" #include "rng.h" +#include "moves.h" +#include "strings2.h" +#include "data/pokemon/egg_moves.h" + +const u8 *const gUnknown_08209AC4[] = { + DaycareText_GetAlongVeryWell, + DaycareText_GetAlong, + DaycareText_DontLikeOther, + DaycareText_PlayOther +}; + +const u8 gUnknown_08209AD4[] = _("タマゴ"); extern u8 gLastFieldPokeMenuOpened; -- cgit v1.2.3 From c8ceacec344b229a56ec44bf1835345a7a7f5f54 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 30 Aug 2017 09:52:16 -0400 Subject: Through sub_8041960 --- asm/daycare.s | 84 ----------------------------------------------------------- src/daycare.c | 29 +++++++++++++++++++++ 2 files changed, 29 insertions(+), 84 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index c30582c2e..55d068cd1 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,90 +6,6 @@ .text - thumb_func_start sub_804191C -sub_804191C: @ 804191C - push {r4,lr} - adds r4, r0, 0 - bl Random - movs r2, 0x80 - lsls r2, 8 - adds r1, r2, 0 - movs r2, 0x8C - lsls r2, 1 - adds r4, r2 - orrs r1, r0 - strh r1, [r4] - movs r0, 0x86 - bl FlagSet - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_804191C - - thumb_func_start sub_8041940 -sub_8041940: @ 8041940 - push {lr} - ldr r0, _0804194C @ =gSaveBlock1 + 0x2F9C - bl sub_80418F0 - pop {r0} - bx r0 - .align 2, 0 -_0804194C: .4byte gSaveBlock1 + 0x2F9C - thumb_func_end sub_8041940 - - thumb_func_start sub_8041950 -sub_8041950: @ 8041950 - push {lr} - ldr r0, _0804195C @ =gSaveBlock1 + 0x2F9C - bl sub_804191C - pop {r0} - bx r0 - .align 2, 0 -_0804195C: .4byte gSaveBlock1 + 0x2F9C - thumb_func_end sub_8041950 - - thumb_func_start sub_8041960 -sub_8041960: @ 8041960 - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r1, r4, r1 - movs r0, 0xFF - strb r0, [r1] - movs r2, 0 -_08041972: - mov r1, sp - adds r0, r1, r2 - adds r1, r4, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x5 - ble _08041972 - movs r3, 0 - movs r2, 0 -_08041986: - mov r1, sp - adds r0, r1, r2 - ldrb r1, [r0] - adds r0, r1, 0 - cmp r0, 0xFF - beq _08041998 - adds r0, r4, r3 - strb r1, [r0] - adds r3, 0x1 -_08041998: - adds r2, 0x1 - cmp r2, 0x5 - ble _08041986 - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8041960 - thumb_func_start sub_80419A8 sub_80419A8: @ 80419A8 push {r4-r7,lr} diff --git a/src/daycare.c b/src/daycare.c index 8096904b0..922d1fd45 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -307,3 +307,32 @@ void sub_80418F0(struct DayCareData *dayCareData) dayCareData->unk_118 = (Random() % 0xfffe) + 1; FlagSet(0x86); } + +void sub_804191C(struct DayCareData *dayCareData) +{ + dayCareData->unk_118 = Random() | 0x8000; + FlagSet(0x86); +} + +void sub_8041940(void) +{ + sub_80418F0(&gSaveBlock1.daycareData); +} + +void sub_8041950(void) +{ + sub_804191C(&gSaveBlock1.daycareData); +} + +void sub_8041960(u8 *data, u8 idx) +{ + int i, j; + u8 temp[6]; + data[idx] = 0xff; + for (i = 0; i < 6; i ++) + temp[i] = data[i]; + j = 0; + for (i = 0; i < 6; i ++) + if (temp[i] != 0xff) + data[j++] = temp[i]; +} -- cgit v1.2.3 From d5840cf101fb6fd3720c525003b891d50611b9b0 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 30 Aug 2017 10:06:55 -0400 Subject: InheritIVs --- asm/daycare.s | 185 +--------------------------------------------------------- src/daycare.c | 48 +++++++++++++++ 2 files changed, 49 insertions(+), 184 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index 55d068cd1..7d4be18d3 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,189 +6,6 @@ .text - thumb_func_start sub_80419A8 -sub_80419A8: @ 80419A8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x14 - mov r9, r0 - mov r8, r1 - movs r5, 0 - add r1, sp, 0x4 - add r7, sp, 0xC - adds r2, r1, 0 -_080419BE: - adds r0, r2, r5 - strb r5, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _080419BE - movs r5, 0 - adds r6, r1, 0 -_080419D0: - bl Random - mov r1, sp - adds r4, r1, r5 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x6 - subs r1, r5 - bl __modsi3 - adds r0, r6, r0 - ldrb r0, [r0] - strb r0, [r4] - ldrb r1, [r4] - adds r0, r6, 0 - bl sub_8041960 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _080419D0 - movs r5, 0 - movs r4, 0x1 -_08041A00: - bl Random - adds r1, r7, r5 - lsls r0, 16 - lsrs r0, 16 - ands r0, r4 - strb r0, [r1] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _08041A00 - movs r5, 0 -_08041A1A: - mov r1, sp - adds r0, r1, r5 - ldrb r0, [r0] - cmp r0, 0x5 - bhi _08041B02 - lsls r0, 2 - ldr r1, _08041A30 @ =_08041A34 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08041A30: .4byte _08041A34 - .align 2, 0 -_08041A34: - .4byte _08041A4C - .4byte _08041A6C - .4byte _08041A88 - .4byte _08041AA4 - .4byte _08041AC0 - .4byte _08041AE2 -_08041A4C: - adds r0, r7, r5 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - add r0, r8 - movs r1, 0x27 - bl GetBoxMonData - add r2, sp, 0x10 - strb r0, [r2] - mov r0, r9 - movs r1, 0x27 - bl SetMonData - b _08041B02 -_08041A6C: - add r4, sp, 0x10 - adds r0, r7, r5 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - add r0, r8 - movs r1, 0x28 - bl GetBoxMonData - strb r0, [r4] - mov r0, r9 - movs r1, 0x28 - b _08041ADA -_08041A88: - add r4, sp, 0x10 - adds r0, r7, r5 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - add r0, r8 - movs r1, 0x29 - bl GetBoxMonData - strb r0, [r4] - mov r0, r9 - movs r1, 0x29 - b _08041ADA -_08041AA4: - add r4, sp, 0x10 - adds r0, r7, r5 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - add r0, r8 - movs r1, 0x2A - bl GetBoxMonData - strb r0, [r4] - mov r0, r9 - movs r1, 0x2A - b _08041ADA -_08041AC0: - add r4, sp, 0x10 - adds r0, r7, r5 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - add r0, r8 - movs r1, 0x2B - bl GetBoxMonData - strb r0, [r4] - mov r0, r9 - movs r1, 0x2B -_08041ADA: - adds r2, r4, 0 - bl SetMonData - b _08041B02 -_08041AE2: - add r4, sp, 0x10 - adds r0, r7, r5 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - add r0, r8 - movs r1, 0x2C - bl GetBoxMonData - strb r0, [r4] - mov r0, r9 - movs r1, 0x2C - adds r2, r4, 0 - bl SetMonData -_08041B02: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _08041A1A - add sp, 0x14 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80419A8 - thumb_func_start pokemon_get_eggmoves pokemon_get_eggmoves: @ 8041B1C push {r4-r7,lr} @@ -828,7 +645,7 @@ sub_8041FC4: @ 8041FC4 bl sub_80420FC mov r0, sp adds r1, r5, 0 - bl sub_80419A8 + bl InheritIVs ldrb r0, [r6, 0x1] lsls r1, r0, 2 adds r1, r0 diff --git a/src/daycare.c b/src/daycare.c index 922d1fd45..641b8d68d 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -336,3 +336,51 @@ void sub_8041960(u8 *data, u8 idx) if (temp[i] != 0xff) data[j++] = temp[i]; } + +void InheritIVs(struct Pokemon *egg, struct DayCareData *dayCareData) +{ + u8 i; + u8 selectedIvs[3]; + u8 allIvs[6]; + u8 whichParent[3]; + u8 iv; + for (i = 0; i < 6; i ++) + allIvs[i] = i; + for (i = 0; i < 3; i ++) + { + selectedIvs[i] = allIvs[Random() % (6 - i)]; + sub_8041960(allIvs, selectedIvs[i]); + } + for (i = 0; i < 3; i ++) + whichParent[i] = Random() % 2; + for (i = 0; i < 3; i ++) + { + switch (selectedIvs[i]) + { + case 0: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_HP_IV); + SetMonData(egg, MON_DATA_HP_IV, &iv); + break; + case 1: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_ATK_IV); + SetMonData(egg, MON_DATA_ATK_IV, &iv); + break; + case 2: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_DEF_IV); + SetMonData(egg, MON_DATA_DEF_IV, &iv); + break; + case 3: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPD_IV); + SetMonData(egg, MON_DATA_SPD_IV, &iv); + break; + case 4: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPATK_IV); + SetMonData(egg, MON_DATA_SPATK_IV, &iv); + break; + case 5: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPDEF_IV); + SetMonData(egg, MON_DATA_SPDEF_IV, &iv); + break; + } + } +} -- cgit v1.2.3 From 562454400bf37a5a9bd945969ef43d8c416bef12 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 30 Aug 2017 12:39:29 -0400 Subject: Nearly-matching pokemon_get_eggmoves --- asm/daycare.s | 88 --------------------------------------------- src/daycare.c | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 113 insertions(+), 89 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index 7d4be18d3..9cc8c54a8 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,94 +6,6 @@ .text - thumb_func_start pokemon_get_eggmoves -pokemon_get_eggmoves: @ 8041B1C - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r1 - movs r6, 0 - movs r4, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r3, r0, 16 - movs r2, 0 - ldr r5, _08041B44 @ =gEggMoves - ldrh r1, [r5] - ldr r7, _08041B48 @ =0x00004e20 - adds r0, r3, r7 - cmp r1, r0 - bne _08041B4C - movs r4, 0x1 - b _08041B6E - .align 2, 0 -_08041B44: .4byte gEggMoves -_08041B48: .4byte 0x00004e20 -_08041B4C: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, _08041BB8 @ =0x00000471 - ldr r5, _08041BBC @ =gEggMoves - cmp r2, r0 - bhi _08041B6E - lsls r0, r2, 1 - adds r0, r5 - ldrh r1, [r0] - ldr r7, _08041BC0 @ =0x00004e20 - adds r0, r3, r7 - cmp r1, r0 - bne _08041B4C - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 -_08041B6E: - movs r2, 0 - lsls r0, r4, 1 - adds r0, r5 - ldrh r0, [r0] - ldr r1, _08041BC0 @ =0x00004e20 - cmp r0, r1 - bhi _08041BAA - adds r7, r5, 0 - adds r3, r1, 0 -_08041B80: - lsls r1, r2, 1 - add r1, r8 - adds r0, r4, r2 - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x9 - bhi _08041BAA - adds r0, r4, r2 - lsls r0, 1 - adds r0, r5 - ldrh r0, [r0] - cmp r0, r3 - bls _08041B80 -_08041BAA: - lsls r0, r6, 24 - lsrs r0, 24 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08041BB8: .4byte 0x00000471 -_08041BBC: .4byte gEggMoves -_08041BC0: .4byte 0x00004e20 - thumb_func_end pokemon_get_eggmoves - thumb_func_start daycare_build_child_moveset daycare_build_child_moveset: @ 8041BC4 push {r4-r7,lr} diff --git a/src/daycare.c b/src/daycare.c index 641b8d68d..129fbeb6d 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -324,7 +324,7 @@ void sub_8041950(void) sub_804191C(&gSaveBlock1.daycareData); } -void sub_8041960(u8 *data, u8 idx) +static void sub_8041960(u8 *data, u8 idx) { int i, j; u8 temp[6]; @@ -384,3 +384,115 @@ void InheritIVs(struct Pokemon *egg, struct DayCareData *dayCareData) } } } + +#ifdef NONMATCHING +u8 pokemon_get_eggmoves(struct Pokemon *egg, u16 buffer[10]) +{ + u16 i, j; + u16 nEggMoves = 0; + u16 offset = 0; + u16 species = GetMonData(egg, MON_DATA_SPECIES); + for (i = 0; i < ARRAY_COUNT(gEggMoves) - 1; i ++) + if (gEggMoves[i] == species + EGG_MOVES_SPECIES_OFFSET) + { + offset = i + 1; + break; + } + // Register differences incurred here due to cryptic duplication of gEggMoves pointer + for (j = 0; j < 10 && gEggMoves[offset + j] <= EGG_MOVES_SPECIES_OFFSET; j ++) + { + buffer[j] = gEggMoves[offset + j]; + nEggMoves ++; + } + return nEggMoves; +} +#else +__attribute__((naked)) +u8 pokemon_get_eggmoves(struct Pokemon *egg, u16 buffer[10]) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r8\n" + "\tpush {r7}\n" + "\tmov r8, r1\n" + "\tmovs r6, 0\n" + "\tmovs r4, 0\n" + "\tmovs r1, 0xB\n" + "\tbl GetMonData\n" + "\tlsls r0, 16\n" + "\tlsrs r3, r0, 16\n" + "\tmovs r2, 0\n" + "\tldr r5, _08041B44 @ =gEggMoves\n" + "\tldrh r1, [r5]\n" + "\tldr r7, _08041B48 @ =0x00004e20\n" + "\tadds r0, r3, r7\n" + "\tcmp r1, r0\n" + "\tbne _08041B4C\n" + "\tmovs r4, 0x1\n" + "\tb _08041B6E\n" + "\t.align 2, 0\n" + "_08041B44: .4byte gEggMoves\n" + "_08041B48: .4byte 0x00004e20\n" + "_08041B4C:\n" + "\tadds r0, r2, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r2, r0, 16\n" + "\tldr r0, _08041BB8 @ =0x00000471\n" + "\tldr r5, _08041BBC @ =gEggMoves\n" + "\tcmp r2, r0\n" + "\tbhi _08041B6E\n" + "\tlsls r0, r2, 1\n" + "\tadds r0, r5\n" + "\tldrh r1, [r0]\n" + "\tldr r7, _08041BC0 @ =0x00004e20\n" + "\tadds r0, r3, r7\n" + "\tcmp r1, r0\n" + "\tbne _08041B4C\n" + "\tadds r0, r2, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r4, r0, 16\n" + "_08041B6E:\n" + "\tmovs r2, 0\n" + "\tlsls r0, r4, 1\n" + "\tadds r0, r5\n" + "\tldrh r0, [r0]\n" + "\tldr r1, _08041BC0 @ =0x00004e20\n" + "\tcmp r0, r1\n" + "\tbhi _08041BAA\n" + "\tadds r7, r5, 0\n" + "\tadds r3, r1, 0\n" + "_08041B80:\n" + "\tlsls r1, r2, 1\n" + "\tadd r1, r8\n" + "\tadds r0, r4, r2\n" + "\tlsls r0, 1\n" + "\tadds r0, r7\n" + "\tldrh r0, [r0]\n" + "\tstrh r0, [r1]\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r6, r0, 16\n" + "\tadds r0, r2, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r2, r0, 16\n" + "\tcmp r2, 0x9\n" + "\tbhi _08041BAA\n" + "\tadds r0, r4, r2\n" + "\tlsls r0, 1\n" + "\tadds r0, r5\n" + "\tldrh r0, [r0]\n" + "\tcmp r0, r3\n" + "\tbls _08041B80\n" + "_08041BAA:\n" + "\tlsls r0, r6, 24\n" + "\tlsrs r0, 24\n" + "\tpop {r3}\n" + "\tmov r8, r3\n" + "\tpop {r4-r7}\n" + "\tpop {r1}\n" + "\tbx r1\n" + "\t.align 2, 0\n" + "_08041BB8: .4byte 0x00000471\n" + "_08041BBC: .4byte gEggMoves\n" + "_08041BC0: .4byte 0x00004e20"); +} +#endif -- cgit v1.2.3 From 6442f46338f5efd04b76a3790a06ee90101f5441 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 30 Aug 2017 15:19:26 -0400 Subject: Nonmatching build_child_moveset --- asm/daycare.s | 338 ------------------------------------------------------ include/pokemon.h | 1 + src/daycare.c | 91 +++++++++++++++ 3 files changed, 92 insertions(+), 338 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index 9cc8c54a8..a9612e8f7 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,344 +6,6 @@ .text - thumb_func_start daycare_build_child_moveset -daycare_build_child_moveset: @ 8041BC4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - adds r7, r0, 0 - mov r10, r1 - mov r9, r2 - movs r0, 0 - str r0, [sp] - movs r6, 0 - ldr r5, _08041CC8 @ =gUnknown_03000500 - movs r2, 0 - ldr r4, _08041CCC @ =gUnknown_030004D8 - ldr r3, _08041CD0 @ =gUnknown_030004E0 -_08041BE4: - lsls r1, r6, 1 - adds r0, r1, r5 - strh r2, [r0] - adds r0, r1, r4 - strh r2, [r0] - adds r1, r3 - strh r2, [r1] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x3 - bls _08041BE4 - movs r6, 0 - ldr r2, _08041CD4 @ =gUnknown_030004E8 - movs r1, 0 -_08041C02: - lsls r0, r6, 1 - adds r0, r2 - strh r1, [r0] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x9 - bls _08041C02 - movs r6, 0 - ldr r2, _08041CD8 @ =gUnknown_03000470 - movs r1, 0 -_08041C18: - lsls r0, r6, 1 - adds r0, r2 - strh r1, [r0] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x31 - bls _08041C18 - adds r0, r7, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - ldr r1, _08041CD8 @ =gUnknown_03000470 - bl GetLevelUpMovesBySpecies - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - movs r6, 0 - ldr r1, _08041CCC @ =gUnknown_030004D8 - mov r8, r1 -_08041C46: - adds r5, r6, 0 - adds r5, 0xD - mov r0, r10 - adds r1, r5, 0 - bl GetBoxMonData - lsls r4, r6, 1 - mov r2, r8 - adds r1, r4, r2 - strh r0, [r1] - mov r0, r9 - adds r1, r5, 0 - bl GetBoxMonData - ldr r1, _08041CC8 @ =gUnknown_03000500 - adds r4, r1 - strh r0, [r4] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x3 - bls _08041C46 - ldr r1, _08041CD4 @ =gUnknown_030004E8 - adds r0, r7, 0 - bl pokemon_get_eggmoves - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r6, 0 -_08041C82: - ldr r0, _08041CCC @ =gUnknown_030004D8 - lsls r1, r6, 1 - adds r2, r1, r0 - ldrh r1, [r2] - mov r9, r0 - cmp r1, 0 - beq _08041CF8 - movs r5, 0 - cmp r5, r8 - bcs _08041CEA - adds r4, r2, 0 - ldr r2, _08041CDC @ =0x0000ffff -_08041C9A: - ldr r0, _08041CD4 @ =gUnknown_030004E8 - lsls r1, r5, 1 - adds r1, r0 - ldrh r0, [r4] - ldrh r1, [r1] - cmp r0, r1 - bne _08041CE0 - adds r1, r0, 0 - adds r0, r7, 0 - str r2, [sp, 0x8] - bl GiveMoveToMon - lsls r0, 16 - lsrs r0, 16 - ldr r2, [sp, 0x8] - cmp r0, r2 - bne _08041CEA - ldrh r1, [r4] - adds r0, r7, 0 - bl DeleteFirstMoveAndGiveMoveToMon - b _08041CEA - .align 2, 0 -_08041CC8: .4byte gUnknown_03000500 -_08041CCC: .4byte gUnknown_030004D8 -_08041CD0: .4byte gUnknown_030004E0 -_08041CD4: .4byte gUnknown_030004E8 -_08041CD8: .4byte gUnknown_03000470 -_08041CDC: .4byte 0x0000ffff -_08041CE0: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, r8 - bcc _08041C9A -_08041CEA: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r3, _08041E14 @ =gUnknown_030004D8 - mov r9, r3 - cmp r6, 0x3 - bls _08041C82 -_08041CF8: - movs r6, 0 -_08041CFA: - lsls r0, r6, 1 - mov r2, r9 - adds r1, r0, r2 - ldrh r1, [r1] - adds r2, r0, 0 - adds r6, 0x1 - mov r8, r6 - cmp r1, 0 - beq _08041D5C - movs r5, 0 - ldr r0, _08041E14 @ =gUnknown_030004D8 - adds r4, r2, r0 - ldr r6, _08041E18 @ =0x0000ffff - mov r9, r0 -_08041D16: - ldr r3, _08041E1C @ =0x00000121 - adds r0, r5, r3 - lsls r0, 16 - lsrs r0, 16 - bl ItemIdToBattleMoveId - ldrh r1, [r4] - lsls r0, 16 - lsrs r0, 16 - cmp r1, r0 - bne _08041D52 - lsls r1, r5, 24 - lsrs r1, 24 - adds r0, r7, 0 - bl CanMonLearnTMHM - cmp r0, 0 - beq _08041D52 - ldrh r1, [r4] - adds r0, r7, 0 - bl GiveMoveToMon - lsls r0, 16 - lsrs r0, 16 - cmp r0, r6 - bne _08041D52 - ldrh r1, [r4] - adds r0, r7, 0 - bl DeleteFirstMoveAndGiveMoveToMon -_08041D52: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x39 - bls _08041D16 -_08041D5C: - mov r1, r8 - lsls r0, r1, 16 - lsrs r6, r0, 16 - cmp r6, 0x3 - bls _08041CFA - movs r6, 0 - mov r2, r9 - ldrh r0, [r2] - ldr r3, _08041E20 @ =gUnknown_030004E0 - mov r10, r3 - cmp r0, 0 - beq _08041DC6 - mov r4, r9 - ldr r0, _08041E24 @ =gUnknown_03000500 - mov r9, r0 - mov r12, r10 -_08041D7C: - movs r5, 0 - lsls r2, r6, 1 - adds r6, 0x1 - mov r8, r6 - adds r3, r2, r4 -_08041D86: - lsls r0, r5, 1 - add r0, r9 - ldrh r2, [r3] - adds r1, r2, 0 - ldrh r0, [r0] - cmp r1, r0 - bne _08041DA8 - cmp r1, 0 - beq _08041DA8 - ldr r1, [sp] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp] - lsls r1, 1 - add r1, r12 - strh r2, [r1] -_08041DA8: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3 - bls _08041D86 - mov r1, r8 - lsls r0, r1, 16 - lsrs r6, r0, 16 - cmp r6, 0x3 - bhi _08041DC6 - lsls r0, r6, 1 - adds r0, r4 - ldrh r0, [r0] - cmp r0, 0 - bne _08041D7C -_08041DC6: - movs r6, 0 - mov r2, r10 - ldrh r0, [r2] - cmp r0, 0 - beq _08041E50 -_08041DD0: - movs r5, 0 - adds r3, r6, 0x1 - mov r8, r3 - ldr r0, [sp, 0x4] - cmp r5, r0 - bcs _08041E38 - ldr r2, _08041E18 @ =0x0000ffff -_08041DDE: - ldr r1, _08041E28 @ =gUnknown_03000470 - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - cmp r1, 0 - beq _08041E2C - lsls r0, r6, 1 - mov r3, r10 - adds r4, r0, r3 - ldrh r0, [r4] - cmp r0, r1 - bne _08041E2C - adds r1, r0, 0 - adds r0, r7, 0 - str r2, [sp, 0x8] - bl GiveMoveToMon - lsls r0, 16 - lsrs r0, 16 - ldr r2, [sp, 0x8] - cmp r0, r2 - bne _08041E38 - ldrh r1, [r4] - adds r0, r7, 0 - bl DeleteFirstMoveAndGiveMoveToMon - b _08041E38 - .align 2, 0 -_08041E14: .4byte gUnknown_030004D8 -_08041E18: .4byte 0x0000ffff -_08041E1C: .4byte 0x00000121 -_08041E20: .4byte gUnknown_030004E0 -_08041E24: .4byte gUnknown_03000500 -_08041E28: .4byte gUnknown_03000470 -_08041E2C: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, [sp, 0x4] - cmp r5, r0 - bcc _08041DDE -_08041E38: - mov r1, r8 - lsls r0, r1, 16 - lsrs r6, r0, 16 - cmp r6, 0x3 - bhi _08041E50 - ldr r0, _08041E60 @ =gUnknown_030004E0 - lsls r1, r6, 1 - adds r1, r0 - ldrh r1, [r1] - mov r10, r0 - cmp r1, 0 - bne _08041DD0 -_08041E50: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08041E60: .4byte gUnknown_030004E0 - thumb_func_end daycare_build_child_moveset - thumb_func_start sub_8041E64 sub_8041E64: @ 8041E64 adds r3, r0, 0 diff --git a/include/pokemon.h b/include/pokemon.h index 7d94dbb7d..da9a5f041 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -601,5 +601,6 @@ u8 *sub_8040D08(); bool32 sub_8040D3C(u16 species, u8 *name, u8 language); s8 sub_8040A54(struct Pokemon *, u8); u16 GetMonEVCount(struct Pokemon *); +u8 GetLevelUpMovesBySpecies(u16, u16 *); #endif // GUARD_POKEMON_H diff --git a/src/daycare.c b/src/daycare.c index 129fbeb6d..a4dd438bb 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -13,6 +13,7 @@ #include "moves.h" #include "strings2.h" #include "data/pokemon/egg_moves.h" +#include "party_menu.h" const u8 *const gUnknown_08209AC4[] = { DaycareText_GetAlongVeryWell, @@ -496,3 +497,93 @@ u8 pokemon_get_eggmoves(struct Pokemon *egg, u16 buffer[10]) "_08041BC0: .4byte 0x00004e20"); } #endif + +extern u16 gUnknown_03000470[50]; +extern u16 gUnknown_030004D8[4]; +extern u16 gUnknown_030004E0[4]; +extern u16 gUnknown_030004E8[10]; +extern u16 gUnknown_03000500[4]; + +void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, struct BoxPokemon *mom) +{ + u16 numSharedParentMoves; + u8 numLevelUpMoves; + u8 numEggMoves; + u16 i, j; + + numSharedParentMoves = 0; + for (i = 0; i < 4; i ++) + { + gUnknown_03000500[i] = 0; + gUnknown_030004D8[i] = 0; + gUnknown_030004E0[i] = 0; + } + for (i = 0; i < 10; i ++) + gUnknown_030004E8[i] = 0; + for (i = 0; i < 50; i ++) + gUnknown_03000470[i] = 0; + + numLevelUpMoves = GetLevelUpMovesBySpecies(GetMonData(egg, MON_DATA_SPECIES), gUnknown_03000470); + for (i = 0; i < 4; i ++) + { + gUnknown_030004D8[i] = GetBoxMonData(dad, MON_DATA_MOVE1 + i); + gUnknown_03000500[i] = GetBoxMonData(mom, MON_DATA_MOVE1 + i); + } + numEggMoves = pokemon_get_eggmoves(egg, gUnknown_030004E8); + + for (i = 0; i < 4; i ++) + { + if (gUnknown_030004D8[i] != MOVE_NONE) + { + for (j = 0; j < numEggMoves; j ++) + { + if (gUnknown_030004D8[i] == gUnknown_030004E8[j]) + { + if (GiveMoveToMon(egg, gUnknown_030004D8[i]) == 0xffff) + DeleteFirstMoveAndGiveMoveToMon(egg, gUnknown_030004D8[i]); + break; + } + } + } + else + break; + } + for (i = 0; i < 4; i ++) + { + if (gUnknown_030004D8[i] != MOVE_NONE) + { + for (j = 0; j < 50 + 8; j ++) + { + if (gUnknown_030004D8[i] == ItemIdToBattleMoveId(ITEM_TM01 + j) && CanMonLearnTMHM(egg, j)) + { + if (GiveMoveToMon(egg, gUnknown_030004D8[i]) == 0xffff) + DeleteFirstMoveAndGiveMoveToMon(egg, gUnknown_030004D8[i]); + } + } + } + } + for (i = 0; i < 4; i ++) + { + if (gUnknown_030004D8[i] == MOVE_NONE) + break; + for (j = 0; j < 4; j ++) + { + if (gUnknown_030004D8[i] == gUnknown_03000500[j] && gUnknown_030004D8[i] != MOVE_NONE) + gUnknown_030004E0[numSharedParentMoves++] = gUnknown_030004D8[i]; + } + } + for (i = 0; i < 4; i ++) + { + if (gUnknown_030004E0[i] == MOVE_NONE) + break; + for (j = 0; j < numLevelUpMoves; j ++) + { + if (gUnknown_03000470[j] != MOVE_NONE && gUnknown_030004E0[i] == gUnknown_03000470[j]) + { + if (GiveMoveToMon(egg, gUnknown_030004E0[i]) == 0xffff) + DeleteFirstMoveAndGiveMoveToMon(egg, gUnknown_030004E0[i]); + break; + } + } + } +} -- cgit v1.2.3 From 433823c4e330032b68a379784c98efaa3a94f15c Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 30 Aug 2017 15:32:14 -0400 Subject: Fix pokemon_get_eggmoves --- src/daycare.c | 463 +++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 361 insertions(+), 102 deletions(-) diff --git a/src/daycare.c b/src/daycare.c index a4dd438bb..38bfba85e 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -386,117 +386,35 @@ void InheritIVs(struct Pokemon *egg, struct DayCareData *dayCareData) } } -#ifdef NONMATCHING -u8 pokemon_get_eggmoves(struct Pokemon *egg, u16 buffer[10]) +u8 pokemon_get_eggmoves(struct Pokemon *pokemon, u16 *eggMoves) { - u16 i, j; - u16 nEggMoves = 0; - u16 offset = 0; - u16 species = GetMonData(egg, MON_DATA_SPECIES); + u16 eggMoveIdx; + u16 numMovesFound; + u16 species; + u16 i; + + numMovesFound = 0; + eggMoveIdx = 0; + species = GetMonData(pokemon, MON_DATA_SPECIES); for (i = 0; i < ARRAY_COUNT(gEggMoves) - 1; i ++) + { if (gEggMoves[i] == species + EGG_MOVES_SPECIES_OFFSET) { - offset = i + 1; + eggMoveIdx = i + 1; break; } - // Register differences incurred here due to cryptic duplication of gEggMoves pointer - for (j = 0; j < 10 && gEggMoves[offset + j] <= EGG_MOVES_SPECIES_OFFSET; j ++) + } + for (i = 0; i < 10; i ++) { - buffer[j] = gEggMoves[offset + j]; - nEggMoves ++; + if (gEggMoves[eggMoveIdx + i] > EGG_MOVES_SPECIES_OFFSET) + { + break; + } + eggMoves[i] = gEggMoves[eggMoveIdx + i]; + numMovesFound++; } - return nEggMoves; -} -#else -__attribute__((naked)) -u8 pokemon_get_eggmoves(struct Pokemon *egg, u16 buffer[10]) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r8\n" - "\tpush {r7}\n" - "\tmov r8, r1\n" - "\tmovs r6, 0\n" - "\tmovs r4, 0\n" - "\tmovs r1, 0xB\n" - "\tbl GetMonData\n" - "\tlsls r0, 16\n" - "\tlsrs r3, r0, 16\n" - "\tmovs r2, 0\n" - "\tldr r5, _08041B44 @ =gEggMoves\n" - "\tldrh r1, [r5]\n" - "\tldr r7, _08041B48 @ =0x00004e20\n" - "\tadds r0, r3, r7\n" - "\tcmp r1, r0\n" - "\tbne _08041B4C\n" - "\tmovs r4, 0x1\n" - "\tb _08041B6E\n" - "\t.align 2, 0\n" - "_08041B44: .4byte gEggMoves\n" - "_08041B48: .4byte 0x00004e20\n" - "_08041B4C:\n" - "\tadds r0, r2, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r2, r0, 16\n" - "\tldr r0, _08041BB8 @ =0x00000471\n" - "\tldr r5, _08041BBC @ =gEggMoves\n" - "\tcmp r2, r0\n" - "\tbhi _08041B6E\n" - "\tlsls r0, r2, 1\n" - "\tadds r0, r5\n" - "\tldrh r1, [r0]\n" - "\tldr r7, _08041BC0 @ =0x00004e20\n" - "\tadds r0, r3, r7\n" - "\tcmp r1, r0\n" - "\tbne _08041B4C\n" - "\tadds r0, r2, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r4, r0, 16\n" - "_08041B6E:\n" - "\tmovs r2, 0\n" - "\tlsls r0, r4, 1\n" - "\tadds r0, r5\n" - "\tldrh r0, [r0]\n" - "\tldr r1, _08041BC0 @ =0x00004e20\n" - "\tcmp r0, r1\n" - "\tbhi _08041BAA\n" - "\tadds r7, r5, 0\n" - "\tadds r3, r1, 0\n" - "_08041B80:\n" - "\tlsls r1, r2, 1\n" - "\tadd r1, r8\n" - "\tadds r0, r4, r2\n" - "\tlsls r0, 1\n" - "\tadds r0, r7\n" - "\tldrh r0, [r0]\n" - "\tstrh r0, [r1]\n" - "\tadds r0, r6, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r6, r0, 16\n" - "\tadds r0, r2, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r2, r0, 16\n" - "\tcmp r2, 0x9\n" - "\tbhi _08041BAA\n" - "\tadds r0, r4, r2\n" - "\tlsls r0, 1\n" - "\tadds r0, r5\n" - "\tldrh r0, [r0]\n" - "\tcmp r0, r3\n" - "\tbls _08041B80\n" - "_08041BAA:\n" - "\tlsls r0, r6, 24\n" - "\tlsrs r0, 24\n" - "\tpop {r3}\n" - "\tmov r8, r3\n" - "\tpop {r4-r7}\n" - "\tpop {r1}\n" - "\tbx r1\n" - "\t.align 2, 0\n" - "_08041BB8: .4byte 0x00000471\n" - "_08041BBC: .4byte gEggMoves\n" - "_08041BC0: .4byte 0x00004e20"); + return numMovesFound; } -#endif extern u16 gUnknown_03000470[50]; extern u16 gUnknown_030004D8[4]; @@ -504,6 +422,7 @@ extern u16 gUnknown_030004E0[4]; extern u16 gUnknown_030004E8[10]; extern u16 gUnknown_03000500[4]; +#ifdef NONMATCHING void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, struct BoxPokemon *mom) { u16 numSharedParentMoves; @@ -587,3 +506,343 @@ void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, st } } } +#else +__attribute__((naked)) +void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, struct BoxPokemon *mom) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0xC\n" + "\tadds r7, r0, 0\n" + "\tmov r10, r1\n" + "\tmov r9, r2\n" + "\tmovs r0, 0\n" + "\tstr r0, [sp]\n" + "\tmovs r6, 0\n" + "\tldr r5, _08041CC8 @ =gUnknown_03000500\n" + "\tmovs r2, 0\n" + "\tldr r4, _08041CCC @ =gUnknown_030004D8\n" + "\tldr r3, _08041CD0 @ =gUnknown_030004E0\n" + "_08041BE4:\n" + "\tlsls r1, r6, 1\n" + "\tadds r0, r1, r5\n" + "\tstrh r2, [r0]\n" + "\tadds r0, r1, r4\n" + "\tstrh r2, [r0]\n" + "\tadds r1, r3\n" + "\tstrh r2, [r1]\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x3\n" + "\tbls _08041BE4\n" + "\tmovs r6, 0\n" + "\tldr r2, _08041CD4 @ =gUnknown_030004E8\n" + "\tmovs r1, 0\n" + "_08041C02:\n" + "\tlsls r0, r6, 1\n" + "\tadds r0, r2\n" + "\tstrh r1, [r0]\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x9\n" + "\tbls _08041C02\n" + "\tmovs r6, 0\n" + "\tldr r2, _08041CD8 @ =gUnknown_03000470\n" + "\tmovs r1, 0\n" + "_08041C18:\n" + "\tlsls r0, r6, 1\n" + "\tadds r0, r2\n" + "\tstrh r1, [r0]\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x31\n" + "\tbls _08041C18\n" + "\tadds r0, r7, 0\n" + "\tmovs r1, 0xB\n" + "\tbl GetMonData\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tldr r1, _08041CD8 @ =gUnknown_03000470\n" + "\tbl GetLevelUpMovesBySpecies\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tstr r0, [sp, 0x4]\n" + "\tmovs r6, 0\n" + "\tldr r1, _08041CCC @ =gUnknown_030004D8\n" + "\tmov r8, r1\n" + "_08041C46:\n" + "\tadds r5, r6, 0\n" + "\tadds r5, 0xD\n" + "\tmov r0, r10\n" + "\tadds r1, r5, 0\n" + "\tbl GetBoxMonData\n" + "\tlsls r4, r6, 1\n" + "\tmov r2, r8\n" + "\tadds r1, r4, r2\n" + "\tstrh r0, [r1]\n" + "\tmov r0, r9\n" + "\tadds r1, r5, 0\n" + "\tbl GetBoxMonData\n" + "\tldr r1, _08041CC8 @ =gUnknown_03000500\n" + "\tadds r4, r1\n" + "\tstrh r0, [r4]\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x3\n" + "\tbls _08041C46\n" + "\tldr r1, _08041CD4 @ =gUnknown_030004E8\n" + "\tadds r0, r7, 0\n" + "\tbl pokemon_get_eggmoves\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmov r8, r0\n" + "\tmovs r6, 0\n" + "_08041C82:\n" + "\tldr r0, _08041CCC @ =gUnknown_030004D8\n" + "\tlsls r1, r6, 1\n" + "\tadds r2, r1, r0\n" + "\tldrh r1, [r2]\n" + "\tmov r9, r0\n" + "\tcmp r1, 0\n" + "\tbeq _08041CF8\n" + "\tmovs r5, 0\n" + "\tcmp r5, r8\n" + "\tbcs _08041CEA\n" + "\tadds r4, r2, 0\n" + "\tldr r2, _08041CDC @ =0x0000ffff\n" + "_08041C9A:\n" + "\tldr r0, _08041CD4 @ =gUnknown_030004E8\n" + "\tlsls r1, r5, 1\n" + "\tadds r1, r0\n" + "\tldrh r0, [r4]\n" + "\tldrh r1, [r1]\n" + "\tcmp r0, r1\n" + "\tbne _08041CE0\n" + "\tadds r1, r0, 0\n" + "\tadds r0, r7, 0\n" + "\tstr r2, [sp, 0x8]\n" + "\tbl GiveMoveToMon\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tldr r2, [sp, 0x8]\n" + "\tcmp r0, r2\n" + "\tbne _08041CEA\n" + "\tldrh r1, [r4]\n" + "\tadds r0, r7, 0\n" + "\tbl DeleteFirstMoveAndGiveMoveToMon\n" + "\tb _08041CEA\n" + "\t.align 2, 0\n" + "_08041CC8: .4byte gUnknown_03000500\n" + "_08041CCC: .4byte gUnknown_030004D8\n" + "_08041CD0: .4byte gUnknown_030004E0\n" + "_08041CD4: .4byte gUnknown_030004E8\n" + "_08041CD8: .4byte gUnknown_03000470\n" + "_08041CDC: .4byte 0x0000ffff\n" + "_08041CE0:\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tcmp r5, r8\n" + "\tbcc _08041C9A\n" + "_08041CEA:\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r6, r0, 16\n" + "\tldr r3, _08041E14 @ =gUnknown_030004D8\n" + "\tmov r9, r3\n" + "\tcmp r6, 0x3\n" + "\tbls _08041C82\n" + "_08041CF8:\n" + "\tmovs r6, 0\n" + "_08041CFA:\n" + "\tlsls r0, r6, 1\n" + "\tmov r2, r9\n" + "\tadds r1, r0, r2\n" + "\tldrh r1, [r1]\n" + "\tadds r2, r0, 0\n" + "\tadds r6, 0x1\n" + "\tmov r8, r6\n" + "\tcmp r1, 0\n" + "\tbeq _08041D5C\n" + "\tmovs r5, 0\n" + "\tldr r0, _08041E14 @ =gUnknown_030004D8\n" + "\tadds r4, r2, r0\n" + "\tldr r6, _08041E18 @ =0x0000ffff\n" + "\tmov r9, r0\n" + "_08041D16:\n" + "\tldr r3, _08041E1C @ =0x00000121\n" + "\tadds r0, r5, r3\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tbl ItemIdToBattleMoveId\n" + "\tldrh r1, [r4]\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tcmp r1, r0\n" + "\tbne _08041D52\n" + "\tlsls r1, r5, 24\n" + "\tlsrs r1, 24\n" + "\tadds r0, r7, 0\n" + "\tbl CanMonLearnTMHM\n" + "\tcmp r0, 0\n" + "\tbeq _08041D52\n" + "\tldrh r1, [r4]\n" + "\tadds r0, r7, 0\n" + "\tbl GiveMoveToMon\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tcmp r0, r6\n" + "\tbne _08041D52\n" + "\tldrh r1, [r4]\n" + "\tadds r0, r7, 0\n" + "\tbl DeleteFirstMoveAndGiveMoveToMon\n" + "_08041D52:\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tcmp r5, 0x39\n" + "\tbls _08041D16\n" + "_08041D5C:\n" + "\tmov r1, r8\n" + "\tlsls r0, r1, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x3\n" + "\tbls _08041CFA\n" + "\tmovs r6, 0\n" + "\tmov r2, r9\n" + "\tldrh r0, [r2]\n" + "\tldr r3, _08041E20 @ =gUnknown_030004E0\n" + "\tmov r10, r3\n" + "\tcmp r0, 0\n" + "\tbeq _08041DC6\n" + "\tmov r4, r9\n" + "\tldr r0, _08041E24 @ =gUnknown_03000500\n" + "\tmov r9, r0\n" + "\tmov r12, r10\n" + "_08041D7C:\n" + "\tmovs r5, 0\n" + "\tlsls r2, r6, 1\n" + "\tadds r6, 0x1\n" + "\tmov r8, r6\n" + "\tadds r3, r2, r4\n" + "_08041D86:\n" + "\tlsls r0, r5, 1\n" + "\tadd r0, r9\n" + "\tldrh r2, [r3]\n" + "\tadds r1, r2, 0\n" + "\tldrh r0, [r0]\n" + "\tcmp r1, r0\n" + "\tbne _08041DA8\n" + "\tcmp r1, 0\n" + "\tbeq _08041DA8\n" + "\tldr r1, [sp]\n" + "\tadds r0, r1, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tstr r0, [sp]\n" + "\tlsls r1, 1\n" + "\tadd r1, r12\n" + "\tstrh r2, [r1]\n" + "_08041DA8:\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tcmp r5, 0x3\n" + "\tbls _08041D86\n" + "\tmov r1, r8\n" + "\tlsls r0, r1, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x3\n" + "\tbhi _08041DC6\n" + "\tlsls r0, r6, 1\n" + "\tadds r0, r4\n" + "\tldrh r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbne _08041D7C\n" + "_08041DC6:\n" + "\tmovs r6, 0\n" + "\tmov r2, r10\n" + "\tldrh r0, [r2]\n" + "\tcmp r0, 0\n" + "\tbeq _08041E50\n" + "_08041DD0:\n" + "\tmovs r5, 0\n" + "\tadds r3, r6, 0x1\n" + "\tmov r8, r3\n" + "\tldr r0, [sp, 0x4]\n" + "\tcmp r5, r0\n" + "\tbcs _08041E38\n" + "\tldr r2, _08041E18 @ =0x0000ffff\n" + "_08041DDE:\n" + "\tldr r1, _08041E28 @ =gUnknown_03000470\n" + "\tlsls r0, r5, 1\n" + "\tadds r0, r1\n" + "\tldrh r1, [r0]\n" + "\tcmp r1, 0\n" + "\tbeq _08041E2C\n" + "\tlsls r0, r6, 1\n" + "\tmov r3, r10\n" + "\tadds r4, r0, r3\n" + "\tldrh r0, [r4]\n" + "\tcmp r0, r1\n" + "\tbne _08041E2C\n" + "\tadds r1, r0, 0\n" + "\tadds r0, r7, 0\n" + "\tstr r2, [sp, 0x8]\n" + "\tbl GiveMoveToMon\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tldr r2, [sp, 0x8]\n" + "\tcmp r0, r2\n" + "\tbne _08041E38\n" + "\tldrh r1, [r4]\n" + "\tadds r0, r7, 0\n" + "\tbl DeleteFirstMoveAndGiveMoveToMon\n" + "\tb _08041E38\n" + "\t.align 2, 0\n" + "_08041E14: .4byte gUnknown_030004D8\n" + "_08041E18: .4byte 0x0000ffff\n" + "_08041E1C: .4byte 0x00000121\n" + "_08041E20: .4byte gUnknown_030004E0\n" + "_08041E24: .4byte gUnknown_03000500\n" + "_08041E28: .4byte gUnknown_03000470\n" + "_08041E2C:\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tldr r0, [sp, 0x4]\n" + "\tcmp r5, r0\n" + "\tbcc _08041DDE\n" + "_08041E38:\n" + "\tmov r1, r8\n" + "\tlsls r0, r1, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x3\n" + "\tbhi _08041E50\n" + "\tldr r0, _08041E60 @ =gUnknown_030004E0\n" + "\tlsls r1, r6, 1\n" + "\tadds r1, r0\n" + "\tldrh r1, [r1]\n" + "\tmov r10, r0\n" + "\tcmp r1, 0\n" + "\tbne _08041DD0\n" + "_08041E50:\n" + "\tadd sp, 0xC\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_08041E60: .4byte gUnknown_030004E0"); +} +#endif -- cgit v1.2.3 From 97d9399be794f6a94137a1945af52ef1e26de4a7 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 30 Aug 2017 16:02:46 -0400 Subject: Restore previously-decompiled functions; make static what should be static --- asm/daycare.s | 429 ------------------------------------------------------ include/global.h | 2 +- include/pokemon.h | 1 + src/daycare.c | 219 +++++++++++++++++++++++----- 4 files changed, 182 insertions(+), 469 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index a9612e8f7..08000a294 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,435 +6,6 @@ .text - thumb_func_start sub_8041E64 -sub_8041E64: @ 8041E64 - adds r3, r0, 0 - movs r1, 0x8C - lsls r1, 1 - adds r0, r3, r1 - movs r2, 0 - movs r1, 0 - strh r1, [r0] - movs r1, 0x8D - lsls r1, 1 - adds r0, r3, r1 - strb r2, [r0] - bx lr - thumb_func_end sub_8041E64 - - thumb_func_start sub_8041E7C -sub_8041E7C: @ 8041E7C - push {lr} - ldr r0, _08041E88 @ =gSaveBlock1 + 0x2F9C - bl sub_8041E64 - pop {r0} - bx r0 - .align 2, 0 -_08041E88: .4byte gSaveBlock1 + 0x2F9C - thumb_func_end sub_8041E7C - - thumb_func_start incense_effects -incense_effects: @ 8041E8C - push {r4-r7,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrh r1, [r4] - movs r7, 0xB4 - lsls r7, 1 - cmp r1, r7 - beq _08041EA4 - movs r0, 0xAF - lsls r0, 1 - cmp r1, r0 - bne _08041EE6 -_08041EA4: - adds r0, r5, 0 - movs r1, 0xC - bl GetBoxMonData - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r5, 0 - adds r0, 0x50 - movs r1, 0xC - bl GetBoxMonData - lsls r0, 16 - lsrs r2, r0, 16 - ldrh r0, [r4] - cmp r0, r7 - bne _08041ED0 - cmp r6, 0xDD - beq _08041ED0 - cmp r2, 0xDD - beq _08041ED0 - movs r0, 0xCA - strh r0, [r4] -_08041ED0: - ldrh r1, [r4] - movs r0, 0xAF - lsls r0, 1 - cmp r1, r0 - bne _08041EE6 - cmp r6, 0xDC - beq _08041EE6 - cmp r2, 0xDC - beq _08041EE6 - movs r0, 0xB7 - strh r0, [r4] -_08041EE6: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end incense_effects - - thumb_func_start sub_8041EEC -sub_8041EEC: @ 8041EEC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - mov r8, r0 - adds r6, r1, 0 - movs r4, 0 - movs r7, 0x1 -_08041EFC: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 4 - mov r1, r8 - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0xB - bl GetBoxMonData - lsls r1, r4, 1 - add r1, sp - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x84 - bne _08041F26 - adds r0, r4, 0 - eors r0, r7 - strb r0, [r6] - strb r4, [r6, 0x1] - b _08041F3C -_08041F26: - adds r0, r5, 0 - bl GetBoxMonGender - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFE - bne _08041F3C - strb r4, [r6] - adds r0, r4, 0 - eors r0, r7 - strb r0, [r6, 0x1] -_08041F3C: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1 - bls _08041EFC - ldrb r0, [r6] - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - bl sub_8041870 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1D - bne _08041F6E - movs r0, 0x8C - lsls r0, 1 - add r0, r8 - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _08041F6E - movs r4, 0x20 -_08041F6E: - ldr r0, _08041FC0 @ =0x00000183 - cmp r4, r0 - bne _08041F88 - subs r0, 0x6B - add r0, r8 - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _08041F88 - movs r4, 0xC1 - lsls r4, 1 -_08041F88: - ldrb r0, [r6, 0x1] - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - cmp r0, 0x84 - bne _08041FB2 - ldrb r1, [r6] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - add r0, r8 - bl GetBoxMonGender - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFE - beq _08041FB2 - ldrb r1, [r6, 0x1] - ldrb r0, [r6] - strb r0, [r6, 0x1] - strb r1, [r6] -_08041FB2: - adds r0, r4, 0 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08041FC0: .4byte 0x00000183 - thumb_func_end sub_8041EEC - - thumb_func_start sub_8041FC4 -sub_8041FC4: @ 8041FC4 - push {r4-r6,lr} - sub sp, 0x6C - adds r5, r0, 0 - add r6, sp, 0x64 - adds r1, r6, 0 - bl sub_8041EEC - add r4, sp, 0x68 - strh r0, [r4] - adds r0, r4, 0 - adds r1, r5, 0 - bl incense_effects - ldrh r1, [r4] - mov r0, sp - adds r2, r5, 0 - bl sub_80420FC - mov r0, sp - adds r1, r5, 0 - bl InheritIVs - ldrb r0, [r6, 0x1] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 4 - adds r1, r5, r1 - ldrb r0, [r6] - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 4 - adds r2, r5, r2 - mov r0, sp - bl daycare_build_child_moveset - mov r2, sp - adds r2, 0x6A - movs r0, 0x1 - strb r0, [r2] - mov r0, sp - movs r1, 0x2D - bl SetMonData - ldr r0, _08042040 @ =gPlayerParty - movs r1, 0xFA - lsls r1, 1 - adds r0, r1 - mov r1, sp - movs r2, 0x64 - bl memcpy - bl party_compaction - bl CalculatePlayerPartyCount - adds r0, r5, 0 - bl sub_8041E64 - add sp, 0x6C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08042040: .4byte gPlayerParty - thumb_func_end sub_8041FC4 - - thumb_func_start sub_8042044 -sub_8042044: @ 8042044 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x18 - adds r7, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - lsls r5, 16 - lsrs r5, 16 - lsls r6, 24 - lsrs r6, 24 - movs r4, 0 - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - str r4, [sp, 0xC] - adds r1, r5, 0 - movs r2, 0x5 - movs r3, 0x20 - bl CreateMon - movs r0, 0x12 - add r0, sp - mov r8, r0 - strb r4, [r0] - movs r1, 0x4 - add r0, sp, 0x10 - strh r1, [r0] - mov r4, sp - adds r4, 0x13 - movs r0, 0x1 - mov r9, r0 - mov r0, r9 - strb r0, [r4] - adds r0, r7, 0 - movs r1, 0x26 - add r2, sp, 0x10 - bl SetMonData - ldr r2, _080420F4 @ =gUnknown_08209AD4 - adds r0, r7, 0 - movs r1, 0x2 - bl SetMonData - lsls r2, r5, 3 - subs r2, r5 - lsls r2, 2 - ldr r0, _080420F8 @ =gBaseStats + 0x11 @ egg cycles offset - adds r2, r0 - adds r0, r7, 0 - movs r1, 0x20 - bl SetMonData - adds r0, r7, 0 - movs r1, 0x24 - mov r2, r8 - bl SetMonData - adds r0, r7, 0 - movs r1, 0x3 - adds r2, r4, 0 - bl SetMonData - cmp r6, 0 - beq _080420D6 - add r2, sp, 0x14 - movs r0, 0xFD - strb r0, [r2] - adds r0, r7, 0 - movs r1, 0x23 - bl SetMonData -_080420D6: - mov r2, sp - adds r2, 0x15 - mov r0, r9 - strb r0, [r2] - adds r0, r7, 0 - movs r1, 0x2D - bl SetMonData - add sp, 0x18 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080420F4: .4byte gUnknown_08209AD4 -_080420F8: .4byte gBaseStats + 0x11 @ egg cycles offset - thumb_func_end sub_8042044 - - thumb_func_start sub_80420FC -sub_80420FC: @ 80420FC - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x14 - adds r6, r0, 0 - adds r5, r1, 0 - adds r4, r2, 0 - lsls r5, 16 - lsrs r5, 16 - bl Random - movs r1, 0x8C - lsls r1, 1 - adds r4, r1 - ldrh r1, [r4] - lsls r0, 16 - orrs r1, r0 - movs r0, 0x1 - mov r8, r0 - str r0, [sp] - str r1, [sp, 0x4] - movs r4, 0 - str r4, [sp, 0x8] - str r4, [sp, 0xC] - adds r0, r6, 0 - adds r1, r5, 0 - movs r2, 0x5 - movs r3, 0x20 - bl CreateMon - movs r1, 0x12 - add r1, sp - mov r9, r1 - strb r4, [r1] - movs r1, 0x4 - add r0, sp, 0x10 - strh r1, [r0] - mov r4, sp - adds r4, 0x13 - mov r0, r8 - strb r0, [r4] - adds r0, r6, 0 - movs r1, 0x26 - add r2, sp, 0x10 - bl SetMonData - ldr r2, _08042198 @ =gUnknown_08209AD4 - adds r0, r6, 0 - movs r1, 0x2 - bl SetMonData - lsls r2, r5, 3 - subs r2, r5 - lsls r2, 2 - ldr r0, _0804219C @ =gBaseStats + 0x11 @ egg cycles offset - adds r2, r0 - adds r0, r6, 0 - movs r1, 0x20 - bl SetMonData - adds r0, r6, 0 - movs r1, 0x24 - mov r2, r9 - bl SetMonData - adds r0, r6, 0 - movs r1, 0x3 - adds r2, r4, 0 - bl SetMonData - add sp, 0x14 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08042198: .4byte gUnknown_08209AD4 -_0804219C: .4byte gBaseStats + 0x11 @ egg cycles offset - thumb_func_end sub_80420FC - - thumb_func_start sp0B8_daycare -sp0B8_daycare: @ 80421A0 - push {lr} - ldr r0, _080421AC @ =gSaveBlock1 + 0x2F9C - bl sub_8041FC4 - pop {r0} - bx r0 - .align 2, 0 -_080421AC: .4byte gSaveBlock1 + 0x2F9C - thumb_func_end sp0B8_daycare - thumb_func_start sub_80421B0 sub_80421B0: @ 80421B0 push {r4-r7,lr} diff --git a/include/global.h b/include/global.h index ee54007b2..82dcd1a53 100644 --- a/include/global.h +++ b/include/global.h @@ -557,7 +557,7 @@ struct DayCareMailEtc struct DayCareData { struct BoxPokemon mons[2]; struct DayCareMailEtc mail; - u16 unk_118; + u16 eggPersonalityLo; u8 unk_11a; u8 unk_11b; }; diff --git a/include/pokemon.h b/include/pokemon.h index da9a5f041..184bc6cdb 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -602,5 +602,6 @@ bool32 sub_8040D3C(u16 species, u8 *name, u8 language); s8 sub_8040A54(struct Pokemon *, u8); u16 GetMonEVCount(struct Pokemon *); u8 GetLevelUpMovesBySpecies(u16, u16 *); +u8 TryIncrementMonLevel(struct Pokemon *); #endif // GUARD_POKEMON_H diff --git a/src/daycare.c b/src/daycare.c index 38bfba85e..1faaea4c6 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -14,6 +14,12 @@ #include "strings2.h" #include "data/pokemon/egg_moves.h" #include "party_menu.h" +#include "field_effect.h" + +extern u16 word_2024E82; + +static void sub_80417F4(struct DayCareMail *); +static void sub_80420FC(struct Pokemon *, u16, struct DayCareData *); const u8 *const gUnknown_08209AC4[] = { DaycareText_GetAlongVeryWell, @@ -24,8 +30,6 @@ const u8 *const gUnknown_08209AC4[] = { const u8 gUnknown_08209AD4[] = _("タマゴ"); -extern u8 gLastFieldPokeMenuOpened; - u8 *GetMonNick(struct Pokemon *mon, u8 *dest) { s8 nickname[POKEMON_NAME_LENGTH * 2]; @@ -54,7 +58,7 @@ u8 Daycare_CountPokemon(struct BoxPokemon *daycare_data) return count; } -void sub_8041324(struct BoxPokemon * box_pokemon, struct DayCareMailEtc * void_pointer) +void sub_8041324(struct BoxPokemon * box_pokemon, struct DayCareMailEtc * daycareMailEtc) { u8 i; u8 specCount; @@ -66,20 +70,20 @@ void sub_8041324(struct BoxPokemon * box_pokemon, struct DayCareMailEtc * void_p specCount ++; if (GetBoxMonData(&box_pokemon[i], MON_DATA_HELD_ITEM) == ITEM_NONE) { - void_pointer->extra.rc.unk74[i] = 0; + daycareMailEtc->extra.rc.unk74[i] = 0; } else { - void_pointer->extra.rc.unk74[i] = 1; + daycareMailEtc->extra.rc.unk74[i] = 1; } } else { - void_pointer->extra.rc.unk74[i] = 1; + daycareMailEtc->extra.rc.unk74[i] = 1; } } - void_pointer->extra.rc.unk70 = specCount; + daycareMailEtc->extra.rc.unk70 = specCount; } -s8 Daycare_FindEmptySpot(struct BoxPokemon * daycare_data) +static s8 Daycare_FindEmptySpot(struct BoxPokemon * daycare_data) { u8 i; @@ -90,7 +94,8 @@ s8 Daycare_FindEmptySpot(struct BoxPokemon * daycare_data) return -1; } -void Daycare_SendPokemon(struct Pokemon * mon, struct DayCareData * daycare_data){ // unfinished +static void Daycare_SendPokemon(struct Pokemon * mon, struct DayCareData * daycare_data) +{ s8 empty_slot; u8 mail; u8 *names; @@ -118,9 +123,7 @@ void Daycare_SendPokemon_Special() Daycare_SendPokemon(gPlayerParty + gLastFieldPokeMenuOpened, &gSaveBlock1.daycareData); } -void sub_80417F4(struct DayCareMail *); - -void sub_80414C0(struct DayCareData * daycare_data) +static void sub_80414C0(struct DayCareData * daycare_data) { if((GetBoxMonData(&daycare_data->mons[1], MON_DATA_SPECIES) != 0) && GetBoxMonData(&daycare_data->mons[0], MON_DATA_SPECIES) == 0) { @@ -133,33 +136,32 @@ void sub_80414C0(struct DayCareData * daycare_data) } } -u8 TryIncrementMonLevel(struct Pokemon *); -extern u16 word_2024E82; - -void sub_804151C(struct Pokemon * mon) +static void DayCare_LevelUpMoves(struct Pokemon * mon) { s32 i; u8 r6; u16 temp; - for(i = 0; i < 100; i++){ - if(TryIncrementMonLevel(mon) == FALSE) goto end; - - r6 = 1; - while((temp = sub_803B7C8(mon, r6)) != 0){ - r6 = 0; - if(temp == 0xffff){ - DeleteFirstMoveAndGiveMoveToMon(mon, word_2024E82); + for (i = 0; i < 100; i++) + { + if (TryIncrementMonLevel(mon)) + { + r6 = 1; + while ((temp = sub_803B7C8(mon, r6)) != 0) + { + r6 = 0; + if (temp == 0xffff) + DeleteFirstMoveAndGiveMoveToMon(mon, word_2024E82); } } + else + break; } - end: - CalculateMonStats(mon); } -u16 sub_8041570(struct DayCareData * daycare_data, u8 slot) +static u16 sub_8041570(struct DayCareData * daycare_data, u8 slot) { u16 species; u32 experience; @@ -172,7 +174,7 @@ u16 sub_8041570(struct DayCareData * daycare_data, u8 slot) { experience = GetMonData(&pokemon, MON_DATA_EXP) + daycare_data->mail.extra.steps[slot]; SetMonData(&pokemon, MON_DATA_EXP, (u8 *)&experience); - sub_804151C(&pokemon); + DayCare_LevelUpMoves(&pokemon); } gPlayerParty[PARTY_SIZE - 1] = pokemon; if (daycare_data->mail.data[slot].mail.itemId) @@ -200,7 +202,7 @@ u8 Daycare_GetLevelAfterSteps(struct BoxPokemon * mon, u32 steps){ return GetLevelFromBoxMonExp(&temp); } -u8 sub_80416A0(struct DayCareData *daycareData, u8 slot) +static u8 sub_80416A0(struct DayCareData *daycareData, u8 slot) { u8 levelBefore; u8 levelAfter; @@ -210,7 +212,7 @@ u8 sub_80416A0(struct DayCareData *daycareData, u8 slot) return levelAfter - levelBefore; } -u8 sub_80416E8(struct DayCareData *dayCareData, u8 slot) +static u8 sub_80416E8(struct DayCareData *dayCareData, u8 slot) { u8 levelDelta = sub_80416A0(dayCareData, slot); GetBoxMonNick(&dayCareData->mons[slot], gStringVar1); @@ -218,7 +220,7 @@ u8 sub_80416E8(struct DayCareData *dayCareData, u8 slot) return levelDelta; } -u16 sub_8041728(struct DayCareData *dayCareData, u8 slot) +static u16 sub_8041728(struct DayCareData *dayCareData, u8 slot) { u16 cost; @@ -247,7 +249,7 @@ u8 sub_80417B8(void) return 0; } -void sub_80417F4(struct DayCareMail *mail) +static void sub_80417F4(struct DayCareMail *mail) { u8 zero; u8 *names; @@ -272,7 +274,7 @@ void unref_sub_8041824(struct DayCareData *dayCareData) dayCareData->mail.extra.steps[slot] = 0; sub_80417F4(&dayCareData->mail.data[slot]); } - dayCareData->unk_118 = 0; + dayCareData->eggPersonalityLo = 0; dayCareData->unk_11a = 0; } @@ -303,15 +305,15 @@ u16 sub_8041870(u16 species) return species; } -void sub_80418F0(struct DayCareData *dayCareData) +static void sub_80418F0(struct DayCareData *dayCareData) { - dayCareData->unk_118 = (Random() % 0xfffe) + 1; + dayCareData->eggPersonalityLo = (Random() % 0xfffe) + 1; FlagSet(0x86); } -void sub_804191C(struct DayCareData *dayCareData) +static void sub_804191C(struct DayCareData *dayCareData) { - dayCareData->unk_118 = Random() | 0x8000; + dayCareData->eggPersonalityLo = Random() | 0x8000; FlagSet(0x86); } @@ -338,7 +340,7 @@ static void sub_8041960(u8 *data, u8 idx) data[j++] = temp[i]; } -void InheritIVs(struct Pokemon *egg, struct DayCareData *dayCareData) +static void InheritIVs(struct Pokemon *egg, struct DayCareData *dayCareData) { u8 i; u8 selectedIvs[3]; @@ -386,6 +388,9 @@ void InheritIVs(struct Pokemon *egg, struct DayCareData *dayCareData) } } +#ifdef NONMATCHING +static +#endif u8 pokemon_get_eggmoves(struct Pokemon *pokemon, u16 *eggMoves) { u16 eggMoveIdx; @@ -416,13 +421,13 @@ u8 pokemon_get_eggmoves(struct Pokemon *pokemon, u16 *eggMoves) return numMovesFound; } +#ifdef NONMATCHING extern u16 gUnknown_03000470[50]; extern u16 gUnknown_030004D8[4]; extern u16 gUnknown_030004E0[4]; extern u16 gUnknown_030004E8[10]; extern u16 gUnknown_03000500[4]; -#ifdef NONMATCHING void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, struct BoxPokemon *mom) { u16 numSharedParentMoves; @@ -846,3 +851,139 @@ void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, st "_08041E60: .4byte gUnknown_030004E0"); } #endif + +static void RemoveEggFromDayCare(struct DayCareData *dayCareData) +{ + dayCareData->eggPersonalityLo = 0; + dayCareData->unk_11a = 0; +} + +void sub_8041E7C(void) +{ + RemoveEggFromDayCare(&gSaveBlock1.daycareData); +} + +static void incense_effects(u16 *species, struct DayCareData *dayCareData) +{ + u16 momItem, dadItem; + if (*species == SPECIES_WYNAUT || *species == SPECIES_AZURILL) + { + momItem = GetBoxMonData(&dayCareData->mons[0], MON_DATA_HELD_ITEM); + dadItem = GetBoxMonData(&dayCareData->mons[1], MON_DATA_HELD_ITEM); + if (*species == SPECIES_WYNAUT && momItem != ITEM_LAX_INCENSE && dadItem != ITEM_LAX_INCENSE) + { + *species = SPECIES_WOBBUFFET; + } + if (*species == SPECIES_AZURILL && momItem != ITEM_SEA_INCENSE && dadItem != ITEM_SEA_INCENSE) + { + *species = SPECIES_MARILL; + } + } +} + +static u16 sub_8041EEC(struct DayCareData *dayCareData, u8 *a1) // inherit_species_from_mom +{ + u16 i; + u16 species[2]; + u16 eggSpecies; + u8 buffer; + for (i=0; i<2; i++) + { + species[i] = GetBoxMonData(&dayCareData->mons[i], MON_DATA_SPECIES); + if (species[i] == SPECIES_DITTO) + { + a1[0] = i ^ 1; + a1[1] = i; + } + else if (GetBoxMonGender(&dayCareData->mons[i]) == MON_FEMALE) + { + a1[0] = i; + a1[1] = i ^ 1; + } + } + eggSpecies = sub_8041870(species[a1[0]]); + if (eggSpecies == SPECIES_NIDORAN_F && dayCareData->eggPersonalityLo & 0x8000) + { + eggSpecies = SPECIES_NIDORAN_M; + } + if (eggSpecies == SPECIES_ILLUMISE && dayCareData->eggPersonalityLo & 0x8000) + { + eggSpecies = SPECIES_VOLBEAT; + } + if (species[a1[1]] == SPECIES_DITTO && GetBoxMonGender(&dayCareData->mons[a1[0]]) != MON_FEMALE) + { + buffer = a1[1]; + a1[1] = a1[0]; + a1[0] = buffer; + } + return eggSpecies; +} + +static void sub_8041FC4(struct DayCareData *dayCareData) // give_egg +{ + struct Pokemon egg; + u16 species; + u8 parents[2]; + u8 isEgg; + species = sub_8041EEC(dayCareData, parents); + incense_effects(&species, dayCareData); + sub_80420FC(&egg, species, dayCareData); + InheritIVs(&egg, dayCareData); + daycare_build_child_moveset(&egg, &dayCareData->mons[parents[1]], &dayCareData->mons[parents[0]]); + isEgg = TRUE; + SetMonData(&egg, MON_DATA_IS_EGG, &isEgg); + gPlayerParty[5] = egg; + party_compaction(); + CalculatePlayerPartyCount(); + RemoveEggFromDayCare(dayCareData); +} + + +void sub_8042044(struct Pokemon *mon, u16 species, u8 overwriteMetLocation) // scr_create_egg +{ + u8 metLevel; + u16 ball; + u8 language; + u8 metLocation; + u8 isEgg; + CreateMon(mon, species, 5, 0x20, FALSE, 0, FALSE, 0); + metLevel = 0; + ball = ITEM_POKE_BALL; + language = LANGUAGE_JAPANESE; + SetMonData(mon, MON_DATA_POKEBALL, (u8 *)&ball); + SetMonData(mon, MON_DATA_NICKNAME, gUnknown_08209AD4); + SetMonData(mon, MON_DATA_FRIENDSHIP, &gBaseStats[species].eggCycles); + SetMonData(mon, MON_DATA_MET_LEVEL, &metLevel); + SetMonData(mon, MON_DATA_LANGUAGE, &language); + if (overwriteMetLocation) + { + metLocation = 0xfd; + SetMonData(mon, MON_DATA_MET_LOCATION, &metLocation); + } + isEgg = TRUE; + SetMonData(mon, MON_DATA_IS_EGG, &isEgg); +} + +static void sub_80420FC(struct Pokemon *mon, u16 species, struct DayCareData *dayCareData) +{ + u32 personality; + u16 ball; + u8 metLevel; + u8 language; + personality = dayCareData->eggPersonalityLo | (Random() << 16); + CreateMon(mon, species, 5, 0x20, TRUE, personality, FALSE, 0); + metLevel = 0; + ball = ITEM_POKE_BALL; + language = LANGUAGE_JAPANESE; + SetMonData(mon, MON_DATA_POKEBALL, (u8 *)&ball); + SetMonData(mon, MON_DATA_NICKNAME, gUnknown_08209AD4); + SetMonData(mon, MON_DATA_FRIENDSHIP, &gBaseStats[species].eggCycles); + SetMonData(mon, MON_DATA_MET_LEVEL, &metLevel); + SetMonData(mon, MON_DATA_LANGUAGE, &language); +} + +void sp0B8_daycare(void) +{ + sub_8041FC4(&gSaveBlock1.daycareData); +} + -- cgit v1.2.3 From a1c5f2e6bad52af49dbf7de48ac78d4015dd073f Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 30 Aug 2017 16:42:05 -0400 Subject: Nonmatching sub_80421B0 --- asm/daycare.s | 122 --------------------------------- include/global.h | 16 +++-- src/daycare.c | 200 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 3 files changed, 192 insertions(+), 146 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index 08000a294..01eb6afc0 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,128 +6,6 @@ .text - thumb_func_start sub_80421B0 -sub_80421B0: @ 80421B0 - push {r4-r7,lr} - sub sp, 0x8 - adds r7, r0, 0 - movs r2, 0 - movs r6, 0 - adds r5, r7, 0 -_080421BC: - lsls r4, r6, 2 - adds r0, r5, 0 - movs r1, 0x5 - str r2, [sp, 0x4] - bl GetBoxMonData - ldr r2, [sp, 0x4] - cmp r0, 0 - beq _080421DE - movs r0, 0x88 - lsls r0, 1 - adds r1, r7, r0 - adds r1, r4 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - adds r2, 0x1 -_080421DE: - adds r5, 0x50 - adds r6, 0x1 - cmp r6, 0x1 - bls _080421BC - movs r1, 0x8C - lsls r1, 1 - adds r0, r7, r1 - ldrh r0, [r0] - cmp r0, 0 - bne _08042226 - cmp r2, 0x2 - bne _08042226 - subs r1, 0x4 - adds r0, r7, r1 - ldrb r0, [r0] - cmp r0, 0xFF - bne _08042226 - adds r0, r7, 0 - bl daycare_relationship_score - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - muls r0, r1 - ldr r1, _08042240 @ =0x0000ffff - bl __udivsi3 - cmp r4, r0 - bls _08042226 - bl sub_8041940 -_08042226: - movs r0, 0x8D - lsls r0, 1 - adds r1, r7, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _08042290 - movs r6, 0 - b _08042288 - .align 2, 0 -_08042240: .4byte 0x0000ffff -_08042244: - movs r0, 0x64 - adds r1, r6, 0 - muls r1, r0 - ldr r0, _08042270 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - beq _08042286 - adds r0, r4, 0 - movs r1, 0x20 - bl GetMonData - str r0, [sp] - cmp r0, 0 - bne _08042278 - ldr r0, _08042274 @ =gSpecialVar_0x8004 - strh r6, [r0] - movs r0, 0x1 - b _08042292 - .align 2, 0 -_08042270: .4byte gPlayerParty -_08042274: .4byte gSpecialVar_0x8004 -_08042278: - subs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r1, 0x20 - mov r2, sp - bl SetMonData -_08042286: - adds r6, 0x1 -_08042288: - ldr r0, _0804229C @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r6, r0 - bcc _08042244 -_08042290: - movs r0, 0 -_08042292: - add sp, 0x8 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0804229C: .4byte gPlayerPartyCount - thumb_func_end sub_80421B0 - thumb_func_start sub_80422A0 sub_80422A0: @ 80422A0 push {lr} diff --git a/include/global.h b/include/global.h index 82dcd1a53..b2b4ffcc4 100644 --- a/include/global.h +++ b/include/global.h @@ -540,26 +540,30 @@ struct DayCareMail /*0x24*/ u8 names[19]; }; -struct DayCareMailExtra { +struct DayCareMailExtra_RecordMixing { u32 unk70; u16 unk74[2]; }; +struct DayCareMailExtra_EggData { + u32 steps[2]; + u16 personalityLo; + u8 unk_11a; +}; + struct DayCareMailEtc { struct DayCareMail data[2]; union { - struct DayCareMailExtra rc; - u32 steps[2]; + struct DayCareMailExtra_RecordMixing rc; + struct DayCareMailExtra_EggData egg; + u8 misc[12]; } extra; }; struct DayCareData { struct BoxPokemon mons[2]; struct DayCareMailEtc mail; - u16 eggPersonalityLo; - u8 unk_11a; - u8 unk_11b; }; struct LinkBattleRecord diff --git a/src/daycare.c b/src/daycare.c index 1faaea4c6..5efec9810 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -20,6 +20,7 @@ extern u16 word_2024E82; static void sub_80417F4(struct DayCareMail *); static void sub_80420FC(struct Pokemon *, u16, struct DayCareData *); +u8 daycare_relationship_score(struct DayCareData *); const u8 *const gUnknown_08209AC4[] = { DaycareText_GetAlongVeryWell, @@ -112,7 +113,7 @@ static void Daycare_SendPokemon(struct Pokemon * mon, struct DayCareData * dayca } daycare_data->mons[empty_slot] = mon->box; BoxMonRestorePP(&daycare_data->mons[empty_slot]); - daycare_data->mail.extra.steps[empty_slot] = 0; + daycare_data->mail.extra.egg.steps[empty_slot] = 0; ZeroMonData(mon); party_compaction(); CalculatePlayerPartyCount(); @@ -130,8 +131,8 @@ static void sub_80414C0(struct DayCareData * daycare_data) daycare_data->mons[0] = daycare_data->mons[1]; ZeroBoxMonData(&daycare_data->mons[1]); daycare_data->mail.data[0] = daycare_data->mail.data[1]; - daycare_data->mail.extra.steps[0] = daycare_data->mail.extra.steps[1]; - daycare_data->mail.extra.steps[1] = 0; + daycare_data->mail.extra.egg.steps[0] = daycare_data->mail.extra.egg.steps[1]; + daycare_data->mail.extra.egg.steps[1] = 0; sub_80417F4(&daycare_data->mail.data[1]); } } @@ -172,7 +173,7 @@ static u16 sub_8041570(struct DayCareData * daycare_data, u8 slot) sub_803B4B4(&daycare_data->mons[slot], &pokemon); if (GetMonData(&pokemon, MON_DATA_LEVEL) != MAX_LEVEL) { - experience = GetMonData(&pokemon, MON_DATA_EXP) + daycare_data->mail.extra.steps[slot]; + experience = GetMonData(&pokemon, MON_DATA_EXP) + daycare_data->mail.extra.egg.steps[slot]; SetMonData(&pokemon, MON_DATA_EXP, (u8 *)&experience); DayCare_LevelUpMoves(&pokemon); } @@ -184,7 +185,7 @@ static u16 sub_8041570(struct DayCareData * daycare_data, u8 slot) } party_compaction(); ZeroBoxMonData(&daycare_data->mons[slot]); - daycare_data->mail.extra.steps[slot] = 0; + daycare_data->mail.extra.egg.steps[slot] = 0; sub_80414C0(daycare_data); CalculatePlayerPartyCount(); return species; @@ -208,7 +209,7 @@ static u8 sub_80416A0(struct DayCareData *daycareData, u8 slot) u8 levelAfter; levelBefore = GetLevelFromBoxMonExp(&daycareData->mons[slot]); - levelAfter = Daycare_GetLevelAfterSteps(&daycareData->mons[slot], daycareData->mail.extra.steps[slot]); + levelAfter = Daycare_GetLevelAfterSteps(&daycareData->mons[slot], daycareData->mail.extra.egg.steps[slot]); return levelAfter - levelBefore; } @@ -238,8 +239,8 @@ void sub_8041770(void) void sub_8041790(u16 i) { - gSaveBlock1.daycareData.mail.extra.steps[0] += i; - gSaveBlock1.daycareData.mail.extra.steps[1] += i; + gSaveBlock1.daycareData.mail.extra.egg.steps[0] += i; + gSaveBlock1.daycareData.mail.extra.egg.steps[1] += i; } u8 sub_80417B8(void) @@ -271,11 +272,11 @@ void unref_sub_8041824(struct DayCareData *dayCareData) for (slot = 0; slot < ARRAY_COUNT(dayCareData->mons); slot ++) { ZeroBoxMonData(&dayCareData->mons[slot]); - dayCareData->mail.extra.steps[slot] = 0; + dayCareData->mail.extra.egg.steps[slot] = 0; sub_80417F4(&dayCareData->mail.data[slot]); } - dayCareData->eggPersonalityLo = 0; - dayCareData->unk_11a = 0; + dayCareData->mail.extra.egg.personalityLo = 0; + dayCareData->mail.extra.egg.unk_11a = 0; } u16 sub_8041870(u16 species) @@ -307,13 +308,13 @@ u16 sub_8041870(u16 species) static void sub_80418F0(struct DayCareData *dayCareData) { - dayCareData->eggPersonalityLo = (Random() % 0xfffe) + 1; + dayCareData->mail.extra.egg.personalityLo = (Random() % 0xfffe) + 1; FlagSet(0x86); } static void sub_804191C(struct DayCareData *dayCareData) { - dayCareData->eggPersonalityLo = Random() | 0x8000; + dayCareData->mail.extra.egg.personalityLo = Random() | 0x8000; FlagSet(0x86); } @@ -854,8 +855,8 @@ void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, st static void RemoveEggFromDayCare(struct DayCareData *dayCareData) { - dayCareData->eggPersonalityLo = 0; - dayCareData->unk_11a = 0; + dayCareData->mail.extra.egg.personalityLo = 0; + dayCareData->mail.extra.egg.unk_11a = 0; } void sub_8041E7C(void) @@ -902,11 +903,11 @@ static u16 sub_8041EEC(struct DayCareData *dayCareData, u8 *a1) // inherit_speci } } eggSpecies = sub_8041870(species[a1[0]]); - if (eggSpecies == SPECIES_NIDORAN_F && dayCareData->eggPersonalityLo & 0x8000) + if (eggSpecies == SPECIES_NIDORAN_F && dayCareData->mail.extra.egg.personalityLo & 0x8000) { eggSpecies = SPECIES_NIDORAN_M; } - if (eggSpecies == SPECIES_ILLUMISE && dayCareData->eggPersonalityLo & 0x8000) + if (eggSpecies == SPECIES_ILLUMISE && dayCareData->mail.extra.egg.personalityLo & 0x8000) { eggSpecies = SPECIES_VOLBEAT; } @@ -970,7 +971,7 @@ static void sub_80420FC(struct Pokemon *mon, u16 species, struct DayCareData *da u16 ball; u8 metLevel; u8 language; - personality = dayCareData->eggPersonalityLo | (Random() << 16); + personality = dayCareData->mail.extra.egg.personalityLo | (Random() << 16); CreateMon(mon, species, 5, 0x20, TRUE, personality, FALSE, 0); metLevel = 0; ball = ITEM_POKE_BALL; @@ -987,3 +988,166 @@ void sp0B8_daycare(void) sub_8041FC4(&gSaveBlock1.daycareData); } +#ifdef NONMATCHING +bool8 sub_80421B0(struct DayCareData *dayCareData) +{ + struct BoxPokemon *parent; + u32 i; + int v0; + int steps; + v0 = 0; + for (i=0, parent=&dayCareData->mons[0]; i<2; parent++, i++) + { + if (GetBoxMonData(parent, MON_DATA_SANITY_BIT2, v0)) + { + dayCareData->mail.extra.egg.steps[i]++; + v0++; + } + } + if (dayCareData->mail.extra.egg.personalityLo == 0 && v0 == 2 && dayCareData->mail.extra.misc[4] == 0xff && daycare_relationship_score(dayCareData) > (u32)((u32)(Random() * 100) / 0xffff)) + { + sub_8041940(); + } + if ((++dayCareData->mail.extra.egg.unk_11a) == 0xff) + { + for (i=0; i Date: Wed, 30 Aug 2017 16:46:51 -0400 Subject: Through daycare_relationship_score (nonmatching) --- asm/daycare.s | 323 ------------------------------------------------------ include/daycare.h | 2 +- src/daycare.c | 293 ++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 292 insertions(+), 326 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index 01eb6afc0..65f2aa78e 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,329 +6,6 @@ .text - thumb_func_start sub_80422A0 -sub_80422A0: @ 80422A0 - push {lr} - ldr r0, _080422B0 @ =gSaveBlock1 + 0x2F9C - bl sub_80421B0 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_080422B0: .4byte gSaveBlock1 + 0x2F9C - thumb_func_end sub_80422A0 - - thumb_func_start sub_80422B4 -sub_80422B4: @ 80422B4 - movs r1, 0x8C - lsls r1, 1 - adds r0, r1 - ldrh r1, [r0] - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - bx lr - thumb_func_end sub_80422B4 - - thumb_func_start sub_80422C4 -sub_80422C4: @ 80422C4 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0xB - bl GetBoxMonData - cmp r0, 0 - beq _080422FC - ldr r1, _0804231C @ =gStringVar1 - adds r0, r6, 0 - bl GetBoxMonNick - adds r0, r6, 0 - movs r1, 0x3 - bl GetBoxMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _08042320 @ =gStringVar3 - adds r0, r6, 0 - movs r1, 0x7 - adds r2, r5, 0 - bl GetBoxMonData - adds r0, r5, 0 - adds r1, r4, 0 - bl ConvertInternationalString -_080422FC: - adds r4, r6, 0 - adds r4, 0x50 - adds r0, r4, 0 - movs r1, 0xB - bl GetBoxMonData - cmp r0, 0 - beq _08042314 - ldr r1, _08042324 @ =gStringVar2 - adds r0, r4, 0 - bl GetBoxMonNick -_08042314: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804231C: .4byte gStringVar1 -_08042320: .4byte gStringVar3 -_08042324: .4byte gStringVar2 - thumb_func_end sub_80422C4 - - thumb_func_start sub_8042328 -sub_8042328: @ 8042328 - push {r4-r6,lr} - ldr r6, _08042354 @ =gLastFieldPokeMenuOpened - ldrb r0, [r6] - movs r5, 0x64 - muls r0, r5 - ldr r4, _08042358 @ =gPlayerParty - adds r0, r4 - ldr r1, _0804235C @ =gStringVar1 - bl GetBoxMonNick - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - movs r1, 0xB - bl GetBoxMonData - lsls r0, 16 - lsrs r0, 16 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08042354: .4byte gLastFieldPokeMenuOpened -_08042358: .4byte gPlayerParty -_0804235C: .4byte gStringVar1 - thumb_func_end sub_8042328 - - thumb_func_start sp0B5_daycare -sp0B5_daycare: @ 8042360 - push {lr} - ldr r0, _0804236C @ =gSaveBlock1 + 0x2F9C - bl sub_80422C4 - pop {r0} - bx r0 - .align 2, 0 -_0804236C: .4byte gSaveBlock1 + 0x2F9C - thumb_func_end sp0B5_daycare - - thumb_func_start sp0B6_daycare -sp0B6_daycare: @ 8042370 - push {r4,lr} - ldr r4, _08042384 @ =gSaveBlock1 + 0x2F9C - adds r0, r4, 0 - bl sub_80422B4 - lsls r0, 24 - cmp r0, 0 - beq _08042388 - movs r0, 0x1 - b _080423A0 - .align 2, 0 -_08042384: .4byte gSaveBlock1 + 0x2F9C -_08042388: - adds r0, r4, 0 - bl Daycare_CountPokemon - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _0804239A - movs r0, 0 - b _080423A0 -_0804239A: - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 -_080423A0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sp0B6_daycare - - thumb_func_start sub_80423A8 -sub_80423A8: @ 80423A8 - push {r4-r6,lr} - adds r5, r1, 0 - movs r4, 0 - adds r1, r0, 0 -_080423B0: - movs r3, 0 - ldrh r0, [r1] - adds r2, r5, 0 -_080423B6: - ldrh r6, [r2] - cmp r0, r6 - bne _080423C0 - movs r0, 0x1 - b _080423D2 -_080423C0: - adds r2, 0x2 - adds r3, 0x1 - cmp r3, 0x1 - ble _080423B6 - adds r1, 0x2 - adds r4, 0x1 - cmp r4, 0x1 - ble _080423B0 - movs r0, 0 -_080423D2: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80423A8 - - thumb_func_start daycare_relationship_score -daycare_relationship_score: @ 80423D8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x2C - movs r1, 0 - mov r8, r1 - mov r2, sp - adds r2, 0x8 - str r2, [sp, 0x1C] - add r1, sp, 0xC - mov r10, r1 - adds r2, 0xC - str r2, [sp, 0x20] - mov r1, sp - adds r1, 0x2 - ldr r2, _08042488 @ =gBaseStats - mov r9, r2 - ldr r5, [sp, 0x1C] - adds r7, r1, 0 - mov r6, sp - ldr r1, [sp, 0x20] - str r1, [sp, 0x24] - mov r2, r10 - str r2, [sp, 0x28] - adds r4, r0, 0 -_0804240E: - adds r0, r4, 0 - movs r1, 0xB - bl GetBoxMonData - strh r0, [r5] - adds r0, r4, 0 - movs r1, 0x1 - bl GetBoxMonData - ldr r1, [sp, 0x28] - stm r1!, {r0} - str r1, [sp, 0x28] - adds r0, r4, 0 - movs r1, 0 - bl GetBoxMonData - adds r1, r0, 0 - ldrh r0, [r5] - bl GetGenderFromSpeciesAndPersonality - lsls r0, 24 - lsrs r0, 24 - ldr r2, [sp, 0x24] - stm r2!, {r0} - str r2, [sp, 0x24] - ldrh r1, [r5] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r0, [r0, 0x14] - strh r0, [r6] - ldrh r1, [r5] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r0, [r0, 0x15] - strh r0, [r7] - adds r5, 0x2 - adds r7, 0x4 - adds r6, 0x4 - adds r4, 0x50 - movs r0, 0x1 - add r8, r0 - mov r1, r8 - cmp r1, 0x1 - bls _0804240E - mov r0, sp - ldrh r1, [r0] - cmp r1, 0xF - beq _08042484 - ldrh r0, [r0, 0x4] - cmp r0, 0xF - beq _08042484 - cmp r1, 0xD - bne _0804248C - cmp r0, 0xD - bne _08042490 -_08042484: - movs r0, 0 - b _080424E4 - .align 2, 0 -_08042488: .4byte gBaseStats -_0804248C: - cmp r0, 0xD - bne _0804249C -_08042490: - ldr r1, [sp, 0xC] - mov r2, r10 - ldr r0, [r2, 0x4] - cmp r1, r0 - beq _080424DE - b _080424E2 -_0804249C: - ldr r0, [sp, 0x14] - ldr r2, [sp, 0x20] - ldr r1, [r2, 0x4] - cmp r0, r1 - beq _08042484 - cmp r0, 0xFF - beq _08042484 - cmp r1, 0xFF - beq _08042484 - add r1, sp, 0x4 - mov r0, sp - bl sub_80423A8 - lsls r0, 24 - cmp r0, 0 - beq _08042484 - ldr r0, [sp, 0x1C] - ldrh r1, [r0, 0x2] - ldrh r0, [r0] - cmp r0, r1 - bne _080424D4 - ldr r1, [sp, 0xC] - mov r2, r10 - ldr r0, [r2, 0x4] - cmp r1, r0 - beq _080424E2 - movs r0, 0x46 - b _080424E4 -_080424D4: - ldr r1, [sp, 0xC] - mov r2, r10 - ldr r0, [r2, 0x4] - cmp r1, r0 - bne _080424E2 -_080424DE: - movs r0, 0x14 - b _080424E4 -_080424E2: - movs r0, 0x32 -_080424E4: - add sp, 0x2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end daycare_relationship_score - thumb_func_start daycare_relationship_score_from_savegame daycare_relationship_score_from_savegame: @ 80424F4 push {lr} diff --git a/include/daycare.h b/include/daycare.h index 59d10e18f..912b49649 100644 --- a/include/daycare.h +++ b/include/daycare.h @@ -1,7 +1,7 @@ #ifndef GUARD_DAYCARE_H #define GUARD_DAYCARE_H -u8 Daycare_CountPokemon(struct BoxPokemon *); +u8 Daycare_CountPokemon(struct DayCareData *); void sub_8041324(struct BoxPokemon *, struct DayCareMailEtc *); void sub_8041790(u16 i); u16 sub_8041870(u16); diff --git a/src/daycare.c b/src/daycare.c index 5efec9810..e0dc83962 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -47,13 +47,13 @@ u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest) return StringCopy10(dest, nickname); } -u8 Daycare_CountPokemon(struct BoxPokemon *daycare_data) +u8 Daycare_CountPokemon(struct DayCareData *daycare_data) { u8 i, count; count = 0; for(i = 0;i <= 1;i++) - if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) != 0) + if(GetBoxMonData(&daycare_data->mons[i], MON_DATA_SPECIES) != 0) count++; return count; @@ -1151,3 +1151,292 @@ bool8 sub_80421B0(struct DayCareData *dayCareData) "_0804229C: .4byte gPlayerPartyCount"); } #endif + +bool8 sub_80422A0(void) +{ + return sub_80421B0(&gSaveBlock1.daycareData); +} + +bool8 sub_80422B4(struct DayCareData *dayCareData) +{ + return (u32)((-dayCareData->mail.extra.egg.personalityLo) | dayCareData->mail.extra.egg.personalityLo) >> 31; +} + +void sub_80422C4(struct DayCareData *dayCareData) +{ + u8 language; + if (GetBoxMonData(&dayCareData->mons[0], MON_DATA_SPECIES) != 0) + { + GetBoxMonNick(&dayCareData->mons[0], gStringVar1); + language = GetBoxMonData(&dayCareData->mons[0], MON_DATA_LANGUAGE); + GetBoxMonData(&dayCareData->mons[0], MON_DATA_OT_NAME, gStringVar3); + ConvertInternationalString(gStringVar3, language); + } + if (GetBoxMonData(&dayCareData->mons[1], MON_DATA_SPECIES) != 0) + { + GetBoxMonNick(&dayCareData->mons[1], gStringVar2); + } +} + +u16 sub_8042328(void) +{ + GetBoxMonNick(&gPlayerParty[gLastFieldPokeMenuOpened].box, gStringVar1); + return GetBoxMonData(&gPlayerParty[gLastFieldPokeMenuOpened].box, MON_DATA_SPECIES); +} + +void sp0B5_daycare(void) +{ + sub_80422C4(&gSaveBlock1.daycareData); +} + +u8 sp0B6_daycare(void) +{ + u8 monCount; + if (sub_80422B4(&gSaveBlock1.daycareData)) + { + return 1; + } + monCount = Daycare_CountPokemon(&gSaveBlock1.daycareData); + if (monCount != 0) + { + return monCount + 1; + } + return 0; +} + +bool8 sub_80423A8(u16 *a, u16 *b) +{ + int i, j; + u16 *v0, *v1, v2; + for (i=0, v0=a; i<2; v0++, i++) + { + for (j=0, v2=*v0, v1=b; j<2; v1++, j++) + { + if (v2 == *v1) + { + return TRUE; + } + } + } + return FALSE; +} + +#ifdef NONMATCHING +u8 daycare_relationship_score(struct DayCareData *dayCareData) +{ + u16 species[2]; + u32 otIds[2]; + u32 genders[2]; + u16 eggGroups[2][2]; + int i; + u16 *spc; + u32 *ids; + u32 *gnd; + u16 *egg1; + u16 *egg2; + struct BoxPokemon *parent; + for (i=0, parent=&dayCareData->mons[0], spc=species, ids=otIds, gnd=genders, egg1=&eggGroups[0][0], egg2=&eggGroups[0][1]; i<2; spc++, egg1+=2, egg2+=2, parent++, i++) + { + *spc = GetBoxMonData(parent, MON_DATA_SPECIES); + *ids++ = GetBoxMonData(parent, MON_DATA_OT_ID); + *gnd++ = GetGenderFromSpeciesAndPersonality(*spc, GetBoxMonData(parent, MON_DATA_PERSONALITY)); + *egg1 = gBaseStats[*spc].eggGroup1; + *egg2 = gBaseStats[*spc].eggGroup2; + } + if (eggGroups[0][0] == 0xf) + { + return 0; + } + if (eggGroups[1][0] == 0xf) + { + return 0; + } + if (eggGroups[0][0] == 0xd && eggGroups[1][0] == 0xd) + { + return 0; + } + else if (eggGroups[0][0] == 0xd || eggGroups[1][0] == 0xd) + { + if (otIds[0] == otIds[1]) + { + return 20; + } + return 50; + } + if (genders[0] == genders[1] || genders[0] == MON_GENDERLESS || genders[1] == MON_GENDERLESS) + { + return 0; + } + if (!sub_80423A8(eggGroups[0], eggGroups[1])) + { + return 0; + } + if (species[0] == species[1]) + { + if (otIds[0] == otIds[1]) + { + return 50; + } + return 70; + } + else + { + if (otIds[0] != otIds[1]) + { + return 50; + } + return 20; + } +} +#else +__attribute__((naked)) +u8 daycare_relationship_score(struct DayCareData *dayCareData) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x2C\n" + "\tmovs r1, 0\n" + "\tmov r8, r1\n" + "\tmov r2, sp\n" + "\tadds r2, 0x8\n" + "\tstr r2, [sp, 0x1C]\n" + "\tadd r1, sp, 0xC\n" + "\tmov r10, r1\n" + "\tadds r2, 0xC\n" + "\tstr r2, [sp, 0x20]\n" + "\tmov r1, sp\n" + "\tadds r1, 0x2\n" + "\tldr r2, _08042488 @ =gBaseStats\n" + "\tmov r9, r2\n" + "\tldr r5, [sp, 0x1C]\n" + "\tadds r7, r1, 0\n" + "\tmov r6, sp\n" + "\tldr r1, [sp, 0x20]\n" + "\tstr r1, [sp, 0x24]\n" + "\tmov r2, r10\n" + "\tstr r2, [sp, 0x28]\n" + "\tadds r4, r0, 0\n" + "_0804240E:\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0xB\n" + "\tbl GetBoxMonData\n" + "\tstrh r0, [r5]\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x1\n" + "\tbl GetBoxMonData\n" + "\tldr r1, [sp, 0x28]\n" + "\tstm r1!, {r0}\n" + "\tstr r1, [sp, 0x28]\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0\n" + "\tbl GetBoxMonData\n" + "\tadds r1, r0, 0\n" + "\tldrh r0, [r5]\n" + "\tbl GetGenderFromSpeciesAndPersonality\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tldr r2, [sp, 0x24]\n" + "\tstm r2!, {r0}\n" + "\tstr r2, [sp, 0x24]\n" + "\tldrh r1, [r5]\n" + "\tlsls r0, r1, 3\n" + "\tsubs r0, r1\n" + "\tlsls r0, 2\n" + "\tadd r0, r9\n" + "\tldrb r0, [r0, 0x14]\n" + "\tstrh r0, [r6]\n" + "\tldrh r1, [r5]\n" + "\tlsls r0, r1, 3\n" + "\tsubs r0, r1\n" + "\tlsls r0, 2\n" + "\tadd r0, r9\n" + "\tldrb r0, [r0, 0x15]\n" + "\tstrh r0, [r7]\n" + "\tadds r5, 0x2\n" + "\tadds r7, 0x4\n" + "\tadds r6, 0x4\n" + "\tadds r4, 0x50\n" + "\tmovs r0, 0x1\n" + "\tadd r8, r0\n" + "\tmov r1, r8\n" + "\tcmp r1, 0x1\n" + "\tbls _0804240E\n" + "\tmov r0, sp\n" + "\tldrh r1, [r0]\n" + "\tcmp r1, 0xF\n" + "\tbeq _08042484\n" + "\tldrh r0, [r0, 0x4]\n" + "\tcmp r0, 0xF\n" + "\tbeq _08042484\n" + "\tcmp r1, 0xD\n" + "\tbne _0804248C\n" + "\tcmp r0, 0xD\n" + "\tbne _08042490\n" + "_08042484:\n" + "\tmovs r0, 0\n" + "\tb _080424E4\n" + "\t.align 2, 0\n" + "_08042488: .4byte gBaseStats\n" + "_0804248C:\n" + "\tcmp r0, 0xD\n" + "\tbne _0804249C\n" + "_08042490:\n" + "\tldr r1, [sp, 0xC]\n" + "\tmov r2, r10\n" + "\tldr r0, [r2, 0x4]\n" + "\tcmp r1, r0\n" + "\tbeq _080424DE\n" + "\tb _080424E2\n" + "_0804249C:\n" + "\tldr r0, [sp, 0x14]\n" + "\tldr r2, [sp, 0x20]\n" + "\tldr r1, [r2, 0x4]\n" + "\tcmp r0, r1\n" + "\tbeq _08042484\n" + "\tcmp r0, 0xFF\n" + "\tbeq _08042484\n" + "\tcmp r1, 0xFF\n" + "\tbeq _08042484\n" + "\tadd r1, sp, 0x4\n" + "\tmov r0, sp\n" + "\tbl sub_80423A8\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _08042484\n" + "\tldr r0, [sp, 0x1C]\n" + "\tldrh r1, [r0, 0x2]\n" + "\tldrh r0, [r0]\n" + "\tcmp r0, r1\n" + "\tbne _080424D4\n" + "\tldr r1, [sp, 0xC]\n" + "\tmov r2, r10\n" + "\tldr r0, [r2, 0x4]\n" + "\tcmp r1, r0\n" + "\tbeq _080424E2\n" + "\tmovs r0, 0x46\n" + "\tb _080424E4\n" + "_080424D4:\n" + "\tldr r1, [sp, 0xC]\n" + "\tmov r2, r10\n" + "\tldr r0, [r2, 0x4]\n" + "\tcmp r1, r0\n" + "\tbne _080424E2\n" + "_080424DE:\n" + "\tmovs r0, 0x14\n" + "\tb _080424E4\n" + "_080424E2:\n" + "\tmovs r0, 0x32\n" + "_080424E4:\n" + "\tadd sp, 0x2C\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r1}\n" + "\tbx r1"); +} +#endif -- cgit v1.2.3 From d26e349392d745b4b7d12fedb08559b636b4ac09 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 30 Aug 2017 16:50:11 -0400 Subject: through sp0B9_daycare_relationship_comment --- asm/daycare.s | 50 -------------------------------------------------- src/daycare.c | 23 +++++++++++++++++++++++ 2 files changed, 23 insertions(+), 50 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index 65f2aa78e..0552fbe2c 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,56 +6,6 @@ .text - thumb_func_start daycare_relationship_score_from_savegame -daycare_relationship_score_from_savegame: @ 80424F4 - push {lr} - ldr r0, _08042504 @ =gSaveBlock1 + 0x2F9C - bl daycare_relationship_score - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08042504: .4byte gSaveBlock1 + 0x2F9C - thumb_func_end daycare_relationship_score_from_savegame - - thumb_func_start sp0B9_daycare_relationship_comment -sp0B9_daycare_relationship_comment: @ 8042508 - push {lr} - bl daycare_relationship_score_from_savegame - lsls r0, 24 - lsrs r0, 24 - adds r2, r0, 0 - movs r1, 0 - cmp r0, 0 - bne _0804251C - movs r1, 0x3 -_0804251C: - cmp r0, 0x14 - bne _08042522 - movs r1, 0x2 -_08042522: - cmp r0, 0x32 - bne _08042528 - movs r1, 0x1 -_08042528: - cmp r2, 0x46 - bne _0804252E - movs r1, 0 -_0804252E: - ldr r0, _08042540 @ =gStringVar4 - ldr r2, _08042544 @ =gUnknown_08209AC4 - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl StringCopy - pop {r0} - bx r0 - .align 2, 0 -_08042540: .4byte gStringVar4 -_08042544: .4byte gUnknown_08209AC4 - thumb_func_end sp0B9_daycare_relationship_comment - thumb_func_start NameHasGenderSymbol NameHasGenderSymbol: @ 8042548 push {r4,r5,lr} diff --git a/src/daycare.c b/src/daycare.c index e0dc83962..4f6d2e1d1 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -1440,3 +1440,26 @@ u8 daycare_relationship_score(struct DayCareData *dayCareData) "\tbx r1"); } #endif + +u8 daycare_relationship_score_from_savegame(void) +{ + return daycare_relationship_score(&gSaveBlock1.daycareData); +} + +void sp0B9_daycare_relationship_comment(void) +{ + u8 whichString; + u8 relationshipScore; + + relationshipScore = daycare_relationship_score_from_savegame(); + whichString = 0; + if (relationshipScore == 0) + whichString = 3; + if (relationshipScore == 20) + whichString = 2; + if (relationshipScore == 50) + whichString = 1; + if (relationshipScore == 70) + whichString = 0; + StringCopy(gStringVar4, gUnknown_08209AC4[whichString]); +} -- cgit v1.2.3 From 3d0ed365b41a5be040bee12bab3bcb502ad44eee Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 30 Aug 2017 17:36:29 -0400 Subject: Through DaycareLevelMenuGetText --- asm/daycare.s | 192 -------------------------------------------------------- include/trade.h | 12 ++++ src/daycare.c | 136 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 148 insertions(+), 192 deletions(-) create mode 100644 include/trade.h diff --git a/asm/daycare.s b/asm/daycare.s index 0552fbe2c..b3fbe6c5c 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,198 +6,6 @@ .text - thumb_func_start NameHasGenderSymbol -NameHasGenderSymbol: @ 8042548 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - mov r2, sp - mov r1, sp - movs r0, 0 - strb r0, [r1, 0x1] - strb r0, [r2] - movs r3, 0 - ldrb r0, [r4] - cmp r0, 0xFF - beq _0804258C -_08042564: - adds r1, r4, r3 - ldrb r0, [r1] - cmp r0, 0xB5 - bne _08042572 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] -_08042572: - ldrb r0, [r1] - cmp r0, 0xB6 - bne _0804257E - ldrb r0, [r2, 0x1] - adds r0, 0x1 - strb r0, [r2, 0x1] -_0804257E: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - adds r0, r4, r3 - ldrb r0, [r0] - cmp r0, 0xFF - bne _08042564 -_0804258C: - cmp r5, 0 - bne _080425A0 - mov r0, sp - ldrb r0, [r0] - cmp r0, 0 - beq _080425A0 - mov r0, sp - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _080425B4 -_080425A0: - cmp r5, 0xFE - bne _080425B8 - mov r0, sp - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _080425B8 - mov r0, sp - ldrb r0, [r0] - cmp r0, 0 - bne _080425B8 -_080425B4: - movs r0, 0x1 - b _080425BA -_080425B8: - movs r0, 0 -_080425BA: - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end NameHasGenderSymbol - - thumb_func_start AppendGenderSymbol -AppendGenderSymbol: @ 80425C4 - push {r4,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0 - bne _080425E4 - movs r1, 0 - bl NameHasGenderSymbol - lsls r0, 24 - cmp r0, 0 - bne _08042600 - ldr r1, _080425E0 @ =gOtherText_MaleSymbol3 - b _08042602 - .align 2, 0 -_080425E0: .4byte gOtherText_MaleSymbol3 -_080425E4: - cmp r1, 0xFE - bne _08042600 - adds r0, r4, 0 - movs r1, 0xFE - bl NameHasGenderSymbol - lsls r0, 24 - cmp r0, 0 - bne _08042600 - ldr r1, _080425FC @ =gOtherText_FemaleSymbol3 - b _08042602 - .align 2, 0 -_080425FC: .4byte gOtherText_FemaleSymbol3 -_08042600: - ldr r1, _08042610 @ =gOtherText_GenderlessSymbol -_08042602: - adds r0, r4, 0 - bl StringAppend - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08042610: .4byte gOtherText_GenderlessSymbol - thumb_func_end AppendGenderSymbol - - thumb_func_start MonAppendGenderSymbol -MonAppendGenderSymbol: @ 8042614 - push {r4,lr} - adds r4, r0, 0 - adds r0, r1, 0 - bl GetBoxMonGender - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl AppendGenderSymbol - pop {r4} - pop {r1} - bx r1 - thumb_func_end MonAppendGenderSymbol - - thumb_func_start DaycareLevelMenuGetText -DaycareLevelMenuGetText: @ 8042630 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x28 - mov r8, r0 - adds r7, r1, 0 - movs r0, 0xFF - strb r0, [r7] - movs r6, 0 - add r0, sp, 0x14 - mov r9, r0 -_08042648: - lsls r0, r6, 2 - adds r0, r6 - lsls r4, r0, 4 - add r4, r8 - lsls r0, 2 - mov r1, sp - adds r5, r1, r0 - adds r0, r4, 0 - adds r1, r5, 0 - bl GetBoxMonNick - adds r0, r5, 0 - adds r1, r4, 0 - bl MonAppendGenderSymbol - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x1 - bls _08042648 - adds r0, r7, 0 - mov r1, sp - bl StringCopy - ldr r4, _080426A8 @ =gOtherText_NewLine2 - adds r0, r7, 0 - adds r1, r4, 0 - bl StringAppend - adds r0, r7, 0 - mov r1, r9 - bl StringAppend - adds r0, r7, 0 - adds r1, r4, 0 - bl StringAppend - ldr r1, _080426AC @ =gOtherText_CancelAndLv - adds r0, r7, 0 - bl StringAppend - add sp, 0x28 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080426A8: .4byte gOtherText_NewLine2 -_080426AC: .4byte gOtherText_CancelAndLv - thumb_func_end DaycareLevelMenuGetText - thumb_func_start DaycareLevelMenuGetLevelText DaycareLevelMenuGetLevelText: @ 80426B0 push {r4-r7,lr} diff --git a/include/trade.h b/include/trade.h new file mode 100644 index 000000000..8966d7305 --- /dev/null +++ b/include/trade.h @@ -0,0 +1,12 @@ +// +// Created by Scott Norton on 8/30/17. +// + +#ifndef POKERUBY_TRADE_H +#define POKERUBY_TRADE_H + +const u8 gOtherText_MaleSymbol3[1]; +const u8 gOtherText_FemaleSymbol3[1]; +const u8 gOtherText_GenderlessSymbol[1]; + +#endif //POKERUBY_TRADE_H diff --git a/src/daycare.c b/src/daycare.c index 4f6d2e1d1..e39c39f71 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -11,6 +11,7 @@ #include "pokemon_storage_system.h" #include "rng.h" #include "moves.h" +#include "trade.h" #include "strings2.h" #include "data/pokemon/egg_moves.h" #include "party_menu.h" @@ -1463,3 +1464,138 @@ void sp0B9_daycare_relationship_comment(void) whichString = 0; StringCopy(gStringVar4, gUnknown_08209AC4[whichString]); } + +#ifdef NONMATCHING +bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio) +{ + u8 i; + u8 flags[2]; + + // This portion is nonmatching + flags[1] = 0; + flags[0] = 0; + for (i = 0; name[i] != EOS; i ++) + // End nonmatching portion + + { + if (name[i] == CHAR_MALE) flags[0] ++; + if (name[i] == CHAR_FEMALE) flags[1] ++; + } + if (genderRatio == MON_MALE && flags[0] && !flags[1]) return TRUE; + if (genderRatio == MON_FEMALE && flags[1] && !flags[0]) return TRUE; + return FALSE; +} +#else +__attribute__((naked)) +bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio) +{ + asm_unified("\n" + "\tpush {r4,r5,lr}\n" + "\tsub sp, 0x4\n" + "\tadds r4, r0, 0\n" + "\tlsls r1, 24\n" + "\tlsrs r5, r1, 24\n" + "\tmov r2, sp\n" + "\tmov r1, sp\n" + "\tmovs r0, 0\n" + "\tstrb r0, [r1, 0x1]\n" + "\tstrb r0, [r2]\n" + "\tmovs r3, 0\n" + "\tldrb r0, [r4]\n" + "\tcmp r0, 0xFF\n" + "\tbeq _0804258C\n" + "_08042564:\n" + "\tadds r1, r4, r3\n" + "\tldrb r0, [r1]\n" + "\tcmp r0, 0xB5\n" + "\tbne _08042572\n" + "\tldrb r0, [r2]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r2]\n" + "_08042572:\n" + "\tldrb r0, [r1]\n" + "\tcmp r0, 0xB6\n" + "\tbne _0804257E\n" + "\tldrb r0, [r2, 0x1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r2, 0x1]\n" + "_0804257E:\n" + "\tadds r0, r3, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r3, r0, 24\n" + "\tadds r0, r4, r3\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0xFF\n" + "\tbne _08042564\n" + "_0804258C:\n" + "\tcmp r5, 0\n" + "\tbne _080425A0\n" + "\tmov r0, sp\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbeq _080425A0\n" + "\tmov r0, sp\n" + "\tldrb r0, [r0, 0x1]\n" + "\tcmp r0, 0\n" + "\tbeq _080425B4\n" + "_080425A0:\n" + "\tcmp r5, 0xFE\n" + "\tbne _080425B8\n" + "\tmov r0, sp\n" + "\tldrb r0, [r0, 0x1]\n" + "\tcmp r0, 0\n" + "\tbeq _080425B8\n" + "\tmov r0, sp\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbne _080425B8\n" + "_080425B4:\n" + "\tmovs r0, 0x1\n" + "\tb _080425BA\n" + "_080425B8:\n" + "\tmovs r0, 0\n" + "_080425BA:\n" + "\tadd sp, 0x4\n" + "\tpop {r4,r5}\n" + "\tpop {r1}\n" + "\tbx r1"); +} +#endif + +u8 *AppendGenderSymbol(u8 *name, u8 gender) +{ + if (gender == MON_MALE) + { + if (!NameHasGenderSymbol(name, MON_MALE)) + return StringAppend(name, gOtherText_MaleSymbol3); + } + + else if (gender == MON_FEMALE) + { + if (!NameHasGenderSymbol(name, MON_FEMALE)) + return StringAppend(name, gOtherText_FemaleSymbol3); + } + return StringAppend(name, gOtherText_GenderlessSymbol); +} + +u8 *MonAppendGenderSymbol(u8 *name, struct BoxPokemon *boxMon) +{ + return AppendGenderSymbol(name, GetBoxMonGender(boxMon)); +} + +void DaycareLevelMenuGetText(struct DayCareData *dayCareData, u8 *dest) +{ + u8 buffers[2][20]; + u8 i; + *dest = EOS; + for (i = 0; i < 2; i ++) + { + GetBoxMonNick(&dayCareData->mons[i], buffers[i]); + MonAppendGenderSymbol(buffers[i], &dayCareData->mons[i]); + } + StringCopy(dest, buffers[0]); + StringAppend(dest, gOtherText_NewLine2); + StringAppend(dest, buffers[1]); + StringAppend(dest, gOtherText_NewLine2); + StringAppend(dest, gOtherText_CancelAndLv); +} -- cgit v1.2.3 From d73bd667323a309c3a38d380bcb0c644a101a251 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 30 Aug 2017 17:43:31 -0400 Subject: DaycareLevelMenuGetLevelText --- asm/daycare.s | 64 ----------------------------------------------------------- src/daycare.c | 21 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 64 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index b3fbe6c5c..290fa594e 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,70 +6,6 @@ .text - thumb_func_start DaycareLevelMenuGetLevelText -DaycareLevelMenuGetLevelText: @ 80426B0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - adds r4, r1, 0 - movs r0, 0xFF - strb r0, [r4] - movs r5, 0 - movs r0, 0xFC - mov r8, r0 - movs r7, 0x14 -_080426C6: - lsls r2, r5, 2 - adds r0, r2, r5 - lsls r0, 4 - adds r0, r6, r0 - movs r3, 0x88 - lsls r3, 1 - adds r1, r6, r3 - adds r1, r2 - ldr r1, [r1] - bl Daycare_GetLevelAfterSteps - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x34 - strb r0, [r4] - mov r0, r8 - strb r0, [r4, 0x1] - strb r7, [r4, 0x2] - movs r0, 0x6 - strb r0, [r4, 0x3] - adds r0, r4, 0x4 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r4, r0, 0 - mov r3, r8 - strb r3, [r4] - strb r7, [r4, 0x1] - movs r0, 0 - strb r0, [r4, 0x2] - adds r0, r4, 0x3 - ldr r1, _08042728 @ =gOtherText_NewLine2 - bl StringCopy - adds r4, r0, 0 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x1 - bls _080426C6 - movs r0, 0xFF - strb r0, [r4] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08042728: .4byte gOtherText_NewLine2 - thumb_func_end DaycareLevelMenuGetLevelText - thumb_func_start DaycareLevelMenuProcessKeyInput DaycareLevelMenuProcessKeyInput: @ 804272C push {r4,r5,lr} diff --git a/src/daycare.c b/src/daycare.c index e39c39f71..e4dc2cc45 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -1599,3 +1599,24 @@ void DaycareLevelMenuGetText(struct DayCareData *dayCareData, u8 *dest) StringAppend(dest, gOtherText_NewLine2); StringAppend(dest, gOtherText_CancelAndLv); } + +void DaycareLevelMenuGetLevelText(struct DayCareData *dayCareData, u8 *dest) +{ + u8 i; + u8 level; + *dest = EOS; + for (i = 0; i < 2; i ++) + { + level = Daycare_GetLevelAfterSteps(&dayCareData->mons[i], dayCareData->mail.extra.egg.steps[i]); + dest[0] = 0x34; + dest[1] = 0xFC; + dest[2] = 0x14; + dest[3] = 0x06; + dest = ConvertIntToDecimalStringN(dest + 4, level, STR_CONV_MODE_RIGHT_ALIGN, 3); + dest[0] = 0xFC; + dest[1] = 0x14; + dest[2] = 0x00; + dest = StringCopy(dest + 3, gOtherText_NewLine2); + } + *dest = EOS; +} -- cgit v1.2.3 From 50e82f84d6d379b6e94e7f70a7de47361156ad0f Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 30 Aug 2017 17:51:25 -0400 Subject: DaycareLevelMenuProcessKeyInput --- asm/daycare.s | 115 ---------------------------------------------------------- src/daycare.c | 44 ++++++++++++++++++++++ 2 files changed, 44 insertions(+), 115 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index 290fa594e..609fcbf15 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,121 +6,6 @@ .text - thumb_func_start DaycareLevelMenuProcessKeyInput -DaycareLevelMenuProcessKeyInput: @ 804272C - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - ldr r0, _08042760 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08042768 - ldr r0, _08042764 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r2, [r1, 0x8] - movs r3, 0x8 - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _08042816 - subs r0, r2, 0x1 - strh r0, [r1, 0x8] - movs r0, 0x1 - negs r0, r0 - b _0804278A - .align 2, 0 -_08042760: .4byte gMain -_08042764: .4byte gTasks -_08042768: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804279C - ldr r0, _08042798 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r2, [r1, 0x8] - movs r3, 0x8 - ldrsh r0, [r1, r3] - cmp r0, 0x2 - beq _08042816 - adds r0, r2, 0x1 - strh r0, [r1, 0x8] - movs r0, 0x1 -_0804278A: - bl MoveMenuCursor - movs r0, 0x5 - bl PlaySE - b _08042816 - .align 2, 0 -_08042798: .4byte gTasks -_0804279C: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080427E8 - bl HandleDestroyMenuCursors - movs r0, 0x5 - bl PlaySE - ldr r3, _080427DC @ =gLastFieldPokeMenuOpened - ldr r2, _080427E0 @ =gScriptResult - ldr r1, _080427E4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x8] - strh r0, [r2] - strb r0, [r3] - adds r0, r4, 0 - bl DestroyTask - movs r0, 0xF - movs r1, 0x6 - movs r2, 0x1D - movs r3, 0xD - bl MenuZeroFillWindowRect - bl EnableBothScriptContexts - b _08042816 - .align 2, 0 -_080427DC: .4byte gLastFieldPokeMenuOpened -_080427E0: .4byte gScriptResult -_080427E4: .4byte gTasks -_080427E8: - movs r4, 0x2 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _08042816 - bl HandleDestroyMenuCursors - ldr r0, _0804281C @ =gLastFieldPokeMenuOpened - ldr r1, _08042820 @ =gScriptResult - strh r4, [r1] - movs r1, 0x2 - strb r1, [r0] - adds r0, r5, 0 - bl DestroyTask - movs r0, 0xF - movs r1, 0x6 - movs r2, 0x1D - movs r3, 0xD - bl MenuZeroFillWindowRect - bl EnableBothScriptContexts -_08042816: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804281C: .4byte gLastFieldPokeMenuOpened -_08042820: .4byte gScriptResult - thumb_func_end DaycareLevelMenuProcessKeyInput - thumb_func_start ShowDaycareLevelMenu ShowDaycareLevelMenu: @ 8042824 push {r4,lr} diff --git a/src/daycare.c b/src/daycare.c index e4dc2cc45..8a86c9205 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -16,6 +16,11 @@ #include "data/pokemon/egg_moves.h" #include "party_menu.h" #include "field_effect.h" +#include "main.h" +#include "menu.h" +#include "sound.h" +#include "songs.h" +#include "script.h" extern u16 word_2024E82; @@ -1620,3 +1625,42 @@ void DaycareLevelMenuGetLevelText(struct DayCareData *dayCareData, u8 *dest) } *dest = EOS; } + +void DaycareLevelMenuProcessKeyInput(u8 taskId) +{ + if (gMain.newKeys & DPAD_UP) + { + if (gTasks[taskId].data[0] != 0) + { + gTasks[taskId].data[0] --; + MoveMenuCursor(-1); + PlaySE(SE_SELECT); + } + } + else if (gMain.newKeys & DPAD_DOWN) + { + if (gTasks[taskId].data[0] != 2) + { + gTasks[taskId].data[0] ++; + MoveMenuCursor(+1); + PlaySE(SE_SELECT); + } + } + else if (gMain.newKeys & A_BUTTON) + { + HandleDestroyMenuCursors(); + PlaySE(SE_SELECT); + gLastFieldPokeMenuOpened = gScriptResult = gTasks[taskId].data[0]; + DestroyTask(taskId); + MenuZeroFillWindowRect(15, 6, 29, 13); + EnableBothScriptContexts(); + } + else if (gMain.newKeys & B_BUTTON) + { + HandleDestroyMenuCursors(); + gLastFieldPokeMenuOpened = gScriptResult = 2; + DestroyTask(taskId); + MenuZeroFillWindowRect(15, 6, 29, 13); + EnableBothScriptContexts(); + } +} -- cgit v1.2.3 From 5a939d216b0b2ee84e3adbf2c1678bfee475bbaa Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 30 Aug 2017 17:56:31 -0400 Subject: Finish decompilation of daycare --- asm/daycare.s | 71 ----------------------------------------------------------- ld_script.txt | 1 - src/daycare.c | 19 ++++++++++++++++ 3 files changed, 19 insertions(+), 72 deletions(-) delete mode 100644 asm/daycare.s diff --git a/asm/daycare.s b/asm/daycare.s deleted file mode 100644 index 609fcbf15..000000000 --- a/asm/daycare.s +++ /dev/null @@ -1,71 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start ShowDaycareLevelMenu -ShowDaycareLevelMenu: @ 8042824 - push {r4,lr} - sub sp, 0x6C - movs r0, 0xF - movs r1, 0x6 - movs r2, 0x1D - movs r3, 0xD - bl MenuDrawTextWindow - ldr r4, _08042880 @ =gSaveBlock1 + 0x2F9C - adds r0, r4, 0 - add r1, sp, 0x8 - bl DaycareLevelMenuGetText - add r0, sp, 0x8 - movs r1, 0x10 - movs r2, 0x7 - bl MenuPrint - adds r0, r4, 0 - add r1, sp, 0x8 - bl DaycareLevelMenuGetLevelText - add r0, sp, 0x8 - movs r1, 0xCE - movs r2, 0x38 - movs r3, 0x1 - bl MenuPrint_PixelCoords - movs r0, 0 - str r0, [sp] - movs r0, 0xD - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x10 - movs r2, 0x7 - movs r3, 0x3 - bl InitMenu - ldr r0, _08042884 @ =DaycareLevelMenuProcessKeyInput - movs r1, 0x3 - bl CreateTask - add sp, 0x6C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08042880: .4byte gSaveBlock1 + 0x2F9C -_08042884: .4byte DaycareLevelMenuProcessKeyInput - thumb_func_end ShowDaycareLevelMenu - - thumb_func_start ChooseSendDaycareMon -ChooseSendDaycareMon: @ 8042888 - push {lr} - movs r0, 0x6 - movs r1, 0 - bl OpenPartyMenu - ldr r1, _0804289C @ =gMain - ldr r0, _080428A0 @ =c2_exit_to_overworld_2_switch - str r0, [r1, 0x8] - pop {r0} - bx r0 - .align 2, 0 -_0804289C: .4byte gMain -_080428A0: .4byte c2_exit_to_overworld_2_switch - thumb_func_end ChooseSendDaycareMon - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 10905b93f..eaf87a172 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -72,7 +72,6 @@ SECTIONS { src/util.o(.text); src/blend_palette.o(.text); src/daycare.o(.text); - asm/daycare.o(.text); src/egg_hatch.o(.text); src/battle_interface.o(.text); src/smokescreen.o(.text); diff --git a/src/daycare.c b/src/daycare.c index 8a86c9205..63f3a6861 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -21,6 +21,7 @@ #include "sound.h" #include "songs.h" #include "script.h" +#include "rom4.h" extern u16 word_2024E82; @@ -1664,3 +1665,21 @@ void DaycareLevelMenuProcessKeyInput(u8 taskId) EnableBothScriptContexts(); } } + +void ShowDaycareLevelMenu(void) +{ + u8 buffer[100]; + MenuDrawTextWindow(15, 6, 29, 13); + DaycareLevelMenuGetText(&gSaveBlock1.daycareData, buffer); + MenuPrint(buffer, 16, 7); + DaycareLevelMenuGetLevelText(&gSaveBlock1.daycareData, buffer); + MenuPrint_PixelCoords(buffer, 0xce, 0x38, TRUE); + InitMenu(0, 16, 7, 3, 0, 13); + CreateTask(DaycareLevelMenuProcessKeyInput, 3); +} + +void ChooseSendDaycareMon(void) +{ + OpenPartyMenu(6, 0); + gMain.savedCallback = c2_exit_to_overworld_2_switch; +} -- cgit v1.2.3 From e8d49bf6287142fcb463f416bb7edfd62c053959 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 30 Aug 2017 18:29:31 -0400 Subject: Make static what of the remainder should be static --- src/daycare.c | 27 +++++++++++++++------------ src/mori_debug_menu.c | 8 ++++---- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/daycare.c b/src/daycare.c index 63f3a6861..77786f3d1 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -27,7 +27,7 @@ extern u16 word_2024E82; static void sub_80417F4(struct DayCareMail *); static void sub_80420FC(struct Pokemon *, u16, struct DayCareData *); -u8 daycare_relationship_score(struct DayCareData *); +static u8 daycare_relationship_score(struct DayCareData *); const u8 *const gUnknown_08209AC4[] = { DaycareText_GetAlongVeryWell, @@ -996,7 +996,7 @@ void sp0B8_daycare(void) } #ifdef NONMATCHING -bool8 sub_80421B0(struct DayCareData *dayCareData) +static bool8 sub_80421B0(struct DayCareData *dayCareData) { struct BoxPokemon *parent; u32 i; @@ -1036,7 +1036,7 @@ bool8 sub_80421B0(struct DayCareData *dayCareData) } #else __attribute__((naked)) -bool8 sub_80421B0(struct DayCareData *dayCareData) +static bool8 sub_80421B0(struct DayCareData *dayCareData) { asm_unified("\tpush {r4-r7,lr}\n" "\tsub sp, 0x8\n" @@ -1164,12 +1164,12 @@ bool8 sub_80422A0(void) return sub_80421B0(&gSaveBlock1.daycareData); } -bool8 sub_80422B4(struct DayCareData *dayCareData) +static bool8 sub_80422B4(struct DayCareData *dayCareData) { return (u32)((-dayCareData->mail.extra.egg.personalityLo) | dayCareData->mail.extra.egg.personalityLo) >> 31; } -void sub_80422C4(struct DayCareData *dayCareData) +static void sub_80422C4(struct DayCareData *dayCareData) { u8 language; if (GetBoxMonData(&dayCareData->mons[0], MON_DATA_SPECIES) != 0) @@ -1211,6 +1211,9 @@ u8 sp0B6_daycare(void) return 0; } +#ifdef NONMATCHING +static +#endif bool8 sub_80423A8(u16 *a, u16 *b) { int i, j; @@ -1229,7 +1232,7 @@ bool8 sub_80423A8(u16 *a, u16 *b) } #ifdef NONMATCHING -u8 daycare_relationship_score(struct DayCareData *dayCareData) +static u8 daycare_relationship_score(struct DayCareData *dayCareData) { u16 species[2]; u32 otIds[2]; @@ -1297,7 +1300,7 @@ u8 daycare_relationship_score(struct DayCareData *dayCareData) } #else __attribute__((naked)) -u8 daycare_relationship_score(struct DayCareData *dayCareData) +static u8 daycare_relationship_score(struct DayCareData *dayCareData) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r10\n" @@ -1568,7 +1571,7 @@ bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio) } #endif -u8 *AppendGenderSymbol(u8 *name, u8 gender) +static u8 *AppendGenderSymbol(u8 *name, u8 gender) { if (gender == MON_MALE) { @@ -1584,12 +1587,12 @@ u8 *AppendGenderSymbol(u8 *name, u8 gender) return StringAppend(name, gOtherText_GenderlessSymbol); } -u8 *MonAppendGenderSymbol(u8 *name, struct BoxPokemon *boxMon) +static u8 *MonAppendGenderSymbol(u8 *name, struct BoxPokemon *boxMon) { return AppendGenderSymbol(name, GetBoxMonGender(boxMon)); } -void DaycareLevelMenuGetText(struct DayCareData *dayCareData, u8 *dest) +static void DaycareLevelMenuGetText(struct DayCareData *dayCareData, u8 *dest) { u8 buffers[2][20]; u8 i; @@ -1606,7 +1609,7 @@ void DaycareLevelMenuGetText(struct DayCareData *dayCareData, u8 *dest) StringAppend(dest, gOtherText_CancelAndLv); } -void DaycareLevelMenuGetLevelText(struct DayCareData *dayCareData, u8 *dest) +static void DaycareLevelMenuGetLevelText(struct DayCareData *dayCareData, u8 *dest) { u8 i; u8 level; @@ -1627,7 +1630,7 @@ void DaycareLevelMenuGetLevelText(struct DayCareData *dayCareData, u8 *dest) *dest = EOS; } -void DaycareLevelMenuProcessKeyInput(u8 taskId) +static void DaycareLevelMenuProcessKeyInput(u8 taskId) { if (gMain.newKeys & DPAD_UP) { diff --git a/src/mori_debug_menu.c b/src/mori_debug_menu.c index df3446d3e..a00b3bf71 100644 --- a/src/mori_debug_menu.c +++ b/src/mori_debug_menu.c @@ -52,7 +52,7 @@ u8 MoriDebugMenu_SearchChild(u8 a1, u8 a2, u8 *ptr) u16 monData; u16 var; - monData = GetMonData(gPlayerParty, 11, ptr); + monData = GetMonData(gPlayerParty, MON_DATA_SPECIES, ptr); var = sub_8041870(monData); StringCopy(localPtr, gSpeciesNames[monData]); StringAppend(localPtr, gUnknown_0839B24D); @@ -67,7 +67,7 @@ u8 MoriDebugMenu_SearchChild(u8 a1, u8 a2, u8 *ptr) s8 MoriDebugMenu_Egg(void) { - if ( Daycare_CountPokemon(gSaveBlock1.daycareData.mons) == 2 && daycare_relationship_score_from_savegame() ) + if ( Daycare_CountPokemon(&gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() ) sub_8041940(); CloseMenu(); @@ -76,7 +76,7 @@ s8 MoriDebugMenu_Egg(void) s8 MoriDebugMenu_MaleEgg(void) { - if ( Daycare_CountPokemon(gSaveBlock1.daycareData.mons) == 2 && daycare_relationship_score_from_savegame() ) + if ( Daycare_CountPokemon(&gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() ) sub_8041950(); CloseMenu(); @@ -117,7 +117,7 @@ s8 MoriDebugMenu_BreedEgg(void) SetMonData(&gPlayerParty[loopCounter], MON_DATA_FRIENDSHIP, &friendship); } } - gSaveBlock1.daycareData.unk_11a = -3; + gSaveBlock1.daycareData.mail.extra.egg.unk_11a = -3; CloseMenu(); return 1; } -- cgit v1.2.3 From b7f9479bdb37f12774f7e31a934a3dd5e8f821e0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 30 Aug 2017 19:04:07 -0400 Subject: Fix building --- include/daycare.h | 2 +- include/global.h | 13 +++++++----- src/daycare.c | 56 +++++++++++++++++++++++++-------------------------- src/mori_debug_menu.c | 2 +- src/record_mixing.c | 8 ++++---- 5 files changed, 42 insertions(+), 39 deletions(-) diff --git a/include/daycare.h b/include/daycare.h index 912b49649..e3aec68d3 100644 --- a/include/daycare.h +++ b/include/daycare.h @@ -2,7 +2,7 @@ #define GUARD_DAYCARE_H u8 Daycare_CountPokemon(struct DayCareData *); -void sub_8041324(struct BoxPokemon *, struct DayCareMailEtc *); +void sub_8041324(struct BoxPokemon *, struct RecordMixingDayCareMail *); void sub_8041790(u16 i); u16 sub_8041870(u16); void sub_8041940(void); diff --git a/include/global.h b/include/global.h index b2b4ffcc4..0a415e3e6 100644 --- a/include/global.h +++ b/include/global.h @@ -551,14 +551,17 @@ struct DayCareMailExtra_EggData { u8 unk_11a; }; +struct RecordMixingDayCareMail +{ + struct DayCareMail data[2]; + u32 unk70; + u16 unk74[2]; +}; + struct DayCareMailEtc { struct DayCareMail data[2]; - union { - struct DayCareMailExtra_RecordMixing rc; - struct DayCareMailExtra_EggData egg; - u8 misc[12]; - } extra; + struct DayCareMailExtra_EggData egg; }; struct DayCareData { diff --git a/src/daycare.c b/src/daycare.c index 77786f3d1..b0f7a193f 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -66,7 +66,7 @@ u8 Daycare_CountPokemon(struct DayCareData *daycare_data) return count; } -void sub_8041324(struct BoxPokemon * box_pokemon, struct DayCareMailEtc * daycareMailEtc) +void sub_8041324(struct BoxPokemon * box_pokemon, struct RecordMixingDayCareMail * daycareMailEtc) { u8 i; u8 specCount; @@ -78,17 +78,17 @@ void sub_8041324(struct BoxPokemon * box_pokemon, struct DayCareMailEtc * daycar specCount ++; if (GetBoxMonData(&box_pokemon[i], MON_DATA_HELD_ITEM) == ITEM_NONE) { - daycareMailEtc->extra.rc.unk74[i] = 0; + daycareMailEtc->unk74[i] = 0; } else { - daycareMailEtc->extra.rc.unk74[i] = 1; + daycareMailEtc->unk74[i] = 1; } } else { - daycareMailEtc->extra.rc.unk74[i] = 1; + daycareMailEtc->unk74[i] = 1; } } - daycareMailEtc->extra.rc.unk70 = specCount; + daycareMailEtc->unk70 = specCount; } static s8 Daycare_FindEmptySpot(struct BoxPokemon * daycare_data) @@ -120,7 +120,7 @@ static void Daycare_SendPokemon(struct Pokemon * mon, struct DayCareData * dayca } daycare_data->mons[empty_slot] = mon->box; BoxMonRestorePP(&daycare_data->mons[empty_slot]); - daycare_data->mail.extra.egg.steps[empty_slot] = 0; + daycare_data->mail.egg.steps[empty_slot] = 0; ZeroMonData(mon); party_compaction(); CalculatePlayerPartyCount(); @@ -138,8 +138,8 @@ static void sub_80414C0(struct DayCareData * daycare_data) daycare_data->mons[0] = daycare_data->mons[1]; ZeroBoxMonData(&daycare_data->mons[1]); daycare_data->mail.data[0] = daycare_data->mail.data[1]; - daycare_data->mail.extra.egg.steps[0] = daycare_data->mail.extra.egg.steps[1]; - daycare_data->mail.extra.egg.steps[1] = 0; + daycare_data->mail.egg.steps[0] = daycare_data->mail.egg.steps[1]; + daycare_data->mail.egg.steps[1] = 0; sub_80417F4(&daycare_data->mail.data[1]); } } @@ -180,7 +180,7 @@ static u16 sub_8041570(struct DayCareData * daycare_data, u8 slot) sub_803B4B4(&daycare_data->mons[slot], &pokemon); if (GetMonData(&pokemon, MON_DATA_LEVEL) != MAX_LEVEL) { - experience = GetMonData(&pokemon, MON_DATA_EXP) + daycare_data->mail.extra.egg.steps[slot]; + experience = GetMonData(&pokemon, MON_DATA_EXP) + daycare_data->mail.egg.steps[slot]; SetMonData(&pokemon, MON_DATA_EXP, (u8 *)&experience); DayCare_LevelUpMoves(&pokemon); } @@ -192,7 +192,7 @@ static u16 sub_8041570(struct DayCareData * daycare_data, u8 slot) } party_compaction(); ZeroBoxMonData(&daycare_data->mons[slot]); - daycare_data->mail.extra.egg.steps[slot] = 0; + daycare_data->mail.egg.steps[slot] = 0; sub_80414C0(daycare_data); CalculatePlayerPartyCount(); return species; @@ -216,7 +216,7 @@ static u8 sub_80416A0(struct DayCareData *daycareData, u8 slot) u8 levelAfter; levelBefore = GetLevelFromBoxMonExp(&daycareData->mons[slot]); - levelAfter = Daycare_GetLevelAfterSteps(&daycareData->mons[slot], daycareData->mail.extra.egg.steps[slot]); + levelAfter = Daycare_GetLevelAfterSteps(&daycareData->mons[slot], daycareData->mail.egg.steps[slot]); return levelAfter - levelBefore; } @@ -246,8 +246,8 @@ void sub_8041770(void) void sub_8041790(u16 i) { - gSaveBlock1.daycareData.mail.extra.egg.steps[0] += i; - gSaveBlock1.daycareData.mail.extra.egg.steps[1] += i; + gSaveBlock1.daycareData.mail.egg.steps[0] += i; + gSaveBlock1.daycareData.mail.egg.steps[1] += i; } u8 sub_80417B8(void) @@ -279,11 +279,11 @@ void unref_sub_8041824(struct DayCareData *dayCareData) for (slot = 0; slot < ARRAY_COUNT(dayCareData->mons); slot ++) { ZeroBoxMonData(&dayCareData->mons[slot]); - dayCareData->mail.extra.egg.steps[slot] = 0; + dayCareData->mail.egg.steps[slot] = 0; sub_80417F4(&dayCareData->mail.data[slot]); } - dayCareData->mail.extra.egg.personalityLo = 0; - dayCareData->mail.extra.egg.unk_11a = 0; + dayCareData->mail.egg.personalityLo = 0; + dayCareData->mail.egg.unk_11a = 0; } u16 sub_8041870(u16 species) @@ -315,13 +315,13 @@ u16 sub_8041870(u16 species) static void sub_80418F0(struct DayCareData *dayCareData) { - dayCareData->mail.extra.egg.personalityLo = (Random() % 0xfffe) + 1; + dayCareData->mail.egg.personalityLo = (Random() % 0xfffe) + 1; FlagSet(0x86); } static void sub_804191C(struct DayCareData *dayCareData) { - dayCareData->mail.extra.egg.personalityLo = Random() | 0x8000; + dayCareData->mail.egg.personalityLo = Random() | 0x8000; FlagSet(0x86); } @@ -862,8 +862,8 @@ void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, st static void RemoveEggFromDayCare(struct DayCareData *dayCareData) { - dayCareData->mail.extra.egg.personalityLo = 0; - dayCareData->mail.extra.egg.unk_11a = 0; + dayCareData->mail.egg.personalityLo = 0; + dayCareData->mail.egg.unk_11a = 0; } void sub_8041E7C(void) @@ -910,11 +910,11 @@ static u16 sub_8041EEC(struct DayCareData *dayCareData, u8 *a1) // inherit_speci } } eggSpecies = sub_8041870(species[a1[0]]); - if (eggSpecies == SPECIES_NIDORAN_F && dayCareData->mail.extra.egg.personalityLo & 0x8000) + if (eggSpecies == SPECIES_NIDORAN_F && dayCareData->mail.egg.personalityLo & 0x8000) { eggSpecies = SPECIES_NIDORAN_M; } - if (eggSpecies == SPECIES_ILLUMISE && dayCareData->mail.extra.egg.personalityLo & 0x8000) + if (eggSpecies == SPECIES_ILLUMISE && dayCareData->mail.egg.personalityLo & 0x8000) { eggSpecies = SPECIES_VOLBEAT; } @@ -978,7 +978,7 @@ static void sub_80420FC(struct Pokemon *mon, u16 species, struct DayCareData *da u16 ball; u8 metLevel; u8 language; - personality = dayCareData->mail.extra.egg.personalityLo | (Random() << 16); + personality = dayCareData->mail.egg.personalityLo | (Random() << 16); CreateMon(mon, species, 5, 0x20, TRUE, personality, FALSE, 0); metLevel = 0; ball = ITEM_POKE_BALL; @@ -1007,15 +1007,15 @@ static bool8 sub_80421B0(struct DayCareData *dayCareData) { if (GetBoxMonData(parent, MON_DATA_SANITY_BIT2, v0)) { - dayCareData->mail.extra.egg.steps[i]++; + dayCareData->mail.egg.steps[i]++; v0++; } } - if (dayCareData->mail.extra.egg.personalityLo == 0 && v0 == 2 && dayCareData->mail.extra.misc[4] == 0xff && daycare_relationship_score(dayCareData) > (u32)((u32)(Random() * 100) / 0xffff)) + if (dayCareData->mail.egg.personalityLo == 0 && v0 == 2 && dayCareData->mail.extra.misc[4] == 0xff && daycare_relationship_score(dayCareData) > (u32)((u32)(Random() * 100) / 0xffff)) { sub_8041940(); } - if ((++dayCareData->mail.extra.egg.unk_11a) == 0xff) + if ((++dayCareData->mail.egg.unk_11a) == 0xff) { for (i=0; imail.extra.egg.personalityLo) | dayCareData->mail.extra.egg.personalityLo) >> 31; + return (u32)((-dayCareData->mail.egg.personalityLo) | dayCareData->mail.egg.personalityLo) >> 31; } static void sub_80422C4(struct DayCareData *dayCareData) @@ -1616,7 +1616,7 @@ static void DaycareLevelMenuGetLevelText(struct DayCareData *dayCareData, u8 *de *dest = EOS; for (i = 0; i < 2; i ++) { - level = Daycare_GetLevelAfterSteps(&dayCareData->mons[i], dayCareData->mail.extra.egg.steps[i]); + level = Daycare_GetLevelAfterSteps(&dayCareData->mons[i], dayCareData->mail.egg.steps[i]); dest[0] = 0x34; dest[1] = 0xFC; dest[2] = 0x14; diff --git a/src/mori_debug_menu.c b/src/mori_debug_menu.c index a00b3bf71..62837c8e6 100644 --- a/src/mori_debug_menu.c +++ b/src/mori_debug_menu.c @@ -117,7 +117,7 @@ s8 MoriDebugMenu_BreedEgg(void) SetMonData(&gPlayerParty[loopCounter], MON_DATA_FRIENDSHIP, &friendship); } } - gSaveBlock1.daycareData.mail.extra.egg.unk_11a = -3; + gSaveBlock1.daycareData.mail.egg.unk_11a = -3; CloseMenu(); return 1; } diff --git a/src/record_mixing.c b/src/record_mixing.c index aa6d2c5a9..7c46d4d0a 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -29,7 +29,7 @@ extern u8 ewram[]; #define unk_2018000 (*(struct PlayerRecords *)(ewram + 0x18000)) #define unk_2008000 (*(struct PlayerRecords *)(ewram + 0x08000)) -extern struct DayCareMailEtc gUnknown_02038738; +extern struct RecordMixingDayCareMail gUnknown_02038738; extern u16 gSpecialVar_0x8005; u32 gUnknown_03005D2C; @@ -42,7 +42,7 @@ void *recordMixingTvShows = &gSaveBlock1.tvShows; void *gUnknown_083D0274 = &gSaveBlock1.unknown_2ABC; void *gUnknown_083D0278 = &gSaveBlock1.oldMan; void *recordMixingEasyChatPairs = &gSaveBlock1.easyChatPairs; -struct DayCareMailEtc *gUnknown_083D0280 = &gUnknown_02038738; +struct RecordMixingDayCareMail *gUnknown_083D0280 = &gUnknown_02038738; void *gUnknown_083D0284 = &gSaveBlock2.filler_A8; #define BUFFER_CHUNK_SIZE 200 @@ -59,7 +59,7 @@ struct PlayerRecords u8 filler1004[0x40]; u8 filler1044[0x40]; struct EasyChatPair easyChatPairs[5]; - struct DayCareMailEtc filler10AC; + struct RecordMixingDayCareMail filler10AC; u8 filler1124[0xA4]; u16 filler11C8[0x34]; }; @@ -77,7 +77,7 @@ void RecordMixing_PrepareExchangePacket(void) gUnknown_02038738.data[0] = gSaveBlock1.daycareData.mail.data[0]; gUnknown_02038738.data[1] = gSaveBlock1.daycareData.mail.data[1]; sub_8041324(gSaveBlock1.daycareData.mons, &gUnknown_02038738); - memcpy(&unk_2018000.filler10AC, gUnknown_083D0280, sizeof(struct DayCareMailEtc)); + memcpy(&unk_2018000.filler10AC, gUnknown_083D0280, sizeof(struct RecordMixingDayCareMail)); memcpy(unk_2018000.filler1124, gUnknown_083D0284, sizeof(unk_2018000.filler1124)); if (GetMultiplayerId() == 0) -- cgit v1.2.3 From 0c611fb2c9c2f62c8855d9337a45cb3890d19cb3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 12:01:30 -0400 Subject: SetUpReflection --- asm/field_effect_helpers.s | 96 ---------------------------------------------- include/field_map_obj.h | 3 ++ ld_script.txt | 1 + src/field_effect_helpers.c | 46 ++++++++++++++++++++++ 4 files changed, 50 insertions(+), 96 deletions(-) create mode 100644 src/field_effect_helpers.c diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 9df9dfd8d..7dfe61f03 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,102 +6,6 @@ .text - thumb_func_start SetUpReflection -SetUpReflection: @ 812680C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - adds r4, r1, 0 - lsls r5, r2, 24 - lsrs r5, 24 - movs r0, 0x20 - ldrsh r1, [r4, r0] - movs r0, 0x22 - ldrsh r2, [r4, r0] - adds r0, r4, 0 - movs r3, 0x98 - bl obj_unfreeze - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _081268BC @ =gSprites - adds r7, r1, r0 - ldr r0, _081268C0 @ =sub_81269E0 - str r0, [r7, 0x1C] - ldrb r1, [r7, 0x5] - movs r0, 0xC - orrs r1, r0 - strb r1, [r7, 0x5] - ldr r2, _081268C4 @ =gUnknown_0830FD14 - lsrs r0, r1, 4 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 4 - movs r2, 0xF - ands r1, r2 - orrs r1, r0 - strb r1, [r7, 0x5] - movs r1, 0x3F - adds r1, r7 - mov r8, r1 - ldrb r0, [r1] - movs r1, 0x40 - orrs r0, r1 - mov r1, r8 - strb r0, [r1] - ldr r0, _081268C8 @ =gDummySpriteAnimTable - str r0, [r7, 0x8] - adds r0, r7, 0 - movs r1, 0 - bl StartSpriteAnim - ldr r0, _081268CC @ =gDummySpriteAffineAnimTable - str r0, [r7, 0x10] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x8 - orrs r0, r1 - mov r1, r8 - strb r0, [r1] - adds r2, r7, 0 - adds r2, 0x42 - ldrb r1, [r2] - movs r0, 0x3F - ands r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x2E] - strh r0, [r7, 0x2E] - ldrb r0, [r6, 0x8] - strh r0, [r7, 0x30] - strh r5, [r7, 0x3C] - adds r0, r6, 0 - adds r1, r7, 0 - bl npc_pal_op - cmp r5, 0 - bne _081268B2 - ldrb r0, [r7, 0x1] - movs r1, 0x4 - negs r1, r1 - ands r1, r0 - movs r0, 0x1 - orrs r1, r0 - strb r1, [r7, 0x1] -_081268B2: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081268BC: .4byte gSprites -_081268C0: .4byte sub_81269E0 -_081268C4: .4byte gUnknown_0830FD14 -_081268C8: .4byte gDummySpriteAnimTable -_081268CC: .4byte gDummySpriteAffineAnimTable - thumb_func_end SetUpReflection - thumb_func_start sub_81268D0 sub_81268D0: @ 81268D0 push {lr} diff --git a/include/field_map_obj.h b/include/field_map_obj.h index d2a1a9b1f..23763aa1a 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -3,6 +3,8 @@ #include "sprite.h" +const u8 gUnknown_0830FD14[16]; + #define fieldmap_object_cb(setup, callback, table) \ static u8 callback(struct MapObject *, struct Sprite *);\ void setup(struct Sprite *sprite)\ @@ -427,5 +429,6 @@ void sub_80634D0(struct MapObject *, struct Sprite *); u8 SpawnSpecialFieldObjectParametrized(u8, u8, u8, s16, s16, u8); void CameraObjectSetFollowedObjectId(u8); u8 sub_805ADDC(u8); +u8 obj_unfreeze(struct Sprite *, s16, s16, u8); #endif // GUARD_FIELD_MAP_OBJ_H diff --git a/ld_script.txt b/ld_script.txt index 05ce91cee..c8f29c5db 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -232,6 +232,7 @@ SECTIONS { src/unused_8124F94.o(.text); src/save.o(.text); src/mystery_event_script.o(.text); + src/field_effect_helpers.o(.text); asm/field_effect_helpers.o(.text); asm/contest_ai.o(.text); asm/battle_anim_81258BC.o(.text); diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c new file mode 100644 index 000000000..6b068a1b7 --- /dev/null +++ b/src/field_effect_helpers.c @@ -0,0 +1,46 @@ +// +// Created by scott on 9/9/2017. +// + + +// Includes +#include "global.h" +#include "sprite.h" +#include "field_map_obj.h" +#include "field_effect_helpers.h" + +// Static type declarations + +// Static RAM declarations + +// Static ROM declarations +/*static*/ void sub_81269E0(struct Sprite *); +/*static*/ void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite); + +// .rodata + +// .text + +void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 flag) +{ + struct Sprite *newSprite; + + newSprite = &gSprites[obj_unfreeze(sprite, sprite->pos1.x, sprite->pos1.y, 0x98)]; + newSprite->callback = sub_81269E0; + newSprite->oam.priority = 3; + newSprite->oam.paletteNum = gUnknown_0830FD14[newSprite->oam.paletteNum]; + newSprite->usingSheet = TRUE; + newSprite->anims = gDummySpriteAnimTable; + StartSpriteAnim(newSprite, 0); + newSprite->affineAnims = gDummySpriteAffineAnimTable; + newSprite->affineAnimBeginning = TRUE; + newSprite->subspriteMode = 0; + newSprite->data0 = sprite->data0; + newSprite->data1 = mapObject->localId; + newSprite->data7 = flag; + npc_pal_op(mapObject, newSprite); + if (!flag) + { + newSprite->oam.affineMode = 1; + } +} -- cgit v1.2.3 From add1b59b63bd00bd481333f6e68940cbc30208fc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 14:59:57 -0400 Subject: npc_pal_op and all data --- asm/field_effect_helpers.s | 69 --------------------------------------- data/field_effect_helpers.s | 37 --------------------- ld_script.txt | 2 +- src/field_effect_helpers.c | 79 ++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 79 insertions(+), 108 deletions(-) delete mode 100644 data/field_effect_helpers.s diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 7dfe61f03..c76f846b9 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,75 +6,6 @@ .text - thumb_func_start sub_81268D0 -sub_81268D0: @ 81268D0 - push {lr} - ldrb r0, [r0, 0x5] - bl GetFieldObjectGraphicsInfo - ldrh r0, [r0, 0xA] - subs r0, 0x2 - lsls r0, 16 - asrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_81268D0 - - thumb_func_start npc_pal_op -npc_pal_op: @ 81268E4 - push {r4,r5,lr} - sub sp, 0x8 - adds r5, r0, 0 - adds r4, r1, 0 - ldr r1, _0812693C @ =gUnknown_08401E2C - mov r0, sp - movs r2, 0x6 - bl memcpy - movs r0, 0 - strh r0, [r4, 0x32] - ldrb r0, [r5, 0x5] - bl GetFieldObjectGraphicsInfo - ldrb r1, [r0, 0xC] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08126940 - ldrb r0, [r5, 0x1F] - bl sub_8057450 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08126926 - ldrb r0, [r5, 0x1E] - bl sub_8057450 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08126940 -_08126926: - subs r0, 0x1 - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - strh r0, [r4, 0x32] - ldrb r1, [r4, 0x5] - lsrs r1, 4 - adds r0, r5, 0 - bl npc_pal_op_A - b _0812694A - .align 2, 0 -_0812693C: .4byte gUnknown_08401E2C -_08126940: - ldrb r1, [r4, 0x5] - lsrs r1, 4 - adds r0, r5, 0 - bl npc_pal_op_B -_0812694A: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end npc_pal_op - thumb_func_start npc_pal_op_B npc_pal_op_B: @ 8126954 push {r4,lr} diff --git a/data/field_effect_helpers.s b/data/field_effect_helpers.s deleted file mode 100644 index d22bd8dde..000000000 --- a/data/field_effect_helpers.s +++ /dev/null @@ -1,37 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -@ XXX: Unused? Probably aligned because it's at the beginning of an object file. - .align 2 - .string "タマゴ$" - - .align 1 -gUnknown_08401E2C:: @ 8401E2C - .2byte 0xC, 0x1C, 0x2C - -gUnknown_08401E32:: @ 8401E32 - .byte 0, 1, 2, 3 - - .align 1 -gUnknown_08401E36:: @ 8401E36 - .2byte 4, 4, 4, 16 - - .align 2 -gUnknown_08401E40:: @ 8401E40 - .4byte sub_81275A0 - .4byte sub_81275C4 - - .align 2 -gUnknown_08401E48:: @ 8401E48 - .4byte sub_8127DA0 - .4byte sub_8127DD0 - .4byte sub_8127E30 - -gUnknown_08401E54:: @ 8401E54 - .byte 0, 0, 1, 2, 3 - - .align 1 -gUnknown_08401E5A:: @ 8401E5A - .2byte 3, 7 diff --git a/ld_script.txt b/ld_script.txt index c8f29c5db..7f407a270 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -450,7 +450,7 @@ SECTIONS { src/choose_party.o(.rodata); data/cable_car.o(.rodata); src/save.o(.rodata); - data/field_effect_helpers.o(.rodata); + src/field_effect_helpers.o(.rodata); data/contest_ai.o(.rodata); src/battle_controller_safari.o(.rodata); data/battle_anim_812C144.o(.rodata); diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 6b068a1b7..ea3d21710 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -7,6 +7,7 @@ #include "global.h" #include "sprite.h" #include "field_map_obj.h" +#include "metatile_behavior.h" #include "field_effect_helpers.h" // Static type declarations @@ -15,10 +16,63 @@ // Static ROM declarations /*static*/ void sub_81269E0(struct Sprite *); -/*static*/ void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite); +static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite); +/*static*/ void npc_pal_op_A(struct MapObject *, u8); +/*static*/ void npc_pal_op_B(struct MapObject *, u8); +/*static*/ void sub_81275A0(struct Sprite *); +/*static*/ void sub_81275C4(struct Sprite *); +/*static*/ void sub_8127DA0(struct Sprite *); +/*static*/ void sub_8127DD0(struct Sprite *); +/*static*/ void sub_8127E30(struct Sprite *); // .rodata +const u8 UnusedEggString_8401E28[] = _("タマゴ"); + +const u16 gUnknown_08401E2C[] = { + 0x0c, + 0x1c, + 0x2c +}; + +const u8 gUnknown_08401E32[] = { + 0, + 1, + 2, + 3 +}; + +const u16 gUnknown_08401E36[] = { + 4, + 4, + 4, + 16 +}; + +void (*const gUnknown_08401E40[])(struct Sprite *) = { + sub_81275A0, + sub_81275C4 +}; + +void (*const gUnknown_08401E48[])(struct Sprite *) = { + sub_8127DA0, + sub_8127DD0, + sub_8127E30 +}; + +const u8 gUnknown_08401E54[] = { + 0, + 0, + 1, + 2, + 3 +}; + +const u16 gUnknown_08401E5A[] = { + 3, + 7 +}; + // .text void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 flag) @@ -44,3 +98,26 @@ void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 f newSprite->oam.affineMode = 1; } } + +s16 sub_81268D0(struct MapObject *mapObject) +{ + return GetFieldObjectGraphicsInfo(mapObject->graphicsId)->height - 2; +} + +static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 whichElement; + u16 unk_8041e2c[3]; + + memcpy(unk_8041e2c, gUnknown_08401E2C, sizeof gUnknown_08401E2C); + sprite->data2 = 0; + if (!GetFieldObjectGraphicsInfo(mapObject->graphicsId)->disableReflectionPaletteLoad && ((whichElement = sub_8057450(mapObject->mapobj_unk_1F)) || (whichElement = sub_8057450(mapObject->mapobj_unk_1E)))) + { + sprite->data2 = unk_8041e2c[whichElement - 1]; + npc_pal_op_A(mapObject, sprite->oam.paletteNum); + } + else + { + npc_pal_op_B(mapObject, sprite->oam.paletteNum); + } +} -- cgit v1.2.3 From dd714a763a2c8c6f6fc07743ad16d099fef2037e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 15:05:48 -0400 Subject: npc_pal_op_B --- asm/field_effect_helpers.s | 46 ---------------------------------------------- include/field_map_obj.h | 1 + src/field_effect_helpers.c | 26 +++++++++++++++++++++++++- 3 files changed, 26 insertions(+), 47 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index c76f846b9..5b58e7aff 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,52 +6,6 @@ .text - thumb_func_start npc_pal_op_B -npc_pal_op_B: @ 8126954 - push {r4,lr} - lsls r1, 24 - lsrs r4, r1, 24 - ldrb r0, [r0, 0x5] - bl GetFieldObjectGraphicsInfo - adds r2, r0, 0 - ldrh r1, [r2, 0x4] - ldr r0, _08126980 @ =0x000011ff - cmp r1, r0 - beq _081269A8 - ldrb r0, [r2, 0xC] - movs r1, 0xF - ands r1, r0 - cmp r1, 0 - bne _08126984 - ldrh r0, [r2, 0x2] - adds r1, r4, 0 - bl npc_load_two_palettes__no_record - b _081269A2 - .align 2, 0 -_08126980: .4byte 0x000011ff -_08126984: - cmp r1, 0xA - bne _08126992 - ldrh r0, [r2, 0x2] - adds r1, r4, 0 - bl npc_load_two_palettes__and_record - b _081269A2 -_08126992: - adds r0, r4, 0 - bl npc_paltag_by_palslot - lsls r0, 16 - lsrs r0, 16 - adds r1, r4, 0 - bl pal_patch_for_npc -_081269A2: - adds r0, r4, 0 - bl sub_807D78C -_081269A8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end npc_pal_op_B - thumb_func_start npc_pal_op_A npc_pal_op_A: @ 81269B0 push {r4,lr} diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 23763aa1a..78cf2c146 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -430,5 +430,6 @@ u8 SpawnSpecialFieldObjectParametrized(u8, u8, u8, s16, s16, u8); void CameraObjectSetFollowedObjectId(u8); u8 sub_805ADDC(u8); u8 obj_unfreeze(struct Sprite *, s16, s16, u8); +u16 npc_paltag_by_palslot(u8); #endif // GUARD_FIELD_MAP_OBJ_H diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index ea3d21710..44403eef8 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -7,6 +7,7 @@ #include "global.h" #include "sprite.h" #include "field_map_obj.h" +#include "field_weather.h" #include "metatile_behavior.h" #include "field_effect_helpers.h" @@ -18,7 +19,7 @@ /*static*/ void sub_81269E0(struct Sprite *); static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite); /*static*/ void npc_pal_op_A(struct MapObject *, u8); -/*static*/ void npc_pal_op_B(struct MapObject *, u8); +static void npc_pal_op_B(struct MapObject *, u8); /*static*/ void sub_81275A0(struct Sprite *); /*static*/ void sub_81275C4(struct Sprite *); /*static*/ void sub_8127DA0(struct Sprite *); @@ -121,3 +122,26 @@ static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite) npc_pal_op_B(mapObject, sprite->oam.paletteNum); } } + +static void npc_pal_op_B(struct MapObject *mapObject, u8 paletteNum) +{ + const struct MapObjectGraphicsInfo *graphicsInfo; + + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + if (graphicsInfo->paletteTag2 != 0x11ff) + { + if (graphicsInfo->paletteSlot == 0) + { + npc_load_two_palettes__no_record(graphicsInfo->paletteTag1, paletteNum); + } + else if (graphicsInfo->paletteSlot == 10) + { + npc_load_two_palettes__and_record(graphicsInfo->paletteTag1, paletteNum); + } + else + { + pal_patch_for_npc(npc_paltag_by_palslot(paletteNum), paletteNum); + } + sub_807D78C(paletteNum); + } +} -- cgit v1.2.3 From 791f5a4451033421bdcf81543c744cf2ca981348 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 15:09:09 -0400 Subject: npc_pal_op_A --- asm/field_effect_helpers.s | 25 ------------------------- src/field_effect_helpers.c | 14 +++++++++++++- 2 files changed, 13 insertions(+), 26 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 5b58e7aff..062287cbb 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,31 +6,6 @@ .text - thumb_func_start npc_pal_op_A -npc_pal_op_A: @ 81269B0 - push {r4,lr} - lsls r1, 24 - lsrs r4, r1, 24 - ldrb r0, [r0, 0x5] - bl GetFieldObjectGraphicsInfo - adds r2, r0, 0 - ldrh r1, [r2, 0x4] - ldr r0, _081269DC @ =0x000011ff - cmp r1, r0 - beq _081269D4 - adds r0, r1, 0 - adds r1, r4, 0 - bl pal_patch_for_npc - adds r0, r4, 0 - bl sub_807D78C -_081269D4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081269DC: .4byte 0x000011ff - thumb_func_end npc_pal_op_A - thumb_func_start sub_81269E0 sub_81269E0: @ 81269E0 push {r4-r7,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 44403eef8..3771d24e4 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -18,7 +18,7 @@ // Static ROM declarations /*static*/ void sub_81269E0(struct Sprite *); static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite); -/*static*/ void npc_pal_op_A(struct MapObject *, u8); +static void npc_pal_op_A(struct MapObject *, u8); static void npc_pal_op_B(struct MapObject *, u8); /*static*/ void sub_81275A0(struct Sprite *); /*static*/ void sub_81275C4(struct Sprite *); @@ -145,3 +145,15 @@ static void npc_pal_op_B(struct MapObject *mapObject, u8 paletteNum) sub_807D78C(paletteNum); } } + +static void npc_pal_op_A(struct MapObject *mapObject, u8 paletteNum) +{ + const struct MapObjectGraphicsInfo *graphicsInfo; + + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + if (graphicsInfo->paletteTag2 != 0x11ff) + { + pal_patch_for_npc(graphicsInfo->paletteTag2, paletteNum); + sub_807D78C(paletteNum); + } +} -- cgit v1.2.3 From 0ab00afabb9b494432306267e6af2520a89cdffa Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 15:30:11 -0400 Subject: sub_81269E0 --- asm/field_effect_helpers.s | 188 --------------------------------------------- src/field_effect_helpers.c | 41 +++++++++- 2 files changed, 40 insertions(+), 189 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 062287cbb..776e2bda6 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,194 +6,6 @@ .text - thumb_func_start sub_81269E0 -sub_81269E0: @ 81269E0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _08126A28 @ =gMapObjects - adds r7, r0, r1 - ldrb r1, [r7, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08126A2C @ =gSprites - adds r5, r0, r1 - ldr r0, [r7] - ldr r1, _08126A30 @ =0x00020001 - ands r0, r1 - cmp r0, r1 - bne _08126A18 - ldrb r1, [r7, 0x8] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r1, r0 - beq _08126A34 -_08126A18: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - b _08126B3E - .align 2, 0 -_08126A28: .4byte gMapObjects -_08126A2C: .4byte gSprites -_08126A30: .4byte 0x00020001 -_08126A34: - ldr r1, _08126B4C @ =gUnknown_0830FD14 - ldrb r0, [r5, 0x5] - lsrs r0, 4 - adds r0, r1 - ldrb r1, [r0] - lsls r1, 4 - ldrb r2, [r4, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x5] - ldrb r1, [r5, 0x1] - lsrs r1, 6 - lsls r1, 6 - ldrb r2, [r4, 0x1] - movs r3, 0x3F - adds r0, r3, 0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x1] - ldrb r0, [r5, 0x3] - lsrs r0, 6 - lsls r0, 6 - ldrb r2, [r4, 0x3] - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x3] - ldrb r0, [r5, 0x3] - lsls r0, 26 - lsrs r0, 27 - movs r2, 0x10 - orrs r0, r2 - lsls r0, 1 - subs r2, 0x4F - mov r9, r2 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x3] - ldrh r1, [r5, 0x4] - lsls r1, 22 - lsrs r1, 22 - ldrh r2, [r4, 0x4] - ldr r0, _08126B50 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - ldr r0, [r5, 0x18] - str r0, [r4, 0x18] - adds r0, r5, 0 - adds r0, 0x42 - ldrb r0, [r0] - lsls r0, 26 - lsrs r0, 26 - adds r2, r4, 0 - adds r2, 0x42 - ands r3, r0 - ldrb r1, [r2] - movs r0, 0x40 - negs r0, r0 - ands r0, r1 - orrs r0, r3 - strb r0, [r2] - movs r0, 0x3E - adds r0, r5 - mov r8, r0 - ldrb r0, [r0] - adds r6, r4, 0 - adds r6, 0x3E - movs r1, 0x4 - ands r1, r0 - ldrb r2, [r6] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r6] - ldrh r0, [r5, 0x20] - strh r0, [r4, 0x20] - adds r0, r7, 0 - bl sub_81268D0 - ldrh r1, [r5, 0x22] - adds r0, r1 - ldrh r1, [r4, 0x32] - adds r1, r0 - strh r1, [r4, 0x22] - adds r0, r5, 0 - adds r0, 0x28 - ldrb r1, [r0] - adds r0, r4, 0 - adds r0, 0x28 - strb r1, [r0] - adds r0, r5, 0 - adds r0, 0x29 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x29 - strb r0, [r1] - ldrh r0, [r5, 0x24] - strh r0, [r4, 0x24] - ldrh r0, [r5, 0x26] - negs r0, r0 - strh r0, [r4, 0x26] - mov r2, r8 - ldrb r0, [r2] - movs r1, 0x2 - ands r1, r0 - ldrb r2, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r6] - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08126B3E - ldrb r0, [r4, 0x3] - mov r2, r9 - ands r2, r0 - strb r2, [r4, 0x3] - ldrb r0, [r5, 0x3] - lsls r0, 26 - lsrs r0, 27 - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08126B3E - movs r1, 0x2 - adds r0, r2, 0 - orrs r0, r1 - strb r0, [r4, 0x3] -_08126B3E: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08126B4C: .4byte gUnknown_0830FD14 -_08126B50: .4byte 0xfffffc00 - thumb_func_end sub_81269E0 - thumb_func_start sub_8126B54 sub_8126B54: @ 8126B54 push {r4,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 3771d24e4..63f3caa91 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -16,7 +16,7 @@ // Static RAM declarations // Static ROM declarations -/*static*/ void sub_81269E0(struct Sprite *); +static void sub_81269E0(struct Sprite *); static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite); static void npc_pal_op_A(struct MapObject *, u8); static void npc_pal_op_B(struct MapObject *, u8); @@ -157,3 +157,42 @@ static void npc_pal_op_A(struct MapObject *mapObject, u8 paletteNum) sub_807D78C(paletteNum); } } + +static void sub_81269E0(struct Sprite *sprite) +{ + struct MapObject *mapObject; + struct Sprite *oldSprite; + + mapObject = &gMapObjects[sprite->data0]; + oldSprite = &gSprites[mapObject->spriteId]; + if (!mapObject->active || !mapObject->mapobj_bit_17 || mapObject->localId != sprite->data1) + { + sprite->inUse = FALSE; + } + else + { + sprite->oam.paletteNum = gUnknown_0830FD14[oldSprite->oam.paletteNum]; + sprite->oam.shape = oldSprite->oam.shape; + sprite->oam.size = oldSprite->oam.size; + sprite->oam.matrixNum = oldSprite->oam.matrixNum | 0x10; + sprite->oam.tileNum = oldSprite->oam.tileNum; + sprite->subspriteTables = oldSprite->subspriteTables; + sprite->subspriteTableNum = oldSprite->subspriteTableNum; + sprite->invisible = oldSprite->invisible; + sprite->pos1.x = oldSprite->pos1.x; + sprite->pos1.y = oldSprite->pos1.y + sub_81268D0(mapObject) + sprite->data2; + sprite->centerToCornerVecX = oldSprite->centerToCornerVecX; + sprite->centerToCornerVecY = oldSprite->centerToCornerVecY; + sprite->pos2.x = oldSprite->pos2.x; + sprite->pos2.y = -oldSprite->pos2.y; + sprite->coordOffsetEnabled = oldSprite->coordOffsetEnabled; + if (sprite->data7 == FALSE) + { + sprite->oam.matrixNum = 0; + if (oldSprite->oam.matrixNum & 0x8) + { + sprite->oam.matrixNum = 1; + } + } + } +} -- cgit v1.2.3 From b7843adeef78892090e8a2599aec30dc659120f1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 15:36:45 -0400 Subject: sub_8126B54 --- asm/field_effect_helpers.s | 42 ------------------------------------------ include/field_effect_helpers.h | 2 ++ src/field_effect_helpers.c | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 42 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 776e2bda6..38abfb718 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,48 +6,6 @@ .text - thumb_func_start sub_8126B54 -sub_8126B54: @ 8126B54 - push {r4,lr} - ldr r0, _08126B9C @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x20] - movs r1, 0 - movs r2, 0 - movs r3, 0x52 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - cmp r0, 0x40 - beq _08126B92 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _08126BA0 @ =gSprites - adds r1, r0 - ldrb r2, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - movs r3, 0x4 - orrs r0, r3 - strb r0, [r1, 0x5] - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x2 - orrs r0, r2 - orrs r0, r3 - strb r0, [r1] -_08126B92: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08126B9C: .4byte gFieldEffectObjectTemplatePointers -_08126BA0: .4byte gSprites - thumb_func_end sub_8126B54 - thumb_func_start objid_set_invisible objid_set_invisible: @ 8126BA4 lsls r0, 24 diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h index 11e96254d..bd0acbff6 100644 --- a/include/field_effect_helpers.h +++ b/include/field_effect_helpers.h @@ -1,6 +1,8 @@ #ifndef GUARD_FIELD_EFFECT_HELPERS_H #define GUARD_FIELD_EFFECT_HELPERS_H +extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; + void sub_812869C(struct MapObject *); bool8 sub_81286C4(struct MapObject *); void oamc_shadow(struct Sprite *); diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 63f3caa91..3607be0e4 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -196,3 +196,19 @@ static void sub_81269E0(struct Sprite *sprite) } } } + +u8 sub_8126B54(void) +{ + u8 spriteId; + struct Sprite *sprite; + + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[8], 0, 0, 0x52); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->oam.priority = 1; + sprite->coordOffsetEnabled = TRUE; + sprite->invisible = TRUE; + } + return spriteId; +} -- cgit v1.2.3 From efbe634e4ad9f9997aa864deeba0434ce7620927 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 15:46:53 -0400 Subject: sub_8126BC4 --- asm/field_effect_helpers.s | 106 --------------------------------------------- src/field_effect_helpers.c | 27 +++++++++++- 2 files changed, 26 insertions(+), 107 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 38abfb718..3c8502ddb 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,112 +6,6 @@ .text - thumb_func_start objid_set_invisible -objid_set_invisible: @ 8126BA4 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08126BC0 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - bx lr - .align 2, 0 -_08126BC0: .4byte gSprites - thumb_func_end objid_set_invisible - - thumb_func_start sub_8126BC4 -sub_8126BC4: @ 8126BC4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r2, 16 - lsrs r7, r2, 16 - lsls r3, 16 - lsrs r6, r3, 16 - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - ldr r1, _08126C68 @ =gSprites - adds r2, r0, r1 - adds r0, r2, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _08126C0E - movs r0, 0x2E - ldrsh r1, [r2, r0] - lsls r0, r7, 16 - asrs r0, 16 - cmp r1, r0 - bne _08126C0E - movs r0, 0x30 - ldrsh r1, [r2, r0] - lsls r0, r6, 16 - asrs r0, 16 - cmp r1, r0 - beq _08126C5A -_08126C0E: - lsls r0, r7, 16 - asrs r0, 16 - lsls r1, r6, 16 - asrs r1, 16 - mov r4, sp - adds r4, 0x2 - mov r2, sp - adds r3, r4, 0 - bl sub_80603CC - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - ldr r1, _08126C68 @ =gSprites - adds r2, r0, r1 - mov r0, sp - ldrh r0, [r0] - adds r0, 0x8 - strh r0, [r2, 0x20] - ldrh r0, [r4] - adds r0, 0x8 - strh r0, [r2, 0x22] - adds r3, r2, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - strh r7, [r2, 0x2E] - strh r6, [r2, 0x30] - mov r1, r8 - subs r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - adds r0, r2, 0 - bl StartSpriteAnim -_08126C5A: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08126C68: .4byte gSprites - thumb_func_end sub_8126BC4 - thumb_func_start FldEff_Shadow FldEff_Shadow: @ 8126C6C push {r4,r5,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 3607be0e4..e77665eee 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -202,7 +202,7 @@ u8 sub_8126B54(void) u8 spriteId; struct Sprite *sprite; - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[8], 0, 0, 0x52); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[8] /*gFieldEffectSpriteTemplate_Arrow*/, 0, 0, 0x52); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; @@ -212,3 +212,28 @@ u8 sub_8126B54(void) } return spriteId; } + +void objid_set_invisible(u8 spriteId) +{ + gSprites[spriteId].invisible = TRUE; +} + +void sub_8126BC4(u8 spriteId, u8 animNum, s16 x, s16 y) +{ + s16 x2; + s16 y2; + struct Sprite *sprite; + + sprite = &gSprites[spriteId]; + if (sprite->invisible || sprite->data0 != x || sprite->data1 != y) + { + sub_80603CC(x, y, &x2, &y2); + sprite = &gSprites[spriteId]; + sprite->pos1.x = x2 + 8; + sprite->pos1.y = y2 + 8; + sprite->invisible = FALSE; + sprite->data0 = x; + sprite->data1 = y; + StartSpriteAnim(sprite, animNum - 1); + } +} -- cgit v1.2.3 From e0a25bc2c0f5917dcfd3048e87e2d434ceab6188 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 15:57:52 -0400 Subject: FldEff_Shadow --- asm/field_effect_helpers.s | 79 ---------------------------------------------- src/field_effect_helpers.c | 23 +++++++++++++- 2 files changed, 22 insertions(+), 80 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 3c8502ddb..5a2c0c4fb 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,85 +6,6 @@ .text - thumb_func_start FldEff_Shadow -FldEff_Shadow: @ 8126C6C - push {r4,r5,lr} - ldr r5, _08126CF8 @ =gUnknown_0202FF84 - ldrb r0, [r5] - ldrb r1, [r5, 0x4] - ldrb r2, [r5, 0x8] - bl GetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08126CFC @ =gMapObjects - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x5] - bl GetFieldObjectGraphicsInfo - adds r4, r0, 0 - ldr r2, _08126D00 @ =gFieldEffectObjectTemplatePointers - ldr r1, _08126D04 @ =gUnknown_08401E32 - ldrb r0, [r4, 0xC] - lsls r0, 26 - lsrs r0, 30 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - movs r1, 0 - movs r2, 0 - movs r3, 0x94 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _08126CF0 - ldr r0, _08126D08 @ =gSprites - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - ldr r0, [r5] - strh r0, [r2, 0x2E] - ldr r0, [r5, 0x4] - strh r0, [r2, 0x30] - ldr r0, [r5, 0x8] - strh r0, [r2, 0x32] - ldrh r1, [r4, 0xA] - lsls r1, 16 - asrs r1, 17 - ldr r3, _08126D0C @ =gUnknown_08401E36 - ldrb r0, [r4, 0xC] - lsls r0, 26 - lsrs r0, 30 - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - subs r1, r0 - strh r1, [r2, 0x34] -_08126CF0: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08126CF8: .4byte gUnknown_0202FF84 -_08126CFC: .4byte gMapObjects -_08126D00: .4byte gFieldEffectObjectTemplatePointers -_08126D04: .4byte gUnknown_08401E32 -_08126D08: .4byte gSprites -_08126D0C: .4byte gUnknown_08401E36 - thumb_func_end FldEff_Shadow - thumb_func_start oamc_shadow oamc_shadow: @ 8126D10 push {r4,r5,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index e77665eee..b7dded198 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -6,9 +6,10 @@ // Includes #include "global.h" #include "sprite.h" +#include "metatile_behavior.h" #include "field_map_obj.h" #include "field_weather.h" -#include "metatile_behavior.h" +#include "field_effect.h" #include "field_effect_helpers.h" // Static type declarations @@ -237,3 +238,23 @@ void sub_8126BC4(u8 spriteId, u8 animNum, s16 x, s16 y) StartSpriteAnim(sprite, animNum - 1); } } + +bool8 FldEff_Shadow(void) +{ + u8 mapObjectId; + const struct MapObjectGraphicsInfo *graphicsInfo; + u8 spriteId; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]); + graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[gUnknown_08401E32[graphicsInfo->shadowSize]], 0, 0, 0x94); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].data0 = gUnknown_0202FF84[0]; + gSprites[spriteId].data1 = gUnknown_0202FF84[1]; + gSprites[spriteId].data2 = gUnknown_0202FF84[2]; + gSprites[spriteId].data3 = (graphicsInfo->height >> 1) - gUnknown_08401E36[graphicsInfo->shadowSize]; + } + return FALSE; +} -- cgit v1.2.3 From 994618e494365cfbaeef9f220ba99996c43d5fe8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 16:05:11 -0400 Subject: oamc_shadow --- asm/field_effect_helpers.s | 97 ---------------------------------------------- src/field_effect_helpers.c | 24 ++++++++++++ 2 files changed, 24 insertions(+), 97 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 5a2c0c4fb..3e82ba573 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,103 +6,6 @@ .text - thumb_func_start oamc_shadow -oamc_shadow: @ 8126D10 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - ldrh r0, [r5, 0x2E] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r5, 0x30] - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r5, 0x32] - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - beq _08126D3E - adds r0, r5, 0 - movs r1, 0x3 - bl FieldEffectStop - b _08126DC4 -_08126D3E: - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _08126DCC @ =gMapObjects - adds r4, r0, r1 - ldrb r0, [r4, 0x4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _08126DD0 @ =gSprites - adds r1, r0 - ldrb r0, [r1, 0x5] - movs r2, 0xC - ands r2, r0 - ldrb r3, [r5, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r5, 0x5] - ldrh r0, [r1, 0x20] - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x34] - ldrh r1, [r1, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - ldr r0, [r4] - ldr r1, _08126DD4 @ =0x00400001 - ands r0, r1 - cmp r0, r1 - bne _08126DBC - ldrb r0, [r4, 0x1E] - bl MetatileBehavior_IsPokeGrass - lsls r0, 24 - cmp r0, 0 - bne _08126DBC - ldrb r0, [r4, 0x1E] - bl MetatileBehavior_IsSurfableWaterOrUnderwater - lsls r0, 24 - cmp r0, 0 - bne _08126DBC - ldrb r0, [r4, 0x1F] - bl MetatileBehavior_IsSurfableWaterOrUnderwater - lsls r0, 24 - cmp r0, 0 - bne _08126DBC - ldrb r0, [r4, 0x1E] - bl MetatileBehavior_IsReflective - lsls r0, 24 - cmp r0, 0 - bne _08126DBC - ldrb r0, [r4, 0x1F] - bl MetatileBehavior_IsReflective - lsls r0, 24 - cmp r0, 0 - beq _08126DC4 -_08126DBC: - adds r0, r5, 0 - movs r1, 0x3 - bl FieldEffectStop -_08126DC4: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08126DCC: .4byte gMapObjects -_08126DD0: .4byte gSprites -_08126DD4: .4byte 0x00400001 - thumb_func_end oamc_shadow - thumb_func_start FldEff_TallGrass FldEff_TallGrass: @ 8126DD8 push {r4,r5,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index b7dded198..e10eeca52 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -258,3 +258,27 @@ bool8 FldEff_Shadow(void) } return FALSE; } + +void oamc_shadow(struct Sprite *sprite) +{ + u8 mapObjectId; + struct MapObject *mapObject; + struct Sprite *linkedSprite; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId)) + { + FieldEffectStop(sprite, 3); + } + else + { + mapObject = &gMapObjects[mapObjectId]; + linkedSprite = &gSprites[mapObject->spriteId]; + sprite->oam.priority = linkedSprite->oam.priority; + sprite->pos1.x = linkedSprite->pos1.x; + sprite->pos1.y = linkedSprite->pos1.y + sprite->data3; + if (!mapObject->active || !mapObject->mapobj_bit_22 || MetatileBehavior_IsPokeGrass(mapObject->mapobj_unk_1E) || MetatileBehavior_IsSurfableWaterOrUnderwater(mapObject->mapobj_unk_1E) || MetatileBehavior_IsSurfableWaterOrUnderwater(mapObject->mapobj_unk_1F) || MetatileBehavior_IsReflective(mapObject->mapobj_unk_1E) || MetatileBehavior_IsReflective(mapObject->mapobj_unk_1F)) + { + FieldEffectStop(sprite, 3); + } + } +} -- cgit v1.2.3 From 1c93f4c4de65f16d1a4dc9ace20dd808ce4290db Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 16:14:01 -0400 Subject: FldEff_TallGrass --- asm/field_effect_helpers.s | 81 ---------------------------------------------- include/field_map_obj.h | 1 + src/field_effect_helpers.c | 30 +++++++++++++++++ 3 files changed, 31 insertions(+), 81 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 3e82ba573..4d88413bf 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,87 +6,6 @@ .text - thumb_func_start FldEff_TallGrass -FldEff_TallGrass: @ 8126DD8 - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, _08126E70 @ =gUnknown_0202FF84 - ldrh r1, [r5] - mov r0, sp - strh r1, [r0] - ldrh r0, [r5, 0x4] - mov r4, sp - adds r4, 0x2 - strh r0, [r4] - mov r0, sp - adds r1, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08126E74 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x10] - mov r1, sp - movs r2, 0 - ldrsh r1, [r1, r2] - movs r3, 0 - ldrsh r2, [r4, r3] - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _08126E64 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08126E78 @ =gSprites - adds r3, r0, r1 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x3 - ldrb r1, [r5, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x5] - ldr r0, [r5, 0x8] - strh r0, [r3, 0x2E] - ldr r0, [r5] - strh r0, [r3, 0x30] - ldr r0, [r5, 0x4] - strh r0, [r3, 0x32] - ldr r0, [r5, 0x10] - strh r0, [r3, 0x34] - ldr r0, [r5, 0x14] - strh r0, [r3, 0x36] - ldr r0, [r5, 0x18] - strh r0, [r3, 0x38] - ldr r0, [r5, 0x1C] - cmp r0, 0 - beq _08126E64 - adds r0, r3, 0 - movs r1, 0x4 - bl SeekSpriteAnim -_08126E64: - movs r0, 0 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08126E70: .4byte gUnknown_0202FF84 -_08126E74: .4byte gFieldEffectObjectTemplatePointers -_08126E78: .4byte gSprites - thumb_func_end FldEff_TallGrass - thumb_func_start unc_grass_normal unc_grass_normal: @ 8126E7C push {r4-r7,lr} diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 78cf2c146..9263604fb 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -431,5 +431,6 @@ void CameraObjectSetFollowedObjectId(u8); u8 sub_805ADDC(u8); u8 obj_unfreeze(struct Sprite *, s16, s16, u8); u16 npc_paltag_by_palslot(u8); +void sub_8060470(s16 *, s16 *, s16, s16); #endif // GUARD_FIELD_MAP_OBJ_H diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index e10eeca52..72fd0d554 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -282,3 +282,33 @@ void oamc_shadow(struct Sprite *sprite) } } } + +bool8 FldEff_TallGrass(void) +{ + s16 x; + s16 y; + u8 spriteId; + struct Sprite *sprite; + + x = gUnknown_0202FF84[0]; + y = gUnknown_0202FF84[1]; + sub_8060470(&x, &y, 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[4], x, y, 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gUnknown_0202FF84[3]; + sprite->data0 = gUnknown_0202FF84[2]; + sprite->data1 = gUnknown_0202FF84[0]; + sprite->data2 = gUnknown_0202FF84[1]; + sprite->data3 = gUnknown_0202FF84[4]; + sprite->data4 = gUnknown_0202FF84[5]; + sprite->data5 = gUnknown_0202FF84[6]; + if (gUnknown_0202FF84[7]) + { + SeekSpriteAnim(sprite, 4); + } + } + return FALSE; +} -- cgit v1.2.3 From 32a762db4c2a7a0da5fea8a7302385414fb81e23 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 16:43:04 -0400 Subject: unc_grass_normal --- asm/field_effect_helpers.s | 134 --------------------------------------------- src/field_effect_helpers.c | 46 ++++++++++++++++ 2 files changed, 46 insertions(+), 134 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 4d88413bf..4b26537a9 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,140 +6,6 @@ .text - thumb_func_start unc_grass_normal -unc_grass_normal: @ 8126E7C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r5, r0, 0 - ldrh r0, [r5, 0x38] - lsrs r4, r0, 8 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r3, _08126F24 @ =gUnknown_0202E844 - ldrb r1, [r3] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08126EC6 - ldr r2, _08126F28 @ =gSaveBlock1 - movs r0, 0x5 - ldrsb r0, [r2, r0] - cmp r0, r4 - bne _08126EAC - movs r0, 0x4 - ldrsb r0, [r2, r0] - cmp r0, r7 - beq _08126EC6 -_08126EAC: - ldr r1, [r3, 0x4] - ldrh r0, [r5, 0x30] - subs r0, r1 - strh r0, [r5, 0x30] - ldr r1, [r3, 0x8] - ldrh r0, [r5, 0x32] - subs r0, r1 - strh r0, [r5, 0x32] - ldrb r1, [r2, 0x5] - lsls r1, 8 - ldrb r0, [r2, 0x4] - orrs r0, r1 - strh r0, [r5, 0x38] -_08126EC6: - ldrh r0, [r5, 0x34] - lsrs r1, r0, 8 - mov r8, r1 - lsls r0, 24 - lsrs r4, r0, 24 - ldrh r0, [r5, 0x36] - lsls r0, 24 - lsrs r7, r0, 24 - movs r2, 0x30 - ldrsh r0, [r5, r2] - movs r2, 0x32 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r6, r0, 24 - mov r0, r8 - adds r1, r4, 0 - adds r2, r7, 0 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _08126F1A - adds r0, r6, 0 - bl MetatileBehavior_IsTallGrass - lsls r0, 24 - cmp r0, 0 - beq _08126F1A - movs r1, 0x3C - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _08126F2C - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08126F2C -_08126F1A: - adds r0, r5, 0 - movs r1, 0x4 - bl FieldEffectStop - b _08126F70 - .align 2, 0 -_08126F24: .4byte gUnknown_0202E844 -_08126F28: .4byte gSaveBlock1 -_08126F2C: - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _08126F7C @ =gMapObjects - adds r2, r0, r1 - ldr r0, [r2, 0x10] - ldr r1, [r5, 0x30] - cmp r0, r1 - beq _08126F4C - ldr r0, [r2, 0x14] - cmp r0, r1 - beq _08126F4C - movs r0, 0x1 - strh r0, [r5, 0x3C] -_08126F4C: - movs r6, 0 - adds r0, r5, 0 - adds r0, 0x2B - ldrb r0, [r0] - cmp r0, 0 - bne _08126F5A - movs r6, 0x4 -_08126F5A: - adds r0, r5, 0 - movs r1, 0 - bl sub_806487C - ldrh r1, [r5, 0x2E] - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - adds r2, r6, 0 - bl sub_812882C -_08126F70: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08126F7C: .4byte gMapObjects - thumb_func_end unc_grass_normal - thumb_func_start FldEff_JumpTallGrass FldEff_JumpTallGrass: @ 8126F80 push {r4,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 72fd0d554..98e8242aa 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -6,8 +6,11 @@ // Includes #include "global.h" #include "sprite.h" +#include "fieldmap.h" #include "metatile_behavior.h" #include "field_map_obj.h" +#include "field_camera.h" +#include "field_map_obj_helpers.h" #include "field_weather.h" #include "field_effect.h" #include "field_effect_helpers.h" @@ -26,6 +29,7 @@ static void npc_pal_op_B(struct MapObject *, u8); /*static*/ void sub_8127DA0(struct Sprite *); /*static*/ void sub_8127DD0(struct Sprite *); /*static*/ void sub_8127E30(struct Sprite *); +/*static*/ void sub_812882C(struct Sprite *, u8, u8); // .rodata @@ -312,3 +316,45 @@ bool8 FldEff_TallGrass(void) } return FALSE; } + +void unc_grass_normal(struct Sprite *sprite) +{ + u8 mapNum; + u8 mapGroup; + u8 metatileBehavior; + u8 localId; + u8 mapObjectId; + struct MapObject *mapObject; + + mapNum = sprite->data5 >> 8; + mapGroup = sprite->data5; + if (gUnknown_0202E844.field_0 && (gSaveBlock1.location.mapNum != mapNum || gSaveBlock1.location.mapGroup != mapGroup)) + { + sprite->data1 -= gUnknown_0202E844.x; + sprite->data2 -= gUnknown_0202E844.y; + sprite->data5 = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup; + } + localId = sprite->data3 >> 8; + mapNum = sprite->data3; + mapGroup = sprite->data4; + metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data1, sprite->data2); + if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsTallGrass(metatileBehavior) || (sprite->data7 && sprite->animEnded)) + { + FieldEffectStop(sprite, 4); + } + else + { + mapObject = &gMapObjects[mapObjectId]; + if ((mapObject->coords2.x != sprite->data1 || mapObject->coords2.y != sprite->data2) && (mapObject->coords3.x != sprite->data1 || mapObject->coords3.y != sprite->data2)) + { + sprite->data7 = TRUE; + } + metatileBehavior = 0; + if (sprite->animCmdIndex == 0) + { + metatileBehavior = 4; + } + sub_806487C(sprite, 0); + sub_812882C(sprite, sprite->data0, metatileBehavior); + } +} -- cgit v1.2.3 From 4481e60e09ecc135b260b5f98154bb30f08f241a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 17:37:50 -0400 Subject: gUnknown_0202E844 -> gCamera; fix internal compiler error --- asm/field_effect_helpers.s | 4 ++-- include/field_camera.h | 2 +- include/field_map_obj.h | 2 +- src/field_effect_helpers.c | 6 +++--- src/field_map_obj.c | 6 +++--- src/field_tasks.c | 6 +++--- src/fieldmap.c | 12 ++++++------ 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 4b26537a9..f8df4a36d 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -232,7 +232,7 @@ unc_grass_tall: @ 8127128 lsrs r7, r0, 8 lsls r0, 24 lsrs r6, r0, 24 - ldr r3, _081271D0 @ =gUnknown_0202E844 + ldr r3, _081271D0 @ =gCamera ldrb r1, [r3] movs r0, 0x1 ands r0, r1 @@ -307,7 +307,7 @@ _081271C6: bl FieldEffectStop b _0812720E .align 2, 0 -_081271D0: .4byte gUnknown_0202E844 +_081271D0: .4byte gCamera _081271D4: .4byte gSaveBlock1 _081271D8: mov r0, sp diff --git a/include/field_camera.h b/include/field_camera.h index 4ce207541..17126d190 100644 --- a/include/field_camera.h +++ b/include/field_camera.h @@ -11,7 +11,7 @@ struct CameraSomething s32 unk14; }; -extern struct Camera gUnknown_0202E844; +extern struct Camera gCamera; void move_tilemap_camera_to_upper_left_corner(void); void sub_8057A58(void); diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 9263604fb..af52591b0 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -3,7 +3,7 @@ #include "sprite.h" -const u8 gUnknown_0830FD14[16]; +extern const u8 gUnknown_0830FD14[]; #define fieldmap_object_cb(setup, callback, table) \ static u8 callback(struct MapObject *, struct Sprite *);\ diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 98e8242aa..5a71559ba 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -328,10 +328,10 @@ void unc_grass_normal(struct Sprite *sprite) mapNum = sprite->data5 >> 8; mapGroup = sprite->data5; - if (gUnknown_0202E844.field_0 && (gSaveBlock1.location.mapNum != mapNum || gSaveBlock1.location.mapGroup != mapGroup)) + if (gCamera.field_0 && (gSaveBlock1.location.mapNum != mapNum || gSaveBlock1.location.mapGroup != mapGroup)) { - sprite->data1 -= gUnknown_0202E844.x; - sprite->data2 -= gUnknown_0202E844.y; + sprite->data1 -= gCamera.x; + sprite->data2 -= gCamera.y; sprite->data5 = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup; } localId = sprite->data3 >> 8; diff --git a/src/field_map_obj.c b/src/field_map_obj.c index f60b1b233..1568432f5 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -1901,7 +1901,7 @@ extern void CameraObjectReset1(void); extern struct LinkPlayerMapObject gLinkPlayerMapObjects[]; extern u8 gReservedSpritePaletteCount; -extern struct Camera gUnknown_0202E844; +extern struct Camera gCamera; static u8 gUnknown_030005A4; static u16 gUnknown_030005A6; @@ -2990,9 +2990,9 @@ void UpdateFieldObjectCoordsForCameraUpdate(void) asm(""::"r"(i)); //makes the compiler store i in r3 #endif - if (gUnknown_0202E844.field_0) + if (gCamera.field_0) { - for (i = 0, deltaX = gUnknown_0202E844.x, deltaY = gUnknown_0202E844.y; i < 16; i++) + for (i = 0, deltaX = gCamera.x, deltaY = gCamera.y; i < 16; i++) { struct MapObject *mapObject = &gMapObjects[i]; diff --git a/src/field_tasks.c b/src/field_tasks.c index caf2ce6b9..628ee81de 100644 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -836,11 +836,11 @@ void Task_MuddySlope(u8 taskId) } break; } - if (gUnknown_0202E844.field_0 && mapIndices != data[0]) + if (gCamera.field_0 && mapIndices != data[0]) { data[0] = mapIndices; - x2 = gUnknown_0202E844.x; - y2 = gUnknown_0202E844.y; + x2 = gCamera.x; + y2 = gCamera.y; } else { diff --git a/src/fieldmap.c b/src/fieldmap.c index 0e0ec246c..7171e62b7 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -22,7 +22,7 @@ struct Coords32 EWRAM_DATA static u16 gUnknown_02029828[0x2800] = {0}; EWRAM_DATA struct MapHeader gMapHeader = {0}; -EWRAM_DATA struct Camera gUnknown_0202E844 = {0}; +EWRAM_DATA struct Camera gCamera = {0}; EWRAM_DATA static struct ConnectionFlags gUnknown_0202E850 = {0}; struct BackupMapData gUnknown_03004870; @@ -713,7 +713,7 @@ bool8 CameraMove(int x, int y) unsigned int direction; struct MapConnection *connection; int old_x, old_y; - gUnknown_0202E844.field_0 = FALSE; + gCamera.field_0 = FALSE; direction = GetPostCameraMoveMapBorderId(x, y); if (direction + 1 <= 1) { @@ -728,14 +728,14 @@ bool8 CameraMove(int x, int y) connection = sub_8056A64(direction, gSaveBlock1.pos.x, gSaveBlock1.pos.y); sub_8056918(connection, direction, x, y); sub_80538F0(connection->mapGroup, connection->mapNum); - gUnknown_0202E844.field_0 = TRUE; - gUnknown_0202E844.x = old_x - gSaveBlock1.pos.x; - gUnknown_0202E844.y = old_y - gSaveBlock1.pos.y; + gCamera.field_0 = TRUE; + gCamera.x = old_x - gSaveBlock1.pos.x; + gCamera.y = old_y - gSaveBlock1.pos.y; gSaveBlock1.pos.x += x; gSaveBlock1.pos.y += y; sub_80566F0(direction); } - return gUnknown_0202E844.field_0; + return gCamera.field_0; } struct MapConnection *sub_8056A64(u8 direction, int x, int y) -- cgit v1.2.3 From 56578b2197b1db1e215bf6ef466a765bf41830b1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 17:45:29 -0400 Subject: FldEff_JumpTallGrass; gUnknown_0202FF84 -> gFieldEffectSpawnParams --- asm/field_effect_helpers.s | 157 ++++++++++++++------------------------------ asm/fldeff_80C5CD4.s | 56 ++++++++-------- include/field_effect.h | 2 +- src/battle_transition.c | 16 ++--- src/braille_puzzles.c | 2 +- src/field_effect.c | 84 ++++++++++++------------ src/field_effect_helpers.c | 46 +++++++++---- src/field_ground_effect.c | 128 ++++++++++++++++++------------------ src/field_map_obj.c | 26 ++++---- src/field_map_obj_helpers.c | 10 +-- src/field_player_avatar.c | 14 ++-- src/fldeff_cut.c | 4 +- src/fldeff_flash.c | 2 +- src/fldeff_strength.c | 6 +- src/fldeff_sweetscent.c | 2 +- src/fldeff_teleport.c | 2 +- src/pokemon_menu.c | 14 ++-- src/rom6.c | 24 +++---- src/scrcmd.c | 2 +- src/trainer_see.c | 16 ++--- 20 files changed, 287 insertions(+), 326 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index f8df4a36d..e5875f1f7 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,63 +6,6 @@ .text - thumb_func_start FldEff_JumpTallGrass -FldEff_JumpTallGrass: @ 8126F80 - push {r4,lr} - ldr r4, _08126FE4 @ =gUnknown_0202FF84 - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0xC - bl sub_8060470 - ldr r0, _08126FE8 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x28] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _08126FDC - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _08126FEC @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r4, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - ldr r0, [r4, 0x8] - strh r0, [r2, 0x2E] - movs r0, 0xC - strh r0, [r2, 0x30] -_08126FDC: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08126FE4: .4byte gUnknown_0202FF84 -_08126FE8: .4byte gFieldEffectObjectTemplatePointers -_08126FEC: .4byte gSprites - thumb_func_end FldEff_JumpTallGrass - thumb_func_start sub_8126FF0 sub_8126FF0: @ 8126FF0 push {r4-r7,lr} @@ -143,7 +86,7 @@ _08127074: FldEff_LongGrass: @ 8127080 push {r4,r5,lr} sub sp, 0x4 - ldr r5, _0812711C @ =gUnknown_0202FF84 + ldr r5, _0812711C @ =gFieldEffectSpawnParams ldrh r1, [r5] mov r0, sp strh r1, [r0] @@ -216,7 +159,7 @@ _08127110: pop {r1} bx r1 .align 2, 0 -_0812711C: .4byte gUnknown_0202FF84 +_0812711C: .4byte gFieldEffectSpawnParams _08127120: .4byte gFieldEffectObjectTemplatePointers _08127124: .4byte gSprites thumb_func_end FldEff_LongGrass @@ -350,7 +293,7 @@ _0812721C: .4byte gMapObjects thumb_func_start FldEff_JumpLongGrass FldEff_JumpLongGrass: @ 8127220 push {r4,lr} - ldr r4, _08127284 @ =gUnknown_0202FF84 + ldr r4, _08127284 @ =gFieldEffectSpawnParams adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -399,7 +342,7 @@ _0812727C: pop {r1} bx r1 .align 2, 0 -_08127284: .4byte gUnknown_0202FF84 +_08127284: .4byte gFieldEffectSpawnParams _08127288: .4byte gFieldEffectObjectTemplatePointers _0812728C: .4byte gSprites thumb_func_end FldEff_JumpLongGrass @@ -407,7 +350,7 @@ _0812728C: .4byte gSprites thumb_func_start FldEff_ShortGrass FldEff_ShortGrass: @ 8127290 push {r4-r6,lr} - ldr r6, _08127324 @ =gUnknown_0202FF84 + ldr r6, _08127324 @ =gFieldEffectSpawnParams ldrb r0, [r6] ldrb r1, [r6, 0x4] ldrb r2, [r6, 0x8] @@ -480,7 +423,7 @@ _0812731C: pop {r1} bx r1 .align 2, 0 -_08127324: .4byte gUnknown_0202FF84 +_08127324: .4byte gFieldEffectSpawnParams _08127328: .4byte gMapObjects _0812732C: .4byte gFieldEffectObjectTemplatePointers _08127330: .4byte gSprites @@ -614,7 +557,7 @@ _08127424: .4byte gSprites thumb_func_start FldEff_SandFootprints FldEff_SandFootprints: @ 8127428 push {r4,lr} - ldr r4, _08127490 @ =gUnknown_0202FF84 + ldr r4, _08127490 @ =gFieldEffectSpawnParams adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -663,7 +606,7 @@ _08127486: pop {r1} bx r1 .align 2, 0 -_08127490: .4byte gUnknown_0202FF84 +_08127490: .4byte gFieldEffectSpawnParams _08127494: .4byte gFieldEffectObjectTemplatePointers _08127498: .4byte gSprites thumb_func_end FldEff_SandFootprints @@ -671,7 +614,7 @@ _08127498: .4byte gSprites thumb_func_start FldEff_DeepSandFootprints FldEff_DeepSandFootprints: @ 812749C push {r4,r5,lr} - ldr r4, _08127504 @ =gUnknown_0202FF84 + ldr r4, _08127504 @ =gFieldEffectSpawnParams adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -721,7 +664,7 @@ _081274FC: pop {r1} bx r1 .align 2, 0 -_08127504: .4byte gUnknown_0202FF84 +_08127504: .4byte gFieldEffectSpawnParams _08127508: .4byte gFieldEffectObjectTemplatePointers _0812750C: .4byte gSprites thumb_func_end FldEff_DeepSandFootprints @@ -729,7 +672,7 @@ _0812750C: .4byte gSprites thumb_func_start FldEff_BikeTireTracks FldEff_BikeTireTracks: @ 8127510 push {r4,r5,lr} - ldr r4, _08127578 @ =gUnknown_0202FF84 + ldr r4, _08127578 @ =gFieldEffectSpawnParams adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -779,7 +722,7 @@ _08127570: pop {r1} bx r1 .align 2, 0 -_08127578: .4byte gUnknown_0202FF84 +_08127578: .4byte gFieldEffectSpawnParams _0812757C: .4byte gFieldEffectObjectTemplatePointers _08127580: .4byte gSprites thumb_func_end FldEff_BikeTireTracks @@ -864,7 +807,7 @@ _08127608: thumb_func_start FldEff_Splash FldEff_Splash: @ 8127610 push {r4-r6,lr} - ldr r6, _081276A4 @ =gUnknown_0202FF84 + ldr r6, _081276A4 @ =gFieldEffectSpawnParams ldrb r0, [r6] ldrb r1, [r6, 0x4] ldrb r2, [r6, 0x8] @@ -934,7 +877,7 @@ _0812769A: pop {r1} bx r1 .align 2, 0 -_081276A4: .4byte gUnknown_0202FF84 +_081276A4: .4byte gFieldEffectSpawnParams _081276A8: .4byte gMapObjects _081276AC: .4byte gFieldEffectObjectTemplatePointers _081276B0: .4byte gSprites @@ -1015,7 +958,7 @@ _0812773C: .4byte gMapObjects thumb_func_start FldEff_JumpSmallSplash FldEff_JumpSmallSplash: @ 8127740 push {r4,lr} - ldr r4, _081277A4 @ =gUnknown_0202FF84 + ldr r4, _081277A4 @ =gFieldEffectSpawnParams adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -1064,7 +1007,7 @@ _0812779C: pop {r1} bx r1 .align 2, 0 -_081277A4: .4byte gUnknown_0202FF84 +_081277A4: .4byte gFieldEffectSpawnParams _081277A8: .4byte gFieldEffectObjectTemplatePointers _081277AC: .4byte gSprites thumb_func_end FldEff_JumpSmallSplash @@ -1072,7 +1015,7 @@ _081277AC: .4byte gSprites thumb_func_start FldEff_JumpBigSplash FldEff_JumpBigSplash: @ 81277B0 push {r4,lr} - ldr r4, _08127814 @ =gUnknown_0202FF84 + ldr r4, _08127814 @ =gFieldEffectSpawnParams adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -1121,7 +1064,7 @@ _0812780C: pop {r1} bx r1 .align 2, 0 -_08127814: .4byte gUnknown_0202FF84 +_08127814: .4byte gFieldEffectSpawnParams _08127818: .4byte gFieldEffectObjectTemplatePointers _0812781C: .4byte gSprites thumb_func_end FldEff_JumpBigSplash @@ -1129,7 +1072,7 @@ _0812781C: .4byte gSprites thumb_func_start FldEff_FeetInFlowingWater FldEff_FeetInFlowingWater: @ 8127820 push {r4-r7,lr} - ldr r7, _081278C0 @ =gUnknown_0202FF84 + ldr r7, _081278C0 @ =gFieldEffectSpawnParams ldrb r0, [r7] ldrb r1, [r7, 0x4] ldrb r2, [r7, 0x8] @@ -1205,7 +1148,7 @@ _081278B6: pop {r1} bx r1 .align 2, 0 -_081278C0: .4byte gUnknown_0202FF84 +_081278C0: .4byte gFieldEffectSpawnParams _081278C4: .4byte gMapObjects _081278C8: .4byte gFieldEffectObjectTemplatePointers _081278CC: .4byte gSprites @@ -1300,7 +1243,7 @@ FldEff_Ripple: @ 8127978 push {r4,lr} ldr r0, _081279CC @ =gFieldEffectObjectTemplatePointers ldr r0, [r0, 0x14] - ldr r4, _081279D0 @ =gUnknown_0202FF84 + ldr r4, _081279D0 @ =gFieldEffectSpawnParams movs r2, 0 ldrsh r1, [r4, r2] movs r3, 0x4 @@ -1341,14 +1284,14 @@ _081279C4: bx r1 .align 2, 0 _081279CC: .4byte gFieldEffectObjectTemplatePointers -_081279D0: .4byte gUnknown_0202FF84 +_081279D0: .4byte gFieldEffectSpawnParams _081279D4: .4byte gSprites thumb_func_end FldEff_Ripple thumb_func_start FldEff_HotSpringsWater FldEff_HotSpringsWater: @ 81279D8 push {r4-r6,lr} - ldr r6, _08127A6C @ =gUnknown_0202FF84 + ldr r6, _08127A6C @ =gFieldEffectSpawnParams ldrb r0, [r6] ldrb r1, [r6, 0x4] ldrb r2, [r6, 0x8] @@ -1421,7 +1364,7 @@ _08127A64: pop {r1} bx r1 .align 2, 0 -_08127A6C: .4byte gUnknown_0202FF84 +_08127A6C: .4byte gFieldEffectSpawnParams _08127A70: .4byte gMapObjects _08127A74: .4byte gFieldEffectObjectTemplatePointers _08127A78: .4byte gSprites @@ -1509,7 +1452,7 @@ _08127B10: .4byte gSprites thumb_func_start FldEff_Unknown19 FldEff_Unknown19: @ 8127B14 push {r4,lr} - ldr r4, _08127B74 @ =gUnknown_0202FF84 + ldr r4, _08127B74 @ =gFieldEffectSpawnParams adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -1556,7 +1499,7 @@ _08127B6C: pop {r1} bx r1 .align 2, 0 -_08127B74: .4byte gUnknown_0202FF84 +_08127B74: .4byte gFieldEffectSpawnParams _08127B78: .4byte gFieldEffectObjectTemplatePointers _08127B7C: .4byte gSprites thumb_func_end FldEff_Unknown19 @@ -1564,7 +1507,7 @@ _08127B7C: .4byte gSprites thumb_func_start FldEff_Unknown20 FldEff_Unknown20: @ 8127B80 push {r4,lr} - ldr r4, _08127BE0 @ =gUnknown_0202FF84 + ldr r4, _08127BE0 @ =gFieldEffectSpawnParams adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -1611,7 +1554,7 @@ _08127BD8: pop {r1} bx r1 .align 2, 0 -_08127BE0: .4byte gUnknown_0202FF84 +_08127BE0: .4byte gFieldEffectSpawnParams _08127BE4: .4byte gFieldEffectObjectTemplatePointers _08127BE8: .4byte gSprites thumb_func_end FldEff_Unknown20 @@ -1619,7 +1562,7 @@ _08127BE8: .4byte gSprites thumb_func_start FldEff_Unknown21 FldEff_Unknown21: @ 8127BEC push {r4,lr} - ldr r4, _08127C4C @ =gUnknown_0202FF84 + ldr r4, _08127C4C @ =gFieldEffectSpawnParams adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -1666,7 +1609,7 @@ _08127C44: pop {r1} bx r1 .align 2, 0 -_08127C4C: .4byte gUnknown_0202FF84 +_08127C4C: .4byte gFieldEffectSpawnParams _08127C50: .4byte gFieldEffectObjectTemplatePointers _08127C54: .4byte gSprites thumb_func_end FldEff_Unknown21 @@ -1674,7 +1617,7 @@ _08127C54: .4byte gSprites thumb_func_start FldEff_Unknown22 FldEff_Unknown22: @ 8127C58 push {r4,lr} - ldr r4, _08127CB8 @ =gUnknown_0202FF84 + ldr r4, _08127CB8 @ =gFieldEffectSpawnParams adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -1721,7 +1664,7 @@ _08127CB0: pop {r1} bx r1 .align 2, 0 -_08127CB8: .4byte gUnknown_0202FF84 +_08127CB8: .4byte gFieldEffectSpawnParams _08127CBC: .4byte gFieldEffectObjectTemplatePointers _08127CC0: .4byte gSprites thumb_func_end FldEff_Unknown22 @@ -1731,7 +1674,7 @@ ash: @ 8127CC4 push {r4,lr} lsls r2, 16 lsrs r2, 16 - ldr r4, _08127CF4 @ =gUnknown_0202FF84 + ldr r4, _08127CF4 @ =gFieldEffectSpawnParams lsls r0, 16 asrs r0, 16 str r0, [r4] @@ -1752,14 +1695,14 @@ ash: @ 8127CC4 pop {r0} bx r0 .align 2, 0 -_08127CF4: .4byte gUnknown_0202FF84 +_08127CF4: .4byte gFieldEffectSpawnParams thumb_func_end ash thumb_func_start FldEff_Ash FldEff_Ash: @ 8127CF8 push {r4,r5,lr} sub sp, 0x4 - ldr r5, _08127D78 @ =gUnknown_0202FF84 + ldr r5, _08127D78 @ =gFieldEffectSpawnParams ldrh r1, [r5] mov r0, sp strh r1, [r0] @@ -1821,7 +1764,7 @@ _08127D6E: pop {r1} bx r1 .align 2, 0 -_08127D78: .4byte gUnknown_0202FF84 +_08127D78: .4byte gFieldEffectSpawnParams _08127D7C: .4byte gFieldEffectObjectTemplatePointers _08127D80: .4byte gSprites thumb_func_end FldEff_Ash @@ -1944,7 +1887,7 @@ _08127E50: thumb_func_start FldEff_SurfBlob FldEff_SurfBlob: @ 8127E58 push {r4,r5,lr} - ldr r4, _08127EC0 @ =gUnknown_0202FF84 + ldr r4, _08127EC0 @ =gFieldEffectSpawnParams adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -1994,7 +1937,7 @@ _08127EB2: pop {r1} bx r1 .align 2, 0 -_08127EC0: .4byte gUnknown_0202FF84 +_08127EC0: .4byte gFieldEffectSpawnParams _08127EC4: .4byte gFieldEffectObjectTemplatePointers _08127EC8: .4byte gSprites _08127ECC: .4byte 0x0000ffff @@ -2412,7 +2355,7 @@ _081281B0: .4byte gSprites thumb_func_start FldEff_Dust FldEff_Dust: @ 81281B4 push {r4,lr} - ldr r4, _08128218 @ =gUnknown_0202FF84 + ldr r4, _08128218 @ =gFieldEffectSpawnParams adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -2461,7 +2404,7 @@ _08128210: pop {r1} bx r1 .align 2, 0 -_08128218: .4byte gUnknown_0202FF84 +_08128218: .4byte gFieldEffectSpawnParams _0812821C: .4byte gFieldEffectObjectTemplatePointers _08128220: .4byte gSprites thumb_func_end FldEff_Dust @@ -2469,7 +2412,7 @@ _08128220: .4byte gSprites thumb_func_start FldEff_SandPile FldEff_SandPile: @ 8128224 push {r4-r7,lr} - ldr r7, _081282D0 @ =gUnknown_0202FF84 + ldr r7, _081282D0 @ =gFieldEffectSpawnParams ldrb r0, [r7] ldrb r1, [r7, 0x4] ldrb r2, [r7, 0x8] @@ -2552,7 +2495,7 @@ _081282C8: pop {r1} bx r1 .align 2, 0 -_081282D0: .4byte gUnknown_0202FF84 +_081282D0: .4byte gFieldEffectSpawnParams _081282D4: .4byte gMapObjects _081282D8: .4byte gFieldEffectObjectTemplatePointers _081282DC: .4byte gSprites @@ -2666,7 +2609,7 @@ _081283A8: .4byte gMapObjects thumb_func_start FldEff_Bubbles FldEff_Bubbles: @ 81283AC push {r4,lr} - ldr r4, _08128404 @ =gUnknown_0202FF84 + ldr r4, _08128404 @ =gFieldEffectSpawnParams adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -2709,7 +2652,7 @@ _081283FC: pop {r1} bx r1 .align 2, 0 -_08128404: .4byte gUnknown_0202FF84 +_08128404: .4byte gFieldEffectSpawnParams _08128408: .4byte gFieldEffectObjectTemplatePointers _0812840C: .4byte gSprites thumb_func_end FldEff_Bubbles @@ -2751,7 +2694,7 @@ _0812844C: .4byte 0x00001004 thumb_func_start FldEff_BerryTreeGrowthSparkle FldEff_BerryTreeGrowthSparkle: @ 8128450 push {r4,lr} - ldr r4, _081284B8 @ =gUnknown_0202FF84 + ldr r4, _081284B8 @ =gFieldEffectSpawnParams adds r1, r4, 0x4 adds r0, r4, 0 movs r2, 0x8 @@ -2802,7 +2745,7 @@ _081284B0: pop {r1} bx r1 .align 2, 0 -_081284B8: .4byte gUnknown_0202FF84 +_081284B8: .4byte gFieldEffectSpawnParams _081284BC: .4byte gFieldEffectObjectTemplatePointers _081284C0: .4byte gSprites thumb_func_end FldEff_BerryTreeGrowthSparkle @@ -2853,7 +2796,7 @@ ShowDisguiseFieldEffect: @ 81284F4 lsrs r6, r1, 24 lsls r2, 24 lsrs r7, r2, 24 - ldr r5, _08128528 @ =gUnknown_0202FF84 + ldr r5, _08128528 @ =gFieldEffectSpawnParams ldrb r0, [r5] ldrb r1, [r5, 0x4] ldrb r2, [r5, 0x8] @@ -2867,7 +2810,7 @@ ShowDisguiseFieldEffect: @ 81284F4 movs r0, 0x40 b _08128598 .align 2, 0 -_08128528: .4byte gUnknown_0202FF84 +_08128528: .4byte gFieldEffectSpawnParams _0812852C: ldr r1, _081285A4 @ =gFieldEffectObjectTemplatePointers lsls r0, r6, 2 @@ -3121,7 +3064,7 @@ _081286FC: thumb_func_start FldEff_Sparkle FldEff_Sparkle: @ 8128700 push {r4,lr} - ldr r4, _08128768 @ =gUnknown_0202FF84 + ldr r4, _08128768 @ =gFieldEffectSpawnParams ldr r0, [r4] adds r0, 0x7 str r0, [r4] @@ -3172,7 +3115,7 @@ _08128760: pop {r1} bx r1 .align 2, 0 -_08128768: .4byte gUnknown_0202FF84 +_08128768: .4byte gFieldEffectSpawnParams _0812876C: .4byte gFieldEffectObjectTemplatePointers _08128770: .4byte gSprites thumb_func_end FldEff_Sparkle diff --git a/asm/fldeff_80C5CD4.s b/asm/fldeff_80C5CD4.s index 33182fc6a..4fe6c1f89 100644 --- a/asm/fldeff_80C5CD4.s +++ b/asm/fldeff_80C5CD4.s @@ -741,7 +741,7 @@ _080C627C: .4byte gMapHeader thumb_func_start sub_80C6280 sub_80C6280: @ 80C6280 push {lr} - ldr r1, _080C6294 @ =gUnknown_0202FF84 + ldr r1, _080C6294 @ =gFieldEffectSpawnParams ldr r0, [r1, 0x4] cmp r0, 0x2 beq _080C62AA @@ -751,7 +751,7 @@ sub_80C6280: @ 80C6280 beq _080C62A2 b _080C62BE .align 2, 0 -_080C6294: .4byte gUnknown_0202FF84 +_080C6294: .4byte gFieldEffectSpawnParams _080C6298: cmp r0, 0x3 beq _080C62AE @@ -880,7 +880,7 @@ _080C6398: .4byte sub_80C660C thumb_func_start sub_80C639C sub_80C639C: @ 80C639C push {lr} - ldr r1, _080C63B0 @ =gUnknown_0202FF84 + ldr r1, _080C63B0 @ =gFieldEffectSpawnParams ldr r0, _080C63B4 @ =gLastFieldPokeMenuOpened ldrb r0, [r0] str r0, [r1] @@ -889,7 +889,7 @@ sub_80C639C: @ 80C639C pop {r0} bx r0 .align 2, 0 -_080C63B0: .4byte gUnknown_0202FF84 +_080C63B0: .4byte gFieldEffectSpawnParams _080C63B4: .4byte gLastFieldPokeMenuOpened _080C63B8: .4byte gUnknown_081A2CE6 thumb_func_end sub_80C639C @@ -943,7 +943,7 @@ FldEff_SecretPowerCave: @ 80C63FC ldrh r1, [r2, 0x2] lsls r1, 23 lsrs r1, 23 - ldr r4, _080C6448 @ =gUnknown_0202FF84 + ldr r4, _080C6448 @ =gFieldEffectSpawnParams ldr r3, [r4, 0x14] adds r1, r3 lsls r1, 16 @@ -963,7 +963,7 @@ FldEff_SecretPowerCave: @ 80C63FC _080C643C: .4byte gSpriteTemplate_83D2614 _080C6440: .4byte gSprites _080C6444: .4byte gPlayerAvatar -_080C6448: .4byte gUnknown_0202FF84 +_080C6448: .4byte gFieldEffectSpawnParams thumb_func_end FldEff_SecretPowerCave thumb_func_start sub_80C644C @@ -1025,7 +1025,7 @@ sub_80C6498: @ 80C6498 thumb_func_start sub_80C64A8 sub_80C64A8: @ 80C64A8 push {lr} - ldr r1, _080C64BC @ =gUnknown_0202FF84 + ldr r1, _080C64BC @ =gFieldEffectSpawnParams ldr r0, _080C64C0 @ =gLastFieldPokeMenuOpened ldrb r0, [r0] str r0, [r1] @@ -1034,7 +1034,7 @@ sub_80C64A8: @ 80C64A8 pop {r0} bx r0 .align 2, 0 -_080C64BC: .4byte gUnknown_0202FF84 +_080C64BC: .4byte gFieldEffectSpawnParams _080C64C0: .4byte gLastFieldPokeMenuOpened _080C64C4: .4byte gUnknown_081A2D3E thumb_func_end sub_80C64A8 @@ -1088,13 +1088,13 @@ FldEff_SecretPowerTree: @ 80C6508 ands r2, r0 cmp r2, 0x96 bne _080C652A - ldr r1, _080C6588 @ =gUnknown_0202FF84 + ldr r1, _080C6588 @ =gFieldEffectSpawnParams movs r0, 0 str r0, [r1, 0x1C] _080C652A: cmp r2, 0x9C bne _080C6534 - ldr r1, _080C6588 @ =gUnknown_0202FF84 + ldr r1, _080C6588 @ =gFieldEffectSpawnParams movs r0, 0x2 str r0, [r1, 0x1C] _080C6534: @@ -1110,7 +1110,7 @@ _080C6534: ldrh r1, [r2, 0x2] lsls r1, 23 lsrs r1, 23 - ldr r4, _080C6588 @ =gUnknown_0202FF84 + ldr r4, _080C6588 @ =gFieldEffectSpawnParams ldr r3, [r4, 0x14] adds r1, r3 lsls r1, 16 @@ -1137,7 +1137,7 @@ _080C6576: .align 2, 0 _080C6580: .4byte gUnknown_0203923C _080C6584: .4byte 0x00000fff -_080C6588: .4byte gUnknown_0202FF84 +_080C6588: .4byte gFieldEffectSpawnParams _080C658C: .4byte gSpriteTemplate_83D262C _080C6590: .4byte gSprites _080C6594: .4byte gPlayerAvatar @@ -1149,7 +1149,7 @@ sub_80C6598: @ 80C6598 adds r4, r0, 0 movs r0, 0x9B bl PlaySE - ldr r0, _080C65BC @ =gUnknown_0202FF84 + ldr r0, _080C65BC @ =gFieldEffectSpawnParams ldr r1, [r0, 0x1C] adds r2, r4, 0 adds r2, 0x2A @@ -1162,7 +1162,7 @@ sub_80C6598: @ 80C6598 pop {r0} bx r0 .align 2, 0 -_080C65BC: .4byte gUnknown_0202FF84 +_080C65BC: .4byte gFieldEffectSpawnParams _080C65C0: .4byte sub_80C65C4 thumb_func_end sub_80C6598 @@ -1177,7 +1177,7 @@ sub_80C65C4: @ 80C65C4 asrs r0, 16 cmp r0, 0x27 ble _080C65EE - ldr r0, _080C65F4 @ =gUnknown_0202FF84 + ldr r0, _080C65F4 @ =gFieldEffectSpawnParams ldr r0, [r0, 0x1C] cmp r0, 0 beq _080C65E2 @@ -1195,7 +1195,7 @@ _080C65EE: pop {r0} bx r0 .align 2, 0 -_080C65F4: .4byte gUnknown_0202FF84 +_080C65F4: .4byte gFieldEffectSpawnParams _080C65F8: .4byte sub_80C65FC thumb_func_end sub_80C65C4 @@ -1212,7 +1212,7 @@ sub_80C65FC: @ 80C65FC thumb_func_start sub_80C660C sub_80C660C: @ 80C660C push {lr} - ldr r1, _080C6620 @ =gUnknown_0202FF84 + ldr r1, _080C6620 @ =gFieldEffectSpawnParams ldr r0, _080C6624 @ =gLastFieldPokeMenuOpened ldrb r0, [r0] str r0, [r1] @@ -1221,7 +1221,7 @@ sub_80C660C: @ 80C660C pop {r0} bx r0 .align 2, 0 -_080C6620: .4byte gUnknown_0202FF84 +_080C6620: .4byte gFieldEffectSpawnParams _080C6624: .4byte gLastFieldPokeMenuOpened _080C6628: .4byte gUnknown_081A2D96 thumb_func_end sub_80C660C @@ -1275,7 +1275,7 @@ FldEff_SecretPowerShrub: @ 80C666C ldrh r1, [r2, 0x2] lsls r1, 23 lsrs r1, 23 - ldr r4, _080C66B8 @ =gUnknown_0202FF84 + ldr r4, _080C66B8 @ =gFieldEffectSpawnParams ldr r3, [r4, 0x14] adds r1, r3 lsls r1, 16 @@ -1295,7 +1295,7 @@ FldEff_SecretPowerShrub: @ 80C666C _080C66AC: .4byte gSpriteTemplate_83D2644 _080C66B0: .4byte gSprites _080C66B4: .4byte gPlayerAvatar -_080C66B8: .4byte gUnknown_0202FF84 +_080C66B8: .4byte gFieldEffectSpawnParams thumb_func_end FldEff_SecretPowerShrub thumb_func_start sub_80C66BC @@ -2103,7 +2103,7 @@ FldEff_SandPillar: @ 80C6D3C mov r0, sp adds r1, r4, 0 bl GetXYCoordsOneStepInFrontOfPlayer - ldr r1, _080C6D78 @ =gUnknown_0202FF84 + ldr r1, _080C6D78 @ =gFieldEffectSpawnParams mov r0, sp movs r2, 0 ldrsh r0, [r0, r2] @@ -2122,7 +2122,7 @@ FldEff_SandPillar: @ 80C6D3C beq _080C6D86 b _080C6E4C .align 2, 0 -_080C6D78: .4byte gUnknown_0202FF84 +_080C6D78: .4byte gFieldEffectSpawnParams _080C6D7C: cmp r0, 0x3 beq _080C6DEC @@ -2240,7 +2240,7 @@ SpriteCB_SandPillar_0: @ 80C6E64 adds r5, r0, 0 movs r0, 0x83 bl PlaySE - ldr r4, _080C6E90 @ =gUnknown_0202FF84 + ldr r4, _080C6E90 @ =gFieldEffectSpawnParams ldr r0, [r4, 0x14] ldr r1, [r4, 0x18] subs r1, 0x1 @@ -2255,7 +2255,7 @@ SpriteCB_SandPillar_0: @ 80C6E64 bl MapGridSetMetatileIdAt b _080C6EAA .align 2, 0 -_080C6E90: .4byte gUnknown_0202FF84 +_080C6E90: .4byte gFieldEffectSpawnParams _080C6E94: .4byte 0x00000286 _080C6E98: .4byte 0x00000e02 _080C6E9C: @@ -2266,7 +2266,7 @@ _080C6E9C: lsls r2, 2 bl MapGridSetMetatileIdAt _080C6EAA: - ldr r4, _080C6ED8 @ =gUnknown_0202FF84 + ldr r4, _080C6ED8 @ =gFieldEffectSpawnParams ldr r0, [r4, 0x14] ldr r1, [r4, 0x18] ldr r2, _080C6EDC @ =0x0000020a @@ -2286,7 +2286,7 @@ _080C6EAA: pop {r0} bx r0 .align 2, 0 -_080C6ED8: .4byte gUnknown_0202FF84 +_080C6ED8: .4byte gFieldEffectSpawnParams _080C6EDC: .4byte 0x0000020a _080C6EE0: .4byte SpriteCB_SandPillar_1 thumb_func_end SpriteCB_SandPillar_0 @@ -2304,7 +2304,7 @@ SpriteCB_SandPillar_1: @ 80C6EE4 strh r0, [r5, 0x2E] b _080C6F14 _080C6EF8: - ldr r4, _080C6F1C @ =gUnknown_0202FF84 + ldr r4, _080C6F1C @ =gFieldEffectSpawnParams ldr r0, [r4, 0x14] ldr r1, [r4, 0x18] ldr r2, _080C6F20 @ =0x00000e8c @@ -2321,7 +2321,7 @@ _080C6F14: pop {r0} bx r0 .align 2, 0 -_080C6F1C: .4byte gUnknown_0202FF84 +_080C6F1C: .4byte gFieldEffectSpawnParams _080C6F20: .4byte 0x00000e8c _080C6F24: .4byte SpriteCB_SandPillar_2 thumb_func_end SpriteCB_SandPillar_1 diff --git a/include/field_effect.h b/include/field_effect.h index f43b15afb..62e17b53c 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -253,6 +253,6 @@ void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8); void sub_80878A8(void); void sub_8087BA8(void); -extern u32 gUnknown_0202FF84[8]; +extern u32 gFieldEffectSpawnParams[8]; #endif // GUARD_FIELD_EFFECT_H diff --git a/src/battle_transition.c b/src/battle_transition.c index 1cacb8857..fd6eab491 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -994,10 +994,10 @@ static bool8 Phase2_Transition_PokeballsTrail_Func2(struct Task* task) rand = Random() & 1; for (i = 0; i <= 4; i++, rand ^= 1) { - gUnknown_0202FF84[0] = arr0[rand]; // x - gUnknown_0202FF84[1] = (i * 32) + 16; // y - gUnknown_0202FF84[2] = rand; - gUnknown_0202FF84[3] = arr1[i]; + gFieldEffectSpawnParams[0] = arr0[rand]; // x + gFieldEffectSpawnParams[1] = (i * 32) + 16; // y + gFieldEffectSpawnParams[2] = rand; + gFieldEffectSpawnParams[3] = arr1[i]; FieldEffectStart(FLDEFF_POKEBALL); } @@ -1017,14 +1017,14 @@ static bool8 Phase2_Transition_PokeballsTrail_Func3(struct Task* task) bool8 FldEff_Pokeball(void) { - u8 spriteID = CreateSpriteAtEnd(&sSpriteTemplate_83FD98C, gUnknown_0202FF84[0], gUnknown_0202FF84[1], 0); + u8 spriteID = CreateSpriteAtEnd(&sSpriteTemplate_83FD98C, gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0); gSprites[spriteID].oam.priority = 0; gSprites[spriteID].oam.affineMode = 1; - gSprites[spriteID].data0 = gUnknown_0202FF84[2]; - gSprites[spriteID].data1 = gUnknown_0202FF84[3]; + gSprites[spriteID].data0 = gFieldEffectSpawnParams[2]; + gSprites[spriteID].data1 = gFieldEffectSpawnParams[3]; gSprites[spriteID].data2 = -1; InitSpriteAffineAnim(&gSprites[spriteID]); - StartSpriteAffineAnim(&gSprites[spriteID], gUnknown_0202FF84[2]); + StartSpriteAffineAnim(&gSprites[spriteID], gFieldEffectSpawnParams[2]); return FALSE; } diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c index b8d7cd386..f6bd9e056 100644 --- a/src/braille_puzzles.c +++ b/src/braille_puzzles.c @@ -105,7 +105,7 @@ bool8 ShouldDoBrailleFlyEffect(void) void DoBrailleFlyEffect(void) { - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; FieldEffectStart(0x3C); } diff --git a/src/field_effect.c b/src/field_effect.c index cffed2614..164c74657 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -28,7 +28,7 @@ #define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))} -EWRAM_DATA u32 gUnknown_0202FF84[8] = {0}; +EWRAM_DATA u32 gFieldEffectSpawnParams[8] = {0}; const u32 gSpriteImage_839DC14[] = INCBIN_U32("graphics/birch_speech/birch.4bpp"); const u16 gBirchPalette[16] = INCBIN_U16("graphics/birch_speech/birch.gbapal"); @@ -1203,10 +1203,10 @@ void task00_8084310(u8 taskId) { return; } - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; - if ((int)gUnknown_0202FF84[0] > 5) + gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; + if ((int)gFieldEffectSpawnParams[0] > 5) { - gUnknown_0202FF84[0] = 0; + gFieldEffectSpawnParams[0] = 0; } FieldEffectStart(FLDEFF_USE_FLY); task->data[0]++; @@ -1665,7 +1665,7 @@ bool8 FldEff_UseWaterfall(void) { u8 taskId; taskId = CreateTask(sub_8086F64, 0xff); - gTasks[taskId].data[1] = gUnknown_0202FF84[0]; + gTasks[taskId].data[1] = gFieldEffectSpawnParams[0]; sub_8086F64(taskId); return FALSE; } @@ -1689,7 +1689,7 @@ bool8 waterfall_1_do_anim_probably(struct Task *task, struct MapObject *mapObjec if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject)) { FieldObjectClearAnimIfSpecialAnimFinished(mapObject); - gUnknown_0202FF84[0] = task->data[1]; + gFieldEffectSpawnParams[0] = task->data[1]; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); task->data[0]++; } @@ -1738,8 +1738,8 @@ bool8 FldEff_UseDive(void) { u8 taskId; taskId = CreateTask(Task_Dive, 0xff); - gTasks[taskId].data[15] = gUnknown_0202FF84[0]; - gTasks[taskId].data[14] = gUnknown_0202FF84[1]; + gTasks[taskId].data[15] = gFieldEffectSpawnParams[0]; + gTasks[taskId].data[14] = gFieldEffectSpawnParams[1]; Task_Dive(taskId); return FALSE; } @@ -1759,7 +1759,7 @@ bool8 sub_8087124(struct Task *task) bool8 dive_2_unknown(struct Task *task) { ScriptContext2_Enable(); - gUnknown_0202FF84[0] = task->data[15]; + gFieldEffectSpawnParams[0] = task->data[15]; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); task->data[0]++; return FALSE; @@ -1820,10 +1820,10 @@ bool8 sub_8087298(struct Task *task, struct MapObject *mapObject, struct Sprite { sprite->pos2.y = 0; task->data[3] = 1; - gUnknown_0202FF84[0] = mapObject->coords2.x; - gUnknown_0202FF84[1] = mapObject->coords2.y; - gUnknown_0202FF84[2] = sprite->subpriority - 1; - gUnknown_0202FF84[3] = sprite->oam.priority; + gFieldEffectSpawnParams[0] = mapObject->coords2.x; + gFieldEffectSpawnParams[1] = mapObject->coords2.y; + gFieldEffectSpawnParams[2] = sprite->subpriority - 1; + gFieldEffectSpawnParams[3] = sprite->oam.priority; FieldEffectStart(FLDEFF_LAVARIDGE_GYM_WARP); PlaySE(SE_W153); task->data[0]++; @@ -1924,10 +1924,10 @@ bool8 sub_80874FC(struct Task *task, struct MapObject *mapObject, struct Sprite { if (sub_807D770()) { - gUnknown_0202FF84[0] = mapObject->coords2.x; - gUnknown_0202FF84[1] = mapObject->coords2.y; - gUnknown_0202FF84[2] = sprite->subpriority - 1; - gUnknown_0202FF84[3] = sprite->oam.priority; + gFieldEffectSpawnParams[0] = mapObject->coords2.x; + gFieldEffectSpawnParams[1] = mapObject->coords2.y; + gFieldEffectSpawnParams[2] = sprite->subpriority - 1; + gFieldEffectSpawnParams[3] = sprite->oam.priority; task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH); task->data[0]++; } @@ -1966,9 +1966,9 @@ extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36] u8 FldEff_LavaridgeGymWarp(void) { u8 spriteId; - sub_8060470((s16 *)&gUnknown_0202FF84[0], (s16 *)&gUnknown_0202FF84[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[33], gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]); - gSprites[spriteId].oam.priority = gUnknown_0202FF84[3]; + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[33], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + gSprites[spriteId].oam.priority = gFieldEffectSpawnParams[3]; gSprites[spriteId].coordOffsetEnabled = 1; return spriteId; } @@ -2009,10 +2009,10 @@ bool8 sub_80876F8(struct Task *task, struct MapObject *mapObject, struct Sprite { if (task->data[1] > 3) { - gUnknown_0202FF84[0] = mapObject->coords2.x; - gUnknown_0202FF84[1] = mapObject->coords2.y; - gUnknown_0202FF84[2] = sprite->subpriority - 1; - gUnknown_0202FF84[3] = sprite->oam.priority; + gFieldEffectSpawnParams[0] = mapObject->coords2.x; + gFieldEffectSpawnParams[1] = mapObject->coords2.y; + gFieldEffectSpawnParams[2] = sprite->subpriority - 1; + gFieldEffectSpawnParams[3] = sprite->oam.priority; task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH); task->data[0]++; } else @@ -2064,9 +2064,9 @@ bool8 sub_80877D4(struct Task *task, struct MapObject *mapObject, struct Sprite u8 FldEff_PopOutOfAsh(void) { u8 spriteId; - sub_8060470((s16 *)&gUnknown_0202FF84[0], (s16 *)&gUnknown_0202FF84[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[32], gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]); - gSprites[spriteId].oam.priority = gUnknown_0202FF84[3]; + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[32], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + gSprites[spriteId].oam.priority = gFieldEffectSpawnParams[3]; gSprites[spriteId].coordOffsetEnabled = 1; return spriteId; } @@ -2392,19 +2392,19 @@ bool8 FldEff_FieldMoveShowMon(void) { taskId = CreateTask(sub_808847C, 0xff); } - gTasks[taskId].data[15] = sub_8088830(gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]); + gTasks[taskId].data[15] = sub_8088830(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); return FALSE; } bool8 FldEff_FieldMoveShowMonInit(void) { struct Pokemon *pokemon; - u32 flag = gUnknown_0202FF84[0] & 0x80000000; - pokemon = &gPlayerParty[(u8)gUnknown_0202FF84[0]]; - gUnknown_0202FF84[0] = GetMonData(pokemon, MON_DATA_SPECIES); - gUnknown_0202FF84[1] = GetMonData(pokemon, MON_DATA_OT_ID); - gUnknown_0202FF84[2] = GetMonData(pokemon, MON_DATA_PERSONALITY); - gUnknown_0202FF84[0] |= flag; + u32 flag = gFieldEffectSpawnParams[0] & 0x80000000; + pokemon = &gPlayerParty[(u8)gFieldEffectSpawnParams[0]]; + gFieldEffectSpawnParams[0] = GetMonData(pokemon, MON_DATA_SPECIES); + gFieldEffectSpawnParams[1] = GetMonData(pokemon, MON_DATA_OT_ID); + gFieldEffectSpawnParams[2] = GetMonData(pokemon, MON_DATA_PERSONALITY); + gFieldEffectSpawnParams[0] |= flag; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON); FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); return FALSE; @@ -2879,7 +2879,7 @@ u8 FldEff_UseSurf(void) { u8 taskId; taskId = CreateTask(sub_8088954, 0xff); - gTasks[taskId].data[15] = gUnknown_0202FF84[0]; + gTasks[taskId].data[15] = gFieldEffectSpawnParams[0]; sav1_reset_battle_music_maybe(); sub_8053FB0(0x016d); return FALSE; @@ -2919,7 +2919,7 @@ void sub_8088A30(struct Task *task) mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(mapObject)) { - gUnknown_0202FF84[0] = task->data[15] | 0x80000000; + gFieldEffectSpawnParams[0] = task->data[15] | 0x80000000; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); task->data[0]++; } @@ -2934,9 +2934,9 @@ void sub_8088A78(struct Task *task) sub_805B980(mapObject, GetPlayerAvatarGraphicsIdByStateId(3)); FieldObjectClearAnimIfSpecialAnimFinished(mapObject); FieldObjectSetSpecialAnim(mapObject, sub_80608D0(mapObject->placeholder18)); - gUnknown_0202FF84[0] = task->data[1]; - gUnknown_0202FF84[1] = task->data[2]; - gUnknown_0202FF84[2] = gPlayerAvatar.mapObjectId; + gFieldEffectSpawnParams[0] = task->data[1]; + gFieldEffectSpawnParams[1] = task->data[2]; + gFieldEffectSpawnParams[2] = gPlayerAvatar.mapObjectId; mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_SURF_BLOB); task->data[0]++; } @@ -2970,7 +2970,7 @@ u8 FldEff_NPCFlyOut(void) sprite->oam.paletteNum = 0; sprite->oam.priority = 1; sprite->callback = sub_8088BC4; - sprite->data1 = gUnknown_0202FF84[0]; + sprite->data1 = gFieldEffectSpawnParams[0]; PlaySE(SE_W019); return spriteId; } @@ -3009,7 +3009,7 @@ u8 FldEff_UseFly(void) { u8 taskId; taskId = CreateTask(sub_8088C70, 0xfe); - gTasks[taskId].data[1] = gUnknown_0202FF84[0]; + gTasks[taskId].data[1] = gFieldEffectSpawnParams[0]; return 0; } @@ -3040,7 +3040,7 @@ void sub_8088CF8(struct Task *task) if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject)) { task->data[0]++; - gUnknown_0202FF84[0] = task->data[1]; + gFieldEffectSpawnParams[0] = task->data[1]; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); } } diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 5a71559ba..d0b659131 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -249,15 +249,15 @@ bool8 FldEff_Shadow(void) const struct MapObjectGraphicsInfo *graphicsInfo; u8 spriteId; - mapObjectId = GetFieldObjectIdByLocalIdAndMap(gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]); + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[gUnknown_08401E32[graphicsInfo->shadowSize]], 0, 0, 0x94); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].data0 = gUnknown_0202FF84[0]; - gSprites[spriteId].data1 = gUnknown_0202FF84[1]; - gSprites[spriteId].data2 = gUnknown_0202FF84[2]; + gSprites[spriteId].data0 = gFieldEffectSpawnParams[0]; + gSprites[spriteId].data1 = gFieldEffectSpawnParams[1]; + gSprites[spriteId].data2 = gFieldEffectSpawnParams[2]; gSprites[spriteId].data3 = (graphicsInfo->height >> 1) - gUnknown_08401E36[graphicsInfo->shadowSize]; } return FALSE; @@ -294,22 +294,22 @@ bool8 FldEff_TallGrass(void) u8 spriteId; struct Sprite *sprite; - x = gUnknown_0202FF84[0]; - y = gUnknown_0202FF84[1]; + x = gFieldEffectSpawnParams[0]; + y = gFieldEffectSpawnParams[1]; sub_8060470(&x, &y, 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[4], x, y, 0); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gUnknown_0202FF84[3]; - sprite->data0 = gUnknown_0202FF84[2]; - sprite->data1 = gUnknown_0202FF84[0]; - sprite->data2 = gUnknown_0202FF84[1]; - sprite->data3 = gUnknown_0202FF84[4]; - sprite->data4 = gUnknown_0202FF84[5]; - sprite->data5 = gUnknown_0202FF84[6]; - if (gUnknown_0202FF84[7]) + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->data1 = gFieldEffectSpawnParams[0]; + sprite->data2 = gFieldEffectSpawnParams[1]; + sprite->data3 = gFieldEffectSpawnParams[4]; + sprite->data4 = gFieldEffectSpawnParams[5]; + sprite->data5 = gFieldEffectSpawnParams[6]; + if (gFieldEffectSpawnParams[7]) { SeekSpriteAnim(sprite, 4); } @@ -358,3 +358,21 @@ void unc_grass_normal(struct Sprite *sprite) sub_812882C(sprite, sprite->data0, metatileBehavior); } } + +bool8 FldEff_JumpTallGrass(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 12); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[10], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->data1 = 12; + } + return FALSE; +} diff --git a/src/field_ground_effect.c b/src/field_ground_effect.c index b9935463b..e50811a78 100644 --- a/src/field_ground_effect.c +++ b/src/field_ground_effect.c @@ -460,18 +460,18 @@ void GroundEffect_SpawnOnTallGrass(struct MapObject *mapObj, struct Sprite *spri { u8 *ptr; - gUnknown_0202FF84[0] = mapObj->coords2.x; - gUnknown_0202FF84[1] = mapObj->coords2.y; - gUnknown_0202FF84[2] = mapObj->elevation; - gUnknown_0202FF84[3] = 2; - gUnknown_0202FF84[4] = (mapObj->localId << 8) | mapObj->mapNum; - gUnknown_0202FF84[5] = mapObj->mapGroup; + gFieldEffectSpawnParams[0] = mapObj->coords2.x; + gFieldEffectSpawnParams[1] = mapObj->coords2.y; + gFieldEffectSpawnParams[2] = mapObj->elevation; + gFieldEffectSpawnParams[3] = 2; + gFieldEffectSpawnParams[4] = (mapObj->localId << 8) | mapObj->mapNum; + gFieldEffectSpawnParams[5] = mapObj->mapGroup; ptr = (u8 *)&gSaveBlock1; - gUnknown_0202FF84[6] = ((u8)gSaveBlock1.location.mapNum << 8) + gFieldEffectSpawnParams[6] = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup; - gUnknown_0202FF84[7] = 1; + gFieldEffectSpawnParams[7] = 1; FieldEffectStart(4); } @@ -479,18 +479,18 @@ void sub_8063E94(struct MapObject *mapObj, struct Sprite *sprite) { u8 *ptr; - gUnknown_0202FF84[0] = mapObj->coords2.x; - gUnknown_0202FF84[1] = mapObj->coords2.y; - gUnknown_0202FF84[2] = mapObj->elevation; - gUnknown_0202FF84[3] = 2; - gUnknown_0202FF84[4] = (mapObj->localId << 8) | mapObj->mapNum; - gUnknown_0202FF84[5] = mapObj->mapGroup; + gFieldEffectSpawnParams[0] = mapObj->coords2.x; + gFieldEffectSpawnParams[1] = mapObj->coords2.y; + gFieldEffectSpawnParams[2] = mapObj->elevation; + gFieldEffectSpawnParams[3] = 2; + gFieldEffectSpawnParams[4] = (mapObj->localId << 8) | mapObj->mapNum; + gFieldEffectSpawnParams[5] = mapObj->mapGroup; ptr = (u8 *)&gSaveBlock1; - gUnknown_0202FF84[6] = ((u8)gSaveBlock1.location.mapNum << 8) + gFieldEffectSpawnParams[6] = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup; - gUnknown_0202FF84[7] = 0; + gFieldEffectSpawnParams[7] = 0; FieldEffectStart(4); } @@ -498,18 +498,18 @@ void sub_8063EE0(struct MapObject *mapObj, struct Sprite *sprite) { u8 *ptr; - gUnknown_0202FF84[0] = mapObj->coords2.x; - gUnknown_0202FF84[1] = mapObj->coords2.y; - gUnknown_0202FF84[2] = mapObj->elevation; - gUnknown_0202FF84[3] = 2; - gUnknown_0202FF84[4] = (mapObj->localId << 8) | mapObj->mapNum; - gUnknown_0202FF84[5] = mapObj->mapGroup; + gFieldEffectSpawnParams[0] = mapObj->coords2.x; + gFieldEffectSpawnParams[1] = mapObj->coords2.y; + gFieldEffectSpawnParams[2] = mapObj->elevation; + gFieldEffectSpawnParams[3] = 2; + gFieldEffectSpawnParams[4] = (mapObj->localId << 8) | mapObj->mapNum; + gFieldEffectSpawnParams[5] = mapObj->mapGroup; ptr = (u8 *)&gSaveBlock1; - gUnknown_0202FF84[6] = ((u8)gSaveBlock1.location.mapNum << 8) + gFieldEffectSpawnParams[6] = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup; - gUnknown_0202FF84[7] = 1; + gFieldEffectSpawnParams[7] = 1; FieldEffectStart(17); } @@ -517,18 +517,18 @@ void sub_8063F2C(struct MapObject *mapObj, struct Sprite *sprite) { u8 *ptr; - gUnknown_0202FF84[0] = mapObj->coords2.x; - gUnknown_0202FF84[1] = mapObj->coords2.y; - gUnknown_0202FF84[2] = mapObj->elevation; - gUnknown_0202FF84[3] = 2; - gUnknown_0202FF84[4] = (mapObj->localId << 8) | mapObj->mapNum; - gUnknown_0202FF84[5] = mapObj->mapGroup; + gFieldEffectSpawnParams[0] = mapObj->coords2.x; + gFieldEffectSpawnParams[1] = mapObj->coords2.y; + gFieldEffectSpawnParams[2] = mapObj->elevation; + gFieldEffectSpawnParams[3] = 2; + gFieldEffectSpawnParams[4] = (mapObj->localId << 8) | mapObj->mapNum; + gFieldEffectSpawnParams[5] = mapObj->mapGroup; ptr = (u8 *)&gSaveBlock1; - gUnknown_0202FF84[6] = ((u8)gSaveBlock1.location.mapNum << 8) + gFieldEffectSpawnParams[6] = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup; - gUnknown_0202FF84[7] = 0; + gFieldEffectSpawnParams[7] = 0; FieldEffectStart(17); } @@ -572,11 +572,11 @@ static void DoTracksGroundEffect_Footprints(struct MapObject *mapObj, struct Spr // First half-word is a Field Effect script id. (gFieldEffectScriptPointers) u16 sandFootprints_FieldEffectData[2] = { 0xD, 0x18 }; - gUnknown_0202FF84[0] = mapObj->coords3.x; - gUnknown_0202FF84[1] = mapObj->coords3.y; - gUnknown_0202FF84[2] = 149; - gUnknown_0202FF84[3] = 2; - gUnknown_0202FF84[4] = mapObj->mapobj_unk_18; + gFieldEffectSpawnParams[0] = mapObj->coords3.x; + gFieldEffectSpawnParams[1] = mapObj->coords3.y; + gFieldEffectSpawnParams[2] = 149; + gFieldEffectSpawnParams[3] = 2; + gFieldEffectSpawnParams[4] = mapObj->mapobj_unk_18; FieldEffectStart(sandFootprints_FieldEffectData[a]); } @@ -598,11 +598,11 @@ static void DoTracksGroundEffect_BikeTireTracks( if (mapObj->coords2.x != mapObj->coords3.x || mapObj->coords2.y != mapObj->coords3.y) { - gUnknown_0202FF84[0] = mapObj->coords3.x; - gUnknown_0202FF84[1] = mapObj->coords3.y; - gUnknown_0202FF84[2] = 149; - gUnknown_0202FF84[3] = 2; - gUnknown_0202FF84[4] = + gFieldEffectSpawnParams[0] = mapObj->coords3.x; + gFieldEffectSpawnParams[1] = mapObj->coords3.y; + gFieldEffectSpawnParams[2] = 149; + gFieldEffectSpawnParams[3] = 2; + gFieldEffectSpawnParams[4] = bikeTireTracks_Transitions[mapObj->mapobj_unk_20][mapObj->mapobj_unk_18 - 5]; FieldEffectStart(FLDEFF_BIKE_TIRE_TRACKS); } @@ -627,10 +627,10 @@ void GroundEffect_JumpOnTallGrass(struct MapObject *mapObj, struct Sprite *sprit { u8 spriteId; - gUnknown_0202FF84[0] = mapObj->coords2.x; - gUnknown_0202FF84[1] = mapObj->coords2.y; - gUnknown_0202FF84[2] = mapObj->elevation; - gUnknown_0202FF84[3] = 2; + gFieldEffectSpawnParams[0] = mapObj->coords2.x; + gFieldEffectSpawnParams[1] = mapObj->coords2.y; + gFieldEffectSpawnParams[2] = mapObj->elevation; + gFieldEffectSpawnParams[3] = 2; FieldEffectStart(FLDEFF_JUMP_TALL_GRASS); spriteId = sub_8126FF0( @@ -642,37 +642,37 @@ void GroundEffect_JumpOnTallGrass(struct MapObject *mapObj, struct Sprite *sprit void GroundEffect_JumpOnLongGrass(struct MapObject *mapObj, struct Sprite *sprite) { - gUnknown_0202FF84[0] = mapObj->coords2.x; - gUnknown_0202FF84[1] = mapObj->coords2.y; - gUnknown_0202FF84[2] = mapObj->elevation; - gUnknown_0202FF84[3] = 2; + gFieldEffectSpawnParams[0] = mapObj->coords2.x; + gFieldEffectSpawnParams[1] = mapObj->coords2.y; + gFieldEffectSpawnParams[2] = mapObj->elevation; + gFieldEffectSpawnParams[3] = 2; FieldEffectStart(FLDEFF_JUMP_LONG_GRASS); } void GroundEffect_JumpOnShallowWater(struct MapObject *mapObj, struct Sprite *sprite) { - gUnknown_0202FF84[0] = mapObj->coords2.x; - gUnknown_0202FF84[1] = mapObj->coords2.y; - gUnknown_0202FF84[2] = mapObj->elevation; - gUnknown_0202FF84[3] = sprite->oam.priority; + gFieldEffectSpawnParams[0] = mapObj->coords2.x; + gFieldEffectSpawnParams[1] = mapObj->coords2.y; + gFieldEffectSpawnParams[2] = mapObj->elevation; + gFieldEffectSpawnParams[3] = sprite->oam.priority; FieldEffectStart(FLDEFF_JUMP_SMALL_SPLASH); } void GroundEffect_JumpOnWater(struct MapObject *mapObj, struct Sprite *sprite) { - gUnknown_0202FF84[0] = mapObj->coords2.x; - gUnknown_0202FF84[1] = mapObj->coords2.y; - gUnknown_0202FF84[2] = mapObj->elevation; - gUnknown_0202FF84[3] = sprite->oam.priority; + gFieldEffectSpawnParams[0] = mapObj->coords2.x; + gFieldEffectSpawnParams[1] = mapObj->coords2.y; + gFieldEffectSpawnParams[2] = mapObj->elevation; + gFieldEffectSpawnParams[3] = sprite->oam.priority; FieldEffectStart(FLDEFF_JUMP_BIG_SPLASH); } void GroundEffect_JumpLandingDust(struct MapObject *mapObj, struct Sprite *sprite) { - gUnknown_0202FF84[0] = mapObj->coords2.x; - gUnknown_0202FF84[1] = mapObj->coords2.y; - gUnknown_0202FF84[2] = mapObj->elevation; - gUnknown_0202FF84[3] = sprite->oam.priority; + gFieldEffectSpawnParams[0] = mapObj->coords2.x; + gFieldEffectSpawnParams[1] = mapObj->coords2.y; + gFieldEffectSpawnParams[2] = mapObj->elevation; + gFieldEffectSpawnParams[3] = sprite->oam.priority; FieldEffectStart(FLDEFF_DUST); } @@ -688,8 +688,8 @@ void GroundEffect_HotSprings(struct MapObject *mapObj, struct Sprite *sprite) void GroundEffect_Seaweed(struct MapObject *mapObj, struct Sprite *sprite) { - gUnknown_0202FF84[0] = mapObj->coords2.x; - gUnknown_0202FF84[1] = mapObj->coords2.y; + gFieldEffectSpawnParams[0] = mapObj->coords2.x; + gFieldEffectSpawnParams[1] = mapObj->coords2.y; FieldEffectStart(FLDEFF_BUBBLES); } diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 1568432f5..dc72981bb 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -3895,10 +3895,10 @@ u8 do_berry_tree_growth_sparkle_1(struct MapObject *mapObject, struct Sprite *sp { if (!(sprite->data7 & 4) && sprite->animNum == 4) { - gUnknown_0202FF84[0] = mapObject->coords2.x; - gUnknown_0202FF84[1] = mapObject->coords2.y; - gUnknown_0202FF84[2] = sprite->subpriority - 1; - gUnknown_0202FF84[3] = sprite->oam.priority; + gFieldEffectSpawnParams[0] = mapObject->coords2.x; + gFieldEffectSpawnParams[1] = mapObject->coords2.y; + gFieldEffectSpawnParams[2] = sprite->subpriority - 1; + gFieldEffectSpawnParams[3] = sprite->oam.priority; FieldEffectStart(0x17); sprite->animNum = 0; } @@ -3934,10 +3934,10 @@ u8 do_berry_tree_growth_sparkle_2(struct MapObject *mapObject, struct Sprite *sp sprite->data1 = 3; sprite->data2 = 0; sprite->data7 |= 2; - gUnknown_0202FF84[0] = mapObject->coords2.x; - gUnknown_0202FF84[1] = mapObject->coords2.y; - gUnknown_0202FF84[2] = sprite->subpriority - 1; - gUnknown_0202FF84[3] = sprite->oam.priority; + gFieldEffectSpawnParams[0] = mapObject->coords2.x; + gFieldEffectSpawnParams[1] = mapObject->coords2.y; + gFieldEffectSpawnParams[2] = sprite->subpriority - 1; + gFieldEffectSpawnParams[3] = sprite->oam.priority; FieldEffectStart(0x17); return 1; } @@ -5086,7 +5086,7 @@ void FieldObjectCB_TreeDisguise(struct Sprite *sprite) mapObject = &gMapObjects[sprite->data0]; if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data7 == 0)) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]); mapObject->mapobj_unk_1A = FieldEffectStart(0x1c); mapObject->mapobj_unk_21 = 1; sprite->data7 ++; @@ -5106,7 +5106,7 @@ void FieldObjectCB_MountainDisguise(struct Sprite *sprite) mapObject = &gMapObjects[sprite->data0]; if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data7 == 0)) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]); mapObject->mapobj_unk_1A = FieldEffectStart(0x1d); mapObject->mapobj_unk_21 = 1; sprite->data7 ++; @@ -7490,7 +7490,7 @@ bool8 sub_8062644(struct MapObject *mapObject, struct Sprite *sprite) bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *sprite) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]); FieldEffectStart(0x0); sprite->data2 = 1; return TRUE; @@ -7498,7 +7498,7 @@ bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *s bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *sprite) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]); FieldEffectStart(0x21); sprite->data2 = 1; return TRUE; @@ -7506,7 +7506,7 @@ bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *s bool8 do_heart_bubble(struct MapObject *mapObject, struct Sprite *sprite) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]); FieldEffectStart(0x2e); sprite->data2 = 1; return TRUE; diff --git a/src/field_map_obj_helpers.c b/src/field_map_obj_helpers.c index 87be8e011..d8cb33251 100644 --- a/src/field_map_obj_helpers.c +++ b/src/field_map_obj_helpers.c @@ -294,7 +294,7 @@ void sub_8064990(u8 a1, u8 dir) u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct MapObject *mapObject) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]); return FieldEffectStart(fieldEffectId); } @@ -310,9 +310,9 @@ void DoShadowFieldEffect(struct MapObject *mapObject) void DoRippleFieldEffect(struct MapObject *mapObject, struct Sprite *sprite) { const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); - gUnknown_0202FF84[0] = sprite->pos1.x; - gUnknown_0202FF84[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2; - gUnknown_0202FF84[2] = 151; - gUnknown_0202FF84[3] = 3; + gFieldEffectSpawnParams[0] = sprite->pos1.x; + gFieldEffectSpawnParams[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2; + gFieldEffectSpawnParams[2] = 151; + gFieldEffectSpawnParams[3] = 3; FieldEffectStart(5); } diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 2a7b2f3e0..b055036ea 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -666,9 +666,9 @@ void PlayerAvatarTransition_Surfing(struct MapObject *a) sub_805B980(a, GetPlayerAvatarGraphicsIdByStateId(3)); FieldObjectTurn(a, a->placeholder18); SetPlayerAvatarStateMask(8); - gUnknown_0202FF84[0] = a->coords2.x; - gUnknown_0202FF84[1] = a->coords2.y; - gUnknown_0202FF84[2] = gPlayerAvatar.mapObjectId; + gFieldEffectSpawnParams[0] = a->coords2.x; + gFieldEffectSpawnParams[1] = a->coords2.y; + gFieldEffectSpawnParams[2] = gPlayerAvatar.mapObjectId; unk = FieldEffectStart(8); a->mapobj_unk_1A = unk; sub_8127ED0(unk, 1); @@ -1226,10 +1226,10 @@ u8 sub_8059EA4(struct Task *task, struct MapObject *b, struct MapObject *c) FieldObjectClearAnimIfSpecialAnimFinished(c); FieldObjectSetSpecialAnim(b, GetStepInPlaceDelay16AnimId(task->data[2])); FieldObjectSetSpecialAnim(c, GetSimpleGoAnimId(task->data[2])); - gUnknown_0202FF84[0] = c->coords2.x; - gUnknown_0202FF84[1] = c->coords2.y; - gUnknown_0202FF84[2] = c->elevation; - gUnknown_0202FF84[3] = gSprites[c->spriteId].oam.priority; + gFieldEffectSpawnParams[0] = c->coords2.x; + gFieldEffectSpawnParams[1] = c->coords2.y; + gFieldEffectSpawnParams[2] = c->elevation; + gFieldEffectSpawnParams[3] = gSprites[c->spriteId].oam.priority; FieldEffectStart(10); PlaySE(SE_W070); task->data[0]++; diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c index b394d1e4c..d0fdd5139 100644 --- a/src/fldeff_cut.c +++ b/src/fldeff_cut.c @@ -71,7 +71,7 @@ bool8 SetUpFieldMove_Cut(void) void sub_80A25E8(void) { FieldEffectStart(1); - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; } bool8 FldEff_UseCutOnGrass(void) @@ -86,7 +86,7 @@ bool8 FldEff_UseCutOnGrass(void) void sub_80A2634(void) { - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; ScriptContext1_SetupScript(&UseCutScript); } diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c index 6c2633567..df05de52b 100644 --- a/src/fldeff_flash.c +++ b/src/fldeff_flash.c @@ -62,7 +62,7 @@ bool8 SetUpFieldMove_Flash(void) void sub_810CBFC(void) { u8 taskId = oei_task_add(); - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; gTasks[taskId].data[8] = (uintptr_t)sub_810CC34 >> 16; gTasks[taskId].data[9] = (uintptr_t)sub_810CC34; } diff --git a/src/fldeff_strength.c b/src/fldeff_strength.c index 81f4f63c6..a5033e7b7 100644 --- a/src/fldeff_strength.c +++ b/src/fldeff_strength.c @@ -42,13 +42,13 @@ bool8 SetUpFieldMove_Strength(void) static void sub_811AA18(void) { - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; ScriptContext1_SetupScript(UseStrengthScript); } static void sub_811AA38(void) { - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; FieldEffectStart(40); } @@ -58,7 +58,7 @@ bool8 FldEff_UseStrength(void) gTasks[taskId].data[8] = (u32)sub_811AA9C >> 16; gTasks[taskId].data[9] = (u32)sub_811AA9C; - GetMonNickname(&gPlayerParty[gUnknown_0202FF84[0]], gStringVar1); + GetMonNickname(&gPlayerParty[gFieldEffectSpawnParams[0]], gStringVar1); return FALSE; } diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c index 4c3e6bf4a..66fa3dae2 100644 --- a/src/fldeff_sweetscent.c +++ b/src/fldeff_sweetscent.c @@ -31,7 +31,7 @@ bool8 SetUpFieldMove_SweetScent(void) static void sub_812BFD4(void) { FieldEffectStart(51); - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; } bool8 FldEff_SweetScent() diff --git a/src/fldeff_teleport.c b/src/fldeff_teleport.c index 74e68df06..8f75099dc 100644 --- a/src/fldeff_teleport.c +++ b/src/fldeff_teleport.c @@ -27,7 +27,7 @@ void hm_teleport_run_dp02scr(void) { new_game(); FieldEffectStart(63); - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; } bool8 FldEff_UseTeleport(void) diff --git a/src/pokemon_menu.c b/src/pokemon_menu.c index 821101569..94801f1a2 100644 --- a/src/pokemon_menu.c +++ b/src/pokemon_menu.c @@ -786,7 +786,7 @@ static void sub_808ABA8(u8 taskID) { if (sub_807D770() == TRUE) { - gUnknown_0202FF84[0] = GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_SPECIES); + gFieldEffectSpawnParams[0] = GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_SPECIES); gUnknown_03005CE4(); DestroyTask(taskID); } @@ -803,7 +803,7 @@ static void sub_808ABF4(u8 taskID) static void sub_808AC2C(void) { - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; FieldEffectStart(FLDEFF_USE_SURF); } @@ -821,7 +821,7 @@ static bool8 SetUpFieldMove_Surf(void) static void sub_808AC8C(void) { - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; FieldEffectStart(FLDEFF_USE_FLY); } @@ -872,14 +872,14 @@ u16 unref_sub_808AD88(void) static void sub_808ADAC(void) { - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; FieldEffectStart(FLDEFF_USE_DIVE); } static bool8 SetUpFieldMove_Dive(void) { - gUnknown_0202FF84[1] = sub_8068F18(); - if (gUnknown_0202FF84[1]) + gFieldEffectSpawnParams[1] = sub_8068F18(); + if (gFieldEffectSpawnParams[1]) { gFieldCallback = sub_808AB90; gUnknown_03005CE4 = sub_808ADAC; @@ -891,7 +891,7 @@ static bool8 SetUpFieldMove_Dive(void) static void sub_808AE08(void) { - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; FieldEffectStart(FLDEFF_USE_WATERFALL); } diff --git a/src/rom6.c b/src/rom6.c index ff032b6c2..1f72eba93 100644 --- a/src/rom6.c +++ b/src/rom6.c @@ -91,17 +91,17 @@ static void sub_810B428(u8 taskId) { if (!FieldEffectActiveListContains(6)) { - gUnknown_0202FF84[1] = player_get_direction_lower_nybble(); - if (gUnknown_0202FF84[1] == 1) - gUnknown_0202FF84[2] = 0; - if (gUnknown_0202FF84[1] == 2) - gUnknown_0202FF84[2] = 1; - if (gUnknown_0202FF84[1] == 3) - gUnknown_0202FF84[2] = 2; - if (gUnknown_0202FF84[1] == 4) - gUnknown_0202FF84[2] = 3; + gFieldEffectSpawnParams[1] = player_get_direction_lower_nybble(); + if (gFieldEffectSpawnParams[1] == 1) + gFieldEffectSpawnParams[2] = 0; + if (gFieldEffectSpawnParams[1] == 2) + gFieldEffectSpawnParams[2] = 1; + if (gFieldEffectSpawnParams[1] == 3) + gFieldEffectSpawnParams[2] = 2; + if (gFieldEffectSpawnParams[1] == 4) + gFieldEffectSpawnParams[2] = 3; sub_805B980(&gMapObjects[gPlayerAvatar.mapObjectId], GetPlayerAvatarGraphicsIdByCurrentState()); - StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gUnknown_0202FF84[2]); + StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gFieldEffectSpawnParams[2]); FieldEffectActiveListRemove(6); gTasks[taskId].func = sub_810B4CC; } @@ -132,7 +132,7 @@ bool8 SetUpFieldMove_RockSmash(void) static void sub_810B53C(void) { - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; ScriptContext1_SetupScript(UseRockSmashScript); } @@ -171,7 +171,7 @@ static void sub_810B5D8(void) { sub_8053014(); FieldEffectStart(0x26); - gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; } int FldEff_UseDig(void) diff --git a/src/scrcmd.c b/src/scrcmd.c index 66578f350..752aafe35 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1724,7 +1724,7 @@ bool8 ScrCmd_doanimation(struct ScriptContext *ctx) bool8 ScrCmd_setanimation(struct ScriptContext *ctx) { u8 v2 = ScriptReadByte(ctx); - gUnknown_0202FF84[v2] = (s16)VarGet(ScriptReadHalfword(ctx)); + gFieldEffectSpawnParams[v2] = (s16)VarGet(ScriptReadHalfword(ctx)); return FALSE; } diff --git a/src/trainer_see.c b/src/trainer_see.c index feb35c67c..73dba2d60 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -201,7 +201,7 @@ s8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainerObj) { u8 direction; - FieldObjectGetLocalIdAndMap(trainerObj, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); + FieldObjectGetLocalIdAndMap(trainerObj, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]); FieldEffectStart(0); direction = GetFaceDirectionAnimId(trainerObj->mapobj_unk_18); @@ -311,10 +311,10 @@ s8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj) { if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(trainerObj)) { - gUnknown_0202FF84[0] = trainerObj->coords2.x; - gUnknown_0202FF84[1] = trainerObj->coords2.y; - gUnknown_0202FF84[2] = gSprites[trainerObj->spriteId].subpriority - 1; - gUnknown_0202FF84[3] = 2; + gFieldEffectSpawnParams[0] = trainerObj->coords2.x; + gFieldEffectSpawnParams[1] = trainerObj->coords2.y; + gFieldEffectSpawnParams[2] = gSprites[trainerObj->spriteId].subpriority - 1; + gFieldEffectSpawnParams[3] = 2; task->data[4] = FieldEffectStart(49); task->data[0]++; } @@ -421,9 +421,9 @@ void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3) sprite->oam.priority = 1; sprite->coordOffsetEnabled = 1; - sprite->data0 = gUnknown_0202FF84[0]; - sprite->data1 = gUnknown_0202FF84[1]; - sprite->data2 = gUnknown_0202FF84[2]; + sprite->data0 = gFieldEffectSpawnParams[0]; + sprite->data1 = gFieldEffectSpawnParams[1]; + sprite->data2 = gFieldEffectSpawnParams[2]; sprite->data3 = -5; sprite->data7 = a2; -- cgit v1.2.3 From db5f08aead7b5dcc8253620fd792b72c8de7def6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 18:05:44 -0400 Subject: sub_8126FF0 --- asm/field_effect_helpers.s | 76 ------------------------------------------ include/field_effect_helpers.h | 2 +- src/field_effect_helpers.c | 19 +++++++++++ 3 files changed, 20 insertions(+), 77 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index e5875f1f7..8b7225604 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,82 +6,6 @@ .text - thumb_func_start sub_8126FF0 -sub_8126FF0: @ 8126FF0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r4, [sp, 0x18] - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - movs r5, 0 - ldr r0, _08127060 @ =gSprites - mov r8, r0 - lsls r3, 16 - asrs r3, 16 - lsls r4, 16 - asrs r4, 16 -_08127014: - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - mov r1, r8 - adds r2, r0, r1 - adds r0, r2, 0 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - beq _08127068 - ldr r1, [r2, 0x1C] - ldr r0, _08127064 @ =unc_grass_normal - cmp r1, r0 - bne _08127068 - movs r1, 0x30 - ldrsh r0, [r2, r1] - cmp r3, r0 - bne _08127068 - movs r1, 0x32 - ldrsh r0, [r2, r1] - cmp r4, r0 - bne _08127068 - ldrh r1, [r2, 0x34] - lsrs r0, r1, 8 - cmp r12, r0 - bne _08127068 - movs r0, 0xFF - ands r0, r1 - cmp r7, r0 - bne _08127068 - movs r1, 0x36 - ldrsh r0, [r2, r1] - cmp r6, r0 - bne _08127068 - adds r0, r5, 0 - b _08127074 - .align 2, 0 -_08127060: .4byte gSprites -_08127064: .4byte unc_grass_normal -_08127068: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3F - bls _08127014 - movs r0, 0x40 -_08127074: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8126FF0 - thumb_func_start FldEff_LongGrass FldEff_LongGrass: @ 8127080 push {r4,r5,lr} diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h index bd0acbff6..482f7e87e 100644 --- a/include/field_effect_helpers.h +++ b/include/field_effect_helpers.h @@ -31,6 +31,6 @@ u8 sub_8128124(u8 id); void ash(s16, s16, u16, u8); void SetUpReflection(struct MapObject *mapObj, struct Sprite *sprite, u8 a); u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct MapObject *mapObject); -u8 sub_8126FF0(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y); +u8 sub_8126FF0(u8, u8, u8, s16, s16); #endif // GUARD_FIELD_EFFECT_HELPERS_H diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index d0b659131..cb4adbb43 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -376,3 +376,22 @@ bool8 FldEff_JumpTallGrass(void) } return FALSE; } + +u8 sub_8126FF0(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y) +{ + struct Sprite *sprite; + u8 i; + + for (i = 0; i < MAX_SPRITES; i ++) + { + if (gSprites[i].inUse) + { + sprite = &gSprites[i]; + if (sprite->callback == unc_grass_normal && (x == sprite->data1 && y == sprite->data2) && (localId == (u8)(sprite->data3 >> 8) && mapNum == (sprite->data3 & 0xFF) && mapGroup == sprite->data4)) + { + return i; + } + } + } + return MAX_SPRITES; +} -- cgit v1.2.3 From 9d2c7a60b0e4860d8d9fbf5a478217f0f88eb454 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 18:20:09 -0400 Subject: FldEff_LongGrass --- asm/field_effect_helpers.s | 82 ---------------------------------------------- src/field_effect_helpers.c | 31 ++++++++++++++++++ 2 files changed, 31 insertions(+), 82 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 8b7225604..5f6b60bbd 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,88 +6,6 @@ .text - thumb_func_start FldEff_LongGrass -FldEff_LongGrass: @ 8127080 - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, _0812711C @ =gFieldEffectSpawnParams - ldrh r1, [r5] - mov r0, sp - strh r1, [r0] - ldrh r0, [r5, 0x4] - mov r4, sp - adds r4, 0x2 - strh r0, [r4] - mov r0, sp - adds r1, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08127120 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x3C] - mov r1, sp - movs r2, 0 - ldrsh r1, [r1, r2] - movs r3, 0 - ldrsh r2, [r4, r3] - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _08127110 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08127124 @ =gSprites - adds r4, r0, r1 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r5, 0x8] - bl ZCoordToPriority - movs r1, 0x3 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x5] - ldr r0, [r5, 0x8] - strh r0, [r4, 0x2E] - ldr r0, [r5] - strh r0, [r4, 0x30] - ldr r0, [r5, 0x4] - strh r0, [r4, 0x32] - ldr r0, [r5, 0x10] - strh r0, [r4, 0x34] - ldr r0, [r5, 0x14] - strh r0, [r4, 0x36] - ldr r0, [r5, 0x18] - strh r0, [r4, 0x38] - ldr r0, [r5, 0x1C] - cmp r0, 0 - beq _08127110 - adds r0, r4, 0 - movs r1, 0x6 - bl SeekSpriteAnim -_08127110: - movs r0, 0 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0812711C: .4byte gFieldEffectSpawnParams -_08127120: .4byte gFieldEffectObjectTemplatePointers -_08127124: .4byte gSprites - thumb_func_end FldEff_LongGrass - thumb_func_start unc_grass_tall unc_grass_tall: @ 8127128 push {r4-r7,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index cb4adbb43..b71a36122 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -13,6 +13,7 @@ #include "field_map_obj_helpers.h" #include "field_weather.h" #include "field_effect.h" +#include "field_ground_effect.h" #include "field_effect_helpers.h" // Static type declarations @@ -395,3 +396,33 @@ u8 sub_8126FF0(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y) } return MAX_SPRITES; } + +bool8 FldEff_LongGrass(void) +{ + s16 x; + s16 y; + u8 spriteId; + struct Sprite *sprite; + + x = gFieldEffectSpawnParams[0]; + y = gFieldEffectSpawnParams[1]; + sub_8060470(&x, &y, 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[15], x, y, 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = ZCoordToPriority(gFieldEffectSpawnParams[2]); + sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->data1 = gFieldEffectSpawnParams[0]; + sprite->data2 = gFieldEffectSpawnParams[1]; + sprite->data3 = gFieldEffectSpawnParams[4]; + sprite->data4 = gFieldEffectSpawnParams[5]; + sprite->data5 = gFieldEffectSpawnParams[6]; + if (gFieldEffectSpawnParams[7]) + { + SeekSpriteAnim(sprite, 6); + } + } + return FALSE; +} -- cgit v1.2.3 From 82da4b1b50b0f174da47fc5751305bdd48fa3917 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 18:25:28 -0400 Subject: unc_grass_tall --- asm/field_effect_helpers.s | 126 --------------------------------------------- src/field_effect_helpers.c | 43 ++++++++++++++-- 2 files changed, 40 insertions(+), 129 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 5f6b60bbd..74b1343b4 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,132 +6,6 @@ .text - thumb_func_start unc_grass_tall -unc_grass_tall: @ 8127128 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r5, r0, 0 - ldrh r0, [r5, 0x38] - lsrs r7, r0, 8 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r3, _081271D0 @ =gCamera - ldrb r1, [r3] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08127172 - ldr r2, _081271D4 @ =gSaveBlock1 - movs r0, 0x5 - ldrsb r0, [r2, r0] - cmp r0, r7 - bne _08127158 - movs r0, 0x4 - ldrsb r0, [r2, r0] - cmp r0, r6 - beq _08127172 -_08127158: - ldr r1, [r3, 0x4] - ldrh r0, [r5, 0x30] - subs r0, r1 - strh r0, [r5, 0x30] - ldr r1, [r3, 0x8] - ldrh r0, [r5, 0x32] - subs r0, r1 - strh r0, [r5, 0x32] - ldrb r1, [r2, 0x5] - lsls r1, 8 - ldrb r0, [r2, 0x4] - orrs r0, r1 - strh r0, [r5, 0x38] -_08127172: - ldrh r0, [r5, 0x34] - lsrs r1, r0, 8 - mov r8, r1 - lsls r0, 24 - lsrs r7, r0, 24 - ldrh r0, [r5, 0x36] - lsls r0, 24 - lsrs r6, r0, 24 - movs r2, 0x30 - ldrsh r0, [r5, r2] - movs r2, 0x32 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r4, r0, 24 - mov r0, r8 - adds r1, r7, 0 - adds r2, r6, 0 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _081271C6 - adds r0, r4, 0 - bl MetatileBehavior_IsLongGrass - lsls r0, 24 - cmp r0, 0 - beq _081271C6 - movs r1, 0x3C - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _081271D8 - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _081271D8 -_081271C6: - adds r0, r5, 0 - movs r1, 0x11 - bl FieldEffectStop - b _0812720E - .align 2, 0 -_081271D0: .4byte gCamera -_081271D4: .4byte gSaveBlock1 -_081271D8: - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0812721C @ =gMapObjects - adds r2, r0, r1 - ldr r0, [r2, 0x10] - ldr r1, [r5, 0x30] - cmp r0, r1 - beq _081271F8 - ldr r0, [r2, 0x14] - cmp r0, r1 - beq _081271F8 - movs r0, 0x1 - strh r0, [r5, 0x3C] -_081271F8: - adds r0, r5, 0 - movs r1, 0 - bl sub_806487C - ldrh r1, [r5, 0x2E] - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - movs r2, 0 - bl sub_812882C -_0812720E: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812721C: .4byte gMapObjects - thumb_func_end unc_grass_tall - thumb_func_start FldEff_JumpLongGrass FldEff_JumpLongGrass: @ 8127220 push {r4,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index b71a36122..599441c3d 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -272,7 +272,7 @@ void oamc_shadow(struct Sprite *sprite) if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId)) { - FieldEffectStop(sprite, 3); + FieldEffectStop(sprite, FLDEFF_SHADOW); } else { @@ -283,7 +283,7 @@ void oamc_shadow(struct Sprite *sprite) sprite->pos1.y = linkedSprite->pos1.y + sprite->data3; if (!mapObject->active || !mapObject->mapobj_bit_22 || MetatileBehavior_IsPokeGrass(mapObject->mapobj_unk_1E) || MetatileBehavior_IsSurfableWaterOrUnderwater(mapObject->mapobj_unk_1E) || MetatileBehavior_IsSurfableWaterOrUnderwater(mapObject->mapobj_unk_1F) || MetatileBehavior_IsReflective(mapObject->mapobj_unk_1E) || MetatileBehavior_IsReflective(mapObject->mapobj_unk_1F)) { - FieldEffectStop(sprite, 3); + FieldEffectStop(sprite, FLDEFF_SHADOW); } } } @@ -341,7 +341,7 @@ void unc_grass_normal(struct Sprite *sprite) metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data1, sprite->data2); if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsTallGrass(metatileBehavior) || (sprite->data7 && sprite->animEnded)) { - FieldEffectStop(sprite, 4); + FieldEffectStop(sprite, FLDEFF_TALL_GRASS); } else { @@ -426,3 +426,40 @@ bool8 FldEff_LongGrass(void) } return FALSE; } + +void unc_grass_tall(struct Sprite *sprite) +{ + u8 mapNum; + u8 mapGroup; + u8 metatileBehavior; + u8 localId; + u8 mapObjectId; + struct MapObject *mapObject; + + mapNum = sprite->data5 >> 8; + mapGroup = sprite->data5; + if (gCamera.field_0 && (gSaveBlock1.location.mapNum != mapNum || gSaveBlock1.location.mapGroup != mapGroup)) + { + sprite->data1 -= gCamera.x; + sprite->data2 -= gCamera.y; + sprite->data5 = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup; + } + localId = sprite->data3 >> 8; + mapNum = sprite->data3; + mapGroup = sprite->data4; + metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data1, sprite->data2); + if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsLongGrass(metatileBehavior) || (sprite->data7 && sprite->animEnded)) + { + FieldEffectStop(sprite, FLDEFF_LONG_GRASS); + } + else + { + mapObject = &gMapObjects[mapObjectId]; + if ((mapObject->coords2.x != sprite->data1 || mapObject->coords2.y != sprite->data2) && (mapObject->coords3.x != sprite->data1 || mapObject->coords3.y != sprite->data2)) + { + sprite->data7 = TRUE; + } + sub_806487C(sprite, 0); + sub_812882C(sprite, sprite->data0, 0); + } +} -- cgit v1.2.3 From e1ce9a1122fdb173006f57c9a3b2a4b6ebae3629 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 18:29:09 -0400 Subject: FldEff_JumpLongGrass --- asm/field_effect_helpers.s | 57 ---------------------------------------------- src/field_effect_helpers.c | 18 +++++++++++++++ 2 files changed, 18 insertions(+), 57 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 74b1343b4..57fb84368 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,63 +6,6 @@ .text - thumb_func_start FldEff_JumpLongGrass -FldEff_JumpLongGrass: @ 8127220 - push {r4,lr} - ldr r4, _08127284 @ =gFieldEffectSpawnParams - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08127288 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x40] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _0812727C - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _0812728C @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r4, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - ldr r0, [r4, 0x8] - strh r0, [r2, 0x2E] - movs r0, 0x12 - strh r0, [r2, 0x30] -_0812727C: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08127284: .4byte gFieldEffectSpawnParams -_08127288: .4byte gFieldEffectObjectTemplatePointers -_0812728C: .4byte gSprites - thumb_func_end FldEff_JumpLongGrass - thumb_func_start FldEff_ShortGrass FldEff_ShortGrass: @ 8127290 push {r4-r6,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 599441c3d..87cf29b4c 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -463,3 +463,21 @@ void unc_grass_tall(struct Sprite *sprite) sub_812882C(sprite, sprite->data0, 0); } } + +bool8 FldEff_JumpLongGrass(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[16], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->data1 = 18; + } + return FALSE; +} -- cgit v1.2.3 From e01228611b9662c1bfa57c98975f9120d0e8211e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 18:35:01 -0400 Subject: FldEff_ShortGrass --- asm/field_effect_helpers.s | 82 ---------------------------------------------- src/field_effect_helpers.c | 24 ++++++++++++++ 2 files changed, 24 insertions(+), 82 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 57fb84368..b21e8db51 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,88 +6,6 @@ .text - thumb_func_start FldEff_ShortGrass -FldEff_ShortGrass: @ 8127290 - push {r4-r6,lr} - ldr r6, _08127324 @ =gFieldEffectSpawnParams - ldrb r0, [r6] - ldrb r1, [r6, 0x4] - ldrb r2, [r6, 0x8] - bl GetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, _08127328 @ =gMapObjects - adds r5, r1, r0 - ldr r0, _0812732C @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x78] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _0812731C - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r4, _08127330 @ =gSprites - adds r2, r4 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - ldrb r1, [r5, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x5] - movs r1, 0xC - ands r1, r0 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - ldr r0, [r6] - strh r0, [r2, 0x2E] - ldr r0, [r6, 0x4] - strh r0, [r2, 0x30] - ldr r0, [r6, 0x8] - strh r0, [r2, 0x32] - ldrb r1, [r5, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0, 0x20] - strh r0, [r2, 0x34] - ldrb r1, [r5, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0, 0x22] - strh r0, [r2, 0x36] -_0812731C: - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08127324: .4byte gFieldEffectSpawnParams -_08127328: .4byte gMapObjects -_0812732C: .4byte gFieldEffectObjectTemplatePointers -_08127330: .4byte gSprites - thumb_func_end FldEff_ShortGrass - thumb_func_start sub_8127334 sub_8127334: @ 8127334 push {r4-r7,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 87cf29b4c..c2cc19a71 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -481,3 +481,27 @@ bool8 FldEff_JumpLongGrass(void) } return FALSE; } + +bool8 FldEff_ShortGrass(void) +{ + u8 mapObjectId; + struct MapObject *mapObject; + u8 spriteId; + struct Sprite *sprite; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + mapObject = &gMapObjects[mapObjectId]; + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[30], 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + sprite = &(gSprites[spriteId]); + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; + sprite->data0 = gFieldEffectSpawnParams[0]; + sprite->data1 = gFieldEffectSpawnParams[1]; + sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data3 = gSprites[mapObject->spriteId].pos1.x; + sprite->data4 = gSprites[mapObject->spriteId].pos1.y; + } + return FALSE; +} -- cgit v1.2.3 From 61d38ca54027b9d5d69216beadcd8644a9818c1f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 19:45:36 -0400 Subject: sub_8127334 --- asm/field_effect_helpers.s | 125 --------------------------------------------- src/field_effect_helpers.c | 36 +++++++++++++ 2 files changed, 36 insertions(+), 125 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index b21e8db51..e90d6e8bb 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,131 +6,6 @@ .text - thumb_func_start sub_8127334 -sub_8127334: @ 8127334 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r4, 0x32] - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _08127372 - ldr r5, _0812737C @ =gMapObjects - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r5 - ldrb r0, [r1, 0x2] - lsls r0, 29 - cmp r0, 0 - blt _08127380 -_08127372: - adds r0, r4, 0 - movs r1, 0x29 - bl FieldEffectStop - b _08127416 - .align 2, 0 -_0812737C: .4byte gMapObjects -_08127380: - ldrb r0, [r1, 0x5] - bl GetFieldObjectGraphicsInfo - mov r8, r0 - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08127424 @ =gSprites - adds r6, r0, r1 - ldrh r5, [r6, 0x22] - ldrh r7, [r6, 0x20] - movs r0, 0x20 - ldrsh r1, [r6, r0] - movs r2, 0x34 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _081273BC - lsls r0, r5, 16 - asrs r0, 16 - movs r2, 0x36 - ldrsh r1, [r4, r2] - cmp r0, r1 - beq _081273D6 -_081273BC: - strh r7, [r4, 0x34] - strh r5, [r4, 0x36] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _081273D6 - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnim -_081273D6: - strh r7, [r4, 0x20] - strh r5, [r4, 0x22] - mov r1, r8 - ldrh r0, [r1, 0xA] - lsls r0, 16 - asrs r0, 17 - subs r0, 0x8 - strh r0, [r4, 0x26] - adds r0, r6, 0 - adds r0, 0x43 - ldrb r0, [r0] - subs r0, 0x1 - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrb r0, [r6, 0x5] - movs r1, 0xC - ands r1, r0 - ldrb r2, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x5] - adds r0, r6, 0 - adds r0, 0x3E - ldrb r1, [r0] - lsls r1, 29 - lsrs r1, 31 - adds r0, r4, 0 - bl sub_806487C -_08127416: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08127424: .4byte gSprites - thumb_func_end sub_8127334 - thumb_func_start FldEff_SandFootprints FldEff_SandFootprints: @ 8127428 push {r4,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index c2cc19a71..5fcaf7caf 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -505,3 +505,39 @@ bool8 FldEff_ShortGrass(void) } return FALSE; } + +void sub_8127334(struct Sprite *sprite) +{ + u8 mapObjectId; + s16 x; + s16 y; + const struct MapObjectGraphicsInfo *graphicsInfo; + struct Sprite *linkedSprite; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_18) + { + FieldEffectStop(sprite, FLDEFF_SHORT_GRASS); + } + else + { + graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId); + linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId]; + y = linkedSprite->pos1.y; + x = linkedSprite->pos1.x; + if (x != sprite->data3 || y != sprite->data4) + { + sprite->data3 = x; + sprite->data4 = y; + if (sprite->animEnded) + { + StartSpriteAnim(sprite, 0); + } + } + sprite->pos1.x = x; + sprite->pos1.y = y; + sprite->pos2.y = (graphicsInfo->height >> 1) - 8; + sprite->subpriority = linkedSprite->subpriority - 1; + sprite->oam.priority = linkedSprite->oam.priority; + sub_806487C(sprite, linkedSprite->invisible); + } +} -- cgit v1.2.3 From 261efc84820de61132aeaaff8901f412f0572d62 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 19:54:34 -0400 Subject: FldEff_SandFootprints --- asm/field_effect_helpers.s | 57 ---------------------------------------------- src/field_effect_helpers.c | 18 +++++++++++++++ 2 files changed, 18 insertions(+), 57 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index e90d6e8bb..20fafd213 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,63 +6,6 @@ .text - thumb_func_start FldEff_SandFootprints -FldEff_SandFootprints: @ 8127428 - push {r4,lr} - ldr r4, _08127490 @ =gFieldEffectSpawnParams - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08127494 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x2C] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - ldrb r3, [r4, 0x8] - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _08127486 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08127498 @ =gSprites - adds r0, r1 - adds r3, r0, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r3] - movs r1, 0x3 - ldrb r2, [r4, 0xC] - ands r2, r1 - lsls r2, 2 - ldrb r3, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r3 - orrs r1, r2 - strb r1, [r0, 0x5] - movs r1, 0xD - strh r1, [r0, 0x3C] - ldrb r1, [r4, 0x10] - bl StartSpriteAnim -_08127486: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08127490: .4byte gFieldEffectSpawnParams -_08127494: .4byte gFieldEffectObjectTemplatePointers -_08127498: .4byte gSprites - thumb_func_end FldEff_SandFootprints - thumb_func_start FldEff_DeepSandFootprints FldEff_DeepSandFootprints: @ 812749C push {r4,r5,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 5fcaf7caf..d9055f262 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -541,3 +541,21 @@ void sub_8127334(struct Sprite *sprite) sub_806487C(sprite, linkedSprite->invisible); } } + +bool8 FldEff_SandFootprints(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[11], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data7 = 13; + StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]); + } + return FALSE; +} -- cgit v1.2.3 From e9ff33791bf99e1671dcd94830b814aec2fa733d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 19:57:48 -0400 Subject: FldEff_DeepSandFootprints --- asm/field_effect_helpers.s | 58 ---------------------------------------------- src/field_effect_helpers.c | 46 +++++++++++++++++++++++++----------- 2 files changed, 32 insertions(+), 72 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 20fafd213..ffc7b3e9f 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,64 +6,6 @@ .text - thumb_func_start FldEff_DeepSandFootprints -FldEff_DeepSandFootprints: @ 812749C - push {r4,r5,lr} - ldr r4, _08127504 @ =gFieldEffectSpawnParams - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08127508 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x5C] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - ldrb r3, [r4, 0x8] - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r1, r0, 24 - adds r5, r1, 0 - cmp r1, 0x40 - beq _081274FC - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0812750C @ =gSprites - adds r0, r1 - adds r3, r0, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r3] - movs r1, 0x3 - ldrb r2, [r4, 0xC] - ands r2, r1 - lsls r2, 2 - ldrb r3, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r3 - orrs r1, r2 - strb r1, [r0, 0x5] - movs r1, 0x18 - strh r1, [r0, 0x3C] - ldrb r1, [r4, 0x10] - bl StartSpriteAnim -_081274FC: - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08127504: .4byte gFieldEffectSpawnParams -_08127508: .4byte gFieldEffectObjectTemplatePointers -_0812750C: .4byte gSprites - thumb_func_end FldEff_DeepSandFootprints - thumb_func_start FldEff_BikeTireTracks FldEff_BikeTireTracks: @ 8127510 push {r4,r5,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index d9055f262..82b3ad25e 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -244,7 +244,7 @@ void sub_8126BC4(u8 spriteId, u8 animNum, s16 x, s16 y) } } -bool8 FldEff_Shadow(void) +u8 FldEff_Shadow(void) { u8 mapObjectId; const struct MapObjectGraphicsInfo *graphicsInfo; @@ -261,7 +261,7 @@ bool8 FldEff_Shadow(void) gSprites[spriteId].data2 = gFieldEffectSpawnParams[2]; gSprites[spriteId].data3 = (graphicsInfo->height >> 1) - gUnknown_08401E36[graphicsInfo->shadowSize]; } - return FALSE; + return 0; } void oamc_shadow(struct Sprite *sprite) @@ -288,7 +288,7 @@ void oamc_shadow(struct Sprite *sprite) } } -bool8 FldEff_TallGrass(void) +u8 FldEff_TallGrass(void) { s16 x; s16 y; @@ -315,7 +315,7 @@ bool8 FldEff_TallGrass(void) SeekSpriteAnim(sprite, 4); } } - return FALSE; + return 0; } void unc_grass_normal(struct Sprite *sprite) @@ -360,7 +360,7 @@ void unc_grass_normal(struct Sprite *sprite) } } -bool8 FldEff_JumpTallGrass(void) +u8 FldEff_JumpTallGrass(void) { u8 spriteId; struct Sprite *sprite; @@ -375,7 +375,7 @@ bool8 FldEff_JumpTallGrass(void) sprite->data0 = gFieldEffectSpawnParams[2]; sprite->data1 = 12; } - return FALSE; + return 0; } u8 sub_8126FF0(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y) @@ -397,7 +397,7 @@ u8 sub_8126FF0(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y) return MAX_SPRITES; } -bool8 FldEff_LongGrass(void) +u8 FldEff_LongGrass(void) { s16 x; s16 y; @@ -424,7 +424,7 @@ bool8 FldEff_LongGrass(void) SeekSpriteAnim(sprite, 6); } } - return FALSE; + return 0; } void unc_grass_tall(struct Sprite *sprite) @@ -464,7 +464,7 @@ void unc_grass_tall(struct Sprite *sprite) } } -bool8 FldEff_JumpLongGrass(void) +u8 FldEff_JumpLongGrass(void) { u8 spriteId; struct Sprite *sprite; @@ -479,10 +479,10 @@ bool8 FldEff_JumpLongGrass(void) sprite->data0 = gFieldEffectSpawnParams[2]; sprite->data1 = 18; } - return FALSE; + return 0; } -bool8 FldEff_ShortGrass(void) +u8 FldEff_ShortGrass(void) { u8 mapObjectId; struct MapObject *mapObject; @@ -503,7 +503,7 @@ bool8 FldEff_ShortGrass(void) sprite->data3 = gSprites[mapObject->spriteId].pos1.x; sprite->data4 = gSprites[mapObject->spriteId].pos1.y; } - return FALSE; + return 0; } void sub_8127334(struct Sprite *sprite) @@ -542,7 +542,7 @@ void sub_8127334(struct Sprite *sprite) } } -bool8 FldEff_SandFootprints(void) +u8 FldEff_SandFootprints(void) { u8 spriteId; struct Sprite *sprite; @@ -557,5 +557,23 @@ bool8 FldEff_SandFootprints(void) sprite->data7 = 13; StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]); } - return FALSE; + return 0; +} + +u8 FldEff_DeepSandFootprints(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[23], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data7 = 24; + StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]); + } + return spriteId; } -- cgit v1.2.3 From 59f75daeb9c363957661c64bf509cf4f5e31c61c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 19:59:10 -0400 Subject: FldEff_BikeTireTracks --- asm/field_effect_helpers.s | 58 ---------------------------------------------- src/field_effect_helpers.c | 18 ++++++++++++++ 2 files changed, 18 insertions(+), 58 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index ffc7b3e9f..493c69c51 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,64 +6,6 @@ .text - thumb_func_start FldEff_BikeTireTracks -FldEff_BikeTireTracks: @ 8127510 - push {r4,r5,lr} - ldr r4, _08127578 @ =gFieldEffectSpawnParams - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _0812757C @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x6C] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - ldrb r3, [r4, 0x8] - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r1, r0, 24 - adds r5, r1, 0 - cmp r1, 0x40 - beq _08127570 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08127580 @ =gSprites - adds r0, r1 - adds r3, r0, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r3] - movs r1, 0x3 - ldrb r2, [r4, 0xC] - ands r2, r1 - lsls r2, 2 - ldrb r3, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r3 - orrs r1, r2 - strb r1, [r0, 0x5] - movs r1, 0x23 - strh r1, [r0, 0x3C] - ldrb r1, [r4, 0x10] - bl StartSpriteAnim -_08127570: - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08127578: .4byte gFieldEffectSpawnParams -_0812757C: .4byte gFieldEffectObjectTemplatePointers -_08127580: .4byte gSprites - thumb_func_end FldEff_BikeTireTracks - thumb_func_start sub_8127584 sub_8127584: @ 8127584 push {lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 82b3ad25e..832a5b170 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -577,3 +577,21 @@ u8 FldEff_DeepSandFootprints(void) } return spriteId; } + +u8 FldEff_BikeTireTracks(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[27], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data7 = 35; + StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]); + } + return spriteId; +} -- cgit v1.2.3 From a3cd86b2ddd622dae3703a30280823174173a93d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 20:05:02 -0400 Subject: sub_8127584 --- asm/field_effect_helpers.s | 77 ---------------------------------------------- src/field_effect_helpers.c | 35 ++++++++++++++++++--- 2 files changed, 30 insertions(+), 82 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 493c69c51..25c4f205c 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,83 +6,6 @@ .text - thumb_func_start sub_8127584 -sub_8127584: @ 8127584 - push {lr} - ldr r2, _0812759C @ =gUnknown_08401E40 - movs r3, 0x2E - ldrsh r1, [r0, r3] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {r0} - bx r0 - .align 2, 0 -_0812759C: .4byte gUnknown_08401E40 - thumb_func_end sub_8127584 - - thumb_func_start sub_81275A0 -sub_81275A0: @ 81275A0 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x28 - ble _081275B6 - movs r0, 0x1 - strh r0, [r1, 0x2E] -_081275B6: - adds r0, r1, 0 - movs r1, 0 - bl sub_806487C - pop {r0} - bx r0 - thumb_func_end sub_81275A0 - - thumb_func_start sub_81275C4 -sub_81275C4: @ 81275C4 - push {r4,lr} - adds r4, r0, 0 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - ldrb r1, [r3] - lsls r1, 29 - lsrs r1, 31 - adds r0, r4, 0 - bl sub_806487C - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x38 - ble _08127608 - ldrh r1, [r4, 0x3C] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldEffectStop -_08127608: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81275C4 - thumb_func_start FldEff_Splash FldEff_Splash: @ 8127610 push {r4-r6,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 832a5b170..927d86538 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -25,8 +25,8 @@ static void sub_81269E0(struct Sprite *); static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite); static void npc_pal_op_A(struct MapObject *, u8); static void npc_pal_op_B(struct MapObject *, u8); -/*static*/ void sub_81275A0(struct Sprite *); -/*static*/ void sub_81275C4(struct Sprite *); +static void sub_81275A0(struct Sprite *); +static void sub_81275C4(struct Sprite *); /*static*/ void sub_8127DA0(struct Sprite *); /*static*/ void sub_8127DD0(struct Sprite *); /*static*/ void sub_8127E30(struct Sprite *); @@ -554,7 +554,7 @@ u8 FldEff_SandFootprints(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectSpawnParams[3]; - sprite->data7 = 13; + sprite->data7 = FLDEFF_SAND_FOOTPRINTS; StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]); } return 0; @@ -572,7 +572,7 @@ u8 FldEff_DeepSandFootprints(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectSpawnParams[3]; - sprite->data7 = 24; + sprite->data7 = FLDEFF_DEEP_SAND_FOOTPRINTS; StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]); } return spriteId; @@ -590,8 +590,33 @@ u8 FldEff_BikeTireTracks(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectSpawnParams[3]; - sprite->data7 = 35; + sprite->data7 = FLDEFF_BIKE_TIRE_TRACKS; StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]); } return spriteId; } + +void sub_8127584(struct Sprite *sprite) +{ + gUnknown_08401E40[sprite->data0](sprite); +} + +static void sub_81275A0(struct Sprite *sprite) +{ + if (++sprite->data1 > 40) + { + sprite->data0 = 1; + } + sub_806487C(sprite, FALSE); +} + +static void sub_81275C4(struct Sprite *sprite) +{ + sprite->invisible ^= 1; + sprite->data1 ++; + sub_806487C(sprite, sprite->invisible); + if (sprite->data1 > 56) + { + FieldEffectStop(sprite, sprite->data7); + } +} -- cgit v1.2.3 From dbe959e0b6a467e8b68746f11e72b16e7bd23dd4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 20:12:21 -0400 Subject: FldEff_Splash --- asm/field_effect_helpers.s | 79 ---------------------------------------------- src/field_effect_helpers.c | 30 ++++++++++++++++++ 2 files changed, 30 insertions(+), 79 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 25c4f205c..e0aff9804 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,85 +6,6 @@ .text - thumb_func_start FldEff_Splash -FldEff_Splash: @ 8127610 - push {r4-r6,lr} - ldr r6, _081276A4 @ =gFieldEffectSpawnParams - ldrb r0, [r6] - ldrb r1, [r6, 0x4] - ldrb r2, [r6, 0x8] - bl GetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, _081276A8 @ =gMapObjects - adds r5, r1, r0 - ldr r0, _081276AC @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x34] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x40 - beq _0812769A - ldrb r0, [r5, 0x5] - bl GetFieldObjectGraphicsInfo - lsls r3, r4, 4 - adds r3, r4 - lsls r3, 2 - ldr r4, _081276B0 @ =gSprites - adds r3, r4 - movs r1, 0x3E - adds r1, r3 - mov r12, r1 - ldrb r1, [r1] - movs r2, 0x2 - orrs r1, r2 - mov r2, r12 - strb r1, [r2] - ldrb r2, [r5, 0x4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldrb r1, [r1, 0x5] - movs r2, 0xC - ands r2, r1 - ldrb r4, [r3, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r4 - orrs r1, r2 - strb r1, [r3, 0x5] - ldr r1, [r6] - strh r1, [r3, 0x2E] - ldr r1, [r6, 0x4] - strh r1, [r3, 0x30] - ldr r1, [r6, 0x8] - strh r1, [r3, 0x32] - ldrh r0, [r0, 0xA] - lsls r0, 16 - asrs r0, 17 - subs r0, 0x4 - strh r0, [r3, 0x26] - movs r0, 0x46 - bl PlaySE -_0812769A: - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_081276A4: .4byte gFieldEffectSpawnParams -_081276A8: .4byte gMapObjects -_081276AC: .4byte gFieldEffectObjectTemplatePointers -_081276B0: .4byte gSprites - thumb_func_end FldEff_Splash - thumb_func_start sub_81276B4 sub_81276B4: @ 81276B4 push {r4,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 927d86538..713cda7ae 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -8,6 +8,8 @@ #include "sprite.h" #include "fieldmap.h" #include "metatile_behavior.h" +#include "songs.h" +#include "sound.h" #include "field_map_obj.h" #include "field_camera.h" #include "field_map_obj_helpers.h" @@ -620,3 +622,31 @@ static void sub_81275C4(struct Sprite *sprite) FieldEffectStop(sprite, sprite->data7); } } + +u8 FldEff_Splash(void) +{ + u8 mapObjectId; + struct MapObject *mapObject; + u8 spriteId; + struct Sprite *sprite; + const struct MapObjectGraphicsInfo *graphicsInfo; + struct Sprite *linkedSprite; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + mapObject = &gMapObjects[mapObjectId]; + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + linkedSprite = &gSprites[mapObject->spriteId]; + sprite->oam.priority = linkedSprite->oam.priority; + sprite->data0 = gFieldEffectSpawnParams[0]; + sprite->data1 = gFieldEffectSpawnParams[1]; + sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->pos2.y = (graphicsInfo->height >> 1) - 4; + PlaySE(SE_MIZU); + } + return 0; +} -- cgit v1.2.3 From ac82616dc933de99a50d7a131b18cb38c79c7f77 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 20:42:51 -0400 Subject: sub_81276B4 --- asm/field_effect_helpers.s | 72 ---------------------------------------------- src/field_effect_helpers.c | 16 +++++++++++ 2 files changed, 16 insertions(+), 72 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index e0aff9804..5f2523de4 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,78 +6,6 @@ .text - thumb_func_start sub_81276B4 -sub_81276B4: @ 81276B4 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _081276E4 - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r4, 0x32] - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - beq _081276EE -_081276E4: - adds r0, r4, 0 - movs r1, 0xF - bl FieldEffectStop - b _0812772E -_081276EE: - ldr r3, _08127738 @ =gSprites - ldr r2, _0812773C @ =gMapObjects - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x20] - strh r0, [r4, 0x20] - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x22] - strh r0, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0 - bl sub_806487C -_0812772E: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08127738: .4byte gSprites -_0812773C: .4byte gMapObjects - thumb_func_end sub_81276B4 - thumb_func_start FldEff_JumpSmallSplash FldEff_JumpSmallSplash: @ 8127740 push {r4,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 713cda7ae..53c18c158 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -650,3 +650,19 @@ u8 FldEff_Splash(void) } return 0; } + +void sub_81276B4(struct Sprite *sprite) +{ + u8 mapObjectId; + + if (sprite->animEnded || TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId)) + { + FieldEffectStop(sprite, FLDEFF_SPLASH); + } + else + { + sprite->pos1.x = gSprites[gMapObjects[mapObjectId].spriteId].pos1.x; + sprite->pos1.y = gSprites[gMapObjects[mapObjectId].spriteId].pos1.y; + sub_806487C(sprite, FALSE); + } +} -- cgit v1.2.3 From 2b48a1396cbe5adbf6755502e96e66392b6bd8a1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 20:46:58 -0400 Subject: FldEff_JumpSmallSplash --- asm/field_effect_helpers.s | 57 ---------------------------------------------- src/field_effect_helpers.c | 18 +++++++++++++++ 2 files changed, 18 insertions(+), 57 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 5f2523de4..7cfd69ea6 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,63 +6,6 @@ .text - thumb_func_start FldEff_JumpSmallSplash -FldEff_JumpSmallSplash: @ 8127740 - push {r4,lr} - ldr r4, _081277A4 @ =gFieldEffectSpawnParams - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0xC - bl sub_8060470 - ldr r0, _081277A8 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x38] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _0812779C - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _081277AC @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r4, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - ldr r0, [r4, 0x8] - strh r0, [r2, 0x2E] - movs r0, 0x10 - strh r0, [r2, 0x30] -_0812779C: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_081277A4: .4byte gFieldEffectSpawnParams -_081277A8: .4byte gFieldEffectObjectTemplatePointers -_081277AC: .4byte gSprites - thumb_func_end FldEff_JumpSmallSplash - thumb_func_start FldEff_JumpBigSplash FldEff_JumpBigSplash: @ 81277B0 push {r4,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 53c18c158..0f91605c0 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -666,3 +666,21 @@ void sub_81276B4(struct Sprite *sprite) sub_806487C(sprite, FALSE); } } + +u8 FldEff_JumpSmallSplash(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 12); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[14], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->data1 = FLDEFF_JUMP_SMALL_SPLASH; + } + return 0; +} -- cgit v1.2.3 From c72d74d953517902d67ae71be40f5653a105a7c6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 20:49:18 -0400 Subject: FldEff_JumpBigSplash --- asm/field_effect_helpers.s | 57 ---------------------------------------------- src/field_effect_helpers.c | 18 +++++++++++++++ 2 files changed, 18 insertions(+), 57 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 7cfd69ea6..b57ce0db4 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,63 +6,6 @@ .text - thumb_func_start FldEff_JumpBigSplash -FldEff_JumpBigSplash: @ 81277B0 - push {r4,lr} - ldr r4, _08127814 @ =gFieldEffectSpawnParams - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08127818 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x30] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _0812780C - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _0812781C @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r4, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - ldr r0, [r4, 0x8] - strh r0, [r2, 0x2E] - movs r0, 0xE - strh r0, [r2, 0x30] -_0812780C: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08127814: .4byte gFieldEffectSpawnParams -_08127818: .4byte gFieldEffectObjectTemplatePointers -_0812781C: .4byte gSprites - thumb_func_end FldEff_JumpBigSplash - thumb_func_start FldEff_FeetInFlowingWater FldEff_FeetInFlowingWater: @ 8127820 push {r4-r7,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 0f91605c0..14634e2b4 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -684,3 +684,21 @@ u8 FldEff_JumpSmallSplash(void) } return 0; } + +u8 FldEff_JumpBigSplash(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[12], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->data1 = FLDEFF_JUMP_BIG_SPLASH; + } + return 0; +} -- cgit v1.2.3 From 8618a4be87b3cb92a45a7fbe4559385e5d2c4346 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 20:58:05 -0400 Subject: FldEff_FeetInFlowingWater --- asm/field_effect_helpers.s | 87 ---------------------------------------------- src/field_effect_helpers.c | 30 ++++++++++++++++ 2 files changed, 30 insertions(+), 87 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index b57ce0db4..a5db46c36 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,93 +6,6 @@ .text - thumb_func_start FldEff_FeetInFlowingWater -FldEff_FeetInFlowingWater: @ 8127820 - push {r4-r7,lr} - ldr r7, _081278C0 @ =gFieldEffectSpawnParams - ldrb r0, [r7] - ldrb r1, [r7, 0x4] - ldrb r2, [r7, 0x8] - bl GetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, _081278C4 @ =gMapObjects - adds r6, r1, r0 - ldr r0, _081278C8 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x34] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x40 - beq _081278B6 - ldrb r0, [r6, 0x5] - bl GetFieldObjectGraphicsInfo - adds r4, r0, 0 - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - ldr r3, _081278CC @ =gSprites - adds r0, r3 - ldr r1, _081278D0 @ =sub_81278D8 - str r1, [r0, 0x1C] - adds r5, r0, 0 - adds r5, 0x3E - ldrb r1, [r5] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r5] - ldrb r2, [r6, 0x4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r3 - ldrb r1, [r1, 0x5] - movs r2, 0xC - ands r2, r1 - ldrb r3, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r3 - orrs r1, r2 - strb r1, [r0, 0x5] - ldr r1, [r7] - strh r1, [r0, 0x2E] - ldr r1, [r7, 0x4] - strh r1, [r0, 0x30] - ldr r1, [r7, 0x8] - strh r1, [r0, 0x32] - ldr r1, _081278D4 @ =0x0000ffff - strh r1, [r0, 0x34] - movs r1, 0x1 - negs r1, r1 - strh r1, [r0, 0x36] - ldrh r1, [r4, 0xA] - lsls r1, 16 - asrs r1, 17 - subs r1, 0x4 - strh r1, [r0, 0x26] - movs r1, 0x1 - bl StartSpriteAnim -_081278B6: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_081278C0: .4byte gFieldEffectSpawnParams -_081278C4: .4byte gMapObjects -_081278C8: .4byte gFieldEffectObjectTemplatePointers -_081278CC: .4byte gSprites -_081278D0: .4byte sub_81278D8 -_081278D4: .4byte 0x0000ffff - thumb_func_end FldEff_FeetInFlowingWater - thumb_func_start sub_81278D8 sub_81278D8: @ 81278D8 push {r4,r5,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 14634e2b4..2c4685bf4 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -33,6 +33,7 @@ static void sub_81275C4(struct Sprite *); /*static*/ void sub_8127DD0(struct Sprite *); /*static*/ void sub_8127E30(struct Sprite *); /*static*/ void sub_812882C(struct Sprite *, u8, u8); +/*static*/ void sub_81278D8(struct Sprite *); // .rodata @@ -702,3 +703,32 @@ u8 FldEff_JumpBigSplash(void) } return 0; } + +u8 FldEff_FeetInFlowingWater(void) +{ + u8 mapObjectId; + struct MapObject *mapObject; + u8 spriteId; + struct Sprite *sprite; + const struct MapObjectGraphicsInfo *graphicsInfo; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + mapObject = &gMapObjects[mapObjectId]; + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + sprite = &gSprites[spriteId]; + sprite->callback = sub_81278D8; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; + sprite->data0 = gFieldEffectSpawnParams[0]; + sprite->data1 = gFieldEffectSpawnParams[1]; + sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data3 = -1; + sprite->data4 = -1; + sprite->pos2.y = (graphicsInfo->height >> 1) - 4; + StartSpriteAnim(sprite, 1); + } + return 0; +} -- cgit v1.2.3 From 6e57ac34492ec11017b8e741b8e7008f0e844e9b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 21:04:46 -0400 Subject: sub_81278D8 --- asm/field_effect_helpers.s | 82 ---------------------------------------------- src/field_effect_helpers.c | 32 +++++++++++++++++- 2 files changed, 31 insertions(+), 83 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index a5db46c36..fbc1d5a50 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,88 +6,6 @@ .text - thumb_func_start sub_81278D8 -sub_81278D8: @ 81278D8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r4, 0x32] - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _08127912 - ldr r2, _0812791C @ =gMapObjects - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r5, r0, r2 - ldrb r0, [r5, 0x2] - lsls r0, 28 - cmp r0, 0 - blt _08127920 -_08127912: - adds r0, r4, 0 - movs r1, 0x22 - bl FieldEffectStop - b _0812796A - .align 2, 0 -_0812791C: .4byte gMapObjects -_08127920: - ldrb r1, [r5, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08127974 @ =gSprites - adds r0, r1 - ldrh r1, [r0, 0x20] - strh r1, [r4, 0x20] - ldrh r1, [r0, 0x22] - strh r1, [r4, 0x22] - adds r0, 0x43 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0 - bl sub_806487C - ldr r1, [r5, 0x10] - ldr r0, [r4, 0x34] - cmp r1, r0 - beq _0812796A - ldrh r0, [r5, 0x10] - strh r0, [r4, 0x34] - ldrh r0, [r5, 0x12] - strh r0, [r4, 0x36] - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _0812796A - movs r0, 0x46 - bl PlaySE -_0812796A: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08127974: .4byte gSprites - thumb_func_end sub_81278D8 - thumb_func_start FldEff_Ripple FldEff_Ripple: @ 8127978 push {r4,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 2c4685bf4..9f12fd6a4 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -33,7 +33,7 @@ static void sub_81275C4(struct Sprite *); /*static*/ void sub_8127DD0(struct Sprite *); /*static*/ void sub_8127E30(struct Sprite *); /*static*/ void sub_812882C(struct Sprite *, u8, u8); -/*static*/ void sub_81278D8(struct Sprite *); +static void sub_81278D8(struct Sprite *); // .rodata @@ -732,3 +732,33 @@ u8 FldEff_FeetInFlowingWater(void) } return 0; } + +static void sub_81278D8(struct Sprite *sprite) +{ + u8 mapObjectId; + struct Sprite *linkedSprite; + struct MapObject *mapObject; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_19) + { + FieldEffectStop(sprite, FLDEFF_FEET_IN_FLOWING_WATER); + } + else + { + mapObject = &gMapObjects[mapObjectId]; + linkedSprite = &gSprites[mapObject->spriteId]; + sprite->pos1.x = linkedSprite->pos1.x; + sprite->pos1.y = linkedSprite->pos1.y; + sprite->subpriority = linkedSprite->subpriority; + sub_806487C(sprite, FALSE); + if (mapObject->coords2.x != sprite->data3 || mapObject->coords2.y != sprite->data4) + { + sprite->data3 = mapObject->coords2.x; + sprite->data4 = mapObject->coords2.y; + if (!sprite->invisible) + { + PlaySE(SE_MIZU); + } + } + } +} -- cgit v1.2.3 From 959858eac27cc30382a2d309180a282d8144903b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 21:17:35 -0400 Subject: FldEff_Ripple --- asm/field_effect_helpers.s | 50 ---------------------------------------------- src/field_effect_helpers.c | 16 +++++++++++++++ 2 files changed, 16 insertions(+), 50 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index fbc1d5a50..0ea1593e3 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,56 +6,6 @@ .text - thumb_func_start FldEff_Ripple -FldEff_Ripple: @ 8127978 - push {r4,lr} - ldr r0, _081279CC @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x14] - ldr r4, _081279D0 @ =gFieldEffectSpawnParams - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - ldrb r3, [r4, 0x8] - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _081279C4 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _081279D4 @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r4, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - movs r0, 0x5 - strh r0, [r2, 0x2E] -_081279C4: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_081279CC: .4byte gFieldEffectObjectTemplatePointers -_081279D0: .4byte gFieldEffectSpawnParams -_081279D4: .4byte gSprites - thumb_func_end FldEff_Ripple - thumb_func_start FldEff_HotSpringsWater FldEff_HotSpringsWater: @ 81279D8 push {r4-r6,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 9f12fd6a4..2df247600 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -762,3 +762,19 @@ static void sub_81278D8(struct Sprite *sprite) } } } + +u8 FldEff_Ripple(void) +{ + u8 spriteId; + struct Sprite *sprite; + + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[5], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data0 = FLDEFF_RIPPLE; + } + return 0; +} -- cgit v1.2.3 From 885d0fa2877b69f52ef58ce62ce828ef550c67ed Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 21:24:04 -0400 Subject: FldEff_HotSpringsWater --- asm/field_effect_helpers.s | 82 ---------------------------------------------- src/field_effect_helpers.c | 24 ++++++++++++++ 2 files changed, 24 insertions(+), 82 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 0ea1593e3..7431acb8a 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,88 +6,6 @@ .text - thumb_func_start FldEff_HotSpringsWater -FldEff_HotSpringsWater: @ 81279D8 - push {r4-r6,lr} - ldr r6, _08127A6C @ =gFieldEffectSpawnParams - ldrb r0, [r6] - ldrb r1, [r6, 0x4] - ldrb r2, [r6, 0x8] - bl GetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, _08127A70 @ =gMapObjects - adds r5, r1, r0 - ldr r0, _08127A74 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x7C] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _08127A64 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r4, _08127A78 @ =gSprites - adds r2, r4 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - ldrb r1, [r5, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x5] - movs r1, 0xC - ands r1, r0 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - ldr r0, [r6] - strh r0, [r2, 0x2E] - ldr r0, [r6, 0x4] - strh r0, [r2, 0x30] - ldr r0, [r6, 0x8] - strh r0, [r2, 0x32] - ldrb r1, [r5, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0, 0x20] - strh r0, [r2, 0x34] - ldrb r1, [r5, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0, 0x22] - strh r0, [r2, 0x36] -_08127A64: - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08127A6C: .4byte gFieldEffectSpawnParams -_08127A70: .4byte gMapObjects -_08127A74: .4byte gFieldEffectObjectTemplatePointers -_08127A78: .4byte gSprites - thumb_func_end FldEff_HotSpringsWater - thumb_func_start sub_8127A7C sub_8127A7C: @ 8127A7C push {r4,r5,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 2df247600..3f821e0b7 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -778,3 +778,27 @@ u8 FldEff_Ripple(void) } return 0; } + +u8 FldEff_HotSpringsWater(void) +{ + u8 mapObjectId; + struct MapObject *mapObject; + u8 spriteId; + struct Sprite *sprite; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + mapObject = &gMapObjects[mapObjectId]; + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[31], 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; + sprite->data0 = gFieldEffectSpawnParams[0]; + sprite->data1 = gFieldEffectSpawnParams[1]; + sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data3 = gSprites[mapObject->spriteId].pos1.x; + sprite->data4 = gSprites[mapObject->spriteId].pos1.y; + } + return 0; +} -- cgit v1.2.3 From 7980e39efb2eda587e41452b47d2503f17346368 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 21:31:32 -0400 Subject: sub_8127A7C --- asm/field_effect_helpers.s | 79 ---------------------------------------------- src/field_effect_helpers.c | 21 ++++++++++++ 2 files changed, 21 insertions(+), 79 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 7431acb8a..36d9ce69e 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,85 +6,6 @@ .text - thumb_func_start sub_8127A7C -sub_8127A7C: @ 8127A7C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r4, 0x32] - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _08127AB6 - ldr r5, _08127AC0 @ =gMapObjects - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r5 - ldrb r0, [r1, 0x2] - lsls r0, 26 - cmp r0, 0 - blt _08127AC4 -_08127AB6: - adds r0, r4, 0 - movs r1, 0x2A - bl FieldEffectStop - b _08127B08 - .align 2, 0 -_08127AC0: .4byte gMapObjects -_08127AC4: - ldrb r0, [r1, 0x5] - bl GetFieldObjectGraphicsInfo - mov r1, sp - ldrb r2, [r1] - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - ldrb r2, [r1, 0x4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - ldr r2, _08127B10 @ =gSprites - adds r1, r2 - ldrh r2, [r1, 0x20] - strh r2, [r4, 0x20] - ldrh r0, [r0, 0xA] - lsls r0, 16 - asrs r0, 17 - ldrh r2, [r1, 0x22] - adds r0, r2 - subs r0, 0x8 - strh r0, [r4, 0x22] - adds r1, 0x43 - ldrb r0, [r1] - subs r0, 0x1 - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0 - bl sub_806487C -_08127B08: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08127B10: .4byte gSprites - thumb_func_end sub_8127A7C - thumb_func_start FldEff_Unknown19 FldEff_Unknown19: @ 8127B14 push {r4,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 3f821e0b7..2113a79d7 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -802,3 +802,24 @@ u8 FldEff_HotSpringsWater(void) } return 0; } + +void sub_8127A7C(struct Sprite *sprite) +{ + u8 mapObjectId; + const struct MapObjectGraphicsInfo *graphicsInfo; + struct Sprite *linkedSprite; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_21) + { + FieldEffectStop(sprite, FLDEFF_HOT_SPRINGS_WATER); + } + else + { + graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId); + linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId]; + sprite->pos1.x = linkedSprite->pos1.x; + sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 8; + sprite->subpriority = linkedSprite->subpriority - 1; + sub_806487C(sprite, FALSE); + } +} -- cgit v1.2.3 From 490c4cd644463ce650df8333c1b1e5aeb3821dd0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 10 Sep 2017 08:57:16 -0400 Subject: FldEff_Unknown19-22 --- asm/field_effect_helpers.s | 220 --------------------------------------------- src/field_effect_helpers.c | 68 ++++++++++++++ 2 files changed, 68 insertions(+), 220 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 36d9ce69e..9c26a1b33 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,226 +6,6 @@ .text - thumb_func_start FldEff_Unknown19 -FldEff_Unknown19: @ 8127B14 - push {r4,lr} - ldr r4, _08127B74 @ =gFieldEffectSpawnParams - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08127B78 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x44] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - ldrb r3, [r4, 0x8] - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _08127B6C - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _08127B7C @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r4, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - movs r0, 0x13 - strh r0, [r2, 0x2E] -_08127B6C: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08127B74: .4byte gFieldEffectSpawnParams -_08127B78: .4byte gFieldEffectObjectTemplatePointers -_08127B7C: .4byte gSprites - thumb_func_end FldEff_Unknown19 - - thumb_func_start FldEff_Unknown20 -FldEff_Unknown20: @ 8127B80 - push {r4,lr} - ldr r4, _08127BE0 @ =gFieldEffectSpawnParams - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08127BE4 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x48] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - ldrb r3, [r4, 0x8] - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _08127BD8 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _08127BE8 @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r4, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - movs r0, 0x14 - strh r0, [r2, 0x2E] -_08127BD8: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08127BE0: .4byte gFieldEffectSpawnParams -_08127BE4: .4byte gFieldEffectObjectTemplatePointers -_08127BE8: .4byte gSprites - thumb_func_end FldEff_Unknown20 - - thumb_func_start FldEff_Unknown21 -FldEff_Unknown21: @ 8127BEC - push {r4,lr} - ldr r4, _08127C4C @ =gFieldEffectSpawnParams - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08127C50 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x4C] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - ldrb r3, [r4, 0x8] - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _08127C44 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _08127C54 @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r4, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - movs r0, 0x15 - strh r0, [r2, 0x2E] -_08127C44: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08127C4C: .4byte gFieldEffectSpawnParams -_08127C50: .4byte gFieldEffectObjectTemplatePointers -_08127C54: .4byte gSprites - thumb_func_end FldEff_Unknown21 - - thumb_func_start FldEff_Unknown22 -FldEff_Unknown22: @ 8127C58 - push {r4,lr} - ldr r4, _08127CB8 @ =gFieldEffectSpawnParams - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08127CBC @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x50] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - ldrb r3, [r4, 0x8] - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _08127CB0 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _08127CC0 @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r4, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - movs r0, 0x16 - strh r0, [r2, 0x2E] -_08127CB0: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08127CB8: .4byte gFieldEffectSpawnParams -_08127CBC: .4byte gFieldEffectObjectTemplatePointers -_08127CC0: .4byte gSprites - thumb_func_end FldEff_Unknown22 - thumb_func_start ash ash: @ 8127CC4 push {r4,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 2113a79d7..510ca556f 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -823,3 +823,71 @@ void sub_8127A7C(struct Sprite *sprite) sub_806487C(sprite, FALSE); } } + +u8 FldEff_Unknown19(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[17], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data0 = FLDEFF_UNKNOWN_19; + } + return 0; +} + +u8 FldEff_Unknown20(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[18], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data0 = FLDEFF_UNKNOWN_20; + } + return 0; +} + +u8 FldEff_Unknown21(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[19], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data0 = FLDEFF_UNKNOWN_21; + } + return 0; +} + +u8 FldEff_Unknown22(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[20], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data0 = FLDEFF_UNKNOWN_22; + } + return 0; +} -- cgit v1.2.3 From 1a53367ffbbb40b0f88e7bbca1444e3df6840aba Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 10 Sep 2017 09:14:02 -0400 Subject: ash. just ash. --- asm/field_effect_helpers.s | 29 ----------------------------- include/field_effect_helpers.h | 2 +- src/field_effect_helpers.c | 11 +++++++++++ 3 files changed, 12 insertions(+), 30 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 9c26a1b33..611faa925 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,35 +6,6 @@ .text - thumb_func_start ash -ash: @ 8127CC4 - push {r4,lr} - lsls r2, 16 - lsrs r2, 16 - ldr r4, _08127CF4 @ =gFieldEffectSpawnParams - lsls r0, 16 - asrs r0, 16 - str r0, [r4] - lsls r1, 16 - asrs r1, 16 - str r1, [r4, 0x4] - movs r0, 0x52 - str r0, [r4, 0x8] - movs r0, 0x1 - str r0, [r4, 0xC] - str r2, [r4, 0x10] - lsls r3, 16 - asrs r3, 16 - str r3, [r4, 0x14] - movs r0, 0x7 - bl FieldEffectStart - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08127CF4: .4byte gFieldEffectSpawnParams - thumb_func_end ash - thumb_func_start FldEff_Ash FldEff_Ash: @ 8127CF8 push {r4,r5,lr} diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h index 482f7e87e..7bba24fa6 100644 --- a/include/field_effect_helpers.h +++ b/include/field_effect_helpers.h @@ -28,7 +28,7 @@ void sub_8126BC4(u8 unk_1B, u8 r6, s16 x, s16 y); void sub_8127ED0(u8, u8); void sub_8127F28(u8, u8, s16); u8 sub_8128124(u8 id); -void ash(s16, s16, u16, u8); +void ash(s16, s16, u16, s16); void SetUpReflection(struct MapObject *mapObj, struct Sprite *sprite, u8 a); u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct MapObject *mapObject); u8 sub_8126FF0(u8, u8, u8, s16, s16); diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 510ca556f..493189f83 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -891,3 +891,14 @@ u8 FldEff_Unknown22(void) } return 0; } + +void ash(s16 x, s16 y, u16 c, s16 d) +{ + gFieldEffectSpawnParams[0] = x; + gFieldEffectSpawnParams[1] = y; + gFieldEffectSpawnParams[2] = 0x52; + gFieldEffectSpawnParams[3] = 1; + gFieldEffectSpawnParams[4] = c; + gFieldEffectSpawnParams[5] = d; + FieldEffectStart(FLDEFF_ASH); +} -- cgit v1.2.3 From bfa87b839b8561a61f7d01afba5c52e431a12370 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 10 Sep 2017 09:18:23 -0400 Subject: FldEff_Ash --- asm/field_effect_helpers.s | 71 ---------------------------------------------- src/field_effect_helpers.c | 24 ++++++++++++++++ 2 files changed, 24 insertions(+), 71 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 611faa925..f6b7d6c6e 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,77 +6,6 @@ .text - thumb_func_start FldEff_Ash -FldEff_Ash: @ 8127CF8 - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, _08127D78 @ =gFieldEffectSpawnParams - ldrh r1, [r5] - mov r0, sp - strh r1, [r0] - ldrh r0, [r5, 0x4] - mov r4, sp - adds r4, 0x2 - strh r0, [r4] - mov r0, sp - adds r1, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08127D7C @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x18] - mov r1, sp - movs r2, 0 - ldrsh r1, [r1, r2] - movs r3, 0 - ldrsh r2, [r4, r3] - ldrb r3, [r5, 0x8] - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _08127D6E - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _08127D80 @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r5, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - ldr r0, [r5] - strh r0, [r2, 0x30] - ldr r0, [r5, 0x4] - strh r0, [r2, 0x32] - ldr r0, [r5, 0x10] - strh r0, [r2, 0x34] - ldr r0, [r5, 0x14] - strh r0, [r2, 0x36] -_08127D6E: - movs r0, 0 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08127D78: .4byte gFieldEffectSpawnParams -_08127D7C: .4byte gFieldEffectObjectTemplatePointers -_08127D80: .4byte gSprites - thumb_func_end FldEff_Ash - thumb_func_start sub_8127D84 sub_8127D84: @ 8127D84 push {lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 493189f83..3d3658b0f 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -902,3 +902,27 @@ void ash(s16 x, s16 y, u16 c, s16 d) gFieldEffectSpawnParams[5] = d; FieldEffectStart(FLDEFF_ASH); } + +u8 FldEff_Ash(void) +{ + s16 x; + s16 y; + u8 spriteId; + struct Sprite *sprite; + + x = gFieldEffectSpawnParams[0]; + y = gFieldEffectSpawnParams[1]; + sub_8060470(&x, &y, 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[6], x, y, gFieldEffectSpawnParams[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data1 = gFieldEffectSpawnParams[0]; + sprite->data2 = gFieldEffectSpawnParams[1]; + sprite->data3 = gFieldEffectSpawnParams[4]; + sprite->data4 = gFieldEffectSpawnParams[5]; + } + return 0; +} -- cgit v1.2.3 From ceea25425899494415d0dbac2bb5c9358db48683 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 10 Sep 2017 09:25:30 -0400 Subject: ash field effect callbacks --- asm/field_effect_helpers.s | 115 --------------------------------------------- src/field_effect_helpers.c | 40 ++++++++++++++-- 2 files changed, 37 insertions(+), 118 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index f6b7d6c6e..db7893537 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,121 +6,6 @@ .text - thumb_func_start sub_8127D84 -sub_8127D84: @ 8127D84 - push {lr} - ldr r2, _08127D9C @ =gUnknown_08401E48 - movs r3, 0x2E - ldrsh r1, [r0, r3] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {r0} - bx r0 - .align 2, 0 -_08127D9C: .4byte gUnknown_08401E48 - thumb_func_end sub_8127D84 - - thumb_func_start sub_8127DA0 -sub_8127DA0: @ 8127DA0 - push {lr} - adds r3, r0, 0 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - subs r2, 0x12 - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r3, 0x36] - subs r0, 0x1 - strh r0, [r3, 0x36] - lsls r0, 16 - cmp r0, 0 - bne _08127DCA - movs r0, 0x1 - strh r0, [r3, 0x2E] -_08127DCA: - pop {r0} - bx r0 - thumb_func_end sub_8127DA0 - - thumb_func_start sub_8127DD0 -sub_8127DD0: @ 8127DD0 - push {r4,lr} - adds r4, r0, 0 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - subs r2, 0x12 - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - ldrh r2, [r4, 0x34] - bl MapGridSetMetatileIdAt - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl CurrentMapDrawMetatileAt - ldr r2, _08127E28 @ =gMapObjects - ldr r0, _08127E2C @ =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - movs r0, 0x2 - strh r0, [r4, 0x2E] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08127E28: .4byte gMapObjects -_08127E2C: .4byte gPlayerAvatar - thumb_func_end sub_8127DD0 - - thumb_func_start sub_8127E30 -sub_8127E30: @ 8127E30 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl sub_806487C - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08127E50 - adds r0, r4, 0 - movs r1, 0x7 - bl FieldEffectStop -_08127E50: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8127E30 - thumb_func_start FldEff_SurfBlob FldEff_SurfBlob: @ 8127E58 push {r4,r5,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 3d3658b0f..0e8b6e8d3 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -29,9 +29,9 @@ static void npc_pal_op_A(struct MapObject *, u8); static void npc_pal_op_B(struct MapObject *, u8); static void sub_81275A0(struct Sprite *); static void sub_81275C4(struct Sprite *); -/*static*/ void sub_8127DA0(struct Sprite *); -/*static*/ void sub_8127DD0(struct Sprite *); -/*static*/ void sub_8127E30(struct Sprite *); +static void sub_8127DA0(struct Sprite *); +static void sub_8127DD0(struct Sprite *); +static void sub_8127E30(struct Sprite *); /*static*/ void sub_812882C(struct Sprite *, u8, u8); static void sub_81278D8(struct Sprite *); @@ -926,3 +926,37 @@ u8 FldEff_Ash(void) } return 0; } + +void sub_8127D84(struct Sprite *sprite) +{ + gUnknown_08401E48[sprite->data0](sprite); +} + +static void sub_8127DA0(struct Sprite *sprite) +{ + sprite->invisible = TRUE; + sprite->animPaused = TRUE; + if (--sprite->data4 == 0) + { + sprite->data0 = 1; + } +} + +static void sub_8127DD0(struct Sprite *sprite) +{ + sprite->invisible = FALSE; + sprite->animPaused = FALSE; + MapGridSetMetatileIdAt(sprite->data1, sprite->data2, sprite->data3); + CurrentMapDrawMetatileAt(sprite->data1, sprite->data2); + gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_2 = TRUE; + sprite->data0 = 2; +} + +static void sub_8127E30(struct Sprite *sprite) +{ + sub_806487C(sprite, FALSE); + if (sprite->animEnded) + { + FieldEffectStop(sprite, FLDEFF_ASH); + } +} -- cgit v1.2.3 From ef751c02b70f1f81adc69775ba76efaa2374b92a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 10 Sep 2017 09:30:36 -0400 Subject: FldEff_SurfBlob --- asm/field_effect_helpers.s | 59 ---------------------------------------------- src/field_effect_helpers.c | 21 +++++++++++++++++ 2 files changed, 21 insertions(+), 59 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index db7893537..b6b033461 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,65 +6,6 @@ .text - thumb_func_start FldEff_SurfBlob -FldEff_SurfBlob: @ 8127E58 - push {r4,r5,lr} - ldr r4, _08127EC0 @ =gFieldEffectSpawnParams - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _08127EC4 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x1C] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r3, 0x96 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - cmp r0, 0x40 - beq _08127EB2 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _08127EC8 @ =gSprites - adds r1, r0 - adds r3, r1, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r3] - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - strb r0, [r1, 0x5] - ldr r0, [r4, 0x8] - strh r0, [r1, 0x32] - ldr r0, _08127ECC @ =0x0000ffff - strh r0, [r1, 0x34] - movs r0, 0x1 - negs r0, r0 - strh r0, [r1, 0x3A] - strh r0, [r1, 0x3C] -_08127EB2: - movs r0, 0x8 - bl FieldEffectActiveListRemove - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08127EC0: .4byte gFieldEffectSpawnParams -_08127EC4: .4byte gFieldEffectObjectTemplatePointers -_08127EC8: .4byte gSprites -_08127ECC: .4byte 0x0000ffff - thumb_func_end FldEff_SurfBlob - thumb_func_start sub_8127ED0 sub_8127ED0: @ 8127ED0 lsls r0, 24 diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 0e8b6e8d3..29d474fb5 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -960,3 +960,24 @@ static void sub_8127E30(struct Sprite *sprite) FieldEffectStop(sprite, FLDEFF_ASH); } } + +u8 FldEff_SurfBlob(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[7], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0x96); + if (spriteId !=MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.paletteNum = 0; + sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data3 = -1; + sprite->data6 = -1; + sprite->data7 = -1; + } + FieldEffectActiveListRemove(FLDEFF_SURF_BLOB); + return spriteId; +} -- cgit v1.2.3 From ab786df511b47bbe4101b3de3fdb3254da249228 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 10 Sep 2017 09:35:24 -0400 Subject: sub_8127ED0, sub_8127EFC --- asm/field_effect_helpers.s | 50 ---------------------------------------------- src/field_effect_helpers.c | 10 ++++++++++ 2 files changed, 10 insertions(+), 50 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index b6b033461..3a26f5928 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,56 +6,6 @@ .text - thumb_func_start sub_8127ED0 -sub_8127ED0: @ 8127ED0 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - ldr r3, _08127EF8 @ =gSprites - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - ldrh r0, [r2, 0x2E] - movs r3, 0x10 - negs r3, r3 - ands r3, r0 - movs r0, 0xF0 - lsls r0, 20 - ands r0, r1 - lsrs r0, 24 - orrs r0, r3 - strh r0, [r2, 0x2E] - bx lr - .align 2, 0 -_08127EF8: .4byte gSprites - thumb_func_end sub_8127ED0 - - thumb_func_start sub_8127EFC -sub_8127EFC: @ 8127EFC - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - ldr r3, _08127F24 @ =gSprites - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - ldrh r0, [r2, 0x2E] - movs r3, 0xF1 - negs r3, r3 - ands r3, r0 - movs r0, 0xF0 - lsls r0, 20 - ands r0, r1 - lsrs r0, 20 - orrs r3, r0 - strh r3, [r2, 0x2E] - bx lr - .align 2, 0 -_08127F24: .4byte gSprites - thumb_func_end sub_8127EFC - thumb_func_start sub_8127F28 sub_8127F28: @ 8127F28 push {r4,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 29d474fb5..47676b0aa 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -981,3 +981,13 @@ u8 FldEff_SurfBlob(void) FieldEffectActiveListRemove(FLDEFF_SURF_BLOB); return spriteId; } + +void sub_8127ED0(u8 spriteId, u8 value) +{ + gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0x0F) | (value & 0x0F); +} + +void sub_8127EFC(u8 spriteId, u8 value) +{ + gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF0) | ((value & 0xF) << 4); +} -- cgit v1.2.3 From f93301e62ba6e2a83258eeabbf354e666d613f02 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 10 Sep 2017 09:37:17 -0400 Subject: sub_8127F28 --- asm/field_effect_helpers.s | 29 ----------------------------- src/field_effect_helpers.c | 8 +++++++- 2 files changed, 7 insertions(+), 30 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 3a26f5928..bb3f94f22 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,35 +6,6 @@ .text - thumb_func_start sub_8127F28 -sub_8127F28: @ 8127F28 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - ldr r4, _08127F54 @ =gSprites - lsls r3, r0, 4 - adds r3, r0 - lsls r3, 2 - adds r3, r4 - ldrh r0, [r3, 0x2E] - ldr r4, _08127F58 @ =0xfffff0ff - ands r4, r0 - movs r0, 0xF0 - lsls r0, 20 - ands r0, r1 - lsrs r0, 16 - orrs r4, r0 - strh r4, [r3, 0x2E] - strh r2, [r3, 0x30] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08127F54: .4byte gSprites -_08127F58: .4byte 0xfffff0ff - thumb_func_end sub_8127F28 - thumb_func_start sub_8127F5C sub_8127F5C: @ 8127F5C ldrh r1, [r0, 0x2E] diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 47676b0aa..9cd46745b 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -984,10 +984,16 @@ u8 FldEff_SurfBlob(void) void sub_8127ED0(u8 spriteId, u8 value) { - gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0x0F) | (value & 0x0F); + gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF) | (value & 0xF); } void sub_8127EFC(u8 spriteId, u8 value) { gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF0) | ((value & 0xF) << 4); } + +void sub_8127F28(u8 spriteId, u8 value, s16 data1) +{ + gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF00) | ((value & 0xF) << 8); + gSprites[spriteId].data1 = data1; +} -- cgit v1.2.3 From 0c5bf5559328562f42e85cad9621a55923b7b50b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 10 Sep 2017 09:39:15 -0400 Subject: sub_8127F5C, sub_8127F64, sub_8127F70 --- asm/field_effect_helpers.s | 27 --------------------------- src/field_effect_helpers.c | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 27 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index bb3f94f22..709c4b4fc 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,33 +6,6 @@ .text - thumb_func_start sub_8127F5C -sub_8127F5C: @ 8127F5C - ldrh r1, [r0, 0x2E] - movs r0, 0xF - ands r0, r1 - bx lr - thumb_func_end sub_8127F5C - - thumb_func_start sub_8127F64 -sub_8127F64: @ 8127F64 - ldrh r1, [r0, 0x2E] - movs r0, 0xF0 - ands r0, r1 - lsrs r0, 4 - bx lr - thumb_func_end sub_8127F64 - - thumb_func_start sub_8127F70 -sub_8127F70: @ 8127F70 - ldrh r1, [r0, 0x2E] - movs r0, 0xF0 - lsls r0, 4 - ands r0, r1 - lsrs r0, 8 - bx lr - thumb_func_end sub_8127F70 - thumb_func_start sub_8127F7C sub_8127F7C: @ 8127F7C push {r4-r6,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 9cd46745b..4a511fad1 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -997,3 +997,18 @@ void sub_8127F28(u8 spriteId, u8 value, s16 data1) gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF00) | ((value & 0xF) << 8); gSprites[spriteId].data1 = data1; } + +u8 sub_8127F5C(struct Sprite *sprite) +{ + return sprite->data0 & 0xF; +} + +u8 sub_8127F64(struct Sprite *sprite) +{ + return (sprite->data0 & 0xF0) >> 4; +} + +u8 sub_8127F70(struct Sprite *sprite) +{ + return (sprite->data0 & 0xF00) >> 8; +} -- cgit v1.2.3 From 89023e84d6137fe425c8621f5ba914304f37ee7b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 10 Sep 2017 09:43:25 -0400 Subject: sub_8127F7C --- asm/field_effect_helpers.s | 44 -------------------------------------------- src/field_effect_helpers.c | 22 +++++++++++++++++++--- 2 files changed, 19 insertions(+), 47 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 709c4b4fc..5095eb79c 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,50 +6,6 @@ .text - thumb_func_start sub_8127F7C -sub_8127F7C: @ 8127F7C - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x32 - ldrsh r0, [r6, r1] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r0, _08127FCC @ =gMapObjects - adds r4, r0 - ldrb r0, [r4, 0x4] - lsls r5, r0, 4 - adds r5, r0 - lsls r5, 2 - ldr r0, _08127FD0 @ =gSprites - adds r5, r0 - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_8127FD4 - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_812800C - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl sub_81280A0 - ldrb r0, [r5, 0x5] - movs r1, 0xC - ands r1, r0 - ldrb r2, [r6, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r6, 0x5] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08127FCC: .4byte gMapObjects -_08127FD0: .4byte gSprites - thumb_func_end sub_8127F7C - thumb_func_start sub_8127FD4 sub_8127FD4: @ 8127FD4 push {r4,r5,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 4a511fad1..474acf939 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -34,6 +34,9 @@ static void sub_8127DD0(struct Sprite *); static void sub_8127E30(struct Sprite *); /*static*/ void sub_812882C(struct Sprite *, u8, u8); static void sub_81278D8(struct Sprite *); +/*static*/ void sub_8127FD4(struct MapObject *, struct Sprite *); +/*static*/ void sub_812800C(struct MapObject *, struct Sprite *); +/*static*/ void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *); // .rodata @@ -998,17 +1001,30 @@ void sub_8127F28(u8 spriteId, u8 value, s16 data1) gSprites[spriteId].data1 = data1; } -u8 sub_8127F5C(struct Sprite *sprite) +/*static*/ u8 sub_8127F5C(struct Sprite *sprite) { return sprite->data0 & 0xF; } -u8 sub_8127F64(struct Sprite *sprite) +/*static*/ u8 sub_8127F64(struct Sprite *sprite) { return (sprite->data0 & 0xF0) >> 4; } -u8 sub_8127F70(struct Sprite *sprite) +/*static*/ u8 sub_8127F70(struct Sprite *sprite) { return (sprite->data0 & 0xF00) >> 8; } + +void sub_8127F7C(struct Sprite *sprite) +{ + struct MapObject *mapObject; + struct Sprite *linkedSprite; + + mapObject = &gMapObjects[sprite->data2]; + linkedSprite = &gSprites[mapObject->spriteId]; + sub_8127FD4(mapObject, sprite); + sub_812800C(mapObject, sprite); + sub_81280A0(mapObject, linkedSprite, sprite); + sprite->oam.priority = linkedSprite->oam.priority; +} -- cgit v1.2.3 From faeef7d168212aeb99e6dc119c639b96f1f9e1c0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 10 Sep 2017 09:48:46 -0400 Subject: sub_8127FD4 --- asm/field_effect_helpers.s | 30 ------------------------------ src/field_effect_helpers.c | 17 ++++++++++++++--- 2 files changed, 14 insertions(+), 33 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 5095eb79c..f97345c05 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,36 +6,6 @@ .text - thumb_func_start sub_8127FD4 -sub_8127FD4: @ 8127FD4 - push {r4,r5,lr} - sub sp, 0x8 - adds r5, r0, 0 - adds r4, r1, 0 - ldr r1, _08128008 @ =gUnknown_08401E54 - mov r0, sp - movs r2, 0x5 - bl memcpy - adds r0, r4, 0 - bl sub_8127F64 - lsls r0, 24 - cmp r0, 0 - bne _08128000 - ldrb r0, [r5, 0x18] - lsrs r0, 4 - add r0, sp - ldrb r1, [r0] - adds r0, r4, 0 - bl StartSpriteAnimIfDifferent -_08128000: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08128008: .4byte gUnknown_08401E54 - thumb_func_end sub_8127FD4 - thumb_func_start sub_812800C sub_812800C: @ 812800C push {r4-r7,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 474acf939..b764c9f57 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -34,7 +34,7 @@ static void sub_8127DD0(struct Sprite *); static void sub_8127E30(struct Sprite *); /*static*/ void sub_812882C(struct Sprite *, u8, u8); static void sub_81278D8(struct Sprite *); -/*static*/ void sub_8127FD4(struct MapObject *, struct Sprite *); +static void sub_8127FD4(struct MapObject *, struct Sprite *); /*static*/ void sub_812800C(struct MapObject *, struct Sprite *); /*static*/ void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *); @@ -120,7 +120,7 @@ s16 sub_81268D0(struct MapObject *mapObject) static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite) { u8 whichElement; - u16 unk_8041e2c[3]; + u16 unk_8041e2c[ARRAY_COUNT(gUnknown_08401E2C)]; memcpy(unk_8041e2c, gUnknown_08401E2C, sizeof gUnknown_08401E2C); sprite->data2 = 0; @@ -1006,7 +1006,7 @@ void sub_8127F28(u8 spriteId, u8 value, s16 data1) return sprite->data0 & 0xF; } -/*static*/ u8 sub_8127F64(struct Sprite *sprite) +static u8 sub_8127F64(struct Sprite *sprite) { return (sprite->data0 & 0xF0) >> 4; } @@ -1028,3 +1028,14 @@ void sub_8127F7C(struct Sprite *sprite) sub_81280A0(mapObject, linkedSprite, sprite); sprite->oam.priority = linkedSprite->oam.priority; } + +static void sub_8127FD4(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 unk_8041E54[ARRAY_COUNT(gUnknown_08401E54)]; + + memcpy(unk_8041E54, gUnknown_08401E54, sizeof gUnknown_08401E54); + if (sub_8127F64(sprite) == 0) + { + StartSpriteAnimIfDifferent(sprite, unk_8041E54[mapObject->placeholder18]); + } +} -- cgit v1.2.3 From a7ca32afb7614e73e9d50cec39c3140451ed9788 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 10 Sep 2017 10:12:16 -0400 Subject: sub_812800C --- asm/field_effect_helpers.s | 80 --------------------------------- src/field_effect_helpers.c | 107 ++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 106 insertions(+), 81 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index f97345c05..e9dcd9d89 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,86 +6,6 @@ .text - thumb_func_start sub_812800C -sub_812800C: @ 812800C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r1, 0 - ldrh r2, [r0, 0x10] - mov r1, sp - strh r2, [r1] - ldrh r1, [r0, 0x12] - mov r0, sp - adds r0, 0x2 - strh r1, [r0] - movs r2, 0x26 - ldrsh r3, [r4, r2] - mov r8, r0 - cmp r3, 0 - bne _08128094 - mov r0, sp - movs r5, 0 - ldrsh r2, [r0, r5] - movs r5, 0x3A - ldrsh r0, [r4, r5] - cmp r2, r0 - bne _08128048 - lsls r0, r1, 16 - asrs r0, 16 - movs r5, 0x3C - ldrsh r1, [r4, r5] - cmp r0, r1 - beq _08128094 -_08128048: - strh r3, [r4, 0x38] - strh r2, [r4, 0x3A] - mov r1, r8 - movs r2, 0 - ldrsh r0, [r1, r2] - strh r0, [r4, 0x3C] - movs r5, 0x1 - mov r7, r8 - mov r6, sp -_0812805A: - adds r0, r5, 0 - mov r1, sp - adds r2, r7, 0 - bl MoveCoords - movs r1, 0 - ldrsh r0, [r6, r1] - movs r2, 0 - ldrsh r1, [r7, r2] - bl MapGridGetZCoordAt - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _08128080 - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - b _08128094 -_08128080: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldrh r0, [r4, 0x3A] - strh r0, [r6] - ldrh r0, [r4, 0x3C] - mov r1, r8 - strh r0, [r1] - cmp r5, 0x4 - bls _0812805A -_08128094: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_812800C - thumb_func_start sub_81280A0 sub_81280A0: @ 81280A0 push {r4,r5,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index b764c9f57..3d53db9fd 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -35,7 +35,7 @@ static void sub_8127E30(struct Sprite *); /*static*/ void sub_812882C(struct Sprite *, u8, u8); static void sub_81278D8(struct Sprite *); static void sub_8127FD4(struct MapObject *, struct Sprite *); -/*static*/ void sub_812800C(struct MapObject *, struct Sprite *); +static void sub_812800C(struct MapObject *, struct Sprite *); /*static*/ void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *); // .rodata @@ -1039,3 +1039,108 @@ static void sub_8127FD4(struct MapObject *mapObject, struct Sprite *sprite) StartSpriteAnimIfDifferent(sprite, unk_8041E54[mapObject->placeholder18]); } } + +#ifdef NONMATCHING +static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite) +{ + s16 x; + s16 y; + u8 i; + + x = mapObject->coords2.x; + y = mapObject->coords2.y; + if (sprite->pos2.y == 0 && (x != sprite->data6 || y != sprite->data7)) + { + sprite->data5 = sprite->pos2.y; + for (sprite->data6 = x, sprite->data7 = y, i = DIR_SOUTH; i <= DIR_EAST; i ++, x = sprite->data6, y = sprite->data7) + { + MoveCoords(i, &x, &y); + if (MapGridGetZCoordAt(x, y) == 3) + { + sprite->data5 ++; + break; + } + } + } +} +#else +__attribute__((naked)) static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r8\n" + "\tpush {r7}\n" + "\tsub sp, 0x4\n" + "\tadds r4, r1, 0\n" + "\tldrh r2, [r0, 0x10]\n" + "\tmov r1, sp\n" + "\tstrh r2, [r1]\n" + "\tldrh r1, [r0, 0x12]\n" + "\tmov r0, sp\n" + "\tadds r0, 0x2\n" + "\tstrh r1, [r0]\n" + "\tmovs r2, 0x26\n" + "\tldrsh r3, [r4, r2]\n" + "\tmov r8, r0\n" + "\tcmp r3, 0\n" + "\tbne _08128094\n" + "\tmov r0, sp\n" + "\tmovs r5, 0\n" + "\tldrsh r2, [r0, r5]\n" + "\tmovs r5, 0x3A\n" + "\tldrsh r0, [r4, r5]\n" + "\tcmp r2, r0\n" + "\tbne _08128048\n" + "\tlsls r0, r1, 16\n" + "\tasrs r0, 16\n" + "\tmovs r5, 0x3C\n" + "\tldrsh r1, [r4, r5]\n" + "\tcmp r0, r1\n" + "\tbeq _08128094\n" + "_08128048:\n" + "\tstrh r3, [r4, 0x38]\n" + "\tstrh r2, [r4, 0x3A]\n" + "\tmov r1, r8\n" + "\tmovs r2, 0\n" + "\tldrsh r0, [r1, r2]\n" + "\tstrh r0, [r4, 0x3C]\n" + "\tmovs r5, 0x1\n" + "\tmov r7, r8\n" + "\tmov r6, sp\n" + "_0812805A:\n" + "\tadds r0, r5, 0\n" + "\tmov r1, sp\n" + "\tadds r2, r7, 0\n" + "\tbl MoveCoords\n" + "\tmovs r1, 0\n" + "\tldrsh r0, [r6, r1]\n" + "\tmovs r2, 0\n" + "\tldrsh r1, [r7, r2]\n" + "\tbl MapGridGetZCoordAt\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x3\n" + "\tbne _08128080\n" + "\tldrh r0, [r4, 0x38]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r4, 0x38]\n" + "\tb _08128094\n" + "_08128080:\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r5, r0, 24\n" + "\tldrh r0, [r4, 0x3A]\n" + "\tstrh r0, [r6]\n" + "\tldrh r0, [r4, 0x3C]\n" + "\tmov r1, r8\n" + "\tstrh r0, [r1]\n" + "\tcmp r5, 0x4\n" + "\tbls _0812805A\n" + "_08128094:\n" + "\tadd sp, 0x4\n" + "\tpop {r3}\n" + "\tmov r8, r3\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0"); +} +#endif -- cgit v1.2.3 From 4645837cc2ce36c9638853552649f182486af8b2 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 11:17:39 -0400 Subject: sub_81280A0 --- asm/field_effect_helpers.s | 71 ---------------------------------------------- src/field_effect_helpers.c | 35 ++++++++++++++++++++++- 2 files changed, 34 insertions(+), 72 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index e9dcd9d89..af38da6cf 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,77 +6,6 @@ .text - thumb_func_start sub_81280A0 -sub_81280A0: @ 81280A0 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r1, 0 - adds r4, r2, 0 - ldr r1, _08128104 @ =gUnknown_08401E5A - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r4, 0 - bl sub_8127F5C - lsls r0, 24 - lsrs r0, 24 - adds r2, r0, 0 - cmp r2, 0 - beq _0812811A - ldrh r1, [r4, 0x36] - adds r1, 0x1 - strh r1, [r4, 0x36] - movs r3, 0x38 - ldrsh r0, [r4, r3] - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _081280E0 - ldrh r0, [r4, 0x34] - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] -_081280E0: - ldrh r1, [r4, 0x36] - movs r0, 0xF - ands r0, r1 - cmp r0, 0 - bne _081280F0 - ldrh r0, [r4, 0x34] - negs r0, r0 - strh r0, [r4, 0x34] -_081280F0: - cmp r2, 0x2 - beq _0812811A - adds r0, r4, 0 - bl sub_8127F70 - lsls r0, 24 - cmp r0, 0 - bne _08128108 - ldrh r0, [r4, 0x26] - b _0812810E - .align 2, 0 -_08128104: .4byte gUnknown_08401E5A -_08128108: - ldrh r0, [r4, 0x26] - ldrh r3, [r4, 0x30] - adds r0, r3 -_0812810E: - strh r0, [r5, 0x26] - ldrh r0, [r5, 0x20] - strh r0, [r4, 0x20] - ldrh r0, [r5, 0x22] - adds r0, 0x8 - strh r0, [r4, 0x22] -_0812811A: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_81280A0 - thumb_func_start sub_8128124 sub_8128124: @ 8128124 push {r4,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 3d53db9fd..6bfb7f3fb 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -332,7 +332,7 @@ void unc_grass_normal(struct Sprite *sprite) u8 localId; u8 mapObjectId; struct MapObject *mapObject; - + mapNum = sprite->data5 >> 8; mapGroup = sprite->data5; if (gCamera.field_0 && (gSaveBlock1.location.mapNum != mapNum || gSaveBlock1.location.mapGroup != mapGroup)) @@ -1144,3 +1144,36 @@ __attribute__((naked)) static void sub_812800C(struct MapObject *mapObject, stru "\tbx r0"); } #endif + +void sub_81280A0(struct MapObject *mapObject, struct Sprite *linkedSprite, struct Sprite *sprite) +{ + u16 unk_8401E5A[ARRAY_COUNT(gUnknown_08401E5A)]; + u8 v0; + + memcpy(unk_8401E5A, gUnknown_08401E5A, sizeof gUnknown_08401E5A); + v0 = sub_8127F5C(sprite); + if (v0 != 0) + { + if (((u16)(++ sprite->data4) & unk_8401E5A[sprite->data5]) == 0) + { + sprite->pos2.y += sprite->data3; + } + if ((sprite->data4 & 0x0F) == 0) + { + sprite->data3 = -sprite->data3; + } + if (v0 != 2) + { + if (sub_8127F70(sprite) == 0) + { + linkedSprite->pos2.y = sprite->pos2.y; + } + else + { + linkedSprite->pos2.y = sprite->data1 + sprite->pos2.y; + } + sprite->pos1.x = linkedSprite->pos1.x; + sprite->pos1.y = linkedSprite->pos1.y + 8; + } + } +} -- cgit v1.2.3 From 64dc157df603a6d3c1b59a60ad9f286ebd66fce5 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 11:21:54 -0400 Subject: sub_8128124 --- asm/field_effect_helpers.s | 40 ---------------------------------------- include/sprite.h | 2 ++ src/field_effect_helpers.c | 19 +++++++++++++++++-- 3 files changed, 19 insertions(+), 42 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index af38da6cf..337eaa4c8 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,46 +6,6 @@ .text - thumb_func_start sub_8128124 -sub_8128124: @ 8128124 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _08128168 @ =gDummySpriteTemplate - movs r1, 0 - movs r2, 0 - movs r3, 0xFF - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r1, _0812816C @ =gSprites - adds r2, r1 - ldr r1, _08128170 @ =sub_8128174 - str r1, [r2, 0x1C] - movs r1, 0x3E - adds r1, r2 - mov r12, r1 - ldrb r1, [r1] - movs r3, 0x4 - orrs r1, r3 - mov r3, r12 - strb r1, [r3] - strh r4, [r2, 0x2E] - movs r1, 0x1 - strh r1, [r2, 0x30] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08128168: .4byte gDummySpriteTemplate -_0812816C: .4byte gSprites -_08128170: .4byte sub_8128174 - thumb_func_end sub_8128124 - thumb_func_start sub_8128174 sub_8128174: @ 8128174 push {lr} diff --git a/include/sprite.h b/include/sprite.h index 5682a7c1d..0d84c8127 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -299,4 +299,6 @@ u8 SpriteTileAllocBitmapOp(u16 bit, u8 op); extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[]; +extern const struct SpriteTemplate gDummySpriteTemplate; + #endif // GUARD_SPRITE_H diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 6bfb7f3fb..e58fb9b31 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -36,7 +36,8 @@ static void sub_8127E30(struct Sprite *); static void sub_81278D8(struct Sprite *); static void sub_8127FD4(struct MapObject *, struct Sprite *); static void sub_812800C(struct MapObject *, struct Sprite *); -/*static*/ void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *); +static void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *); +/*static*/ void sub_8128174(struct Sprite *); // .rodata @@ -1145,7 +1146,7 @@ __attribute__((naked)) static void sub_812800C(struct MapObject *mapObject, stru } #endif -void sub_81280A0(struct MapObject *mapObject, struct Sprite *linkedSprite, struct Sprite *sprite) +static void sub_81280A0(struct MapObject *mapObject, struct Sprite *linkedSprite, struct Sprite *sprite) { u16 unk_8401E5A[ARRAY_COUNT(gUnknown_08401E5A)]; u8 v0; @@ -1177,3 +1178,17 @@ void sub_81280A0(struct MapObject *mapObject, struct Sprite *linkedSprite, struc } } } + +u8 sub_8128124(u8 oldSpriteId) +{ + u8 spriteId; + struct Sprite *sprite; + + spriteId = CreateSpriteAtEnd(&gDummySpriteTemplate, 0, 0, -1); + sprite = &gSprites[spriteId]; + sprite->callback = sub_8128174; + sprite->invisible = TRUE; + sprite->data0 = oldSpriteId; + sprite->data1 = 1; + return spriteId; +} -- cgit v1.2.3 From dd3edfd0c259f0c6edf481b13b1280cd566bfd31 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 11:29:02 -0400 Subject: sub_8128174 --- asm/field_effect_helpers.s | 38 -------------------------------------- src/field_effect_helpers.c | 17 ++++++++++++++++- 2 files changed, 16 insertions(+), 39 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 337eaa4c8..f6834e04a 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,44 +6,6 @@ .text - thumb_func_start sub_8128174 -sub_8128174: @ 8128174 - push {lr} - adds r2, r0, 0 - movs r0, 0x2E - ldrsh r1, [r2, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _081281B0 @ =gSprites - adds r3, r0, r1 - ldrh r1, [r2, 0x32] - adds r0, r1, 0x1 - strh r0, [r2, 0x32] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - bne _0812819C - ldrh r0, [r2, 0x30] - ldrh r1, [r3, 0x26] - adds r0, r1 - strh r0, [r3, 0x26] -_0812819C: - ldrh r1, [r2, 0x32] - movs r0, 0xF - ands r0, r1 - cmp r0, 0 - bne _081281AC - ldrh r0, [r2, 0x30] - negs r0, r0 - strh r0, [r2, 0x30] -_081281AC: - pop {r0} - bx r0 - .align 2, 0 -_081281B0: .4byte gSprites - thumb_func_end sub_8128174 - thumb_func_start FldEff_Dust FldEff_Dust: @ 81281B4 push {r4,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index e58fb9b31..95d7ff0b1 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -37,7 +37,7 @@ static void sub_81278D8(struct Sprite *); static void sub_8127FD4(struct MapObject *, struct Sprite *); static void sub_812800C(struct MapObject *, struct Sprite *); static void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *); -/*static*/ void sub_8128174(struct Sprite *); +static void sub_8128174(struct Sprite *); // .rodata @@ -1192,3 +1192,18 @@ u8 sub_8128124(u8 oldSpriteId) sprite->data1 = 1; return spriteId; } + +static void sub_8128174(struct Sprite *sprite) +{ + struct Sprite *oldSprite; + + oldSprite = &gSprites[sprite->data0]; + if (((sprite->data2++) & 0x03) == 0) + { + oldSprite->pos2.y += sprite->data1; + } + if ((sprite->data2 & 0x0F) == 0) + { + sprite->data1 = -sprite->data1; + } +} -- cgit v1.2.3 From 14c3e4c2cc30d940584c5cf3de976639317ef0fe Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 11:31:49 -0400 Subject: FldEff_Dust --- asm/field_effect_helpers.s | 57 ---------------------------------------------- src/field_effect_helpers.c | 18 +++++++++++++++ 2 files changed, 18 insertions(+), 57 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index f6834e04a..65cac1551 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,63 +6,6 @@ .text - thumb_func_start FldEff_Dust -FldEff_Dust: @ 81281B4 - push {r4,lr} - ldr r4, _08128218 @ =gFieldEffectSpawnParams - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0xC - bl sub_8060470 - ldr r0, _0812821C @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x24] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _08128210 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _08128220 @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r4, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - ldr r0, [r4, 0x8] - strh r0, [r2, 0x2E] - movs r0, 0xA - strh r0, [r2, 0x30] -_08128210: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08128218: .4byte gFieldEffectSpawnParams -_0812821C: .4byte gFieldEffectObjectTemplatePointers -_08128220: .4byte gSprites - thumb_func_end FldEff_Dust - thumb_func_start FldEff_SandPile FldEff_SandPile: @ 8128224 push {r4-r7,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 95d7ff0b1..3f372b4ee 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1207,3 +1207,21 @@ static void sub_8128174(struct Sprite *sprite) sprite->data1 = -sprite->data1; } } + +u8 FldEff_Dust(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 12); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[9], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->data1 = 10; + } + return 0; +} -- cgit v1.2.3 From 25c274e171b6bd9d2de2d1b457329619517e7749 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 11:36:40 -0400 Subject: FldEff_SandPile --- asm/field_effect_helpers.s | 92 ---------------------------------------------- src/field_effect_helpers.c | 28 ++++++++++++++ 2 files changed, 28 insertions(+), 92 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 65cac1551..1c799bc49 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,98 +6,6 @@ .text - thumb_func_start FldEff_SandPile -FldEff_SandPile: @ 8128224 - push {r4-r7,lr} - ldr r7, _081282D0 @ =gFieldEffectSpawnParams - ldrb r0, [r7] - ldrb r1, [r7, 0x4] - ldrb r2, [r7, 0x8] - bl GetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, _081282D4 @ =gMapObjects - adds r6, r1, r0 - ldr r0, _081282D8 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x74] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x40 - beq _081282C8 - ldrb r0, [r6, 0x5] - bl GetFieldObjectGraphicsInfo - adds r5, r0, 0 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r4, _081282DC @ =gSprites - adds r0, r4 - adds r3, r0, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r3] - ldrb r2, [r6, 0x4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldrb r1, [r1, 0x5] - movs r2, 0xC - ands r2, r1 - ldrb r3, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r3 - orrs r1, r2 - strb r1, [r0, 0x5] - ldr r1, [r7] - strh r1, [r0, 0x2E] - ldr r1, [r7, 0x4] - strh r1, [r0, 0x30] - ldr r1, [r7, 0x8] - strh r1, [r0, 0x32] - ldrb r2, [r6, 0x4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldrh r1, [r1, 0x20] - strh r1, [r0, 0x34] - ldrb r2, [r6, 0x4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldrh r1, [r1, 0x22] - strh r1, [r0, 0x36] - ldrh r1, [r5, 0xA] - lsls r1, 16 - asrs r1, 17 - subs r1, 0x2 - strh r1, [r0, 0x26] - movs r1, 0x2 - bl SeekSpriteAnim -_081282C8: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_081282D0: .4byte gFieldEffectSpawnParams -_081282D4: .4byte gMapObjects -_081282D8: .4byte gFieldEffectObjectTemplatePointers -_081282DC: .4byte gSprites - thumb_func_end FldEff_SandPile - thumb_func_start sub_81282E0 sub_81282E0: @ 81282E0 push {r4-r6,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 3f372b4ee..3cb89a7dc 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1225,3 +1225,31 @@ u8 FldEff_Dust(void) } return 0; } + +u8 FldEff_SandPile(void) +{ + u8 mapObjectId; + struct MapObject *mapObject; + u8 spriteId; + struct Sprite *sprite; + const struct MapObjectGraphicsInfo *graphicsInfo; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + mapObject = &gMapObjects[mapObjectId]; + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[29], 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; + sprite->data0 = gFieldEffectSpawnParams[0]; + sprite->data1 = gFieldEffectSpawnParams[1]; + sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data3 = gSprites[mapObject->spriteId].pos1.x; + sprite->data4 = gSprites[mapObject->spriteId].pos1.y; + sprite->pos2.y = (graphicsInfo->height >> 1) - 2; + SeekSpriteAnim(sprite, 2); + } + return 0; +} -- cgit v1.2.3 From 477be592a40837c532723be07a5d792e5a6ad703 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 11:42:24 -0400 Subject: sub_81282E0 --- asm/field_effect_helpers.s | 105 --------------------------------------------- src/field_effect_helpers.c | 30 +++++++++++++ 2 files changed, 30 insertions(+), 105 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 1c799bc49..4630bf6b2 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,111 +6,6 @@ .text - thumb_func_start sub_81282E0 -sub_81282E0: @ 81282E0 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r4, 0x32] - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _0812831A - ldr r2, _08128324 @ =gMapObjects - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - ldrb r0, [r1, 0x2] - lsls r0, 27 - cmp r0, 0 - blt _08128328 -_0812831A: - adds r0, r4, 0 - movs r1, 0x27 - bl FieldEffectStop - b _0812839A - .align 2, 0 -_08128324: .4byte gMapObjects -_08128328: - ldr r2, _081283A4 @ =gSprites - ldrb r1, [r1, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r5, [r0, 0x22] - ldrh r6, [r0, 0x20] - movs r2, 0x20 - ldrsh r1, [r0, r2] - movs r2, 0x34 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _08128350 - lsls r0, r5, 16 - asrs r0, 16 - movs r2, 0x36 - ldrsh r1, [r4, r2] - cmp r0, r1 - beq _0812836A -_08128350: - strh r6, [r4, 0x34] - strh r5, [r4, 0x36] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0812836A - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnim -_0812836A: - strh r6, [r4, 0x20] - strh r5, [r4, 0x22] - ldr r3, _081283A4 @ =gSprites - ldr r2, _081283A8 @ =gMapObjects - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x43 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0 - bl sub_806487C -_0812839A: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081283A4: .4byte gSprites -_081283A8: .4byte gMapObjects - thumb_func_end sub_81282E0 - thumb_func_start FldEff_Bubbles FldEff_Bubbles: @ 81283AC push {r4,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 3cb89a7dc..367d08cc0 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1253,3 +1253,33 @@ u8 FldEff_SandPile(void) } return 0; } + +void sub_81282E0(struct Sprite *sprite) +{ + u8 mapObjectId; + s16 x; + s16 y; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_20) + { + FieldEffectStop(sprite, FLDEFF_SAND_PILE); + } + else + { + y = gSprites[gMapObjects[mapObjectId].spriteId].pos1.y; + x = gSprites[gMapObjects[mapObjectId].spriteId].pos1.x; + if (x != sprite->data3 || y != sprite->data4) + { + sprite->data3 = x; + sprite->data4 = y; + if (sprite->animEnded) + { + StartSpriteAnim(sprite, 0); + } + } + sprite->pos1.x = x; + sprite->pos1.y = y; + sprite->subpriority = gSprites[gMapObjects[mapObjectId].spriteId].subpriority; + sub_806487C(sprite, FALSE); + } +} -- cgit v1.2.3 From 7b42ee1259d243cecd4d997c8f784c5e9fecd8dd Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 11:45:03 -0400 Subject: FldEff_Bubbles --- asm/field_effect_helpers.s | 51 ---------------------------------------------- src/field_effect_helpers.c | 16 +++++++++++++++ 2 files changed, 16 insertions(+), 51 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 4630bf6b2..afa84b4fb 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,57 +6,6 @@ .text - thumb_func_start FldEff_Bubbles -FldEff_Bubbles: @ 81283AC - push {r4,lr} - ldr r4, _08128404 @ =gFieldEffectSpawnParams - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0 - bl sub_8060470 - ldr r0, _08128408 @ =gFieldEffectObjectTemplatePointers - adds r0, 0x88 - ldr r0, [r0] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r3, 0x52 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _081283FC - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _0812840C @ =gSprites - adds r1, r0 - adds r3, r1, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r3] - ldrb r2, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1, 0x5] -_081283FC: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08128404: .4byte gFieldEffectSpawnParams -_08128408: .4byte gFieldEffectObjectTemplatePointers -_0812840C: .4byte gSprites - thumb_func_end FldEff_Bubbles - thumb_func_start sub_8128410 sub_8128410: @ 8128410 push {r4,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 367d08cc0..9e240578d 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1283,3 +1283,19 @@ void sub_81282E0(struct Sprite *sprite) sub_806487C(sprite, FALSE); } } + +u8 FldEff_Bubbles(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 0); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[34], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0x52); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = 1; + } + return 0; +} -- cgit v1.2.3 From 3fc4c1f3ab4abe7e6f1e6cff0cc93b012a65c836 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 11:52:15 -0400 Subject: sub_8128410 --- asm/field_effect_helpers.s | 34 ---------------------------------- src/field_effect_helpers.c | 12 ++++++++++++ 2 files changed, 12 insertions(+), 34 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index afa84b4fb..7dfc80b10 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,40 +6,6 @@ .text - thumb_func_start sub_8128410 -sub_8128410: @ 8128410 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x80 - movs r1, 0x80 - lsls r1, 1 - ands r0, r1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 24 - ldrh r1, [r4, 0x22] - subs r1, r0 - strh r1, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0 - bl sub_806487C - ldrh r1, [r4, 0x3E] - ldr r0, _0812844C @ =0x00001004 - ands r0, r1 - cmp r0, 0 - beq _08128444 - adds r0, r4, 0 - movs r1, 0x35 - bl FieldEffectStop -_08128444: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812844C: .4byte 0x00001004 - thumb_func_end sub_8128410 - thumb_func_start FldEff_BerryTreeGrowthSparkle FldEff_BerryTreeGrowthSparkle: @ 8128450 push {r4,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 9e240578d..fab0c43eb 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1299,3 +1299,15 @@ u8 FldEff_Bubbles(void) } return 0; } + +void sub_8128410(struct Sprite *sprite) +{ + sprite->data0 += 0x80; + sprite->data0 &= 0x100; + sprite->pos1.y -= sprite->data0 >> 8; + sub_806487C(sprite, FALSE); + if (sprite->invisible || sprite->animEnded) + { + FieldEffectStop(sprite, FLDEFF_BUBBLES); + } +} -- cgit v1.2.3 From ad5a3e758fab2a51b1624e51834cd1ef04977cd1 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 11:57:03 -0400 Subject: FldEff_BerryTreeGrowthSparkle --- asm/field_effect_helpers.s | 59 ---------------------------------------------- src/field_effect_helpers.c | 18 ++++++++++++++ 2 files changed, 18 insertions(+), 59 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 7dfc80b10..c5a2a0308 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,65 +6,6 @@ .text - thumb_func_start FldEff_BerryTreeGrowthSparkle -FldEff_BerryTreeGrowthSparkle: @ 8128450 - push {r4,lr} - ldr r4, _081284B8 @ =gFieldEffectSpawnParams - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x4 - bl sub_8060470 - ldr r0, _081284BC @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x58] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - ldrb r3, [r4, 0x8] - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _081284B0 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _081284C0 @ =gSprites - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x3 - ldrb r1, [r4, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - movs r1, 0xF - ands r0, r1 - movs r1, 0x50 - orrs r0, r1 - strb r0, [r2, 0x5] - movs r0, 0x17 - strh r0, [r2, 0x2E] -_081284B0: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_081284B8: .4byte gFieldEffectSpawnParams -_081284BC: .4byte gFieldEffectObjectTemplatePointers -_081284C0: .4byte gSprites - thumb_func_end FldEff_BerryTreeGrowthSparkle - thumb_func_start FldEff_TreeDisguise FldEff_TreeDisguise: @ 81284C4 push {lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index fab0c43eb..347eb18a5 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1311,3 +1311,21 @@ void sub_8128410(struct Sprite *sprite) FieldEffectStop(sprite, FLDEFF_BUBBLES); } } + +u8 FldEff_BerryTreeGrowthSparkle(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 4); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[22], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->oam.paletteNum = 5; + sprite->data0 = FLDEFF_BERRY_TREE_GROWTH_SPARKLE; + } + return 0; +} -- cgit v1.2.3 From dc1f3024931e92253f36f0b150fb177e418392ea Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 12:07:57 -0400 Subject: Disguise effects --- asm/field_effect_helpers.s | 128 --------------------------------------------- src/field_effect_helpers.c | 94 ++++++++++++++++++++++++--------- 2 files changed, 69 insertions(+), 153 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index c5a2a0308..adb0e2ec2 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,134 +6,6 @@ .text - thumb_func_start FldEff_TreeDisguise -FldEff_TreeDisguise: @ 81284C4 - push {lr} - movs r0, 0x1C - movs r1, 0x18 - movs r2, 0x4 - bl ShowDisguiseFieldEffect - pop {r1} - bx r1 - thumb_func_end FldEff_TreeDisguise - - thumb_func_start FldEff_MountainDisguise -FldEff_MountainDisguise: @ 81284D4 - push {lr} - movs r0, 0x1D - movs r1, 0x19 - movs r2, 0x3 - bl ShowDisguiseFieldEffect - pop {r1} - bx r1 - thumb_func_end FldEff_MountainDisguise - - thumb_func_start FldEff_SandDisguise -FldEff_SandDisguise: @ 81284E4 - push {lr} - movs r0, 0x24 - movs r1, 0x1C - movs r2, 0x2 - bl ShowDisguiseFieldEffect - pop {r1} - bx r1 - thumb_func_end FldEff_SandDisguise - - thumb_func_start ShowDisguiseFieldEffect -ShowDisguiseFieldEffect: @ 81284F4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - mov r8, r4 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r7, r2, 24 - ldr r5, _08128528 @ =gFieldEffectSpawnParams - ldrb r0, [r5] - ldrb r1, [r5, 0x4] - ldrb r2, [r5, 0x8] - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - beq _0812852C - adds r0, r4, 0 - bl FieldEffectActiveListRemove - movs r0, 0x40 - b _08128598 - .align 2, 0 -_08128528: .4byte gFieldEffectSpawnParams -_0812852C: - ldr r1, _081285A4 @ =gFieldEffectObjectTemplatePointers - lsls r0, r6, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSpriteAtEnd - mov r1, sp - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _08128594 - mov r0, sp - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _081285A8 @ =gSprites - adds r2, r0 - movs r0, 0x3E - adds r0, r2 - mov r12, r0 - ldrb r3, [r0] - lsls r1, r3, 30 - lsrs r1, 31 - adds r1, 0x1 - movs r0, 0x1 - ands r1, r0 - lsls r1, 1 - movs r0, 0x3 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - lsls r3, r7, 4 - ldrb r1, [r2, 0x5] - movs r0, 0xF - ands r0, r1 - orrs r0, r3 - strb r0, [r2, 0x5] - mov r0, r8 - strh r0, [r2, 0x30] - ldr r0, [r5] - strh r0, [r2, 0x32] - ldr r0, [r5, 0x4] - strh r0, [r2, 0x34] - ldr r0, [r5, 0x8] - strh r0, [r2, 0x36] -_08128594: - mov r0, sp - ldrb r0, [r0] -_08128598: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_081285A4: .4byte gFieldEffectObjectTemplatePointers -_081285A8: .4byte gSprites - thumb_func_end ShowDisguiseFieldEffect - thumb_func_start sub_81285AC sub_81285AC: @ 81285AC push {r4,r5,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 347eb18a5..da406daeb 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -38,6 +38,7 @@ static void sub_8127FD4(struct MapObject *, struct Sprite *); static void sub_812800C(struct MapObject *, struct Sprite *); static void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *); static void sub_8128174(struct Sprite *); +static u32 ShowDisguiseFieldEffect(u8, u8, u8); // .rodata @@ -251,7 +252,7 @@ void sub_8126BC4(u8 spriteId, u8 animNum, s16 x, s16 y) } } -u8 FldEff_Shadow(void) +u32 FldEff_Shadow(void) { u8 mapObjectId; const struct MapObjectGraphicsInfo *graphicsInfo; @@ -295,7 +296,7 @@ void oamc_shadow(struct Sprite *sprite) } } -u8 FldEff_TallGrass(void) +u32 FldEff_TallGrass(void) { s16 x; s16 y; @@ -367,7 +368,7 @@ void unc_grass_normal(struct Sprite *sprite) } } -u8 FldEff_JumpTallGrass(void) +u32 FldEff_JumpTallGrass(void) { u8 spriteId; struct Sprite *sprite; @@ -404,7 +405,7 @@ u8 sub_8126FF0(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y) return MAX_SPRITES; } -u8 FldEff_LongGrass(void) +u32 FldEff_LongGrass(void) { s16 x; s16 y; @@ -471,7 +472,7 @@ void unc_grass_tall(struct Sprite *sprite) } } -u8 FldEff_JumpLongGrass(void) +u32 FldEff_JumpLongGrass(void) { u8 spriteId; struct Sprite *sprite; @@ -489,7 +490,7 @@ u8 FldEff_JumpLongGrass(void) return 0; } -u8 FldEff_ShortGrass(void) +u32 FldEff_ShortGrass(void) { u8 mapObjectId; struct MapObject *mapObject; @@ -549,7 +550,7 @@ void sub_8127334(struct Sprite *sprite) } } -u8 FldEff_SandFootprints(void) +u32 FldEff_SandFootprints(void) { u8 spriteId; struct Sprite *sprite; @@ -567,7 +568,7 @@ u8 FldEff_SandFootprints(void) return 0; } -u8 FldEff_DeepSandFootprints(void) +u32 FldEff_DeepSandFootprints(void) { u8 spriteId; struct Sprite *sprite; @@ -585,7 +586,7 @@ u8 FldEff_DeepSandFootprints(void) return spriteId; } -u8 FldEff_BikeTireTracks(void) +u32 FldEff_BikeTireTracks(void) { u8 spriteId; struct Sprite *sprite; @@ -628,7 +629,7 @@ static void sub_81275C4(struct Sprite *sprite) } } -u8 FldEff_Splash(void) +u32 FldEff_Splash(void) { u8 mapObjectId; struct MapObject *mapObject; @@ -672,7 +673,7 @@ void sub_81276B4(struct Sprite *sprite) } } -u8 FldEff_JumpSmallSplash(void) +u32 FldEff_JumpSmallSplash(void) { u8 spriteId; struct Sprite *sprite; @@ -690,7 +691,7 @@ u8 FldEff_JumpSmallSplash(void) return 0; } -u8 FldEff_JumpBigSplash(void) +u32 FldEff_JumpBigSplash(void) { u8 spriteId; struct Sprite *sprite; @@ -708,7 +709,7 @@ u8 FldEff_JumpBigSplash(void) return 0; } -u8 FldEff_FeetInFlowingWater(void) +u32 FldEff_FeetInFlowingWater(void) { u8 mapObjectId; struct MapObject *mapObject; @@ -767,7 +768,7 @@ static void sub_81278D8(struct Sprite *sprite) } } -u8 FldEff_Ripple(void) +u32 FldEff_Ripple(void) { u8 spriteId; struct Sprite *sprite; @@ -783,7 +784,7 @@ u8 FldEff_Ripple(void) return 0; } -u8 FldEff_HotSpringsWater(void) +u32 FldEff_HotSpringsWater(void) { u8 mapObjectId; struct MapObject *mapObject; @@ -828,7 +829,7 @@ void sub_8127A7C(struct Sprite *sprite) } } -u8 FldEff_Unknown19(void) +u32 FldEff_Unknown19(void) { u8 spriteId; struct Sprite *sprite; @@ -845,7 +846,7 @@ u8 FldEff_Unknown19(void) return 0; } -u8 FldEff_Unknown20(void) +u32 FldEff_Unknown20(void) { u8 spriteId; struct Sprite *sprite; @@ -862,7 +863,7 @@ u8 FldEff_Unknown20(void) return 0; } -u8 FldEff_Unknown21(void) +u32 FldEff_Unknown21(void) { u8 spriteId; struct Sprite *sprite; @@ -879,7 +880,7 @@ u8 FldEff_Unknown21(void) return 0; } -u8 FldEff_Unknown22(void) +u32 FldEff_Unknown22(void) { u8 spriteId; struct Sprite *sprite; @@ -907,7 +908,7 @@ void ash(s16 x, s16 y, u16 c, s16 d) FieldEffectStart(FLDEFF_ASH); } -u8 FldEff_Ash(void) +u32 FldEff_Ash(void) { s16 x; s16 y; @@ -965,7 +966,7 @@ static void sub_8127E30(struct Sprite *sprite) } } -u8 FldEff_SurfBlob(void) +u32 FldEff_SurfBlob(void) { u8 spriteId; struct Sprite *sprite; @@ -1208,7 +1209,7 @@ static void sub_8128174(struct Sprite *sprite) } } -u8 FldEff_Dust(void) +u32 FldEff_Dust(void) { u8 spriteId; struct Sprite *sprite; @@ -1226,7 +1227,7 @@ u8 FldEff_Dust(void) return 0; } -u8 FldEff_SandPile(void) +u32 FldEff_SandPile(void) { u8 mapObjectId; struct MapObject *mapObject; @@ -1284,7 +1285,7 @@ void sub_81282E0(struct Sprite *sprite) } } -u8 FldEff_Bubbles(void) +u32 FldEff_Bubbles(void) { u8 spriteId; struct Sprite *sprite; @@ -1312,7 +1313,7 @@ void sub_8128410(struct Sprite *sprite) } } -u8 FldEff_BerryTreeGrowthSparkle(void) +u32 FldEff_BerryTreeGrowthSparkle(void) { u8 spriteId; struct Sprite *sprite; @@ -1329,3 +1330,46 @@ u8 FldEff_BerryTreeGrowthSparkle(void) } return 0; } + +u32 FldEff_TreeDisguise(void) +{ + return ShowDisguiseFieldEffect(FLDEFF_TREE_DISGUISE, 0x18, 0x04); +} + + +u32 FldEff_MountainDisguise(void) +{ + return ShowDisguiseFieldEffect(FLDEFF_MOUNTAIN_DISGUISE, 0x19, 0x03); +} + + +u32 FldEff_SandDisguise(void) +{ + return ShowDisguiseFieldEffect(FLDEFF_SAND_DISGUISE, 0x1C, 0x02); +} + +static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum) +{ + u8 spriteId; + struct Sprite *sprite; + + if (TryGetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2], &spriteId)) + { + FieldEffectActiveListRemove(fldEff); + return MAX_SPRITES; + } + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[templateIdx], 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled ++; + sprite->oam.paletteNum = paletteNum; + sprite->data1 = fldEff; + sprite->data2 = gFieldEffectSpawnParams[0]; + sprite->data3 = gFieldEffectSpawnParams[1]; + sprite->data4 = gFieldEffectSpawnParams[2]; + } + return spriteId; +} + + -- cgit v1.2.3 From e15b0256fe3c2e8713f185c1083629d51bd4cd3a Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 12:15:19 -0400 Subject: sub_81285AC --- asm/field_effect_helpers.s | 122 --------------------------------------------- src/field_effect_helpers.c | 32 ++++++++++++ 2 files changed, 32 insertions(+), 122 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index adb0e2ec2..ffb23afeb 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,128 +6,6 @@ .text - thumb_func_start sub_81285AC -sub_81285AC: @ 81285AC - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - ldrh r0, [r5, 0x32] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r5, 0x34] - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r5, 0x36] - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - beq _081285DC - ldrh r1, [r5, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl FieldEffectStop -_081285DC: - ldr r4, _08128694 @ =gMapObjects - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x5] - bl GetFieldObjectGraphicsInfo - mov r1, sp - ldrb r2, [r1] - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldrb r1, [r1, 0x4] - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - ldr r1, _08128698 @ =gSprites - adds r2, r1 - adds r1, r2, 0 - adds r1, 0x3E - ldrb r1, [r1] - movs r3, 0x3E - adds r3, r5 - mov r12, r3 - movs r3, 0x4 - ands r3, r1 - mov r1, r12 - ldrb r4, [r1] - movs r1, 0x5 - negs r1, r1 - ands r1, r4 - orrs r1, r3 - mov r3, r12 - strb r1, [r3] - ldrh r1, [r2, 0x20] - strh r1, [r5, 0x20] - ldrh r0, [r0, 0xA] - lsls r0, 16 - asrs r0, 17 - ldrh r1, [r2, 0x22] - adds r0, r1 - subs r0, 0x10 - strh r0, [r5, 0x22] - adds r2, 0x43 - ldrb r0, [r2] - subs r0, 0x1 - adds r1, r5, 0 - adds r1, 0x43 - strb r0, [r1] - ldrh r1, [r5, 0x2E] - movs r2, 0x2E - ldrsh r0, [r5, r2] - cmp r0, 0x1 - bne _0812865C - adds r0, r1, 0x1 - strh r0, [r5, 0x2E] - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAnim -_0812865C: - movs r3, 0x2E - ldrsh r0, [r5, r3] - ldrh r2, [r5, 0x2E] - cmp r0, 0x2 - bne _08128678 - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08128678 - movs r0, 0x1 - strh r0, [r5, 0x3C] -_08128678: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _0812868C - ldrh r1, [r5, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl FieldEffectStop -_0812868C: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08128694: .4byte gMapObjects -_08128698: .4byte gSprites - thumb_func_end sub_81285AC - thumb_func_start sub_812869C sub_812869C: @ 812869C push {lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index da406daeb..151efd400 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1372,4 +1372,36 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum) return spriteId; } +void sub_81285AC(struct Sprite *sprite) +{ + u8 mapObjectId; + const struct MapObjectGraphicsInfo *graphicsInfo; + struct Sprite *linkedSprite; + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data2, sprite->data3, sprite->data4, &mapObjectId)) + { + FieldEffectStop(sprite, sprite->data1); + } + // else { + graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId); + linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId]; + sprite->invisible = linkedSprite->invisible; + sprite->pos1.x = linkedSprite->pos1.x; + sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 16; + sprite->subpriority = linkedSprite->subpriority - 1; + if (sprite->data0 == 1) + { + sprite->data0 ++; + StartSpriteAnim(sprite, 1); + } + if (sprite->data0 == 2 && sprite->animEnded) + { + sprite->data7 = 1; + } + if (sprite->data0 == 3) + { + FieldEffectStop(sprite, sprite->data1); + } + // } + +} -- cgit v1.2.3 From 88ee7928f6868c8bb167e74193902e8cd8eb7ca2 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 12:21:28 -0400 Subject: sub_81286C4 --- asm/field_effect_helpers.s | 61 ---------------------------------------------- src/field_effect_helpers.c | 29 ++++++++++++++++++++++ 2 files changed, 29 insertions(+), 61 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index ffb23afeb..9f7999363 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,67 +6,6 @@ .text - thumb_func_start sub_812869C -sub_812869C: @ 812869C - push {lr} - adds r1, r0, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x1 - bne _081286BA - ldr r2, _081286C0 @ =gSprites - ldrb r1, [r1, 0x1A] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x2E] - adds r1, 0x1 - strh r1, [r0, 0x2E] -_081286BA: - pop {r0} - bx r0 - .align 2, 0 -_081286C0: .4byte gSprites - thumb_func_end sub_812869C - - thumb_func_start sub_81286C4 -sub_81286C4: @ 81286C4 - push {lr} - adds r2, r0, 0 - adds r2, 0x21 - ldrb r1, [r2] - cmp r1, 0x2 - beq _081286FA - cmp r1, 0 - beq _081286FA - ldrb r1, [r0, 0x1A] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _081286EC @ =gSprites - adds r1, r0, r1 - movs r3, 0x3C - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _081286F0 - movs r0, 0 - b _081286FC - .align 2, 0 -_081286EC: .4byte gSprites -_081286F0: - movs r0, 0x2 - strb r0, [r2] - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] -_081286FA: - movs r0, 0x1 -_081286FC: - pop {r1} - bx r1 - thumb_func_end sub_81286C4 - thumb_func_start FldEff_Sparkle FldEff_Sparkle: @ 8128700 push {r4,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 151efd400..de85291f3 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1403,5 +1403,34 @@ void sub_81285AC(struct Sprite *sprite) FieldEffectStop(sprite, sprite->data1); } // } +} + +void sub_812869C(struct MapObject *mapObject) +{ + if (mapObject->mapobj_unk_21 == 1) + { + gSprites[mapObject->mapobj_unk_1A].data0 ++; + } +} + +bool8 sub_81286C4(struct MapObject *mapObject) +{ + struct Sprite *sprite; + if (mapObject->mapobj_unk_21 == 2) + { + return TRUE; + } + if (mapObject->mapobj_unk_21 == 0) + { + return TRUE; + } + sprite = &gSprites[mapObject->mapobj_unk_1A]; + if (sprite->data7) + { + mapObject->mapobj_unk_21 = 2; + sprite->data0 ++; + return TRUE; + } + return FALSE; } -- cgit v1.2.3 From b3bcd2872414a513b286b627d0b7df86b5962e2f Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 12:24:17 -0400 Subject: FldEff_Sparkle --- asm/field_effect_helpers.s | 59 ---------------------------------------------- src/field_effect_helpers.c | 16 +++++++++++++ 2 files changed, 16 insertions(+), 59 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 9f7999363..297182306 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,65 +6,6 @@ .text - thumb_func_start FldEff_Sparkle -FldEff_Sparkle: @ 8128700 - push {r4,lr} - ldr r4, _08128768 @ =gFieldEffectSpawnParams - ldr r0, [r4] - adds r0, 0x7 - str r0, [r4] - ldr r0, [r4, 0x4] - adds r0, 0x7 - str r0, [r4, 0x4] - adds r1, r4, 0x4 - adds r0, r4, 0 - movs r2, 0x8 - movs r3, 0x8 - bl sub_8060470 - ldr r0, _0812876C @ =gFieldEffectObjectTemplatePointers - adds r0, 0x8C - ldr r0, [r0] - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r3, 0x52 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _08128760 - ldr r0, _08128770 @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - movs r0, 0x3 - ldrb r2, [r4, 0x8] - ands r2, r0 - lsls r2, 2 - ldrb r3, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0x5] - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r1] -_08128760: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08128768: .4byte gFieldEffectSpawnParams -_0812876C: .4byte gFieldEffectObjectTemplatePointers -_08128770: .4byte gSprites - thumb_func_end FldEff_Sparkle - thumb_func_start sub_8128774 sub_8128774: @ 8128774 push {lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index de85291f3..c4b48a377 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1434,3 +1434,19 @@ bool8 sub_81286C4(struct MapObject *mapObject) } return FALSE; } + +u32 FldEff_Sparkle(void) +{ + u8 spriteId; + + gFieldEffectSpawnParams[0] += 7; + gFieldEffectSpawnParams[1] += 7; + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[35], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0x52); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.priority = gFieldEffectSpawnParams[2]; + gSprites[spriteId].coordOffsetEnabled = TRUE; + } + return 0; +} -- cgit v1.2.3 From 6a848e2f9d014a7460137fa0e3d0b334867ef416 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 12:27:32 -0400 Subject: sub_8128774 --- asm/field_effect_helpers.s | 45 --------------------------------------------- src/field_effect_helpers.c | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 45 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 297182306..823f80dda 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,51 +6,6 @@ .text - thumb_func_start sub_8128774 -sub_8128774: @ 8128774 - push {lr} - adds r2, r0, 0 - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _081287A8 - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _081287A0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r3] - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] -_081287A0: - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0 - beq _081287BE -_081287A8: - ldrh r0, [r2, 0x30] - adds r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x22 - ble _081287BE - adds r0, r2, 0 - movs r1, 0x36 - bl FieldEffectStop -_081287BE: - pop {r0} - bx r0 - thumb_func_end sub_8128774 - thumb_func_start sub_81287C4 sub_81287C4: @ 81287C4 push {r4,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index c4b48a377..a84746a04 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1450,3 +1450,23 @@ u32 FldEff_Sparkle(void) } return 0; } + +void sub_8128774(struct Sprite *sprite) +{ + if (sprite->data0 == 0) + { + if (sprite->animEnded) + { + sprite->invisible = TRUE; + sprite->data0 ++; + } + if (sprite->data0 == 0) + { + return; + } + } + if (++ sprite->data1 >= 35) + { + FieldEffectStop(sprite, FLDEFF_SPARKLE); + } +} -- cgit v1.2.3 From 6ca5e691bf555cce48719ce666c087dbc86fd28d Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 12:28:51 -0400 Subject: sub_81287C4 --- asm/field_effect_helpers.s | 32 -------------------------------- src/field_effect_helpers.c | 13 +++++++++++++ 2 files changed, 13 insertions(+), 32 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 823f80dda..df3610f42 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,38 +6,6 @@ .text - thumb_func_start sub_81287C4 -sub_81287C4: @ 81287C4 - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _081287E2 - ldrh r1, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldEffectStop - b _081287F8 -_081287E2: - adds r0, r4, 0 - movs r1, 0 - bl sub_806487C - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - movs r2, 0 - bl SetObjectSubpriorityByZCoord -_081287F8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81287C4 - thumb_func_start sub_8128800 sub_8128800: @ 8128800 push {lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index a84746a04..793bef3e2 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1470,3 +1470,16 @@ void sub_8128774(struct Sprite *sprite) FieldEffectStop(sprite, FLDEFF_SPARKLE); } } + +void sub_81287C4(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + FieldEffectStop(sprite, sprite->data1); + } + else + { + sub_806487C(sprite, FALSE); + SetObjectSubpriorityByZCoord(sprite->data0, sprite, 0); + } +} -- cgit v1.2.3 From 7a3708b1f3583d235bcbe1b6022de98a79762dca Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 12:29:54 -0400 Subject: sub_8128800 --- asm/field_effect_helpers.s | 25 ------------------------- src/field_effect_helpers.c | 12 ++++++++++++ 2 files changed, 12 insertions(+), 25 deletions(-) diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index df3610f42..c2582df74 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,31 +6,6 @@ .text - thumb_func_start sub_8128800 -sub_8128800: @ 8128800 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0812881E - ldrh r1, [r2, 0x2E] - lsls r1, 24 - lsrs r1, 24 - adds r0, r2, 0 - bl FieldEffectStop - b _08128826 -_0812881E: - adds r0, r2, 0 - movs r1, 0 - bl sub_806487C -_08128826: - pop {r0} - bx r0 - thumb_func_end sub_8128800 - thumb_func_start sub_812882C sub_812882C: @ 812882C push {r4-r7,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 793bef3e2..9914defe4 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1483,3 +1483,15 @@ void sub_81287C4(struct Sprite *sprite) SetObjectSubpriorityByZCoord(sprite->data0, sprite, 0); } } + +void sub_8128800(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + FieldEffectStop(sprite, sprite->data0); + } + else + { + sub_806487C(sprite, FALSE); + } +} -- cgit v1.2.3 From 7c19038c79cf733b3fc85816c8b8500e1068b6d1 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 13:19:57 -0400 Subject: sub_812882C nonmatching --- asm/field_effect_helpers.s | 113 --------------------------------- ld_script.txt | 1 - src/field_effect_helpers.c | 152 ++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 151 insertions(+), 115 deletions(-) delete mode 100644 asm/field_effect_helpers.s diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s deleted file mode 100644 index c2582df74..000000000 --- a/asm/field_effect_helpers.s +++ /dev/null @@ -1,113 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_812882C -sub_812882C: @ 812882C - push {r4-r7,lr} - adds r6, r0, 0 - adds r0, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r2, 24 - lsrs r2, 24 - adds r1, r6, 0 - bl SetObjectSubpriorityByZCoord - movs r7, 0 -_08128842: - lsls r0, r7, 3 - adds r0, r7 - lsls r0, 2 - ldr r1, _081288DC @ =gMapObjects - adds r4, r0, r1 - ldrb r0, [r4] - lsls r0, 31 - cmp r0, 0 - beq _081288E4 - ldrb r0, [r4, 0x5] - bl GetFieldObjectGraphicsInfo - ldrb r1, [r4, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _081288E0 @ =gSprites - adds r5, r0, r1 - adds r0, r6, 0 - adds r0, 0x28 - movs r2, 0 - ldrsb r2, [r0, r2] - ldrh r0, [r6, 0x20] - adds r1, r0, r2 - subs r0, r2 - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 16 - asrs r1, 16 - movs r0, 0x20 - ldrsh r2, [r5, r0] - cmp r1, r2 - bge _081288E4 - lsls r0, r4, 16 - asrs r0, 16 - cmp r0, r2 - ble _081288E4 - adds r0, r5, 0 - adds r0, 0x29 - movs r3, 0 - ldrsb r3, [r0, r3] - ldrh r2, [r5, 0x22] - adds r2, r3 - ldrh r4, [r5, 0x22] - adds r0, r6, 0 - adds r0, 0x29 - movs r1, 0 - ldrsb r1, [r0, r1] - ldrh r0, [r6, 0x22] - subs r0, r1 - lsls r0, 16 - asrs r0, 16 - adds r3, r0, r3 - lsls r2, 16 - asrs r2, 16 - lsls r3, 16 - asrs r3, 16 - cmp r2, r3 - blt _081288BC - cmp r2, r0 - bge _081288E4 -_081288BC: - lsls r0, r4, 16 - asrs r0, 16 - cmp r0, r3 - ble _081288E4 - adds r2, r6, 0 - adds r2, 0x43 - adds r0, r5, 0 - adds r0, 0x43 - ldrb r1, [r0] - ldrb r0, [r2] - cmp r0, r1 - bhi _081288E4 - adds r0, r1, 0x2 - strb r0, [r2] - b _081288EE - .align 2, 0 -_081288DC: .4byte gMapObjects -_081288E0: .4byte gSprites -_081288E4: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0xF - bls _08128842 -_081288EE: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_812882C - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 9576947b2..ab720cdcb 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -232,7 +232,6 @@ SECTIONS { src/save.o(.text); src/mystery_event_script.o(.text); src/field_effect_helpers.o(.text); - asm/field_effect_helpers.o(.text); asm/contest_ai.o(.text); asm/battle_anim_81258BC.o(.text); src/battle_controller_safari.o(.text); diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 9914defe4..3ff5b31db 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -32,7 +32,7 @@ static void sub_81275C4(struct Sprite *); static void sub_8127DA0(struct Sprite *); static void sub_8127DD0(struct Sprite *); static void sub_8127E30(struct Sprite *); -/*static*/ void sub_812882C(struct Sprite *, u8, u8); +static void sub_812882C(struct Sprite *, u8, u8); static void sub_81278D8(struct Sprite *); static void sub_8127FD4(struct MapObject *, struct Sprite *); static void sub_812800C(struct MapObject *, struct Sprite *); @@ -1495,3 +1495,153 @@ void sub_8128800(struct Sprite *sprite) sub_806487C(sprite, FALSE); } } + +#ifdef NONMATCHING +static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset) +{ + u8 i; + s16 xlo; + s16 xhi; + s16 lx; + s16 lyhi; + s16 ly; + s16 ylo; + s16 yhi; + struct MapObject *mapObject; // r4 + const struct MapObjectGraphicsInfo *graphicsInfo; // destroyed + struct Sprite *linkedSprite; // r5 + + SetObjectSubpriorityByZCoord(z, sprite, offset); + for (i = 0; i < 16; i ++) + { + mapObject = &gMapObjects[i]; + if (mapObject->active) + { + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + linkedSprite = &gSprites[mapObject->spriteId]; + xhi = sprite->pos1.x + sprite->centerToCornerVecX; + xlo = sprite->pos1.x - sprite->centerToCornerVecX; + lx = linkedSprite->pos1.x; + if (xhi < lx && xlo > lx) + { + lyhi = linkedSprite->pos1.y + linkedSprite->centerToCornerVecY; + ly = linkedSprite->pos1.y; + ylo = sprite->pos1.y - sprite->centerToCornerVecY; + yhi = ylo + linkedSprite->centerToCornerVecY; + if ((lyhi < yhi || lyhi < ylo) && ly > yhi) + { + if (sprite->subpriority <= linkedSprite->subpriority) + { + sprite->subpriority = linkedSprite->subpriority + 2; + break; + } + } + } + } + } +} +#else +__attribute__((naked)) static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tadds r6, r0, 0\n" + "\tadds r0, r1, 0\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tlsls r2, 24\n" + "\tlsrs r2, 24\n" + "\tadds r1, r6, 0\n" + "\tbl SetObjectSubpriorityByZCoord\n" + "\tmovs r7, 0\n" + "_08128842:\n" + "\tlsls r0, r7, 3\n" + "\tadds r0, r7\n" + "\tlsls r0, 2\n" + "\tldr r1, _081288DC @ =gMapObjects\n" + "\tadds r4, r0, r1\n" + "\tldrb r0, [r4]\n" + "\tlsls r0, 31\n" + "\tcmp r0, 0\n" + "\tbeq _081288E4\n" + "\tldrb r0, [r4, 0x5]\n" + "\tbl GetFieldObjectGraphicsInfo\n" + "\tldrb r1, [r4, 0x4]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tldr r1, _081288E0 @ =gSprites\n" + "\tadds r5, r0, r1\n" + "\tadds r0, r6, 0\n" + "\tadds r0, 0x28\n" + "\tmovs r2, 0\n" + "\tldrsb r2, [r0, r2]\n" + "\tldrh r0, [r6, 0x20]\n" + "\tadds r1, r0, r2\n" + "\tsubs r0, r2\n" + "\tlsls r0, 16\n" + "\tlsrs r4, r0, 16\n" + "\tlsls r1, 16\n" + "\tasrs r1, 16\n" + "\tmovs r0, 0x20\n" + "\tldrsh r2, [r5, r0]\n" + "\tcmp r1, r2\n" + "\tbge _081288E4\n" + "\tlsls r0, r4, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, r2\n" + "\tble _081288E4\n" + "\tadds r0, r5, 0\n" + "\tadds r0, 0x29\n" + "\tmovs r3, 0\n" + "\tldrsb r3, [r0, r3]\n" + "\tldrh r2, [r5, 0x22]\n" + "\tadds r2, r3\n" + "\tldrh r4, [r5, 0x22]\n" + "\tadds r0, r6, 0\n" + "\tadds r0, 0x29\n" + "\tmovs r1, 0\n" + "\tldrsb r1, [r0, r1]\n" + "\tldrh r0, [r6, 0x22]\n" + "\tsubs r0, r1\n" + "\tlsls r0, 16\n" + "\tasrs r0, 16\n" + "\tadds r3, r0, r3\n" + "\tlsls r2, 16\n" + "\tasrs r2, 16\n" + "\tlsls r3, 16\n" + "\tasrs r3, 16\n" + "\tcmp r2, r3\n" + "\tblt _081288BC\n" + "\tcmp r2, r0\n" + "\tbge _081288E4\n" + "_081288BC:\n" + "\tlsls r0, r4, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, r3\n" + "\tble _081288E4\n" + "\tadds r2, r6, 0\n" + "\tadds r2, 0x43\n" + "\tadds r0, r5, 0\n" + "\tadds r0, 0x43\n" + "\tldrb r1, [r0]\n" + "\tldrb r0, [r2]\n" + "\tcmp r0, r1\n" + "\tbhi _081288E4\n" + "\tadds r0, r1, 0x2\n" + "\tstrb r0, [r2]\n" + "\tb _081288EE\n" + "\t.align 2, 0\n" + "_081288DC: .4byte gMapObjects\n" + "_081288E0: .4byte gSprites\n" + "_081288E4:\n" + "\tadds r0, r7, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r7, r0, 24\n" + "\tcmp r7, 0xF\n" + "\tbls _08128842\n" + "_081288EE:\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0"); +} +#endif -- cgit v1.2.3 From 23d0a78beaeca0bec24c0839c73df6eb8969fb53 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 13:24:58 -0400 Subject: Cleanup --- src/field_effect_helpers.c | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 3ff5b31db..1152c39bc 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1,9 +1,3 @@ -// -// Created by scott on 9/9/2017. -// - - -// Includes #include "global.h" #include "sprite.h" #include "fieldmap.h" @@ -18,11 +12,6 @@ #include "field_ground_effect.h" #include "field_effect_helpers.h" -// Static type declarations - -// Static RAM declarations - -// Static ROM declarations static void sub_81269E0(struct Sprite *); static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite); static void npc_pal_op_A(struct MapObject *, u8); @@ -40,8 +29,6 @@ static void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *); static void sub_8128174(struct Sprite *); static u32 ShowDisguiseFieldEffect(u8, u8, u8); -// .rodata - const u8 UnusedEggString_8401E28[] = _("タマゴ"); const u16 gUnknown_08401E2C[] = { @@ -88,8 +75,6 @@ const u16 gUnknown_08401E5A[] = { 7 }; -// .text - void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 flag) { struct Sprite *newSprite; @@ -114,7 +99,7 @@ void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 f } } -s16 sub_81268D0(struct MapObject *mapObject) +static s16 sub_81268D0(struct MapObject *mapObject) { return GetFieldObjectGraphicsInfo(mapObject->graphicsId)->height - 2; } @@ -1003,7 +988,7 @@ void sub_8127F28(u8 spriteId, u8 value, s16 data1) gSprites[spriteId].data1 = data1; } -/*static*/ u8 sub_8127F5C(struct Sprite *sprite) +static u8 sub_8127F5C(struct Sprite *sprite) { return sprite->data0 & 0xF; } @@ -1013,7 +998,7 @@ static u8 sub_8127F64(struct Sprite *sprite) return (sprite->data0 & 0xF0) >> 4; } -/*static*/ u8 sub_8127F70(struct Sprite *sprite) +static u8 sub_8127F70(struct Sprite *sprite) { return (sprite->data0 & 0xF00) >> 8; } -- cgit v1.2.3 From 039934e05e0eff4fda75d51c03b877497fd988da Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 15:39:52 -0400 Subject: Fix nonmatching UpdateFieldObjectCoordsForCameraUpdate --- src/field_map_obj.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/field_map_obj.c b/src/field_map_obj.c index dc72981bb..479e4bfde 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -2986,24 +2986,21 @@ void UpdateFieldObjectCoordsForCameraUpdate(void) s16 deltaX; s16 deltaY; -#ifndef NONMATCHING - asm(""::"r"(i)); //makes the compiler store i in r3 -#endif - if (gCamera.field_0) { - for (i = 0, deltaX = gCamera.x, deltaY = gCamera.y; i < 16; i++) + deltaX = gCamera.x; + deltaY = gCamera.y; + for (i = 0; i < 16; i++) { - struct MapObject *mapObject = &gMapObjects[i]; - if (mapObject->active) + if (gMapObjects[i].active) { - mapObject->coords1.x -= deltaX; - mapObject->coords1.y -= deltaY; - mapObject->coords2.x -= deltaX; - mapObject->coords2.y -= deltaY; - mapObject->coords3.x -= deltaX; - mapObject->coords3.y -= deltaY; + gMapObjects[i].coords1.x -= deltaX; + gMapObjects[i].coords1.y -= deltaY; + gMapObjects[i].coords2.x -= deltaX; + gMapObjects[i].coords2.y -= deltaY; + gMapObjects[i].coords3.x -= deltaX; + gMapObjects[i].coords3.y -= deltaY; } } } -- cgit v1.2.3 From a5bae32031535479d15390a8c19cbaa276d1d70b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 16 Sep 2017 14:02:36 -0400 Subject: Begin to fix state_to_direction memes --- asm/field_map_obj.s | 133 ----------- .../field_map_obj/callback_subroutine_pointers.h | 2 +- include/field_map_obj.h | 56 +++-- src/field_map_obj.c | 252 ++++----------------- 4 files changed, 76 insertions(+), 367 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index c8c402217..a16c355e5 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,139 +6,6 @@ .text -.ifndef NONMATCHING - thumb_func_start sub_805F3EC -sub_805F3EC: @ 805F3EC - movs r0, 0 - bx lr - thumb_func_end sub_805F3EC - - thumb_func_start sub_805F3F0 -sub_805F3F0: @ 805F3F0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r1, _0805F434 @ =gUnknown_0836DC09 - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - bl state_to_direction - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805F434: .4byte gUnknown_0836DC09 - thumb_func_end sub_805F3F0 - - thumb_func_start sub_805F438 -sub_805F438: @ 805F438 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r7, r1, 0 - mov r8, r3 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r1, _0805F4EC @ =gUnknown_0836DC09 - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - adds r2, r6, 0 - bl state_to_direction - adds r6, r0, 0 - mov r5, sp - adds r5, 0x2 - adds r0, r4, 0 - adds r1, r6, 0 - mov r2, sp - adds r3, r5, 0 - bl FieldObjectMoveDestCoords - adds r0, r6, 0 - bl GetGoSpeed0AnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r5, r0] - adds r0, r4, 0 - adds r3, r6, 0 - bl npc_block_way - lsls r0, 24 - cmp r0, 0 - bne _0805F4BE - mov r1, r8 - cmp r1, 0 - beq _0805F4D2 - mov r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r8 - lsls r0, 24 - cmp r0, 0 - bne _0805F4D2 -_0805F4BE: - adds r0, r6, 0 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim -_0805F4D2: - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r7, 0x30] - movs r0, 0x1 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805F4EC: .4byte gUnknown_0836DC09 - thumb_func_end sub_805F438 -.endif - thumb_func_start sub_805F4F0 sub_805F4F0: @ 805F4F0 push {r4-r7,lr} diff --git a/include/data/field_map_obj/callback_subroutine_pointers.h b/include/data/field_map_obj/callback_subroutine_pointers.h index d24a47184..06c89cc70 100644 --- a/include/data/field_map_obj/callback_subroutine_pointers.h +++ b/include/data/field_map_obj/callback_subroutine_pointers.h @@ -394,7 +394,7 @@ u8 (*const gUnknown_08375588[])(struct MapObject *, struct Sprite *) = { sub_805F3C4 }; -u8 (*const gUnknown_08375594[])(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)) = { +u8 (*const gUnknown_08375594[])(struct MapObject *, struct Sprite *, u8, bool8(u8)) = { sub_805F3EC, sub_805F3F0, sub_805F438, diff --git a/include/field_map_obj.h b/include/field_map_obj.h index d2a1a9b1f..e394dda8a 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -54,17 +54,15 @@ u8 sub_805CCAC(s16 a0, s16 a1, s16 a2, s16 a3); u8 sub_805CCE8(s16 a0, s16 a1, s16 a2, s16 a3); u8 sub_805CD24(s16 a0, s16 a1, s16 a2, s16 a3); -u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F3F0(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F438(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F4F0(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F5A8(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F660(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 cph_IM_DIFFERENT(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F760(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 oac_hopping(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); -u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); +u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 sub_805F3F0(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 sub_805F438(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 sub_805F4F0(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 sub_805F5A8(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 sub_805F660(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 cph_IM_DIFFERENT(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 sub_805F760(struct MapObject *, struct Sprite *, u8, bool8(u8)); +u8 oac_hopping(struct MapObject *, struct Sprite *, u8, bool8(u8)); extern struct CameraSomething gUnknown_03004880; extern u16 gUnknown_03004898; @@ -318,7 +316,7 @@ u8 get_go_fast_image_anim_num(u8); u8 get_go_faster_image_anim_num(u8); u8 sub_805FD78(u8); -int state_to_direction(u8, u8, u8); +u32 state_to_direction(u8, u8, u32); void sub_805AA98(); void sub_805AAB0(void); @@ -379,14 +377,14 @@ u8 sub_805FDF8(u8); u8 sub_805FE08(u8); void npc_set_running_behaviour_etc(struct MapObject *, u8); u8 npc_running_behaviour_by_direction(u8); -u8 npc_block_way(struct MapObject *, s16, s16, u8); +u8 npc_block_way(struct MapObject *, s16, s16, u32); u8 sub_8060024(struct MapObject *, s16, s16, u8); u8 sub_8060234(u8, u8, u8); void sub_8060288(u8, u8, u8); void sub_8060388(s16, s16, s16 *, s16 *); void sub_80603CC(s16 x, s16 y, s16 *pInt, s16 *pInt1); void GetFieldObjectMovingCameraOffset(s16 *, s16 *); -void FieldObjectMoveDestCoords(struct MapObject *pObject, u8 unk_19, s16 *pInt, s16 *pInt1); +void FieldObjectMoveDestCoords(struct MapObject *pObject, u32 unk_19, s16 *pInt, s16 *pInt1); bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *); bool8 FieldObjectIsSpecialAnimActive(struct MapObject *); bool8 FieldObjectSetSpecialAnim(struct MapObject *, u8); @@ -396,21 +394,21 @@ void FieldObjectClearAnim(struct MapObject *); bool8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *); u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *); u8 FieldObjectGetSpecialAnim(struct MapObject *); -u8 GetFaceDirectionAnimId(u8); -u8 GetSimpleGoAnimId(u8); -u8 GetGoSpeed0AnimId(u8 a); -u8 sub_8060744(u8 a); -u8 d2s_08064034(u8 a); -u8 sub_806079C(u8 a); -u8 sub_80607F4(u8 a); -u8 GetJumpLedgeAnimId(u8 a); -u8 sub_806084C(u8); -u8 sub_8060878(u8); -u8 sub_80608D0(u8); -u8 GetStepInPlaceDelay32AnimId(u8 a); -u8 GetStepInPlaceDelay16AnimId(u8); -u8 GetStepInPlaceDelay8AnimId(u8 a); -u8 GetStepInPlaceDelay4AnimId(u8 a); +u8 GetFaceDirectionAnimId(u32); +u8 GetSimpleGoAnimId(u32); +u8 GetGoSpeed0AnimId(u32); +u8 sub_8060744(u32); +u8 d2s_08064034(u32); +u8 sub_806079C(u32); +u8 sub_80607F4(u32); +u8 GetJumpLedgeAnimId(u32); +u8 sub_806084C(u32); +u8 sub_8060878(u32); +u8 sub_80608D0(u32); +u8 GetStepInPlaceDelay32AnimId(u32); +u8 GetStepInPlaceDelay16AnimId(u32); +u8 GetStepInPlaceDelay8AnimId(u32); +u8 GetStepInPlaceDelay4AnimId(u32); u8 FieldObjectFaceOppositeDirection(struct MapObject *, u8); u8 sub_80609D8(u8); u8 sub_8060A04(u8); diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 0e7cd7896..d76fd523b 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -5030,32 +5030,32 @@ u8 sub_805F3C4(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -#ifdef NONMATCHING +//#ifdef NONMATCHING -u8 sub_805F3EC(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3(u8)) +bool8 sub_805F3EC(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, bool8 a3(u8)) { return 0; } -u8 sub_805F3F0(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3(u8)) +bool8 sub_805F3F0(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, bool8 a3(u8)) { - int direction; - direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, a2); - FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, a2))); mapObject->mapobj_bit_1 = 1; sprite->data1 = 2; return 1; } -u8 sub_805F438(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3(u8)) +bool8 sub_805F438(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, bool8 a3(u8)) { + u32 direction; s16 x; s16 y; - int direction; - direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, a2); + + direction = a2; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction); FieldObjectMoveDestCoords(mapObject, direction, &x, &y); FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(direction)); - if (!npc_block_way(mapObject, x, y, direction) || (a3 != NULL && !a3(MapGridGetMetatileBehaviorAt(x, y)))) + if (npc_block_way(mapObject, x, y, direction) || (a3 != NULL && !a3(MapGridGetMetatileBehaviorAt(x, y)))) { FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); } @@ -5063,7 +5063,7 @@ u8 sub_805F438(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3 sprite->data1 = 2; return 1; } -#endif +//#endif asm(".section .text_fmocb2_c\n"); @@ -5367,8 +5367,10 @@ bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, static bool8 DoesObjectCollideWithObjectAt(struct MapObject *mapObject, s16 x, s16 y); bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction); -u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u8 direction) +u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u32 dirn) { + u8 direction; + direction = dirn; if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y)) return 1; else if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction)) @@ -5563,11 +5565,12 @@ void GetFieldObjectMovingCameraOffset(s16 *x, s16 *y) } } -void FieldObjectMoveDestCoords(struct MapObject *mapObject, u8 direction, s16 *x, s16 *y) +void FieldObjectMoveDestCoords(struct MapObject *mapObject, u32 direction, s16 *x, s16 *y) { + u8 newDirn = direction; *x = mapObject->coords2.x; *y = mapObject->coords2.y; - MoveCoords(direction, x, y); + MoveCoords(newDirn, x, y); } bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *mapObject) @@ -5681,193 +5684,34 @@ void meta_step(struct MapObject *mapObject, struct Sprite *sprite, u8 (*callback FieldObjectUpdateSubpriority(mapObject, sprite); } - -u8 GetFaceDirectionAnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756C8, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 GetSimpleGoAnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756CD, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 GetGoSpeed0AnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756D2, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_8060744(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756D7, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 d2s_08064034(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756DC, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_806079C(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756E1, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_80607C8(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756E6, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_80607F4(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756EB, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 GetJumpLedgeAnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756F0, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_806084C(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756F5, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_8060878(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756FA, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_80608A4(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_083756FF, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 sub_80608D0(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_08375704, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 GetStepInPlaceDelay32AnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_08375709, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 GetStepInPlaceDelay16AnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_0837570E, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 GetStepInPlaceDelay8AnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_08375713, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} - -u8 GetStepInPlaceDelay4AnimId(u8 index) -{ - u8 directions[5]; - memcpy(directions, gUnknown_08375718, 5); - if (index >= 5) - { - index = 0; - } - return directions[index]; -} +#define dirn_to_anim(name, table)\ +u8 name(u32 idx)\ +{\ + u8 direction;\ + u8 animIds[sizeof(table)];\ + direction = idx;\ + memcpy(animIds, (table), sizeof(table));\ + if (direction > DIR_EAST) direction = 0;\ + return animIds[direction];\ +} + +dirn_to_anim(GetFaceDirectionAnimId, gUnknown_083756C8) +dirn_to_anim(GetSimpleGoAnimId, gUnknown_083756CD) +dirn_to_anim(GetGoSpeed0AnimId, gUnknown_083756D2) +dirn_to_anim(sub_8060744, gUnknown_083756D7) +dirn_to_anim(d2s_08064034, gUnknown_083756DC) +dirn_to_anim(sub_806079C, gUnknown_083756E1) +dirn_to_anim(sub_80607C8, gUnknown_083756E6) +dirn_to_anim(sub_80607F4, gUnknown_083756EB) +dirn_to_anim(GetJumpLedgeAnimId, gUnknown_083756F0) +dirn_to_anim(sub_806084C, gUnknown_083756F5) +dirn_to_anim(sub_8060878, gUnknown_083756FA) +dirn_to_anim(sub_80608A4, gUnknown_083756FF) +dirn_to_anim(sub_80608D0, gUnknown_08375704) +dirn_to_anim(GetStepInPlaceDelay32AnimId, gUnknown_08375709) +dirn_to_anim(GetStepInPlaceDelay16AnimId, gUnknown_0837570E) +dirn_to_anim(GetStepInPlaceDelay8AnimId, gUnknown_08375713) +dirn_to_anim(GetStepInPlaceDelay4AnimId, gUnknown_08375718) u8 FieldObjectFaceOppositeDirection(struct MapObject *mapObject, u8 direction) { @@ -6001,11 +5845,11 @@ int zffu_offset_calc(u8 a0, u8 a1) } #ifdef NONMATCHING -int state_to_direction(u8 a0, u8 a1, u8 a2) +u32 state_to_direction(u8 a0, u8 a1, u32 a2) { int zffuOffset; asm_comment("For some reason, r2 is being backed up to r3 and restored ahead of the zffu call."); - if (a1 == 0 || a2 == 0 || a1 > 4 || a2 > 4) + if (a1 == 0 || (u8)a2 == 0 || a1 > 4 || (u8)a2 > 4) { return 0; } @@ -6014,7 +5858,7 @@ int state_to_direction(u8 a0, u8 a1, u8 a2) } #else __attribute__((naked)) -int state_to_direction(u8 a0, u8 a1, u8 a2) +u32 state_to_direction(u8 a0, u8 a1, u32 a2) { asm(".syntax unified\n\ push {r4,lr}\n\ -- cgit v1.2.3 From 3f86e6c08e1383795899fde800bc335e25667d2d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 16 Sep 2017 14:18:04 -0400 Subject: Matching state_to_direction --- include/field_map_obj.h | 2 +- src/field_map_obj.c | 57 +++++++------------------------------------------ 2 files changed, 9 insertions(+), 50 deletions(-) diff --git a/include/field_map_obj.h b/include/field_map_obj.h index e394dda8a..170b746a6 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -316,7 +316,7 @@ u8 get_go_fast_image_anim_num(u8); u8 get_go_faster_image_anim_num(u8); u8 sub_805FD78(u8); -u32 state_to_direction(u8, u8, u32); +u32 state_to_direction(u8, u32, u32); void sub_805AA98(); void sub_805AAB0(void); diff --git a/src/field_map_obj.c b/src/field_map_obj.c index d76fd523b..f3e1d76e9 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -5839,65 +5839,24 @@ u8 GetOppositeDirection(u8 direction) return directions[direction - 1]; } -int zffu_offset_calc(u8 a0, u8 a1) +u32 zffu_offset_calc(u8 a0, u8 a1) { return gUnknown_08375757[a0 - 1][a1 - 1]; } -#ifdef NONMATCHING -u32 state_to_direction(u8 a0, u8 a1, u32 a2) +u32 state_to_direction(u8 a0, u32 a1, u32 a2) { - int zffuOffset; - asm_comment("For some reason, r2 is being backed up to r3 and restored ahead of the zffu call."); - if (a1 == 0 || (u8)a2 == 0 || a1 > 4 || (u8)a2 > 4) + u32 zffuOffset; + u8 a1_2 = a1; + u8 a2_2 = a2; + // For some reason, r2 is being backed up to r3 and restored ahead of the zffu call. + if (a1_2 == 0 || a2_2 == 0 || a1_2 > DIR_EAST || a2_2 > DIR_EAST) { return 0; } - zffuOffset = zffu_offset_calc(a1, a2); + zffuOffset = zffu_offset_calc(a1_2, a2); return gUnknown_08375767[a0 - 1][zffuOffset - 1]; } -#else -__attribute__((naked)) -u32 state_to_direction(u8 a0, u8 a1, u32 a2) -{ - asm(".syntax unified\n\ - push {r4,lr}\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - adds r0, r1, 0\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - cmp r1, 0\n\ - beq _08060BFC\n\ - cmp r2, 0\n\ - beq _08060BFC\n\ - cmp r1, 0x4\n\ - bhi _08060BFC\n\ - cmp r2, 0x4\n\ - bls _08060C00\n\ -_08060BFC:\n\ - movs r0, 0\n\ - b _08060C12\n\ -_08060C00:\n\ - adds r1, r2, 0\n\ - bl zffu_offset_calc\n\ - ldr r2, _08060C18 @ =gUnknown_08375767\n\ - lsls r1, r4, 2\n\ - subs r1, 0x5\n\ - adds r0, r1\n\ - adds r0, r2\n\ - ldrb r0, [r0]\n\ -_08060C12:\n\ - pop {r4}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_08060C18: .4byte gUnknown_08375767\n\ -.syntax divided\n"); -} -#endif void FieldObjectExecSpecialAnim(struct MapObject *mapObject, struct Sprite *sprite) { -- cgit v1.2.3 From b3598ee395f43a3ed08b738f73576d5c76f9359f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 16 Sep 2017 14:42:15 -0400 Subject: Finish decompiling field_map_obj.s --- asm/field_map_obj.s | 495 ------------------------------------------------ include/field_map_obj.h | 3 + ld_script.txt | 2 - src/field_map_obj.c | 126 +++++++++++- 4 files changed, 119 insertions(+), 507 deletions(-) delete mode 100644 asm/field_map_obj.s diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s deleted file mode 100644 index a16c355e5..000000000 --- a/asm/field_map_obj.s +++ /dev/null @@ -1,495 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_805F4F0 -sub_805F4F0: @ 805F4F0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r7, r1, 0 - mov r8, r3 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r1, _0805F5A4 @ =gUnknown_0836DC09 - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - adds r2, r6, 0 - bl state_to_direction - adds r6, r0, 0 - mov r5, sp - adds r5, 0x2 - adds r0, r4, 0 - adds r1, r6, 0 - mov r2, sp - adds r3, r5, 0 - bl FieldObjectMoveDestCoords - adds r0, r6, 0 - bl sub_8060744 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r5, r0] - adds r0, r4, 0 - adds r3, r6, 0 - bl npc_block_way - lsls r0, 24 - cmp r0, 0 - bne _0805F576 - mov r1, r8 - cmp r1, 0 - beq _0805F58A - mov r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r8 - lsls r0, 24 - cmp r0, 0 - bne _0805F58A -_0805F576: - adds r0, r6, 0 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim -_0805F58A: - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r7, 0x30] - movs r0, 0x1 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805F5A4: .4byte gUnknown_0836DC09 - thumb_func_end sub_805F4F0 - - thumb_func_start sub_805F5A8 -sub_805F5A8: @ 805F5A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r7, r1, 0 - mov r8, r3 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r1, _0805F65C @ =gUnknown_0836DC09 - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - adds r2, r6, 0 - bl state_to_direction - adds r6, r0, 0 - mov r5, sp - adds r5, 0x2 - adds r0, r4, 0 - adds r1, r6, 0 - mov r2, sp - adds r3, r5, 0 - bl FieldObjectMoveDestCoords - adds r0, r6, 0 - bl sub_806079C - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r5, r0] - adds r0, r4, 0 - adds r3, r6, 0 - bl npc_block_way - lsls r0, 24 - cmp r0, 0 - bne _0805F62E - mov r1, r8 - cmp r1, 0 - beq _0805F642 - mov r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r8 - lsls r0, 24 - cmp r0, 0 - bne _0805F642 -_0805F62E: - adds r0, r6, 0 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim -_0805F642: - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r7, 0x30] - movs r0, 0x1 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805F65C: .4byte gUnknown_0836DC09 - thumb_func_end sub_805F5A8 - - thumb_func_start sub_805F660 -sub_805F660: @ 805F660 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r7, r1, 0 - mov r8, r3 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r1, _0805F714 @ =gUnknown_0836DC09 - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - adds r2, r6, 0 - bl state_to_direction - adds r6, r0, 0 - mov r5, sp - adds r5, 0x2 - adds r0, r4, 0 - adds r1, r6, 0 - mov r2, sp - adds r3, r5, 0 - bl FieldObjectMoveDestCoords - adds r0, r6, 0 - bl sub_80607C8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r5, r0] - adds r0, r4, 0 - adds r3, r6, 0 - bl npc_block_way - lsls r0, 24 - cmp r0, 0 - bne _0805F6E6 - mov r1, r8 - cmp r1, 0 - beq _0805F6FA - mov r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r8 - lsls r0, 24 - cmp r0, 0 - bne _0805F6FA -_0805F6E6: - adds r0, r6, 0 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim -_0805F6FA: - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r7, 0x30] - movs r0, 0x1 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805F714: .4byte gUnknown_0836DC09 - thumb_func_end sub_805F660 - - thumb_func_start cph_IM_DIFFERENT -cph_IM_DIFFERENT: @ 805F718 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r1, _0805F75C @ =gUnknown_0836DC09 - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - bl state_to_direction - bl sub_806084C - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805F75C: .4byte gUnknown_0836DC09 - thumb_func_end cph_IM_DIFFERENT - - thumb_func_start sub_805F760 -sub_805F760: @ 805F760 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r7, r1, 0 - mov r8, r3 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r1, _0805F814 @ =gUnknown_0836DC09 - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - adds r2, r6, 0 - bl state_to_direction - adds r6, r0, 0 - mov r5, sp - adds r5, 0x2 - adds r0, r4, 0 - adds r1, r6, 0 - mov r2, sp - adds r3, r5, 0 - bl FieldObjectMoveDestCoords - adds r0, r6, 0 - bl sub_80608A4 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r5, r0] - adds r0, r4, 0 - adds r3, r6, 0 - bl npc_block_way - lsls r0, 24 - cmp r0, 0 - bne _0805F7E6 - mov r1, r8 - cmp r1, 0 - beq _0805F7FA - mov r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r8 - lsls r0, 24 - cmp r0, 0 - bne _0805F7FA -_0805F7E6: - adds r0, r6, 0 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim -_0805F7FA: - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r7, 0x30] - movs r0, 0x1 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805F814: .4byte gUnknown_0836DC09 - thumb_func_end sub_805F760 - - thumb_func_start oac_hopping -oac_hopping: @ 805F818 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - adds r4, r0, 0 - adds r7, r1, 0 - mov r8, r3 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r1, _0805F8DC @ =gUnknown_0836DC09 - ldrb r0, [r4, 0x6] - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - adds r2, r6, 0 - bl state_to_direction - adds r6, r0, 0 - ldrh r1, [r4, 0x10] - add r0, sp, 0x4 - strh r1, [r0] - ldrh r0, [r4, 0x12] - mov r5, sp - adds r5, 0x6 - strh r0, [r5] - movs r0, 0x2 - str r0, [sp] - adds r0, r6, 0 - add r1, sp, 0x4 - adds r2, r5, 0 - movs r3, 0x2 - bl sub_8060320 - adds r0, r6, 0 - bl GetJumpLedgeAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim - add r0, sp, 0x4 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r5, r0] - adds r0, r4, 0 - adds r3, r6, 0 - bl npc_block_way - lsls r0, 24 - cmp r0, 0 - bne _0805F8AC - mov r1, r8 - cmp r1, 0 - beq _0805F8C0 - add r0, sp, 0x4 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r8 - lsls r0, 24 - cmp r0, 0 - bne _0805F8C0 -_0805F8AC: - adds r0, r6, 0 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r7, 0 - bl FieldObjectSetRegularAnim -_0805F8C0: - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - strh r0, [r7, 0x30] - movs r0, 0x1 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805F8DC: .4byte gUnknown_0836DC09 - thumb_func_end oac_hopping diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 170b746a6..d5a6b8b5a 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -400,10 +400,12 @@ u8 GetGoSpeed0AnimId(u32); u8 sub_8060744(u32); u8 d2s_08064034(u32); u8 sub_806079C(u32); +u8 sub_80607C8(u32); u8 sub_80607F4(u32); u8 GetJumpLedgeAnimId(u32); u8 sub_806084C(u32); u8 sub_8060878(u32); +u8 sub_80608A4(u32); u8 sub_80608D0(u32); u8 GetStepInPlaceDelay32AnimId(u32); u8 GetStepInPlaceDelay16AnimId(u32); @@ -425,5 +427,6 @@ void sub_80634D0(struct MapObject *, struct Sprite *); u8 SpawnSpecialFieldObjectParametrized(u8, u8, u8, s16, s16, u8); void CameraObjectSetFollowedObjectId(u8); u8 sub_805ADDC(u8); +void sub_8060320(u32, s16 *, s16 *, s16, s16); #endif // GUARD_FIELD_MAP_OBJ_H diff --git a/ld_script.txt b/ld_script.txt index 7648f98c7..69f30ab0a 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -92,8 +92,6 @@ SECTIONS { src/field_door.o(.text); src/field_player_avatar.o(.text); src/field_map_obj.o(.text); - asm/field_map_obj.o(.text); - src/field_map_obj.o(.text_fmocb2_c); src/field_ground_effect.o(.text); src/field_map_obj_helpers.o(.text); src/field_message_box.o(.text); diff --git a/src/field_map_obj.c b/src/field_map_obj.c index f3e1d76e9..cf4c519eb 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -5030,8 +5030,6 @@ u8 sub_805F3C4(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -//#ifdef NONMATCHING - bool8 sub_805F3EC(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, bool8 a3(u8)) { return 0; @@ -5063,9 +5061,115 @@ bool8 sub_805F438(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, boo sprite->data1 = 2; return 1; } -//#endif -asm(".section .text_fmocb2_c\n"); +bool8 sub_805F4F0(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction); + FieldObjectMoveDestCoords(mapObject, direction, &x, &y); + FieldObjectSetRegularAnim(mapObject, sprite, sub_8060744(direction)); + if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y)))) + { + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); + } + mapObject->mapobj_bit_1 = TRUE; + sprite->data1 = 2; + return TRUE; +} + +bool8 sub_805F5A8(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction); + FieldObjectMoveDestCoords(mapObject, direction, &x, &y); + FieldObjectSetRegularAnim(mapObject, sprite, sub_806079C(direction)); + if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y)))) + { + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); + } + mapObject->mapobj_bit_1 = TRUE; + sprite->data1 = 2; + return TRUE; +} + +bool8 sub_805F660(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction); + FieldObjectMoveDestCoords(mapObject, direction, &x, &y); + FieldObjectSetRegularAnim(mapObject, sprite, sub_80607C8(direction)); + if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y)))) + { + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); + } + mapObject->mapobj_bit_1 = TRUE; + sprite->data1 = 2; + return TRUE; +} + +bool8 cph_IM_DIFFERENT(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8)) +{ + u32 direction; + + direction = playerDirection; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction); + FieldObjectSetRegularAnim(mapObject, sprite, sub_806084C(direction)); + mapObject->mapobj_bit_1 = TRUE; + sprite->data1 = 2; + return TRUE; +} + +bool8 sub_805F760(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction); + FieldObjectMoveDestCoords(mapObject, direction, &x, &y); + FieldObjectSetRegularAnim(mapObject, sprite, sub_80608A4(direction)); + if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y)))) + { + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); + } + mapObject->mapobj_bit_1 = TRUE; + sprite->data1 = 2; + return TRUE; +} + +bool8 oac_hopping(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction); + x = mapObject->coords2.x; + y = mapObject->coords2.y; + sub_8060320(direction, &x, &y, 2, 2); + FieldObjectSetRegularAnim(mapObject, sprite, GetJumpLedgeAnimId(direction)); + if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y)))) + { + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); + } + mapObject->mapobj_bit_1 = TRUE; + sprite->data1 = 2; + return TRUE; +} fieldmap_object_cb(sub_805F8E0, sub_805F904, gUnknown_083755C0); @@ -5482,23 +5586,26 @@ void unref_sub_80602F8(u8 direction, s16 *x, s16 *y) *y += gDirectionToVector[direction].y << 4; } -void sub_8060320(u8 direction, s16 *x, s16 *y, s16 deltaX, s16 deltaY) +void sub_8060320(u32 dirn, s16 *x, s16 *y, s16 deltaX, s16 deltaY) { + u8 direction = dirn; + s16 dx2 = deltaX; + s16 dy2 = deltaY; if (gDirectionToVector[direction].x > 0) { - *x += deltaX; + *x += dx2; } if (gDirectionToVector[direction].x < 0) { - *x -= deltaX; + *x -= dx2; } if (gDirectionToVector[direction].y > 0) { - *y += deltaY; + *y += dy2; } if (gDirectionToVector[direction].y < 0) { - *y -= deltaY; + *y -= dy2; } } @@ -5849,7 +5956,6 @@ u32 state_to_direction(u8 a0, u32 a1, u32 a2) u32 zffuOffset; u8 a1_2 = a1; u8 a2_2 = a2; - // For some reason, r2 is being backed up to r3 and restored ahead of the zffu call. if (a1_2 == 0 || a2_2 == 0 || a1_2 > DIR_EAST || a2_2 > DIR_EAST) { return 0; -- cgit v1.2.3 From 33e4b85704e13e33d014fad6476f324116e80873 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 16 Sep 2017 15:10:53 -0400 Subject: Fix nonmatching types --- src/bike.c | 2 -- src/field_effect.c | 1 - src/field_player_avatar.c | 6 +++--- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/bike.c b/src/bike.c index 80cab0850..dae86bd88 100644 --- a/src/bike.c +++ b/src/bike.c @@ -10,8 +10,6 @@ #include "songs.h" #include "sound.h" -extern u8 sub_80608A4(u8); - extern u8 gUnknown_02039250; extern u8 gUnknown_02039251; extern u8 gUnknown_0202E854; diff --git a/src/field_effect.c b/src/field_effect.c index 0625e9d18..72224f299 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -1894,7 +1894,6 @@ bool8 sub_80873F4(struct Task *task, struct MapObject *mapObject, struct Sprite } void sub_8087470(u8); -extern u8 sub_80608A4(u8); void mapldr_080851BC(void) { diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index c8099a73d..e7947b704 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -1224,8 +1224,8 @@ u8 sub_8059EA4(struct Task *task, struct MapObject *b, struct MapObject *c) { FieldObjectClearAnimIfSpecialAnimFinished(b); FieldObjectClearAnimIfSpecialAnimFinished(c); - FieldObjectSetSpecialAnim(b, GetStepInPlaceDelay16AnimId(task->data[2])); - FieldObjectSetSpecialAnim(c, GetSimpleGoAnimId(task->data[2])); + FieldObjectSetSpecialAnim(b, GetStepInPlaceDelay16AnimId((u8)task->data[2])); + FieldObjectSetSpecialAnim(c, GetSimpleGoAnimId((u8)task->data[2])); gFieldEffectArguments[0] = c->coords2.x; gFieldEffectArguments[1] = c->coords2.y; gFieldEffectArguments[2] = c->elevation; @@ -1385,7 +1385,7 @@ static void taskFF_0805D1D4(u8 taskId) return; } sub_8127ED0(playerMapObj->mapobj_unk_1A, 2); - FieldObjectSetSpecialAnim(playerMapObj, sub_80608D0(gTasks[taskId].data[0])); + FieldObjectSetSpecialAnim(playerMapObj, sub_80608D0((u8)gTasks[taskId].data[0])); gTasks[taskId].func = sub_805A2D0; } -- cgit v1.2.3 From aecddc277130652a90e00ad0cc314b7ef9765bbb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 21 Sep 2017 17:42:50 -0400 Subject: gFieldEffectSpawnParams -> gFieldEffectArguments --- asm/fldeff_80C5CD4.s | 56 +++++----- include/field_effect.h | 2 +- src/battle_transition.c | 16 +-- src/braille_puzzles.c | 2 +- src/field_effect.c | 84 +++++++-------- src/field_effect_helpers.c | 242 ++++++++++++++++++++++---------------------- src/field_ground_effect.c | 128 +++++++++++------------ src/field_map_obj.c | 26 ++--- src/field_map_obj_helpers.c | 10 +- src/field_player_avatar.c | 14 +-- src/fldeff_cut.c | 4 +- src/fldeff_flash.c | 2 +- src/fldeff_strength.c | 6 +- src/fldeff_sweetscent.c | 2 +- src/fldeff_teleport.c | 2 +- src/pokemon_menu.c | 14 +-- src/rom6.c | 24 ++--- src/scrcmd.c | 2 +- src/trainer_see.c | 16 +-- 19 files changed, 326 insertions(+), 326 deletions(-) diff --git a/asm/fldeff_80C5CD4.s b/asm/fldeff_80C5CD4.s index 4fe6c1f89..e049db56a 100644 --- a/asm/fldeff_80C5CD4.s +++ b/asm/fldeff_80C5CD4.s @@ -741,7 +741,7 @@ _080C627C: .4byte gMapHeader thumb_func_start sub_80C6280 sub_80C6280: @ 80C6280 push {lr} - ldr r1, _080C6294 @ =gFieldEffectSpawnParams + ldr r1, _080C6294 @ =gFieldEffectArguments ldr r0, [r1, 0x4] cmp r0, 0x2 beq _080C62AA @@ -751,7 +751,7 @@ sub_80C6280: @ 80C6280 beq _080C62A2 b _080C62BE .align 2, 0 -_080C6294: .4byte gFieldEffectSpawnParams +_080C6294: .4byte gFieldEffectArguments _080C6298: cmp r0, 0x3 beq _080C62AE @@ -880,7 +880,7 @@ _080C6398: .4byte sub_80C660C thumb_func_start sub_80C639C sub_80C639C: @ 80C639C push {lr} - ldr r1, _080C63B0 @ =gFieldEffectSpawnParams + ldr r1, _080C63B0 @ =gFieldEffectArguments ldr r0, _080C63B4 @ =gLastFieldPokeMenuOpened ldrb r0, [r0] str r0, [r1] @@ -889,7 +889,7 @@ sub_80C639C: @ 80C639C pop {r0} bx r0 .align 2, 0 -_080C63B0: .4byte gFieldEffectSpawnParams +_080C63B0: .4byte gFieldEffectArguments _080C63B4: .4byte gLastFieldPokeMenuOpened _080C63B8: .4byte gUnknown_081A2CE6 thumb_func_end sub_80C639C @@ -943,7 +943,7 @@ FldEff_SecretPowerCave: @ 80C63FC ldrh r1, [r2, 0x2] lsls r1, 23 lsrs r1, 23 - ldr r4, _080C6448 @ =gFieldEffectSpawnParams + ldr r4, _080C6448 @ =gFieldEffectArguments ldr r3, [r4, 0x14] adds r1, r3 lsls r1, 16 @@ -963,7 +963,7 @@ FldEff_SecretPowerCave: @ 80C63FC _080C643C: .4byte gSpriteTemplate_83D2614 _080C6440: .4byte gSprites _080C6444: .4byte gPlayerAvatar -_080C6448: .4byte gFieldEffectSpawnParams +_080C6448: .4byte gFieldEffectArguments thumb_func_end FldEff_SecretPowerCave thumb_func_start sub_80C644C @@ -1025,7 +1025,7 @@ sub_80C6498: @ 80C6498 thumb_func_start sub_80C64A8 sub_80C64A8: @ 80C64A8 push {lr} - ldr r1, _080C64BC @ =gFieldEffectSpawnParams + ldr r1, _080C64BC @ =gFieldEffectArguments ldr r0, _080C64C0 @ =gLastFieldPokeMenuOpened ldrb r0, [r0] str r0, [r1] @@ -1034,7 +1034,7 @@ sub_80C64A8: @ 80C64A8 pop {r0} bx r0 .align 2, 0 -_080C64BC: .4byte gFieldEffectSpawnParams +_080C64BC: .4byte gFieldEffectArguments _080C64C0: .4byte gLastFieldPokeMenuOpened _080C64C4: .4byte gUnknown_081A2D3E thumb_func_end sub_80C64A8 @@ -1088,13 +1088,13 @@ FldEff_SecretPowerTree: @ 80C6508 ands r2, r0 cmp r2, 0x96 bne _080C652A - ldr r1, _080C6588 @ =gFieldEffectSpawnParams + ldr r1, _080C6588 @ =gFieldEffectArguments movs r0, 0 str r0, [r1, 0x1C] _080C652A: cmp r2, 0x9C bne _080C6534 - ldr r1, _080C6588 @ =gFieldEffectSpawnParams + ldr r1, _080C6588 @ =gFieldEffectArguments movs r0, 0x2 str r0, [r1, 0x1C] _080C6534: @@ -1110,7 +1110,7 @@ _080C6534: ldrh r1, [r2, 0x2] lsls r1, 23 lsrs r1, 23 - ldr r4, _080C6588 @ =gFieldEffectSpawnParams + ldr r4, _080C6588 @ =gFieldEffectArguments ldr r3, [r4, 0x14] adds r1, r3 lsls r1, 16 @@ -1137,7 +1137,7 @@ _080C6576: .align 2, 0 _080C6580: .4byte gUnknown_0203923C _080C6584: .4byte 0x00000fff -_080C6588: .4byte gFieldEffectSpawnParams +_080C6588: .4byte gFieldEffectArguments _080C658C: .4byte gSpriteTemplate_83D262C _080C6590: .4byte gSprites _080C6594: .4byte gPlayerAvatar @@ -1149,7 +1149,7 @@ sub_80C6598: @ 80C6598 adds r4, r0, 0 movs r0, 0x9B bl PlaySE - ldr r0, _080C65BC @ =gFieldEffectSpawnParams + ldr r0, _080C65BC @ =gFieldEffectArguments ldr r1, [r0, 0x1C] adds r2, r4, 0 adds r2, 0x2A @@ -1162,7 +1162,7 @@ sub_80C6598: @ 80C6598 pop {r0} bx r0 .align 2, 0 -_080C65BC: .4byte gFieldEffectSpawnParams +_080C65BC: .4byte gFieldEffectArguments _080C65C0: .4byte sub_80C65C4 thumb_func_end sub_80C6598 @@ -1177,7 +1177,7 @@ sub_80C65C4: @ 80C65C4 asrs r0, 16 cmp r0, 0x27 ble _080C65EE - ldr r0, _080C65F4 @ =gFieldEffectSpawnParams + ldr r0, _080C65F4 @ =gFieldEffectArguments ldr r0, [r0, 0x1C] cmp r0, 0 beq _080C65E2 @@ -1195,7 +1195,7 @@ _080C65EE: pop {r0} bx r0 .align 2, 0 -_080C65F4: .4byte gFieldEffectSpawnParams +_080C65F4: .4byte gFieldEffectArguments _080C65F8: .4byte sub_80C65FC thumb_func_end sub_80C65C4 @@ -1212,7 +1212,7 @@ sub_80C65FC: @ 80C65FC thumb_func_start sub_80C660C sub_80C660C: @ 80C660C push {lr} - ldr r1, _080C6620 @ =gFieldEffectSpawnParams + ldr r1, _080C6620 @ =gFieldEffectArguments ldr r0, _080C6624 @ =gLastFieldPokeMenuOpened ldrb r0, [r0] str r0, [r1] @@ -1221,7 +1221,7 @@ sub_80C660C: @ 80C660C pop {r0} bx r0 .align 2, 0 -_080C6620: .4byte gFieldEffectSpawnParams +_080C6620: .4byte gFieldEffectArguments _080C6624: .4byte gLastFieldPokeMenuOpened _080C6628: .4byte gUnknown_081A2D96 thumb_func_end sub_80C660C @@ -1275,7 +1275,7 @@ FldEff_SecretPowerShrub: @ 80C666C ldrh r1, [r2, 0x2] lsls r1, 23 lsrs r1, 23 - ldr r4, _080C66B8 @ =gFieldEffectSpawnParams + ldr r4, _080C66B8 @ =gFieldEffectArguments ldr r3, [r4, 0x14] adds r1, r3 lsls r1, 16 @@ -1295,7 +1295,7 @@ FldEff_SecretPowerShrub: @ 80C666C _080C66AC: .4byte gSpriteTemplate_83D2644 _080C66B0: .4byte gSprites _080C66B4: .4byte gPlayerAvatar -_080C66B8: .4byte gFieldEffectSpawnParams +_080C66B8: .4byte gFieldEffectArguments thumb_func_end FldEff_SecretPowerShrub thumb_func_start sub_80C66BC @@ -2103,7 +2103,7 @@ FldEff_SandPillar: @ 80C6D3C mov r0, sp adds r1, r4, 0 bl GetXYCoordsOneStepInFrontOfPlayer - ldr r1, _080C6D78 @ =gFieldEffectSpawnParams + ldr r1, _080C6D78 @ =gFieldEffectArguments mov r0, sp movs r2, 0 ldrsh r0, [r0, r2] @@ -2122,7 +2122,7 @@ FldEff_SandPillar: @ 80C6D3C beq _080C6D86 b _080C6E4C .align 2, 0 -_080C6D78: .4byte gFieldEffectSpawnParams +_080C6D78: .4byte gFieldEffectArguments _080C6D7C: cmp r0, 0x3 beq _080C6DEC @@ -2240,7 +2240,7 @@ SpriteCB_SandPillar_0: @ 80C6E64 adds r5, r0, 0 movs r0, 0x83 bl PlaySE - ldr r4, _080C6E90 @ =gFieldEffectSpawnParams + ldr r4, _080C6E90 @ =gFieldEffectArguments ldr r0, [r4, 0x14] ldr r1, [r4, 0x18] subs r1, 0x1 @@ -2255,7 +2255,7 @@ SpriteCB_SandPillar_0: @ 80C6E64 bl MapGridSetMetatileIdAt b _080C6EAA .align 2, 0 -_080C6E90: .4byte gFieldEffectSpawnParams +_080C6E90: .4byte gFieldEffectArguments _080C6E94: .4byte 0x00000286 _080C6E98: .4byte 0x00000e02 _080C6E9C: @@ -2266,7 +2266,7 @@ _080C6E9C: lsls r2, 2 bl MapGridSetMetatileIdAt _080C6EAA: - ldr r4, _080C6ED8 @ =gFieldEffectSpawnParams + ldr r4, _080C6ED8 @ =gFieldEffectArguments ldr r0, [r4, 0x14] ldr r1, [r4, 0x18] ldr r2, _080C6EDC @ =0x0000020a @@ -2286,7 +2286,7 @@ _080C6EAA: pop {r0} bx r0 .align 2, 0 -_080C6ED8: .4byte gFieldEffectSpawnParams +_080C6ED8: .4byte gFieldEffectArguments _080C6EDC: .4byte 0x0000020a _080C6EE0: .4byte SpriteCB_SandPillar_1 thumb_func_end SpriteCB_SandPillar_0 @@ -2304,7 +2304,7 @@ SpriteCB_SandPillar_1: @ 80C6EE4 strh r0, [r5, 0x2E] b _080C6F14 _080C6EF8: - ldr r4, _080C6F1C @ =gFieldEffectSpawnParams + ldr r4, _080C6F1C @ =gFieldEffectArguments ldr r0, [r4, 0x14] ldr r1, [r4, 0x18] ldr r2, _080C6F20 @ =0x00000e8c @@ -2321,7 +2321,7 @@ _080C6F14: pop {r0} bx r0 .align 2, 0 -_080C6F1C: .4byte gFieldEffectSpawnParams +_080C6F1C: .4byte gFieldEffectArguments _080C6F20: .4byte 0x00000e8c _080C6F24: .4byte SpriteCB_SandPillar_2 thumb_func_end SpriteCB_SandPillar_1 diff --git a/include/field_effect.h b/include/field_effect.h index 62e17b53c..a509697e4 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -253,6 +253,6 @@ void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8); void sub_80878A8(void); void sub_8087BA8(void); -extern u32 gFieldEffectSpawnParams[8]; +extern u32 gFieldEffectArguments[8]; #endif // GUARD_FIELD_EFFECT_H diff --git a/src/battle_transition.c b/src/battle_transition.c index fd6eab491..ffa48d8dd 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -994,10 +994,10 @@ static bool8 Phase2_Transition_PokeballsTrail_Func2(struct Task* task) rand = Random() & 1; for (i = 0; i <= 4; i++, rand ^= 1) { - gFieldEffectSpawnParams[0] = arr0[rand]; // x - gFieldEffectSpawnParams[1] = (i * 32) + 16; // y - gFieldEffectSpawnParams[2] = rand; - gFieldEffectSpawnParams[3] = arr1[i]; + gFieldEffectArguments[0] = arr0[rand]; // x + gFieldEffectArguments[1] = (i * 32) + 16; // y + gFieldEffectArguments[2] = rand; + gFieldEffectArguments[3] = arr1[i]; FieldEffectStart(FLDEFF_POKEBALL); } @@ -1017,14 +1017,14 @@ static bool8 Phase2_Transition_PokeballsTrail_Func3(struct Task* task) bool8 FldEff_Pokeball(void) { - u8 spriteID = CreateSpriteAtEnd(&sSpriteTemplate_83FD98C, gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0); + u8 spriteID = CreateSpriteAtEnd(&sSpriteTemplate_83FD98C, gFieldEffectArguments[0], gFieldEffectArguments[1], 0); gSprites[spriteID].oam.priority = 0; gSprites[spriteID].oam.affineMode = 1; - gSprites[spriteID].data0 = gFieldEffectSpawnParams[2]; - gSprites[spriteID].data1 = gFieldEffectSpawnParams[3]; + gSprites[spriteID].data0 = gFieldEffectArguments[2]; + gSprites[spriteID].data1 = gFieldEffectArguments[3]; gSprites[spriteID].data2 = -1; InitSpriteAffineAnim(&gSprites[spriteID]); - StartSpriteAffineAnim(&gSprites[spriteID], gFieldEffectSpawnParams[2]); + StartSpriteAffineAnim(&gSprites[spriteID], gFieldEffectArguments[2]); return FALSE; } diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c index f6bd9e056..63c601acf 100644 --- a/src/braille_puzzles.c +++ b/src/braille_puzzles.c @@ -105,7 +105,7 @@ bool8 ShouldDoBrailleFlyEffect(void) void DoBrailleFlyEffect(void) { - gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; FieldEffectStart(0x3C); } diff --git a/src/field_effect.c b/src/field_effect.c index 164c74657..2f8200708 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -28,7 +28,7 @@ #define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))} -EWRAM_DATA u32 gFieldEffectSpawnParams[8] = {0}; +EWRAM_DATA u32 gFieldEffectArguments[8] = {0}; const u32 gSpriteImage_839DC14[] = INCBIN_U32("graphics/birch_speech/birch.4bpp"); const u16 gBirchPalette[16] = INCBIN_U16("graphics/birch_speech/birch.gbapal"); @@ -1203,10 +1203,10 @@ void task00_8084310(u8 taskId) { return; } - gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; - if ((int)gFieldEffectSpawnParams[0] > 5) + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + if ((int)gFieldEffectArguments[0] > 5) { - gFieldEffectSpawnParams[0] = 0; + gFieldEffectArguments[0] = 0; } FieldEffectStart(FLDEFF_USE_FLY); task->data[0]++; @@ -1665,7 +1665,7 @@ bool8 FldEff_UseWaterfall(void) { u8 taskId; taskId = CreateTask(sub_8086F64, 0xff); - gTasks[taskId].data[1] = gFieldEffectSpawnParams[0]; + gTasks[taskId].data[1] = gFieldEffectArguments[0]; sub_8086F64(taskId); return FALSE; } @@ -1689,7 +1689,7 @@ bool8 waterfall_1_do_anim_probably(struct Task *task, struct MapObject *mapObjec if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject)) { FieldObjectClearAnimIfSpecialAnimFinished(mapObject); - gFieldEffectSpawnParams[0] = task->data[1]; + gFieldEffectArguments[0] = task->data[1]; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); task->data[0]++; } @@ -1738,8 +1738,8 @@ bool8 FldEff_UseDive(void) { u8 taskId; taskId = CreateTask(Task_Dive, 0xff); - gTasks[taskId].data[15] = gFieldEffectSpawnParams[0]; - gTasks[taskId].data[14] = gFieldEffectSpawnParams[1]; + gTasks[taskId].data[15] = gFieldEffectArguments[0]; + gTasks[taskId].data[14] = gFieldEffectArguments[1]; Task_Dive(taskId); return FALSE; } @@ -1759,7 +1759,7 @@ bool8 sub_8087124(struct Task *task) bool8 dive_2_unknown(struct Task *task) { ScriptContext2_Enable(); - gFieldEffectSpawnParams[0] = task->data[15]; + gFieldEffectArguments[0] = task->data[15]; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); task->data[0]++; return FALSE; @@ -1820,10 +1820,10 @@ bool8 sub_8087298(struct Task *task, struct MapObject *mapObject, struct Sprite { sprite->pos2.y = 0; task->data[3] = 1; - gFieldEffectSpawnParams[0] = mapObject->coords2.x; - gFieldEffectSpawnParams[1] = mapObject->coords2.y; - gFieldEffectSpawnParams[2] = sprite->subpriority - 1; - gFieldEffectSpawnParams[3] = sprite->oam.priority; + gFieldEffectArguments[0] = mapObject->coords2.x; + gFieldEffectArguments[1] = mapObject->coords2.y; + gFieldEffectArguments[2] = sprite->subpriority - 1; + gFieldEffectArguments[3] = sprite->oam.priority; FieldEffectStart(FLDEFF_LAVARIDGE_GYM_WARP); PlaySE(SE_W153); task->data[0]++; @@ -1924,10 +1924,10 @@ bool8 sub_80874FC(struct Task *task, struct MapObject *mapObject, struct Sprite { if (sub_807D770()) { - gFieldEffectSpawnParams[0] = mapObject->coords2.x; - gFieldEffectSpawnParams[1] = mapObject->coords2.y; - gFieldEffectSpawnParams[2] = sprite->subpriority - 1; - gFieldEffectSpawnParams[3] = sprite->oam.priority; + gFieldEffectArguments[0] = mapObject->coords2.x; + gFieldEffectArguments[1] = mapObject->coords2.y; + gFieldEffectArguments[2] = sprite->subpriority - 1; + gFieldEffectArguments[3] = sprite->oam.priority; task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH); task->data[0]++; } @@ -1966,9 +1966,9 @@ extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36] u8 FldEff_LavaridgeGymWarp(void) { u8 spriteId; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[33], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); - gSprites[spriteId].oam.priority = gFieldEffectSpawnParams[3]; + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[33], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + gSprites[spriteId].oam.priority = gFieldEffectArguments[3]; gSprites[spriteId].coordOffsetEnabled = 1; return spriteId; } @@ -2009,10 +2009,10 @@ bool8 sub_80876F8(struct Task *task, struct MapObject *mapObject, struct Sprite { if (task->data[1] > 3) { - gFieldEffectSpawnParams[0] = mapObject->coords2.x; - gFieldEffectSpawnParams[1] = mapObject->coords2.y; - gFieldEffectSpawnParams[2] = sprite->subpriority - 1; - gFieldEffectSpawnParams[3] = sprite->oam.priority; + gFieldEffectArguments[0] = mapObject->coords2.x; + gFieldEffectArguments[1] = mapObject->coords2.y; + gFieldEffectArguments[2] = sprite->subpriority - 1; + gFieldEffectArguments[3] = sprite->oam.priority; task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH); task->data[0]++; } else @@ -2064,9 +2064,9 @@ bool8 sub_80877D4(struct Task *task, struct MapObject *mapObject, struct Sprite u8 FldEff_PopOutOfAsh(void) { u8 spriteId; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[32], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); - gSprites[spriteId].oam.priority = gFieldEffectSpawnParams[3]; + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[32], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + gSprites[spriteId].oam.priority = gFieldEffectArguments[3]; gSprites[spriteId].coordOffsetEnabled = 1; return spriteId; } @@ -2392,19 +2392,19 @@ bool8 FldEff_FieldMoveShowMon(void) { taskId = CreateTask(sub_808847C, 0xff); } - gTasks[taskId].data[15] = sub_8088830(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + gTasks[taskId].data[15] = sub_8088830(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); return FALSE; } bool8 FldEff_FieldMoveShowMonInit(void) { struct Pokemon *pokemon; - u32 flag = gFieldEffectSpawnParams[0] & 0x80000000; - pokemon = &gPlayerParty[(u8)gFieldEffectSpawnParams[0]]; - gFieldEffectSpawnParams[0] = GetMonData(pokemon, MON_DATA_SPECIES); - gFieldEffectSpawnParams[1] = GetMonData(pokemon, MON_DATA_OT_ID); - gFieldEffectSpawnParams[2] = GetMonData(pokemon, MON_DATA_PERSONALITY); - gFieldEffectSpawnParams[0] |= flag; + u32 flag = gFieldEffectArguments[0] & 0x80000000; + pokemon = &gPlayerParty[(u8)gFieldEffectArguments[0]]; + gFieldEffectArguments[0] = GetMonData(pokemon, MON_DATA_SPECIES); + gFieldEffectArguments[1] = GetMonData(pokemon, MON_DATA_OT_ID); + gFieldEffectArguments[2] = GetMonData(pokemon, MON_DATA_PERSONALITY); + gFieldEffectArguments[0] |= flag; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON); FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); return FALSE; @@ -2879,7 +2879,7 @@ u8 FldEff_UseSurf(void) { u8 taskId; taskId = CreateTask(sub_8088954, 0xff); - gTasks[taskId].data[15] = gFieldEffectSpawnParams[0]; + gTasks[taskId].data[15] = gFieldEffectArguments[0]; sav1_reset_battle_music_maybe(); sub_8053FB0(0x016d); return FALSE; @@ -2919,7 +2919,7 @@ void sub_8088A30(struct Task *task) mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(mapObject)) { - gFieldEffectSpawnParams[0] = task->data[15] | 0x80000000; + gFieldEffectArguments[0] = task->data[15] | 0x80000000; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); task->data[0]++; } @@ -2934,9 +2934,9 @@ void sub_8088A78(struct Task *task) sub_805B980(mapObject, GetPlayerAvatarGraphicsIdByStateId(3)); FieldObjectClearAnimIfSpecialAnimFinished(mapObject); FieldObjectSetSpecialAnim(mapObject, sub_80608D0(mapObject->placeholder18)); - gFieldEffectSpawnParams[0] = task->data[1]; - gFieldEffectSpawnParams[1] = task->data[2]; - gFieldEffectSpawnParams[2] = gPlayerAvatar.mapObjectId; + gFieldEffectArguments[0] = task->data[1]; + gFieldEffectArguments[1] = task->data[2]; + gFieldEffectArguments[2] = gPlayerAvatar.mapObjectId; mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_SURF_BLOB); task->data[0]++; } @@ -2970,7 +2970,7 @@ u8 FldEff_NPCFlyOut(void) sprite->oam.paletteNum = 0; sprite->oam.priority = 1; sprite->callback = sub_8088BC4; - sprite->data1 = gFieldEffectSpawnParams[0]; + sprite->data1 = gFieldEffectArguments[0]; PlaySE(SE_W019); return spriteId; } @@ -3009,7 +3009,7 @@ u8 FldEff_UseFly(void) { u8 taskId; taskId = CreateTask(sub_8088C70, 0xfe); - gTasks[taskId].data[1] = gFieldEffectSpawnParams[0]; + gTasks[taskId].data[1] = gFieldEffectArguments[0]; return 0; } @@ -3040,7 +3040,7 @@ void sub_8088CF8(struct Task *task) if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject)) { task->data[0]++; - gFieldEffectSpawnParams[0] = task->data[1]; + gFieldEffectArguments[0] = task->data[1]; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); } } diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 1152c39bc..2ad8bdce3 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -243,15 +243,15 @@ u32 FldEff_Shadow(void) const struct MapObjectGraphicsInfo *graphicsInfo; u8 spriteId; - mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[gUnknown_08401E32[graphicsInfo->shadowSize]], 0, 0, 0x94); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].data0 = gFieldEffectSpawnParams[0]; - gSprites[spriteId].data1 = gFieldEffectSpawnParams[1]; - gSprites[spriteId].data2 = gFieldEffectSpawnParams[2]; + gSprites[spriteId].data0 = gFieldEffectArguments[0]; + gSprites[spriteId].data1 = gFieldEffectArguments[1]; + gSprites[spriteId].data2 = gFieldEffectArguments[2]; gSprites[spriteId].data3 = (graphicsInfo->height >> 1) - gUnknown_08401E36[graphicsInfo->shadowSize]; } return 0; @@ -288,22 +288,22 @@ u32 FldEff_TallGrass(void) u8 spriteId; struct Sprite *sprite; - x = gFieldEffectSpawnParams[0]; - y = gFieldEffectSpawnParams[1]; + x = gFieldEffectArguments[0]; + y = gFieldEffectArguments[1]; sub_8060470(&x, &y, 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[4], x, y, 0); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; - sprite->data0 = gFieldEffectSpawnParams[2]; - sprite->data1 = gFieldEffectSpawnParams[0]; - sprite->data2 = gFieldEffectSpawnParams[1]; - sprite->data3 = gFieldEffectSpawnParams[4]; - sprite->data4 = gFieldEffectSpawnParams[5]; - sprite->data5 = gFieldEffectSpawnParams[6]; - if (gFieldEffectSpawnParams[7]) + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; + sprite->data1 = gFieldEffectArguments[0]; + sprite->data2 = gFieldEffectArguments[1]; + sprite->data3 = gFieldEffectArguments[4]; + sprite->data4 = gFieldEffectArguments[5]; + sprite->data5 = gFieldEffectArguments[6]; + if (gFieldEffectArguments[7]) { SeekSpriteAnim(sprite, 4); } @@ -358,14 +358,14 @@ u32 FldEff_JumpTallGrass(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 12); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[10], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[10], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; - sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; sprite->data1 = 12; } return 0; @@ -397,22 +397,22 @@ u32 FldEff_LongGrass(void) u8 spriteId; struct Sprite *sprite; - x = gFieldEffectSpawnParams[0]; - y = gFieldEffectSpawnParams[1]; + x = gFieldEffectArguments[0]; + y = gFieldEffectArguments[1]; sub_8060470(&x, &y, 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[15], x, y, 0); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = ZCoordToPriority(gFieldEffectSpawnParams[2]); - sprite->data0 = gFieldEffectSpawnParams[2]; - sprite->data1 = gFieldEffectSpawnParams[0]; - sprite->data2 = gFieldEffectSpawnParams[1]; - sprite->data3 = gFieldEffectSpawnParams[4]; - sprite->data4 = gFieldEffectSpawnParams[5]; - sprite->data5 = gFieldEffectSpawnParams[6]; - if (gFieldEffectSpawnParams[7]) + sprite->oam.priority = ZCoordToPriority(gFieldEffectArguments[2]); + sprite->data0 = gFieldEffectArguments[2]; + sprite->data1 = gFieldEffectArguments[0]; + sprite->data2 = gFieldEffectArguments[1]; + sprite->data3 = gFieldEffectArguments[4]; + sprite->data4 = gFieldEffectArguments[5]; + sprite->data5 = gFieldEffectArguments[6]; + if (gFieldEffectArguments[7]) { SeekSpriteAnim(sprite, 6); } @@ -462,14 +462,14 @@ u32 FldEff_JumpLongGrass(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[16], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[16], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; - sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; sprite->data1 = 18; } return 0; @@ -482,7 +482,7 @@ u32 FldEff_ShortGrass(void) u8 spriteId; struct Sprite *sprite; - mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); mapObject = &gMapObjects[mapObjectId]; spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[30], 0, 0, 0); if (spriteId != MAX_SPRITES) @@ -490,9 +490,9 @@ u32 FldEff_ShortGrass(void) sprite = &(gSprites[spriteId]); sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; - sprite->data0 = gFieldEffectSpawnParams[0]; - sprite->data1 = gFieldEffectSpawnParams[1]; - sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; sprite->data3 = gSprites[mapObject->spriteId].pos1.x; sprite->data4 = gSprites[mapObject->spriteId].pos1.y; } @@ -540,15 +540,15 @@ u32 FldEff_SandFootprints(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[11], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[11], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->oam.priority = gFieldEffectArguments[3]; sprite->data7 = FLDEFF_SAND_FOOTPRINTS; - StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]); + StartSpriteAnim(sprite, gFieldEffectArguments[4]); } return 0; } @@ -558,15 +558,15 @@ u32 FldEff_DeepSandFootprints(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[23], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[23], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->oam.priority = gFieldEffectArguments[3]; sprite->data7 = FLDEFF_DEEP_SAND_FOOTPRINTS; - StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]); + StartSpriteAnim(sprite, gFieldEffectArguments[4]); } return spriteId; } @@ -576,15 +576,15 @@ u32 FldEff_BikeTireTracks(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[27], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[27], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->oam.priority = gFieldEffectArguments[3]; sprite->data7 = FLDEFF_BIKE_TIRE_TRACKS; - StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]); + StartSpriteAnim(sprite, gFieldEffectArguments[4]); } return spriteId; } @@ -623,7 +623,7 @@ u32 FldEff_Splash(void) const struct MapObjectGraphicsInfo *graphicsInfo; struct Sprite *linkedSprite; - mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); mapObject = &gMapObjects[mapObjectId]; spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0); if (spriteId != MAX_SPRITES) @@ -633,9 +633,9 @@ u32 FldEff_Splash(void) sprite->coordOffsetEnabled = TRUE; linkedSprite = &gSprites[mapObject->spriteId]; sprite->oam.priority = linkedSprite->oam.priority; - sprite->data0 = gFieldEffectSpawnParams[0]; - sprite->data1 = gFieldEffectSpawnParams[1]; - sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; sprite->pos2.y = (graphicsInfo->height >> 1) - 4; PlaySE(SE_MIZU); } @@ -663,14 +663,14 @@ u32 FldEff_JumpSmallSplash(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 12); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[14], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[14], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; - sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; sprite->data1 = FLDEFF_JUMP_SMALL_SPLASH; } return 0; @@ -681,14 +681,14 @@ u32 FldEff_JumpBigSplash(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[12], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[12], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; - sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; sprite->data1 = FLDEFF_JUMP_BIG_SPLASH; } return 0; @@ -702,7 +702,7 @@ u32 FldEff_FeetInFlowingWater(void) struct Sprite *sprite; const struct MapObjectGraphicsInfo *graphicsInfo; - mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); mapObject = &gMapObjects[mapObjectId]; spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0); if (spriteId != MAX_SPRITES) @@ -712,9 +712,9 @@ u32 FldEff_FeetInFlowingWater(void) sprite->callback = sub_81278D8; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; - sprite->data0 = gFieldEffectSpawnParams[0]; - sprite->data1 = gFieldEffectSpawnParams[1]; - sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; sprite->data3 = -1; sprite->data4 = -1; sprite->pos2.y = (graphicsInfo->height >> 1) - 4; @@ -758,12 +758,12 @@ u32 FldEff_Ripple(void) u8 spriteId; struct Sprite *sprite; - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[5], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[5], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->oam.priority = gFieldEffectArguments[3]; sprite->data0 = FLDEFF_RIPPLE; } return 0; @@ -776,7 +776,7 @@ u32 FldEff_HotSpringsWater(void) u8 spriteId; struct Sprite *sprite; - mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); mapObject = &gMapObjects[mapObjectId]; spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[31], 0, 0, 0); if (spriteId != MAX_SPRITES) @@ -784,9 +784,9 @@ u32 FldEff_HotSpringsWater(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; - sprite->data0 = gFieldEffectSpawnParams[0]; - sprite->data1 = gFieldEffectSpawnParams[1]; - sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; sprite->data3 = gSprites[mapObject->spriteId].pos1.x; sprite->data4 = gSprites[mapObject->spriteId].pos1.y; } @@ -819,13 +819,13 @@ u32 FldEff_Unknown19(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[17], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[17], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->oam.priority = gFieldEffectArguments[3]; sprite->data0 = FLDEFF_UNKNOWN_19; } return 0; @@ -836,13 +836,13 @@ u32 FldEff_Unknown20(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[18], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[18], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->oam.priority = gFieldEffectArguments[3]; sprite->data0 = FLDEFF_UNKNOWN_20; } return 0; @@ -853,13 +853,13 @@ u32 FldEff_Unknown21(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[19], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[19], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->oam.priority = gFieldEffectArguments[3]; sprite->data0 = FLDEFF_UNKNOWN_21; } return 0; @@ -870,13 +870,13 @@ u32 FldEff_Unknown22(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[20], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[20], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->oam.priority = gFieldEffectArguments[3]; sprite->data0 = FLDEFF_UNKNOWN_22; } return 0; @@ -884,12 +884,12 @@ u32 FldEff_Unknown22(void) void ash(s16 x, s16 y, u16 c, s16 d) { - gFieldEffectSpawnParams[0] = x; - gFieldEffectSpawnParams[1] = y; - gFieldEffectSpawnParams[2] = 0x52; - gFieldEffectSpawnParams[3] = 1; - gFieldEffectSpawnParams[4] = c; - gFieldEffectSpawnParams[5] = d; + gFieldEffectArguments[0] = x; + gFieldEffectArguments[1] = y; + gFieldEffectArguments[2] = 0x52; + gFieldEffectArguments[3] = 1; + gFieldEffectArguments[4] = c; + gFieldEffectArguments[5] = d; FieldEffectStart(FLDEFF_ASH); } @@ -900,19 +900,19 @@ u32 FldEff_Ash(void) u8 spriteId; struct Sprite *sprite; - x = gFieldEffectSpawnParams[0]; - y = gFieldEffectSpawnParams[1]; + x = gFieldEffectArguments[0]; + y = gFieldEffectArguments[1]; sub_8060470(&x, &y, 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[6], x, y, gFieldEffectSpawnParams[2]); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[6], x, y, gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; - sprite->data1 = gFieldEffectSpawnParams[0]; - sprite->data2 = gFieldEffectSpawnParams[1]; - sprite->data3 = gFieldEffectSpawnParams[4]; - sprite->data4 = gFieldEffectSpawnParams[5]; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data1 = gFieldEffectArguments[0]; + sprite->data2 = gFieldEffectArguments[1]; + sprite->data3 = gFieldEffectArguments[4]; + sprite->data4 = gFieldEffectArguments[5]; } return 0; } @@ -956,14 +956,14 @@ u32 FldEff_SurfBlob(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[7], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0x96); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[7], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x96); if (spriteId !=MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.paletteNum = 0; - sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data2 = gFieldEffectArguments[2]; sprite->data3 = -1; sprite->data6 = -1; sprite->data7 = -1; @@ -1199,14 +1199,14 @@ u32 FldEff_Dust(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 12); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[9], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[9], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; - sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; sprite->data1 = 10; } return 0; @@ -1220,7 +1220,7 @@ u32 FldEff_SandPile(void) struct Sprite *sprite; const struct MapObjectGraphicsInfo *graphicsInfo; - mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); mapObject = &gMapObjects[mapObjectId]; spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[29], 0, 0, 0); if (spriteId != MAX_SPRITES) @@ -1229,9 +1229,9 @@ u32 FldEff_SandPile(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; - sprite->data0 = gFieldEffectSpawnParams[0]; - sprite->data1 = gFieldEffectSpawnParams[1]; - sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; sprite->data3 = gSprites[mapObject->spriteId].pos1.x; sprite->data4 = gSprites[mapObject->spriteId].pos1.y; sprite->pos2.y = (graphicsInfo->height >> 1) - 2; @@ -1275,8 +1275,8 @@ u32 FldEff_Bubbles(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 0); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[34], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0x52); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 0); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[34], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x52); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; @@ -1303,13 +1303,13 @@ u32 FldEff_BerryTreeGrowthSparkle(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 4); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[22], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 4); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[22], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->oam.priority = gFieldEffectArguments[3]; sprite->oam.paletteNum = 5; sprite->data0 = FLDEFF_BERRY_TREE_GROWTH_SPARKLE; } @@ -1338,7 +1338,7 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum) u8 spriteId; struct Sprite *sprite; - if (TryGetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2], &spriteId)) + if (TryGetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2], &spriteId)) { FieldEffectActiveListRemove(fldEff); return MAX_SPRITES; @@ -1350,9 +1350,9 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum) sprite->coordOffsetEnabled ++; sprite->oam.paletteNum = paletteNum; sprite->data1 = fldEff; - sprite->data2 = gFieldEffectSpawnParams[0]; - sprite->data3 = gFieldEffectSpawnParams[1]; - sprite->data4 = gFieldEffectSpawnParams[2]; + sprite->data2 = gFieldEffectArguments[0]; + sprite->data3 = gFieldEffectArguments[1]; + sprite->data4 = gFieldEffectArguments[2]; } return spriteId; } @@ -1424,13 +1424,13 @@ u32 FldEff_Sparkle(void) { u8 spriteId; - gFieldEffectSpawnParams[0] += 7; - gFieldEffectSpawnParams[1] += 7; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[35], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0x52); + gFieldEffectArguments[0] += 7; + gFieldEffectArguments[1] += 7; + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[35], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x52); if (spriteId != MAX_SPRITES) { - gSprites[spriteId].oam.priority = gFieldEffectSpawnParams[2]; + gSprites[spriteId].oam.priority = gFieldEffectArguments[2]; gSprites[spriteId].coordOffsetEnabled = TRUE; } return 0; diff --git a/src/field_ground_effect.c b/src/field_ground_effect.c index e50811a78..2a398ba22 100644 --- a/src/field_ground_effect.c +++ b/src/field_ground_effect.c @@ -460,18 +460,18 @@ void GroundEffect_SpawnOnTallGrass(struct MapObject *mapObj, struct Sprite *spri { u8 *ptr; - gFieldEffectSpawnParams[0] = mapObj->coords2.x; - gFieldEffectSpawnParams[1] = mapObj->coords2.y; - gFieldEffectSpawnParams[2] = mapObj->elevation; - gFieldEffectSpawnParams[3] = 2; - gFieldEffectSpawnParams[4] = (mapObj->localId << 8) | mapObj->mapNum; - gFieldEffectSpawnParams[5] = mapObj->mapGroup; + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum; + gFieldEffectArguments[5] = mapObj->mapGroup; ptr = (u8 *)&gSaveBlock1; - gFieldEffectSpawnParams[6] = ((u8)gSaveBlock1.location.mapNum << 8) + gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup; - gFieldEffectSpawnParams[7] = 1; + gFieldEffectArguments[7] = 1; FieldEffectStart(4); } @@ -479,18 +479,18 @@ void sub_8063E94(struct MapObject *mapObj, struct Sprite *sprite) { u8 *ptr; - gFieldEffectSpawnParams[0] = mapObj->coords2.x; - gFieldEffectSpawnParams[1] = mapObj->coords2.y; - gFieldEffectSpawnParams[2] = mapObj->elevation; - gFieldEffectSpawnParams[3] = 2; - gFieldEffectSpawnParams[4] = (mapObj->localId << 8) | mapObj->mapNum; - gFieldEffectSpawnParams[5] = mapObj->mapGroup; + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum; + gFieldEffectArguments[5] = mapObj->mapGroup; ptr = (u8 *)&gSaveBlock1; - gFieldEffectSpawnParams[6] = ((u8)gSaveBlock1.location.mapNum << 8) + gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup; - gFieldEffectSpawnParams[7] = 0; + gFieldEffectArguments[7] = 0; FieldEffectStart(4); } @@ -498,18 +498,18 @@ void sub_8063EE0(struct MapObject *mapObj, struct Sprite *sprite) { u8 *ptr; - gFieldEffectSpawnParams[0] = mapObj->coords2.x; - gFieldEffectSpawnParams[1] = mapObj->coords2.y; - gFieldEffectSpawnParams[2] = mapObj->elevation; - gFieldEffectSpawnParams[3] = 2; - gFieldEffectSpawnParams[4] = (mapObj->localId << 8) | mapObj->mapNum; - gFieldEffectSpawnParams[5] = mapObj->mapGroup; + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum; + gFieldEffectArguments[5] = mapObj->mapGroup; ptr = (u8 *)&gSaveBlock1; - gFieldEffectSpawnParams[6] = ((u8)gSaveBlock1.location.mapNum << 8) + gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup; - gFieldEffectSpawnParams[7] = 1; + gFieldEffectArguments[7] = 1; FieldEffectStart(17); } @@ -517,18 +517,18 @@ void sub_8063F2C(struct MapObject *mapObj, struct Sprite *sprite) { u8 *ptr; - gFieldEffectSpawnParams[0] = mapObj->coords2.x; - gFieldEffectSpawnParams[1] = mapObj->coords2.y; - gFieldEffectSpawnParams[2] = mapObj->elevation; - gFieldEffectSpawnParams[3] = 2; - gFieldEffectSpawnParams[4] = (mapObj->localId << 8) | mapObj->mapNum; - gFieldEffectSpawnParams[5] = mapObj->mapGroup; + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum; + gFieldEffectArguments[5] = mapObj->mapGroup; ptr = (u8 *)&gSaveBlock1; - gFieldEffectSpawnParams[6] = ((u8)gSaveBlock1.location.mapNum << 8) + gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup; - gFieldEffectSpawnParams[7] = 0; + gFieldEffectArguments[7] = 0; FieldEffectStart(17); } @@ -572,11 +572,11 @@ static void DoTracksGroundEffect_Footprints(struct MapObject *mapObj, struct Spr // First half-word is a Field Effect script id. (gFieldEffectScriptPointers) u16 sandFootprints_FieldEffectData[2] = { 0xD, 0x18 }; - gFieldEffectSpawnParams[0] = mapObj->coords3.x; - gFieldEffectSpawnParams[1] = mapObj->coords3.y; - gFieldEffectSpawnParams[2] = 149; - gFieldEffectSpawnParams[3] = 2; - gFieldEffectSpawnParams[4] = mapObj->mapobj_unk_18; + gFieldEffectArguments[0] = mapObj->coords3.x; + gFieldEffectArguments[1] = mapObj->coords3.y; + gFieldEffectArguments[2] = 149; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = mapObj->mapobj_unk_18; FieldEffectStart(sandFootprints_FieldEffectData[a]); } @@ -598,11 +598,11 @@ static void DoTracksGroundEffect_BikeTireTracks( if (mapObj->coords2.x != mapObj->coords3.x || mapObj->coords2.y != mapObj->coords3.y) { - gFieldEffectSpawnParams[0] = mapObj->coords3.x; - gFieldEffectSpawnParams[1] = mapObj->coords3.y; - gFieldEffectSpawnParams[2] = 149; - gFieldEffectSpawnParams[3] = 2; - gFieldEffectSpawnParams[4] = + gFieldEffectArguments[0] = mapObj->coords3.x; + gFieldEffectArguments[1] = mapObj->coords3.y; + gFieldEffectArguments[2] = 149; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = bikeTireTracks_Transitions[mapObj->mapobj_unk_20][mapObj->mapobj_unk_18 - 5]; FieldEffectStart(FLDEFF_BIKE_TIRE_TRACKS); } @@ -627,10 +627,10 @@ void GroundEffect_JumpOnTallGrass(struct MapObject *mapObj, struct Sprite *sprit { u8 spriteId; - gFieldEffectSpawnParams[0] = mapObj->coords2.x; - gFieldEffectSpawnParams[1] = mapObj->coords2.y; - gFieldEffectSpawnParams[2] = mapObj->elevation; - gFieldEffectSpawnParams[3] = 2; + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = 2; FieldEffectStart(FLDEFF_JUMP_TALL_GRASS); spriteId = sub_8126FF0( @@ -642,37 +642,37 @@ void GroundEffect_JumpOnTallGrass(struct MapObject *mapObj, struct Sprite *sprit void GroundEffect_JumpOnLongGrass(struct MapObject *mapObj, struct Sprite *sprite) { - gFieldEffectSpawnParams[0] = mapObj->coords2.x; - gFieldEffectSpawnParams[1] = mapObj->coords2.y; - gFieldEffectSpawnParams[2] = mapObj->elevation; - gFieldEffectSpawnParams[3] = 2; + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = 2; FieldEffectStart(FLDEFF_JUMP_LONG_GRASS); } void GroundEffect_JumpOnShallowWater(struct MapObject *mapObj, struct Sprite *sprite) { - gFieldEffectSpawnParams[0] = mapObj->coords2.x; - gFieldEffectSpawnParams[1] = mapObj->coords2.y; - gFieldEffectSpawnParams[2] = mapObj->elevation; - gFieldEffectSpawnParams[3] = sprite->oam.priority; + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = sprite->oam.priority; FieldEffectStart(FLDEFF_JUMP_SMALL_SPLASH); } void GroundEffect_JumpOnWater(struct MapObject *mapObj, struct Sprite *sprite) { - gFieldEffectSpawnParams[0] = mapObj->coords2.x; - gFieldEffectSpawnParams[1] = mapObj->coords2.y; - gFieldEffectSpawnParams[2] = mapObj->elevation; - gFieldEffectSpawnParams[3] = sprite->oam.priority; + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = sprite->oam.priority; FieldEffectStart(FLDEFF_JUMP_BIG_SPLASH); } void GroundEffect_JumpLandingDust(struct MapObject *mapObj, struct Sprite *sprite) { - gFieldEffectSpawnParams[0] = mapObj->coords2.x; - gFieldEffectSpawnParams[1] = mapObj->coords2.y; - gFieldEffectSpawnParams[2] = mapObj->elevation; - gFieldEffectSpawnParams[3] = sprite->oam.priority; + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; + gFieldEffectArguments[2] = mapObj->elevation; + gFieldEffectArguments[3] = sprite->oam.priority; FieldEffectStart(FLDEFF_DUST); } @@ -688,8 +688,8 @@ void GroundEffect_HotSprings(struct MapObject *mapObj, struct Sprite *sprite) void GroundEffect_Seaweed(struct MapObject *mapObj, struct Sprite *sprite) { - gFieldEffectSpawnParams[0] = mapObj->coords2.x; - gFieldEffectSpawnParams[1] = mapObj->coords2.y; + gFieldEffectArguments[0] = mapObj->coords2.x; + gFieldEffectArguments[1] = mapObj->coords2.y; FieldEffectStart(FLDEFF_BUBBLES); } diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 479e4bfde..65241839a 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -3892,10 +3892,10 @@ u8 do_berry_tree_growth_sparkle_1(struct MapObject *mapObject, struct Sprite *sp { if (!(sprite->data7 & 4) && sprite->animNum == 4) { - gFieldEffectSpawnParams[0] = mapObject->coords2.x; - gFieldEffectSpawnParams[1] = mapObject->coords2.y; - gFieldEffectSpawnParams[2] = sprite->subpriority - 1; - gFieldEffectSpawnParams[3] = sprite->oam.priority; + gFieldEffectArguments[0] = mapObject->coords2.x; + gFieldEffectArguments[1] = mapObject->coords2.y; + gFieldEffectArguments[2] = sprite->subpriority - 1; + gFieldEffectArguments[3] = sprite->oam.priority; FieldEffectStart(0x17); sprite->animNum = 0; } @@ -3931,10 +3931,10 @@ u8 do_berry_tree_growth_sparkle_2(struct MapObject *mapObject, struct Sprite *sp sprite->data1 = 3; sprite->data2 = 0; sprite->data7 |= 2; - gFieldEffectSpawnParams[0] = mapObject->coords2.x; - gFieldEffectSpawnParams[1] = mapObject->coords2.y; - gFieldEffectSpawnParams[2] = sprite->subpriority - 1; - gFieldEffectSpawnParams[3] = sprite->oam.priority; + gFieldEffectArguments[0] = mapObject->coords2.x; + gFieldEffectArguments[1] = mapObject->coords2.y; + gFieldEffectArguments[2] = sprite->subpriority - 1; + gFieldEffectArguments[3] = sprite->oam.priority; FieldEffectStart(0x17); return 1; } @@ -5083,7 +5083,7 @@ void FieldObjectCB_TreeDisguise(struct Sprite *sprite) mapObject = &gMapObjects[sprite->data0]; if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data7 == 0)) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); mapObject->mapobj_unk_1A = FieldEffectStart(0x1c); mapObject->mapobj_unk_21 = 1; sprite->data7 ++; @@ -5103,7 +5103,7 @@ void FieldObjectCB_MountainDisguise(struct Sprite *sprite) mapObject = &gMapObjects[sprite->data0]; if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data7 == 0)) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); mapObject->mapobj_unk_1A = FieldEffectStart(0x1d); mapObject->mapobj_unk_21 = 1; sprite->data7 ++; @@ -7487,7 +7487,7 @@ bool8 sub_8062644(struct MapObject *mapObject, struct Sprite *sprite) bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *sprite) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); FieldEffectStart(0x0); sprite->data2 = 1; return TRUE; @@ -7495,7 +7495,7 @@ bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *s bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *sprite) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); FieldEffectStart(0x21); sprite->data2 = 1; return TRUE; @@ -7503,7 +7503,7 @@ bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *s bool8 do_heart_bubble(struct MapObject *mapObject, struct Sprite *sprite) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); FieldEffectStart(0x2e); sprite->data2 = 1; return TRUE; diff --git a/src/field_map_obj_helpers.c b/src/field_map_obj_helpers.c index d8cb33251..b3edd9591 100644 --- a/src/field_map_obj_helpers.c +++ b/src/field_map_obj_helpers.c @@ -294,7 +294,7 @@ void sub_8064990(u8 a1, u8 dir) u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct MapObject *mapObject) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]); + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); return FieldEffectStart(fieldEffectId); } @@ -310,9 +310,9 @@ void DoShadowFieldEffect(struct MapObject *mapObject) void DoRippleFieldEffect(struct MapObject *mapObject, struct Sprite *sprite) { const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); - gFieldEffectSpawnParams[0] = sprite->pos1.x; - gFieldEffectSpawnParams[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2; - gFieldEffectSpawnParams[2] = 151; - gFieldEffectSpawnParams[3] = 3; + gFieldEffectArguments[0] = sprite->pos1.x; + gFieldEffectArguments[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2; + gFieldEffectArguments[2] = 151; + gFieldEffectArguments[3] = 3; FieldEffectStart(5); } diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index b055036ea..e7636e57c 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -666,9 +666,9 @@ void PlayerAvatarTransition_Surfing(struct MapObject *a) sub_805B980(a, GetPlayerAvatarGraphicsIdByStateId(3)); FieldObjectTurn(a, a->placeholder18); SetPlayerAvatarStateMask(8); - gFieldEffectSpawnParams[0] = a->coords2.x; - gFieldEffectSpawnParams[1] = a->coords2.y; - gFieldEffectSpawnParams[2] = gPlayerAvatar.mapObjectId; + gFieldEffectArguments[0] = a->coords2.x; + gFieldEffectArguments[1] = a->coords2.y; + gFieldEffectArguments[2] = gPlayerAvatar.mapObjectId; unk = FieldEffectStart(8); a->mapobj_unk_1A = unk; sub_8127ED0(unk, 1); @@ -1226,10 +1226,10 @@ u8 sub_8059EA4(struct Task *task, struct MapObject *b, struct MapObject *c) FieldObjectClearAnimIfSpecialAnimFinished(c); FieldObjectSetSpecialAnim(b, GetStepInPlaceDelay16AnimId(task->data[2])); FieldObjectSetSpecialAnim(c, GetSimpleGoAnimId(task->data[2])); - gFieldEffectSpawnParams[0] = c->coords2.x; - gFieldEffectSpawnParams[1] = c->coords2.y; - gFieldEffectSpawnParams[2] = c->elevation; - gFieldEffectSpawnParams[3] = gSprites[c->spriteId].oam.priority; + gFieldEffectArguments[0] = c->coords2.x; + gFieldEffectArguments[1] = c->coords2.y; + gFieldEffectArguments[2] = c->elevation; + gFieldEffectArguments[3] = gSprites[c->spriteId].oam.priority; FieldEffectStart(10); PlaySE(SE_W070); task->data[0]++; diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c index d0fdd5139..2691f1a75 100644 --- a/src/fldeff_cut.c +++ b/src/fldeff_cut.c @@ -71,7 +71,7 @@ bool8 SetUpFieldMove_Cut(void) void sub_80A25E8(void) { FieldEffectStart(1); - gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; } bool8 FldEff_UseCutOnGrass(void) @@ -86,7 +86,7 @@ bool8 FldEff_UseCutOnGrass(void) void sub_80A2634(void) { - gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; ScriptContext1_SetupScript(&UseCutScript); } diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c index df05de52b..a63cbbbf1 100644 --- a/src/fldeff_flash.c +++ b/src/fldeff_flash.c @@ -62,7 +62,7 @@ bool8 SetUpFieldMove_Flash(void) void sub_810CBFC(void) { u8 taskId = oei_task_add(); - gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; gTasks[taskId].data[8] = (uintptr_t)sub_810CC34 >> 16; gTasks[taskId].data[9] = (uintptr_t)sub_810CC34; } diff --git a/src/fldeff_strength.c b/src/fldeff_strength.c index a5033e7b7..c641945d6 100644 --- a/src/fldeff_strength.c +++ b/src/fldeff_strength.c @@ -42,13 +42,13 @@ bool8 SetUpFieldMove_Strength(void) static void sub_811AA18(void) { - gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; ScriptContext1_SetupScript(UseStrengthScript); } static void sub_811AA38(void) { - gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; FieldEffectStart(40); } @@ -58,7 +58,7 @@ bool8 FldEff_UseStrength(void) gTasks[taskId].data[8] = (u32)sub_811AA9C >> 16; gTasks[taskId].data[9] = (u32)sub_811AA9C; - GetMonNickname(&gPlayerParty[gFieldEffectSpawnParams[0]], gStringVar1); + GetMonNickname(&gPlayerParty[gFieldEffectArguments[0]], gStringVar1); return FALSE; } diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c index 66fa3dae2..661092ea0 100644 --- a/src/fldeff_sweetscent.c +++ b/src/fldeff_sweetscent.c @@ -31,7 +31,7 @@ bool8 SetUpFieldMove_SweetScent(void) static void sub_812BFD4(void) { FieldEffectStart(51); - gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; } bool8 FldEff_SweetScent() diff --git a/src/fldeff_teleport.c b/src/fldeff_teleport.c index 8f75099dc..10fdcce6e 100644 --- a/src/fldeff_teleport.c +++ b/src/fldeff_teleport.c @@ -27,7 +27,7 @@ void hm_teleport_run_dp02scr(void) { new_game(); FieldEffectStart(63); - gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; } bool8 FldEff_UseTeleport(void) diff --git a/src/pokemon_menu.c b/src/pokemon_menu.c index 94801f1a2..0fc79f711 100644 --- a/src/pokemon_menu.c +++ b/src/pokemon_menu.c @@ -786,7 +786,7 @@ static void sub_808ABA8(u8 taskID) { if (sub_807D770() == TRUE) { - gFieldEffectSpawnParams[0] = GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_SPECIES); + gFieldEffectArguments[0] = GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_SPECIES); gUnknown_03005CE4(); DestroyTask(taskID); } @@ -803,7 +803,7 @@ static void sub_808ABF4(u8 taskID) static void sub_808AC2C(void) { - gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; FieldEffectStart(FLDEFF_USE_SURF); } @@ -821,7 +821,7 @@ static bool8 SetUpFieldMove_Surf(void) static void sub_808AC8C(void) { - gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; FieldEffectStart(FLDEFF_USE_FLY); } @@ -872,14 +872,14 @@ u16 unref_sub_808AD88(void) static void sub_808ADAC(void) { - gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; FieldEffectStart(FLDEFF_USE_DIVE); } static bool8 SetUpFieldMove_Dive(void) { - gFieldEffectSpawnParams[1] = sub_8068F18(); - if (gFieldEffectSpawnParams[1]) + gFieldEffectArguments[1] = sub_8068F18(); + if (gFieldEffectArguments[1]) { gFieldCallback = sub_808AB90; gUnknown_03005CE4 = sub_808ADAC; @@ -891,7 +891,7 @@ static bool8 SetUpFieldMove_Dive(void) static void sub_808AE08(void) { - gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; FieldEffectStart(FLDEFF_USE_WATERFALL); } diff --git a/src/rom6.c b/src/rom6.c index 1f72eba93..702e48c69 100644 --- a/src/rom6.c +++ b/src/rom6.c @@ -91,17 +91,17 @@ static void sub_810B428(u8 taskId) { if (!FieldEffectActiveListContains(6)) { - gFieldEffectSpawnParams[1] = player_get_direction_lower_nybble(); - if (gFieldEffectSpawnParams[1] == 1) - gFieldEffectSpawnParams[2] = 0; - if (gFieldEffectSpawnParams[1] == 2) - gFieldEffectSpawnParams[2] = 1; - if (gFieldEffectSpawnParams[1] == 3) - gFieldEffectSpawnParams[2] = 2; - if (gFieldEffectSpawnParams[1] == 4) - gFieldEffectSpawnParams[2] = 3; + gFieldEffectArguments[1] = player_get_direction_lower_nybble(); + if (gFieldEffectArguments[1] == 1) + gFieldEffectArguments[2] = 0; + if (gFieldEffectArguments[1] == 2) + gFieldEffectArguments[2] = 1; + if (gFieldEffectArguments[1] == 3) + gFieldEffectArguments[2] = 2; + if (gFieldEffectArguments[1] == 4) + gFieldEffectArguments[2] = 3; sub_805B980(&gMapObjects[gPlayerAvatar.mapObjectId], GetPlayerAvatarGraphicsIdByCurrentState()); - StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gFieldEffectSpawnParams[2]); + StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gFieldEffectArguments[2]); FieldEffectActiveListRemove(6); gTasks[taskId].func = sub_810B4CC; } @@ -132,7 +132,7 @@ bool8 SetUpFieldMove_RockSmash(void) static void sub_810B53C(void) { - gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; ScriptContext1_SetupScript(UseRockSmashScript); } @@ -171,7 +171,7 @@ static void sub_810B5D8(void) { sub_8053014(); FieldEffectStart(0x26); - gFieldEffectSpawnParams[0] = gLastFieldPokeMenuOpened; + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; } int FldEff_UseDig(void) diff --git a/src/scrcmd.c b/src/scrcmd.c index 752aafe35..74950acc7 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1724,7 +1724,7 @@ bool8 ScrCmd_doanimation(struct ScriptContext *ctx) bool8 ScrCmd_setanimation(struct ScriptContext *ctx) { u8 v2 = ScriptReadByte(ctx); - gFieldEffectSpawnParams[v2] = (s16)VarGet(ScriptReadHalfword(ctx)); + gFieldEffectArguments[v2] = (s16)VarGet(ScriptReadHalfword(ctx)); return FALSE; } diff --git a/src/trainer_see.c b/src/trainer_see.c index 73dba2d60..18bf0907e 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -201,7 +201,7 @@ s8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainerObj) { u8 direction; - FieldObjectGetLocalIdAndMap(trainerObj, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]); + FieldObjectGetLocalIdAndMap(trainerObj, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); FieldEffectStart(0); direction = GetFaceDirectionAnimId(trainerObj->mapobj_unk_18); @@ -311,10 +311,10 @@ s8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj) { if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(trainerObj)) { - gFieldEffectSpawnParams[0] = trainerObj->coords2.x; - gFieldEffectSpawnParams[1] = trainerObj->coords2.y; - gFieldEffectSpawnParams[2] = gSprites[trainerObj->spriteId].subpriority - 1; - gFieldEffectSpawnParams[3] = 2; + gFieldEffectArguments[0] = trainerObj->coords2.x; + gFieldEffectArguments[1] = trainerObj->coords2.y; + gFieldEffectArguments[2] = gSprites[trainerObj->spriteId].subpriority - 1; + gFieldEffectArguments[3] = 2; task->data[4] = FieldEffectStart(49); task->data[0]++; } @@ -421,9 +421,9 @@ void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3) sprite->oam.priority = 1; sprite->coordOffsetEnabled = 1; - sprite->data0 = gFieldEffectSpawnParams[0]; - sprite->data1 = gFieldEffectSpawnParams[1]; - sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; sprite->data3 = -5; sprite->data7 = a2; -- cgit v1.2.3 From f482547407aec0514b50232c7f14d98ad9f58184 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 21 Sep 2017 17:59:39 -0400 Subject: More use of FLDEFF constants --- src/field_ground_effect.c | 13 ++++++++----- src/field_map_obj_helpers.c | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/field_ground_effect.c b/src/field_ground_effect.c index 2a398ba22..5af8ea3e3 100644 --- a/src/field_ground_effect.c +++ b/src/field_ground_effect.c @@ -472,7 +472,7 @@ void GroundEffect_SpawnOnTallGrass(struct MapObject *mapObj, struct Sprite *spri | (u8)gSaveBlock1.location.mapGroup; gFieldEffectArguments[7] = 1; - FieldEffectStart(4); + FieldEffectStart(FLDEFF_TALL_GRASS); } void sub_8063E94(struct MapObject *mapObj, struct Sprite *sprite) @@ -491,7 +491,7 @@ void sub_8063E94(struct MapObject *mapObj, struct Sprite *sprite) | (u8)gSaveBlock1.location.mapGroup; gFieldEffectArguments[7] = 0; - FieldEffectStart(4); + FieldEffectStart(FLDEFF_TALL_GRASS); } void sub_8063EE0(struct MapObject *mapObj, struct Sprite *sprite) @@ -510,7 +510,7 @@ void sub_8063EE0(struct MapObject *mapObj, struct Sprite *sprite) | (u8)gSaveBlock1.location.mapGroup; gFieldEffectArguments[7] = 1; - FieldEffectStart(17); + FieldEffectStart(FLDEFF_LONG_GRASS); } void sub_8063F2C(struct MapObject *mapObj, struct Sprite *sprite) @@ -529,7 +529,7 @@ void sub_8063F2C(struct MapObject *mapObj, struct Sprite *sprite) | (u8)gSaveBlock1.location.mapGroup; gFieldEffectArguments[7] = 0; - FieldEffectStart(17); + FieldEffectStart(FLDEFF_LONG_GRASS); } void GroundEffect_WaterReflection(struct MapObject *mapObj, struct Sprite *sprite) @@ -570,7 +570,10 @@ static void nullsub(struct MapObject *mapObj, struct Sprite *sprite, u8 a) static void DoTracksGroundEffect_Footprints(struct MapObject *mapObj, struct Sprite *sprite, u8 a) { // First half-word is a Field Effect script id. (gFieldEffectScriptPointers) - u16 sandFootprints_FieldEffectData[2] = { 0xD, 0x18 }; + u16 sandFootprints_FieldEffectData[2] = { + FLDEFF_SAND_FOOTPRINTS, + FLDEFF_DEEP_SAND_FOOTPRINTS + }; gFieldEffectArguments[0] = mapObj->coords3.x; gFieldEffectArguments[1] = mapObj->coords3.y; diff --git a/src/field_map_obj_helpers.c b/src/field_map_obj_helpers.c index 93cd57557..b453d3794 100644 --- a/src/field_map_obj_helpers.c +++ b/src/field_map_obj_helpers.c @@ -303,7 +303,7 @@ void DoShadowFieldEffect(struct MapObject *mapObject) if (!mapObject->mapobj_bit_22) { mapObject->mapobj_bit_22 = 1; - oe_exec_and_other_stuff(3, mapObject); + oe_exec_and_other_stuff(FLDEFF_SHADOW, mapObject); } } -- cgit v1.2.3 From 170c82f299905b6e55b20a5c2c04f92353131d0e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 28 Sep 2017 21:25:54 -0400 Subject: Remove all hardcoded labels in sym_bss.txt --- src/battle_anim_80CA710.c | 18 ++++++++++++ src/daycare.c | 11 +++---- src/easy_chat.c | 2 ++ src/field_weather.c | 2 +- src/mauville_old_man.c | 2 ++ src/pokenav.c | 2 ++ src/trade.c | 1 + sym_bss.txt | 75 +++++------------------------------------------ 8 files changed, 39 insertions(+), 74 deletions(-) create mode 100644 src/battle_anim_80CA710.c diff --git a/src/battle_anim_80CA710.c b/src/battle_anim_80CA710.c new file mode 100644 index 000000000..65ccd7c21 --- /dev/null +++ b/src/battle_anim_80CA710.c @@ -0,0 +1,18 @@ + +// Includes +#include "global.h" + +// Static type declarations + +// Static RAM declarations + +IWRAM_DATA u32 filler_03000724; +IWRAM_DATA u16 gUnknown_03000728[4]; +IWRAM_DATA u16 gUnknown_03000730[6]; +IWRAM_DATA u32 filler_0300073c; + +// Static ROM declarations + +// .rodata + +// .text diff --git a/src/daycare.c b/src/daycare.c index b0f7a193f..717e37330 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -25,6 +25,12 @@ extern u16 word_2024E82; +IWRAM_DATA u16 gUnknown_03000470[52]; +IWRAM_DATA u16 gUnknown_030004D8[4]; +IWRAM_DATA u16 gUnknown_030004E0[4]; +IWRAM_DATA u16 gUnknown_030004E8[12]; +IWRAM_DATA u16 gUnknown_03000500[4]; + static void sub_80417F4(struct DayCareMail *); static void sub_80420FC(struct Pokemon *, u16, struct DayCareData *); static u8 daycare_relationship_score(struct DayCareData *); @@ -430,11 +436,6 @@ u8 pokemon_get_eggmoves(struct Pokemon *pokemon, u16 *eggMoves) } #ifdef NONMATCHING -extern u16 gUnknown_03000470[50]; -extern u16 gUnknown_030004D8[4]; -extern u16 gUnknown_030004E0[4]; -extern u16 gUnknown_030004E8[10]; -extern u16 gUnknown_03000500[4]; void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, struct BoxPokemon *mom) { diff --git a/src/easy_chat.c b/src/easy_chat.c index cca8c1355..f3673c8fa 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -19,6 +19,8 @@ extern const u8 gEasyChatGroupSizes[]; extern u16 gSpecialVar_0x8004; +IWRAM_DATA u8 gUnknown_03000740; + u8 *sub_80EB3FC(u8 *dst, u16 word) { diff --git a/src/field_weather.c b/src/field_weather.c index 5ff2eddf9..443a38357 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -55,7 +55,7 @@ extern struct Weather gWeather; extern u8 *gUnknown_083970E8; extern u8 (*gUnknown_08396FC8[][4])(void); extern u8 (*gUnknown_083970B8[])(void); -extern u8 *gUnknown_030006DC; +IWRAM_DATA u8 *gUnknown_030006DC; extern u8 gUnknown_083970C8; extern u8 (*gUnknown_0202FC48)[32]; extern u8 gUnknown_0202F9E8[32]; diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index 93684fc60..789a251e6 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -16,6 +16,8 @@ extern u32 gUnknown_083E53A8[]; extern u16 gUnknown_083E537C[]; +IWRAM_DATA u8 gUnknown_03000748; + void sub_80F7A34(void) { u16 i; diff --git a/src/pokenav.c b/src/pokenav.c index 84ed7b14b..21d7bb4e3 100644 --- a/src/pokenav.c +++ b/src/pokenav.c @@ -38,3 +38,5 @@ void sub_80F700C(u8 *arg0, u16 arg1) { ptr[2] = 0x80; ptr[3] = 0xFF; } + +IWRAM_DATA MainCallback gUnknown_03000744; diff --git a/src/trade.c b/src/trade.c index cb190d194..0816fe555 100644 --- a/src/trade.c +++ b/src/trade.c @@ -37,6 +37,7 @@ struct UnkStructD { extern const struct InGameTrade gIngameTrades[]; extern const u16 gIngameTradeMail[][10]; +IWRAM_DATA u8 gUnknown_03000508[8]; void sub_804A96C(struct UnkStructD *arg0, u8 left, u8 top, u16 *tilemap, u8 width, u8 height, u16 sp8) { int y, x; diff --git a/sym_bss.txt b/sym_bss.txt index b306da5f6..b1080604f 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -4,38 +4,11 @@ .include "src/string_util.o" .include "src/link.o" .include "src/rtc.o" - -@ daycare - - .align 2 -gUnknown_03000470: @ 3000470 - .space 0x68 - -gUnknown_030004D8: @ 30004D8 - .space 0x8 - -gUnknown_030004E0: @ 30004E0 - .space 0x8 - -gUnknown_030004E8: @ 30004E8 - .space 0x18 - -gUnknown_03000500: @ 3000500 - .space 0x8 - -@ trade - -gUnknown_03000508: @ 3000508 - .space 0x8 - + .include "src/daycare.o" + .include "src/trade.o" .include "src/berry_blender.o" .include "src/play_time.o" .include "src/rom4.o" - - @ unused variable? - .align 2 - .space 0x4 - .include "src/field_camera.o" .include "src/field_map_obj.o" .include "src/field_message_box.o" @@ -45,53 +18,19 @@ gUnknown_03000508: @ 3000508 .include "src/menu.o" .include "src/tileset_anim.o" .include "src/sound.o" - -@ field_weather - -gUnknown_030006DC: @ 30006DC - .space 0x4 - + .include "src/field_weather.o" .include "src/field_effect.o" .include "src/item_menu.o" .include "src/shop.o" .include "src/record_mixing.o" .include "src/tv.o" - - @ unused variable? - .align 2 - .space 0x4 - -@ battle_anim_80CA710 - -gUnknown_03000728: @ 3000728 - .space 0x8 - -gUnknown_03000730: @ 3000730 - .space 0x10 - -@ easy_chat - -gUnknown_03000740: @ 3000740 - .space 0x4 - -@ pokenav - -gUnknown_03000744: @ 3000744 - .space 0x4 - -@ mauville_old_man - -gUnknown_03000748: @ 3000748 - .space 0x4 - + .include "src/battle_anim_80CA710.o" + .include "src/easy_chat.o" + .include "src/pokenav.o" + .include "src/mauville_old_man.o" .include "src/menu_helpers.o" .include "src/contest_painting.o" .include "src/pokeblock.o" - - @ unused variable? - .align 2 - .space 0x4 - .include "src/field_specials.o" .include "src/learn_move.o" .include "src/player_pc.o" -- cgit v1.2.3 From 9f736e58afff3e3e3be1398ceebac93614ec70e1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 29 Sep 2017 22:25:20 -0400 Subject: Rename daycare structs to be slightly less insensible --- include/global.h | 19 ++++++--------- src/daycare.c | 66 +++++++++++++++++++++++++-------------------------- src/mori_debug_menu.c | 2 +- src/record_mixing.c | 14 +++++------ 4 files changed, 48 insertions(+), 53 deletions(-) diff --git a/include/global.h b/include/global.h index 43a105162..ac28507e8 100644 --- a/include/global.h +++ b/include/global.h @@ -562,16 +562,11 @@ struct GabbyAndTyData struct DayCareMail { - /*0x00*/ struct MailStruct mail; + /*0x00*/ struct MailStruct message; /*0x24*/ u8 names[19]; }; -struct DayCareMailExtra_RecordMixing { - u32 unk70; - u16 unk74[2]; -}; - -struct DayCareMailExtra_EggData { +struct DayCareStepCountersEtc { u32 steps[2]; u16 personalityLo; u8 unk_11a; @@ -579,20 +574,20 @@ struct DayCareMailExtra_EggData { struct RecordMixingDayCareMail { - struct DayCareMail data[2]; + struct DayCareMail mail[2]; u32 unk70; u16 unk74[2]; }; -struct DayCareMailEtc +struct DayCareMisc { - struct DayCareMail data[2]; - struct DayCareMailExtra_EggData egg; + struct DayCareMail mail[2]; + struct DayCareStepCountersEtc countersEtc; }; struct DayCareData { struct BoxPokemon mons[2]; - struct DayCareMailEtc mail; + struct DayCareMisc misc; }; struct LinkBattleRecord diff --git a/src/daycare.c b/src/daycare.c index b383667a7..591b5b188 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -114,17 +114,17 @@ static void Daycare_SendPokemon(struct Pokemon * mon, struct DayCareData * dayca empty_slot = Daycare_FindEmptySpot(daycare_data->mons); if(MonHasMail(mon)) { - StringCopy((names = daycare_data->mail.data[empty_slot].names), gSaveBlock2.playerName); + StringCopy((names = daycare_data->misc.mail[empty_slot].names), gSaveBlock2.playerName); PadNameString(names, 0xFC); names += 8; GetMonNick(mon, names); mail = GetMonData(mon, MON_DATA_MAIL); - daycare_data->mail.data[empty_slot].mail = gSaveBlock1.mail[mail]; + daycare_data->misc.mail[empty_slot].message = gSaveBlock1.mail[mail]; TakeMailFromMon(mon); } daycare_data->mons[empty_slot] = mon->box; BoxMonRestorePP(&daycare_data->mons[empty_slot]); - daycare_data->mail.egg.steps[empty_slot] = 0; + daycare_data->misc.countersEtc.steps[empty_slot] = 0; ZeroMonData(mon); party_compaction(); CalculatePlayerPartyCount(); @@ -141,10 +141,10 @@ static void sub_80414C0(struct DayCareData * daycare_data) { daycare_data->mons[0] = daycare_data->mons[1]; ZeroBoxMonData(&daycare_data->mons[1]); - daycare_data->mail.data[0] = daycare_data->mail.data[1]; - daycare_data->mail.egg.steps[0] = daycare_data->mail.egg.steps[1]; - daycare_data->mail.egg.steps[1] = 0; - sub_80417F4(&daycare_data->mail.data[1]); + daycare_data->misc.mail[0] = daycare_data->misc.mail[1]; + daycare_data->misc.countersEtc.steps[0] = daycare_data->misc.countersEtc.steps[1]; + daycare_data->misc.countersEtc.steps[1] = 0; + sub_80417F4(&daycare_data->misc.mail[1]); } } @@ -157,7 +157,7 @@ static void DayCare_LevelUpMoves(struct Pokemon * mon) u8 r6; u16 temp; - for (i = 0; i < 100; i++) + for (i = 0; i < MAX_LEVEL; i++) { if (TryIncrementMonLevel(mon)) { @@ -187,19 +187,19 @@ static u16 sub_8041570(struct DayCareData * daycare_data, u8 slot) sub_803B4B4(&daycare_data->mons[slot], &pokemon); if (GetMonData(&pokemon, MON_DATA_LEVEL) != MAX_LEVEL) { - experience = GetMonData(&pokemon, MON_DATA_EXP) + daycare_data->mail.egg.steps[slot]; + experience = GetMonData(&pokemon, MON_DATA_EXP) + daycare_data->misc.countersEtc.steps[slot]; SetMonData(&pokemon, MON_DATA_EXP, (u8 *)&experience); DayCare_LevelUpMoves(&pokemon); } gPlayerParty[PARTY_SIZE - 1] = pokemon; - if (daycare_data->mail.data[slot].mail.itemId) + if (daycare_data->misc.mail[slot].message.itemId) { - GiveMailToMon2(&gPlayerParty[PARTY_SIZE - 1], &daycare_data->mail.data[slot].mail); - sub_80417F4(&daycare_data->mail.data[slot]); + GiveMailToMon2(&gPlayerParty[PARTY_SIZE - 1], &daycare_data->misc.mail[slot].message); + sub_80417F4(&daycare_data->misc.mail[slot]); } party_compaction(); ZeroBoxMonData(&daycare_data->mons[slot]); - daycare_data->mail.egg.steps[slot] = 0; + daycare_data->misc.countersEtc.steps[slot] = 0; sub_80414C0(daycare_data); CalculatePlayerPartyCount(); return species; @@ -223,7 +223,7 @@ static u8 sub_80416A0(struct DayCareData *daycareData, u8 slot) u8 levelAfter; levelBefore = GetLevelFromBoxMonExp(&daycareData->mons[slot]); - levelAfter = Daycare_GetLevelAfterSteps(&daycareData->mons[slot], daycareData->mail.egg.steps[slot]); + levelAfter = Daycare_GetLevelAfterSteps(&daycareData->mons[slot], daycareData->misc.countersEtc.steps[slot]); return levelAfter - levelBefore; } @@ -253,8 +253,8 @@ void sub_8041770(void) void sub_8041790(u16 i) { - gSaveBlock1.daycareData.mail.egg.steps[0] += i; - gSaveBlock1.daycareData.mail.egg.steps[1] += i; + gSaveBlock1.daycareData.misc.countersEtc.steps[0] += i; + gSaveBlock1.daycareData.misc.countersEtc.steps[1] += i; } u8 sub_80417B8(void) @@ -277,7 +277,7 @@ static void sub_80417F4(struct DayCareMail *mail) zero = 0; names = mail->names + 18; do *names-- = zero; while ((int)names >= (int)names2); - ClearMailStruct(&mail->mail); + ClearMailStruct(&mail->message); } void unref_sub_8041824(struct DayCareData *dayCareData) @@ -286,11 +286,11 @@ void unref_sub_8041824(struct DayCareData *dayCareData) for (slot = 0; slot < ARRAY_COUNT(dayCareData->mons); slot ++) { ZeroBoxMonData(&dayCareData->mons[slot]); - dayCareData->mail.egg.steps[slot] = 0; - sub_80417F4(&dayCareData->mail.data[slot]); + dayCareData->misc.countersEtc.steps[slot] = 0; + sub_80417F4(&dayCareData->misc.mail[slot]); } - dayCareData->mail.egg.personalityLo = 0; - dayCareData->mail.egg.unk_11a = 0; + dayCareData->misc.countersEtc.personalityLo = 0; + dayCareData->misc.countersEtc.unk_11a = 0; } u16 sub_8041870(u16 species) @@ -322,13 +322,13 @@ u16 sub_8041870(u16 species) static void sub_80418F0(struct DayCareData *dayCareData) { - dayCareData->mail.egg.personalityLo = (Random() % 0xfffe) + 1; + dayCareData->misc.countersEtc.personalityLo = (Random() % 0xfffe) + 1; FlagSet(0x86); } static void sub_804191C(struct DayCareData *dayCareData) { - dayCareData->mail.egg.personalityLo = Random() | 0x8000; + dayCareData->misc.countersEtc.personalityLo = Random() | 0x8000; FlagSet(0x86); } @@ -864,8 +864,8 @@ void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, st static void RemoveEggFromDayCare(struct DayCareData *dayCareData) { - dayCareData->mail.egg.personalityLo = 0; - dayCareData->mail.egg.unk_11a = 0; + dayCareData->misc.countersEtc.personalityLo = 0; + dayCareData->misc.countersEtc.unk_11a = 0; } void sub_8041E7C(void) @@ -912,11 +912,11 @@ static u16 sub_8041EEC(struct DayCareData *dayCareData, u8 *a1) // inherit_speci } } eggSpecies = sub_8041870(species[a1[0]]); - if (eggSpecies == SPECIES_NIDORAN_F && dayCareData->mail.egg.personalityLo & 0x8000) + if (eggSpecies == SPECIES_NIDORAN_F && dayCareData->misc.countersEtc.personalityLo & 0x8000) { eggSpecies = SPECIES_NIDORAN_M; } - if (eggSpecies == SPECIES_ILLUMISE && dayCareData->mail.egg.personalityLo & 0x8000) + if (eggSpecies == SPECIES_ILLUMISE && dayCareData->misc.countersEtc.personalityLo & 0x8000) { eggSpecies = SPECIES_VOLBEAT; } @@ -980,7 +980,7 @@ static void sub_80420FC(struct Pokemon *mon, u16 species, struct DayCareData *da u16 ball; u8 metLevel; u8 language; - personality = dayCareData->mail.egg.personalityLo | (Random() << 16); + personality = dayCareData->misc.countersEtc.personalityLo | (Random() << 16); CreateMon(mon, species, 5, 0x20, TRUE, personality, FALSE, 0); metLevel = 0; ball = ITEM_POKE_BALL; @@ -1009,15 +1009,15 @@ static bool8 sub_80421B0(struct DayCareData *dayCareData) { if (GetBoxMonData(parent, MON_DATA_SANITY_BIT2, v0)) { - dayCareData->mail.egg.steps[i]++; + dayCareData->misc.countersEtc.steps[i]++; v0++; } } - if (dayCareData->mail.egg.personalityLo == 0 && v0 == 2 && dayCareData->mail.extra.misc[4] == 0xff && daycare_relationship_score(dayCareData) > (u32)((u32)(Random() * 100) / 0xffff)) + if (dayCareData->misc.countersEtc.personalityLo == 0 && v0 == 2 && dayCareData->misc.extra.misc[4] == 0xff && daycare_relationship_score(dayCareData) > (u32)((u32)(Random() * 100) / 0xffff)) { sub_8041940(); } - if ((++dayCareData->mail.egg.unk_11a) == 0xff) + if ((++dayCareData->misc.countersEtc.unk_11a) == 0xff) { for (i=0; imail.egg.personalityLo) | dayCareData->mail.egg.personalityLo) >> 31; + return (u32)((-dayCareData->misc.countersEtc.personalityLo) | dayCareData->misc.countersEtc.personalityLo) >> 31; } static void sub_80422C4(struct DayCareData *dayCareData) @@ -1618,7 +1618,7 @@ static void DaycareLevelMenuGetLevelText(struct DayCareData *dayCareData, u8 *de *dest = EOS; for (i = 0; i < 2; i ++) { - level = Daycare_GetLevelAfterSteps(&dayCareData->mons[i], dayCareData->mail.egg.steps[i]); + level = Daycare_GetLevelAfterSteps(&dayCareData->mons[i], dayCareData->misc.countersEtc.steps[i]); dest[0] = 0x34; dest[1] = 0xFC; dest[2] = 0x14; diff --git a/src/mori_debug_menu.c b/src/mori_debug_menu.c index 62837c8e6..1595ecd2e 100644 --- a/src/mori_debug_menu.c +++ b/src/mori_debug_menu.c @@ -117,7 +117,7 @@ s8 MoriDebugMenu_BreedEgg(void) SetMonData(&gPlayerParty[loopCounter], MON_DATA_FRIENDSHIP, &friendship); } } - gSaveBlock1.daycareData.mail.egg.unk_11a = -3; + gSaveBlock1.daycareData.misc.countersEtc.unk_11a = -3; CloseMenu(); return 1; } diff --git a/src/record_mixing.c b/src/record_mixing.c index 57c7cff1d..8dff432c1 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -74,8 +74,8 @@ void RecordMixing_PrepareExchangePacket(void) memcpy(unk_2018000.filler1004, gUnknown_083D0274, sizeof(unk_2008000.filler1004)); memcpy(unk_2018000.filler1044, gUnknown_083D0278, sizeof(unk_2008000.filler1044)); memcpy(unk_2018000.easyChatPairs, recordMixingEasyChatPairs, sizeof(unk_2018000.easyChatPairs)); - gUnknown_02038738.data[0] = gSaveBlock1.daycareData.mail.data[0]; - gUnknown_02038738.data[1] = gSaveBlock1.daycareData.mail.data[1]; + gUnknown_02038738.mail[0] = gSaveBlock1.daycareData.misc.mail[0]; + gUnknown_02038738.mail[1] = gSaveBlock1.daycareData.misc.mail[1]; sub_8041324(gSaveBlock1.daycareData.mons, &gUnknown_02038738); memcpy(&unk_2018000.filler10AC, gUnknown_083D0280, sizeof(struct RecordMixingDayCareMail)); memcpy(unk_2018000.filler1124, gUnknown_083D0284, sizeof(unk_2018000.filler1124)); @@ -511,7 +511,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) u16 i; // r3 u16 r7; u8 r1; - struct DayCareMailEtc *r6; + struct DayCareMisc *r6; //asm("":::"r8"); SeedRng(gLinkPlayers[0].trainerId); @@ -526,7 +526,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) sp3C = 0; for (i = 0; i < r8; i++) { - r6 = (struct DayCareMailEtc *)(a + b * i); + r6 = (struct DayCareMisc *)(a + b * i); if (r6->unk70 != 0) { for (r7 = 0; r7 < r6->unk70; r7++) @@ -540,7 +540,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) //_080B9D46 for (r7 = 0, i = 0; i < r8; i++) { - r6 = (struct DayCareMailEtc *)(a + b * i); + r6 = (struct DayCareMisc *)(a + b * i); if (sp1C[i][0] == 1 || sp1C[i][1] == 1) sp3C++; if (sp1C[i][0] == 1 && sp1C[i][1] == 0) @@ -596,7 +596,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) //_080B9E3E for (i = 0; i < 4; i++) { - r6 = (struct DayCareMailEtc *)a + b * c; + r6 = (struct DayCareMisc *)a + b * c; spC[i] = r6; } r1 = sub_80B9C4C(d) % 3; @@ -630,7 +630,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) //_080B9EF0 //memcpy(&gSaveBlock1.filler_303C.data[0], a + b * c, 0x38); //memcpy(&gSaveBlock1.filler_303C.data[1], a + b * c + 0x38, 0x38); - r6 = (struct DayCareMailEtc *)(a + b * c); + r6 = (struct DayCareMisc *)(a + b * c); gSaveBlock1.filler_303C.data[0] = r6->data[0]; gSaveBlock1.filler_303C.data[1] = r6->data[1]; //memcpy(&gSaveBlock1.filler_303C.data[0], &r6->data[0], 0x38); -- cgit v1.2.3 From 4133688019e167da45c868a26bf6a6e4901bef54 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 29 Sep 2017 22:41:30 -0400 Subject: Lazy remove "Created by" IDE lines --- include/data/field_map_obj/anim_func_ptrs.h | 2 +- include/data/field_map_obj/base_oam.h | 2 +- include/data/field_map_obj/berry_tree_graphics_tables.h | 2 +- include/data/field_map_obj/callback_subroutine_pointers.h | 2 +- include/data/field_map_obj/field_effect_object_template_pointers.h | 2 +- include/data/field_map_obj/field_effect_objects.h | 2 +- include/data/field_map_obj/map_object_anims.h | 2 +- include/data/field_map_obj/map_object_graphics_info.h | 2 +- include/data/field_map_obj/map_object_graphics_info_pointers.h | 2 +- include/data/field_map_obj/map_object_pic_tables.h | 2 +- include/data/field_map_obj/map_object_subsprites.h | 2 +- include/data/pokemon/base_stats.h | 2 +- include/data/pokemon/cry_ids.h | 2 +- include/data/pokemon/dex_order.h | 2 +- include/data/pokemon/egg_moves.h | 2 +- include/data/pokemon/evolution.h | 2 +- include/data/pokemon/experience_tables.h | 2 +- include/data/pokemon/item_effects.h | 2 +- include/data/pokemon/level_up_learnset_pointers.h | 2 +- include/data/pokemon/level_up_learnsets.h | 2 +- include/data/pokemon/nature_stats.h | 2 +- include/data/pokemon/spinda_spots.h | 2 +- include/data/pokemon/tmhm_learnsets.h | 2 +- include/data/pokemon/trainer_class_lookups.h | 2 +- src/decoration_inventory.c | 2 +- src/field_tasks.c | 2 +- src/pokeblock.c | 2 +- src/use_pokeblock.c | 2 +- 28 files changed, 28 insertions(+), 28 deletions(-) diff --git a/include/data/field_map_obj/anim_func_ptrs.h b/include/data/field_map_obj/anim_func_ptrs.h index 63575727d..1d1fac71e 100644 --- a/include/data/field_map_obj/anim_func_ptrs.h +++ b/include/data/field_map_obj/anim_func_ptrs.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/18/2017. + // #ifndef POKERUBY_ANIM_FUNC_PTRS_H diff --git a/include/data/field_map_obj/base_oam.h b/include/data/field_map_obj/base_oam.h index 8595f97e7..49c14e8c2 100644 --- a/include/data/field_map_obj/base_oam.h +++ b/include/data/field_map_obj/base_oam.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_BASE_OAM_H diff --git a/include/data/field_map_obj/berry_tree_graphics_tables.h b/include/data/field_map_obj/berry_tree_graphics_tables.h index 53a0fd482..5b60fee6f 100644 --- a/include/data/field_map_obj/berry_tree_graphics_tables.h +++ b/include/data/field_map_obj/berry_tree_graphics_tables.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_BERRY_TREE_GRAPHICS_TABLES_H diff --git a/include/data/field_map_obj/callback_subroutine_pointers.h b/include/data/field_map_obj/callback_subroutine_pointers.h index d24a47184..151d5a4f8 100644 --- a/include/data/field_map_obj/callback_subroutine_pointers.h +++ b/include/data/field_map_obj/callback_subroutine_pointers.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/18/2017. + // #ifndef POKERUBY_CALLBACK_SUBROUTINE_POINTERS_H diff --git a/include/data/field_map_obj/field_effect_object_template_pointers.h b/include/data/field_map_obj/field_effect_object_template_pointers.h index 8e19747ce..320af1ff8 100644 --- a/include/data/field_map_obj/field_effect_object_template_pointers.h +++ b/include/data/field_map_obj/field_effect_object_template_pointers.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_FIELD_EFFECT_OBJECT_TEMPLATE_POINTERS_H diff --git a/include/data/field_map_obj/field_effect_objects.h b/include/data/field_map_obj/field_effect_objects.h index dc8a38542..9d3ae343d 100644 --- a/include/data/field_map_obj/field_effect_objects.h +++ b/include/data/field_map_obj/field_effect_objects.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_FIELD_EFFECT_OBJECTS_H diff --git a/include/data/field_map_obj/map_object_anims.h b/include/data/field_map_obj/map_object_anims.h index 0d6e299ee..0993f3efd 100644 --- a/include/data/field_map_obj/map_object_anims.h +++ b/include/data/field_map_obj/map_object_anims.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_MAP_OBJECT_ANIMS_H diff --git a/include/data/field_map_obj/map_object_graphics_info.h b/include/data/field_map_obj/map_object_graphics_info.h index 818c5b90c..7b021b66d 100644 --- a/include/data/field_map_obj/map_object_graphics_info.h +++ b/include/data/field_map_obj/map_object_graphics_info.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_MAP_OBJECT_GRAPHICS_INFO_H diff --git a/include/data/field_map_obj/map_object_graphics_info_pointers.h b/include/data/field_map_obj/map_object_graphics_info_pointers.h index c36827709..22a052b0d 100644 --- a/include/data/field_map_obj/map_object_graphics_info_pointers.h +++ b/include/data/field_map_obj/map_object_graphics_info_pointers.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_MAP_OBJECT_GRAPHICS_INFO_POINTERS_H diff --git a/include/data/field_map_obj/map_object_pic_tables.h b/include/data/field_map_obj/map_object_pic_tables.h index 37d579512..ecb5c8836 100644 --- a/include/data/field_map_obj/map_object_pic_tables.h +++ b/include/data/field_map_obj/map_object_pic_tables.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_MAP_OBJECT_PIC_TABLES_H diff --git a/include/data/field_map_obj/map_object_subsprites.h b/include/data/field_map_obj/map_object_subsprites.h index f928db88a..951d71e99 100644 --- a/include/data/field_map_obj/map_object_subsprites.h +++ b/include/data/field_map_obj/map_object_subsprites.h @@ -1,5 +1,5 @@ // -// Created by scott on 6/17/2017. + // #ifndef POKERUBY_MAP_OBJECT_SUBSPRITES_H diff --git a/include/data/pokemon/base_stats.h b/include/data/pokemon/base_stats.h index eadfbfe30..37f59e1c6 100644 --- a/include/data/pokemon/base_stats.h +++ b/include/data/pokemon/base_stats.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_BASE_STATS_H diff --git a/include/data/pokemon/cry_ids.h b/include/data/pokemon/cry_ids.h index d965a41cf..6207a92f0 100644 --- a/include/data/pokemon/cry_ids.h +++ b/include/data/pokemon/cry_ids.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_CRY_IDS_H diff --git a/include/data/pokemon/dex_order.h b/include/data/pokemon/dex_order.h index 6f8582533..cbb7182ed 100644 --- a/include/data/pokemon/dex_order.h +++ b/include/data/pokemon/dex_order.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_DEX_ORDER_H diff --git a/include/data/pokemon/egg_moves.h b/include/data/pokemon/egg_moves.h index 390052ec8..ab1b1dd33 100644 --- a/include/data/pokemon/egg_moves.h +++ b/include/data/pokemon/egg_moves.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 8/30/17. + // #ifndef POKERUBY_DAYCARE_H diff --git a/include/data/pokemon/evolution.h b/include/data/pokemon/evolution.h index 51e993347..919416fee 100644 --- a/include/data/pokemon/evolution.h +++ b/include/data/pokemon/evolution.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_EVOLUTION_H diff --git a/include/data/pokemon/experience_tables.h b/include/data/pokemon/experience_tables.h index 70c5e88ed..2fb416fe9 100644 --- a/include/data/pokemon/experience_tables.h +++ b/include/data/pokemon/experience_tables.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_EXPERIENCE_TABLES_H diff --git a/include/data/pokemon/item_effects.h b/include/data/pokemon/item_effects.h index b07573933..cd06228dd 100644 --- a/include/data/pokemon/item_effects.h +++ b/include/data/pokemon/item_effects.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_ITEM_EFFECTS_H diff --git a/include/data/pokemon/level_up_learnset_pointers.h b/include/data/pokemon/level_up_learnset_pointers.h index 753947d51..19761c996 100644 --- a/include/data/pokemon/level_up_learnset_pointers.h +++ b/include/data/pokemon/level_up_learnset_pointers.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_LEVEL_UP_LEARNSET_POINTERS_H diff --git a/include/data/pokemon/level_up_learnsets.h b/include/data/pokemon/level_up_learnsets.h index 5b79f4bc0..bc1de82de 100644 --- a/include/data/pokemon/level_up_learnsets.h +++ b/include/data/pokemon/level_up_learnsets.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_LEVEL_UP_LEARNSETS_H diff --git a/include/data/pokemon/nature_stats.h b/include/data/pokemon/nature_stats.h index 27bd98f9d..fcef2a0ac 100644 --- a/include/data/pokemon/nature_stats.h +++ b/include/data/pokemon/nature_stats.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_NATURE_STATS_H diff --git a/include/data/pokemon/spinda_spots.h b/include/data/pokemon/spinda_spots.h index 234cdf00e..d045e0734 100644 --- a/include/data/pokemon/spinda_spots.h +++ b/include/data/pokemon/spinda_spots.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_SPINDA_SPOTS_H diff --git a/include/data/pokemon/tmhm_learnsets.h b/include/data/pokemon/tmhm_learnsets.h index fa48f7f5c..02cd22d56 100644 --- a/include/data/pokemon/tmhm_learnsets.h +++ b/include/data/pokemon/tmhm_learnsets.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_TMHM_LEARNSETS_H diff --git a/include/data/pokemon/trainer_class_lookups.h b/include/data/pokemon/trainer_class_lookups.h index 0aea322a0..c86e795c4 100644 --- a/include/data/pokemon/trainer_class_lookups.h +++ b/include/data/pokemon/trainer_class_lookups.h @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/27/17. + // #ifndef POKERUBY_TRAINER_CLASS_LOOKUPS_H diff --git a/src/decoration_inventory.c b/src/decoration_inventory.c index 35ba7e228..083cb260c 100644 --- a/src/decoration_inventory.c +++ b/src/decoration_inventory.c @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 6/5/17. + // #include "global.h" diff --git a/src/field_tasks.c b/src/field_tasks.c index 2be54f923..68ceb67bc 100644 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -1,5 +1,5 @@ // -// Created by scott on 6/22/2017. + // #include "global.h" diff --git a/src/pokeblock.c b/src/pokeblock.c index d69c41639..593d7344b 100644 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -1,5 +1,5 @@ // -// Created by scott on 6/27/2017. + // #include "global.h" diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index be3003680..e946a9cfc 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -1,5 +1,5 @@ // -// Created by Scott Norton on 5/31/17. + // Modified by Dizzy Egg on 8/15/17. // -- cgit v1.2.3