From 0ba4eb4780805e3d6f9fd1739cbdcd2f280b8c5d Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 30 Jul 2019 22:11:27 -0500 Subject: misc --- src/battle_ai_switch_items.c | 12 ++-- src/battle_main.c | 32 +++++------ src/battle_message.c | 14 ++--- src/battle_script_commands.c | 130 +++++++++++------------------------------- src/battle_setup.c | 14 ++--- src/battle_tower.c | 4 +- src/battle_util.c | 131 ++++++++++++++++++++++--------------------- src/calculate_base_damage.c | 2 +- src/pokemon_summary_screen.c | 10 ++-- src/rom3.c | 1 + 10 files changed, 145 insertions(+), 205 deletions(-) (limited to 'src') diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 9da56a220..e3126cb23 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -386,7 +386,7 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) static bool8 ShouldSwitchIfNaturalCure(void) { - if (!(gBattleMons[gActiveBattler].status1 & STATUS_SLEEP)) + if (!(gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP)) return FALSE; if (gBattleMons[gActiveBattler].ability != ABILITY_NATURAL_CURE) return FALSE; @@ -936,27 +936,27 @@ static bool8 ShouldUseItem(void) break; case AI_ITEM_CURE_CONDITION: ewram160DA(gActiveBattler) = 0; - if (itemEffects[3] & 0x20 && gBattleMons[gActiveBattler].status1 & STATUS_SLEEP) + if (itemEffects[3] & 0x20 && gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP) { ewram160DA(gActiveBattler) |= 0x20; shouldUse = TRUE; } - if (itemEffects[3] & 0x10 && (gBattleMons[gActiveBattler].status1 & STATUS_POISON || gBattleMons[gActiveBattler].status1 & STATUS_TOXIC_POISON)) + if (itemEffects[3] & 0x10 && (gBattleMons[gActiveBattler].status1 & STATUS1_POISON || gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_POISON)) { ewram160DA(gActiveBattler) |= 0x10; shouldUse = TRUE; } - if (itemEffects[3] & 0x8 && gBattleMons[gActiveBattler].status1 & STATUS_BURN) + if (itemEffects[3] & 0x8 && gBattleMons[gActiveBattler].status1 & STATUS1_BURN) { ewram160DA(gActiveBattler) |= 0x8; shouldUse = TRUE; } - if (itemEffects[3] & 0x4 && gBattleMons[gActiveBattler].status1 & STATUS_FREEZE) + if (itemEffects[3] & 0x4 && gBattleMons[gActiveBattler].status1 & STATUS1_FREEZE) { ewram160DA(gActiveBattler) |= 0x4; shouldUse = TRUE; } - if (itemEffects[3] & 0x2 && gBattleMons[gActiveBattler].status1 & STATUS_PARALYSIS) + if (itemEffects[3] & 0x2 && gBattleMons[gActiveBattler].status1 & STATUS1_PARALYSIS) { ewram160DA(gActiveBattler) |= 0x2; shouldUse = TRUE; diff --git a/src/battle_main.c b/src/battle_main.c index 56eabd515..b38468386 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -3443,7 +3443,7 @@ void SwitchInClearSetData(void) if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS) { gBattleMons[gActiveBattler].status2 &= (STATUS2_CONFUSION | STATUS2_FOCUS_ENERGY | STATUS2_SUBSTITUTE | STATUS2_ESCAPE_PREVENTION | STATUS2_CURSED); - gStatuses3[gActiveBattler] &= (STATUS3_LEECHSEED_BANK | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT); + gStatuses3[gActiveBattler] &= (STATUS3_LEECHSEED_BATTLER | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT); for (i = 0; i < gBattlersCount; i++) { @@ -4545,7 +4545,7 @@ u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreMovePriorities) if (heldItemEffect == HOLD_EFFECT_MACHO_BRACE) bank1AdjustedSpeed /= 2; - if (gBattleMons[bank1].status1 & STATUS_PARALYSIS) + if (gBattleMons[bank1].status1 & STATUS1_PARALYSIS) bank1AdjustedSpeed /= 4; if (heldItemEffect == HOLD_EFFECT_QUICK_CLAW && gRandomTurnNumber < (heldItemEffectParam * 0xFFFF) / 100) @@ -4575,7 +4575,7 @@ u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreMovePriorities) if (heldItemEffect == HOLD_EFFECT_MACHO_BRACE) bank2AdjustedSpeed /= 2; - if (gBattleMons[bank2].status1 & STATUS_PARALYSIS) + if (gBattleMons[bank2].status1 & STATUS1_PARALYSIS) bank2AdjustedSpeed /= 4; if (heldItemEffect == HOLD_EFFECT_QUICK_CLAW && gRandomTurnNumber < (heldItemEffectParam * 0xFFFF) / 100) @@ -4787,7 +4787,7 @@ void CheckFocusPunch_ClearVarsBeforeTurnStarts(void) gActiveBattler = gBattlerAttacker = eFocusPunchBattler; eFocusPunchBattler++; if (gChosenMovesByBanks[gActiveBattler] == MOVE_FOCUS_PUNCH - && !(gBattleMons[gActiveBattler].status1 & STATUS_SLEEP) + && !(gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP) && !(gDisableStructs[gBattlerAttacker].truantCounter) && !(gProtectStructs[gActiveBattler].noValidMoves)) { @@ -4846,7 +4846,7 @@ void HandleEndTurn_BattleWon(void) gBattleTextBuff1[0] = gBattleOutcome; gBattlerAttacker = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); gBattlescriptCurrInstr = BattleScript_LinkBattleWonOrLost; - gBattleOutcome &= ~(OUTCOME_LINK_BATTLE_RUN); + gBattleOutcome &= ~(B_OUTCOME_LINK_BATTLE_RAN); } else if (gBattleTypeFlags & (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)) { @@ -4896,7 +4896,7 @@ void HandleEndTurn_BattleLost(void) gBattleTextBuff1[0] = gBattleOutcome; gBattlerAttacker = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); gBattlescriptCurrInstr = BattleScript_LinkBattleWonOrLost; - gBattleOutcome &= ~(OUTCOME_LINK_BATTLE_RUN); + gBattleOutcome &= ~(B_OUTCOME_LINK_BATTLE_RAN); } else { @@ -4983,7 +4983,7 @@ static void FreeResetData_ReturnToOvOrDoEvolutions(void) if (!gPaletteFade.active) { ResetSpriteData(); - if (gLeveledUpInBattle == 0 || gBattleOutcome != BATTLE_WON) + if (gLeveledUpInBattle == 0 || gBattleOutcome != B_OUTCOME_WON) { gBattleMainFunc = ReturnFromBattleToOverworld; return; @@ -5049,7 +5049,7 @@ static void ReturnFromBattleToOverworld(void) if (gBattleTypeFlags & BATTLE_TYPE_ROAMER) { UpdateRoamerHPStatus(&gEnemyParty[0]); - if (gBattleOutcome == BATTLE_WON || gBattleOutcome == BATTLE_CAUGHT) + if (gBattleOutcome == B_OUTCOME_WON || gBattleOutcome == B_OUTCOME_CAUGHT) SetRoamerInactive(); } @@ -5407,7 +5407,7 @@ bool8 TryRunFromBattle(u8 bank) if (effect) { gCurrentTurnActionNumber = gBattlersCount; - gBattleOutcome = BATTLE_RAN; + gBattleOutcome = B_OUTCOME_RAN; } return effect; @@ -5426,16 +5426,16 @@ void HandleAction_Run(void) if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) { if (gActionForBanks[gActiveBattler] == B_ACTION_RUN) - gBattleOutcome |= BATTLE_LOST; + gBattleOutcome |= B_OUTCOME_LOST; } else { if (gActionForBanks[gActiveBattler] == B_ACTION_RUN) - gBattleOutcome |= BATTLE_WON; + gBattleOutcome |= B_OUTCOME_WON; } } - gBattleOutcome |= OUTCOME_LINK_BATTLE_RUN; + gBattleOutcome |= B_OUTCOME_LINK_BATTLE_RAN; } else { @@ -5460,7 +5460,7 @@ void HandleAction_Run(void) else { gCurrentTurnActionNumber = gBattlersCount; - gBattleOutcome = BATTLE_POKE_FLED; + gBattleOutcome = B_OUTCOME_MON_FLED; } } } @@ -5540,7 +5540,7 @@ void HandleAction_SafriZoneRun(void) gBattlerAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; PlaySE(SE_NIGERU); gCurrentTurnActionNumber = gBattlersCount; - gBattleOutcome = BATTLE_RAN; + gBattleOutcome = B_OUTCOME_RAN; } void HandleAction_Action9(void) @@ -5573,7 +5573,7 @@ void HandleAction_NothingIsFainted(void) | HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_IGNORE_ON_AIR | HITMARKER_IGNORE_UNDERGROUND | HITMARKER_IGNORE_UNDERWATER | HITMARKER_x100000 | HITMARKER_OBEYS | HITMARKER_x10 | HITMARKER_SYNCHRONISE_EFFECT - | HITMARKER_x8000000 | HITMARKER_x4000000); + | HITMARKER_CHARGING | HITMARKER_x4000000); } void HandleAction_ActionFinished(void) @@ -5585,7 +5585,7 @@ void HandleAction_ActionFinished(void) | HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_IGNORE_ON_AIR | HITMARKER_IGNORE_UNDERGROUND | HITMARKER_IGNORE_UNDERWATER | HITMARKER_x100000 | HITMARKER_OBEYS | HITMARKER_x10 | HITMARKER_SYNCHRONISE_EFFECT - | HITMARKER_x8000000 | HITMARKER_x4000000); + | HITMARKER_CHARGING | HITMARKER_x4000000); gBattleMoveDamage = 0; ewram16002 = 0; diff --git a/src/battle_message.c b/src/battle_message.c index b218c2b8d..ce1e63edd 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -379,7 +379,7 @@ void BufferStringBattle(u16 stringID) gBattleTextBuff1[0] &= ~(0x80); if (GetBattlerSide(gActiveBattler) == 1 && gBattleTextBuff1[0] != 3) gBattleTextBuff1[0] ^= 3; - if (gBattleTextBuff1[0] == BATTLE_LOST || gBattleTextBuff1[0] == BATTLE_DREW) + if (gBattleTextBuff1[0] == B_OUTCOME_LOST || gBattleTextBuff1[0] == B_OUTCOME_DREW) stringPtr = BattleText_GotAwaySafely; else { @@ -397,13 +397,13 @@ void BufferStringBattle(u16 stringID) { switch (gBattleTextBuff1[0]) { - case BATTLE_WON: + case B_OUTCOME_WON: stringPtr = BattleText_PlayerDefeatedTrainers; break; - case BATTLE_LOST: + case B_OUTCOME_LOST: stringPtr = BattleText_PlayerLostTrainers; break; - case BATTLE_DREW: + case B_OUTCOME_DREW: stringPtr = BattleText_PlayerTiedTrainers; break; } @@ -412,13 +412,13 @@ void BufferStringBattle(u16 stringID) { switch (gBattleTextBuff1[0]) { - case BATTLE_WON: + case B_OUTCOME_WON: stringPtr = BattleText_PlayerDefeatedTrainer; break; - case BATTLE_LOST: + case B_OUTCOME_LOST: stringPtr = BattleText_PlayerLostTrainer; break; - case BATTLE_DREW: + case B_OUTCOME_DREW: stringPtr = BattleText_PlayerTiedTrainer; break; } diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 01d66b77c..ac913dbba 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -13,6 +13,7 @@ #include "constants/hold_effects.h" #include "random.h" #include "rom3.h" +#include "battle_controllers.h" #include "constants/species.h" #include "pokemon.h" #include "text.h" @@ -31,69 +32,6 @@ #define RET_VALUE_LEVELLED_UP 11 -enum -{ - CONTROLLER_GETMONDATA, - CONTROLLER_GETRAWMONDATA, - CONTROLLER_SETMONDATA, - CONTROLLER_SETRAWMONDATA, - CONTROLLER_LOADMONSPRITE, - CONTROLLER_SWITCHINANIM, - CONTROLLER_RETURNMONTOBALL, - CONTROLLER_DRAWTRAINERPIC, - CONTROLLER_TRAINERSLIDE, - CONTROLLER_TRAINERSLIDEBACK, - CONTROLLER_FAINTANIMATION, - CONTROLLER_PALETTEFADE, - CONTROLLER_SUCCESSBALLTHROWANIM, - CONTROLLER_BALLTHROWANIM, - CONTROLLER_PAUSE, - CONTROLLER_MOVEANIMATION, - CONTROLLER_PRINTSTRING, - CONTROLLER_PRINTSTRINGPLAYERONLY, - CONTROLLER_CHOOSEACTION, - CONTROLLER_UNKNOWNYESNOBOX, - CONTROLLER_CHOOSEMOVE, - CONTROLLER_OPENBAG, - CONTROLLER_CHOOSEPOKEMON, - CONTROLLER_23, - CONTROLLER_HEALTHBARUPDATE, - CONTROLLER_EXPUPDATE, - CONTROLLER_STATUSICONUPDATE, - CONTROLLER_STATUSANIMATION, - CONTROLLER_STATUSXOR, - CONTROLLER_DATATRANSFER, - CONTROLLER_DMA3TRANSFER, - CONTROLLER_31, - CONTROLLER_32, - CONTROLLER_TWORETURNVALUES, - CONTROLLER_CHOSENMONRETURNVALUE, - CONTROLLER_ONERETURNVALUE, - CONTROLLER_ONERETURNVALUE_DUPLICATE, - CONTROLLER_37, - CONTROLLER_38, - CONTROLLER_39, - CONTROLLER_40, - CONTROLLER_HITANIMATION, - CONTROLLER_42, - CONTROLLER_EFFECTIVENESSSOUND, - CONTROLLER_PLAYFANFAREORBGM, - CONTROLLER_FAINTINGCRY, - CONTROLLER_INTROSLIDE, - CONTROLLER_INTROTRAINERBALLTHROW, - CONTROLLER_DRAWPARTYSTATUSSUMMARY, - CONTROLLER_49, - CONTROLLER_50, - CONTROLLER_SPRITEINVISIBILITY, - CONTROLLER_BATTLEANIMATION, - CONTROLLER_LINKSTANDBYMSG, - CONTROLLER_RESETACTIONMOVESELECTION, - CONTROLLER_55, - /*new controllers should go here*/ - CONTROLLER_TERMINATOR_NOP, - CONTROLLER_CMDS_COUNT -}; - //extern needed variables extern u8 gUnknown_02023A14_50; extern u8 gCritMultiplier; @@ -881,12 +819,12 @@ static const u16 sCriticalHitChance[] = {16, 8, 4, 3, 2}; static const u32 sStatusFlagsForMoveEffects[] = { 0x00000000, - STATUS_SLEEP, - STATUS_POISON, - STATUS_BURN, - STATUS_FREEZE, - STATUS_PARALYSIS, - STATUS_TOXIC_POISON, + STATUS1_SLEEP, + STATUS1_POISON, + STATUS1_BURN, + STATUS1_FREEZE, + STATUS1_PARALYSIS, + STATUS1_TOXIC_POISON, STATUS2_CONFUSION, STATUS2_FLINCHED, 0x00000000, @@ -2398,7 +2336,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) { switch (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) { - case STATUS_SLEEP: + case STATUS1_SLEEP: //check active uproar if (gBattleMons[gEffectBattler].ability != ABILITY_SOUNDPROOF) { @@ -2414,7 +2352,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) CancelMultiTurnMoves(gEffectBattler); StatusChanged = 1; break; - case STATUS_POISON: + case STATUS1_POISON: if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80)) { gLastUsedAbility = ABILITY_IMMUNITY; @@ -2448,7 +2386,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) StatusChanged = 1; break; - case STATUS_BURN: + case STATUS1_BURN: if (gBattleMons[gEffectBattler].ability == ABILITY_WATER_VEIL && (primary == 1 || certain == 0x80)) { gLastUsedAbility = ABILITY_WATER_VEIL; @@ -2479,7 +2417,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if (gBattleMons[gEffectBattler].status1 == 0) {break;} StatusChanged = 1; break; - case STATUS_FREEZE: + case STATUS1_FREEZE: if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY) {NoSunCanFreeze = 0;} if (gBattleMons[gEffectBattler].type1 == TYPE_ICE) {break;} if (gBattleMons[gEffectBattler].type2 == TYPE_ICE) {break;} @@ -2490,7 +2428,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) CancelMultiTurnMoves(gEffectBattler); StatusChanged = 1; break; - case STATUS_PARALYSIS: + case STATUS1_PARALYSIS: if (gBattleMons[gEffectBattler].ability == ABILITY_LIMBER) { if ((primary == 1 || certain == 0x80)) @@ -2514,7 +2452,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if (gBattleMons[gEffectBattler].status1) {break;} StatusChanged = 1; break; - case STATUS_TOXIC_POISON: + case STATUS1_TOXIC_POISON: if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80)) { gLastUsedAbility = ABILITY_IMMUNITY; @@ -2557,7 +2495,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if (StatusChanged == 1) { BattleScriptPush(gBattlescriptCurrInstr + 1); - if (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS_SLEEP) + if (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS1_SLEEP) gBattleMons[gEffectBattler].status1 |= ((Random() & 3) + 2); else gBattleMons[gEffectBattler].status1 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; @@ -2781,9 +2719,9 @@ void SetMoveEffect(bool8 primary, u8 certainArg) gBattlescriptCurrInstr = BattleScript_RapidSpinAway; return; case 36: //paralysis removal - if (gBattleMons[gBattlerTarget].status1 & STATUS_PARALYSIS) + if (gBattleMons[gBattlerTarget].status1 & STATUS1_PARALYSIS) { - gBattleMons[gBattlerTarget].status1 &= ~(STATUS_PARALYSIS); + gBattleMons[gBattlerTarget].status1 &= ~(STATUS1_PARALYSIS); gActiveBattler = gBattlerTarget; BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBattlerTarget].status1); MarkBattlerForControllerExec(gActiveBattler); @@ -5641,7 +5579,7 @@ static void atk24(void) } if (HP_count == 0) - gBattleOutcome |= BATTLE_LOST; + gBattleOutcome |= B_OUTCOME_LOST; for (HP_count = 0, i = 0; i < 6; i++) { @@ -5650,7 +5588,7 @@ static void atk24(void) } if (!HP_count) - gBattleOutcome |= BATTLE_WON; + gBattleOutcome |= B_OUTCOME_WON; if (!gBattleOutcome && (gBattleTypeFlags & BATTLE_TYPE_LINK)) { @@ -6815,12 +6753,12 @@ void atk49_moveend(void) gBattleStruct->cmd49StateTracker++; break; case ATK49_DEFROST: // defrosting check - if (gBattleMons[gBattlerTarget].status1 & STATUS_FREEZE + if (gBattleMons[gBattlerTarget].status1 & STATUS1_FREEZE && gBattleMons[gBattlerTarget].hp && gBattlerAttacker != gBattlerTarget && gSpecialStatuses[gBattlerTarget].specialDmg && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && moveType == TYPE_FIRE) { - gBattleMons[gBattlerTarget].status1 &= ~(STATUS_FREEZE); + gBattleMons[gBattlerTarget].status1 &= ~(STATUS1_FREEZE); gActiveBattler = gBattlerTarget; BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBattlerTarget].status1); MarkBattlerForControllerExec(gActiveBattler); @@ -6939,12 +6877,12 @@ void atk49_moveend(void) gBattleStruct->cmd49StateTracker++; break; case ATK49_UPDATE_LAST_MOVES: - if (gHitMarker & HITMARKER_PURSUIT_TRAP) + if (gHitMarker & HITMARKER_SWAP_ATTACKER_TARGET) { gActiveBattler = gBattlerAttacker; gBattlerAttacker = gBattlerTarget; gBattlerTarget = gActiveBattler; - gHitMarker &= ~(HITMARKER_PURSUIT_TRAP); + gHitMarker &= ~(HITMARKER_SWAP_ATTACKER_TARGET); } if (gBattleMoves[gChosenMove].effect != 0x7F || (gMoveResultFlags & 0x29)) @@ -9111,10 +9049,10 @@ static void atk5F_8025B24(void) gBattlerAttacker = gBattlerTarget; gBattlerTarget = gActiveBattler; //what is xor... - if (gHitMarker & HITMARKER_PURSUIT_TRAP) - gHitMarker &= ~(HITMARKER_PURSUIT_TRAP); + if (gHitMarker & HITMARKER_SWAP_ATTACKER_TARGET) + gHitMarker &= ~(HITMARKER_SWAP_ATTACKER_TARGET); else - gHitMarker |= HITMARKER_PURSUIT_TRAP; + gHitMarker |= HITMARKER_SWAP_ATTACKER_TARGET; gBattlescriptCurrInstr++; } @@ -10193,7 +10131,7 @@ static void atk81_trysetrest(void) gBattlescriptCurrInstr = fail_loc; else { - if (gBattleMons[gBattlerTarget].status1 & ((u8)(~STATUS_SLEEP))) + if (gBattleMons[gBattlerTarget].status1 & ((u8)(~STATUS1_SLEEP))) gBattleCommunication[MULTISTRING_CHOOSER] = 1; else gBattleCommunication[MULTISTRING_CHOOSER] = 0; @@ -12279,7 +12217,7 @@ static u8 AttacksThisTurn(u8 bank, u16 move) //Note: returns 1 if it's a chargin effect = gBattleMoves[move].effect; if (effect == EFFECT_SKULL_BASH || effect == EFFECT_RAZOR_WIND || effect == EFFECT_SKY_ATTACK || effect == EFFECT_SOLARBEAM || effect == EFFECT_FLY || effect == EFFECT_BIDE) { - if ((gHitMarker & HITMARKER_x8000000)) + if ((gHitMarker & HITMARKER_CHARGING)) return 1; } return 2; @@ -12718,7 +12656,7 @@ static void atkBA_jumpifnopursuitswitchdmg(void) gBattlerTarget = GetBattlerAtPosition(2); } - if (gActionForBanks[gBattlerTarget] == 0 && gBattlerAttacker == ewram16010arr(gBattlerTarget) && !(gBattleMons[gBattlerTarget].status1 & (STATUS_SLEEP | STATUS_FREEZE)) + if (gActionForBanks[gBattlerTarget] == 0 && gBattlerAttacker == ewram16010arr(gBattlerTarget) && !(gBattleMons[gBattlerTarget].status1 & (STATUS1_SLEEP | STATUS1_FREEZE)) && gBattleMons[gBattlerAttacker].hp && !gDisableStructs[gBattlerTarget].truantCounter && gChosenMovesByBanks[gBattlerTarget] == MOVE_PURSUIT) { int i; @@ -12799,7 +12737,7 @@ static void atkBE_rapidspinfree(void) //rapid spin else if (gStatuses3[gBattlerAttacker] & STATUS3_LEECHSEED) { gStatuses3[gBattlerAttacker] &= ~(STATUS3_LEECHSEED); - gStatuses3[gBattlerAttacker] &= ~(STATUS3_LEECHSEED_BANK); + gStatuses3[gBattlerAttacker] &= ~(STATUS3_LEECHSEED_BATTLER); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_LeechSeedFree; } @@ -13308,7 +13246,7 @@ static void atkCC_callterrainattack(void) //nature power static void atkCD_cureifburnedparalysedorpoisoned(void) //refresh { - if (gBattleMons[gBattlerAttacker].status1 & (STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS | STATUS_TOXIC_POISON)) + if (gBattleMons[gBattlerAttacker].status1 & (STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON)) { gBattleMons[gBattlerAttacker].status1 = 0; gBattlescriptCurrInstr += 5; @@ -13814,7 +13752,7 @@ static void atkDA_tryswapabilities(void) static void atkDB_tryimprision(void) { u8 r8 = 0; - if ((gStatuses3[gBattlerAttacker] & STATUS3_IMPRISIONED)) + if ((gStatuses3[gBattlerAttacker] & STATUS3_IMPRISONED_OTHERS)) { gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); } @@ -13840,7 +13778,7 @@ static void atkDB_tryimprision(void) } if (j != 4) { - gStatuses3[gBattlerAttacker] |= STATUS3_IMPRISIONED; + gStatuses3[gBattlerAttacker] |= STATUS3_IMPRISONED_OTHERS; gBattlescriptCurrInstr += 5; break; } @@ -14480,9 +14418,9 @@ void atkEF_handleballthrow(void) ball_multiplier = sBallCatchBonuses[gLastUsedItem - 2]; odds = (catch_rate * ball_multiplier / 10) * (gBattleMons[gBattlerTarget].maxHP * 3 - gBattleMons[gBattlerTarget].hp * 2) / (3 * gBattleMons[gBattlerTarget].maxHP); - if (gBattleMons[gBattlerTarget].status1 & (STATUS_SLEEP | STATUS_FREEZE)) + if (gBattleMons[gBattlerTarget].status1 & (STATUS1_SLEEP | STATUS1_FREEZE)) odds *= 2; - if (gBattleMons[gBattlerTarget].status1 & (STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS /*| STATUS_TOXIC_POISON */)) //nice one gf + if (gBattleMons[gBattlerTarget].status1 & (STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS /*| STATUS1_TOXIC_POISON */)) //nice one gf odds = (odds * 15) / 10; if (gLastUsedItem != ITEM_SAFARI_BALL) diff --git a/src/battle_setup.c b/src/battle_setup.c index 2ad57e961..7f0e852cd 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -926,14 +926,14 @@ static bool32 IsPlayerDefeated(u32 battleOutcome) { switch (battleOutcome) { - case BATTLE_LOST: - case BATTLE_DREW: + case B_OUTCOME_LOST: + case B_OUTCOME_DREW: return TRUE; - case BATTLE_WON: - case BATTLE_RAN: - case BATTLE_PLAYER_TELEPORTED: - case BATTLE_POKE_FLED: - case BATTLE_CAUGHT: + case B_OUTCOME_WON: + case B_OUTCOME_RAN: + case B_OUTCOME_PLAYER_TELEPORTED: + case B_OUTCOME_MON_FLED: + case B_OUTCOME_CAUGHT: return FALSE; default: return FALSE; diff --git a/src/battle_tower.c b/src/battle_tower.c index 8449b7e42..138c1975d 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -1805,9 +1805,9 @@ void PrintEReaderTrainerGreeting(void) void PrintEReaderTrainerFarewellMessage(void) { - if (gBattleOutcome == BATTLE_DREW) + if (gBattleOutcome == B_OUTCOME_DREW) gStringVar4[0] = EOS; - else if (gBattleOutcome == BATTLE_WON) + else if (gBattleOutcome == B_OUTCOME_WON) PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.farewellPlayerWon); else PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.farewellPlayerLost); diff --git a/src/battle_util.c b/src/battle_util.c index 1825d7a2c..97ae63574 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1,6 +1,7 @@ #include "global.h" #include "battle.h" #include "battle_util.h" +#include "battle_controllers.h" #include "data2.h" #include "event_data.h" #include "ewram.h" @@ -586,7 +587,7 @@ u8 IsImprisoned(u8 bank, u16 move) s32 i; for (i = 0; i < gBattlersCount; i++) { - if (bankSide != GetBattlerSide(i) && gStatuses3[i] & STATUS3_IMPRISIONED) + if (bankSide != GetBattlerSide(i) && gStatuses3[i] & STATUS3_IMPRISONED_OTHERS) { s32 j; for (j = 0; j < 4; j++) @@ -895,9 +896,9 @@ u8 TurnBasedEffects(void) gBattleStruct->turnEffectsTracker++; break; case 3: // leech seed - if (gStatuses3[gActiveBattler] & STATUS3_LEECHSEED && gBattleMons[gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BANK].hp != 0 && gBattleMons[gActiveBattler].hp != 0) + if (gStatuses3[gActiveBattler] & STATUS3_LEECHSEED && gBattleMons[gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BATTLER].hp != 0 && gBattleMons[gActiveBattler].hp != 0) { - gBattlerTarget = gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BANK; //funny how the 'target' is actually the bank that receives HP + gBattlerTarget = gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BATTLER; //funny how the 'target' is actually the bank that receives HP gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -909,7 +910,7 @@ u8 TurnBasedEffects(void) gBattleStruct->turnEffectsTracker++; break; case 4: // poison - if ((gBattleMons[gActiveBattler].status1 & STATUS_POISON) && gBattleMons[gActiveBattler].hp != 0) + if ((gBattleMons[gActiveBattler].status1 & STATUS1_POISON) && gBattleMons[gActiveBattler].hp != 0) { gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; if (gBattleMoveDamage == 0) @@ -920,7 +921,7 @@ u8 TurnBasedEffects(void) gBattleStruct->turnEffectsTracker++; break; case 5: // toxic poison - if ((gBattleMons[gActiveBattler].status1 & STATUS_TOXIC_POISON) && gBattleMons[gActiveBattler].hp != 0) + if ((gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_POISON) && gBattleMons[gActiveBattler].hp != 0) { gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16; if (gBattleMoveDamage == 0) @@ -934,7 +935,7 @@ u8 TurnBasedEffects(void) gBattleStruct->turnEffectsTracker++; break; case 6: // burn - if ((gBattleMons[gActiveBattler].status1 & STATUS_BURN) && gBattleMons[gActiveBattler].hp != 0) + if ((gBattleMons[gActiveBattler].status1 & STATUS1_BURN) && gBattleMons[gActiveBattler].hp != 0) { gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; if (gBattleMoveDamage == 0) @@ -1004,10 +1005,10 @@ u8 TurnBasedEffects(void) { for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) { - if ((gBattleMons[gBattlerAttacker].status1 & STATUS_SLEEP) + if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) && gBattleMons[gBattlerAttacker].ability != ABILITY_SOUNDPROOF) { - gBattleMons[gBattlerAttacker].status1 &= ~(STATUS_SLEEP); + gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_SLEEP); gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_NIGHTMARE); gBattleCommunication[MULTISTRING_CHOOSER] = 1; BattleScriptExecute(BattleScript_MonWokeUpInUproar); @@ -1131,7 +1132,7 @@ u8 TurnBasedEffects(void) if (gStatuses3[gActiveBattler] & STATUS3_YAWN) { gStatuses3[gActiveBattler] -= 0x800; - if (!(gStatuses3[gActiveBattler] & STATUS3_YAWN) && !(gBattleMons[gActiveBattler].status1 & STATUS_ANY) + if (!(gStatuses3[gActiveBattler] & STATUS3_YAWN) && !(gBattleMons[gActiveBattler].status1 & STATUS1_ANY) && gBattleMons[gActiveBattler].ability != ABILITY_VITAL_SPIRIT && gBattleMons[gActiveBattler].ability != ABILITY_INSOMNIA && !UproarWakeUpCheck(gActiveBattler)) { @@ -1333,11 +1334,11 @@ u8 AtkCanceller_UnableToUseMove(void) gBattleStruct->atkCancellerTracker++; break; case 1: // check being asleep - if (gBattleMons[gBattlerAttacker].status1 & STATUS_SLEEP) + if (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) { if (UproarWakeUpCheck(gBattlerAttacker)) { - gBattleMons[gBattlerAttacker].status1 &= ~(STATUS_SLEEP); + gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_SLEEP); gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_NIGHTMARE); BattleScriptPushCursor(); gBattleCommunication[MULTISTRING_CHOOSER] = 1; @@ -1351,11 +1352,11 @@ u8 AtkCanceller_UnableToUseMove(void) toSub = 2; else toSub = 1; - if ((gBattleMons[gBattlerAttacker].status1 & STATUS_SLEEP) < toSub) - gBattleMons[gBattlerAttacker].status1 &= ~(STATUS_SLEEP); + if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) < toSub) + gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_SLEEP); else gBattleMons[gBattlerAttacker].status1 -= toSub; - if (gBattleMons[gBattlerAttacker].status1 & STATUS_SLEEP) + if (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) { if (gCurrentMove != MOVE_SNORE && gCurrentMove != MOVE_SLEEP_TALK) { @@ -1377,7 +1378,7 @@ u8 AtkCanceller_UnableToUseMove(void) gBattleStruct->atkCancellerTracker++; break; case 2: // check being frozen - if (gBattleMons[gBattlerAttacker].status1 & STATUS_FREEZE) + if (gBattleMons[gBattlerAttacker].status1 & STATUS1_FREEZE) { if (Random() % 5) { @@ -1394,7 +1395,7 @@ u8 AtkCanceller_UnableToUseMove(void) } else // unfreeze { - gBattleMons[gBattlerAttacker].status1 &= ~(STATUS_FREEZE); + gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_FREEZE); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; gBattleCommunication[MULTISTRING_CHOOSER] = 0; @@ -1504,7 +1505,7 @@ u8 AtkCanceller_UnableToUseMove(void) gBattleStruct->atkCancellerTracker++; break; case 10: // paralysis - if (gBattleMons[gBattlerAttacker].status1 & STATUS_PARALYSIS && (Random() % 4) == 0) + if (gBattleMons[gBattlerAttacker].status1 & STATUS1_PARALYSIS && (Random() % 4) == 0) { gProtectStructs[gBattlerAttacker].prlzImmobility = 1; CancelMultiTurnMoves(gBattlerAttacker); @@ -1558,11 +1559,11 @@ u8 AtkCanceller_UnableToUseMove(void) gBattleStruct->atkCancellerTracker++; break; case 13: // move thawing - if (gBattleMons[gBattlerAttacker].status1 & STATUS_FREEZE) + if (gBattleMons[gBattlerAttacker].status1 & STATUS1_FREEZE) { if (gBattleMoves[gCurrentMove].effect == EFFECT_THAW_HIT) { - gBattleMons[gBattlerAttacker].status1 &= ~(STATUS_FREEZE); + gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_FREEZE); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; gBattleCommunication[MULTISTRING_CHOOSER] = 1; @@ -1873,17 +1874,17 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_SHED_SKIN: - if ((gBattleMons[bank].status1 & STATUS_ANY) && (Random() % 3) == 0) + if ((gBattleMons[bank].status1 & STATUS1_ANY) && (Random() % 3) == 0) { - if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON)) + if (gBattleMons[bank].status1 & (STATUS1_POISON | STATUS1_TOXIC_POISON)) StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); - if (gBattleMons[bank].status1 & STATUS_SLEEP) + if (gBattleMons[bank].status1 & STATUS1_SLEEP) StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); - if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + if (gBattleMons[bank].status1 & STATUS1_PARALYSIS) StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); - if (gBattleMons[bank].status1 & STATUS_BURN) + if (gBattleMons[bank].status1 & STATUS1_BURN) StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); - if (gBattleMons[bank].status1 & STATUS_FREEZE) + if (gBattleMons[bank].status1 & STATUS1_FREEZE) StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); gBattleMons[bank].status1 = 0; // BUG: The nightmare status does not get cleared here. This was fixed in Emerald. @@ -1955,7 +1956,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_FLASH_FIRE: - if (moveType == TYPE_FIRE && !(gBattleMons[bank].status1 & STATUS_FREEZE)) + if (moveType == TYPE_FIRE && !(gBattleMons[bank].status1 & STATUS1_FREEZE)) { if (!(eFlashFireArr.arr[bank] & 1)) { @@ -2232,7 +2233,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) switch (gBattleMons[bank].ability) { case ABILITY_IMMUNITY: - if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON | 0xF00)) // TODO: what is 0xF00? + if (gBattleMons[bank].status1 & (STATUS1_POISON | STATUS1_TOXIC_POISON | 0xF00)) // TODO: what is 0xF00? { StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); effect = 1; @@ -2246,7 +2247,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_LIMBER: - if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + if (gBattleMons[bank].status1 & STATUS1_PARALYSIS) { StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); effect = 1; @@ -2254,7 +2255,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) break; case ABILITY_INSOMNIA: case ABILITY_VITAL_SPIRIT: - if (gBattleMons[bank].status1 & STATUS_SLEEP) + if (gBattleMons[bank].status1 & STATUS1_SLEEP) { gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); @@ -2262,14 +2263,14 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_WATER_VEIL: - if (gBattleMons[bank].status1 & STATUS_BURN) + if (gBattleMons[bank].status1 & STATUS1_BURN) { StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); effect = 1; } break; case ABILITY_MAGMA_ARMOR: - if (gBattleMons[bank].status1 & STATUS_FREEZE) + if (gBattleMons[bank].status1 & STATUS1_FREEZE) { StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); effect = 1; @@ -2989,41 +2990,41 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) } break; case HOLD_EFFECT_CURE_PAR: - if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + if (gBattleMons[bank].status1 & STATUS1_PARALYSIS) { - gBattleMons[bank].status1 &= ~(STATUS_PARALYSIS); + gBattleMons[bank].status1 &= ~(STATUS1_PARALYSIS); BattleScriptExecute(BattleScript_BerryCurePrlzEnd2); effect = ITEM_STATUS_CHANGE; } break; case HOLD_EFFECT_CURE_PSN: - if (gBattleMons[bank].status1 & STATUS_PSN_ANY) + if (gBattleMons[bank].status1 & STATUS1_PSN_ANY) { - gBattleMons[bank].status1 &= ~(STATUS_PSN_ANY | STATUS_TOXIC_COUNTER); + gBattleMons[bank].status1 &= ~(STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER); BattleScriptExecute(BattleScript_BerryCurePsnEnd2); effect = ITEM_STATUS_CHANGE; } break; case HOLD_EFFECT_CURE_BRN: - if (gBattleMons[bank].status1 & STATUS_BURN) + if (gBattleMons[bank].status1 & STATUS1_BURN) { - gBattleMons[bank].status1 &= ~(STATUS_BURN); + gBattleMons[bank].status1 &= ~(STATUS1_BURN); BattleScriptExecute(BattleScript_BerryCureBrnEnd2); effect = ITEM_STATUS_CHANGE; } break; case HOLD_EFFECT_CURE_FRZ: - if (gBattleMons[bank].status1 & STATUS_FREEZE) + if (gBattleMons[bank].status1 & STATUS1_FREEZE) { - gBattleMons[bank].status1 &= ~(STATUS_FREEZE); + gBattleMons[bank].status1 &= ~(STATUS1_FREEZE); BattleScriptExecute(BattleScript_BerryCureFrzEnd2); effect = ITEM_STATUS_CHANGE; } break; case HOLD_EFFECT_CURE_SLP: - if (gBattleMons[bank].status1 & STATUS_SLEEP) + if (gBattleMons[bank].status1 & STATUS1_SLEEP) { - gBattleMons[bank].status1 &= ~(STATUS_SLEEP); + gBattleMons[bank].status1 &= ~(STATUS1_SLEEP); gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); BattleScriptExecute(BattleScript_BerryCureSlpEnd2); effect = ITEM_STATUS_CHANGE; @@ -3038,31 +3039,31 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) } break; case HOLD_EFFECT_CURE_STATUS: - if (gBattleMons[bank].status1 & STATUS_ANY || gBattleMons[bank].status2 & STATUS2_CONFUSION) + if (gBattleMons[bank].status1 & STATUS1_ANY || gBattleMons[bank].status2 & STATUS2_CONFUSION) { i = 0; - if (gBattleMons[bank].status1 & STATUS_PSN_ANY) + if (gBattleMons[bank].status1 & STATUS1_PSN_ANY) { StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); i++; } - if (gBattleMons[bank].status1 & STATUS_SLEEP) + if (gBattleMons[bank].status1 & STATUS1_SLEEP) { gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); i++; } - if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + if (gBattleMons[bank].status1 & STATUS1_PARALYSIS) { StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); i++; } - if (gBattleMons[bank].status1 & STATUS_BURN) + if (gBattleMons[bank].status1 & STATUS1_BURN) { StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); i++; } - if (gBattleMons[bank].status1 & STATUS_FREEZE) + if (gBattleMons[bank].status1 & STATUS1_FREEZE) { StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); i++; @@ -3131,45 +3132,45 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) switch (bankHoldEffect) { case HOLD_EFFECT_CURE_PAR: - if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + if (gBattleMons[bank].status1 & STATUS1_PARALYSIS) { - gBattleMons[bank].status1 &= ~(STATUS_PARALYSIS); + gBattleMons[bank].status1 &= ~(STATUS1_PARALYSIS); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryCureParRet; effect = ITEM_STATUS_CHANGE; } break; case HOLD_EFFECT_CURE_PSN: - if (gBattleMons[bank].status1 & STATUS_PSN_ANY) + if (gBattleMons[bank].status1 & STATUS1_PSN_ANY) { - gBattleMons[bank].status1 &= ~(STATUS_PSN_ANY | STATUS_TOXIC_COUNTER); + gBattleMons[bank].status1 &= ~(STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryCurePsnRet; effect = ITEM_STATUS_CHANGE; } break; case HOLD_EFFECT_CURE_BRN: - if (gBattleMons[bank].status1 & STATUS_BURN) + if (gBattleMons[bank].status1 & STATUS1_BURN) { - gBattleMons[bank].status1 &= ~(STATUS_BURN); + gBattleMons[bank].status1 &= ~(STATUS1_BURN); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryCureBrnRet; effect = ITEM_STATUS_CHANGE; } break; case HOLD_EFFECT_CURE_FRZ: - if (gBattleMons[bank].status1 & STATUS_FREEZE) + if (gBattleMons[bank].status1 & STATUS1_FREEZE) { - gBattleMons[bank].status1 &= ~(STATUS_FREEZE); + gBattleMons[bank].status1 &= ~(STATUS1_FREEZE); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryCureFrzRet; effect = ITEM_STATUS_CHANGE; } break; case HOLD_EFFECT_CURE_SLP: - if (gBattleMons[bank].status1 & STATUS_SLEEP) + if (gBattleMons[bank].status1 & STATUS1_SLEEP) { - gBattleMons[bank].status1 &= ~(STATUS_SLEEP); + gBattleMons[bank].status1 &= ~(STATUS1_SLEEP); gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryCureSlpRet; @@ -3197,26 +3198,26 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) } break; case HOLD_EFFECT_CURE_STATUS: - if (gBattleMons[bank].status1 & STATUS_ANY || gBattleMons[bank].status2 & STATUS2_CONFUSION) + if (gBattleMons[bank].status1 & STATUS1_ANY || gBattleMons[bank].status2 & STATUS2_CONFUSION) { - if (gBattleMons[bank].status1 & STATUS_PSN_ANY) + if (gBattleMons[bank].status1 & STATUS1_PSN_ANY) { StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); } - if (gBattleMons[bank].status1 & STATUS_SLEEP) + if (gBattleMons[bank].status1 & STATUS1_SLEEP) { gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); } - if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + if (gBattleMons[bank].status1 & STATUS1_PARALYSIS) { StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); } - if (gBattleMons[bank].status1 & STATUS_BURN) + if (gBattleMons[bank].status1 & STATUS1_BURN) { StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); } - if (gBattleMons[bank].status1 & STATUS_FREEZE) + if (gBattleMons[bank].status1 & STATUS1_FREEZE) { StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); } @@ -3477,7 +3478,7 @@ u8 IsMonDisobedient(void) // is not obedient if (gCurrentMove == MOVE_RAGE) gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_RAGE); - if (gBattleMons[gBattlerAttacker].status1 & STATUS_SLEEP && (gCurrentMove == MOVE_SNORE || gCurrentMove == MOVE_SLEEP_TALK)) + if (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP && (gCurrentMove == MOVE_SNORE || gCurrentMove == MOVE_SLEEP_TALK)) { gBattlescriptCurrInstr = gUnknown_081D995F; return 1; @@ -3515,7 +3516,7 @@ u8 IsMonDisobedient(void) obedienceLevel = gBattleMons[gBattlerAttacker].level - obedienceLevel; calc = (Random() & 255); - if (calc < obedienceLevel && !(gBattleMons[gBattlerAttacker].status1 & STATUS_ANY) && gBattleMons[gBattlerAttacker].ability != ABILITY_VITAL_SPIRIT && gBattleMons[gBattlerAttacker].ability != ABILITY_INSOMNIA) + if (calc < obedienceLevel && !(gBattleMons[gBattlerAttacker].status1 & STATUS1_ANY) && gBattleMons[gBattlerAttacker].ability != ABILITY_VITAL_SPIRIT && gBattleMons[gBattlerAttacker].ability != ABILITY_INSOMNIA) { // try putting asleep int i; diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c index e4ae70c0b..4c2f74f65 100644 --- a/src/calculate_base_damage.c +++ b/src/calculate_base_damage.c @@ -232,7 +232,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de damage = damage / damageHelper; damage /= 50; - if ((attacker->status1 & STATUS_BURN) && attacker->ability != ABILITY_GUTS) + if ((attacker->status1 & STATUS1_BURN) && attacker->ability != ABILITY_GUTS) damage /= 2; if ((sideStatus & SIDE_STATUS_REFLECT) && gCritMultiplier == 1) diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index e970cc3bc..ef8360681 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -4772,15 +4772,15 @@ void sub_80A1C30(u8 a) u8 GetPrimaryStatus(u32 status) { - if (status & (STATUS_POISON | STATUS_TOXIC_POISON)) + if (status & (STATUS1_POISON | STATUS1_TOXIC_POISON)) return STATUS_PRIMARY_POISON; - if (status & STATUS_PARALYSIS) + if (status & STATUS1_PARALYSIS) return STATUS_PRIMARY_PARALYSIS; - if (status & STATUS_SLEEP) + if (status & STATUS1_SLEEP) return STATUS_PRIMARY_SLEEP; - if (status & STATUS_FREEZE) + if (status & STATUS1_FREEZE) return STATUS_PRIMARY_FREEZE; - if (status & STATUS_BURN) + if (status & STATUS1_BURN) return STATUS_PRIMARY_BURN; return STATUS_PRIMARY_NONE; diff --git a/src/rom3.c b/src/rom3.c index c4a6ffec0..a1990b3ba 100644 --- a/src/rom3.c +++ b/src/rom3.c @@ -1,5 +1,6 @@ #include "global.h" #include "battle.h" +#include "battle_controllers.h" #include "battle_811DA74.h" #include "battle_ai_script_commands.h" #include "battle_anim.h" -- cgit v1.2.3 From d7a754386ce491791fe8216fdcb0f4fb72240774 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 30 Jul 2019 22:14:41 -0500 Subject: rename rom3.c to battle_controllers.c --- src/battle_controllers.c | 1185 ++++++++++++++++++++++++++++++++++++++++++++++ src/rom3.c | 1185 ---------------------------------------------- 2 files changed, 1185 insertions(+), 1185 deletions(-) create mode 100644 src/battle_controllers.c delete mode 100644 src/rom3.c (limited to 'src') diff --git a/src/battle_controllers.c b/src/battle_controllers.c new file mode 100644 index 000000000..a1990b3ba --- /dev/null +++ b/src/battle_controllers.c @@ -0,0 +1,1185 @@ +#include "global.h" +#include "battle.h" +#include "battle_controllers.h" +#include "battle_811DA74.h" +#include "battle_ai_script_commands.h" +#include "battle_anim.h" +#include "battle_anim_81258BC.h" +#include "battle_anim_8137220.h" +#include "battle_util.h" +#include "cable_club.h" +#include "constants/items.h" +#include "link.h" +#include "pokemon.h" +#include "rom3.h" +#include "rom_8094928.h" +#include "constants/species.h" +#include "task.h" +#include "util.h" +#include "battle_message.h" +#include "data2.h" +#include "ewram.h" + +extern u16 gBattleTypeFlags; +extern u16 gBattleWeather; +extern struct BattlePokemon gBattleMons[]; + +static EWRAM_DATA u8 sLinkSendTaskId = 0; +static EWRAM_DATA u8 sLinkReceiveTaskId = 0; +static EWRAM_DATA u8 gUnknown_020238C6 = 0; + +extern u32 gUnknown_020239FC; +extern u8 gBattleBufferA[][0x200]; +extern u8 gBattleBufferB[][0x200]; +extern u8 gActiveBattler; +extern u32 gBattleControllerExecFlags; +extern u8 gBattlersCount; +extern u16 gBattlerPartyIndexes[]; +extern u8 gBanksBySide[]; +extern u16 gCurrentMove; +extern u16 gChosenMove; +extern u16 gLastUsedItem; +extern u8 gLastUsedAbility; +extern u8 gBattlerAttacker; +extern u8 gBattlerTarget; +extern u8 gEffectBattler; +extern u8 gPotentialItemEffectBattler; +extern u8 gAbsentBattlerFlags; +extern u8 gMultiHitCounter; +extern u8 gUnknown_02024C78; +extern u8 gBattleOutcome; +extern u8 gActionSelectionCursor[]; +extern u8 gMoveSelectionCursor[]; +extern u8 gBattleTextBuff1[]; +extern u8 gBattleTextBuff2[]; +extern u8 gBattleTextBuff3[]; +extern void (*gBattleMainFunc)(void); +extern void (*gBattlerControllerFuncs[])(void); + +u8 gBattleBuffersTransferData[0x170]; + +void sub_800B858(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + OpenLink(); + CreateTask(sub_8083C50, 0); + CreateTasksForSendRecvLinkBuffers(); + } +} + +#if DEBUG +extern u8 gUnknown_02023A14_50; +#endif + +void SetUpBattleVarsAndBirchPoochyena(void) +{ + s32 i; + + gBattleMainFunc = nullsub_41; + for (i = 0; i < 4; i++) + { + gBattlerControllerFuncs[i] = nullsub_91; + gBanksBySide[i] = 0xFF; + gActionSelectionCursor[i] = 0; + gMoveSelectionCursor[i] = 0; + } + sub_800B858(); + gBattleControllerExecFlags = 0; + ClearBattleAnimationVars(); + ClearBattleMonForms(); + BattleAI_HandleItemUseBeforeAISetup(); + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + { + ZeroEnemyPartyMons(); + CreateMon(&gEnemyParty[0], SPECIES_POOCHYENA, 2, 32, 0, 0, 0, 0); + i = ITEM_NONE; + SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &i); + } + gUnknown_020239FC = 0; + gUnknown_02024C78 = 0; + +#if DEBUG + if (gUnknown_02023A14_50 & 0x80) + { + gSharedMem[0x160fd] = 0; + gSharedMem[0x160fe] = 0; + gSharedMem[0x160ff] = 0; + ((u32 *) gBattleBuffersTransferData)[64]++; + } +#endif +} + +void sub_800B950(void) +{ + s32 i; + + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + sub_800BA78(); + else + sub_800B9A8(); + sub_800BD54(); + if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + for (i = 0; i < gBattlersCount; i++) + sub_8094978(i, 0); + } +} + +void sub_800B9A8(void) +{ + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + gBattleMainFunc = sub_8010800; + if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + gBattlerControllerFuncs[0] = SetBankFuncToSafariBufferRunCommand; + else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL) + gBattlerControllerFuncs[0] = SetBankFuncToWallyBufferRunCommand; + else + gBattlerControllerFuncs[0] = SetBankFuncToPlayerBufferRunCommand; + gBanksBySide[0] = 0; + gBattlerControllerFuncs[1] = SetBankFuncToOpponentBufferRunCommand; + gBanksBySide[1] = 1; + gBattlersCount = 2; + } + else + { + gBattleMainFunc = sub_8010800; + gBattlerControllerFuncs[0] = SetBankFuncToPlayerBufferRunCommand; + gBanksBySide[0] = 0; + gBattlerControllerFuncs[1] = SetBankFuncToOpponentBufferRunCommand; + gBanksBySide[1] = 1; + gBattlerControllerFuncs[2] = SetBankFuncToPlayerBufferRunCommand; + gBanksBySide[2] = 2; + gBattlerControllerFuncs[3] = SetBankFuncToOpponentBufferRunCommand; + gBanksBySide[3] = 3; + gBattlersCount = 4; + } +} + +void sub_800BA78(void) +{ + u8 multiplayerId; + int i; + + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + if (gBattleTypeFlags & BATTLE_TYPE_WILD) + { + gBattleMainFunc = sub_8010800; + gBattlerControllerFuncs[0] = SetBankFuncToPlayerBufferRunCommand; + gBanksBySide[0] = 0; + gBattlerControllerFuncs[1] = SetBankFuncToLinkOpponentBufferRunCommand; + gBanksBySide[1] = 1; + gBattlersCount = 2; + } + else + { + gBattlerControllerFuncs[1] = SetBankFuncToPlayerBufferRunCommand; + gBanksBySide[1] = 0; + gBattlerControllerFuncs[0] = SetBankFuncToLinkOpponentBufferRunCommand; + gBanksBySide[0] = 1; + gBattlersCount = 2; + } + return; + } + if ((gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_DOUBLE)) == BATTLE_TYPE_DOUBLE) + { + if (gBattleTypeFlags & BATTLE_TYPE_WILD) + { + gBattleMainFunc = sub_8010800; + gBattlerControllerFuncs[0] = SetBankFuncToPlayerBufferRunCommand; + gBanksBySide[0] = 0; + gBattlerControllerFuncs[1] = SetBankFuncToLinkOpponentBufferRunCommand; + gBanksBySide[1] = 1; + gBattlerControllerFuncs[2] = SetBankFuncToPlayerBufferRunCommand; + gBanksBySide[2] = 2; + gBattlerControllerFuncs[3] = SetBankFuncToLinkOpponentBufferRunCommand; + gBanksBySide[3] = 3; + gBattlersCount = 4; + } + else + { + gBattlerControllerFuncs[1] = SetBankFuncToPlayerBufferRunCommand; + gBanksBySide[1] = 0; + gBattlerControllerFuncs[0] = SetBankFuncToLinkOpponentBufferRunCommand; + gBanksBySide[0] = 1; + gBattlerControllerFuncs[3] = SetBankFuncToPlayerBufferRunCommand; + gBanksBySide[3] = 2; + gBattlerControllerFuncs[2] = SetBankFuncToLinkOpponentBufferRunCommand; + gBanksBySide[2] = 3; + gBattlersCount = 4; + + } + return; + } + multiplayerId = GetMultiplayerId(); + if (gBattleTypeFlags & BATTLE_TYPE_WILD) + gBattleMainFunc = sub_8010800; + for (i = 0; i < 4; i++) + { + switch (gLinkPlayers[i].id) + { + case 0: + case 3: + sub_8094978(gLinkPlayers[i].id, 0); + break; + case 1: + case 2: + sub_8094978(gLinkPlayers[i].id, 1); + break; + } + + if (i == multiplayerId) + { + gBattlerControllerFuncs[gLinkPlayers[i].id] = SetBankFuncToPlayerBufferRunCommand; + switch (gLinkPlayers[i].id) + { + case 0: + case 3: + gBanksBySide[gLinkPlayers[i].id] = 0; + gBattlerPartyIndexes[gLinkPlayers[i].id] = 0; + break; + case 1: + case 2: + gBanksBySide[gLinkPlayers[i].id] = 2; + gBattlerPartyIndexes[gLinkPlayers[i].id] = 3; + break; + } + } + else + { + if ((!(gLinkPlayers[i].id & 1) && !(gLinkPlayers[multiplayerId].id & 1)) + || ((gLinkPlayers[i].id & 1) && (gLinkPlayers[multiplayerId].id & 1))) + { + gBattlerControllerFuncs[gLinkPlayers[i].id] = SetBankFuncToLinkPartnerBufferRunCommand; + switch (gLinkPlayers[i].id) + { + case 0: + case 3: + gBanksBySide[gLinkPlayers[i].id] = 0; + gBattlerPartyIndexes[gLinkPlayers[i].id] = 0; + break; + case 1: + case 2: + gBanksBySide[gLinkPlayers[i].id] = 2; + gBattlerPartyIndexes[gLinkPlayers[i].id] = 3; + break; + } + } + else + { + gBattlerControllerFuncs[gLinkPlayers[i].id] = SetBankFuncToLinkOpponentBufferRunCommand; + switch (gLinkPlayers[i].id) + { + case 0: + case 3: + gBanksBySide[gLinkPlayers[i].id] = 1; + gBattlerPartyIndexes[gLinkPlayers[i].id] = 0; + break; + case 1: + case 2: + gBanksBySide[gLinkPlayers[i].id] = 3; + gBattlerPartyIndexes[gLinkPlayers[i].id] = 3; + break; + } + } + } + } + gBattlersCount = 4; +} + +void sub_800BD54(void) +{ + int i; + int j; + + if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + for (i = 0; i < gBattlersCount; i++) + { + for (j = 0; j < 6; j++) + { + if (i < 2) + { + if (!(gBanksBySide[i] & 1)) + { + if (GetMonData(&gPlayerParty[j], MON_DATA_HP) != 0 + && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != 0 + && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_EGG + && GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG) == 0) + { + gBattlerPartyIndexes[i] = j; + break; + } + } + else + { + if (GetMonData(&gEnemyParty[j], MON_DATA_HP) != 0 + && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != 0 + && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_EGG + && GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG) == 0) + { + gBattlerPartyIndexes[i] = j; + break; + } + } + } + else + { + if (!(gBanksBySide[i] & 1)) + { + if (GetMonData(&gPlayerParty[j], MON_DATA_HP) != 0 + && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES) != 0 //Probably a typo by Game Freak. The rest use SPECIES2 + && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_EGG + && GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG) == 0 + && gBattlerPartyIndexes[i - 2] != j) + { + gBattlerPartyIndexes[i] = j; + break; + } + } + else + { + if (GetMonData(&gEnemyParty[j], MON_DATA_HP) != 0 + && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != 0 + && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_EGG + && GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG) == 0 + && gBattlerPartyIndexes[i - 2] != j) + { + gBattlerPartyIndexes[i] = j; + break; + } + } + } + } + } + } +} + +void PrepareBufferDataTransfer(u8 a, u8 *data, u16 size) +{ + int i; + + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + PrepareBufferDataTransferLink(a, size, data); + } + else + { + switch (a) + { + case 0: + for (i = 0; i < size; i++) + { + gBattleBufferA[gActiveBattler][i] = *data; + data++; + } + break; + case 1: + for (i = 0; i < size; i++) + { + gBattleBufferB[gActiveBattler][i] = *data; + data++; + } + break; + } + } +} + +void CreateTasksForSendRecvLinkBuffers(void) +{ + sLinkSendTaskId = CreateTask(Task_HandleSendLinkBuffersData, 0); + gTasks[sLinkSendTaskId].data[11] = 0; + gTasks[sLinkSendTaskId].data[12] = 0; + gTasks[sLinkSendTaskId].data[13] = 0; + gTasks[sLinkSendTaskId].data[14] = 0; + gTasks[sLinkSendTaskId].data[15] = 0; + + sLinkReceiveTaskId = CreateTask(Task_HandleCopyReceivedLinkBuffersData, 0); + gTasks[sLinkReceiveTaskId].data[12] = 0; + gTasks[sLinkReceiveTaskId].data[13] = 0; + gTasks[sLinkReceiveTaskId].data[14] = 0; + gTasks[sLinkReceiveTaskId].data[15] = 0; + + gUnknown_020238C6 = 0; + CpuFill16(0, EWRAM_14000, 0x2000); +} + +void PrepareBufferDataTransferLink(u8 a, u16 size, u8 *data) +{ + s32 r9; + int i; + + r9 = size - size % 4 + 4; + if (gTasks[sLinkSendTaskId].data[14] + r9 + 9 > 0x1000) + { + gTasks[sLinkSendTaskId].data[12] = gTasks[sLinkSendTaskId].data[14]; + gTasks[sLinkSendTaskId].data[14] = 0; + } + + ewram14000arr(0, gTasks[sLinkSendTaskId].data[14]) = a; + ewram14000arr(1, gTasks[sLinkSendTaskId].data[14]) = gActiveBattler; + ewram14000arr(2, gTasks[sLinkSendTaskId].data[14]) = gBattlerAttacker; + ewram14000arr(3, gTasks[sLinkSendTaskId].data[14]) = gBattlerTarget; + ewram14000arr(4, gTasks[sLinkSendTaskId].data[14]) = r9; + ewram14000arr(5, gTasks[sLinkSendTaskId].data[14]) = (r9 & 0x0000FF00) >> 8; + ewram14000arr(6, gTasks[sLinkSendTaskId].data[14]) = gAbsentBattlerFlags; + ewram14000arr(7, gTasks[sLinkSendTaskId].data[14]) = gEffectBattler; + + for (i = 0; i < size; i++) + ewram14008arr(i, gTasks[sLinkSendTaskId].data[14]) = data[i]; + gTasks[sLinkSendTaskId].data[14] = gTasks[sLinkSendTaskId].data[14] + r9 + 8; +} + +void Task_HandleSendLinkBuffersData(u8 taskId) +{ + u16 var; + + switch (gTasks[taskId].data[11]) + { + case 0: + gTasks[taskId].data[10] = 100; + gTasks[taskId].data[11]++; + break; + case 1: + gTasks[taskId].data[10]--; + if (gTasks[taskId].data[10] == 0) + gTasks[taskId].data[11]++; + break; + case 2: + GetLinkPlayerCount_2(); + if (IsLinkMaster()) + { + sub_8007F4C(); + gTasks[taskId].data[11]++; + break; + } + gTasks[taskId].data[11]++; + break; + case 3: + if (gTasks[taskId].data[15] != gTasks[taskId].data[14]) + { + if (gTasks[taskId].data[13] == 0) + { + if (gTasks[taskId].data[15] > gTasks[taskId].data[14] + && gTasks[taskId].data[15] == gTasks[taskId].data[12]) + { + gTasks[taskId].data[12] = 0; + gTasks[taskId].data[15] = 0; + } + var = (ewram14004arr(0, gTasks[taskId].data[15]) | (ewram14004arr(1, gTasks[taskId].data[15]) << 8)) + 8; + SendBlock(bitmask_all_link_players_but_self(), &ewram14000arr(0, gTasks[taskId].data[15]), var); + gTasks[taskId].data[11]++; + } + else + { + gTasks[taskId].data[13]--; + break; + } + } + break; + case 4: + if (IsLinkTaskFinished()) + { + var = (ewram14004arr(0, gTasks[taskId].data[15]) | (ewram14004arr(1, gTasks[taskId].data[15]) << 8)); + gTasks[taskId].data[13] = 1; + gTasks[taskId].data[15] = gTasks[taskId].data[15] + var + 8; + gTasks[taskId].data[11] = 3; + } + break; + case 5: + gTasks[taskId].data[13]--; + if (gTasks[taskId].data[13] == 0) + { + gTasks[taskId].data[13] = 1; + gTasks[taskId].data[11] = 3; + } + break; + } +} + +//fix me +void sub_800C35C(void) +{ + u8 i; //r4 + s32 j; //r2 + u16 r6; //r6 + u16 *recvBuffer; //r3 + u8 *dest; //r5 + u8 *src; //r4 + + if (gReceivedRemoteLinkPlayers != 0 && (gBattleTypeFlags & 0x20) && gLinkPlayers[0].linkType == 0x2211) + { + for (i = 0; i < GetLinkPlayerCount(); i++) + { + if (GetBlockReceivedStatus() & gBitTable[i]) + { + ResetBlockReceivedFlag(i); + recvBuffer = gBlockRecvBuffer[i]; +#ifndef NONMATCHING + asm(""); + recvBuffer = gBlockRecvBuffer[i]; +#endif + r6 = gBlockRecvBuffer[i][2]; + if (gTasks[sLinkReceiveTaskId].data[14] + 9 + r6 > 0x1000) + { + gTasks[sLinkReceiveTaskId].data[12] = gTasks[sLinkReceiveTaskId].data[14]; + gTasks[sLinkReceiveTaskId].data[14] = 0; + } + //_0800C402 + dest = EWRAM_15000 + gTasks[sLinkReceiveTaskId].data[14]; + src = (u8 *)recvBuffer; + for (j = 0; j < r6 + 8; j++) + dest[j] = src[j]; + gTasks[sLinkReceiveTaskId].data[14] = gTasks[sLinkReceiveTaskId].data[14] + r6 + 8; + } + //_0800C446 + } + } +} + +void Task_HandleCopyReceivedLinkBuffersData(u8 taskId) +{ + u16 r7; + u8 r4; + u8 r2; + + if (gTasks[taskId].data[15] != gTasks[taskId].data[14]) + { + if (gTasks[taskId].data[15] > gTasks[taskId].data[14] + && gTasks[taskId].data[15] == gTasks[taskId].data[12]) + { + gTasks[taskId].data[12] = 0; + gTasks[taskId].data[15] = 0; + } + r4 = ewram15000arr(1, gTasks[taskId].data[15]); + r7 = ewram15000arr(4, gTasks[taskId].data[15]) | (ewram15000arr(5, gTasks[taskId].data[15]) << 8); + switch (ewram15000arr(0, gTasks[taskId].data[15])) + { + case 0: + if (gBattleControllerExecFlags & gBitTable[r4]) + return; + memcpy(gBattleBufferA[r4], &ewram15000arr(8, gTasks[taskId].data[15]), r7); + sub_80155A4(r4); + if (!(gBattleTypeFlags & BATTLE_TYPE_WILD)) + { + gBattlerAttacker = ewram15000arr(2, gTasks[taskId].data[15]); + gBattlerTarget = ewram15000arr(3, gTasks[taskId].data[15]); + gAbsentBattlerFlags = ewram15000arr(6, gTasks[taskId].data[15]); + gEffectBattler = ewram15000arr(7, gTasks[taskId].data[15]); + } + break; + case 1: + memcpy(gBattleBufferB[r4], &ewram15000arr(8, gTasks[taskId].data[15]), r7); + break; + case 2: + r2 = ewram15000arr(8, gTasks[taskId].data[15]); + gBattleControllerExecFlags &= ~(gBitTable[r4] << (r2 * 4)); + break; + } + + gTasks[taskId].data[15] = gTasks[taskId].data[15] + r7 + 8; + } +} + +void BtlController_EmitGetMonData(u8 bufferId, u8 b, u8 c) +{ + gBattleBuffersTransferData[0] = 0; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = c; + gBattleBuffersTransferData[3] = 0; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitGetRawMonData(u8 bufferId, u8 b, u8 c) +{ + gBattleBuffersTransferData[0] = 1; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = c; + gBattleBuffersTransferData[3] = 0; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitSetMonData(u8 bufferId, u8 b, u8 c, u8 d, void *e) +{ + int i; + + gBattleBuffersTransferData[0] = 2; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = c; + for (i = 0; i < d; i++) + gBattleBuffersTransferData[3 + i] = *(u8*)(e++); + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, d + 3); +} + +void BtlController_EmitSetRawMonData(u8 bufferId, u8 b, u8 c, u8 *d) +{ + int i; + + gBattleBuffersTransferData[0] = 3; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = c; + for (i = 0; i < c; i++) + gBattleBuffersTransferData[3 + i] = *(d++); + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, c + 3); +} + +void BtlController_EmitLoadMonSprite(u8 bufferId) +{ + gBattleBuffersTransferData[0] = 4; + gBattleBuffersTransferData[1] = 4; + gBattleBuffersTransferData[2] = 4; + gBattleBuffersTransferData[3] = 4; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitSwitchInAnim(u8 bufferId, u8 b, u8 c) +{ + gBattleBuffersTransferData[0] = 5; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = c; + gBattleBuffersTransferData[3] = 5; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitReturnMonToBall(u8 bufferId, u8 b) +{ + gBattleBuffersTransferData[0] = 6; + gBattleBuffersTransferData[1] = b; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2); +} + +void BtlController_EmitDrawTrainerPic(u8 a) +{ + gBattleBuffersTransferData[0] = 7; + gBattleBuffersTransferData[1] = 7; + gBattleBuffersTransferData[2] = 7; + gBattleBuffersTransferData[3] = 7; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitTrainerSlide(u8 a) +{ + gBattleBuffersTransferData[0] = 8; + gBattleBuffersTransferData[1] = 8; + gBattleBuffersTransferData[2] = 8; + gBattleBuffersTransferData[3] = 8; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitTrainerSlideBack(u8 a) +{ + gBattleBuffersTransferData[0] = 9; + gBattleBuffersTransferData[1] = 9; + gBattleBuffersTransferData[2] = 9; + gBattleBuffersTransferData[3] = 9; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitFaintAnimation(u8 a) +{ + gBattleBuffersTransferData[0] = 10; + gBattleBuffersTransferData[1] = 10; + gBattleBuffersTransferData[2] = 10; + gBattleBuffersTransferData[3] = 10; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitPaletteFade(u8 a) +{ + gBattleBuffersTransferData[0] = 11; + gBattleBuffersTransferData[1] = 11; + gBattleBuffersTransferData[2] = 11; + gBattleBuffersTransferData[3] = 11; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitSuccessBallThrowAnim(u8 a) +{ + gBattleBuffersTransferData[0] = 12; + gBattleBuffersTransferData[1] = 12; + gBattleBuffersTransferData[2] = 12; + gBattleBuffersTransferData[3] = 12; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitBallThrowAnim(u8 a, u8 b) +{ + gBattleBuffersTransferData[0] = 13; + gBattleBuffersTransferData[1] = b; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); +} + +void BtlController_EmitPause(u8 a, u8 b, u8 *c) +{ + int i; + + gBattleBuffersTransferData[0] = 14; + gBattleBuffersTransferData[1] = b; + for (i = 0; i < b * 3; i++) + gBattleBuffersTransferData[2 + i] = *(c++); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b * 3 + 2); +} + +void BtlController_EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g) +{ + gBattleBuffersTransferData[0] = 15; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; + gBattleBuffersTransferData[3] = c; + gBattleBuffersTransferData[4] = d; + gBattleBuffersTransferData[5] = (d & 0xFF00) >> 8; + gBattleBuffersTransferData[6] = e; + gBattleBuffersTransferData[7] = (e & 0x0000FF00) >> 8; + gBattleBuffersTransferData[8] = (e & 0x00FF0000) >> 16; + gBattleBuffersTransferData[9] = (e & 0xFF000000) >> 24; + gBattleBuffersTransferData[10] = f; + gBattleBuffersTransferData[11] = gMultiHitCounter; + if (AbilityBattleEffects(14, 0, 13, 0, 0) == 0 && AbilityBattleEffects(14, 0, 0x4D, 0, 0) == 0) + { + gBattleBuffersTransferData[12] = gBattleWeather; + gBattleBuffersTransferData[13] = (gBattleWeather & 0xFF00) >> 8; + } + else + { + gBattleBuffersTransferData[12] = 0; + gBattleBuffersTransferData[13] = 0; + } + gBattleBuffersTransferData[14] = 0; + gBattleBuffersTransferData[15] = 0; + memcpy(&gBattleBuffersTransferData[16], g, sizeof(*g)); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 0x2C); +} + +void BtlController_EmitPrintString(u8 a, u16 stringID) +{ + s32 i; + struct StringInfoBattle* stringInfo; + + gBattleBuffersTransferData[0] = 16; + gBattleBuffersTransferData[1] = gBattleOutcome; + gBattleBuffersTransferData[2] = stringID; + gBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8; + + stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]); + stringInfo->currentMove = gCurrentMove; + stringInfo->lastMove = gChosenMove; + stringInfo->lastItem = gLastUsedItem; + stringInfo->lastAbility = gLastUsedAbility; + stringInfo->scrActive = gBattleStruct->scriptingActive; + stringInfo->unk1605E = gBattleStruct->unk1605E; + stringInfo->hpScale = gBattleStruct->hpScale; + stringInfo->StringBank = gPotentialItemEffectBattler; + stringInfo->moveType = gBattleMoves[gCurrentMove].type; + + for (i = 0; i < 4; i++) + stringInfo->abilities[i] = gBattleMons[i].ability; + for (i = 0; i < 0x10; i++) + { + stringInfo->textBuffs[0][i] = gBattleTextBuff1[i]; + stringInfo->textBuffs[1][i] = gBattleTextBuff2[i]; + stringInfo->textBuffs[2][i] = gBattleTextBuff3[i]; + } + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4); +} + +void BtlController_EmitPrintSelectionString(u8 a, u16 stringID) +{ + s32 i; + struct StringInfoBattle* stringInfo; + + gBattleBuffersTransferData[0] = 17; + gBattleBuffersTransferData[1] = 17; + gBattleBuffersTransferData[2] = stringID; + gBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8; + + stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]); + stringInfo->currentMove = gCurrentMove; + stringInfo->lastMove = gChosenMove; + stringInfo->lastItem = gLastUsedItem; + stringInfo->lastAbility = gLastUsedAbility; + stringInfo->scrActive = gBattleStruct->scriptingActive; + stringInfo->unk1605E = gBattleStruct->unk1605E; + + for (i = 0; i < 4; i++) + stringInfo->abilities[i] = gBattleMons[i].ability; + for (i = 0; i < 0x10; i++) + { + stringInfo->textBuffs[0][i] = gBattleTextBuff1[i]; + stringInfo->textBuffs[1][i] = gBattleTextBuff2[i]; + stringInfo->textBuffs[2][i] = gBattleTextBuff3[i]; + } + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4); +} + +void BtlController_EmitChooseAction(u8 a, u8 b, u16 c) +{ + gBattleBuffersTransferData[0] = 18; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = c; + gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitUnknownYesNoBox(u8 a, u8 b) +{ + gBattleBuffersTransferData[0] = 19; + gBattleBuffersTransferData[1] = b; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); +} + +void BtlController_EmitChooseMove(u8 a, u8 b, u8 c, u8 *d) +{ + u32 i; + + gBattleBuffersTransferData[0] = 20; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = c; + gBattleBuffersTransferData[3] = 0; + for (i = 0; i < 20; i++) + gBattleBuffersTransferData[4 + i] = d[i]; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 24); +} + +void BtlController_EmitChooseItem(u8 a, u8 *b) +{ + int i; + + gBattleBuffersTransferData[0] = 21; + for (i = 0; i < 3; i++) + gBattleBuffersTransferData[1 + i] = b[i]; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e) +{ + int i; + + gBattleBuffersTransferData[0] = 22; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = c; + gBattleBuffersTransferData[3] = d; + for (i = 0; i < 3; i++) + gBattleBuffersTransferData[4 + i] = e[i]; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 8); //but only 7 bytes were written +} + +void BtlController_EmitCmd23(u8 a) +{ + gBattleBuffersTransferData[0] = 23; + gBattleBuffersTransferData[1] = 23; + gBattleBuffersTransferData[2] = 23; + gBattleBuffersTransferData[3] = 23; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +// FIXME: I think this function is supposed to take s16 as its second argument, +// but battle_4.c expects u16 +void BtlController_EmitHealthBarUpdate(u8 a, u16 b) +{ + gBattleBuffersTransferData[0] = 24; + gBattleBuffersTransferData[1] = 0; + gBattleBuffersTransferData[2] = (s16)b; + gBattleBuffersTransferData[3] = ((s16)b & 0xFF00) >> 8; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +// FIXME: I think this function is supposed to take s16 as its third argument, +// but battle_4.c expects u16 +void BtlController_EmitExpUpdate(u8 a, u8 b, u16 c) +{ + gBattleBuffersTransferData[0] = 25; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = (s16)c; + gBattleBuffersTransferData[3] = ((s16)c & 0xFF00) >> 8; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitStatusIconUpdate(u8 a, u32 b, u32 c) +{ + gBattleBuffersTransferData[0] = 26; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = (b & 0x0000FF00) >> 8; + gBattleBuffersTransferData[3] = (b & 0x00FF0000) >> 16; + gBattleBuffersTransferData[4] = (b & 0xFF000000) >> 24; + gBattleBuffersTransferData[5] = c; + gBattleBuffersTransferData[6] = (c & 0x0000FF00) >> 8; + gBattleBuffersTransferData[7] = (c & 0x00FF0000) >> 16; + gBattleBuffersTransferData[8] = (c & 0xFF000000) >> 24; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 9); +} + +void BtlController_EmitStatusAnimation(u8 a, u8 b, u32 c) +{ + gBattleBuffersTransferData[0] = 27; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = c; + gBattleBuffersTransferData[3] = (c & 0x0000FF00) >> 8; + gBattleBuffersTransferData[4] = (c & 0x00FF0000) >> 16; + gBattleBuffersTransferData[5] = (c & 0xFF000000) >> 24; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 6); +} + +void BtlController_EmitStatusXor(u8 a, u8 b) +{ + gBattleBuffersTransferData[0] = 28; + gBattleBuffersTransferData[1] = b; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); +} + +void BtlController_EmitDataTransfer(u8 a, u16 b, u8 *c) +{ + int i; + + gBattleBuffersTransferData[0] = 29; + gBattleBuffersTransferData[1] = 29; + gBattleBuffersTransferData[2] = b; + gBattleBuffersTransferData[3] = (b & 0xFF00) >> 8; + for (i = 0; i < b; i++) + gBattleBuffersTransferData[4 + i] = *(c++); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 4); +} + +void BtlController_EmitDMA3Transfer(u8 a, u32 b, u16 c, u8 *d) +{ + int i; + + gBattleBuffersTransferData[0] = 30; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = (b & 0x0000FF00) >> 8; + gBattleBuffersTransferData[3] = (b & 0x00FF0000) >> 16; + gBattleBuffersTransferData[4] = (b & 0xFF000000) >> 24; + gBattleBuffersTransferData[5] = c; + gBattleBuffersTransferData[6] = (c & 0xFF00) >> 8; + for (i = 0; i < c; i++) + gBattleBuffersTransferData[7 + i] = *(d++); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, c + 7); +} + +void BtlController_EmitPlayBGM(u8 a, u16 b, u8 *c) +{ + int i; + + gBattleBuffersTransferData[0] = 31; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; + for (i = 0; i < b; i++) + gBattleBuffersTransferData[3 + i] = *(c++); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 3); +} + +void BtlController_EmitCmd32(u8 a, u16 b, u8 *c) +{ + int i; + + gBattleBuffersTransferData[0] = 32; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; + for (i = 0; i < b; i++) + gBattleBuffersTransferData[3 + i] = *(c++); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 3); +} + +void BtlController_EmitTwoReturnValues(u8 a, u8 b, u16 c) +{ + gBattleBuffersTransferData[0] = 33; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = c; + gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitChosenMonReturnValue(u8 a, u8 b, u8 *c) +{ + int i; + + gBattleBuffersTransferData[0] = 34; + gBattleBuffersTransferData[1] = b; + for (i = 0; i < 3; i++) + gBattleBuffersTransferData[2 + i] = c[i]; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 5); +} + +void BtlController_EmitOneReturnValue(u8 a, u16 b) +{ + gBattleBuffersTransferData[0] = 35; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; + gBattleBuffersTransferData[3] = 0; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitOneReturnValue_Duplicate(u8 a, u16 b) +{ + gBattleBuffersTransferData[0] = 36; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; + gBattleBuffersTransferData[3] = 0; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitCmd37(u8 a) +{ + gBattleBuffersTransferData[0] = 37; + gBattleBuffersTransferData[1] = 37; + gBattleBuffersTransferData[2] = 37; + gBattleBuffersTransferData[3] = 37; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitCmd38(u8 a, u8 b) +{ + gBattleBuffersTransferData[0] = 38; + gBattleBuffersTransferData[1] = b; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); +} + +void BtlController_EmitCmd39(u8 a) +{ + gBattleBuffersTransferData[0] = 39; + gBattleBuffersTransferData[1] = 39; + gBattleBuffersTransferData[2] = 39; + gBattleBuffersTransferData[3] = 39; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitCmd40(u8 a) +{ + gBattleBuffersTransferData[0] = 40; + gBattleBuffersTransferData[1] = 40; + gBattleBuffersTransferData[2] = 40; + gBattleBuffersTransferData[3] = 40; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitHitAnimation(u8 a) +{ + gBattleBuffersTransferData[0] = 41; + gBattleBuffersTransferData[1] = 41; + gBattleBuffersTransferData[2] = 41; + gBattleBuffersTransferData[3] = 41; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitCmd42(u8 a) +{ + gBattleBuffersTransferData[0] = 42; + gBattleBuffersTransferData[1] = 42; + gBattleBuffersTransferData[2] = 42; + gBattleBuffersTransferData[3] = 42; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitPlaySE(u8 a, u16 b) +{ + gBattleBuffersTransferData[0] = 43; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; + gBattleBuffersTransferData[3] = 0; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitPlayFanfareOrBGM(u8 a, u16 b) +{ + gBattleBuffersTransferData[0] = 44; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; + gBattleBuffersTransferData[3] = 0; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitFaintingCry(u8 a) +{ + gBattleBuffersTransferData[0] = 45; + gBattleBuffersTransferData[1] = 45; + gBattleBuffersTransferData[2] = 45; + gBattleBuffersTransferData[3] = 45; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitIntroSlide(u8 a, u8 battleTerrain) +{ + gBattleBuffersTransferData[0] = 46; + gBattleBuffersTransferData[1] = battleTerrain; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); +} + +void BtlController_EmitIntroTrainerBallThrow(u8 a) +{ + gBattleBuffersTransferData[0] = 47; + gBattleBuffersTransferData[1] = 47; + gBattleBuffersTransferData[2] = 47; + gBattleBuffersTransferData[3] = 47; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitDrawPartyStatusSummary(u8 a, struct HpAndStatus *hpAndStatus, u8 c) +{ + int i; + + gBattleBuffersTransferData[0] = 48; + gBattleBuffersTransferData[1] = c & 0x7F; + gBattleBuffersTransferData[2] = (c & 0x80) >> 7; + gBattleBuffersTransferData[3] = 48; + for (i = 0; i < 48; i++) + gBattleBuffersTransferData[4 + i] = *(i + (u8*)(hpAndStatus)); + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 52); +} + +void BtlController_EmitHidePartyStatusSummary(u8 a) +{ + gBattleBuffersTransferData[0] = 49; + gBattleBuffersTransferData[1] = 49; + gBattleBuffersTransferData[2] = 49; + gBattleBuffersTransferData[3] = 49; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitEndBounceEffect(u8 a) +{ + gBattleBuffersTransferData[0] = 50; + gBattleBuffersTransferData[1] = 50; + gBattleBuffersTransferData[2] = 50; + gBattleBuffersTransferData[3] = 50; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitSpriteInvisibility(u8 a, u8 b) +{ + gBattleBuffersTransferData[0] = 51; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = 51; + gBattleBuffersTransferData[3] = 51; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitBattleAnimation(u8 a, u8 b, u16 c) +{ + gBattleBuffersTransferData[0] = 52; + gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[2] = c; + gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); +} + +void BtlController_EmitLinkStandbyMsg(u8 a, u8 b) +{ + gBattleBuffersTransferData[0] = 53; + gBattleBuffersTransferData[1] = b; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); +} + +void BtlController_EmitResetActionMoveSelection(u8 a, u8 b) +{ + gBattleBuffersTransferData[0] = 54; + gBattleBuffersTransferData[1] = b; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); +} + +void BtlController_EmitCmd55(u8 a, u8 b) +{ + gBattleBuffersTransferData[0] = 55; + gBattleBuffersTransferData[1] = b; + PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); +} diff --git a/src/rom3.c b/src/rom3.c deleted file mode 100644 index a1990b3ba..000000000 --- a/src/rom3.c +++ /dev/null @@ -1,1185 +0,0 @@ -#include "global.h" -#include "battle.h" -#include "battle_controllers.h" -#include "battle_811DA74.h" -#include "battle_ai_script_commands.h" -#include "battle_anim.h" -#include "battle_anim_81258BC.h" -#include "battle_anim_8137220.h" -#include "battle_util.h" -#include "cable_club.h" -#include "constants/items.h" -#include "link.h" -#include "pokemon.h" -#include "rom3.h" -#include "rom_8094928.h" -#include "constants/species.h" -#include "task.h" -#include "util.h" -#include "battle_message.h" -#include "data2.h" -#include "ewram.h" - -extern u16 gBattleTypeFlags; -extern u16 gBattleWeather; -extern struct BattlePokemon gBattleMons[]; - -static EWRAM_DATA u8 sLinkSendTaskId = 0; -static EWRAM_DATA u8 sLinkReceiveTaskId = 0; -static EWRAM_DATA u8 gUnknown_020238C6 = 0; - -extern u32 gUnknown_020239FC; -extern u8 gBattleBufferA[][0x200]; -extern u8 gBattleBufferB[][0x200]; -extern u8 gActiveBattler; -extern u32 gBattleControllerExecFlags; -extern u8 gBattlersCount; -extern u16 gBattlerPartyIndexes[]; -extern u8 gBanksBySide[]; -extern u16 gCurrentMove; -extern u16 gChosenMove; -extern u16 gLastUsedItem; -extern u8 gLastUsedAbility; -extern u8 gBattlerAttacker; -extern u8 gBattlerTarget; -extern u8 gEffectBattler; -extern u8 gPotentialItemEffectBattler; -extern u8 gAbsentBattlerFlags; -extern u8 gMultiHitCounter; -extern u8 gUnknown_02024C78; -extern u8 gBattleOutcome; -extern u8 gActionSelectionCursor[]; -extern u8 gMoveSelectionCursor[]; -extern u8 gBattleTextBuff1[]; -extern u8 gBattleTextBuff2[]; -extern u8 gBattleTextBuff3[]; -extern void (*gBattleMainFunc)(void); -extern void (*gBattlerControllerFuncs[])(void); - -u8 gBattleBuffersTransferData[0x170]; - -void sub_800B858(void) -{ - if (gBattleTypeFlags & BATTLE_TYPE_LINK) - { - OpenLink(); - CreateTask(sub_8083C50, 0); - CreateTasksForSendRecvLinkBuffers(); - } -} - -#if DEBUG -extern u8 gUnknown_02023A14_50; -#endif - -void SetUpBattleVarsAndBirchPoochyena(void) -{ - s32 i; - - gBattleMainFunc = nullsub_41; - for (i = 0; i < 4; i++) - { - gBattlerControllerFuncs[i] = nullsub_91; - gBanksBySide[i] = 0xFF; - gActionSelectionCursor[i] = 0; - gMoveSelectionCursor[i] = 0; - } - sub_800B858(); - gBattleControllerExecFlags = 0; - ClearBattleAnimationVars(); - ClearBattleMonForms(); - BattleAI_HandleItemUseBeforeAISetup(); - if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) - { - ZeroEnemyPartyMons(); - CreateMon(&gEnemyParty[0], SPECIES_POOCHYENA, 2, 32, 0, 0, 0, 0); - i = ITEM_NONE; - SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &i); - } - gUnknown_020239FC = 0; - gUnknown_02024C78 = 0; - -#if DEBUG - if (gUnknown_02023A14_50 & 0x80) - { - gSharedMem[0x160fd] = 0; - gSharedMem[0x160fe] = 0; - gSharedMem[0x160ff] = 0; - ((u32 *) gBattleBuffersTransferData)[64]++; - } -#endif -} - -void sub_800B950(void) -{ - s32 i; - - if (gBattleTypeFlags & BATTLE_TYPE_LINK) - sub_800BA78(); - else - sub_800B9A8(); - sub_800BD54(); - if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) - { - for (i = 0; i < gBattlersCount; i++) - sub_8094978(i, 0); - } -} - -void sub_800B9A8(void) -{ - if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) - { - gBattleMainFunc = sub_8010800; - if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) - gBattlerControllerFuncs[0] = SetBankFuncToSafariBufferRunCommand; - else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL) - gBattlerControllerFuncs[0] = SetBankFuncToWallyBufferRunCommand; - else - gBattlerControllerFuncs[0] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[0] = 0; - gBattlerControllerFuncs[1] = SetBankFuncToOpponentBufferRunCommand; - gBanksBySide[1] = 1; - gBattlersCount = 2; - } - else - { - gBattleMainFunc = sub_8010800; - gBattlerControllerFuncs[0] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[0] = 0; - gBattlerControllerFuncs[1] = SetBankFuncToOpponentBufferRunCommand; - gBanksBySide[1] = 1; - gBattlerControllerFuncs[2] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[2] = 2; - gBattlerControllerFuncs[3] = SetBankFuncToOpponentBufferRunCommand; - gBanksBySide[3] = 3; - gBattlersCount = 4; - } -} - -void sub_800BA78(void) -{ - u8 multiplayerId; - int i; - - if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) - { - if (gBattleTypeFlags & BATTLE_TYPE_WILD) - { - gBattleMainFunc = sub_8010800; - gBattlerControllerFuncs[0] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[0] = 0; - gBattlerControllerFuncs[1] = SetBankFuncToLinkOpponentBufferRunCommand; - gBanksBySide[1] = 1; - gBattlersCount = 2; - } - else - { - gBattlerControllerFuncs[1] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[1] = 0; - gBattlerControllerFuncs[0] = SetBankFuncToLinkOpponentBufferRunCommand; - gBanksBySide[0] = 1; - gBattlersCount = 2; - } - return; - } - if ((gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_DOUBLE)) == BATTLE_TYPE_DOUBLE) - { - if (gBattleTypeFlags & BATTLE_TYPE_WILD) - { - gBattleMainFunc = sub_8010800; - gBattlerControllerFuncs[0] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[0] = 0; - gBattlerControllerFuncs[1] = SetBankFuncToLinkOpponentBufferRunCommand; - gBanksBySide[1] = 1; - gBattlerControllerFuncs[2] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[2] = 2; - gBattlerControllerFuncs[3] = SetBankFuncToLinkOpponentBufferRunCommand; - gBanksBySide[3] = 3; - gBattlersCount = 4; - } - else - { - gBattlerControllerFuncs[1] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[1] = 0; - gBattlerControllerFuncs[0] = SetBankFuncToLinkOpponentBufferRunCommand; - gBanksBySide[0] = 1; - gBattlerControllerFuncs[3] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[3] = 2; - gBattlerControllerFuncs[2] = SetBankFuncToLinkOpponentBufferRunCommand; - gBanksBySide[2] = 3; - gBattlersCount = 4; - - } - return; - } - multiplayerId = GetMultiplayerId(); - if (gBattleTypeFlags & BATTLE_TYPE_WILD) - gBattleMainFunc = sub_8010800; - for (i = 0; i < 4; i++) - { - switch (gLinkPlayers[i].id) - { - case 0: - case 3: - sub_8094978(gLinkPlayers[i].id, 0); - break; - case 1: - case 2: - sub_8094978(gLinkPlayers[i].id, 1); - break; - } - - if (i == multiplayerId) - { - gBattlerControllerFuncs[gLinkPlayers[i].id] = SetBankFuncToPlayerBufferRunCommand; - switch (gLinkPlayers[i].id) - { - case 0: - case 3: - gBanksBySide[gLinkPlayers[i].id] = 0; - gBattlerPartyIndexes[gLinkPlayers[i].id] = 0; - break; - case 1: - case 2: - gBanksBySide[gLinkPlayers[i].id] = 2; - gBattlerPartyIndexes[gLinkPlayers[i].id] = 3; - break; - } - } - else - { - if ((!(gLinkPlayers[i].id & 1) && !(gLinkPlayers[multiplayerId].id & 1)) - || ((gLinkPlayers[i].id & 1) && (gLinkPlayers[multiplayerId].id & 1))) - { - gBattlerControllerFuncs[gLinkPlayers[i].id] = SetBankFuncToLinkPartnerBufferRunCommand; - switch (gLinkPlayers[i].id) - { - case 0: - case 3: - gBanksBySide[gLinkPlayers[i].id] = 0; - gBattlerPartyIndexes[gLinkPlayers[i].id] = 0; - break; - case 1: - case 2: - gBanksBySide[gLinkPlayers[i].id] = 2; - gBattlerPartyIndexes[gLinkPlayers[i].id] = 3; - break; - } - } - else - { - gBattlerControllerFuncs[gLinkPlayers[i].id] = SetBankFuncToLinkOpponentBufferRunCommand; - switch (gLinkPlayers[i].id) - { - case 0: - case 3: - gBanksBySide[gLinkPlayers[i].id] = 1; - gBattlerPartyIndexes[gLinkPlayers[i].id] = 0; - break; - case 1: - case 2: - gBanksBySide[gLinkPlayers[i].id] = 3; - gBattlerPartyIndexes[gLinkPlayers[i].id] = 3; - break; - } - } - } - } - gBattlersCount = 4; -} - -void sub_800BD54(void) -{ - int i; - int j; - - if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) - { - for (i = 0; i < gBattlersCount; i++) - { - for (j = 0; j < 6; j++) - { - if (i < 2) - { - if (!(gBanksBySide[i] & 1)) - { - if (GetMonData(&gPlayerParty[j], MON_DATA_HP) != 0 - && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != 0 - && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_EGG - && GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG) == 0) - { - gBattlerPartyIndexes[i] = j; - break; - } - } - else - { - if (GetMonData(&gEnemyParty[j], MON_DATA_HP) != 0 - && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != 0 - && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_EGG - && GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG) == 0) - { - gBattlerPartyIndexes[i] = j; - break; - } - } - } - else - { - if (!(gBanksBySide[i] & 1)) - { - if (GetMonData(&gPlayerParty[j], MON_DATA_HP) != 0 - && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES) != 0 //Probably a typo by Game Freak. The rest use SPECIES2 - && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_EGG - && GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG) == 0 - && gBattlerPartyIndexes[i - 2] != j) - { - gBattlerPartyIndexes[i] = j; - break; - } - } - else - { - if (GetMonData(&gEnemyParty[j], MON_DATA_HP) != 0 - && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != 0 - && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_EGG - && GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG) == 0 - && gBattlerPartyIndexes[i - 2] != j) - { - gBattlerPartyIndexes[i] = j; - break; - } - } - } - } - } - } -} - -void PrepareBufferDataTransfer(u8 a, u8 *data, u16 size) -{ - int i; - - if (gBattleTypeFlags & BATTLE_TYPE_LINK) - { - PrepareBufferDataTransferLink(a, size, data); - } - else - { - switch (a) - { - case 0: - for (i = 0; i < size; i++) - { - gBattleBufferA[gActiveBattler][i] = *data; - data++; - } - break; - case 1: - for (i = 0; i < size; i++) - { - gBattleBufferB[gActiveBattler][i] = *data; - data++; - } - break; - } - } -} - -void CreateTasksForSendRecvLinkBuffers(void) -{ - sLinkSendTaskId = CreateTask(Task_HandleSendLinkBuffersData, 0); - gTasks[sLinkSendTaskId].data[11] = 0; - gTasks[sLinkSendTaskId].data[12] = 0; - gTasks[sLinkSendTaskId].data[13] = 0; - gTasks[sLinkSendTaskId].data[14] = 0; - gTasks[sLinkSendTaskId].data[15] = 0; - - sLinkReceiveTaskId = CreateTask(Task_HandleCopyReceivedLinkBuffersData, 0); - gTasks[sLinkReceiveTaskId].data[12] = 0; - gTasks[sLinkReceiveTaskId].data[13] = 0; - gTasks[sLinkReceiveTaskId].data[14] = 0; - gTasks[sLinkReceiveTaskId].data[15] = 0; - - gUnknown_020238C6 = 0; - CpuFill16(0, EWRAM_14000, 0x2000); -} - -void PrepareBufferDataTransferLink(u8 a, u16 size, u8 *data) -{ - s32 r9; - int i; - - r9 = size - size % 4 + 4; - if (gTasks[sLinkSendTaskId].data[14] + r9 + 9 > 0x1000) - { - gTasks[sLinkSendTaskId].data[12] = gTasks[sLinkSendTaskId].data[14]; - gTasks[sLinkSendTaskId].data[14] = 0; - } - - ewram14000arr(0, gTasks[sLinkSendTaskId].data[14]) = a; - ewram14000arr(1, gTasks[sLinkSendTaskId].data[14]) = gActiveBattler; - ewram14000arr(2, gTasks[sLinkSendTaskId].data[14]) = gBattlerAttacker; - ewram14000arr(3, gTasks[sLinkSendTaskId].data[14]) = gBattlerTarget; - ewram14000arr(4, gTasks[sLinkSendTaskId].data[14]) = r9; - ewram14000arr(5, gTasks[sLinkSendTaskId].data[14]) = (r9 & 0x0000FF00) >> 8; - ewram14000arr(6, gTasks[sLinkSendTaskId].data[14]) = gAbsentBattlerFlags; - ewram14000arr(7, gTasks[sLinkSendTaskId].data[14]) = gEffectBattler; - - for (i = 0; i < size; i++) - ewram14008arr(i, gTasks[sLinkSendTaskId].data[14]) = data[i]; - gTasks[sLinkSendTaskId].data[14] = gTasks[sLinkSendTaskId].data[14] + r9 + 8; -} - -void Task_HandleSendLinkBuffersData(u8 taskId) -{ - u16 var; - - switch (gTasks[taskId].data[11]) - { - case 0: - gTasks[taskId].data[10] = 100; - gTasks[taskId].data[11]++; - break; - case 1: - gTasks[taskId].data[10]--; - if (gTasks[taskId].data[10] == 0) - gTasks[taskId].data[11]++; - break; - case 2: - GetLinkPlayerCount_2(); - if (IsLinkMaster()) - { - sub_8007F4C(); - gTasks[taskId].data[11]++; - break; - } - gTasks[taskId].data[11]++; - break; - case 3: - if (gTasks[taskId].data[15] != gTasks[taskId].data[14]) - { - if (gTasks[taskId].data[13] == 0) - { - if (gTasks[taskId].data[15] > gTasks[taskId].data[14] - && gTasks[taskId].data[15] == gTasks[taskId].data[12]) - { - gTasks[taskId].data[12] = 0; - gTasks[taskId].data[15] = 0; - } - var = (ewram14004arr(0, gTasks[taskId].data[15]) | (ewram14004arr(1, gTasks[taskId].data[15]) << 8)) + 8; - SendBlock(bitmask_all_link_players_but_self(), &ewram14000arr(0, gTasks[taskId].data[15]), var); - gTasks[taskId].data[11]++; - } - else - { - gTasks[taskId].data[13]--; - break; - } - } - break; - case 4: - if (IsLinkTaskFinished()) - { - var = (ewram14004arr(0, gTasks[taskId].data[15]) | (ewram14004arr(1, gTasks[taskId].data[15]) << 8)); - gTasks[taskId].data[13] = 1; - gTasks[taskId].data[15] = gTasks[taskId].data[15] + var + 8; - gTasks[taskId].data[11] = 3; - } - break; - case 5: - gTasks[taskId].data[13]--; - if (gTasks[taskId].data[13] == 0) - { - gTasks[taskId].data[13] = 1; - gTasks[taskId].data[11] = 3; - } - break; - } -} - -//fix me -void sub_800C35C(void) -{ - u8 i; //r4 - s32 j; //r2 - u16 r6; //r6 - u16 *recvBuffer; //r3 - u8 *dest; //r5 - u8 *src; //r4 - - if (gReceivedRemoteLinkPlayers != 0 && (gBattleTypeFlags & 0x20) && gLinkPlayers[0].linkType == 0x2211) - { - for (i = 0; i < GetLinkPlayerCount(); i++) - { - if (GetBlockReceivedStatus() & gBitTable[i]) - { - ResetBlockReceivedFlag(i); - recvBuffer = gBlockRecvBuffer[i]; -#ifndef NONMATCHING - asm(""); - recvBuffer = gBlockRecvBuffer[i]; -#endif - r6 = gBlockRecvBuffer[i][2]; - if (gTasks[sLinkReceiveTaskId].data[14] + 9 + r6 > 0x1000) - { - gTasks[sLinkReceiveTaskId].data[12] = gTasks[sLinkReceiveTaskId].data[14]; - gTasks[sLinkReceiveTaskId].data[14] = 0; - } - //_0800C402 - dest = EWRAM_15000 + gTasks[sLinkReceiveTaskId].data[14]; - src = (u8 *)recvBuffer; - for (j = 0; j < r6 + 8; j++) - dest[j] = src[j]; - gTasks[sLinkReceiveTaskId].data[14] = gTasks[sLinkReceiveTaskId].data[14] + r6 + 8; - } - //_0800C446 - } - } -} - -void Task_HandleCopyReceivedLinkBuffersData(u8 taskId) -{ - u16 r7; - u8 r4; - u8 r2; - - if (gTasks[taskId].data[15] != gTasks[taskId].data[14]) - { - if (gTasks[taskId].data[15] > gTasks[taskId].data[14] - && gTasks[taskId].data[15] == gTasks[taskId].data[12]) - { - gTasks[taskId].data[12] = 0; - gTasks[taskId].data[15] = 0; - } - r4 = ewram15000arr(1, gTasks[taskId].data[15]); - r7 = ewram15000arr(4, gTasks[taskId].data[15]) | (ewram15000arr(5, gTasks[taskId].data[15]) << 8); - switch (ewram15000arr(0, gTasks[taskId].data[15])) - { - case 0: - if (gBattleControllerExecFlags & gBitTable[r4]) - return; - memcpy(gBattleBufferA[r4], &ewram15000arr(8, gTasks[taskId].data[15]), r7); - sub_80155A4(r4); - if (!(gBattleTypeFlags & BATTLE_TYPE_WILD)) - { - gBattlerAttacker = ewram15000arr(2, gTasks[taskId].data[15]); - gBattlerTarget = ewram15000arr(3, gTasks[taskId].data[15]); - gAbsentBattlerFlags = ewram15000arr(6, gTasks[taskId].data[15]); - gEffectBattler = ewram15000arr(7, gTasks[taskId].data[15]); - } - break; - case 1: - memcpy(gBattleBufferB[r4], &ewram15000arr(8, gTasks[taskId].data[15]), r7); - break; - case 2: - r2 = ewram15000arr(8, gTasks[taskId].data[15]); - gBattleControllerExecFlags &= ~(gBitTable[r4] << (r2 * 4)); - break; - } - - gTasks[taskId].data[15] = gTasks[taskId].data[15] + r7 + 8; - } -} - -void BtlController_EmitGetMonData(u8 bufferId, u8 b, u8 c) -{ - gBattleBuffersTransferData[0] = 0; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; - gBattleBuffersTransferData[3] = 0; - PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitGetRawMonData(u8 bufferId, u8 b, u8 c) -{ - gBattleBuffersTransferData[0] = 1; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; - gBattleBuffersTransferData[3] = 0; - PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitSetMonData(u8 bufferId, u8 b, u8 c, u8 d, void *e) -{ - int i; - - gBattleBuffersTransferData[0] = 2; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; - for (i = 0; i < d; i++) - gBattleBuffersTransferData[3 + i] = *(u8*)(e++); - PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, d + 3); -} - -void BtlController_EmitSetRawMonData(u8 bufferId, u8 b, u8 c, u8 *d) -{ - int i; - - gBattleBuffersTransferData[0] = 3; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; - for (i = 0; i < c; i++) - gBattleBuffersTransferData[3 + i] = *(d++); - PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, c + 3); -} - -void BtlController_EmitLoadMonSprite(u8 bufferId) -{ - gBattleBuffersTransferData[0] = 4; - gBattleBuffersTransferData[1] = 4; - gBattleBuffersTransferData[2] = 4; - gBattleBuffersTransferData[3] = 4; - PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitSwitchInAnim(u8 bufferId, u8 b, u8 c) -{ - gBattleBuffersTransferData[0] = 5; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; - gBattleBuffersTransferData[3] = 5; - PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitReturnMonToBall(u8 bufferId, u8 b) -{ - gBattleBuffersTransferData[0] = 6; - gBattleBuffersTransferData[1] = b; - PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2); -} - -void BtlController_EmitDrawTrainerPic(u8 a) -{ - gBattleBuffersTransferData[0] = 7; - gBattleBuffersTransferData[1] = 7; - gBattleBuffersTransferData[2] = 7; - gBattleBuffersTransferData[3] = 7; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitTrainerSlide(u8 a) -{ - gBattleBuffersTransferData[0] = 8; - gBattleBuffersTransferData[1] = 8; - gBattleBuffersTransferData[2] = 8; - gBattleBuffersTransferData[3] = 8; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitTrainerSlideBack(u8 a) -{ - gBattleBuffersTransferData[0] = 9; - gBattleBuffersTransferData[1] = 9; - gBattleBuffersTransferData[2] = 9; - gBattleBuffersTransferData[3] = 9; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitFaintAnimation(u8 a) -{ - gBattleBuffersTransferData[0] = 10; - gBattleBuffersTransferData[1] = 10; - gBattleBuffersTransferData[2] = 10; - gBattleBuffersTransferData[3] = 10; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitPaletteFade(u8 a) -{ - gBattleBuffersTransferData[0] = 11; - gBattleBuffersTransferData[1] = 11; - gBattleBuffersTransferData[2] = 11; - gBattleBuffersTransferData[3] = 11; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitSuccessBallThrowAnim(u8 a) -{ - gBattleBuffersTransferData[0] = 12; - gBattleBuffersTransferData[1] = 12; - gBattleBuffersTransferData[2] = 12; - gBattleBuffersTransferData[3] = 12; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitBallThrowAnim(u8 a, u8 b) -{ - gBattleBuffersTransferData[0] = 13; - gBattleBuffersTransferData[1] = b; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); -} - -void BtlController_EmitPause(u8 a, u8 b, u8 *c) -{ - int i; - - gBattleBuffersTransferData[0] = 14; - gBattleBuffersTransferData[1] = b; - for (i = 0; i < b * 3; i++) - gBattleBuffersTransferData[2 + i] = *(c++); - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b * 3 + 2); -} - -void BtlController_EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g) -{ - gBattleBuffersTransferData[0] = 15; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; - gBattleBuffersTransferData[3] = c; - gBattleBuffersTransferData[4] = d; - gBattleBuffersTransferData[5] = (d & 0xFF00) >> 8; - gBattleBuffersTransferData[6] = e; - gBattleBuffersTransferData[7] = (e & 0x0000FF00) >> 8; - gBattleBuffersTransferData[8] = (e & 0x00FF0000) >> 16; - gBattleBuffersTransferData[9] = (e & 0xFF000000) >> 24; - gBattleBuffersTransferData[10] = f; - gBattleBuffersTransferData[11] = gMultiHitCounter; - if (AbilityBattleEffects(14, 0, 13, 0, 0) == 0 && AbilityBattleEffects(14, 0, 0x4D, 0, 0) == 0) - { - gBattleBuffersTransferData[12] = gBattleWeather; - gBattleBuffersTransferData[13] = (gBattleWeather & 0xFF00) >> 8; - } - else - { - gBattleBuffersTransferData[12] = 0; - gBattleBuffersTransferData[13] = 0; - } - gBattleBuffersTransferData[14] = 0; - gBattleBuffersTransferData[15] = 0; - memcpy(&gBattleBuffersTransferData[16], g, sizeof(*g)); - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 0x2C); -} - -void BtlController_EmitPrintString(u8 a, u16 stringID) -{ - s32 i; - struct StringInfoBattle* stringInfo; - - gBattleBuffersTransferData[0] = 16; - gBattleBuffersTransferData[1] = gBattleOutcome; - gBattleBuffersTransferData[2] = stringID; - gBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8; - - stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]); - stringInfo->currentMove = gCurrentMove; - stringInfo->lastMove = gChosenMove; - stringInfo->lastItem = gLastUsedItem; - stringInfo->lastAbility = gLastUsedAbility; - stringInfo->scrActive = gBattleStruct->scriptingActive; - stringInfo->unk1605E = gBattleStruct->unk1605E; - stringInfo->hpScale = gBattleStruct->hpScale; - stringInfo->StringBank = gPotentialItemEffectBattler; - stringInfo->moveType = gBattleMoves[gCurrentMove].type; - - for (i = 0; i < 4; i++) - stringInfo->abilities[i] = gBattleMons[i].ability; - for (i = 0; i < 0x10; i++) - { - stringInfo->textBuffs[0][i] = gBattleTextBuff1[i]; - stringInfo->textBuffs[1][i] = gBattleTextBuff2[i]; - stringInfo->textBuffs[2][i] = gBattleTextBuff3[i]; - } - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4); -} - -void BtlController_EmitPrintSelectionString(u8 a, u16 stringID) -{ - s32 i; - struct StringInfoBattle* stringInfo; - - gBattleBuffersTransferData[0] = 17; - gBattleBuffersTransferData[1] = 17; - gBattleBuffersTransferData[2] = stringID; - gBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8; - - stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]); - stringInfo->currentMove = gCurrentMove; - stringInfo->lastMove = gChosenMove; - stringInfo->lastItem = gLastUsedItem; - stringInfo->lastAbility = gLastUsedAbility; - stringInfo->scrActive = gBattleStruct->scriptingActive; - stringInfo->unk1605E = gBattleStruct->unk1605E; - - for (i = 0; i < 4; i++) - stringInfo->abilities[i] = gBattleMons[i].ability; - for (i = 0; i < 0x10; i++) - { - stringInfo->textBuffs[0][i] = gBattleTextBuff1[i]; - stringInfo->textBuffs[1][i] = gBattleTextBuff2[i]; - stringInfo->textBuffs[2][i] = gBattleTextBuff3[i]; - } - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4); -} - -void BtlController_EmitChooseAction(u8 a, u8 b, u16 c) -{ - gBattleBuffersTransferData[0] = 18; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; - gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitUnknownYesNoBox(u8 a, u8 b) -{ - gBattleBuffersTransferData[0] = 19; - gBattleBuffersTransferData[1] = b; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); -} - -void BtlController_EmitChooseMove(u8 a, u8 b, u8 c, u8 *d) -{ - u32 i; - - gBattleBuffersTransferData[0] = 20; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; - gBattleBuffersTransferData[3] = 0; - for (i = 0; i < 20; i++) - gBattleBuffersTransferData[4 + i] = d[i]; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 24); -} - -void BtlController_EmitChooseItem(u8 a, u8 *b) -{ - int i; - - gBattleBuffersTransferData[0] = 21; - for (i = 0; i < 3; i++) - gBattleBuffersTransferData[1 + i] = b[i]; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e) -{ - int i; - - gBattleBuffersTransferData[0] = 22; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; - gBattleBuffersTransferData[3] = d; - for (i = 0; i < 3; i++) - gBattleBuffersTransferData[4 + i] = e[i]; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 8); //but only 7 bytes were written -} - -void BtlController_EmitCmd23(u8 a) -{ - gBattleBuffersTransferData[0] = 23; - gBattleBuffersTransferData[1] = 23; - gBattleBuffersTransferData[2] = 23; - gBattleBuffersTransferData[3] = 23; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -// FIXME: I think this function is supposed to take s16 as its second argument, -// but battle_4.c expects u16 -void BtlController_EmitHealthBarUpdate(u8 a, u16 b) -{ - gBattleBuffersTransferData[0] = 24; - gBattleBuffersTransferData[1] = 0; - gBattleBuffersTransferData[2] = (s16)b; - gBattleBuffersTransferData[3] = ((s16)b & 0xFF00) >> 8; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -// FIXME: I think this function is supposed to take s16 as its third argument, -// but battle_4.c expects u16 -void BtlController_EmitExpUpdate(u8 a, u8 b, u16 c) -{ - gBattleBuffersTransferData[0] = 25; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = (s16)c; - gBattleBuffersTransferData[3] = ((s16)c & 0xFF00) >> 8; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitStatusIconUpdate(u8 a, u32 b, u32 c) -{ - gBattleBuffersTransferData[0] = 26; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = (b & 0x0000FF00) >> 8; - gBattleBuffersTransferData[3] = (b & 0x00FF0000) >> 16; - gBattleBuffersTransferData[4] = (b & 0xFF000000) >> 24; - gBattleBuffersTransferData[5] = c; - gBattleBuffersTransferData[6] = (c & 0x0000FF00) >> 8; - gBattleBuffersTransferData[7] = (c & 0x00FF0000) >> 16; - gBattleBuffersTransferData[8] = (c & 0xFF000000) >> 24; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 9); -} - -void BtlController_EmitStatusAnimation(u8 a, u8 b, u32 c) -{ - gBattleBuffersTransferData[0] = 27; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; - gBattleBuffersTransferData[3] = (c & 0x0000FF00) >> 8; - gBattleBuffersTransferData[4] = (c & 0x00FF0000) >> 16; - gBattleBuffersTransferData[5] = (c & 0xFF000000) >> 24; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 6); -} - -void BtlController_EmitStatusXor(u8 a, u8 b) -{ - gBattleBuffersTransferData[0] = 28; - gBattleBuffersTransferData[1] = b; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); -} - -void BtlController_EmitDataTransfer(u8 a, u16 b, u8 *c) -{ - int i; - - gBattleBuffersTransferData[0] = 29; - gBattleBuffersTransferData[1] = 29; - gBattleBuffersTransferData[2] = b; - gBattleBuffersTransferData[3] = (b & 0xFF00) >> 8; - for (i = 0; i < b; i++) - gBattleBuffersTransferData[4 + i] = *(c++); - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 4); -} - -void BtlController_EmitDMA3Transfer(u8 a, u32 b, u16 c, u8 *d) -{ - int i; - - gBattleBuffersTransferData[0] = 30; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = (b & 0x0000FF00) >> 8; - gBattleBuffersTransferData[3] = (b & 0x00FF0000) >> 16; - gBattleBuffersTransferData[4] = (b & 0xFF000000) >> 24; - gBattleBuffersTransferData[5] = c; - gBattleBuffersTransferData[6] = (c & 0xFF00) >> 8; - for (i = 0; i < c; i++) - gBattleBuffersTransferData[7 + i] = *(d++); - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, c + 7); -} - -void BtlController_EmitPlayBGM(u8 a, u16 b, u8 *c) -{ - int i; - - gBattleBuffersTransferData[0] = 31; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; - for (i = 0; i < b; i++) - gBattleBuffersTransferData[3 + i] = *(c++); - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 3); -} - -void BtlController_EmitCmd32(u8 a, u16 b, u8 *c) -{ - int i; - - gBattleBuffersTransferData[0] = 32; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; - for (i = 0; i < b; i++) - gBattleBuffersTransferData[3 + i] = *(c++); - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 3); -} - -void BtlController_EmitTwoReturnValues(u8 a, u8 b, u16 c) -{ - gBattleBuffersTransferData[0] = 33; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; - gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitChosenMonReturnValue(u8 a, u8 b, u8 *c) -{ - int i; - - gBattleBuffersTransferData[0] = 34; - gBattleBuffersTransferData[1] = b; - for (i = 0; i < 3; i++) - gBattleBuffersTransferData[2 + i] = c[i]; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 5); -} - -void BtlController_EmitOneReturnValue(u8 a, u16 b) -{ - gBattleBuffersTransferData[0] = 35; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; - gBattleBuffersTransferData[3] = 0; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitOneReturnValue_Duplicate(u8 a, u16 b) -{ - gBattleBuffersTransferData[0] = 36; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; - gBattleBuffersTransferData[3] = 0; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitCmd37(u8 a) -{ - gBattleBuffersTransferData[0] = 37; - gBattleBuffersTransferData[1] = 37; - gBattleBuffersTransferData[2] = 37; - gBattleBuffersTransferData[3] = 37; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitCmd38(u8 a, u8 b) -{ - gBattleBuffersTransferData[0] = 38; - gBattleBuffersTransferData[1] = b; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); -} - -void BtlController_EmitCmd39(u8 a) -{ - gBattleBuffersTransferData[0] = 39; - gBattleBuffersTransferData[1] = 39; - gBattleBuffersTransferData[2] = 39; - gBattleBuffersTransferData[3] = 39; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitCmd40(u8 a) -{ - gBattleBuffersTransferData[0] = 40; - gBattleBuffersTransferData[1] = 40; - gBattleBuffersTransferData[2] = 40; - gBattleBuffersTransferData[3] = 40; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitHitAnimation(u8 a) -{ - gBattleBuffersTransferData[0] = 41; - gBattleBuffersTransferData[1] = 41; - gBattleBuffersTransferData[2] = 41; - gBattleBuffersTransferData[3] = 41; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitCmd42(u8 a) -{ - gBattleBuffersTransferData[0] = 42; - gBattleBuffersTransferData[1] = 42; - gBattleBuffersTransferData[2] = 42; - gBattleBuffersTransferData[3] = 42; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitPlaySE(u8 a, u16 b) -{ - gBattleBuffersTransferData[0] = 43; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; - gBattleBuffersTransferData[3] = 0; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitPlayFanfareOrBGM(u8 a, u16 b) -{ - gBattleBuffersTransferData[0] = 44; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; - gBattleBuffersTransferData[3] = 0; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitFaintingCry(u8 a) -{ - gBattleBuffersTransferData[0] = 45; - gBattleBuffersTransferData[1] = 45; - gBattleBuffersTransferData[2] = 45; - gBattleBuffersTransferData[3] = 45; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitIntroSlide(u8 a, u8 battleTerrain) -{ - gBattleBuffersTransferData[0] = 46; - gBattleBuffersTransferData[1] = battleTerrain; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); -} - -void BtlController_EmitIntroTrainerBallThrow(u8 a) -{ - gBattleBuffersTransferData[0] = 47; - gBattleBuffersTransferData[1] = 47; - gBattleBuffersTransferData[2] = 47; - gBattleBuffersTransferData[3] = 47; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitDrawPartyStatusSummary(u8 a, struct HpAndStatus *hpAndStatus, u8 c) -{ - int i; - - gBattleBuffersTransferData[0] = 48; - gBattleBuffersTransferData[1] = c & 0x7F; - gBattleBuffersTransferData[2] = (c & 0x80) >> 7; - gBattleBuffersTransferData[3] = 48; - for (i = 0; i < 48; i++) - gBattleBuffersTransferData[4 + i] = *(i + (u8*)(hpAndStatus)); - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 52); -} - -void BtlController_EmitHidePartyStatusSummary(u8 a) -{ - gBattleBuffersTransferData[0] = 49; - gBattleBuffersTransferData[1] = 49; - gBattleBuffersTransferData[2] = 49; - gBattleBuffersTransferData[3] = 49; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitEndBounceEffect(u8 a) -{ - gBattleBuffersTransferData[0] = 50; - gBattleBuffersTransferData[1] = 50; - gBattleBuffersTransferData[2] = 50; - gBattleBuffersTransferData[3] = 50; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitSpriteInvisibility(u8 a, u8 b) -{ - gBattleBuffersTransferData[0] = 51; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = 51; - gBattleBuffersTransferData[3] = 51; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitBattleAnimation(u8 a, u8 b, u16 c) -{ - gBattleBuffersTransferData[0] = 52; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; - gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); -} - -void BtlController_EmitLinkStandbyMsg(u8 a, u8 b) -{ - gBattleBuffersTransferData[0] = 53; - gBattleBuffersTransferData[1] = b; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); -} - -void BtlController_EmitResetActionMoveSelection(u8 a, u8 b) -{ - gBattleBuffersTransferData[0] = 54; - gBattleBuffersTransferData[1] = b; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); -} - -void BtlController_EmitCmd55(u8 a, u8 b) -{ - gBattleBuffersTransferData[0] = 55; - gBattleBuffersTransferData[1] = b; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); -} -- cgit v1.2.3 From b74a0c3122113b5ebef469739745e2b8fd420c50 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 31 Jul 2019 00:13:42 -0500 Subject: resolve more battle system differences --- src/battle/anim/fight.c | 4 +- src/battle/anim/flying.c | 4 +- src/battle/anim/ice.c | 18 +- src/battle/anim/sonic.c | 4 +- src/battle_ai_script_commands.c | 8 +- src/battle_ai_switch_items.c | 2 +- src/battle_controller_link_opponent.c | 2 +- src/battle_controller_link_partner.c | 2 +- src/battle_controller_opponent.c | 2 +- src/battle_controller_player.c | 8 +- src/battle_controller_safari.c | 2 +- src/battle_controller_wally.c | 3 +- src/battle_controllers.c | 332 +++++++------- src/battle_gfx_sfx_util.c | 18 +- src/battle_interface.c | 4 +- src/battle_main.c | 74 ++-- src/battle_script_commands.c | 801 +++++++++++++++++----------------- src/battle_util.c | 52 +-- src/calculate_base_damage.c | 6 +- src/contest.c | 10 +- src/main.c | 2 +- src/pokemon_item_effect.c | 4 +- src/rom_8077ABC.c | 10 +- src/tv.c | 2 +- 24 files changed, 695 insertions(+), 679 deletions(-) (limited to 'src') diff --git a/src/battle/anim/fight.c b/src/battle/anim/fight.c index 8d045c42d..450844453 100644 --- a/src/battle/anim/fight.c +++ b/src/battle/anim/fight.c @@ -12,7 +12,7 @@ extern u8 gBattlerAttacker; extern u8 gBattleAnimAttacker; extern u8 gBattleAnimTarget; extern u8 gBattlerSpriteIds[]; -extern u8 gBanksBySide[]; +extern u8 gBattlerPositions[]; extern u16 gBattle_BG1_X; extern u16 gBattle_BG1_Y; extern u16 gBattle_BG2_X; @@ -516,7 +516,7 @@ void sub_80D90F4(struct Sprite *sprite) if (Random() & 1) y *= -1; - if ((gBanksBySide[bank] & 1) == 0) + if ((gBattlerPositions[bank] & 1) == 0) y += 0xFFF0; sprite->pos1.x += x; diff --git a/src/battle/anim/flying.c b/src/battle/anim/flying.c index 1f36c933a..407c9a08f 100644 --- a/src/battle/anim/flying.c +++ b/src/battle/anim/flying.c @@ -12,7 +12,7 @@ extern u8 gBattleAnimAttacker; extern u8 gBattleAnimTarget; extern u8 gAnimVisualTaskCount; extern struct OamMatrix gOamMatrices[]; -extern u8 gBanksBySide[]; +extern u8 gBattlerPositions[]; extern const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB538; void sub_80785E4(struct Sprite *sprite); @@ -1899,7 +1899,7 @@ void sub_80DAD84(struct Sprite * sprite) if (gMain.inBattle) { - if (gBanksBySide[gBattleAnimTarget] & 1) + if (gBattlerPositions[gBattleAnimTarget] & 1) { sprite->data[7] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[3]; } diff --git a/src/battle/anim/ice.c b/src/battle/anim/ice.c index 4002ceec1..e41057d72 100644 --- a/src/battle/anim/ice.c +++ b/src/battle/anim/ice.c @@ -14,7 +14,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gBattleAnimAttacker; extern u8 gBattleAnimTarget; extern u8 gAnimVisualTaskCount; -extern u8 gBanksBySide[]; +extern u8 gBattlerPositions[]; extern u8 gBattlerSpriteIds[]; extern u16 gBattle_BG1_X; @@ -1419,12 +1419,12 @@ static void InitPoisonGasCloudAnim(struct Sprite *sprite) if (GetBattlerSpriteCoord(gBattleAnimAttacker, 2) < GetBattlerSpriteCoord(gBattleAnimTarget, 2)) sprite->data[7] = 0x8000; - if (!(gBanksBySide[gBattleAnimTarget] & 1)) + if (!(gBattlerPositions[gBattleAnimTarget] & 1)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; gBattleAnimArgs[3] = -gBattleAnimArgs[3]; - if ((sprite->data[7] & 0x8000) && !(gBanksBySide[gBattleAnimAttacker] & 1)) + if ((sprite->data[7] & 0x8000) && !(gBattlerPositions[gBattleAnimAttacker] & 1)) sprite->subpriority = gSprites[GetAnimBattlerSpriteId(1)].subpriority + 1; sprite->data[6] = 1; @@ -1490,7 +1490,7 @@ static void sub_80D8874(struct Sprite *sprite) sprite->data[3] = sprite->pos1.y; sprite->data[4] = sprite->pos1.y + 29; sprite->data[7]++; - if (gMain.inBattle && gBanksBySide[gBattleAnimTarget] & 1) + if (gMain.inBattle && gBattlerPositions[gBattleAnimTarget] & 1) sprite->data[5] = 204; else sprite->data[5] = value2; @@ -1535,7 +1535,7 @@ static void sub_80D8874(struct Sprite *sprite) sprite->data[1] = sprite->pos1.x += sprite->pos2.x; sprite->data[3] = sprite->pos1.y += sprite->pos2.y; sprite->data[4] = sprite->pos1.y + 4; - if (gMain.inBattle && gBanksBySide[gBattleAnimTarget] & 1) + if (gMain.inBattle && gBattlerPositions[gBattleAnimTarget] & 1) sprite->data[2] = 0x100; else sprite->data[2] = -0x10; @@ -1646,7 +1646,7 @@ NAKED static void sub_80D8874(struct Sprite *sprite) "\tands r0, r1\n" "\tcmp r0, 0\n" "\tbeq _080D8938\n" - "\tldr r1, _080D8934 @ =gBanksBySide\n" + "\tldr r1, _080D8934 @ =gBattlerPositions\n" "\tldrb r0, [r6]\n" "\tadds r0, r1\n" "\tldrb r1, [r0]\n" @@ -1661,7 +1661,7 @@ NAKED static void sub_80D8874(struct Sprite *sprite) "_080D8928: .4byte gBattleAnimTarget\n" "_080D892C: .4byte gMain\n" "_080D8930: .4byte 0x0000043d\n" - "_080D8934: .4byte gBanksBySide\n" + "_080D8934: .4byte gBattlerPositions\n" "_080D8938:\n" "\tstrh r5, [r4, 0x38]\n" "_080D893A:\n" @@ -1806,7 +1806,7 @@ NAKED static void sub_80D8874(struct Sprite *sprite) "\tands r0, r1\n" "\tcmp r0, 0\n" "\tbeq _080D8A78\n" - "\tldr r1, _080D8A70 @ =gBanksBySide\n" + "\tldr r1, _080D8A70 @ =gBattlerPositions\n" "\tldr r0, _080D8A74 @ =gBattleAnimTarget\n" "\tldrb r0, [r0]\n" "\tadds r0, r1\n" @@ -1821,7 +1821,7 @@ NAKED static void sub_80D8874(struct Sprite *sprite) "\t.align 2, 0\n" "_080D8A68: .4byte gMain\n" "_080D8A6C: .4byte 0x0000043d\n" - "_080D8A70: .4byte gBanksBySide\n" + "_080D8A70: .4byte gBattlerPositions\n" "_080D8A74: .4byte gBattleAnimTarget\n" "_080D8A78:\n" "\tldr r0, _080D8A90 @ =0x0000fff0\n" diff --git a/src/battle/anim/sonic.c b/src/battle/anim/sonic.c index 9cdda992f..cef255eda 100644 --- a/src/battle/anim/sonic.c +++ b/src/battle/anim/sonic.c @@ -9,7 +9,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gBattleAnimAttacker; extern u8 gBattleAnimTarget; -extern u8 gBanksBySide[]; +extern u8 gBattlerPositions[]; extern u16 gBattleTypeFlags; extern void sub_80D4CA4(struct Sprite *sprite); @@ -296,7 +296,7 @@ void sub_80CFB04(u8 taskId) } else { - if ((gBanksBySide[gBattleAnimTarget] & 1) == 0) + if ((gBattlerPositions[gBattleAnimTarget] & 1) == 0) { gTasks[taskId].data[4] = 1; gBattleAnimArgs[0] = -gBattleAnimArgs[0]; diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index 0c8b8fb1b..ca72e254c 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -28,7 +28,7 @@ extern u8 gMoveResultFlags; extern u16 gDynamicBasePower; extern u16 gLastUsedMove[MAX_BATTLERS_COUNT]; extern u32 gStatuses3[MAX_BATTLERS_COUNT]; -extern u16 gSideAffecting[2]; +extern u16 gSideStatuses[2]; extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT]; extern u8 gCritMultiplier; extern u16 gTrainerBattleOpponent; @@ -468,7 +468,7 @@ void RecordAbilityBattle(u8 a, u8 b) AI_BATTLE_HISTORY->abilities[GetBattlerPosition(a) & 1] = b; } -void RecordItemBattle(u8 a, u8 b) +void RecordItemEffectBattle(u8 a, u8 b) { if (GetBattlerSide(a) == 0) AI_BATTLE_HISTORY->itemEffects[GetBattlerPosition(a) & 1] = b; @@ -697,7 +697,7 @@ static void BattleAICmd_if_status4(void) arg1 = GetBattlerPosition(index) & 1; arg2 = T1_READ_32(gAIScriptPtr + 2); - if ((gSideAffecting[arg1] & arg2) != 0) + if ((gSideStatuses[arg1] & arg2) != 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 6); else gAIScriptPtr += 10; @@ -716,7 +716,7 @@ static void BattleAICmd_if_not_status4(void) arg1 = GetBattlerPosition(index) & 1; arg2 = T1_READ_32(gAIScriptPtr + 2); - if ((gSideAffecting[arg1] & arg2) == 0) + if ((gSideStatuses[arg1] & arg2) == 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 6); else gAIScriptPtr += 10; diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index e3126cb23..b4b2841e0 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -1,13 +1,13 @@ #include "global.h" #include "battle.h" #include "battle_ai_switch_items.h" +#include "battle_controllers.h" #include "battle_script_commands.h" #include "data2.h" #include "ewram.h" #include "pokemon.h" #include "random.h" #include "rom_8077ABC.h" -#include "rom3.h" #include "util.h" #include "constants/abilities.h" #include "constants/items.h" diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index d99b4fe27..a1d07eb50 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -2,6 +2,7 @@ #include "battle.h" #include "battle_anim.h" #include "battle_anim_special.h" +#include "battle_controllers.h" #include "battle_interface.h" #include "data2.h" #include "link.h" @@ -9,7 +10,6 @@ #include "main.h" #include "palette.h" #include "rom_8077ABC.h" -#include "rom3.h" #include "constants/songs.h" #include "sound.h" #include "sprite.h" diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c index a5b24815f..3ea5bd624 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -2,6 +2,7 @@ #include "battle.h" #include "battle_anim.h" #include "battle_anim_special.h" +#include "battle_controllers.h" #include "battle_interface.h" #include "data2.h" #include "battle_811DA74.h" @@ -12,7 +13,6 @@ #include "palette.h" #include "pokeball.h" #include "pokemon.h" -#include "rom3.h" #include "rom_8077ABC.h" #include "sound.h" #include "constants/songs.h" diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 2cc42ca2a..9e0398b7b 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -2,6 +2,7 @@ #include "battle.h" #include "battle_ai_switch_items.h" #include "battle_anim.h" +#include "battle_controllers.h" #include "battle_interface.h" #include "data2.h" #include "battle_811DA74.h" @@ -13,7 +14,6 @@ #include "palette.h" #include "pokeball.h" #include "pokemon.h" -#include "rom3.h" #include "rom_8077ABC.h" #include "sound.h" #include "constants/songs.h" diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 7de3ada41..361eb8ef8 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -3,6 +3,7 @@ #include "battle.h" #include "battle_anim.h" #include "battle_anim_special.h" +#include "battle_controllers.h" #include "battle_interface.h" #include "battle_message.h" #include "item.h" @@ -14,7 +15,6 @@ #include "constants/moves.h" #include "palette.h" #include "pokemon.h" -#include "rom3.h" #include "constants/songs.h" #include "sound.h" #include "string_util.h" @@ -819,10 +819,10 @@ void sub_802CA60(void) r9->unkC[gMoveSelectionCursor[gActiveBattler]] = r9->unkC[gUnknown_03004344]; r9->unkC[gUnknown_03004344] = i; - if (gDisableStructs[gActiveBattler].unk18_b & gBitTable[gMoveSelectionCursor[gActiveBattler]]) + if (gDisableStructs[gActiveBattler].mimickedMoves & gBitTable[gMoveSelectionCursor[gActiveBattler]]) { - gDisableStructs[gActiveBattler].unk18_b &= ~gBitTable[gMoveSelectionCursor[gActiveBattler]]; - gDisableStructs[gActiveBattler].unk18_b |= gBitTable[gUnknown_03004344]; + gDisableStructs[gActiveBattler].mimickedMoves &= ~gBitTable[gMoveSelectionCursor[gActiveBattler]]; + gDisableStructs[gActiveBattler].mimickedMoves |= gBitTable[gUnknown_03004344]; } sub_802E1B0(); diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index 28418531f..5cf06796f 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -1,6 +1,7 @@ #include "global.h" #include "battle_anim_81258BC.h" #include "battle.h" +#include "battle_controllers.h" #include "battle_interface.h" #include "battle_message.h" #include "data2.h" @@ -8,7 +9,6 @@ #include "main.h" #include "menu_cursor.h" #include "palette.h" -#include "rom3.h" #include "constants/songs.h" #include "sound.h" #include "text.h" diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c index a16fe26cc..ac71aabaf 100644 --- a/src/battle_controller_wally.c +++ b/src/battle_controller_wally.c @@ -2,6 +2,7 @@ #include "battle.h" #include "battle_anim.h" #include "battle_anim_special.h" +#include "battle_controllers.h" #include "battle_interface.h" #include "battle_message.h" #include "data2.h" @@ -10,7 +11,6 @@ #include "menu_cursor.h" #include "palette.h" #include "pokemon.h" -#include "rom3.h" #include "constants/songs.h" #include "sound.h" #include "sprite.h" @@ -58,7 +58,6 @@ extern u8 gUnknown_0300434C[]; extern const u8 BattleText_WallyMenu[]; extern const u8 BattleText_MenuOptions[]; -// TODO: include rom3.h when my other PR gets merged extern void BtlController_EmitTwoReturnValues(u8, u8, u16); extern void BtlController_EmitOneReturnValue(u8, u16); diff --git a/src/battle_controllers.c b/src/battle_controllers.c index a1990b3ba..02cb59cc4 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -11,7 +11,6 @@ #include "constants/items.h" #include "link.h" #include "pokemon.h" -#include "rom3.h" #include "rom_8094928.h" #include "constants/species.h" #include "task.h" @@ -19,6 +18,7 @@ #include "battle_message.h" #include "data2.h" #include "ewram.h" +#include "constants/abilities.h" extern u16 gBattleTypeFlags; extern u16 gBattleWeather; @@ -35,7 +35,7 @@ extern u8 gActiveBattler; extern u32 gBattleControllerExecFlags; extern u8 gBattlersCount; extern u16 gBattlerPartyIndexes[]; -extern u8 gBanksBySide[]; +extern u8 gBattlerPositions[]; extern u16 gCurrentMove; extern u16 gChosenMove; extern u16 gLastUsedItem; @@ -58,7 +58,14 @@ extern void (*gBattlerControllerFuncs[])(void); u8 gBattleBuffersTransferData[0x170]; -void sub_800B858(void) +// this file's funcionts +static void CreateTasksForSendRecvLinkBuffers(void); +static void InitSinglePlayerBtlControllers(void); +static void SetBattlePartyIds(void); +static void Task_HandleSendLinkBuffersData(u8 taskId); +static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId); + +void HandleLinkBattleSetup(void) { if (gBattleTypeFlags & BATTLE_TYPE_LINK) { @@ -77,14 +84,16 @@ void SetUpBattleVarsAndBirchPoochyena(void) s32 i; gBattleMainFunc = nullsub_41; - for (i = 0; i < 4; i++) + + for (i = 0; i < MAX_BATTLERS_COUNT; i++) { gBattlerControllerFuncs[i] = nullsub_91; - gBanksBySide[i] = 0xFF; + gBattlerPositions[i] = 0xFF; gActionSelectionCursor[i] = 0; gMoveSelectionCursor[i] = 0; } - sub_800B858(); + + HandleLinkBattleSetup(); gBattleControllerExecFlags = 0; ClearBattleAnimationVars(); ClearBattleMonForms(); @@ -115,10 +124,12 @@ void sub_800B950(void) s32 i; if (gBattleTypeFlags & BATTLE_TYPE_LINK) - sub_800BA78(); + InitLinkBtlControllers(); else - sub_800B9A8(); - sub_800BD54(); + InitSinglePlayerBtlControllers(); + + SetBattlePartyIds(); + if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { for (i = 0; i < gBattlersCount; i++) @@ -126,7 +137,7 @@ void sub_800B950(void) } } -void sub_800B9A8(void) +static void InitSinglePlayerBtlControllers(void) { if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) { @@ -137,27 +148,27 @@ void sub_800B9A8(void) gBattlerControllerFuncs[0] = SetBankFuncToWallyBufferRunCommand; else gBattlerControllerFuncs[0] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[0] = 0; + gBattlerPositions[0] = 0; gBattlerControllerFuncs[1] = SetBankFuncToOpponentBufferRunCommand; - gBanksBySide[1] = 1; + gBattlerPositions[1] = 1; gBattlersCount = 2; } else { gBattleMainFunc = sub_8010800; gBattlerControllerFuncs[0] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[0] = 0; + gBattlerPositions[0] = 0; gBattlerControllerFuncs[1] = SetBankFuncToOpponentBufferRunCommand; - gBanksBySide[1] = 1; + gBattlerPositions[1] = 1; gBattlerControllerFuncs[2] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[2] = 2; + gBattlerPositions[2] = 2; gBattlerControllerFuncs[3] = SetBankFuncToOpponentBufferRunCommand; - gBanksBySide[3] = 3; + gBattlerPositions[3] = 3; gBattlersCount = 4; } } -void sub_800BA78(void) +void InitLinkBtlControllers(void) { u8 multiplayerId; int i; @@ -168,17 +179,17 @@ void sub_800BA78(void) { gBattleMainFunc = sub_8010800; gBattlerControllerFuncs[0] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[0] = 0; + gBattlerPositions[0] = 0; gBattlerControllerFuncs[1] = SetBankFuncToLinkOpponentBufferRunCommand; - gBanksBySide[1] = 1; + gBattlerPositions[1] = 1; gBattlersCount = 2; } else { gBattlerControllerFuncs[1] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[1] = 0; + gBattlerPositions[1] = 0; gBattlerControllerFuncs[0] = SetBankFuncToLinkOpponentBufferRunCommand; - gBanksBySide[0] = 1; + gBattlerPositions[0] = 1; gBattlersCount = 2; } return; @@ -189,25 +200,25 @@ void sub_800BA78(void) { gBattleMainFunc = sub_8010800; gBattlerControllerFuncs[0] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[0] = 0; + gBattlerPositions[0] = 0; gBattlerControllerFuncs[1] = SetBankFuncToLinkOpponentBufferRunCommand; - gBanksBySide[1] = 1; + gBattlerPositions[1] = 1; gBattlerControllerFuncs[2] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[2] = 2; + gBattlerPositions[2] = 2; gBattlerControllerFuncs[3] = SetBankFuncToLinkOpponentBufferRunCommand; - gBanksBySide[3] = 3; + gBattlerPositions[3] = 3; gBattlersCount = 4; } else { gBattlerControllerFuncs[1] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[1] = 0; + gBattlerPositions[1] = 0; gBattlerControllerFuncs[0] = SetBankFuncToLinkOpponentBufferRunCommand; - gBanksBySide[0] = 1; + gBattlerPositions[0] = 1; gBattlerControllerFuncs[3] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[3] = 2; + gBattlerPositions[3] = 2; gBattlerControllerFuncs[2] = SetBankFuncToLinkOpponentBufferRunCommand; - gBanksBySide[2] = 3; + gBattlerPositions[2] = 3; gBattlersCount = 4; } @@ -237,12 +248,12 @@ void sub_800BA78(void) { case 0: case 3: - gBanksBySide[gLinkPlayers[i].id] = 0; + gBattlerPositions[gLinkPlayers[i].id] = 0; gBattlerPartyIndexes[gLinkPlayers[i].id] = 0; break; case 1: case 2: - gBanksBySide[gLinkPlayers[i].id] = 2; + gBattlerPositions[gLinkPlayers[i].id] = 2; gBattlerPartyIndexes[gLinkPlayers[i].id] = 3; break; } @@ -257,12 +268,12 @@ void sub_800BA78(void) { case 0: case 3: - gBanksBySide[gLinkPlayers[i].id] = 0; + gBattlerPositions[gLinkPlayers[i].id] = 0; gBattlerPartyIndexes[gLinkPlayers[i].id] = 0; break; case 1: case 2: - gBanksBySide[gLinkPlayers[i].id] = 2; + gBattlerPositions[gLinkPlayers[i].id] = 2; gBattlerPartyIndexes[gLinkPlayers[i].id] = 3; break; } @@ -274,12 +285,12 @@ void sub_800BA78(void) { case 0: case 3: - gBanksBySide[gLinkPlayers[i].id] = 1; + gBattlerPositions[gLinkPlayers[i].id] = 1; gBattlerPartyIndexes[gLinkPlayers[i].id] = 0; break; case 1: case 2: - gBanksBySide[gLinkPlayers[i].id] = 3; + gBattlerPositions[gLinkPlayers[i].id] = 3; gBattlerPartyIndexes[gLinkPlayers[i].id] = 3; break; } @@ -289,23 +300,22 @@ void sub_800BA78(void) gBattlersCount = 4; } -void sub_800BD54(void) +static void SetBattlePartyIds(void) { - int i; - int j; + s32 i, j; if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { for (i = 0; i < gBattlersCount; i++) { - for (j = 0; j < 6; j++) + for (j = 0; j < PARTY_SIZE; j++) { if (i < 2) { - if (!(gBanksBySide[i] & 1)) + if (GET_BATTLER_SIDE2(i) == B_SIDE_PLAYER) { if (GetMonData(&gPlayerParty[j], MON_DATA_HP) != 0 - && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != 0 + && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_NONE && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_EGG && GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG) == 0) { @@ -316,7 +326,7 @@ void sub_800BD54(void) else { if (GetMonData(&gEnemyParty[j], MON_DATA_HP) != 0 - && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != 0 + && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_NONE && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_EGG && GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG) == 0) { @@ -327,10 +337,10 @@ void sub_800BD54(void) } else { - if (!(gBanksBySide[i] & 1)) + if (GET_BATTLER_SIDE2(i) == B_SIDE_PLAYER) { if (GetMonData(&gPlayerParty[j], MON_DATA_HP) != 0 - && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES) != 0 //Probably a typo by Game Freak. The rest use SPECIES2 + && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES) != SPECIES_NONE // Probably a typo by Game Freak. The rest use SPECIES2 && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_EGG && GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG) == 0 && gBattlerPartyIndexes[i - 2] != j) @@ -342,7 +352,7 @@ void sub_800BD54(void) else { if (GetMonData(&gEnemyParty[j], MON_DATA_HP) != 0 - && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != 0 + && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_NONE && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_EGG && GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG) == 0 && gBattlerPartyIndexes[i - 2] != j) @@ -357,17 +367,17 @@ void sub_800BD54(void) } } -void PrepareBufferDataTransfer(u8 a, u8 *data, u16 size) +static void PrepareBufferDataTransfer(u8 bufferId, u8 *data, u16 size) { - int i; + s32 i; if (gBattleTypeFlags & BATTLE_TYPE_LINK) { - PrepareBufferDataTransferLink(a, size, data); + PrepareBufferDataTransferLink(bufferId, size, data); } else { - switch (a) + switch (bufferId) { case 0: for (i = 0; i < size; i++) @@ -387,7 +397,7 @@ void PrepareBufferDataTransfer(u8 a, u8 *data, u16 size) } } -void CreateTasksForSendRecvLinkBuffers(void) +static void CreateTasksForSendRecvLinkBuffers(void) { sLinkSendTaskId = CreateTask(Task_HandleSendLinkBuffersData, 0); gTasks[sLinkSendTaskId].data[11] = 0; @@ -539,10 +549,10 @@ void sub_800C35C(void) } } -void Task_HandleCopyReceivedLinkBuffersData(u8 taskId) +static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId) { - u16 r7; - u8 r4; + u16 blockSize; + u8 battlerId; u8 r2; if (gTasks[taskId].data[15] != gTasks[taskId].data[14]) @@ -553,15 +563,15 @@ void Task_HandleCopyReceivedLinkBuffersData(u8 taskId) gTasks[taskId].data[12] = 0; gTasks[taskId].data[15] = 0; } - r4 = ewram15000arr(1, gTasks[taskId].data[15]); - r7 = ewram15000arr(4, gTasks[taskId].data[15]) | (ewram15000arr(5, gTasks[taskId].data[15]) << 8); + battlerId = ewram15000arr(1, gTasks[taskId].data[15]); + blockSize = ewram15000arr(4, gTasks[taskId].data[15]) | (ewram15000arr(5, gTasks[taskId].data[15]) << 8); switch (ewram15000arr(0, gTasks[taskId].data[15])) { case 0: - if (gBattleControllerExecFlags & gBitTable[r4]) + if (gBattleControllerExecFlags & gBitTable[battlerId]) return; - memcpy(gBattleBufferA[r4], &ewram15000arr(8, gTasks[taskId].data[15]), r7); - sub_80155A4(r4); + memcpy(gBattleBufferA[battlerId], &ewram15000arr(8, gTasks[taskId].data[15]), blockSize); + sub_80155A4(battlerId); if (!(gBattleTypeFlags & BATTLE_TYPE_WILD)) { gBattlerAttacker = ewram15000arr(2, gTasks[taskId].data[15]); @@ -571,172 +581,172 @@ void Task_HandleCopyReceivedLinkBuffersData(u8 taskId) } break; case 1: - memcpy(gBattleBufferB[r4], &ewram15000arr(8, gTasks[taskId].data[15]), r7); + memcpy(gBattleBufferB[battlerId], &ewram15000arr(8, gTasks[taskId].data[15]), blockSize); break; case 2: r2 = ewram15000arr(8, gTasks[taskId].data[15]); - gBattleControllerExecFlags &= ~(gBitTable[r4] << (r2 * 4)); + gBattleControllerExecFlags &= ~(gBitTable[battlerId] << (r2 * 4)); break; } - gTasks[taskId].data[15] = gTasks[taskId].data[15] + r7 + 8; + gTasks[taskId].data[15] = gTasks[taskId].data[15] + blockSize + 8; } } -void BtlController_EmitGetMonData(u8 bufferId, u8 b, u8 c) +void BtlController_EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck) { - gBattleBuffersTransferData[0] = 0; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; + gBattleBuffersTransferData[0] = CONTROLLER_GETMONDATA; + gBattleBuffersTransferData[1] = requestId; + gBattleBuffersTransferData[2] = monToCheck; gBattleBuffersTransferData[3] = 0; PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -void BtlController_EmitGetRawMonData(u8 bufferId, u8 b, u8 c) +void BtlController_EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes) { - gBattleBuffersTransferData[0] = 1; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; + gBattleBuffersTransferData[0] = CONTROLLER_GETRAWMONDATA; + gBattleBuffersTransferData[1] = monId; + gBattleBuffersTransferData[2] = bytes; gBattleBuffersTransferData[3] = 0; PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -void BtlController_EmitSetMonData(u8 bufferId, u8 b, u8 c, u8 d, void *e) +void BtlController_EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 bytes, void *data) { - int i; + s32 i; - gBattleBuffersTransferData[0] = 2; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; - for (i = 0; i < d; i++) - gBattleBuffersTransferData[3 + i] = *(u8*)(e++); - PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, d + 3); + gBattleBuffersTransferData[0] = CONTROLLER_SETMONDATA; + gBattleBuffersTransferData[1] = requestId; + gBattleBuffersTransferData[2] = monToCheck; + for (i = 0; i < bytes; i++) + gBattleBuffersTransferData[3 + i] = *(u8*)(data++); + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 3 + bytes); } -void BtlController_EmitSetRawMonData(u8 bufferId, u8 b, u8 c, u8 *d) +void BtlController_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data) { - int i; + s32 i; - gBattleBuffersTransferData[0] = 3; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; - for (i = 0; i < c; i++) - gBattleBuffersTransferData[3 + i] = *(d++); - PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, c + 3); + gBattleBuffersTransferData[0] = CONTROLLER_SETRAWMONDATA; + gBattleBuffersTransferData[1] = monId; + gBattleBuffersTransferData[2] = bytes; + for (i = 0; i < bytes; i++) + gBattleBuffersTransferData[3 + i] = *(u8*)(data++); + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, bytes + 3); } void BtlController_EmitLoadMonSprite(u8 bufferId) { - gBattleBuffersTransferData[0] = 4; - gBattleBuffersTransferData[1] = 4; - gBattleBuffersTransferData[2] = 4; - gBattleBuffersTransferData[3] = 4; + gBattleBuffersTransferData[0] = CONTROLLER_LOADMONSPRITE; + gBattleBuffersTransferData[1] = CONTROLLER_LOADMONSPRITE; + gBattleBuffersTransferData[2] = CONTROLLER_LOADMONSPRITE; + gBattleBuffersTransferData[3] = CONTROLLER_LOADMONSPRITE; PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -void BtlController_EmitSwitchInAnim(u8 bufferId, u8 b, u8 c) +void BtlController_EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit) { - gBattleBuffersTransferData[0] = 5; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; + gBattleBuffersTransferData[0] = CONTROLLER_SWITCHINANIM; + gBattleBuffersTransferData[1] = partyId; + gBattleBuffersTransferData[2] = dontClearSubstituteBit; gBattleBuffersTransferData[3] = 5; PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -void BtlController_EmitReturnMonToBall(u8 bufferId, u8 b) +void BtlController_EmitReturnMonToBall(u8 bufferId, u8 arg1) { - gBattleBuffersTransferData[0] = 6; - gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[0] = CONTROLLER_RETURNMONTOBALL; + gBattleBuffersTransferData[1] = arg1; PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2); } -void BtlController_EmitDrawTrainerPic(u8 a) +void BtlController_EmitDrawTrainerPic(u8 bufferId) { - gBattleBuffersTransferData[0] = 7; - gBattleBuffersTransferData[1] = 7; - gBattleBuffersTransferData[2] = 7; - gBattleBuffersTransferData[3] = 7; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); + gBattleBuffersTransferData[0] = CONTROLLER_DRAWTRAINERPIC; + gBattleBuffersTransferData[1] = CONTROLLER_DRAWTRAINERPIC; + gBattleBuffersTransferData[2] = CONTROLLER_DRAWTRAINERPIC; + gBattleBuffersTransferData[3] = CONTROLLER_DRAWTRAINERPIC; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -void BtlController_EmitTrainerSlide(u8 a) +void BtlController_EmitTrainerSlide(u8 bufferId) { - gBattleBuffersTransferData[0] = 8; - gBattleBuffersTransferData[1] = 8; - gBattleBuffersTransferData[2] = 8; - gBattleBuffersTransferData[3] = 8; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); + gBattleBuffersTransferData[0] = CONTROLLER_TRAINERSLIDE; + gBattleBuffersTransferData[1] = CONTROLLER_TRAINERSLIDE; + gBattleBuffersTransferData[2] = CONTROLLER_TRAINERSLIDE; + gBattleBuffersTransferData[3] = CONTROLLER_TRAINERSLIDE; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -void BtlController_EmitTrainerSlideBack(u8 a) +void BtlController_EmitTrainerSlideBack(u8 bufferId) { - gBattleBuffersTransferData[0] = 9; - gBattleBuffersTransferData[1] = 9; - gBattleBuffersTransferData[2] = 9; - gBattleBuffersTransferData[3] = 9; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); + gBattleBuffersTransferData[0] = CONTROLLER_TRAINERSLIDEBACK; + gBattleBuffersTransferData[1] = CONTROLLER_TRAINERSLIDEBACK; + gBattleBuffersTransferData[2] = CONTROLLER_TRAINERSLIDEBACK; + gBattleBuffersTransferData[3] = CONTROLLER_TRAINERSLIDEBACK; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -void BtlController_EmitFaintAnimation(u8 a) +void BtlController_EmitFaintAnimation(u8 bufferId) { - gBattleBuffersTransferData[0] = 10; - gBattleBuffersTransferData[1] = 10; - gBattleBuffersTransferData[2] = 10; - gBattleBuffersTransferData[3] = 10; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); + gBattleBuffersTransferData[0] = CONTROLLER_FAINTANIMATION; + gBattleBuffersTransferData[1] = CONTROLLER_FAINTANIMATION; + gBattleBuffersTransferData[2] = CONTROLLER_FAINTANIMATION; + gBattleBuffersTransferData[3] = CONTROLLER_FAINTANIMATION; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -void BtlController_EmitPaletteFade(u8 a) +void BtlController_EmitPaletteFade(u8 bufferId) { - gBattleBuffersTransferData[0] = 11; - gBattleBuffersTransferData[1] = 11; - gBattleBuffersTransferData[2] = 11; - gBattleBuffersTransferData[3] = 11; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); + gBattleBuffersTransferData[0] = CONTROLLER_PALETTEFADE; + gBattleBuffersTransferData[1] = CONTROLLER_PALETTEFADE; + gBattleBuffersTransferData[2] = CONTROLLER_PALETTEFADE; + gBattleBuffersTransferData[3] = CONTROLLER_PALETTEFADE; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -void BtlController_EmitSuccessBallThrowAnim(u8 a) +void BtlController_EmitSuccessBallThrowAnim(u8 bufferId) { - gBattleBuffersTransferData[0] = 12; - gBattleBuffersTransferData[1] = 12; - gBattleBuffersTransferData[2] = 12; - gBattleBuffersTransferData[3] = 12; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); + gBattleBuffersTransferData[0] = CONTROLLER_SUCCESSBALLTHROWANIM; + gBattleBuffersTransferData[1] = CONTROLLER_SUCCESSBALLTHROWANIM; + gBattleBuffersTransferData[2] = CONTROLLER_SUCCESSBALLTHROWANIM; + gBattleBuffersTransferData[3] = CONTROLLER_SUCCESSBALLTHROWANIM; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -void BtlController_EmitBallThrowAnim(u8 a, u8 b) +void BtlController_EmitBallThrowAnim(u8 bufferId, u8 caseId) { - gBattleBuffersTransferData[0] = 13; - gBattleBuffersTransferData[1] = b; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); + gBattleBuffersTransferData[0] = CONTROLLER_BALLTHROWANIM; + gBattleBuffersTransferData[1] = caseId; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2); } -void BtlController_EmitPause(u8 a, u8 b, u8 *c) +void BtlController_EmitPause(u8 bufferId, u8 toWait, void *data) { - int i; - - gBattleBuffersTransferData[0] = 14; - gBattleBuffersTransferData[1] = b; - for (i = 0; i < b * 3; i++) - gBattleBuffersTransferData[2 + i] = *(c++); - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b * 3 + 2); -} + s32 i; -void BtlController_EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g) -{ - gBattleBuffersTransferData[0] = 15; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; - gBattleBuffersTransferData[3] = c; - gBattleBuffersTransferData[4] = d; - gBattleBuffersTransferData[5] = (d & 0xFF00) >> 8; - gBattleBuffersTransferData[6] = e; - gBattleBuffersTransferData[7] = (e & 0x0000FF00) >> 8; - gBattleBuffersTransferData[8] = (e & 0x00FF0000) >> 16; - gBattleBuffersTransferData[9] = (e & 0xFF000000) >> 24; - gBattleBuffersTransferData[10] = f; + gBattleBuffersTransferData[0] = CONTROLLER_PAUSE; + gBattleBuffersTransferData[1] = toWait; + for (i = 0; i < toWait * 3; i++) + gBattleBuffersTransferData[2 + i] = *(u8*)(data++); + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, toWait * 3 + 2); +} + +void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr) +{ + gBattleBuffersTransferData[0] = CONTROLLER_MOVEANIMATION; + gBattleBuffersTransferData[1] = move; + gBattleBuffersTransferData[2] = (move & 0xFF00) >> 8; + gBattleBuffersTransferData[3] = turnOfMove; + gBattleBuffersTransferData[4] = movePower; + gBattleBuffersTransferData[5] = (movePower & 0xFF00) >> 8; + gBattleBuffersTransferData[6] = dmg; + gBattleBuffersTransferData[7] = (dmg & 0x0000FF00) >> 8; + gBattleBuffersTransferData[8] = (dmg & 0x00FF0000) >> 16; + gBattleBuffersTransferData[9] = (dmg & 0xFF000000) >> 24; + gBattleBuffersTransferData[10] = friendship; gBattleBuffersTransferData[11] = gMultiHitCounter; - if (AbilityBattleEffects(14, 0, 13, 0, 0) == 0 && AbilityBattleEffects(14, 0, 0x4D, 0, 0) == 0) + if (WEATHER_HAS_EFFECT2) { gBattleBuffersTransferData[12] = gBattleWeather; gBattleBuffersTransferData[13] = (gBattleWeather & 0xFF00) >> 8; @@ -748,8 +758,8 @@ void BtlController_EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, stru } gBattleBuffersTransferData[14] = 0; gBattleBuffersTransferData[15] = 0; - memcpy(&gBattleBuffersTransferData[16], g, sizeof(*g)); - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 0x2C); + memcpy(&gBattleBuffersTransferData[16], disableStructPtr, sizeof(struct DisableStruct)); + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 16 + sizeof(struct DisableStruct)); } void BtlController_EmitPrintString(u8 a, u16 stringID) diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 45f2c30c0..ee4b4b100 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -27,7 +27,7 @@ extern u8 gBattleBufferA[][0x200]; extern u8 gActiveBattler; extern u8 gBattlersCount; extern u16 gBattlerPartyIndexes[]; -extern u8 gBanksBySide[]; +extern u8 gBattlerPositions[]; extern u8 gBattlerSpriteIds[]; extern u16 gUnknown_02024DE8; extern u8 gDoingBattleAnim; @@ -466,7 +466,7 @@ void unref_sub_8031BA0(void) count = 4; } for (i = 0; i < count; i++) - LoadCompressedObjectPic(&gUnknown_0820A4B4[gBanksBySide[i]]); + LoadCompressedObjectPic(&gUnknown_0820A4B4[gBattlerPositions[i]]); } bool8 sub_8031C30(u8 a) @@ -492,9 +492,9 @@ bool8 sub_8031C30(u8 a) else if (a == 3) LoadCompressedObjectPic(&gUnknown_0820A484); else if (a == 4) - LoadCompressedObjectPic(&gUnknown_0820A4B4[gBanksBySide[0]]); + LoadCompressedObjectPic(&gUnknown_0820A4B4[gBattlerPositions[0]]); else if (a == 5) - LoadCompressedObjectPic(&gUnknown_0820A4B4[gBanksBySide[1]]); + LoadCompressedObjectPic(&gUnknown_0820A4B4[gBattlerPositions[1]]); else retVal = TRUE; } @@ -509,13 +509,13 @@ bool8 sub_8031C30(u8 a) else if (a == 5) LoadCompressedObjectPic(&gUnknown_0820A49C[1]); else if (a == 6) - LoadCompressedObjectPic(&gUnknown_0820A4B4[gBanksBySide[0]]); + LoadCompressedObjectPic(&gUnknown_0820A4B4[gBattlerPositions[0]]); else if (a == 7) - LoadCompressedObjectPic(&gUnknown_0820A4B4[gBanksBySide[1]]); + LoadCompressedObjectPic(&gUnknown_0820A4B4[gBattlerPositions[1]]); else if (a == 8) - LoadCompressedObjectPic(&gUnknown_0820A4B4[gBanksBySide[2]]); + LoadCompressedObjectPic(&gUnknown_0820A4B4[gBattlerPositions[2]]); else if (a == 9) - LoadCompressedObjectPic(&gUnknown_0820A4B4[gBanksBySide[3]]); + LoadCompressedObjectPic(&gUnknown_0820A4B4[gBattlerPositions[3]]); else retVal = TRUE; } @@ -566,7 +566,7 @@ u8 battle_load_something(u8 *pState, u8 *b) break; case 4: sub_8043F44(*b); - if (gBanksBySide[*b] <= 1) + if (gBattlerPositions[*b] <= 1) nullsub_11(gHealthboxSpriteIds[*b], 0); else nullsub_11(gHealthboxSpriteIds[*b], 1); diff --git a/src/battle_interface.c b/src/battle_interface.c index 851c91dfd..50c3601ea 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -425,7 +425,7 @@ u8 *const gUnknown_0820A904[10] = extern u8 gDisplayedStringBattle[]; extern u8 gBattlersCount; extern u16 gBattlerPartyIndexes[]; -extern u8 gBanksBySide[]; +extern u8 gBattlerPositions[]; extern u8 gHealthboxSpriteIds[]; extern u16 gBattleTypeFlags; @@ -836,7 +836,7 @@ u8 battle_make_oam_normal_battle(u8 a) } //_08043B50 - spriteId3 = CreateSpriteAtEnd(&gSpriteTemplates_820A56C[gBanksBySide[a]], 140, 60, 0); + spriteId3 = CreateSpriteAtEnd(&gSpriteTemplates_820A56C[gBattlerPositions[a]], 140, 60, 0); sprite = &gSprites[spriteId3]; SetSubspriteTables(sprite, &gSubspriteTables_820A684[GetBattlerSide(a)]); sprite->subspriteMode = 2; diff --git a/src/battle_main.c b/src/battle_main.c index b38468386..46519307a 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -9,6 +9,7 @@ #include "gba/flash_internal.h" #include "battle.h" #include "battle_ai_script_commands.h" +#include "battle_controllers.h" #include "battle_interface.h" #include "battle_message.h" #include "battle_setup.h" @@ -32,7 +33,6 @@ #include "pokemon.h" #include "random.h" #include "roamer.h" -#include "rom3.h" #include "rom_8077ABC.h" #include "rom_8094928.h" #include "safari_zone.h" @@ -83,7 +83,7 @@ extern u32 gBattleControllerExecFlags; extern u8 gBattlersCount; extern u16 gBattlerPartyIndexes[]; extern u8 gCurrentActionFuncId; -extern u8 gBanksByTurnOrder[]; +extern u8 gBattlerByTurnOrder[]; extern u8 gBattlerSpriteIds[]; extern u16 gCurrentMove; // This is mis-named. It is a species, not a move ID. extern u8 gLastUsedAbility; @@ -100,7 +100,7 @@ extern u16 gLockedMoves[]; extern u16 gChosenMovesByBanks[]; extern u32 gHitMarker; extern u8 gUnknown_02024C70[]; -extern u16 gSideAffecting[]; +extern u16 gSideStatuses[]; extern u32 gStatuses3[]; //extern u8 gDisableStructs[][0x1C]; extern u16 gPauseCounterBattle; @@ -208,7 +208,7 @@ void CB2_InitBattle(void) { if (gBattleTypeFlags & BATTLE_TYPE_MULTI) { - sub_800B858(); + HandleLinkBattleSetup(); SetMainCallback2(sub_800F104); gBattleCommunication[0] = 0; } @@ -3341,7 +3341,7 @@ void sub_8010874(void) for (i = 0; i < 2; i++) { - gSideAffecting[i] = 0; + gSideStatuses[i] = 0; MEMSET_ALT(&gSideTimers[i], 0, 12, j, r4); } @@ -3399,7 +3399,7 @@ void sub_8010874(void) gBattleResults.unk2 = 0; gBattleResults.unk3 = 0; gBattleResults.unk4 = 0; - gBattleResults.unk5_0 = 0; + gBattleResults.playerMonWasDamaged = 0; gBattleResults.unk5_1 = 0; gBattleResults.lastOpponentSpecies = 0; gBattleResults.lastUsedMove = 0; @@ -3433,10 +3433,10 @@ void SwitchInClearSetData(void) { if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].bankPreventingEscape == gActiveBattler) gBattleMons[i].status2 &= ~STATUS2_ESCAPE_PREVENTION; - if ((gStatuses3[i] & STATUS3_ALWAYS_HITS) && gDisableStructs[i].bankWithSureHit == gActiveBattler) + if ((gStatuses3[i] & STATUS3_ALWAYS_HITS) && gDisableStructs[i].battlerWithSureHit == gActiveBattler) { gStatuses3[i] &= ~STATUS3_ALWAYS_HITS; - gDisableStructs[i].bankWithSureHit = 0; + gDisableStructs[i].battlerWithSureHit = 0; } } } @@ -3449,7 +3449,7 @@ void SwitchInClearSetData(void) { if (GetBattlerSide(gActiveBattler) != GetBattlerSide(i) && (gStatuses3[i] & STATUS3_ALWAYS_HITS) != 0 - && (gDisableStructs[i].bankWithSureHit == gActiveBattler)) + && (gDisableStructs[i].battlerWithSureHit == gActiveBattler)) { gStatuses3[i] &= ~STATUS3_ALWAYS_HITS; gStatuses3[i] |= 0x10; @@ -3478,7 +3478,7 @@ void SwitchInClearSetData(void) if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS) { gDisableStructs[gActiveBattler].substituteHP = sp0.substituteHP; - gDisableStructs[gActiveBattler].bankWithSureHit = sp0.bankWithSureHit; + gDisableStructs[gActiveBattler].battlerWithSureHit = sp0.battlerWithSureHit; gDisableStructs[gActiveBattler].perishSongTimer1 = sp0.perishSongTimer1; gDisableStructs[gActiveBattler].perishSongTimer2 = sp0.perishSongTimer2; } @@ -3885,12 +3885,12 @@ void BattleBeginFirstTurn(void) if (ewram16058 == 0) { for (i = 0; i < gBattlersCount; i++) - gBanksByTurnOrder[i] = i; + gBattlerByTurnOrder[i] = i; for (i = 0; i < gBattlersCount - 1; i++) { for (j = i + 1; j < gBattlersCount; j++) { - if (GetWhoStrikesFirst(gBanksByTurnOrder[i], gBanksByTurnOrder[j], 1) != 0) + if (GetWhoStrikesFirst(gBattlerByTurnOrder[i], gBattlerByTurnOrder[j], 1) != 0) SwapTurnOrder(i, j); } } @@ -3902,7 +3902,7 @@ void BattleBeginFirstTurn(void) } while (ewram16058 < gBattlersCount) { - if (AbilityBattleEffects(0, gBanksByTurnOrder[ewram16058], 0, 0, 0) != 0) + if (AbilityBattleEffects(0, gBattlerByTurnOrder[ewram16058], 0, 0, 0) != 0) r9++; ewram16058++; if (r9 != 0) @@ -3914,7 +3914,7 @@ void BattleBeginFirstTurn(void) return; while (ewram160F9 < gBattlersCount) { - if (ItemBattleEffects(0, gBanksByTurnOrder[ewram160F9], 0) != 0) + if (ItemBattleEffects(0, gBattlerByTurnOrder[ewram160F9], 0) != 0) r9++; ewram160F9++; if (r9 != 0) @@ -4482,9 +4482,9 @@ void SwapTurnOrder(u8 a, u8 b) gActionsByTurnOrder[a] = gActionsByTurnOrder[b]; gActionsByTurnOrder[b] = temp; - temp = gBanksByTurnOrder[a]; - gBanksByTurnOrder[a] = gBanksByTurnOrder[b]; - gBanksByTurnOrder[b] = temp; + temp = gBattlerByTurnOrder[a]; + gBattlerByTurnOrder[a] = gBattlerByTurnOrder[b]; + gBattlerByTurnOrder[b] = temp; } // Determines which of the two given mons will strike first in a battle. @@ -4642,7 +4642,7 @@ void SetActionsAndBanksTurnOrder(void) for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++) { gActionsByTurnOrder[var] = gActionForBanks[gActiveBattler]; - gBanksByTurnOrder[var] = gActiveBattler; + gBattlerByTurnOrder[var] = gActiveBattler; var++; } } @@ -4671,14 +4671,14 @@ void SetActionsAndBanksTurnOrder(void) if (var == 5) { gActionsByTurnOrder[0] = gActionForBanks[gActiveBattler]; - gBanksByTurnOrder[0] = gActiveBattler; + gBattlerByTurnOrder[0] = gActiveBattler; var = 1; for (i = 0; i < gBattlersCount; i++) { if (i != gActiveBattler) { gActionsByTurnOrder[var] = gActionForBanks[i]; - gBanksByTurnOrder[var] = i; + gBattlerByTurnOrder[var] = i; var++; } } @@ -4693,7 +4693,7 @@ void SetActionsAndBanksTurnOrder(void) if (gActionForBanks[gActiveBattler] == B_ACTION_USE_ITEM || gActionForBanks[gActiveBattler] == B_ACTION_SWITCH) { gActionsByTurnOrder[var] = gActionForBanks[gActiveBattler]; - gBanksByTurnOrder[var] = gActiveBattler; + gBattlerByTurnOrder[var] = gActiveBattler; var++; } } @@ -4702,7 +4702,7 @@ void SetActionsAndBanksTurnOrder(void) if (gActionForBanks[gActiveBattler] != B_ACTION_USE_ITEM && gActionForBanks[gActiveBattler] != B_ACTION_SWITCH) { gActionsByTurnOrder[var] = gActionForBanks[gActiveBattler]; - gBanksByTurnOrder[var] = gActiveBattler; + gBattlerByTurnOrder[var] = gActiveBattler; var++; } } @@ -4710,8 +4710,8 @@ void SetActionsAndBanksTurnOrder(void) { for (j = i + 1; j < gBattlersCount; j++) { - u8 bank1 = gBanksByTurnOrder[i]; - u8 bank2 = gBanksByTurnOrder[j]; + u8 bank1 = gBattlerByTurnOrder[i]; + u8 bank2 = gBattlerByTurnOrder[j]; if (gActionsByTurnOrder[i] != B_ACTION_USE_ITEM && gActionsByTurnOrder[j] != B_ACTION_USE_ITEM && gActionsByTurnOrder[i] != B_ACTION_SWITCH @@ -5083,7 +5083,7 @@ void HandleAction_UseMove(void) u8 side; u8 var = 4; - gBattlerAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; if (ewram160A6 & gBitTable[gBattlerAttacker]) { @@ -5167,9 +5167,9 @@ void HandleAction_UseMove(void) if (side != GetBattlerSide(gActiveBattler) && ewram16010arr(gBattlerAttacker) != gActiveBattler && gBattleMons[gActiveBattler].ability == ABILITY_LIGHTNING_ROD - && BankGetTurnOrder(gActiveBattler) < var) + && GetBattlerTurnOrderNum(gActiveBattler) < var) { - var = BankGetTurnOrder(gActiveBattler); + var = GetBattlerTurnOrderNum(gActiveBattler); } } if (var == 4) @@ -5212,7 +5212,7 @@ void HandleAction_UseMove(void) } else { - gActiveBattler = gBanksByTurnOrder[var]; + gActiveBattler = gBattlerByTurnOrder[var]; RecordAbilityBattle(gActiveBattler, gBattleMons[gActiveBattler].ability); gSpecialStatuses[gActiveBattler].lightningRodRedirected = 1; gBattlerTarget = gActiveBattler; @@ -5266,7 +5266,7 @@ void HandleAction_UseMove(void) void HandleAction_Switch(void) { - gBattlerAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; gActionSelectionCursor[gBattlerAttacker] = 0; @@ -5284,7 +5284,7 @@ void HandleAction_Switch(void) void HandleAction_UseItem(void) { - gBattlerAttacker = gBattlerTarget = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattlerAttacker = gBattlerTarget = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; gDisableStructs[gBattlerAttacker].furyCutterCounter = 0; @@ -5415,7 +5415,7 @@ bool8 TryRunFromBattle(u8 bank) void HandleAction_Run(void) { - gBattlerAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; if (gBattleTypeFlags & BATTLE_TYPE_LINK) { @@ -5468,7 +5468,7 @@ void HandleAction_Run(void) void HandleAction_WatchesCarefully(void) { - gBattlerAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; gBattlescriptCurrInstr = gBattlescriptsForSafariActions[0]; @@ -5477,7 +5477,7 @@ void HandleAction_WatchesCarefully(void) void HandleAction_SafariZoneBallThrow(void) { - gBattlerAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; gNumSafariBalls--; @@ -5488,7 +5488,7 @@ void HandleAction_SafariZoneBallThrow(void) void HandleAction_ThrowPokeblock(void) { - gBattlerAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; gBattleCommunication[MULTISTRING_CHOOSER] = gBattleBufferB[gBattlerAttacker][1] - 1; @@ -5510,7 +5510,7 @@ void HandleAction_ThrowPokeblock(void) void HandleAction_GoNear(void) { - gBattlerAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -5537,7 +5537,7 @@ void HandleAction_GoNear(void) void HandleAction_SafriZoneRun(void) { - gBattlerAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; PlaySE(SE_NIGERU); gCurrentTurnActionNumber = gBattlersCount; gBattleOutcome = B_OUTCOME_RAN; @@ -5545,7 +5545,7 @@ void HandleAction_SafriZoneRun(void) void HandleAction_Action9(void) { - gBattlerAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index ac913dbba..996760ad4 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -12,7 +12,6 @@ #include "data2.h" #include "constants/hold_effects.h" #include "random.h" -#include "rom3.h" #include "battle_controllers.h" #include "constants/species.h" #include "pokemon.h" @@ -45,7 +44,7 @@ extern u8 gActiveBattler; extern u32 gBattleControllerExecFlags; extern u8 gBattlersCount; extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT]; -extern u8 gBanksByTurnOrder[MAX_BATTLERS_COUNT]; +extern u8 gBattlerByTurnOrder[MAX_BATTLERS_COUNT]; extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT]; extern u16 gCurrentMove; extern u8 gLastUsedAbility; @@ -57,7 +56,7 @@ extern u8 gMultiHitCounter; extern u16 gLastUsedMove[4]; extern u16 gLockedMoves[4]; extern u16 gChosenMovesByBanks[4]; -extern u16 gSideAffecting[2]; +extern u16 gSideStatuses[2]; extern u16 gPauseCounterBattle; extern u16 gPaydayMoney; extern u16 gRandomTurnNumber; @@ -81,7 +80,7 @@ extern u16 gLastUsedItem; extern u16 gBattleMovePower; extern s32 gHpDealt; extern s32 gTakenDmg[MAX_BATTLERS_COUNT]; -extern u8 gTakenDmgBanks[MAX_BATTLERS_COUNT]; +extern u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT]; extern const u16 gMissStringIds[]; extern u8 gSentPokesToOpponent[2]; extern u8 gBank1; @@ -125,13 +124,13 @@ void CancelMultiTurnMoves(u8 bank); void BattleScriptPush(const u8* BS_ptr); void BattleScriptPushCursor(void); void RecordAbilityBattle(u8 bank, u8 ability); -void RecordItemBattle(u8 bank, u8 holdEffect); +void RecordItemEffectBattle(u8 bank, u8 holdEffect); static bool8 IsTwoTurnsMove(u16 move); static void TrySetDestinyBondToHappen(void); static void CheckWonderGuardAndLevitate(void); u8 GetBattlerPosition(u8 bank); u8 GetBattlerSide(u8 bank); -u8 GetBattleBank(u8 bankValue); +u8 GetBattlerForBattleScript(u8 bankValue); s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 bank_atk, u8 bank_def); static u8 AttacksThisTurn(u8 bank, u16 move); //Note: returns 1 if it's a charging turn, otherwise 2 void UndoEffectsAfterFainting(void); @@ -232,7 +231,7 @@ extern u8 BattleScript_PrintPayDayMoneyString[]; //bs payday money give extern u8 BattleScript_FaintAttacker[]; extern u8 BattleScript_FaintTarget[]; extern u8 BattleScript_DestinyBondTakesLife[]; -extern u8 BattleScript_SelectingImprisionedMoveInPalace[]; +extern u8 BattleScript_GrudgeTakesPp[]; // read via orr #define BSScriptRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24) @@ -244,7 +243,7 @@ extern u8 BattleScript_SelectingImprisionedMoveInPalace[]; #define BS2ScriptRead16(ptr) ((ptr)[0] + ((ptr)[1] << 8)) #define BS2ScriptReadPtr(ptr) ((void *)BS2ScriptRead32(ptr)) -#define TARGET_PROTECT_AFFECTED ((gProtectStructs[gBattlerTarget].protected && gBattleMoves[gCurrentMove].flags & F_AFFECTED_BY_PROTECT)) +#define DEFENDER_IS_PROTECTED ((gProtectStructs[gBattlerTarget].protected && gBattleMoves[gCurrentMove].flags & F_AFFECTED_BY_PROTECT)) //array entries for battle communication #define MOVE_EFFECT_BYTE 0x3 @@ -253,9 +252,9 @@ extern u8 BattleScript_SelectingImprisionedMoveInPalace[]; #define TARGET_SELECTED 0x0 #define TARGET_DEPENDS 0x1 -#define TARGET_BOTH 0x8 -#define TARGET_FOES_AND_ALLY 0x20 -#define TARGET_OPPONENTS_FIELD 0x40 +#define MOVE_TARGET_BOTH 0x8 +#define MOVE_TARGET_FOES_AND_ALLY 0x20 +#define MOVE_TARGET_OPPONENTS_FIELD 0x40 #define TYPE_FORESIGHT 0xFE #define TYPE_ENDTABLE 0xFF @@ -382,11 +381,11 @@ static void atk5A_yesnoboxlearnmove(void); static void atk5B_yesnoboxstoplearningmove(void); static void atk5C_hitanimation(void); static void atk5D_getmoneyreward(void); -static void atk5E_8025A70(void); -static void atk5F_8025B24(void); +static void atk5E(void); +static void atk5F_swapattackerwithtarget(void); static void atk60_incrementgamestat(void); static void atk61_drawpartystatussummary(void); -static void atk62_08025C6C(void); +static void atk62_hidepartystatussummary(void); static void atk63_jumptorandomattack(void); static void atk64_statusanimation(void); static void atk65_status2animation(void); @@ -508,10 +507,10 @@ static void atkD7_setyawn(void); static void atkD8_setdamagetohealthdifference(void); static void atkD9_scaledamagebyhealthratio(void); static void atkDA_tryswapabilities(void); -static void atkDB_tryimprision(void); +static void atkDB_tryimprison(void); static void atkDC_trysetgrudge(void); static void atkDD_weightdamagecalculation(void); -static void atkDE_asistattackselect(void); +static void atkDE_assistattackselect(void); static void atkDF_trysetmagiccoat(void); static void atkE0_trysetsnatch(void); static void atkE1_trygetintimidatetarget(void); @@ -526,7 +525,7 @@ static void atkE9_setweatherballtype(void); static void atkEA_tryrecycleitem(void); static void atkEB_settypetoterrain(void); static void atkEC_pursuitrelated(void); -static void atkED_snatchsetbanks(void); +static void atkEF_snatchsetbattlers(void); static void atkEE_removelightscreenreflect(void); void atkEF_handleballthrow(void); static void atkF0_givecaughtmon(void); @@ -634,11 +633,11 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk5B_yesnoboxstoplearningmove, atk5C_hitanimation, atk5D_getmoneyreward, - atk5E_8025A70, - atk5F_8025B24, + atk5E, + atk5F_swapattackerwithtarget, atk60_incrementgamestat, atk61_drawpartystatussummary, - atk62_08025C6C, + atk62_hidepartystatussummary, atk63_jumptorandomattack, atk64_statusanimation, atk65_status2animation, @@ -759,10 +758,10 @@ void (* const gBattleScriptingCommandsTable[])(void) = atkD8_setdamagetohealthdifference, atkD9_scaledamagebyhealthratio, atkDA_tryswapabilities, - atkDB_tryimprision, + atkDB_tryimprison, atkDC_trysetgrudge, atkDD_weightdamagecalculation, - atkDE_asistattackselect, + atkDE_assistattackselect, atkDF_trysetmagiccoat, atkE0_trysetsnatch, atkE1_trygetintimidatetarget, @@ -777,7 +776,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = atkEA_tryrecycleitem, atkEB_settypetoterrain, atkEC_pursuitrelated, - atkED_snatchsetbanks, + atkEF_snatchsetbattlers, atkEE_removelightscreenreflect, atkEF_handleballthrow, atkF0_givecaughtmon, @@ -939,26 +938,26 @@ static const u16 sProtectSuccessRates[] = {0xFFFF, 0x7FFF, 0x3FFF, 0x1FFF}; static const u16 sMovesForbiddenToCopy[] = { - MOVE_METRONOME, - MOVE_STRUGGLE, - MOVE_SKETCH, - MOVE_MIMIC, - MIMIC_FORBIDDEN_END, - MOVE_COUNTER, - MOVE_MIRROR_COAT, - MOVE_PROTECT, - MOVE_DETECT, - MOVE_ENDURE, - MOVE_DESTINY_BOND, - MOVE_SLEEP_TALK, - MOVE_THIEF, - MOVE_FOLLOW_ME, - MOVE_SNATCH, - MOVE_HELPING_HAND, - MOVE_COVET, - MOVE_TRICK, - MOVE_FOCUS_PUNCH, - METRONOME_FORBIDDEN_END + MOVE_METRONOME, + MOVE_STRUGGLE, + MOVE_SKETCH, + MOVE_MIMIC, + MIMIC_FORBIDDEN_END, + MOVE_COUNTER, + MOVE_MIRROR_COAT, + MOVE_PROTECT, + MOVE_DETECT, + MOVE_ENDURE, + MOVE_DESTINY_BOND, + MOVE_SLEEP_TALK, + MOVE_THIEF, + MOVE_FOLLOW_ME, + MOVE_SNATCH, + MOVE_HELPING_HAND, + MOVE_COVET, + MOVE_TRICK, + MOVE_FOCUS_PUNCH, + METRONOME_FORBIDDEN_END }; static const u8 sFlailHpScaleToPowerTable[] = //reversal+flail HP thresholds to power @@ -1049,7 +1048,7 @@ static void atk00_attackcanceler(void) return; if (AbilityBattleEffects(ABILITYEFFECT_MOVES_BLOCK, gBattlerTarget, 0, 0, 0)) return; - if (!gBattleMons[gBattlerAttacker].pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE && !(gHitMarker & 0x800200) + if (!gBattleMons[gBattlerAttacker].pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE && !(gHitMarker & (HITMARKER_x800000 | HITMARKER_NO_ATTACKSTRING)) && !(gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) { gBattlescriptCurrInstr = BattleScript_NoPPForMove; @@ -1088,11 +1087,11 @@ static void atk00_attackcanceler(void) for (i = 0; i < gBattlersCount; i++) { - if ((gProtectStructs[gBanksByTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & F_AFFECTED_BY_SNATCH) + if ((gProtectStructs[gBattlerByTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & F_AFFECTED_BY_SNATCH) { - PressurePPLose(gBattlerAttacker, gBanksByTurnOrder[i], MOVE_SNATCH); - gProtectStructs[gBanksByTurnOrder[i]].stealMove = 0; - gBattleStruct->scriptingActive = gBanksByTurnOrder[i]; + PressurePPLose(gBattlerAttacker, gBattlerByTurnOrder[i], MOVE_SNATCH); + gProtectStructs[gBattlerByTurnOrder[i]].stealMove = 0; + gBattleStruct->scriptingActive = gBattlerByTurnOrder[i]; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SnatchedMove; return; @@ -1107,8 +1106,8 @@ static void atk00_attackcanceler(void) gBattlescriptCurrInstr = BattleScript_TookAttack; RecordAbilityBattle(gBattlerTarget, gLastUsedAbility); } - else if (TARGET_PROTECT_AFFECTED - && (gCurrentMove != MOVE_CURSE || (gBattleMons[gBattlerAttacker].type1 == TYPE_GHOST || gBattleMons[gBattlerAttacker].type2 == TYPE_GHOST)) + else if (DEFENDER_IS_PROTECTED + && (gCurrentMove != MOVE_CURSE || IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_GHOST)) && ((!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)))) { CancelMultiTurnMoves(gBattlerAttacker); @@ -1144,7 +1143,7 @@ static void JumpIfMoveFailed(u8 adder, u16 move) static void atk40_jumpifaffectedbyprotect(void) { - if (TARGET_PROTECT_AFFECTED) + if (DEFENDER_IS_PROTECTED) { gMoveResultFlags |= MOVE_RESULT_MISSED; JumpIfMoveFailed(5, 0); @@ -1159,7 +1158,7 @@ static void atk40_jumpifaffectedbyprotect(void) static bool8 JumpIfMoveAffectedByProtect(u16 move) { bool8 affected = FALSE; - if (TARGET_PROTECT_AFFECTED) + if (DEFENDER_IS_PROTECTED) { gMoveResultFlags |= MOVE_RESULT_MISSED; JumpIfMoveFailed(7, move); @@ -1171,7 +1170,7 @@ static bool8 JumpIfMoveAffectedByProtect(u16 move) static bool8 AccuracyCalcHelper(u16 move) { - if (gStatuses3[gBattlerTarget] & STATUS3_ALWAYS_HITS && gDisableStructs[gBattlerTarget].bankWithSureHit == gBattlerAttacker) + if (gStatuses3[gBattlerTarget] & STATUS3_ALWAYS_HITS && gDisableStructs[gBattlerTarget].battlerWithSureHit == gBattlerAttacker) { JumpIfMoveFailed(7, move); return TRUE; @@ -1220,7 +1219,7 @@ static void atk01_accuracycheck(void) if (move == 0xFFFE || move == 0xFFFF) { - if (gStatuses3[gBattlerTarget] & STATUS3_ALWAYS_HITS && move == 0xFFFF && gDisableStructs[gBattlerTarget].bankWithSureHit == gBattlerAttacker) + if (gStatuses3[gBattlerTarget] & STATUS3_ALWAYS_HITS && move == 0xFFFF && gDisableStructs[gBattlerTarget].battlerWithSureHit == gBattlerAttacker) gBattlescriptCurrInstr += 7; else if (gStatuses3[gBattlerTarget] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); @@ -1329,11 +1328,11 @@ static void atk03_ppreduce(void) { switch (gBattleMoves[gCurrentMove].target) { - case TARGET_FOES_AND_ALLY: + case MOVE_TARGET_FOES_AND_ALLY: ppToDeduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_ON_FIELD, gBattlerAttacker, ABILITY_PRESSURE, 0, 0); break; - case TARGET_BOTH: - case TARGET_OPPONENTS_FIELD: + case MOVE_TARGET_BOTH: + case MOVE_TARGET_OPPONENTS_FIELD: ppToDeduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIZE, gBattlerAttacker, ABILITY_PRESSURE, 0, 0); break; default: @@ -1353,7 +1352,7 @@ static void atk03_ppreduce(void) gBattleMons[gBattlerAttacker].pp[gCurrMovePos] = 0; if (!(gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED) - && !((gDisableStructs[gBattlerAttacker].unk18_b) & gBitTable[gCurrMovePos])) + && !((gDisableStructs[gBattlerAttacker].mimickedMoves) & gBitTable[gCurrMovePos])) { gActiveBattler = gBattlerAttacker; BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + gCurrMovePos, 0, 1, &gBattleMons[gBattlerAttacker].pp[gCurrMovePos]); @@ -1388,8 +1387,8 @@ static void atk04_critcalc(void) + 2 * (holdEffect == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[gBattlerAttacker].species == SPECIES_CHANSEY) + 2 * (holdEffect == HOLD_EFFECT_STICK && gBattleMons[gBattlerAttacker].species == SPECIES_FARFETCHD); - if (critChance > 4) - critChance = 4; + if (critChance >= ARRAY_COUNT(sCriticalHitChance)) + critChance = ARRAY_COUNT(sCriticalHitChance) - 1; if ((gBattleMons[gBattlerTarget].ability != ABILITY_BATTLE_ARMOR && gBattleMons[gBattlerTarget].ability != ABILITY_SHELL_ARMOR) && !(gStatuses3[gBattlerAttacker] & STATUS3_CANT_SCORE_A_CRIT) @@ -1404,9 +1403,9 @@ static void atk04_critcalc(void) static void atk05_damagecalc(void) { - u16 side_hword = gSideAffecting[GetBattlerPosition(gBattlerTarget) & 1]; + u16 sideStatus = gSideStatuses[GET_BATTLER_SIDE(gBattlerTarget)]; gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBattlerAttacker], &gBattleMons[gBattlerTarget], gCurrentMove, - side_hword, gDynamicBasePower, + sideStatus, gDynamicBasePower, gBattleStruct->dynamicMoveType, gBattlerAttacker, gBattlerTarget); gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * gBattleStruct->dmgMultiplier; @@ -1418,18 +1417,18 @@ static void atk05_damagecalc(void) gBattlescriptCurrInstr++; } -void AI_CalcDmg(u8 BankAtk, u8 BankDef) +void AI_CalcDmg(u8 attacker, u8 defender) { - u16 side_hword = gSideAffecting[GetBattlerPosition(BankDef) & 1]; - gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[BankAtk], &gBattleMons[BankDef], gCurrentMove, - side_hword, gDynamicBasePower, - gBattleStruct->dynamicMoveType, BankAtk, BankDef); + u16 sideStatus = gSideStatuses[GET_BATTLER_SIDE(defender)]; + gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[attacker], &gBattleMons[defender], gCurrentMove, + sideStatus, gDynamicBasePower, + gBattleStruct->dynamicMoveType, attacker, defender); gDynamicBasePower = 0; gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * gBattleStruct->dmgMultiplier; - if (gStatuses3[BankAtk] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC) + if (gStatuses3[attacker] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC) gBattleMoveDamage *= 2; - if (gProtectStructs[BankAtk].helpingHand) + if (gProtectStructs[attacker].helpingHand) gBattleMoveDamage = gBattleMoveDamage * 15 / 10; } @@ -1441,12 +1440,12 @@ static void ModulateDmgByType(u8 multiplier) switch (multiplier) { - case 0: //no effect + case TYPE_MUL_NO_EFFECT: gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE; gMoveResultFlags &= ~MOVE_RESULT_NOT_VERY_EFFECTIVE; gMoveResultFlags &= ~MOVE_RESULT_SUPER_EFFECTIVE; break; - case 5: //not very effecting + case TYPE_MUL_NOT_EFFECTIVE: if (gBattleMoves[gCurrentMove].power && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) { if (gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE) @@ -1455,7 +1454,7 @@ static void ModulateDmgByType(u8 multiplier) gMoveResultFlags |= MOVE_RESULT_NOT_VERY_EFFECTIVE; } break; - case 20: //super effective + case TYPE_MUL_SUPER_EFFECTIVE: if (gBattleMoves[gCurrentMove].power && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) { if (gMoveResultFlags & MOVE_RESULT_NOT_VERY_EFFECTIVE) @@ -1470,28 +1469,28 @@ static void ModulateDmgByType(u8 multiplier) static void atk06_typecalc(void) { int i = 0; - u8 move_type; + u8 moveType; if (gCurrentMove != MOVE_STRUGGLE) { if (gBattleStruct->dynamicMoveType) - move_type = gBattleStruct->dynamicMoveType & 0x3F; + moveType = gBattleStruct->dynamicMoveType & 0x3F; else - move_type = gBattleMoves[gCurrentMove].type; + moveType = gBattleMoves[gCurrentMove].type; //check stab - if (gBattleMons[gBattlerAttacker].type1 == move_type || gBattleMons[gBattlerAttacker].type2 == move_type) + if (gBattleMons[gBattlerAttacker].type1 == moveType || gBattleMons[gBattlerAttacker].type2 == moveType) { gBattleMoveDamage = gBattleMoveDamage * 15; gBattleMoveDamage = gBattleMoveDamage / 10; } - if (gBattleMons[gBattlerTarget].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) + if (gBattleMons[gBattlerTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND) { gLastUsedAbility = gBattleMons[gBattlerTarget].ability; gMoveResultFlags |= (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE); gLastLandedMoves[gBattlerTarget] = 0; gLastHitByType[gBattlerTarget] = 0; - gBattleCommunication[6] = move_type; + gBattleCommunication[6] = moveType; RecordAbilityBattle(gBattlerTarget, gLastUsedAbility); } else @@ -1506,7 +1505,7 @@ static void atk06_typecalc(void) continue; } - else if (gTypeEffectiveness[i] == move_type) + else if (gTypeEffectiveness[i] == moveType) { //check type1 if (gTypeEffectiveness[i + 1] == gBattleMons[gBattlerTarget].type1) @@ -1539,24 +1538,21 @@ static void atk06_typecalc(void) static void CheckWonderGuardAndLevitate(void) { u8 flags = 0; - int i = 0; - u8 move_type; + s32 i = 0; + u8 moveType; if (gCurrentMove == MOVE_STRUGGLE || !gBattleMoves[gCurrentMove].power) return; - if (gBattleStruct->dynamicMoveType) - move_type = gBattleStruct->dynamicMoveType & 0x3F; - else - move_type = gBattleMoves[gCurrentMove].type; + GET_MOVE_TYPE(gCurrentMove, moveType); - if (gBattleMons[gBattlerTarget].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) + if (gBattleMons[gBattlerTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND) { - RecordAbilitySetField6(ABILITY_LEVITATE, move_type); + RecordAbilitySetField6(ABILITY_LEVITATE, moveType); return; } - while (gTypeEffectiveness[i]!= TYPE_ENDTABLE) + while (gTypeEffectiveness[i] != TYPE_ENDTABLE) { if (gTypeEffectiveness[i] == TYPE_FORESIGHT) { @@ -1566,9 +1562,9 @@ static void CheckWonderGuardAndLevitate(void) continue; } - if (gTypeEffectiveness[i] == move_type) + if (gTypeEffectiveness[i] == moveType) { - //check no effect + // check no effect if (gTypeEffectiveness[i + 1] == gBattleMons[gBattlerTarget].type1 && gTypeEffectiveness[i + 2] == 0) { gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE; @@ -1582,7 +1578,7 @@ static void CheckWonderGuardAndLevitate(void) gProtectStructs[gBattlerAttacker].targetNotAffected = 1; } - //check super effective + // check super effective if (gTypeEffectiveness[i + 1] == gBattleMons[gBattlerTarget].type1 && gTypeEffectiveness[i + 2] == 20) flags |= 1; if (gTypeEffectiveness[i + 1] == gBattleMons[gBattlerTarget].type2 @@ -1590,7 +1586,7 @@ static void CheckWonderGuardAndLevitate(void) && gTypeEffectiveness[i + 2] == 20) flags |= 1; - //check not very effective + // check not very effective if (gTypeEffectiveness[i + 1] == gBattleMons[gBattlerTarget].type1 && gTypeEffectiveness[i + 2] == 5) flags |= 2; if (gTypeEffectiveness[i + 1] == gBattleMons[gBattlerTarget].type2 @@ -1610,7 +1606,7 @@ static void CheckWonderGuardAndLevitate(void) } } -static void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) //a literal copy of the ModulateDmgbyType1 with different args... +static void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) // same as ModulateDmgByType except different arguments { gBattleMoveDamage = gBattleMoveDamage * multiplier / 10; if (gBattleMoveDamage == 0 && multiplier != 0) @@ -1618,12 +1614,12 @@ static void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) //a literal c switch (multiplier) { - case 0: //no effect + case TYPE_MUL_NO_EFFECT: *flags |= MOVE_RESULT_DOESNT_AFFECT_FOE; *flags &= ~MOVE_RESULT_NOT_VERY_EFFECTIVE; *flags &= ~MOVE_RESULT_SUPER_EFFECTIVE; break; - case 5: //not very effecting + case TYPE_MUL_NOT_EFFECTIVE: if (gBattleMoves[move].power && !(*flags & MOVE_RESULT_NO_EFFECT)) { if (*flags & MOVE_RESULT_SUPER_EFFECTIVE) @@ -1632,7 +1628,7 @@ static void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) //a literal c *flags |= MOVE_RESULT_NOT_VERY_EFFECTIVE; } break; - case 20: //super effective + case TYPE_MUL_SUPER_EFFECTIVE: if (gBattleMoves[move].power && !(*flags & MOVE_RESULT_NO_EFFECT)) { if (*flags & MOVE_RESULT_NOT_VERY_EFFECTIVE) @@ -1644,25 +1640,25 @@ static void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) //a literal c } } -u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def) +u8 TypeCalc(u16 move, u8 attacker, u8 defender) { - int i = 0; + s32 i = 0; u8 flags = 0; - u8 move_type; + u8 moveType; if (move == MOVE_STRUGGLE) return 0; - move_type = gBattleMoves[move].type; + moveType = gBattleMoves[move].type; - //check stab - if (gBattleMons[bank_atk].type1 == move_type || gBattleMons[bank_atk].type2 == move_type) + // check stab + if (IS_BATTLER_OF_TYPE(attacker, moveType)) { gBattleMoveDamage = gBattleMoveDamage * 15; gBattleMoveDamage = gBattleMoveDamage / 10; } - if (gBattleMons[bank_def].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) + if (gBattleMons[defender].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND) { flags |= (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE); } @@ -1672,28 +1668,28 @@ u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def) { if (gTypeEffectiveness[i] == TYPE_FORESIGHT) { - if (gBattleMons[bank_def].status2 & STATUS2_FORESIGHT) + if (gBattleMons[defender].status2 & STATUS2_FORESIGHT) break; i += 3; continue; } - else if (gTypeEffectiveness[i] == move_type) + else if (gTypeEffectiveness[i] == moveType) { - //check type1 - if (gTypeEffectiveness[i + 1] == gBattleMons[bank_def].type1) + // check type1 + if (gTypeEffectiveness[i + 1] == gBattleMons[defender].type1) ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); - //check type2 - if (gTypeEffectiveness[i + 1] == gBattleMons[bank_def].type2 && - gBattleMons[gBattlerTarget /* what the christ */].type1 != gBattleMons[bank_def].type2) + // check type2 + if (gTypeEffectiveness[i + 1] == gBattleMons[defender].type2 && + gBattleMons[gBattlerTarget /* what the christ */].type1 != gBattleMons[defender].type2) ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); } i += 3; } } - if (gBattleMons[bank_def].ability == ABILITY_WONDER_GUARD && !(flags & MOVE_RESULT_MISSED) && - AttacksThisTurn(bank_atk, move) == 2 && + if (gBattleMons[defender].ability == ABILITY_WONDER_GUARD && !(flags & MOVE_RESULT_MISSED) && + AttacksThisTurn(attacker, move) == 2 && (!(flags & MOVE_RESULT_SUPER_EFFECTIVE) || ((flags & (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)) == (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE))) && gBattleMoves[move].power) { @@ -1702,41 +1698,43 @@ u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def) return flags; } -u8 AI_TypeCalc(u16 move, u16 species, u8 ability) +u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility) { int i = 0; u8 flags = 0; - u8 type1 = gBaseStats[species].type1, type2 = gBaseStats[species].type2, move_type; + u8 type1 = gBaseStats[targetSpecies].type1, type2 = gBaseStats[targetSpecies].type2, moveType; if (move == MOVE_STRUGGLE) return 0; - move_type = gBattleMoves[move].type; + moveType = gBattleMoves[move].type; - if (ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) + if (targetAbility == ABILITY_LEVITATE && moveType == TYPE_GROUND) + { flags = MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE; + } else { - while (gTypeEffectiveness[i]!= TYPE_ENDTABLE) + while (TYPE_EFFECT_ATK_TYPE(i) != TYPE_ENDTABLE) { - if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT) { i += 3; continue; } - if (gTypeEffectiveness[i] == move_type) + if (TYPE_EFFECT_ATK_TYPE(i) == moveType) { - //check type1 - if (gTypeEffectiveness[i + 1] == type1) - ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); - //check type2 - if (gTypeEffectiveness[i + 1] == type2 && gBattleMons[gBattlerTarget].type1 != type2) //gf you morons, you should check if (type1 != type2)... - ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); + // check type1 + if (TYPE_EFFECT_DEF_TYPE(i) == type1) + ModulateDmgByType2(TYPE_EFFECT_MULTIPLIER(i), move, &flags); + // check type2 + if (TYPE_EFFECT_DEF_TYPE(i) == type2 && gBattleMons[gBattlerTarget].type1 != type2) //gf you morons, you should check if (type1 != type2)... + ModulateDmgByType2(TYPE_EFFECT_MULTIPLIER(i), move, &flags); } i += 3; } } - if (ability == ABILITY_WONDER_GUARD + if (targetAbility == ABILITY_WONDER_GUARD && (!(flags & MOVE_RESULT_SUPER_EFFECTIVE) || ((flags & (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)) == (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE))) && gBattleMoves[move].power) flags |= MOVE_RESULT_DOESNT_AFFECT_FOE; @@ -1765,23 +1763,26 @@ void Unused_ApplyRandomDmgMultiplier(void) static void atk07_adjustnormaldamage(void) { - u8 hold_effect, quality; + u8 holdEffect, param; + ApplyRandomDmgMultiplier(); + if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY) { - hold_effect = gEnigmaBerries[gBattlerTarget].holdEffect, quality = gEnigmaBerries[gBattlerTarget].holdEffectParam; + holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect; + param = gEnigmaBerries[gBattlerTarget].holdEffectParam; } else { - hold_effect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item); - quality = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item); + holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item); + param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item); } gPotentialItemEffectBattler = gBattlerTarget; - if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality) + if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param) { - RecordItemBattle(gBattlerTarget, hold_effect); + RecordItemEffectBattle(gBattlerTarget, holdEffect); gSpecialStatuses[gBattlerTarget].focusBanded = 1; } if (gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE) @@ -1798,9 +1799,8 @@ static void atk07_adjustnormaldamage(void) if (gProtectStructs[gBattlerTarget].endured) { gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED; - goto END; } - if (gSpecialStatuses[gBattlerTarget].focusBanded) + else if (gSpecialStatuses[gBattlerTarget].focusBanded) { gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON; gLastUsedItem = gBattleMons[gBattlerTarget].item; @@ -1810,33 +1810,34 @@ static void atk07_adjustnormaldamage(void) gBattlescriptCurrInstr++; } -static void atk08_adjustnormaldamage2(void) //literally the same as 0x7 except it doesn't check for false swipe move effect... +static void atk08_adjustnormaldamage2(void) // The same as 0x7 except it doesn't check for false swipe move effect. { - u8 hold_effect, quality; + u8 holdEffect, param; + ApplyRandomDmgMultiplier(); + if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY) { - hold_effect = gEnigmaBerries[gBattlerTarget].holdEffect, quality = gEnigmaBerries[gBattlerTarget].holdEffectParam; + holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect; + param = gEnigmaBerries[gBattlerTarget].holdEffectParam; } else { - hold_effect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item); - quality = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item); + holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item); + param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item); } gPotentialItemEffectBattler = gBattlerTarget; - if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality) + if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param) { - RecordItemBattle(gBattlerTarget, hold_effect); + RecordItemEffectBattle(gBattlerTarget, holdEffect); gSpecialStatuses[gBattlerTarget].focusBanded = 1; } if (gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE) goto END; - if (!gProtectStructs[gBattlerTarget].endured - && !gSpecialStatuses[gBattlerTarget].focusBanded) + if (!gProtectStructs[gBattlerTarget].endured && !gSpecialStatuses[gBattlerTarget].focusBanded) goto END; - if (gBattleMons[gBattlerTarget].hp > gBattleMoveDamage) goto END; @@ -1845,9 +1846,8 @@ static void atk08_adjustnormaldamage2(void) //literally the same as 0x7 except i if (gProtectStructs[gBattlerTarget].endured) { gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED; - goto END; } - if (gSpecialStatuses[gBattlerTarget].focusBanded) + else if (gSpecialStatuses[gBattlerTarget].focusBanded) { gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON; gLastUsedItem = gBattleMons[gBattlerTarget].item; @@ -1866,12 +1866,12 @@ static void atk09_attackanimation(void) { BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_Pausex20; - gBattleStruct->animTurn += 1; - gBattleStruct->animTargetsHit += 1; + gBattleStruct->animTurn++; + gBattleStruct->animTargetsHit++; } else { - if ((gBattleMoves[gCurrentMove].target & TARGET_BOTH || gBattleMoves[gCurrentMove].target & TARGET_FOES_AND_ALLY || gBattleMoves[gCurrentMove].target & TARGET_DEPENDS) && gBattleStruct->animTargetsHit) + if ((gBattleMoves[gCurrentMove].target & MOVE_TARGET_BOTH || gBattleMoves[gCurrentMove].target & MOVE_TARGET_FOES_AND_ALLY || gBattleMoves[gCurrentMove].target & TARGET_DEPENDS) && gBattleStruct->animTargetsHit) { gBattlescriptCurrInstr++; return; @@ -1907,7 +1907,7 @@ static void atk0B_healthbarupdate(void) if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) { - gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]); + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); if (gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBattler].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE)) { @@ -1934,7 +1934,7 @@ static void atk0B_healthbarupdate(void) MarkBattlerForControllerExec(gActiveBattler); if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER && gBattleMoveDamage > 0) - gBattleResults.unk5_0 = 1; + gBattleResults.playerMonWasDamaged = TRUE; } } @@ -1957,7 +1957,7 @@ static void atk0C_datahpupdate(void) if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) { - gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]); + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); if (gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBattler].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE)) { if (gDisableStructs[gActiveBattler].substituteHP >= gBattleMoveDamage) @@ -2002,10 +2002,10 @@ static void atk0C_datahpupdate(void) else { gTakenDmg[gActiveBattler] += gBattleMoveDamage; - if (gBattlescriptCurrInstr[1] == BS_GET_TARGET) - gTakenDmgBanks[gActiveBattler] = gBattlerAttacker; + if (gBattlescriptCurrInstr[1] == BS_TARGET) + gTakenDmgByBattler[gActiveBattler] = gBattlerAttacker; else - gTakenDmgBanks[gActiveBattler] = gBattlerTarget; + gTakenDmgByBattler[gActiveBattler] = gBattlerTarget; } if (gBattleMons[gActiveBattler].hp > gBattleMoveDamage) @@ -2022,11 +2022,11 @@ static void atk0C_datahpupdate(void) if (!gSpecialStatuses[gActiveBattler].dmg && !(gHitMarker & HITMARKER_x100000)) gSpecialStatuses[gActiveBattler].dmg = gHpDealt; - if (TYPE_IS_PHYSICAL(moveType) && !(gHitMarker & HITMARKER_x100000) && gCurrentMove != MOVE_PAIN_SPLIT) + if (IS_TYPE_PHYSICAL(moveType) && !(gHitMarker & HITMARKER_x100000) && gCurrentMove != MOVE_PAIN_SPLIT) { gProtectStructs[gActiveBattler].physicalDmg = gHpDealt; gSpecialStatuses[gActiveBattler].physicalDmg = gHpDealt; - if (gBattlescriptCurrInstr[1] == BS_GET_TARGET) + if (gBattlescriptCurrInstr[1] == BS_TARGET) { gProtectStructs[gActiveBattler].physicalBattlerId = gBattlerAttacker; gSpecialStatuses[gActiveBattler].physicalBattlerId = gBattlerAttacker; @@ -2037,11 +2037,11 @@ static void atk0C_datahpupdate(void) gSpecialStatuses[gActiveBattler].physicalBattlerId = gBattlerTarget; } } - else if (!TYPE_IS_PHYSICAL(moveType) && !(gHitMarker & HITMARKER_x100000)) + else if (!IS_TYPE_PHYSICAL(moveType) && !(gHitMarker & HITMARKER_x100000)) { gProtectStructs[gActiveBattler].specialDmg = gHpDealt; gSpecialStatuses[gActiveBattler].specialDmg = gHpDealt; - if (gBattlescriptCurrInstr[1] == BS_GET_TARGET) + if (gBattlescriptCurrInstr[1] == BS_TARGET) { gProtectStructs[gActiveBattler].specialBattlerId = gBattlerAttacker; gSpecialStatuses[gActiveBattler].specialBattlerId = gBattlerAttacker; @@ -2060,7 +2060,7 @@ static void atk0C_datahpupdate(void) } else { - gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]); + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); if (gSpecialStatuses[gActiveBattler].dmg == 0) gSpecialStatuses[gActiveBattler].dmg = 0xFFFF; } @@ -2088,19 +2088,19 @@ static void atk0E_effectivenesssound(void) gActiveBattler = gBattlerTarget; if (!(gMoveResultFlags & MOVE_RESULT_MISSED)) { - u8 flag = ~MOVE_RESULT_MISSED; - switch (gMoveResultFlags & flag) + switch (gMoveResultFlags & (u8)(~(MOVE_RESULT_MISSED))) { case MOVE_RESULT_SUPER_EFFECTIVE: - BtlController_EmitPlaySE(0, 14); + BtlController_EmitPlaySE(0, SE_KOUKA_H); MarkBattlerForControllerExec(gActiveBattler); break; case MOVE_RESULT_NOT_VERY_EFFECTIVE: - BtlController_EmitPlaySE(0, 12); + BtlController_EmitPlaySE(0, SE_KOUKA_L); MarkBattlerForControllerExec(gActiveBattler); break; case MOVE_RESULT_DOESNT_AFFECT_FOE: case MOVE_RESULT_FAILED: + // no sound break; case MOVE_RESULT_FOE_ENDURED: case MOVE_RESULT_ONE_HIT_KO: @@ -2108,17 +2108,17 @@ static void atk0E_effectivenesssound(void) default: if (gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE) { - BtlController_EmitPlaySE(0, 14); + BtlController_EmitPlaySE(0, SE_KOUKA_H); MarkBattlerForControllerExec(gActiveBattler); } else if (gMoveResultFlags & MOVE_RESULT_NOT_VERY_EFFECTIVE) { - BtlController_EmitPlaySE(0, 12); + BtlController_EmitPlaySE(0, SE_KOUKA_L); MarkBattlerForControllerExec(gActiveBattler); } else if (!(gMoveResultFlags & (MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED))) { - BtlController_EmitPlaySE(0, 13); + BtlController_EmitPlaySE(0, SE_KOUKA_M); MarkBattlerForControllerExec(gActiveBattler); } break; @@ -2230,8 +2230,10 @@ static void atk10_printstring(void) static void atk11_printselectionstring(void) { gActiveBattler = gBattlerAttacker; + BtlController_EmitPrintSelectionString(0, T2_READ_16(gBattlescriptCurrInstr + 1)); MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 3; gBattleCommunication[MSG_DISPLAY] = 1; } @@ -2246,8 +2248,8 @@ static void atk12_waitmessage(void) } else { - u16 to_wait = T2_READ_16(gBattlescriptCurrInstr + 1); - if (++gPauseCounterBattle >= to_wait) + u16 toWait = T2_READ_16(gBattlescriptCurrInstr + 1); + if (++gPauseCounterBattle >= toWait) { gPauseCounterBattle = 0; gBattlescriptCurrInstr += 3; @@ -2283,12 +2285,12 @@ static void atk14_printselectionstringfromtable(void) } } -u8 BankGetTurnOrder(u8 bank) +u8 GetBattlerTurnOrderNum(u8 battlerId) { int i; for (i = 0; i < gBattlersCount; i++) { - if (gBanksByTurnOrder[i] == bank) + if (gBattlerByTurnOrder[i] == battlerId) break; } return i; @@ -2321,7 +2323,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 9) {gBattlescriptCurrInstr++; return;} - if (gSideAffecting[GetBattlerPosition(gEffectBattler) & 1] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && + if (gSideStatuses[GetBattlerPosition(gEffectBattler) & 1] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 7) {gBattlescriptCurrInstr++; return;} @@ -2553,7 +2555,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) } else { - if (BankGetTurnOrder(gEffectBattler) > gCurrentTurnActionNumber) + if (GetBattlerTurnOrderNum(gEffectBattler) > gCurrentTurnActionNumber) gBattleMons[gEffectBattler].status2 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; gBattlescriptCurrInstr++; return; } @@ -2867,7 +2869,7 @@ _0801E48A:\n\ mov r1, r8\n\ ldrb r0, [r1]\n\ bl GetBattlerPosition\n\ - ldr r2, _0801E554 @ =gSideAffecting\n\ + ldr r2, _0801E554 @ =gSideStatuses\n\ movs r1, 0x1\n\ ands r1, r0\n\ lsls r1, 1\n\ @@ -2961,7 +2963,7 @@ _0801E544: .4byte gBattlerAttacker\n\ _0801E548: .4byte 0x00016003\n\ _0801E54C: .4byte gBattleMons\n\ _0801E550: .4byte gHitMarker\n\ -_0801E554: .4byte gSideAffecting\n\ +_0801E554: .4byte gSideStatuses\n\ _0801E558: .4byte gBattleCommunication\n\ _0801E55C: .4byte sStatusFlagsForMoveEffects\n\ _0801E560:\n\ @@ -3895,7 +3897,7 @@ _0801ED10: .4byte gBattlescriptCurrInstr\n\ _0801ED14: .4byte BattleScript_FlinchPrevention\n\ _0801ED18:\n\ adds r0, r2, 0\n\ - bl BankGetTurnOrder\n\ + bl GetBattlerTurnOrderNum\n\ ldr r1, _0801ED54 @ =gCurrentTurnActionNumber\n\ lsls r0, 24\n\ lsrs r0, 24\n\ @@ -4955,27 +4957,31 @@ _0801F610: .4byte BattleScript_SAtkDown2\n\ static void atk15_seteffectwithchance(void) { - u32 PercentChance; + u32 percentChance; if (gBattleMons[gBattlerAttacker].ability == ABILITY_SERENE_GRACE) - PercentChance = gBattleMoves[gCurrentMove].secondaryEffectChance * 2; + percentChance = gBattleMoves[gCurrentMove].secondaryEffectChance * 2; else - PercentChance = gBattleMoves[gCurrentMove].secondaryEffectChance; + percentChance = gBattleMoves[gCurrentMove].secondaryEffectChance; if (DEBUG && (gUnknown_02023A14_50 & 4) - && !(gBattleCommunication[MOVE_EFFECT_BYTE] & 0x80) && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) + && !(gBattleCommunication[MOVE_EFFECT_BYTE] & MOVE_EFFECT_CERTAIN) + && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) { SetMoveEffect(0, 0); } - else if ((gBattleCommunication[MOVE_EFFECT_BYTE] & 0x80) && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) + else if ((gBattleCommunication[MOVE_EFFECT_BYTE] & MOVE_EFFECT_CERTAIN) + && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) { - gBattleCommunication[MOVE_EFFECT_BYTE] &= 0x7F; - SetMoveEffect(0, 0x80); + gBattleCommunication[MOVE_EFFECT_BYTE] &= ~(MOVE_EFFECT_CERTAIN); + SetMoveEffect(0, MOVE_EFFECT_CERTAIN); } - else if (Random() % 100 <= PercentChance && gBattleCommunication[MOVE_EFFECT_BYTE] != 0 && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) + else if (Random() % 100 <= percentChance // Random() % 100 < percentChance in Emerald + && gBattleCommunication[MOVE_EFFECT_BYTE] + && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) { - if (PercentChance >= 100) - SetMoveEffect(0, 0x80); + if (percentChance >= 100) + SetMoveEffect(0, MOVE_EFFECT_CERTAIN); else SetMoveEffect(0, 0); } @@ -5000,8 +5006,9 @@ static void atk17_seteffectsecondary(void) static void atk18_clearstatusfromeffect(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); - if (gBattleCommunication[MOVE_EFFECT_BYTE] <= 6) + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + + if (gBattleCommunication[MOVE_EFFECT_BYTE] <= MOVE_EFFECT_TOXIC) gBattleMons[gActiveBattler].status1 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]); else gBattleMons[gActiveBattler].status2 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]); @@ -5013,18 +5020,18 @@ static void atk18_clearstatusfromeffect(void) static void atk19_tryfaintmon(void) { - u8 *r4; + const u8 *BS_ptr; if (gBattlescriptCurrInstr[2] != 0) { - gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]); + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); if (gHitMarker & HITMARKER_FAINTED(gActiveBattler)) { - r4 = T1_READ_PTR(gBattlescriptCurrInstr + 3); + BS_ptr = T1_READ_PTR(gBattlescriptCurrInstr + 3); BattleScriptPop(); - gBattlescriptCurrInstr = r4; - gSideAffecting[GetBattlerSide(gActiveBattler)] &= ~SIDE_STATUS_SPIKES_DAMAGED; + gBattlescriptCurrInstr = BS_ptr; + gSideStatuses[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED); } else { @@ -5033,41 +5040,41 @@ static void atk19_tryfaintmon(void) } else { - u8 bank; + u8 battlerId; if (gBattlescriptCurrInstr[1] == 1) { gActiveBattler = gBattlerAttacker; - bank = gBattlerTarget; - r4 = BattleScript_FaintAttacker; + battlerId = gBattlerTarget; + BS_ptr = BattleScript_FaintAttacker; } else { gActiveBattler = gBattlerTarget; - bank = gBattlerAttacker; - r4 = BattleScript_FaintTarget; + battlerId = gBattlerAttacker; + BS_ptr = BattleScript_FaintTarget; } if (!(gAbsentBattlerFlags & gBitTable[gActiveBattler]) && gBattleMons[gActiveBattler].hp == 0) { - ewram160ACarr2(0, bank) = 0; - ewram160ACarr2(1, bank) = 0; - ewram16100arr2(0, bank) = 0; - ewram16100arr2(1, bank) = 0; - ewram16100arr2(2, bank) = 0; - ewram16100arr2(3, bank) = 0; + ewram160ACarr2(0, battlerId) = 0; + ewram160ACarr2(1, battlerId) = 0; + ewram16100arr2(0, battlerId) = 0; + ewram16100arr2(1, battlerId) = 0; + ewram16100arr2(2, battlerId) = 0; + ewram16100arr2(3, battlerId) = 0; gHitMarker |= HITMARKER_FAINTED(gActiveBattler); BattleScriptPush(gBattlescriptCurrInstr + 7); - gBattlescriptCurrInstr = r4; - if (GetBattlerSide(gActiveBattler) == 0) + gBattlescriptCurrInstr = BS_ptr; + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) { gHitMarker |= HITMARKER_x400000; if (gBattleResults.playerFaintCounter < 0xFF) gBattleResults.playerFaintCounter++; - if (gBattleMons[bank].level > gBattleMons[gActiveBattler].level) + if (gBattleMons[battlerId].level > gBattleMons[gActiveBattler].level) { - if (gBattleMons[bank].level - gBattleMons[gActiveBattler].level > 29) + if (gBattleMons[battlerId].level - gBattleMons[gActiveBattler].level > 29) AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], FRIENDSHIP_EVENT_FAINT_LARGE); else AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], FRIENDSHIP_EVENT_FAINT_SMALL); @@ -5082,7 +5089,7 @@ static void atk19_tryfaintmon(void) if ((gHitMarker & HITMARKER_DESTINYBOND) && gBattleMons[gBattlerAttacker].hp != 0) { BattleScriptPush(gBattlescriptCurrInstr); - gBattleMoveDamage = gBattleMons[bank].hp; + gBattleMoveDamage = gBattleMons[battlerId].hp; gBattlescriptCurrInstr = BattleScript_DestinyBondTakesLife; } if ((gStatuses3[gBattlerTarget] & STATUS3_GRUDGE) @@ -5095,7 +5102,7 @@ static void atk19_tryfaintmon(void) gBattleMons[gBattlerAttacker].pp[moveIndex] = 0; BattleScriptPush(gBattlescriptCurrInstr); - gBattlescriptCurrInstr = BattleScript_SelectingImprisionedMoveInPalace; + gBattlescriptCurrInstr = BattleScript_GrudgeTakesPp; gActiveBattler = gBattlerAttacker; BtlController_EmitSetMonData(0, moveIndex + 9, 0, 1, &gBattleMons[gActiveBattler].pp[moveIndex]); MarkBattlerForControllerExec(gActiveBattler); @@ -5118,7 +5125,7 @@ static void atk1A_dofaintanimation(void) { if (gBattleControllerExecFlags == 0) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); BtlController_EmitFaintAnimation(0); MarkBattlerForControllerExec(gActiveBattler); gBattlescriptCurrInstr += 2; @@ -5130,7 +5137,7 @@ static void atk1B_cleareffectsonfaint(void) //Clears things like attraction or trapping to other banks if (gBattleControllerExecFlags == 0) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); gBattleMons[gActiveBattler].status1 = 0; BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 0x4, &gBattleMons[gActiveBattler].status1); MarkBattlerForControllerExec(gActiveBattler); @@ -5141,7 +5148,7 @@ static void atk1B_cleareffectsonfaint(void) static void atk1C_jumpifstatus(void) { - u8 bank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + u8 bank = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); u32 flags = T2_READ_32(gBattlescriptCurrInstr + 2); void* jump_loc = T2_READ_PTR(gBattlescriptCurrInstr + 6); if (gBattleMons[bank].status1 & flags && gBattleMons[bank].hp) @@ -5152,10 +5159,10 @@ static void atk1C_jumpifstatus(void) static void atk1D_jumpifstatus2(void) { - u8 bank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + u8 battlerId = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); u32 flags = T2_READ_32(gBattlescriptCurrInstr + 2); void* jump_loc = T2_READ_PTR(gBattlescriptCurrInstr + 6); - if (gBattleMons[bank].status2 & flags && gBattleMons[bank].hp) + if (gBattleMons[battlerId].status2 & flags && gBattleMons[battlerId].hp) gBattlescriptCurrInstr = jump_loc; else gBattlescriptCurrInstr += 10; @@ -5163,44 +5170,44 @@ static void atk1D_jumpifstatus2(void) static void atk1E_jumpifability(void) { - u8 bank; - u8 ability = T2_READ_8(gBattlescriptCurrInstr + 2); - void* jump_loc = T2_READ_PTR(gBattlescriptCurrInstr + 3); + u8 battlerId; + u8 ability = gBattlescriptCurrInstr[2]; + void* jumpPtr = T2_READ_PTR(gBattlescriptCurrInstr + 3); if (T2_READ_8(gBattlescriptCurrInstr + 1) == 8) { - bank = AbilityBattleEffects(ABILITYEFFECT_CHECK_BANK_SIDE, gBattlerAttacker, ability, 0, 0); - if (bank) + battlerId = AbilityBattleEffects(ABILITYEFFECT_CHECK_BANK_SIDE, gBattlerAttacker, ability, 0, 0); + if (battlerId) { gLastUsedAbility = ability; - gBattlescriptCurrInstr = jump_loc; - RecordAbilityBattle(bank -1, gLastUsedAbility); - ewram160F8 = bank - 1; + gBattlescriptCurrInstr = jumpPtr; + RecordAbilityBattle(battlerId -1, gLastUsedAbility); + ewram160F8 = battlerId - 1; } else gBattlescriptCurrInstr += 7; } else if (T2_READ_8(gBattlescriptCurrInstr + 1) == 9) { - bank = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gBattlerAttacker, ability, 0, 0); - if (bank) + battlerId = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gBattlerAttacker, ability, 0, 0); + if (battlerId) { gLastUsedAbility = ability; - gBattlescriptCurrInstr = jump_loc; - RecordAbilityBattle(bank - 1, gLastUsedAbility); - ewram160F8 = bank - 1; + gBattlescriptCurrInstr = jumpPtr; + RecordAbilityBattle(battlerId - 1, gLastUsedAbility); + ewram160F8 = battlerId - 1; } else gBattlescriptCurrInstr += 7; } else { - bank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); - if (gBattleMons[bank].ability == ability) + battlerId = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); + if (gBattleMons[battlerId].ability == ability) { gLastUsedAbility = ability; - gBattlescriptCurrInstr = jump_loc; - RecordAbilityBattle(bank, gLastUsedAbility); - ewram160F8 = bank; + gBattlescriptCurrInstr = jumpPtr; + RecordAbilityBattle(battlerId, gLastUsedAbility); + ewram160F8 = battlerId; } else gBattlescriptCurrInstr += 7; @@ -5220,7 +5227,7 @@ static void atk1F_jumpifsideaffecting(void) flags = T2_READ_16(gBattlescriptCurrInstr + 2); jump_loc = T2_READ_PTR(gBattlescriptCurrInstr + 4); - if (gSideAffecting[side] & flags) + if (gSideStatuses[side] & flags) gBattlescriptCurrInstr = jump_loc; else gBattlescriptCurrInstr += 8; @@ -5229,8 +5236,8 @@ static void atk1F_jumpifsideaffecting(void) static void atk20_jumpifstat(void) { u8 ret = 0; - u8 bank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); - u8 value = gBattleMons[bank].statStages[T2_READ_8(gBattlescriptCurrInstr + 3)]; + u8 battlerId = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); + u8 value = gBattleMons[battlerId].statStages[T2_READ_8(gBattlescriptCurrInstr + 3)]; switch (T2_READ_8(gBattlescriptCurrInstr + 2)) { case CMP_EQUAL: @@ -5269,7 +5276,7 @@ static void atk21_jumpifstatus3condition(void) u32 flags; void* jump_loc; - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); flags = T2_READ_32(gBattlescriptCurrInstr + 2); jump_loc = T2_READ_PTR(gBattlescriptCurrInstr + 7); if (T2_READ_8(gBattlescriptCurrInstr + 6)) @@ -5288,13 +5295,13 @@ static void atk21_jumpifstatus3condition(void) } } -static void atk22_jumpiftype(void) //u8 bank, u8 type, *ptr +static void atk22_jumpiftype(void) //u8 battlerId, u8 type, *ptr { - u8 bank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + u8 battlerId = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); u8 type = T2_READ_8(gBattlescriptCurrInstr + 2); void* jump_loc = T2_READ_PTR(gBattlescriptCurrInstr + 3); - if (gBattleMons[bank].type1 == type || gBattleMons[bank].type2 == type) + if (gBattleMons[battlerId].type1 == type || gBattleMons[battlerId].type2 == type) gBattlescriptCurrInstr = jump_loc; else gBattlescriptCurrInstr += 7; @@ -5310,7 +5317,7 @@ static void atk23_getexp(void) s32 viaExpShare = 0; u16* exp = &gBattleStruct->exp; - gBank1 = GetBattleBank(gBattlescriptCurrInstr[1]); + gBank1 = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); sentIn = gSentPokesToOpponent[(gBank1 & 2) >> 1]; switch (gBattleStruct->getexpStateTracker) @@ -5374,14 +5381,14 @@ static void atk23_getexp(void) } gBattleStruct->getexpStateTracker++; - gBattleStruct->expGetterID = 0; + gBattleStruct->expGetterMonId = 0; gBattleStruct->sentInPokes = sentIn; } // fall through case 2: // set exp value to the poke in expgetter_id and print message if (gBattleControllerExecFlags == 0) { - item = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_HELD_ITEM); + item = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HELD_ITEM); if (item == ITEM_ENIGMA_BERRY) holdEffect = gSaveBlock1.enigmaBerry.holdEffect; @@ -5394,7 +5401,7 @@ static void atk23_getexp(void) gBattleStruct->getexpStateTracker = 5; gBattleMoveDamage = 0; // used for exp } - else if (GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_LEVEL) == 100) + else if (GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL) == 100) { gBattleStruct->sentInPokes >>= 1; gBattleStruct->getexpStateTracker = 5; @@ -5406,11 +5413,11 @@ static void atk23_getexp(void) if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER) && gBattleMons[0].hp && !gBattleStruct->wildVictorySong) { BattleStopLowHpSound(); - PlayBGM(0x161); + PlayBGM(MUS_KACHI2); gBattleStruct->wildVictorySong++; } - if (GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_HP)) + if (GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP)) { if (gBattleStruct->sentInPokes & 1) gBattleMoveDamage = *exp; @@ -5424,7 +5431,7 @@ static void atk23_getexp(void) if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) gBattleMoveDamage = (gBattleMoveDamage * 150) / 100; - if (IsTradedMon(&gPlayerParty[gBattleStruct->expGetterID])) + if (IsTradedMon(&gPlayerParty[gBattleStruct->expGetterMonId])) { gBattleMoveDamage = (gBattleMoveDamage * 150) / 100; i = 0x14A; @@ -5437,28 +5444,28 @@ static void atk23_getexp(void) // get exp getter bank if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { - if (!(gBattlerPartyIndexes[2] != gBattleStruct->expGetterID) && !(gAbsentBattlerFlags & gBitTable[2])) - gBattleStruct->expGetterBank = 2; + if (!(gBattlerPartyIndexes[2] != gBattleStruct->expGetterMonId) && !(gAbsentBattlerFlags & gBitTable[2])) + gBattleStruct->expGetterBattlerId = 2; else { if (!(gAbsentBattlerFlags & gBitTable[0])) - gBattleStruct->expGetterBank = 0; + gBattleStruct->expGetterBattlerId = 0; else - gBattleStruct->expGetterBank = 2; + gBattleStruct->expGetterBattlerId = 2; } } else - gBattleStruct->expGetterBank = 0; + gBattleStruct->expGetterBattlerId = 0; - PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattleStruct->expGetterBank, gBattleStruct->expGetterID) + PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattleStruct->expGetterBattlerId, gBattleStruct->expGetterMonId) // buffer 'gained' or 'gained a boosted' PREPARE_STRING_BUFFER(gBattleTextBuff2, i) PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff3, 5, gBattleMoveDamage) - PrepareStringBattle(STRINGID_PKMNGAINEDEXP, gBattleStruct->expGetterBank); - MonGainEVs(&gPlayerParty[gBattleStruct->expGetterID], gBattleMons[gBank1].species); + PrepareStringBattle(STRINGID_PKMNGAINEDEXP, gBattleStruct->expGetterBattlerId); + MonGainEVs(&gPlayerParty[gBattleStruct->expGetterMonId], gBattleMons[gBank1].species); } gBattleStruct->sentInPokes >>= 1; gBattleStruct->getexpStateTracker++; @@ -5468,19 +5475,19 @@ static void atk23_getexp(void) case 3: // Set stats and give exp if (gBattleControllerExecFlags == 0) { - gBattleBufferB[gBattleStruct->expGetterBank][0] = 0; - if (GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_HP) && GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_LEVEL) != 100) + gBattleBufferB[gBattleStruct->expGetterBattlerId][0] = 0; + if (GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP) && GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL) != 100) { - gBattleResources_statsBeforeLvlUp->hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_MAX_HP); - gBattleResources_statsBeforeLvlUp->atk = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_ATK); - gBattleResources_statsBeforeLvlUp->def = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_DEF); - gBattleResources_statsBeforeLvlUp->spd = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPEED); - gBattleResources_statsBeforeLvlUp->spAtk = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPATK); - gBattleResources_statsBeforeLvlUp->spDef = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPDEF); + gBattleResources_statsBeforeLvlUp->hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP); + gBattleResources_statsBeforeLvlUp->atk = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK); + gBattleResources_statsBeforeLvlUp->def = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF); + gBattleResources_statsBeforeLvlUp->spd = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED); + gBattleResources_statsBeforeLvlUp->spAtk = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK); + gBattleResources_statsBeforeLvlUp->spDef = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPDEF); - gActiveBattler = gBattleStruct->expGetterBank; + gActiveBattler = gBattleStruct->expGetterBattlerId; - BtlController_EmitExpUpdate(0, gBattleStruct->expGetterID, gBattleMoveDamage); + BtlController_EmitExpUpdate(0, gBattleStruct->expGetterMonId, gBattleMoveDamage); MarkBattlerForControllerExec(gActiveBattler); } gBattleStruct->getexpStateTracker++; @@ -5489,49 +5496,49 @@ static void atk23_getexp(void) case 4: // lvl up if necessary if (gBattleControllerExecFlags == 0) { - gActiveBattler = gBattleStruct->expGetterBank; + gActiveBattler = gBattleStruct->expGetterBattlerId; if (gBattleBufferB[gActiveBattler][0] == CONTROLLER_TWORETURNVALUES && gBattleBufferB[gActiveBattler][1] == RET_VALUE_LEVELLED_UP) { - if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterID) + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId) HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); - PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBattler, gBattleStruct->expGetterID) + PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBattler, gBattleStruct->expGetterMonId) - PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 3, GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_LEVEL)) + PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 3, GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL)) BattleScriptPushCursor(); - gLeveledUpInBattle |= gBitTable[gBattleStruct->expGetterID]; + gLeveledUpInBattle |= gBitTable[gBattleStruct->expGetterMonId]; gBattlescriptCurrInstr = BattleScript_LevelUp; gBattleMoveDamage = (gBattleBufferB[gActiveBattler][2] | (gBattleBufferB[gActiveBattler][3] << 8)); - AdjustFriendship(&gPlayerParty[gBattleStruct->expGetterID], FRIENDSHIP_EVENT_GROW_LEVEL); + AdjustFriendship(&gPlayerParty[gBattleStruct->expGetterMonId], FRIENDSHIP_EVENT_GROW_LEVEL); // update battle mon structure after level up - if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterID && gBattleMons[0].hp) + if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId && gBattleMons[0].hp) { - gBattleMons[0].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_LEVEL); - gBattleMons[0].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_HP); - gBattleMons[0].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_MAX_HP); - gBattleMons[0].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_ATK); - gBattleMons[0].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_DEF); + gBattleMons[0].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL); + gBattleMons[0].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP); + gBattleMons[0].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP); + gBattleMons[0].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK); + gBattleMons[0].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF); // Why is this duplicated? - gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPEED); - gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPEED); - gBattleMons[0].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPATK); - gBattleMons[0].spDefense = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPDEF); + gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED); + gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED); + gBattleMons[0].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK); + gBattleMons[0].spDefense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPDEF); } // What is else if? - if (gBattlerPartyIndexes[2] == gBattleStruct->expGetterID && gBattleMons[2].hp && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + if (gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId && gBattleMons[2].hp && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) { - gBattleMons[2].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_LEVEL); - gBattleMons[2].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_HP); - gBattleMons[2].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_MAX_HP); - gBattleMons[2].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_ATK); - gBattleMons[2].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_DEF); + gBattleMons[2].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL); + gBattleMons[2].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP); + gBattleMons[2].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP); + gBattleMons[2].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK); + gBattleMons[2].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF); // Duplicated again, but this time there's no Sp Defense - gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPEED); - gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPEED); - gBattleMons[2].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPATK); + gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED); + gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED); + gBattleMons[2].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK); } } else @@ -5546,8 +5553,8 @@ static void atk23_getexp(void) gBattleStruct->getexpStateTracker = 3; else { - gBattleStruct->expGetterID++; - if (gBattleStruct->expGetterID <= 5) + gBattleStruct->expGetterMonId++; + if (gBattleStruct->expGetterMonId <= 5) gBattleStruct->getexpStateTracker = 2; // loop again else gBattleStruct->getexpStateTracker = 6; // we're done @@ -6209,7 +6216,7 @@ static void atk41_call(void) static void atk42_jumpiftype2(void) //u8 bank, u8 type, *ptr { - u8 bank = GetBattleBank(T1_READ_8(gBattlescriptCurrInstr + 1)); + u8 bank = GetBattlerForBattleScript(T1_READ_8(gBattlescriptCurrInstr + 1)); if (T1_READ_8(gBattlescriptCurrInstr + 2) == gBattleMons[bank].type1 || T1_READ_8(gBattlescriptCurrInstr + 2) == gBattleMons[bank].type2) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); @@ -6234,7 +6241,7 @@ static void atk45_playanimation(void) { const u16* argumentPtr; - gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]); + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); argumentPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3); if (gBattlescriptCurrInstr[2] == B_ANIM_STATS_CHANGE @@ -6276,7 +6283,7 @@ static void atk46_playanimation2(void) // animation Id is stored in the first po const u16* argumentPtr; const u8* animationIdPtr; - gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]); + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); animationIdPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2); argumentPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6); @@ -6345,7 +6352,7 @@ static void atk48_playstatchangeanimation(void) u32 stats_to_check; u8 arg3; - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); stats_to_check = T2_READ_8(gBattlescriptCurrInstr + 2); arg3 = T2_READ_8(gBattlescriptCurrInstr + 3); if (arg3 & 1) @@ -6437,7 +6444,7 @@ push {r4-r7,lr}\n\ ldr r0, [r5]\n\ ldrb r0, [r0, 0x1]\n\ str r3, [sp]\n\ - bl GetBattleBank\n\ + bl GetBattlerForBattleScript\n\ ldr r2, _08021674 @ =gActiveBattler\n\ strb r0, [r2]\n\ ldr r0, [r5]\n\ @@ -6991,14 +6998,14 @@ static void atk4A_typecalc2(void) { u8 flags = 0; int i = 0; - u8 move_type = gBattleMoves[gCurrentMove].type; + u8 moveType = gBattleMoves[gCurrentMove].type; - if (gBattleMons[gBattlerTarget].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) + if (gBattleMons[gBattlerTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND) { gLastUsedAbility = gBattleMons[gBattlerTarget].ability; gMoveResultFlags |= (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE); gLastLandedMoves[gBattlerTarget] = 0; - gBattleCommunication[6] = move_type; + gBattleCommunication[6] = moveType; RecordAbilityBattle(gBattlerTarget, gLastUsedAbility); } else @@ -7011,7 +7018,7 @@ static void atk4A_typecalc2(void) else {i += 3; continue;} } - if (gTypeEffectiveness[i] == move_type) + if (gTypeEffectiveness[i] == moveType) { //check type1 if (gTypeEffectiveness[i + 1] == gBattleMons[gBattlerTarget].type1) @@ -7078,7 +7085,7 @@ static void atk4C_getswitchedmondata(void) if (gBattleControllerExecFlags) return; - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); gBattlerPartyIndexes[gActiveBattler] = ewram16068arr(gActiveBattler); @@ -7096,7 +7103,7 @@ static void atk4D_switchindataupdate(void) if (gBattleControllerExecFlags) return; - gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]); + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); oldData = gBattleMons[gActiveBattler]; monData = (u8*)(&gBattleMons[gActiveBattler]); @@ -7139,7 +7146,7 @@ static void atk4E_switchinanim(void) if (gBattleControllerExecFlags) return; - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); if (GetBattlerSide(gActiveBattler) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER))) { GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), 2); @@ -7156,7 +7163,7 @@ static void atk4F_jumpifcantswitch(void) register struct Pokemon *party; u8 r7; //0x80 byte is used as a way of telling the function whether to not check status2/status3 - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1) & 0x7F); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1) & 0x7F); if (!(T2_READ_8(gBattlescriptCurrInstr + 1) & 0x80) && ((gBattleMons[gActiveBattler].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)) || (gStatuses3[gActiveBattler] & STATUS3_ROOTED))) @@ -8108,7 +8115,7 @@ _08023170:\n\ _0802317C:\n\ movs r0, 0x7F\n\ ands r0, r2\n\ - bl GetBattleBank\n\ + bl GetBattlerForBattleScript\n\ lsls r0, 24\n\ lsrs r7, r0, 24\n\ ldr r1, _080231A4 @ =gSpecialStatuses\n\ @@ -8304,7 +8311,7 @@ static void atk51_switchhandleorder(void) if (gBattleControllerExecFlags) return; - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); switch (T2_READ_8(gBattlescriptCurrInstr + 2)) { case 0: @@ -8353,17 +8360,17 @@ static void atk52_switchineffects(void) { int i; - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); sub_80157C4(gActiveBattler); gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler)); gSpecialStatuses[gActiveBattler].flag40 = 0; - if (!(gSideAffecting[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES_DAMAGED) && (gSideAffecting[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES) + if (!(gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES_DAMAGED) && (gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES) && gBattleMons[gActiveBattler].type1 != TYPE_FLYING && gBattleMons[gActiveBattler].type2 != TYPE_FLYING && gBattleMons[gActiveBattler].ability != ABILITY_LEVITATE) { u8 spikesDmg; - gSideAffecting[GetBattlerSide(gActiveBattler)] |= SIDE_STATUS_SPIKES_DAMAGED; + gSideStatuses[GetBattlerSide(gActiveBattler)] |= SIDE_STATUS_SPIKES_DAMAGED; spikesDmg = (5 - gSideTimers[GetBattlerSide(gActiveBattler)].spikesAmount) * 2; gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / (spikesDmg); @@ -8389,11 +8396,11 @@ static void atk52_switchineffects(void) if (AbilityBattleEffects(0, gActiveBattler, 0, 0, 0) == 0 && ItemBattleEffects(0, gActiveBattler, 0) == 0) { - gSideAffecting[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED); + gSideStatuses[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED); for (i = 0; i < gBattlersCount; i++) { - if (gBanksByTurnOrder[i] == gActiveBattler) + if (gBattlerByTurnOrder[i] == gActiveBattler) gActionsByTurnOrder[i] = 0xC; } @@ -8450,7 +8457,7 @@ static void atk55_fanfare(void) static void atk56_playfaintcry(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); BtlController_EmitFaintingCry(0); MarkBattlerForControllerExec(gActiveBattler); gBattlescriptCurrInstr += 2; @@ -8466,7 +8473,7 @@ static void atk57(void) static void atk58_returntoball(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); BtlController_EmitReturnMonToBall(0, 1); MarkBattlerForControllerExec(gActiveBattler); gBattlescriptCurrInstr += 2; @@ -8477,9 +8484,9 @@ void atk59_handlelearnnewmove(void) u8* loc1 = T1_READ_PTR(gBattlescriptCurrInstr + 1); u8* loc2 = T1_READ_PTR(gBattlescriptCurrInstr + 5); - u16 ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterID], T2_READ_8(gBattlescriptCurrInstr + 9)); + u16 ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], T2_READ_8(gBattlescriptCurrInstr + 9)); while (ret == 0xFFFE) - ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterID], 0); + ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], 0); if (ret == 0) { @@ -8492,12 +8499,12 @@ void atk59_handlelearnnewmove(void) else { gActiveBattler = GetBattlerAtPosition(0); - if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterID && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED)) + if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED)) GiveMoveToBattleMon(&gBattleMons[gActiveBattler], ret); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) //what is else if { gActiveBattler = GetBattlerAtPosition(2); - if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterID && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED)) + if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED)) GiveMoveToBattleMon(&gBattleMons[gActiveBattler], ret); } gBattlescriptCurrInstr = loc1; @@ -8566,7 +8573,7 @@ static void atk5A_yesnoboxlearnmove(void) case 2: if (!gPaletteFade.active) { - ShowSelectMovePokemonSummaryScreen(gPlayerParty, gBattleStruct->expGetterID, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn); + ShowSelectMovePokemonSummaryScreen(gPlayerParty, gBattleStruct->expGetterMonId, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn); gBattleStruct->atk5A_StateTracker++; } break; @@ -8580,7 +8587,7 @@ static void atk5A_yesnoboxlearnmove(void) } else { - u16 move = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_MOVE1 + move_pos); + u16 move = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MOVE1 + move_pos); if (IsHMMove2(move)) { PrepareStringBattle(0x13F, gActiveBattler); @@ -8600,16 +8607,16 @@ static void atk5A_yesnoboxlearnmove(void) ptr += 4; } ptr[0] = 0xFF; - RemoveMonPPBonus(&gPlayerParty[gBattleStruct->expGetterID], move_pos); - SetMonMoveSlot(&gPlayerParty[gBattleStruct->expGetterID], gMoveToLearn, move_pos); - if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterID && !(gBattleMons[0].status2 & STATUS2_TRANSFORMED) - && !(gDisableStructs[0].unk18_b & gBitTable[move_pos])) + RemoveMonPPBonus(&gPlayerParty[gBattleStruct->expGetterMonId], move_pos); + SetMonMoveSlot(&gPlayerParty[gBattleStruct->expGetterMonId], gMoveToLearn, move_pos); + if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId && !(gBattleMons[0].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[0].mimickedMoves & gBitTable[move_pos])) { RemoveBattleMonPPBonus(&gBattleMons[0], move_pos); SetBattleMonMoveSlot(&gBattleMons[0], gMoveToLearn, move_pos); } - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlerPartyIndexes[2] == gBattleStruct->expGetterID && !(gBattleMons[2].status2 & STATUS2_TRANSFORMED) - && !(gDisableStructs[2].unk18_b & gBitTable[move_pos])) + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId && !(gBattleMons[2].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[2].mimickedMoves & gBitTable[move_pos])) { RemoveBattleMonPPBonus(&gBattleMons[2], move_pos); SetBattleMonMoveSlot(&gBattleMons[2], gMoveToLearn, move_pos); @@ -8676,7 +8683,7 @@ static void atk5B_yesnoboxstoplearningmove(void) static void atk5C_hitanimation(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) gBattlescriptCurrInstr += 2; else if (!(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE) || !(gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE) || gDisableStructs[gActiveBattler].substituteHP == 0) @@ -9017,9 +9024,9 @@ static void atk5D_getmoneyreward(void) } */ -static void atk5E_8025A70(void) +static void atk5E(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); switch (gBattleCommunication[0]) { case 0: @@ -9043,7 +9050,7 @@ static void atk5E_8025A70(void) } } -static void atk5F_8025B24(void) +static void atk5F_swapattackerwithtarget(void) { gActiveBattler = gBattlerAttacker; gBattlerAttacker = gBattlerTarget; @@ -9073,7 +9080,7 @@ static void atk61_drawpartystatussummary(void) if (gBattleControllerExecFlags) return; - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); if (GetBattlerSide(gActiveBattler) == 0) party = gPlayerParty; else @@ -9097,9 +9104,9 @@ static void atk61_drawpartystatussummary(void) gBattlescriptCurrInstr += 2; } -static void atk62_08025C6C(void) +static void atk62_hidepartystatussummary(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); BtlController_EmitHidePartyStatusSummary(0); MarkBattlerForControllerExec(gActiveBattler); gBattlescriptCurrInstr += 2; @@ -9118,7 +9125,7 @@ static void atk64_statusanimation(void) { if (gBattleControllerExecFlags == 0) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBattler].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) { BtlController_EmitStatusAnimation(0, 0, gBattleMons[gActiveBattler].status1); @@ -9133,7 +9140,7 @@ static void atk65_status2animation(void) if (gBattleControllerExecFlags == 0) { u32 possible_to_anim; - gActiveBattler = GetBattleBank(T1_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T1_READ_8(gBattlescriptCurrInstr + 1)); possible_to_anim = T1_READ_32(gBattlescriptCurrInstr + 2); if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBattler].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) { @@ -9149,7 +9156,7 @@ static void atk66_chosenstatusanimation(void) if (gBattleControllerExecFlags == 0) { u32 status; - gActiveBattler = GetBattleBank(T1_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T1_READ_8(gBattlescriptCurrInstr + 1)); status = T1_READ_32(gBattlescriptCurrInstr + 3); if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBattler].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) { @@ -9214,20 +9221,20 @@ static void atk68_cancelallactions(void) static void atk69_adjustsetdamage(void) //literally a copy of atk07 except theres no rand dmg modifier... { - u8 hold_effect, quality; + u8 holdEffect, param; if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY) - hold_effect = gEnigmaBerries[gBattlerTarget].holdEffect, quality = gEnigmaBerries[gBattlerTarget].holdEffectParam; + holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect, param = gEnigmaBerries[gBattlerTarget].holdEffectParam; else { - hold_effect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item); - quality = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item); + holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item); + param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item); } gPotentialItemEffectBattler = gBattlerTarget; - if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality) + if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param) { - RecordItemBattle(gBattlerTarget, hold_effect); + RecordItemEffectBattle(gBattlerTarget, holdEffect); gSpecialStatuses[gBattlerTarget].focusBanded = 1; } if (gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE) @@ -9257,7 +9264,7 @@ static void atk69_adjustsetdamage(void) //literally a copy of atk07 except there void atk6A_removeitem(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); USED_HELD_ITEMS(gActiveBattler) = gBattleMons[gActiveBattler].item; gBattleMons[gActiveBattler].item = 0; @@ -9716,7 +9723,7 @@ static void atk6E_setatktoplayer0(void) static void atk6F_makevisible(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); BtlController_EmitSpriteInvisibility(0, 0); MarkBattlerForControllerExec(gActiveBattler); gBattlescriptCurrInstr += 2; @@ -9724,7 +9731,7 @@ static void atk6F_makevisible(void) static void atk70_recordlastability(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); RecordAbilityBattle(gActiveBattler, gLastUsedAbility); gBattlescriptCurrInstr += 1; //buggy, should be += 2, one byte for command, one byte for argument... } @@ -9758,7 +9765,7 @@ static void atk73_hpthresholds(void) s32 result; if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); opposing_bank = gActiveBattler ^ 1; result = gBattleMons[opposing_bank].hp * 100 / gBattleMons[opposing_bank].maxHP; @@ -9785,7 +9792,7 @@ static void atk74_hpthresholds2(void) s32 result; if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); opposing_bank = gActiveBattler ^ 1; hp_switchout = ewram160BCarr(GetBattlerSide(opposing_bank)); //gBattleStruct->HP_OnSwitchout[GetBattlerSide(opposing_bank)]; result = (hp_switchout - gBattleMons[opposing_bank].hp) * 100 / hp_switchout; @@ -9812,7 +9819,7 @@ static void atk75_useitemonopponent(void) static void atk76_various(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); switch (T2_READ_8(gBattlescriptCurrInstr + 2)) { case 0: @@ -9849,9 +9856,9 @@ static void atk76_various(void) { int i; u16* choiced_move; - if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterID) + if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId) goto ACTIVE_0; - if (gBattlerPartyIndexes[2] != gBattleStruct->expGetterID) + if (gBattlerPartyIndexes[2] != gBattleStruct->expGetterMonId) break; if (gBattlerPartyIndexes[0] == gBattlerPartyIndexes[2]) { @@ -10061,14 +10068,14 @@ static void atk7D_setrain(void) static void atk7E_setreflect(void) { - if (gSideAffecting[GetBattlerPosition(gBattlerAttacker) & 1] & SIDE_STATUS_REFLECT) + if (gSideStatuses[GetBattlerPosition(gBattlerAttacker) & 1] & SIDE_STATUS_REFLECT) { gMoveResultFlags |= MOVE_RESULT_MISSED; gBattleCommunication[MULTISTRING_CHOOSER] = 0; } else { - gSideAffecting[GetBattlerPosition(gBattlerAttacker) & 1] |= SIDE_STATUS_REFLECT; + gSideStatuses[GetBattlerPosition(gBattlerAttacker) & 1] |= SIDE_STATUS_REFLECT; gSideTimers[GetBattlerPosition(gBattlerAttacker) & 1].reflectTimer = 5; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMons(1) == 2) gBattleCommunication[MULTISTRING_CHOOSER] = 2; @@ -10231,7 +10238,7 @@ static void atk86_stockpiletobasedamage(void) if (gBattleCommunication[6] != 1) { gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBattlerAttacker], &gBattleMons[gBattlerTarget], gCurrentMove, - gSideAffecting[GetBattlerPosition(gBattlerTarget) & 1], 0, + gSideStatuses[GetBattlerPosition(gBattlerTarget) & 1], 0, 0, gBattlerAttacker, gBattlerTarget) * gDisableStructs[gBattlerAttacker].stockpileCounter; gBattleStruct->animTurn = gDisableStructs[gBattlerAttacker].stockpileCounter; @@ -10626,7 +10633,7 @@ static void atk90_tryconversiontypechange(void) //randomly changes user's type to one of its moves' type u8 valid_moves = 0; u8 checked_move; - u8 move_type; + u8 moveType; while (valid_moves < 4) { if (gBattleMons[gBattlerAttacker].moves[valid_moves] == 0) @@ -10636,15 +10643,15 @@ static void atk90_tryconversiontypechange(void) for (checked_move = 0; checked_move < valid_moves; checked_move++) { - move_type = gBattleMoves[gBattleMons[gBattlerAttacker].moves[checked_move]].type; - if (move_type == TYPE_MYSTERY) + moveType = gBattleMoves[gBattleMons[gBattlerAttacker].moves[checked_move]].type; + if (moveType == TYPE_MYSTERY) { if (gBattleMons[gBattlerAttacker].type1 == TYPE_GHOST || gBattleMons[gBattlerAttacker].type2 == TYPE_GHOST) - move_type = TYPE_GHOST; + moveType = TYPE_GHOST; else - move_type = TYPE_NORMAL; + moveType = TYPE_NORMAL; } - if (move_type != gBattleMons[gBattlerAttacker].type1 && move_type != gBattleMons[gBattlerAttacker].type2) + if (moveType != gBattleMons[gBattlerAttacker].type1 && moveType != gBattleMons[gBattlerAttacker].type2) break; } @@ -10659,22 +10666,22 @@ static void atk90_tryconversiontypechange(void) while ((checked_move = Random() & 3) >= valid_moves); - move_type = gBattleMoves[gBattleMons[gBattlerAttacker].moves[checked_move]].type; - if (move_type == TYPE_MYSTERY) + moveType = gBattleMoves[gBattleMons[gBattlerAttacker].moves[checked_move]].type; + if (moveType == TYPE_MYSTERY) { if (gBattleMons[gBattlerAttacker].type1 == TYPE_GHOST || gBattleMons[gBattlerAttacker].type2 == TYPE_GHOST) - move_type = TYPE_GHOST; + moveType = TYPE_GHOST; else - move_type = TYPE_NORMAL; + moveType = TYPE_NORMAL; } - } while (move_type == gBattleMons[gBattlerAttacker].type1 || move_type == gBattleMons[gBattlerAttacker].type2); + } while (moveType == gBattleMons[gBattlerAttacker].type1 || moveType == gBattleMons[gBattlerAttacker].type2); - gBattleMons[gBattlerAttacker].type1 = move_type; - gBattleMons[gBattlerAttacker].type2 = move_type; + gBattleMons[gBattlerAttacker].type1 = moveType; + gBattleMons[gBattlerAttacker].type2 = moveType; gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 3; - gBattleTextBuff1[2] = move_type; + gBattleTextBuff1[2] = moveType; gBattleTextBuff1[3] = 0xFF; gBattlescriptCurrInstr += 5; @@ -10702,14 +10709,14 @@ static void atk91_givepaydaymoney(void) static void atk92_setlightscreen(void) { - if (gSideAffecting[GetBattlerPosition(gBattlerAttacker) & 1] & SIDE_STATUS_LIGHTSCREEN) + if (gSideStatuses[GetBattlerPosition(gBattlerAttacker) & 1] & SIDE_STATUS_LIGHTSCREEN) { gMoveResultFlags |= MOVE_RESULT_MISSED; gBattleCommunication[MULTISTRING_CHOOSER] = 0; } else { - gSideAffecting[GetBattlerPosition(gBattlerAttacker) & 1] |= SIDE_STATUS_LIGHTSCREEN; + gSideStatuses[GetBattlerPosition(gBattlerAttacker) & 1] |= SIDE_STATUS_LIGHTSCREEN; gSideTimers[GetBattlerPosition(gBattlerAttacker) & 1].lightscreenTimer = 5; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMons(1) == 2) gBattleCommunication[MULTISTRING_CHOOSER] = 4; @@ -10723,18 +10730,18 @@ static void atk92_setlightscreen(void) static void atk93_tryKO(void) { if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY) - hold_effect = gEnigmaBerries[gBattlerTarget].holdEffect, quality = gEnigmaBerries[gBattlerTarget].holdEffectParam; + holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect, param = gEnigmaBerries[gBattlerTarget].holdEffectParam; else { - hold_effect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item); - quality = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item); + holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item); + param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item); } gPotentialItemEffectBattler = gBattlerTarget; - if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality) + if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param) { - RecordItemBattle(gBattlerTarget, hold_effect); + RecordItemEffectBattle(gBattlerTarget, holdEffect); gSpecialStatuses[gBattlerTarget].focusBanded = 1; } @@ -10757,7 +10764,7 @@ static void atk93_tryKO(void) } else { - if (gDisableStructs[gBattlerTarget].bankWithSureHit != gBattlerAttacker || gBattleMons[gBattlerAttacker].level < gBattleMons[gBattlerTarget].level) + if (gDisableStructs[gBattlerTarget].battlerWithSureHit != gBattlerAttacker || gBattleMons[gBattlerAttacker].level < gBattleMons[gBattlerTarget].level) { } @@ -10834,7 +10841,7 @@ _08026BCE:\n\ bcs _08026C0C\n\ ldrb r0, [r5]\n\ movs r1, 0x27\n\ - bl RecordItemBattle\n\ + bl RecordItemEffectBattle\n\ ldr r2, _08026C54 @ =gSpecialStatuses\n\ ldrb r1, [r5]\n\ lsls r0, r1, 2\n\ @@ -11241,7 +11248,7 @@ static void atk98_updatestatusicon(void) if (T2_READ_8(gBattlescriptCurrInstr + 1) != 4) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); BtlController_EmitStatusIconUpdate(0, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2); MarkBattlerForControllerExec(gActiveBattler); gBattlescriptCurrInstr += 2; @@ -11277,7 +11284,7 @@ static void atk99_setmist(void) else { gSideTimers[GetBattlerPosition(gBattlerAttacker) & 1].mistTimer = 5; - gSideAffecting[GetBattlerPosition(gBattlerAttacker) & 1] |= SIDE_STATUS_MIST; + gSideStatuses[GetBattlerPosition(gBattlerAttacker) & 1] |= SIDE_STATUS_MIST; gBattleCommunication[MULTISTRING_CHOOSER] = 0; } gBattlescriptCurrInstr++; @@ -11315,7 +11322,7 @@ static void atk9B_transformdataexecution(void) gDisableStructs[gBattlerAttacker].disabledMove = 0; gDisableStructs[gBattlerAttacker].disableTimer1 = 0; gDisableStructs[gBattlerAttacker].transformedMonPersonality = gBattleMons[gBattlerTarget].personality; - gDisableStructs[gBattlerAttacker].unk18_b = 0; + gDisableStructs[gBattlerAttacker].mimickedMoves = 0; gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 6; @@ -11405,7 +11412,7 @@ static void atk9D_mimicattackcopy(void) gBattleTextBuff1[3] = uBYTE1_16(gLastUsedMove[gBattlerTarget]); gBattleTextBuff1[4] = 0xFF; - gDisableStructs[gBattlerAttacker].unk18_b |= gBitTable[gCurrMovePos]; + gDisableStructs[gBattlerAttacker].mimickedMoves |= gBitTable[gCurrMovePos]; gBattlescriptCurrInstr += 5; } else @@ -12139,7 +12146,7 @@ static void atkA7_setalwayshitflag(void) { gStatuses3[gBattlerTarget] &= ~(STATUS3_ALWAYS_HITS); gStatuses3[gBattlerTarget] |= 0x10; - gDisableStructs[gBattlerTarget].bankWithSureHit = gBattlerAttacker; + gDisableStructs[gBattlerTarget].battlerWithSureHit = gBattlerAttacker; gBattlescriptCurrInstr++; } @@ -12317,7 +12324,7 @@ static void atkAD_tryspiteppreduce(void) gBattleMons[gBattlerTarget].pp[i] -= lost_pp; gActiveBattler = gBattlerTarget; - if (!(gDisableStructs[gActiveBattler].unk18_b & gBitTable[i]) + if (!(gDisableStructs[gActiveBattler].mimickedMoves & gBitTable[i]) && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED)) { BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBattler].pp[i]); @@ -12435,7 +12442,7 @@ static void atkB0_trysetspikes(void) } else { - gSideAffecting[side] |= SIDE_STATUS_SPIKES; + gSideStatuses[side] |= SIDE_STATUS_SPIKES; gSideTimers[side].spikesAmount++; gBattlescriptCurrInstr += 5; } @@ -12569,14 +12576,14 @@ static void atkB7_presentdamagecalculation(void) static void atkB8_setsafeguard(void) { - if (gSideAffecting[GetBattlerPosition(gBattlerAttacker) & 1] & SIDE_STATUS_SAFEGUARD) + if (gSideStatuses[GetBattlerPosition(gBattlerAttacker) & 1] & SIDE_STATUS_SAFEGUARD) { gMoveResultFlags |= MOVE_RESULT_MISSED; gBattleCommunication[MULTISTRING_CHOOSER] = 0; } else { - gSideAffecting[GetBattlerPosition(gBattlerAttacker) & 1] |= SIDE_STATUS_SAFEGUARD; + gSideStatuses[GetBattlerPosition(gBattlerAttacker) & 1] |= SIDE_STATUS_SAFEGUARD; gSideTimers[GetBattlerPosition(gBattlerAttacker) & 1].safeguardTimer = 5; gBattleCommunication[MULTISTRING_CHOOSER] = 5; } @@ -12662,7 +12669,7 @@ static void atkBA_jumpifnopursuitswitchdmg(void) int i; for (i = 0; i < gBattlersCount; i++) { - if (gBanksByTurnOrder[i] == gBattlerTarget) + if (gBattlerByTurnOrder[i] == gBattlerTarget) gActionsByTurnOrder[i] = 11; } gCurrentMove = MOVE_PURSUIT; @@ -12741,9 +12748,9 @@ static void atkBE_rapidspinfree(void) //rapid spin BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_LeechSeedFree; } - else if (gSideAffecting[GetBattlerSide(gBattlerAttacker)] & SIDE_STATUS_SPIKES) + else if (gSideStatuses[GetBattlerSide(gBattlerAttacker)] & SIDE_STATUS_SPIKES) { - gSideAffecting[GetBattlerSide(gBattlerAttacker)] &= ~(SIDE_STATUS_SPIKES); + gSideStatuses[GetBattlerSide(gBattlerAttacker)] &= ~(SIDE_STATUS_SPIKES); gSideTimers[GetBattlerSide(gBattlerAttacker)].spikesAmount = 0; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SpikesFree; @@ -12830,7 +12837,7 @@ static void atkC3_trysetfutureattack(void) gWishFutureKnock.futureSightAttacker[gBattlerTarget] = gBattlerAttacker; gWishFutureKnock.futureSightCounter[gBattlerTarget] = 3; gWishFutureKnock.futureSightDmg[gBattlerTarget] = CalculateBaseDamage(&gBattleMons[gBattlerAttacker], &gBattleMons[gBattlerTarget], gCurrentMove, - gSideAffecting[GetBattlerPosition(gBattlerTarget) & 1], 0, + gSideStatuses[GetBattlerPosition(gBattlerTarget) & 1], 0, 0, gBattlerAttacker, gBattlerTarget); if (gProtectStructs[gBattlerAttacker].helpingHand) @@ -13749,7 +13756,7 @@ static void atkDA_tryswapabilities(void) } } -static void atkDB_tryimprision(void) +static void atkDB_tryimprison(void) { u8 r8 = 0; if ((gStatuses3[gBattlerAttacker] & STATUS3_IMPRISONED_OTHERS)) @@ -13816,7 +13823,7 @@ static void atkDD_weightdamagecalculation(void) } #ifdef NONMATCHING -static void atkDE_asistattackselect(void) +static void atkDE_assistattackselect(void) { u32 chooseable_moves_no = 0; struct Pokemon* party; @@ -13871,7 +13878,7 @@ static void atkDE_asistattackselect(void) #else NAKED -static void atkDE_asistattackselect(void) +static void atkDE_assistattackselect(void) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -14109,7 +14116,7 @@ static void atkE1_trygetintimidatetarget(void) static void atkE2_switchoutabilities(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); switch (gBattleMons[gActiveBattler].ability) { case ABILITY_NATURAL_CURE: @@ -14123,7 +14130,7 @@ static void atkE2_switchoutabilities(void) static void atkE3_jumpifhasnohp(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); if (gBattleMons[gActiveBattler].hp == 0) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2); else @@ -14312,7 +14319,7 @@ static void atkEC_pursuitrelated(void) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); } -static void atkED_snatchsetbanks(void) +static void atkEF_snatchsetbattlers(void) { gEffectBattler = gBattlerAttacker; if (gBattlerAttacker == gBattlerTarget) @@ -14328,8 +14335,8 @@ static void atkEE_removelightscreenreflect(void) //brick break u8 side = GetBattlerSide(gBattlerAttacker) ^ 1; if (gSideTimers[side].reflectTimer || gSideTimers[side].lightscreenTimer) { - gSideAffecting[side] &= ~(SIDE_STATUS_REFLECT); - gSideAffecting[side] &= ~(SIDE_STATUS_LIGHTSCREEN); + gSideStatuses[side] &= ~(SIDE_STATUS_REFLECT); + gSideStatuses[side] &= ~(SIDE_STATUS_LIGHTSCREEN); gSideTimers[side].reflectTimer = 0; gSideTimers[side].lightscreenTimer = 0; gBattleStruct->animTurn = 1; diff --git a/src/battle_util.c b/src/battle_util.c index 97ae63574..bda5c2e9a 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -41,8 +41,8 @@ extern u8 gBattlersCount; extern u32 gStatuses3[4]; extern u8 gBattlerAttacker; extern u8 gBattlerTarget; -extern u8 gBanksByTurnOrder[4]; -extern u16 gSideAffecting[2]; +extern u8 gBattlerByTurnOrder[4]; +extern u16 gSideStatuses[2]; extern u16 gBattleWeather; extern void (*gBattleMainFunc)(void); extern u8 gAbsentBattlerFlags; @@ -54,7 +54,7 @@ extern s32 gBattleMoveDamage; extern u16 gBattlerPartyIndexes[4]; extern u16 gChosenMovesByBanks[4]; extern s32 gTakenDmg[4]; -extern u8 gTakenDmgBanks[4]; +extern u8 gTakenDmgByBattler[4]; extern u8 gMoveResultFlags; extern u8 gLastUsedAbility; extern u8 gBattleTextBuff2[]; @@ -90,7 +90,7 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget); u8 sub_803FC34(u8 bank); u16 sub_803FBFC(u8 a); void RecordAbilityBattle(u8 bank, u8 ability); -void RecordItemBattle(u8 bank, u8 holdEffect); +void RecordItemEffectBattle(u8 bank, u8 holdEffect); s8 GetPokeFlavourRelation(u32 pid, u8 flavor); extern u8 BattleScript_MoveSelectionDisabledMove[]; @@ -208,12 +208,12 @@ extern u8 gUnknown_081D99A0[]; //disobedient, hits itself #define MULTISTRING_CHOOSER 0x5 #define MSG_DISPLAY 0x7 -u8 GetBattleBank(u8 caseId) +u8 GetBattlerForBattleScript(u8 caseId) { u8 ret = 0; switch (caseId) { - case BS_GET_TARGET: + case BS_TARGET: ret = gBattlerTarget; break; case BS_GET_ATTACKER: @@ -258,7 +258,7 @@ void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move) gBattleMons[bankAtk].pp[i]--; if (!(gBattleMons[bankAtk].status2 & STATUS2_TRANSFORMED) - && !(gDisableStructs[bankAtk].unk18_b & gBitTable[i])) + && !(gDisableStructs[bankAtk].mimickedMoves & gBitTable[i])) { gActiveBattler = bankAtk; BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBattler].pp[i]); @@ -292,7 +292,7 @@ void PressurePPLoseOnUsingImprision(u8 bankAtk) if (imprisionPos != 4 && !(gBattleMons[bankAtk].status2 & STATUS2_TRANSFORMED) - && !(gDisableStructs[bankAtk].unk18_b & gBitTable[imprisionPos])) + && !(gDisableStructs[bankAtk].mimickedMoves & gBitTable[imprisionPos])) { gActiveBattler = bankAtk; BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + imprisionPos, 0, 1, &gBattleMons[gActiveBattler].pp[imprisionPos]); @@ -325,7 +325,7 @@ void PressurePPLoseOnUsingPerishSong(u8 bankAtk) if (perishSongPos != 4 && !(gBattleMons[bankAtk].status2 & STATUS2_TRANSFORMED) - && !(gDisableStructs[bankAtk].unk18_b & gBitTable[perishSongPos])) + && !(gDisableStructs[bankAtk].mimickedMoves & gBitTable[perishSongPos])) { gActiveBattler = bankAtk; BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + perishSongPos, 0, 1, &gBattleMons[gActiveBattler].pp[perishSongPos]); @@ -623,14 +623,14 @@ u8 UpdateTurnCounters(void) case 0: for (i = 0; i < gBattlersCount; i++) { - gBanksByTurnOrder[i] = i; + gBattlerByTurnOrder[i] = i; } for (i = 0; i < gBattlersCount - 1; i++) { s32 j; for (j = i + 1; j < gBattlersCount; j++) { - if (GetWhoStrikesFirst(gBanksByTurnOrder[i], gBanksByTurnOrder[j], 0)) + if (GetWhoStrikesFirst(gBattlerByTurnOrder[i], gBattlerByTurnOrder[j], 0)) SwapTurnOrder(i, j); } } @@ -641,12 +641,12 @@ u8 UpdateTurnCounters(void) { gActiveBattler = gBattlerAttacker = sideBank = gBattleStruct->turnSideTracker; - if (gSideAffecting[sideBank] & SIDE_STATUS_REFLECT) + if (gSideStatuses[sideBank] & SIDE_STATUS_REFLECT) { if (--gSideTimers[sideBank].reflectTimer == 0) { - gSideAffecting[sideBank] &= ~SIDE_STATUS_REFLECT; + gSideStatuses[sideBank] &= ~SIDE_STATUS_REFLECT; BattleScriptExecute(BattleScript_SideStatusWoreOff); gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 2; @@ -670,11 +670,11 @@ u8 UpdateTurnCounters(void) while (gBattleStruct->turnSideTracker < 2) { gActiveBattler = gBattlerAttacker = sideBank = gBattleStruct->turnSideTracker; - if (gSideAffecting[sideBank] & SIDE_STATUS_LIGHTSCREEN) + if (gSideStatuses[sideBank] & SIDE_STATUS_LIGHTSCREEN) { if (--gSideTimers[sideBank].lightscreenTimer == 0) { - gSideAffecting[sideBank] &= ~SIDE_STATUS_LIGHTSCREEN; + gSideStatuses[sideBank] &= ~SIDE_STATUS_LIGHTSCREEN; BattleScriptExecute(BattleScript_SideStatusWoreOff); gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; gBattleTextBuff1[0] = 0xFD; @@ -701,7 +701,7 @@ u8 UpdateTurnCounters(void) gActiveBattler = gBattlerAttacker = sideBank = gBattleStruct->turnSideTracker; if (gSideTimers[sideBank].mistTimer && --gSideTimers[sideBank].mistTimer == 0) { - gSideAffecting[sideBank] &= ~SIDE_STATUS_MIST; + gSideStatuses[sideBank] &= ~SIDE_STATUS_MIST; BattleScriptExecute(BattleScript_SideStatusWoreOff); gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; gBattleTextBuff1[0] = 0xFD; @@ -725,11 +725,11 @@ u8 UpdateTurnCounters(void) while (gBattleStruct->turnSideTracker < 2) { gActiveBattler = gBattlerAttacker = sideBank = gBattleStruct->turnSideTracker; - if (gSideAffecting[sideBank] & SIDE_STATUS_SAFEGUARD) + if (gSideStatuses[sideBank] & SIDE_STATUS_SAFEGUARD) { if (--gSideTimers[sideBank].safeguardTimer == 0) { - gSideAffecting[sideBank] &= ~SIDE_STATUS_SAFEGUARD; + gSideStatuses[sideBank] &= ~SIDE_STATUS_SAFEGUARD; BattleScriptExecute(BattleScript_SafeguardEnds); effect++; } @@ -747,7 +747,7 @@ u8 UpdateTurnCounters(void) case 5: while (gBattleStruct->turnSideTracker < gBattlersCount) { - gActiveBattler = gBanksByTurnOrder[gBattleStruct->turnSideTracker]; + gActiveBattler = gBattlerByTurnOrder[gBattleStruct->turnSideTracker]; if (gWishFutureKnock.wishCounter[gActiveBattler] && --gWishFutureKnock.wishCounter[gActiveBattler] == 0 && gBattleMons[gActiveBattler].hp) { gBattlerTarget = gActiveBattler; @@ -857,7 +857,7 @@ u8 TurnBasedEffects(void) gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20); while (gBattleStruct->turnEffectsBank < gBattlersCount && gBattleStruct->turnEffectsTracker <= TURNBASED_MAX_CASE) { - gActiveBattler = gBattlerAttacker = gBanksByTurnOrder[gBattleStruct->turnEffectsBank]; + gActiveBattler = gBattlerAttacker = gBattlerByTurnOrder[gBattleStruct->turnEffectsBank]; if (gAbsentBattlerFlags & gBitTable[gActiveBattler]) { gBattleStruct->turnEffectsBank++; @@ -1199,7 +1199,7 @@ bool8 HandleWishPerishSongOnTurnEnd(void) case 1: // perish song while (gBattleStruct->sub80170DC_Bank < gBattlersCount) { - gActiveBattler = gBattlerAttacker = gBanksByTurnOrder[gBattleStruct->sub80170DC_Bank]; + gActiveBattler = gBattlerAttacker = gBattlerByTurnOrder[gBattleStruct->sub80170DC_Bank]; if (gAbsentBattlerFlags & gBitTable[gActiveBattler]) gBattleStruct->sub80170DC_Bank++; else @@ -1546,7 +1546,7 @@ u8 AtkCanceller_UnableToUseMove(void) { gCurrentMove = MOVE_BIDE; *bideDmg = gTakenDmg[gBattlerAttacker] * 2; - gBattlerTarget = gTakenDmgBanks[gBattlerAttacker]; + gBattlerTarget = gTakenDmgByBattler[gBattlerAttacker]; if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]) gBattlerTarget = GetMoveTarget(MOVE_BIDE, 1); gBattlescriptCurrInstr = BattleScript_BideAttack; @@ -2752,7 +2752,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleMoveDamage *= -1; BattleScriptExecute(BattleScript_ItemHealHP_End2); effect = ITEM_HP_CHANGE; - RecordItemBattle(bank, bankHoldEffect); + RecordItemEffectBattle(bank, bankHoldEffect); } break; // nice copy/paste there gamefreak, making a function for confuse berries was too much eh? @@ -3106,7 +3106,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) MarkBattlerForControllerExec(gActiveBattler); break; case ITEM_PP_CHANGE: - if (!(gBattleMons[bank].status2 & STATUS2_TRANSFORMED) && !(gDisableStructs[bank].unk18_b & gBitTable[i])) + if (!(gBattleMons[bank].status2 & STATUS2_TRANSFORMED) && !(gDisableStructs[bank].mimickedMoves & gBitTable[i])) gBattleMons[bank].pp[i] = changedPP; break; } @@ -3341,13 +3341,13 @@ void unref_sub_801B40C(void) { gSideTimers[GetBattlerPosition(bank) & 1].field3 = (bank) | ((bank + 2) << 4); gSideTimers[GetBattlerPosition(bank) & 1].field4 = sCombinedMoves[i].newMove; - gSideAffecting[GetBattlerPosition(bank) & 1] |= SIDE_STATUS_X4; + gSideStatuses[GetBattlerPosition(bank) & 1] |= SIDE_STATUS_X4; } if (sCombinedMoves[i].move1 == gChosenMovesByBanks[bank + 2] && sCombinedMoves[i].move2 == gChosenMovesByBanks[bank]) { gSideTimers[GetBattlerPosition(bank) & 1].field3 = (bank + 2) | ((bank) << 4); gSideTimers[GetBattlerPosition(bank) & 1].field4 = sCombinedMoves[i].newMove; - gSideAffecting[GetBattlerPosition(bank) & 1] |= SIDE_STATUS_X4; + gSideStatuses[GetBattlerPosition(bank) & 1] |= SIDE_STATUS_X4; } bank++; } diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c index 4c2f74f65..760887834 100644 --- a/src/calculate_base_damage.c +++ b/src/calculate_base_damage.c @@ -153,7 +153,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de if (attackerHoldEffect == gHoldEffectToType[i][0] && type == gHoldEffectToType[i][1]) { - if (TYPE_IS_PHYSICAL(type)) + if (IS_TYPE_PHYSICAL(type)) attack = (attack * (attackerHoldEffectParam + 100)) / 100; else spAttack = (spAttack * (attackerHoldEffectParam + 100)) / 100; @@ -204,7 +204,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de if (gBattleMoves[gCurrentMove].effect == EFFECT_EXPLOSION) defense /= 2; - if (TYPE_IS_PHYSICAL(type)) // type < TYPE_MYSTERY + if (IS_TYPE_PHYSICAL(type)) // type < TYPE_MYSTERY { if (gCritMultiplier == 2) { @@ -254,7 +254,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de if (type == TYPE_MYSTERY) damage = 0; // is ??? type. does 0 damage. - if (TYPE_IS_SPECIAL(type)) // type > TYPE_MYSTERY + if (IS_TYPE_SPECIAL(type)) // type > TYPE_MYSTERY { if (gCritMultiplier == 2) { diff --git a/src/contest.c b/src/contest.c index b66a0ed93..f80de85ba 100644 --- a/src/contest.c +++ b/src/contest.c @@ -46,7 +46,7 @@ extern u8 gDisplayedStringBattle[]; extern u16 gBattleTypeFlags; extern u8 gBattlerAttacker; extern u8 gBattlerTarget; -extern u8 gBanksBySide[]; +extern u8 gBattlerPositions[]; extern u8 gBattlerSpriteIds[]; extern struct Window gUnknown_03004210; extern u32 gContestRngValue; @@ -528,10 +528,10 @@ u8 sub_80AB70C(u8 *a) CreateApplauseMeterSprite(); sub_80B0324(); sub_80B0518(); - gBanksBySide[0] = 0; - gBanksBySide[1] = 1; - gBanksBySide[2] = 3; - gBanksBySide[3] = 2; + gBattlerPositions[0] = 0; + gBattlerPositions[1] = 1; + gBattlerPositions[2] = 3; + gBattlerPositions[3] = 2; gBattleTypeFlags = 0; gBattlerAttacker = 2; gBattlerTarget = 3; diff --git a/src/main.c b/src/main.c index d7ef91df0..4b34ebd6e 100644 --- a/src/main.c +++ b/src/main.c @@ -2,13 +2,13 @@ #include "gba/flash_internal.h" #include "gba/m4a_internal.h" #include "main.h" +#include "battle_controllers.h" #include "intro.h" #include "link.h" #include "load_save.h" #include "m4a.h" #include "play_time.h" #include "random.h" -#include "rom3.h" #include "overworld.h" #include "rtc.h" #include "siirtc.h" diff --git a/src/pokemon_item_effect.c b/src/pokemon_item_effect.c index 2542e42c3..d59e8d77c 100644 --- a/src/pokemon_item_effect.c +++ b/src/pokemon_item_effect.c @@ -367,7 +367,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo SetMonData(pkmn, MON_DATA_PP1 + r5, &data); if (gMain.inBattle && sp34 != 4 && !(gBattleMons[sp34].status2 & 0x200000) - && !(gDisableStructs[sp34].unk18_b & gBitTable[r5])) + && !(gDisableStructs[sp34].mimickedMoves & gBitTable[r5])) gBattleMons[sp34].pp[r5] = data; retVal = FALSE; } @@ -392,7 +392,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo SetMonData(pkmn, MON_DATA_PP1 + moveIndex, &data); if (gMain.inBattle && sp34 != 4 && !(gBattleMons[sp34].status2 & 0x200000) - && !(gDisableStructs[sp34].unk18_b & gBitTable[moveIndex])) + && !(gDisableStructs[sp34].mimickedMoves & gBitTable[moveIndex])) gBattleMons[sp34].pp[moveIndex] = data; retVal = FALSE; } diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index e7c49144e..036209fbf 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -62,7 +62,7 @@ extern u8 gBattleMonSprites[NUM_BATTLE_SLOTS]; extern u8 gBattleAnimAttacker; extern u8 gBattleAnimTarget; extern s16 gBattleAnimArgs[8]; -extern u8 gBanksBySide[NUM_BATTLE_SLOTS]; +extern u8 gBattlerPositions[NUM_BATTLE_SLOTS]; extern u8 gBattlersCount; // gNumBattleMons? extern struct OamMatrix gOamMatrices[]; extern struct Struct_2017810 unk_2017810[]; @@ -815,12 +815,12 @@ void InitAnimSpritePos(struct Sprite *sprite, u8 a2) u8 GetBattlerSide(u8 slot) { - return gBanksBySide[slot] & 1; + return gBattlerPositions[slot] & 1; } u8 GetBattlerPosition(u8 slot) { - return gBanksBySide[slot]; + return gBattlerPositions[slot]; } u8 GetBattlerAtPosition(u8 slot) @@ -829,7 +829,7 @@ u8 GetBattlerAtPosition(u8 slot) for (i = 0; i < gBattlersCount; i++) { - if (gBanksBySide[i] == slot) + if (gBattlerPositions[i] == slot) break; } return i; @@ -847,7 +847,7 @@ bool8 IsBankSpritePresent(u8 slot) } else { - if (gBanksBySide[slot] == 0xff) + if (gBattlerPositions[slot] == 0xff) return FALSE; if (GetBattlerSide(slot) != B_SIDE_PLAYER) { diff --git a/src/tv.c b/src/tv.c index fa5b0f4d4..0c87d53b1 100644 --- a/src/tv.c +++ b/src/tv.c @@ -634,7 +634,7 @@ void GabbyAndTyBeforeInterview(void) gSaveBlock1.gabbyAndTyData.lastMove = gBattleResults.lastUsedMove; if (gSaveBlock1.gabbyAndTyData.battleNum != 0xff) gSaveBlock1.gabbyAndTyData.battleNum ++; - gSaveBlock1.gabbyAndTyData.valA_0 = gBattleResults.unk5_0; + gSaveBlock1.gabbyAndTyData.valA_0 = gBattleResults.playerMonWasDamaged; if (gBattleResults.playerFaintCounter) gSaveBlock1.gabbyAndTyData.valA_1 = 1; -- cgit v1.2.3 From bbd177fa20a3f53a4815061c524a14e959de6783 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 31 Jul 2019 18:29:13 -0500 Subject: fix more emerald differences --- src/battle_ai_script_commands.c | 8 +- src/battle_main.c | 10 +- src/battle_script_commands.c | 36 ++--- src/battle_setup.c | 14 +- src/battle_tower.c | 2 +- src/battle_util.c | 319 ++++++++++++++++++++++---------------- src/berry_blender.c | 6 +- src/bike.c | 19 ++- src/cable_club.c | 2 +- src/clock.c | 68 ++++---- src/contest_link_80C2020.c | 2 +- src/debug/tomomichi_debug_menu.c | 2 +- src/field_specials.c | 2 +- src/overworld.c | 2 +- src/safari_zone.c | 2 +- src/scrcmd.c | 2 +- src/script_pokemon_util_80C4BF0.c | 6 +- src/tv.c | 2 +- 18 files changed, 275 insertions(+), 229 deletions(-) (limited to 'src') diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index ca72e254c..405776db6 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -26,7 +26,7 @@ extern u8 gBattlerTarget; extern u8 gAbsentBattlerFlags; extern u8 gMoveResultFlags; extern u16 gDynamicBasePower; -extern u16 gLastUsedMove[MAX_BATTLERS_COUNT]; +extern u16 gLastMoves[MAX_BATTLERS_COUNT]; extern u32 gStatuses3[MAX_BATTLERS_COUNT]; extern u16 gSideStatuses[2]; extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT]; @@ -448,7 +448,7 @@ void sub_810745C(void) { if (AI_BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] == 0) { - AI_BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] = gLastUsedMove[gBattlerTarget]; + AI_BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] = gLastMoves[gBattlerTarget]; return; } } @@ -1256,9 +1256,9 @@ _081083D0: .4byte gAIScriptPtr\n\ static void BattleAICmd_get_move(void) { if (gAIScriptPtr[1] == USER) - AI_THINKING_STRUCT->funcResult = gLastUsedMove[gBattlerAttacker]; + AI_THINKING_STRUCT->funcResult = gLastMoves[gBattlerAttacker]; else - AI_THINKING_STRUCT->funcResult = gLastUsedMove[gBattlerTarget]; + AI_THINKING_STRUCT->funcResult = gLastMoves[gBattlerTarget]; gAIScriptPtr += 2; } diff --git a/src/battle_main.c b/src/battle_main.c index 46519307a..85a9a3fea 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -92,7 +92,7 @@ extern u8 gAbsentBattlerFlags; extern u8 gMultiHitCounter; extern u8 gActionForBanks[]; extern u16 gUnknown_02024C2C[]; -extern u16 gLastUsedMove[]; +extern u16 gLastMoves[]; extern u16 gLastLandedMoves[]; extern u16 gLastHitByType[]; extern u16 gUnknown_02024C4C[]; @@ -3329,7 +3329,7 @@ void sub_8010874(void) MEMSET_ALT(&gDisableStructs[i], 0, 0x1C, j, r4); gDisableStructs[i].isFirstTurn= 2; gUnknown_02024C70[i] = 0; - gLastUsedMove[i] = 0; + gLastMoves[i] = 0; gLastLandedMoves[i] = 0; gLastHitByType[i] = 0; gUnknown_02024C4C[i] = 0; @@ -3484,7 +3484,7 @@ void SwitchInClearSetData(void) } gDisableStructs[gActiveBattler].isFirstTurn= 2; - gLastUsedMove[gActiveBattler] = 0; + gLastMoves[gActiveBattler] = 0; gLastLandedMoves[gActiveBattler] = 0; gLastHitByType[gActiveBattler] = 0; gUnknown_02024C4C[gActiveBattler] = 0; @@ -3548,7 +3548,7 @@ void UndoEffectsAfterFainting(void) gProtectStructs[gActiveBattler].notFirstStrike = 0; gDisableStructs[gActiveBattler].isFirstTurn= 2; - gLastUsedMove[gActiveBattler] = 0; + gLastMoves[gActiveBattler] = 0; gLastLandedMoves[gActiveBattler] = 0; gLastHitByType[gActiveBattler] = 0; gUnknown_02024C4C[gActiveBattler] = 0; @@ -3981,7 +3981,7 @@ void BattleTurnPassed(void) TurnValuesCleanUp(1); if (gBattleOutcome == 0) { - if (UpdateTurnCounters() != 0) + if (DoFieldEndTurnEffects() != 0) return; if (TurnBasedEffects() != 0) return; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 996760ad4..045a933df 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -53,7 +53,7 @@ extern u8 gPotentialItemEffectBattler; extern u8 gEffectBattler; extern u8 gAbsentBattlerFlags; extern u8 gMultiHitCounter; -extern u16 gLastUsedMove[4]; +extern u16 gLastMoves[4]; extern u16 gLockedMoves[4]; extern u16 gChosenMovesByBanks[4]; extern u16 gSideStatuses[2]; @@ -6901,12 +6901,12 @@ void atk49_moveend(void) { if (gHitMarker & HITMARKER_OBEYS) { - gLastUsedMove[gBattlerAttacker] = gChosenMove; + gLastMoves[gBattlerAttacker] = gChosenMove; gUnknown_02024C4C[gBattlerAttacker] = gCurrentMove; } else { - gLastUsedMove[gBattlerAttacker] = 0xFFFF; + gLastMoves[gBattlerAttacker] = 0xFFFF; gUnknown_02024C4C[gBattlerAttacker] = 0xFFFF; } @@ -11385,8 +11385,8 @@ static bool8 IsMoveUncopyable(u16 move) static void atk9D_mimicattackcopy(void) { gChosenMove = 0xFFFF; - if (IsMoveUncopyable(gLastUsedMove[gBattlerTarget]) || gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED - || gLastUsedMove[gBattlerTarget] == 0 || gLastUsedMove[gBattlerTarget] == 0xFFFF) + if (IsMoveUncopyable(gLastMoves[gBattlerTarget]) || gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED + || gLastMoves[gBattlerTarget] == 0 || gLastMoves[gBattlerTarget] == 0xFFFF) { gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); } @@ -11395,21 +11395,21 @@ static void atk9D_mimicattackcopy(void) int i; for (i = 0; i < 4; i++) { - if (gBattleMons[gBattlerAttacker].moves[i] == gLastUsedMove[gBattlerTarget]) + if (gBattleMons[gBattlerAttacker].moves[i] == gLastMoves[gBattlerTarget]) break; } if (i == 4) { - gBattleMons[gBattlerAttacker].moves[gCurrMovePos] = gLastUsedMove[gBattlerTarget]; - if (gBattleMoves[gLastUsedMove[gBattlerTarget]].pp < 5) - gBattleMons[gBattlerAttacker].pp[gCurrMovePos] = gBattleMoves[gLastUsedMove[gBattlerTarget]].pp; + gBattleMons[gBattlerAttacker].moves[gCurrMovePos] = gLastMoves[gBattlerTarget]; + if (gBattleMoves[gLastMoves[gBattlerTarget]].pp < 5) + gBattleMons[gBattlerAttacker].pp[gCurrMovePos] = gBattleMoves[gLastMoves[gBattlerTarget]].pp; else gBattleMons[gBattlerAttacker].pp[gCurrMovePos] = 5; gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = gLastUsedMove[gBattlerTarget]; - gBattleTextBuff1[3] = uBYTE1_16(gLastUsedMove[gBattlerTarget]); + gBattleTextBuff1[2] = gLastMoves[gBattlerTarget]; + gBattleTextBuff1[3] = uBYTE1_16(gLastMoves[gBattlerTarget]); gBattleTextBuff1[4] = 0xFF; gDisableStructs[gBattlerAttacker].mimickedMoves |= gBitTable[gCurrMovePos]; @@ -11770,7 +11770,7 @@ static void atkA3_disablelastusedattack(void) int i; for (i = 0; i < 4; i++) { - if (gBattleMons[gBattlerTarget].moves[i] == gLastUsedMove[gBattlerTarget]) + if (gBattleMons[gBattlerTarget].moves[i] == gLastMoves[gBattlerTarget]) break; } if (gDisableStructs[gBattlerTarget].disabledMove == 0 && i != 4 && gBattleMons[gBattlerTarget].pp[i] != 0) @@ -11797,10 +11797,10 @@ static void atkA4_trysetencore(void) int i; for (i = 0; i < 4; i++) { - if (gBattleMons[gBattlerTarget].moves[i] == gLastUsedMove[gBattlerTarget]) + if (gBattleMons[gBattlerTarget].moves[i] == gLastMoves[gBattlerTarget]) break; } - if (gLastUsedMove[gBattlerTarget] == MOVE_STRUGGLE || gLastUsedMove[gBattlerTarget] == MOVE_ENCORE || gLastUsedMove[gBattlerTarget] == MOVE_MIRROR_MOVE) + if (gLastMoves[gBattlerTarget] == MOVE_STRUGGLE || gLastMoves[gBattlerTarget] == MOVE_ENCORE || gLastMoves[gBattlerTarget] == MOVE_MIRROR_MOVE) i = 4; if (gDisableStructs[gBattlerTarget].encoredMove == 0 && i != 4 && gBattleMons[gBattlerTarget].pp[i] != 0) { @@ -12295,12 +12295,12 @@ static void atkAC_remaininghptopower(void) static void atkAD_tryspiteppreduce(void) { - if (gLastUsedMove[gBattlerTarget] != 0 && gLastUsedMove[gBattlerTarget] != 0xFFFF && !(gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE)) + if (gLastMoves[gBattlerTarget] != 0 && gLastMoves[gBattlerTarget] != 0xFFFF && !(gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE)) { int i; for (i = 0; i < 4; i++) { - if (gLastUsedMove[gBattlerTarget] == gBattleMons[gBattlerTarget].moves[i]) + if (gLastMoves[gBattlerTarget] == gBattleMons[gBattlerTarget].moves[i]) break; } if (i != 4 && gBattleMons[gBattlerTarget].pp[i] > 1) @@ -12311,8 +12311,8 @@ static void atkAD_tryspiteppreduce(void) gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = gLastUsedMove[gBattlerTarget]; - gBattleTextBuff1[3] = gLastUsedMove[gBattlerTarget] >> 8; + gBattleTextBuff1[2] = gLastMoves[gBattlerTarget]; + gBattleTextBuff1[3] = gLastMoves[gBattlerTarget] >> 8; gBattleTextBuff1[4] = 0xFF; ConvertIntToDecimalStringN(gBattleTextBuff2, lost_pp, 0, 1); gBattleTextBuff2[0] = 0xFD; diff --git a/src/battle_setup.c b/src/battle_setup.c index 7f0e852cd..fb76a2ed2 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -558,7 +558,7 @@ void ScrSpecial_StartWallyTutorialBattle(void) { CreateMaleMon(&gEnemyParty[0], SPECIES_RALTS, 5); ScriptContext2_Enable(); - gMain.savedCallback = c2_exit_to_overworld_1_continue_scripts_restart_music; + gMain.savedCallback = CB2_ReturnToFieldContinueScriptPlayMapMusic; gBattleTypeFlags = BATTLE_TYPE_WALLY_TUTORIAL; CreateBattleStartTask(B_TRANSITION_SLICE, 0); } @@ -640,7 +640,7 @@ void CB2_EndScriptedWildBattle(void) if (IsPlayerDefeated(gBattleOutcome) == TRUE) SetMainCallback2(CB2_WhiteOut); else - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } s8 BattleSetup_GetTerrain(void) @@ -898,7 +898,7 @@ static void CB2_StartFirstBattle(void) static void CB2_EndFirstBattle(void) { Overworld_ClearSavedMusic(); - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } // why not just use the macros? maybe its because they didnt want to uncast const every time? @@ -1107,7 +1107,7 @@ void CB2_EndTrainerBattle(void) { if (gTrainerBattleOpponent == SECRET_BASE_OPPONENT) { - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } else if (IsPlayerDefeated(gBattleOutcome) == TRUE) { @@ -1115,7 +1115,7 @@ void CB2_EndTrainerBattle(void) } else { - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); SetCurrentTrainerBattledFlag(); } } @@ -1124,7 +1124,7 @@ void CB2_EndTrainerEyeRematchBattle(void) { if (gTrainerBattleOpponent == SECRET_BASE_OPPONENT) { - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } else if (IsPlayerDefeated(gBattleOutcome) == TRUE) { @@ -1132,7 +1132,7 @@ void CB2_EndTrainerEyeRematchBattle(void) } else { - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); SetCurrentTrainerBattledFlag(); SetTrainerFlagsAfterTrainerEyeRematch(); } diff --git a/src/battle_tower.c b/src/battle_tower.c index 138c1975d..a5b2df0a6 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -1282,7 +1282,7 @@ void sub_81354CC(void) break; } - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } void sub_8135534(u8 taskId) diff --git a/src/battle_util.c b/src/battle_util.c index bda5c2e9a..b1260cd4e 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -2,6 +2,7 @@ #include "battle.h" #include "battle_util.h" #include "battle_controllers.h" +#include "battle_message.h" #include "data2.h" #include "event_data.h" #include "ewram.h" @@ -29,7 +30,7 @@ extern const u8* gBattlescriptCurrInstr; extern u8 gActiveBattler; extern u8 gBattleBufferB[4][0x200]; extern u8* gSelectionBattleScripts[4]; //battlescript location when you try to choose a move you're not allowed to -extern u16 gLastUsedMove[4]; +extern u16 gLastMoves[4]; extern struct BattlePokemon gBattleMons[4]; extern struct BattleEnigmaBerry gEnigmaBerries[4]; extern u8 gPotentialItemEffectBattler; @@ -334,7 +335,7 @@ void PressurePPLoseOnUsingPerishSong(u8 bankAtk) } -void MarkAllBufferBanksForExecution(void) // unused +void MarkAllBattlersForControllerExec(void) // unused { s32 i; @@ -482,7 +483,7 @@ u8 TrySetCantSelectMoveBattleScript(void) //msg can't select a move gSelectionBattleScripts[gActiveBattler] = BattleScript_MoveSelectionDisabledMove; limitations++; } - if (move == gLastUsedMove[gActiveBattler] && move != MOVE_STRUGGLE && gBattleMons[gActiveBattler].status2 & STATUS2_TORMENT) + if (move == gLastMoves[gActiveBattler] && move != MOVE_STRUGGLE && gBattleMons[gActiveBattler].status2 & STATUS2_TORMENT) { CancelMultiTurnMoves(gActiveBattler); gSelectionBattleScripts[gActiveBattler] = BattleScript_MoveSelectionTormented; @@ -523,40 +524,36 @@ u8 TrySetCantSelectMoveBattleScript(void) //msg can't select a move return limitations; } -#define MOVE_LIMITATION_ZEROMOVE (1 << 0) -#define MOVE_LIMITATION_PP (1 << 1) -#define MOVE_LIMITATION_DISABLED (1 << 2) -#define MOVE_LIMITATION_TORMENTED (1 << 3) -#define MOVE_LIMITATION_TAUNT (1 << 4) -#define MOVE_LIMITATION_IMPRISION (1 << 5) - -u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check) +u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u8 check) { u8 holdEffect; - u16* choicedMove = CHOICED_MOVE(bank); + u16* choicedMove = CHOICED_MOVE(battlerId); s32 i; - if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY) - holdEffect = gEnigmaBerries[bank].holdEffect; + + if (gBattleMons[battlerId].item == ITEM_ENIGMA_BERRY) + holdEffect = gEnigmaBerries[battlerId].holdEffect; else - holdEffect = ItemId_GetHoldEffect(gBattleMons[bank].item); - gPotentialItemEffectBattler = bank; - for (i = 0; i < 4; i++) + holdEffect = ItemId_GetHoldEffect(gBattleMons[battlerId].item); + + gPotentialItemEffectBattler = battlerId; + + for (i = 0; i < MAX_MON_MOVES; i++) { - if (gBattleMons[bank].moves[i] == 0 && check & MOVE_LIMITATION_ZEROMOVE) + if (gBattleMons[battlerId].moves[i] == 0 && check & MOVE_LIMITATION_ZEROMOVE) unusableMoves |= gBitTable[i]; - if (gBattleMons[bank].pp[i] == 0 && check & MOVE_LIMITATION_PP) + if (gBattleMons[battlerId].pp[i] == 0 && check & MOVE_LIMITATION_PP) unusableMoves |= gBitTable[i]; - if (gBattleMons[bank].moves[i] == gDisableStructs[bank].disabledMove && check & MOVE_LIMITATION_DISABLED) + if (gBattleMons[battlerId].moves[i] == gDisableStructs[battlerId].disabledMove && check & MOVE_LIMITATION_DISABLED) unusableMoves |= gBitTable[i]; - if (gBattleMons[bank].moves[i] == gLastUsedMove[bank] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[bank].status2 & STATUS2_TORMENT) + if (gBattleMons[battlerId].moves[i] == gLastMoves[battlerId] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[battlerId].status2 & STATUS2_TORMENT) unusableMoves |= gBitTable[i]; - if (gDisableStructs[bank].tauntTimer1 && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[bank].moves[i]].power == 0) + if (gDisableStructs[battlerId].tauntTimer1 && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[battlerId].moves[i]].power == 0) unusableMoves |= gBitTable[i]; - if (IsImprisoned(bank, gBattleMons[bank].moves[i]) && check & MOVE_LIMITATION_IMPRISION) + if (IsImprisoned(battlerId, gBattleMons[battlerId].moves[i]) && check & MOVE_LIMITATION_IMPRISON) unusableMoves |= gBitTable[i]; - if (gDisableStructs[bank].encoreTimer1 && gDisableStructs[bank].encoredMove != gBattleMons[bank].moves[i]) + if (gDisableStructs[battlerId].encoreTimer1 && gDisableStructs[battlerId].encoredMove != gBattleMons[battlerId].moves[i]) unusableMoves |= gBitTable[i]; - if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != gBattleMons[bank].moves[i]) + if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != gBattleMons[battlerId].moves[i]) unusableMoves |= gBitTable[i]; } return unusableMoves; @@ -564,9 +561,9 @@ u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check) bool8 AreAllMovesUnusable(void) { - u8 unusable; - unusable = CheckMoveLimitations(gActiveBattler, 0, 0xFF); - if (unusable == 0xF) //all moves are unusable + u8 unusable = CheckMoveLimitations(gActiveBattler, 0, 0xFF); + + if (unusable == 0xF) // All moves are unusable. { gProtectStructs[gActiveBattler].noValidMoves = 1; gSelectionBattleScripts[gActiveBattler] = BattleScript_NoMovesLeft; @@ -576,33 +573,53 @@ bool8 AreAllMovesUnusable(void) gBattleBufferB[gActiveBattler][3] = GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ 1); } else + { gProtectStructs[gActiveBattler].noValidMoves = 0; + } + return (unusable == 0xF); } -u8 IsImprisoned(u8 bank, u16 move) +u8 IsImprisoned(u8 battlerId, u16 move) { - u8 imprisionedMoves = 0; - u8 bankSide = GetBattlerSide(bank); s32 i; + u8 imprisonedMoves = 0; + u8 battlerSide = GetBattlerSide(battlerId); + for (i = 0; i < gBattlersCount; i++) { - if (bankSide != GetBattlerSide(i) && gStatuses3[i] & STATUS3_IMPRISONED_OTHERS) + if (battlerSide != GetBattlerSide(i) && gStatuses3[i] & STATUS3_IMPRISONED_OTHERS) { s32 j; - for (j = 0; j < 4; j++) + for (j = 0; j < MAX_MON_MOVES; j++) { if (move == gBattleMons[i].moves[j]) break; } - if (j < 4) - imprisionedMoves++; + if (j < MAX_MON_MOVES) + imprisonedMoves++; } } - return imprisionedMoves; + + return imprisonedMoves; } -u8 UpdateTurnCounters(void) +enum +{ + ENDTURN_ORDER, + ENDTURN_REFLECT, + ENDTURN_LIGHT_SCREEN, + ENDTURN_MIST, + ENDTURN_SAFEGUARD, + ENDTURN_WISH, + ENDTURN_RAIN, + ENDTURN_SANDSTORM, + ENDTURN_SUN, + ENDTURN_HAIL, + ENDTURN_FIELD_COUNT, +}; + +u8 DoFieldEndTurnEffects(void) { u8 effect = 0; s32 i; @@ -616,11 +633,11 @@ u8 UpdateTurnCounters(void) do { - u8 sideBank; + u8 side; - switch (gBattleStruct->turncountersTracker) + switch (gBattleStruct->turnCountersTracker) { - case 0: + case ENDTURN_ORDER: for (i = 0; i < gBattlersCount; i++) { gBattlerByTurnOrder[i] = i; @@ -634,25 +651,21 @@ u8 UpdateTurnCounters(void) SwapTurnOrder(i, j); } } - gBattleStruct->turncountersTracker++; + gBattleStruct->turnCountersTracker++; gBattleStruct->turnSideTracker = 0; - case 1: + // fall through + case ENDTURN_REFLECT: while (gBattleStruct->turnSideTracker < 2) { - gActiveBattler = gBattlerAttacker = sideBank = gBattleStruct->turnSideTracker; + gActiveBattler = gBattlerAttacker = side = gBattleStruct->turnSideTracker; - if (gSideStatuses[sideBank] & SIDE_STATUS_REFLECT) + if (gSideStatuses[side] & SIDE_STATUS_REFLECT) { - if (--gSideTimers[sideBank].reflectTimer == 0) + if (--gSideTimers[side].reflectTimer == 0) { - - gSideStatuses[sideBank] &= ~SIDE_STATUS_REFLECT; + gSideStatuses[side] &= ~SIDE_STATUS_REFLECT; BattleScriptExecute(BattleScript_SideStatusWoreOff); - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = MOVE_REFLECT; - gBattleTextBuff1[3] = MOVE_REFLECT >> 8; - gBattleTextBuff1[4] = EOS; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_REFLECT); effect++; } } @@ -662,26 +675,22 @@ u8 UpdateTurnCounters(void) } if (!effect) { - gBattleStruct->turncountersTracker++; + gBattleStruct->turnCountersTracker++; gBattleStruct->turnSideTracker = 0; } break; - case 2: + case ENDTURN_LIGHT_SCREEN: while (gBattleStruct->turnSideTracker < 2) { - gActiveBattler = gBattlerAttacker = sideBank = gBattleStruct->turnSideTracker; - if (gSideStatuses[sideBank] & SIDE_STATUS_LIGHTSCREEN) + gActiveBattler = gBattlerAttacker = side = gBattleStruct->turnSideTracker; + if (gSideStatuses[side] & SIDE_STATUS_LIGHTSCREEN) { - if (--gSideTimers[sideBank].lightscreenTimer == 0) + if (--gSideTimers[side].lightscreenTimer == 0) { - gSideStatuses[sideBank] &= ~SIDE_STATUS_LIGHTSCREEN; + gSideStatuses[side] &= ~SIDE_STATUS_LIGHTSCREEN; BattleScriptExecute(BattleScript_SideStatusWoreOff); - gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = MOVE_LIGHT_SCREEN; - gBattleTextBuff1[3] = MOVE_LIGHT_SCREEN >> 8; - gBattleTextBuff1[4] = EOS; + gBattleCommunication[MULTISTRING_CHOOSER] = side; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_LIGHT_SCREEN); effect++; } } @@ -691,24 +700,20 @@ u8 UpdateTurnCounters(void) } if (!effect) { - gBattleStruct->turncountersTracker++; + gBattleStruct->turnCountersTracker++; gBattleStruct->turnSideTracker = 0; } break; - case 3: + case ENDTURN_MIST: while (gBattleStruct->turnSideTracker < 2) { - gActiveBattler = gBattlerAttacker = sideBank = gBattleStruct->turnSideTracker; - if (gSideTimers[sideBank].mistTimer && --gSideTimers[sideBank].mistTimer == 0) + gActiveBattler = gBattlerAttacker = side = gBattleStruct->turnSideTracker; + if (gSideTimers[side].mistTimer && --gSideTimers[side].mistTimer == 0) { - gSideStatuses[sideBank] &= ~SIDE_STATUS_MIST; + gSideStatuses[side] &= ~SIDE_STATUS_MIST; BattleScriptExecute(BattleScript_SideStatusWoreOff); - gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = MOVE_MIST; - gBattleTextBuff1[3] = MOVE_MIST >> 8; - gBattleTextBuff1[4] = EOS; + gBattleCommunication[MULTISTRING_CHOOSER] = side; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_MIST); effect++; } gBattleStruct->turnSideTracker++; @@ -717,19 +722,19 @@ u8 UpdateTurnCounters(void) } if (!effect) { - gBattleStruct->turncountersTracker++; + gBattleStruct->turnCountersTracker++; gBattleStruct->turnSideTracker = 0; } break; - case 4: + case ENDTURN_SAFEGUARD: while (gBattleStruct->turnSideTracker < 2) { - gActiveBattler = gBattlerAttacker = sideBank = gBattleStruct->turnSideTracker; - if (gSideStatuses[sideBank] & SIDE_STATUS_SAFEGUARD) + gActiveBattler = gBattlerAttacker = side = gBattleStruct->turnSideTracker; + if (gSideStatuses[side] & SIDE_STATUS_SAFEGUARD) { - if (--gSideTimers[sideBank].safeguardTimer == 0) + if (--gSideTimers[side].safeguardTimer == 0) { - gSideStatuses[sideBank] &= ~SIDE_STATUS_SAFEGUARD; + gSideStatuses[side] &= ~SIDE_STATUS_SAFEGUARD; BattleScriptExecute(BattleScript_SafeguardEnds); effect++; } @@ -740,11 +745,11 @@ u8 UpdateTurnCounters(void) } if (!effect) { - gBattleStruct->turncountersTracker++; + gBattleStruct->turnCountersTracker++; gBattleStruct->turnSideTracker = 0; } break; - case 5: + case ENDTURN_WISH: while (gBattleStruct->turnSideTracker < gBattlersCount) { gActiveBattler = gBattlerByTurnOrder[gBattleStruct->turnSideTracker]; @@ -760,10 +765,10 @@ u8 UpdateTurnCounters(void) } if (!effect) { - gBattleStruct->turncountersTracker++; + gBattleStruct->turnCountersTracker++; } break; - case 6: + case ENDTURN_RAIN: if (gBattleWeather & WEATHER_RAIN_ANY) { if (!(gBattleWeather & WEATHER_RAIN_PERMANENT)) @@ -780,15 +785,20 @@ u8 UpdateTurnCounters(void) gBattleCommunication[MULTISTRING_CHOOSER] = 0; } else if (gBattleWeather & WEATHER_RAIN_DOWNPOUR) + { gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } else + { gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + BattleScriptExecute(BattleScript_RainContinuesOrEnds); effect++; } - gBattleStruct->turncountersTracker++; + gBattleStruct->turnCountersTracker++; break; - case 7: + case ENDTURN_SANDSTORM: if (gBattleWeather & WEATHER_SANDSTORM_ANY) { if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) @@ -797,16 +807,18 @@ u8 UpdateTurnCounters(void) gBattlescriptCurrInstr = BattleScript_SandStormHailEnds; } else + { gBattlescriptCurrInstr = BattleScript_DamagingWeatherContinues; + } gBattleStruct->animArg1 = B_ANIM_SANDSTORM_CONTINUES; gBattleCommunication[MULTISTRING_CHOOSER] = 0; BattleScriptExecute(gBattlescriptCurrInstr); effect++; } - gBattleStruct->turncountersTracker++; + gBattleStruct->turnCountersTracker++; break; - case 8: + case ENDTURN_SUN: if (gBattleWeather & WEATHER_SUN_ANY) { if (!(gBattleWeather & WEATHER_SUN_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) @@ -815,14 +827,16 @@ u8 UpdateTurnCounters(void) gBattlescriptCurrInstr = BattleScript_SunlightFaded; } else + { gBattlescriptCurrInstr = BattleScript_SunlightContinues; + } BattleScriptExecute(gBattlescriptCurrInstr); effect++; } - gBattleStruct->turncountersTracker++; + gBattleStruct->turnCountersTracker++; break; - case 9: + case ENDTURN_HAIL: if (gBattleWeather & WEATHER_HAIL) { if (--gWishFutureKnock.weatherDuration == 0) @@ -831,16 +845,18 @@ u8 UpdateTurnCounters(void) gBattlescriptCurrInstr = BattleScript_SandStormHailEnds; } else + { gBattlescriptCurrInstr = BattleScript_DamagingWeatherContinues; + } gBattleStruct->animArg1 = B_ANIM_HAIL_CONTINUES; gBattleCommunication[MULTISTRING_CHOOSER] = 1; BattleScriptExecute(gBattlescriptCurrInstr); effect++; } - gBattleStruct->turncountersTracker++; + gBattleStruct->turnCountersTracker++; break; - case 10: + case ENDTURN_FIELD_COUNT: effect++; break; } @@ -850,23 +866,47 @@ u8 UpdateTurnCounters(void) #define TURNBASED_MAX_CASE 19 +enum +{ + ENDTURN_INGRAIN, + ENDTURN_ABILITIES, + ENDTURN_ITEMS1, + ENDTURN_LEECH_SEED, + ENDTURN_POISON, + ENDTURN_BAD_POISON, + ENDTURN_BURN, + ENDTURN_NIGHTMARES, + ENDTURN_CURSE, + ENDTURN_WRAP, + ENDTURN_UPROAR, + ENDTURN_THRASH, + ENDTURN_DISABLE, + ENDTURN_ENCORE, + ENDTURN_LOCK_ON, + ENDTURN_CHARGE, + ENDTURN_TAUNT, + ENDTURN_YAWN, + ENDTURN_ITEMS2, + ENDTURN_BATTLER_COUNT +}; + u8 TurnBasedEffects(void) { u8 effect = 0; gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20); - while (gBattleStruct->turnEffectsBank < gBattlersCount && gBattleStruct->turnEffectsTracker <= TURNBASED_MAX_CASE) + while (gBattleStruct->turnEffectsBattlerId < gBattlersCount && gBattleStruct->turnEffectsTracker <= TURNBASED_MAX_CASE) { - gActiveBattler = gBattlerAttacker = gBattlerByTurnOrder[gBattleStruct->turnEffectsBank]; + gActiveBattler = gBattlerAttacker = gBattlerByTurnOrder[gBattleStruct->turnEffectsBattlerId]; if (gAbsentBattlerFlags & gBitTable[gActiveBattler]) { - gBattleStruct->turnEffectsBank++; + gBattleStruct->turnEffectsBattlerId++; } else { switch (gBattleStruct->turnEffectsTracker) { - case 0: // ingrain + case ENDTURN_INGRAIN: // ingrain if ((gStatuses3[gActiveBattler] & STATUS3_ROOTED) && gBattleMons[gActiveBattler].hp != gBattleMons[gActiveBattler].maxHP && gBattleMons[gActiveBattler].hp != 0) @@ -880,25 +920,27 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 1: // end turn abilities + case ENDTURN_ABILITIES: // end turn abilities if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, gActiveBattler, 0, 0, 0)) effect++; gBattleStruct->turnEffectsTracker++; break; - case 2: // item effects - if (ItemBattleEffects(1, gActiveBattler, 0)) + case ENDTURN_ITEMS1: // item effects + if (ItemBattleEffects(1, gActiveBattler, FALSE)) effect++; gBattleStruct->turnEffectsTracker++; break; - case 18: // item effects again - if (ItemBattleEffects(1, gActiveBattler, 1)) + case ENDTURN_ITEMS2: // item effects again + if (ItemBattleEffects(1, gActiveBattler, TRUE)) effect++; gBattleStruct->turnEffectsTracker++; break; - case 3: // leech seed - if (gStatuses3[gActiveBattler] & STATUS3_LEECHSEED && gBattleMons[gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BATTLER].hp != 0 && gBattleMons[gActiveBattler].hp != 0) + case ENDTURN_LEECH_SEED: // leech seed + if ((gStatuses3[gActiveBattler] & STATUS3_LEECHSEED) + && gBattleMons[gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BATTLER].hp != 0 + && gBattleMons[gActiveBattler].hp != 0) { - gBattlerTarget = gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BATTLER; //funny how the 'target' is actually the bank that receives HP + gBattlerTarget = gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BATTLER; // Notice gBattlerTarget is actually the HP receiver. gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -909,7 +951,7 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 4: // poison + case ENDTURN_POISON: // poison if ((gBattleMons[gActiveBattler].status1 & STATUS1_POISON) && gBattleMons[gActiveBattler].hp != 0) { gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; @@ -920,13 +962,13 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 5: // toxic poison + case ENDTURN_BAD_POISON: // toxic poison if ((gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_POISON) && gBattleMons[gActiveBattler].hp != 0) { gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; - if ((gBattleMons[gActiveBattler].status1 & 0xF00) != 0xF00) //not 16 turns + if ((gBattleMons[gActiveBattler].status1 & 0xF00) != 0xF00) // not 16 turns gBattleMons[gActiveBattler].status1 += 0x100; gBattleMoveDamage *= (gBattleMons[gActiveBattler].status1 & 0xF00) >> 8; BattleScriptExecute(BattleScript_PoisonTurnDmg); @@ -934,7 +976,7 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 6: // burn + case ENDTURN_BURN: // burn if ((gBattleMons[gActiveBattler].status1 & STATUS1_BURN) && gBattleMons[gActiveBattler].hp != 0) { gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; @@ -945,7 +987,7 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 7: // spooky nightmares + case ENDTURN_NIGHTMARES: // spooky nightmares if ((gBattleMons[gActiveBattler].status2 & STATUS2_NIGHTMARE) && gBattleMons[gActiveBattler].hp != 0) { // missing sleep check @@ -957,7 +999,7 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 8: // curse + case ENDTURN_CURSE: // curse if ((gBattleMons[gActiveBattler].status2 & STATUS2_CURSED) && gBattleMons[gActiveBattler].hp != 0) { gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 4; @@ -968,7 +1010,7 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 9: // wrap + case ENDTURN_WRAP: // wrap if ((gBattleMons[gActiveBattler].status2 & STATUS2_WRAPPED) && gBattleMons[gActiveBattler].hp != 0) { gBattleMons[gActiveBattler].status2 -= 0x2000; @@ -976,8 +1018,8 @@ u8 TurnBasedEffects(void) { gBattleStruct->animArg1 = ewram16004arr(0, gActiveBattler); gBattleStruct->animArg2 = ewram16004arr(1, gActiveBattler); - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; + gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN; + gBattleTextBuff1[1] = B_BUFF_MOVE; gBattleTextBuff1[2] = ewram16004arr(0, gActiveBattler); gBattleTextBuff1[3] = ewram16004arr(1, gActiveBattler); gBattleTextBuff1[4] = EOS; @@ -1000,7 +1042,7 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 10: // uproar + case ENDTURN_UPROAR: // uproar if (gBattleMons[gActiveBattler].status2 & STATUS2_UPROAR) { for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) @@ -1049,7 +1091,7 @@ u8 TurnBasedEffects(void) if (effect != 2) gBattleStruct->turnEffectsTracker++; break; - case 11: // thrash + case ENDTURN_THRASH: // thrash if (gBattleMons[gActiveBattler].status2 & STATUS2_LOCK_CONFUSE) { gBattleMons[gActiveBattler].status2 -= 0x400; @@ -1071,11 +1113,11 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 12: // disable + case ENDTURN_DISABLE: // disable if (gDisableStructs[gActiveBattler].disableTimer1 != 0) { - int i; - for (i = 0; i < 4; i++) + s32 i; + for (i = 0; i < MAX_MON_MOVES; i++) { if (gDisableStructs[gActiveBattler].disabledMove == gBattleMons[gActiveBattler].moves[i]) break; @@ -1094,7 +1136,7 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 13: // encore + case ENDTURN_ENCORE: // encore if (gDisableStructs[gActiveBattler].encoreTimer1 != 0) { if (gBattleMons[gActiveBattler].moves[gDisableStructs[gActiveBattler].encoredMovePos] != gDisableStructs[gActiveBattler].encoredMove) // pokemon does not have the encored move anymore @@ -1113,22 +1155,22 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 14: // lock-on decrement + case ENDTURN_LOCK_ON: // lock-on decrement if (gStatuses3[gActiveBattler] & STATUS3_ALWAYS_HITS) gStatuses3[gActiveBattler] -= 0x8; gBattleStruct->turnEffectsTracker++; break; - case 15: // charge + case ENDTURN_CHARGE: // charge if (gDisableStructs[gActiveBattler].chargeTimer1 && --gDisableStructs[gActiveBattler].chargeTimer1 == 0) gStatuses3[gActiveBattler] &= ~STATUS3_CHARGED_UP; gBattleStruct->turnEffectsTracker++; break; - case 16: // taunt + case ENDTURN_TAUNT: // taunt if (gDisableStructs[gActiveBattler].tauntTimer1) gDisableStructs[gActiveBattler].tauntTimer1--; gBattleStruct->turnEffectsTracker++; break; - case 17: // yawn + case ENDTURN_YAWN: // yawn if (gStatuses3[gActiveBattler] & STATUS3_YAWN) { gStatuses3[gActiveBattler] -= 0x800; @@ -1147,9 +1189,9 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 19: // done + case ENDTURN_BATTLER_COUNT: // done gBattleStruct->turnEffectsTracker = 0; - gBattleStruct->turnEffectsBank++; + gBattleStruct->turnEffectsBattlerId++; break; } if (effect != 0) @@ -1163,17 +1205,20 @@ u8 TurnBasedEffects(void) bool8 HandleWishPerishSongOnTurnEnd(void) { gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20); - switch (gBattleStruct->sub80170DC_Tracker) + + switch (gBattleStruct->wishPerishSongState) { case 0: // future sight - while (gBattleStruct->sub80170DC_Bank < gBattlersCount) + while (gBattleStruct->wishPerishSongBattlerId < gBattlersCount) { - gActiveBattler = gBattleStruct->sub80170DC_Bank; + gActiveBattler = gBattleStruct->wishPerishSongBattlerId; if (gAbsentBattlerFlags & gBitTable[gActiveBattler]) - gBattleStruct->sub80170DC_Bank++; + { + gBattleStruct->wishPerishSongBattlerId++; + } else { - gBattleStruct->sub80170DC_Bank++; + gBattleStruct->wishPerishSongBattlerId++; if (gWishFutureKnock.futureSightCounter[gActiveBattler] && --gWishFutureKnock.futureSightCounter[gActiveBattler] == 0 && gBattleMons[gActiveBattler].hp) { if (gWishFutureKnock.futureSightMove[gActiveBattler] == MOVE_FUTURE_SIGHT) @@ -1194,17 +1239,17 @@ bool8 HandleWishPerishSongOnTurnEnd(void) } } } - gBattleStruct->sub80170DC_Tracker = 1; - gBattleStruct->sub80170DC_Bank = 0; + gBattleStruct->wishPerishSongState = 1; + gBattleStruct->wishPerishSongBattlerId = 0; case 1: // perish song - while (gBattleStruct->sub80170DC_Bank < gBattlersCount) + while (gBattleStruct->wishPerishSongBattlerId < gBattlersCount) { - gActiveBattler = gBattlerAttacker = gBattlerByTurnOrder[gBattleStruct->sub80170DC_Bank]; + gActiveBattler = gBattlerAttacker = gBattlerByTurnOrder[gBattleStruct->wishPerishSongBattlerId]; if (gAbsentBattlerFlags & gBitTable[gActiveBattler]) - gBattleStruct->sub80170DC_Bank++; + gBattleStruct->wishPerishSongBattlerId++; else { - gBattleStruct->sub80170DC_Bank++; + gBattleStruct->wishPerishSongBattlerId++; if (gStatuses3[gActiveBattler] & STATUS3_PERISH_SONG) { gBattleTextBuff1[0] = 0xFD; diff --git a/src/berry_blender.c b/src/berry_blender.c index 70cb34809..06cf9ba1f 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -1258,7 +1258,7 @@ static void sub_804E9F8(void) break; case 102: if (!gPaletteFade.active) - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); break; } RunTasks(); @@ -2480,7 +2480,7 @@ static void sub_8050E30(void) break; case 12: if (gReceivedRemoteLinkPlayers == 0) - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); break; } @@ -2529,7 +2529,7 @@ static void sub_80510E8(void) if (gBerryBlenderData->field_7C == 0) SetMainCallback2(DoBerryBlending); else - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } break; } diff --git a/src/bike.c b/src/bike.c index b1176997b..1f5d45418 100644 --- a/src/bike.c +++ b/src/bike.c @@ -20,6 +20,7 @@ extern u8 gUnknown_020297ED; u8 debug_sub_805F2B0(u8); #endif +// this file's functions static void MovePlayerOnMachBike(u8, u16, u16); static u8 GetMachBikeTransition(u8 *); static void MachBikeTransition_FaceDirection(u8); @@ -61,6 +62,8 @@ static u8 CanBikeFaceDirOnMetatile(u8, u8); static bool8 WillPlayerCollideWithCollision(u8, u8); static void Bike_SetBikeStill(void); +// const rom data + /* A bike transition is a type of callback for the bike that actually modifies the bicycle's direction or momentum or otherwise movement. @@ -123,7 +126,7 @@ static const u8 sAcroBikeJumpTimerList[] = {4, 0}; // this is a list of history inputs to do in order to do the check to retrieve a jump direction for acro bike. it seems to be an extensible list, so its possible that Game Freak may have intended for the Acro Bike to have more complex tricks at some point. The final list only has the acro jump. static const struct BikeHistoryInputInfo sAcroBikeTricksList[] = { - // the 0xF is a mask performed with each byte of the array in order to perform the check on only the last entry of the history list, otherwise the check wouldnt work as there can be 0xF0 as opposed to 0x0F. + // the 0xF is a mask performed with each byte of the array in order to perform the check on only the last entry of the history list, otherwise the check wouldn't work as there can be 0xF0 as opposed to 0x0F. {DIR_SOUTH, B_BUTTON, 0xF, 0xF, sAcroBikeJumpTimerList, sAcroBikeJumpTimerList, DIR_SOUTH}, {DIR_NORTH, B_BUTTON, 0xF, 0xF, sAcroBikeJumpTimerList, sAcroBikeJumpTimerList, DIR_NORTH}, {DIR_WEST, B_BUTTON, 0xF, 0xF, sAcroBikeJumpTimerList, sAcroBikeJumpTimerList, DIR_WEST}, @@ -630,7 +633,7 @@ static void AcroBikeTransition_WheelieHoppingMoving(u8 direction) return; } collision = get_some_collision(direction); - //TODO: Try to get rid of this goto + // TODO: Try to get rid of this goto if (collision == 0 || collision == 9) { goto derp; @@ -647,7 +650,7 @@ static void AcroBikeTransition_WheelieHoppingMoving(u8 direction) } else { - derp: + derp: PlayerMovingHoppingWheelie(direction); } } @@ -755,7 +758,7 @@ static void AcroBikeTransition_WheelieRisingMoving(u8 direction) static void AcroBikeTransition_WheelieLoweringMoving(u8 direction) { - u8 var; + u8 collision; struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId]; if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0) @@ -763,12 +766,12 @@ static void AcroBikeTransition_WheelieLoweringMoving(u8 direction) PlayerEndWheelie(playerEventObj->movementDirection); return; } - var = get_some_collision(direction); - if (var > 0 && var < 12) + collision = get_some_collision(direction); + if (collision > 0 && collision < 12) { - if (var == 6) + if (collision == 6) PlayerJumpLedge(direction); - else if (var < 5 || var > 8) + else if (collision < 5 || collision > 8) PlayerEndWheelie(direction); return; } diff --git a/src/cable_club.c b/src/cable_club.c index b030d8cc2..28bf3b759 100644 --- a/src/cable_club.c +++ b/src/cable_club.c @@ -940,7 +940,7 @@ void unref_sub_8083BB0(void) void sub_8083BDC(void) { - TrainerCard_ShowLinkCard(gSpecialVar_0x8006, c2_exit_to_overworld_1_continue_scripts_restart_music); + TrainerCard_ShowLinkCard(gSpecialVar_0x8006, CB2_ReturnToFieldContinueScriptPlayMapMusic); } bool32 sub_8083BF4(u8 linkPlayerIndex) diff --git a/src/clock.c b/src/clock.c index fceccdfcb..3bea39754 100644 --- a/src/clock.c +++ b/src/clock.c @@ -1,21 +1,20 @@ #include "global.h" #include "clock.h" -#include "berry.h" -#include "dewford_trend.h" #include "event_data.h" +#include "rtc.h" +#include "time_events.h" #include "field_specials.h" -#include "field_weather.h" #include "lottery_corner.h" +#include "dewford_trend.h" +#include "tv.h" +#include "field_weather.h" +#include "berry.h" #include "main.h" #include "overworld.h" -#include "rtc.h" -#include "time_events.h" -#include "tv.h" #include "wallclock.h" -static void UpdatePerDay(struct Time *time); -static void UpdatePerMinute(struct Time *time); -static void ReturnFromStartWallClock(void); +static void UpdatePerDay(struct Time *localTime); +static void UpdatePerMinute(struct Time *localTime); void InitTimeBasedEvents(void) { @@ -35,50 +34,49 @@ void DoTimeBasedEvents(void) } } -static void UpdatePerDay(struct Time *time) +static void UpdatePerDay(struct Time *localTime) { u16 *varPtr = GetVarPointer(VAR_DAYS); int days = *varPtr; - u16 newDays; + u16 daysSince; - if (days != time->days && days <= time->days) + if (days != localTime->days && days <= localTime->days) { - newDays = time->days - days; + daysSince = localTime->days - days; ClearDailyFlags(); - UpdateDewfordTrendPerDay(newDays); - UpdateTVShowsPerDay(newDays); - UpdateWeatherPerDay(newDays); - UpdatePartyPokerusTime(newDays); - UpdateMirageRnd(newDays); - UpdateBirchState(newDays); - SetShoalItemFlag(newDays); - SetRandomLotteryNumber(newDays); - *varPtr = time->days; + UpdateDewfordTrendPerDay(daysSince); + UpdateTVShowsPerDay(daysSince); + UpdateWeatherPerDay(daysSince); + UpdatePartyPokerusTime(daysSince); + UpdateMirageRnd(daysSince); + UpdateBirchState(daysSince); + SetShoalItemFlag(daysSince); + SetRandomLotteryNumber(daysSince); + *varPtr = localTime->days; } } -static void UpdatePerMinute(struct Time *time) +static void UpdatePerMinute(struct Time *localTime) { - struct Time newTime; - s32 minutesPassed; - - CalcTimeDifference(&newTime, &gSaveBlock2.lastBerryTreeUpdate, time); - minutesPassed = 1440 * newTime.days + 60 * newTime.hours + newTime.minutes; - - if (minutesPassed == 0) // do not do the update for the first minute. - return; + struct Time difference; + int minutes; - if (minutesPassed > -1) // do not perform an update on invalid minutesPassed. + CalcTimeDifference(&difference, &gSaveBlock2.lastBerryTreeUpdate, localTime); + minutes = 24 * 60 * difference.days + 60 * difference.hours + difference.minutes; + if (minutes != 0) { - BerryTreeTimeUpdate(minutesPassed); - gSaveBlock2.lastBerryTreeUpdate = *time; + if (minutes >= 0) + { + BerryTreeTimeUpdate(minutes); + gSaveBlock2.lastBerryTreeUpdate = *localTime; + } } } static void ReturnFromStartWallClock(void) { InitTimeBasedEvents(); - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } void StartWallClock(void) diff --git a/src/contest_link_80C2020.c b/src/contest_link_80C2020.c index 8269f424b..f4203dd42 100644 --- a/src/contest_link_80C2020.c +++ b/src/contest_link_80C2020.c @@ -753,7 +753,7 @@ static void sub_80C2EA0(u8 taskId) REG_BLDCNT = 0; REG_BLDY = 0; DestroyTask(taskId); - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } } } diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c index daaca570c..07e08eb4f 100644 --- a/src/debug/tomomichi_debug_menu.c +++ b/src/debug/tomomichi_debug_menu.c @@ -1885,7 +1885,7 @@ bool8 InitTomomichiDebugWindow(void) static void debug_sub_808B868(void) { - c2_exit_to_overworld_1_continue_scripts_restart_music(); + CB2_ReturnToFieldContinueScriptPlayMapMusic(); } static bool8 InitDebugWindow(void) diff --git a/src/field_specials.c b/src/field_specials.c index 0e8fe06d9..8cdda2af8 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -761,7 +761,7 @@ u8 GetLeadMonFriendshipScore(void) void CB2_FieldShowRegionMap(void) { - FieldInitRegionMap(c2_exit_to_overworld_1_continue_scripts_restart_music); + FieldInitRegionMap(CB2_ReturnToFieldContinueScriptPlayMapMusic); } void FieldShowRegionMap(void) diff --git a/src/overworld.c b/src/overworld.c index 19fe5f377..934b09dbc 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1441,7 +1441,7 @@ void sub_80546B8(void) CB2_ReturnToField(); } -void c2_exit_to_overworld_1_continue_scripts_restart_music(void) +void CB2_ReturnToFieldContinueScriptPlayMapMusic(void) { FieldClearVBlankHBlankCallbacks(); gFieldCallback = sub_8080990; diff --git a/src/safari_zone.c b/src/safari_zone.c index 7aa05c7dc..8e5f3c692 100644 --- a/src/safari_zone.c +++ b/src/safari_zone.c @@ -110,7 +110,7 @@ void sub_80C824C(void) { ScriptContext1_SetupScript(&gUnknown_081C3459); ScriptContext1_Stop(); - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } } diff --git a/src/scrcmd.c b/src/scrcmd.c index d37e1180d..8015705a0 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1782,7 +1782,7 @@ bool8 ScrCmd_playslotmachine(struct ScriptContext *ctx) { u8 v2 = VarGet(ScriptReadHalfword(ctx)); - PlaySlotMachine(v2, c2_exit_to_overworld_1_continue_scripts_restart_music); + PlaySlotMachine(v2, CB2_ReturnToFieldContinueScriptPlayMapMusic); ScriptContext1_Stop(); return TRUE; } diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index f6cb8ae0a..ce6c01439 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -214,7 +214,7 @@ void sub_80C4D80(void) void ShowContestWinnerCleanup(void) { - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } void ShowContestWinner(void) @@ -521,7 +521,7 @@ void sub_80C5580(void) break; } - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } void ChooseBattleTowerPlayerParty(void) @@ -546,7 +546,7 @@ void SetBattleTowerPlayerParty(void) break; } - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } void ReducePlayerPartyToThree(void) diff --git a/src/tv.c b/src/tv.c index 0c87d53b1..29d7fc442 100644 --- a/src/tv.c +++ b/src/tv.c @@ -2073,7 +2073,7 @@ void ChangePokemonNickname(void) void ChangePokemonNickname_CB(void) { SetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, gStringVar2); - c2_exit_to_overworld_1_continue_scripts_restart_music(); + CB2_ReturnToFieldContinueScriptPlayMapMusic(); } void TV_CopyNicknameToStringVar1AndEnsureTerminated(void) -- cgit v1.2.3 From a631973b73977f33ef98042abca9fca287792439 Mon Sep 17 00:00:00 2001 From: "easyaspi314 (Devin)" Date: Fri, 23 Aug 2019 20:44:01 -0400 Subject: [WIP] English Debug menu translations! (Plus some build system fixes) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I'm back!            す Éß テ-ブ↑& ÒÛªù! (かなテーブルを捨てろよ!/Throw away the kana table!) When compiled in English with DEBUG, instead of óじばÌ (mojibake), you now get actual English translations! No more switching from the game, to the kana chart, and if you don't know Japanese, Google Translate, just to read one sentence. Additionally, the few unknown translations should use proper encoding or Romaji. I decided to use a nicer macro system: static const u8 sStrHello[] = DTR("こんにちは", "Hello"); This prevents ifdef HELL, as the mixed Japanese and English would be messy. Additionally, some special character issues were corrected. Things untranslated/bugs: - Tomomichi's dummy functions. Of course, they don't do much. - The title screen battle menu. This uses a Gen 2 style tile rendering and the way it is rendered is incredibly overcomplicated. - A few phrases which I couldn't get a clear translation for. I don't know much Japanese lol. - Song names. Just tedious with the limited buffer size. - A few layout issues. Some dimensions should be tweaked to avoid text box ovetflows. - Potential buffer overflows, which I want to try to avoid - (ASan for GBA? :morphon:) - While I use the DEBUG_TRANSLATE flag (automatic with ENGLISH && DEBUG) for C code, the asm data only checks for ENGLISH && DEBUG. Additionally, they are ugly. - Haven't tested all builds yet. - Some code formatting issues. I also made it so this will compile with the system preprocessor (including Clang), and my agbcc binutils (which will attempt to be selected automatically if you don't have DKP). Clang needs a few flags (it can't do asm enums with line numbers and it does trigraphs in standard mode), but it is no longer flipping out. I am going to restart my build system project. It was getting way off track, and ucpp was too difficult to maintain (one of the main reasons for the silence). --- src/battle_main.c | 2 + src/battle_records.c | 12 +-- src/berry.c | 4 +- src/berry_blender.c | 15 ++- src/debug/ereader_debug_menu.c | 16 +-- src/debug/matsuda_debug_menu.c | 40 +++---- src/debug/mori_debug_menu.c | 6 +- src/debug/nakamura_debug_menu.c | 39 +++---- src/debug/nohara_debug_menu.c | 86 +++++++-------- src/debug/sound_check_menu.c | 16 +-- src/debug/start_menu_debug.c | 227 +++++++++++++++++++++------------------ src/debug/taya_debug_window.c | 24 ++--- src/debug/tomomichi_debug_menu.c | 152 +++++++++++++------------- src/debug/watanabe_debug_menu.c | 124 ++++++++++----------- src/field_weather.c | 30 +++--- src/mail.c | 58 +++++----- src/main.c | 8 +- src/reset_rtc_screen.c | 8 +- src/slot_machine.c | 41 +++---- 19 files changed, 477 insertions(+), 431 deletions(-) (limited to 'src') diff --git a/src/battle_main.c b/src/battle_main.c index 56eabd515..9a9f954aa 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -2475,11 +2475,13 @@ void debug_nullsub_3(void) extern const u32 gUnknown_Debug_821F680[][0x23]; +// Shows a cursor void debug_sub_80125A0(void) { gSharedMem[gUnknown_Debug_821F680[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5]] = 0x6D; } +// Hides a cursor void debug_sub_80125E4(void) { gSharedMem[gUnknown_Debug_821F680[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5]] = 0x81; diff --git a/src/battle_records.c b/src/battle_records.c index d94d88032..e462e8992 100644 --- a/src/battle_records.c +++ b/src/battle_records.c @@ -21,12 +21,12 @@ extern u8 gBattleOutcome; const struct DebugStruct1 gUnknown_Debug_4245CC[] = { { 1, _("NUMBER1") }, - { 2, _("ナンバー2") }, - { 3, _("ナンバー3") }, - { 4, _("ナンバー4") }, - { 5, _("ナンバー5") }, - { 6, _("ナンバー6") }, - { 7, _("ナンバー7") }, + { 2, DTR("ナンバー2", "NUMBER2") }, + { 3, DTR("ナンバー3", "NUMBER3") }, + { 4, DTR("ナンバー4", "NUMBER4") }, + { 5, DTR("ナンバー5", "NUMBER5") }, + { 6, DTR("ナンバー6", "NUMBER6") }, + { 7, DTR("ナンバー7", "NUMBER7") }, }; const struct {u8 unk0; u8 unk1;} gUnknown_Debug_8424620[] = diff --git a/src/berry.c b/src/berry.c index 162615086..ad0a31b28 100644 --- a/src/berry.c +++ b/src/berry.c @@ -1072,8 +1072,8 @@ extern const u8 gSpriteImage_UnusedCherry[]; extern const u16 gSpritePalette_UnusedCherry[]; extern u8 gUnknown_Debug_839B6CE[]; -static const u8 gUnknown_Debug_083F7F84[] = _("そとから きた きのみ"); -static const u8 gUnknown_Debug_083F7F90[] = _("ただいま かいはつちゅう"); +static const u8 gUnknown_Debug_083F7F84[] = DTR("そとから きた きのみ", "An exterior BERRY"); +static const u8 gUnknown_Debug_083F7F90[] = DTR("ただいま かいはつちゅう", "Currently under development"); void debug_sub_80C2C18(const u8 *name, u8 holdEffect, u8 holdEffectParam) { diff --git a/src/berry_blender.c b/src/berry_blender.c index 70cb34809..8d7a7faab 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -3271,6 +3271,13 @@ void debug_sub_80524BC(void) SetMainCallback2(sub_8052AF8); } +// Partially fixes the clipping on longer names. +#if DEBUG_TRANSLATE && DEBUG +# define BLENDER_DEBUG_BERRY_LEN 12 +#else +# define BLENDER_DEBUG_BERRY_LEN 6 +#endif + static void BlenderDebug_PrintBerryData(void) { u8 text[128]; @@ -3294,8 +3301,8 @@ static void BlenderDebug_PrintBerryData(void) else { CopyItemName(sBlenderDebug.berries[i] + 133, &text[0]); - text[6] = CHAR_SPACE; - text[7] = EOS; + text[BLENDER_DEBUG_BERRY_LEN] = CHAR_SPACE; + text[BLENDER_DEBUG_BERRY_LEN + 1] = EOS; } var = (i * 3) + 3; Menu_PrintText(text, 2, var); @@ -3318,7 +3325,7 @@ static void BlenderDebug_PrintBerryData(void) ConvertIntToDecimalStringN(&text[15], gBerries[sBlenderDebug.berries[i]].smoothness, 2, 2); text[17] = EOS; - Menu_PrintText(text, 7, var); + Menu_PrintText(text, BLENDER_DEBUG_BERRY_LEN + 1, var); } if (sBlenderDebug.pokeblock.color != 0) { @@ -3343,7 +3350,7 @@ static void BlenderDebug_PrintBerryData(void) ConvertIntToHexStringN(&text[15], sBlenderDebug.feel, 2, 2); text[17] = EOS; - Menu_PrintText(text, 7, 17); + Menu_PrintText(text, BLENDER_DEBUG_BERRY_LEN + 1, 17); } } diff --git a/src/debug/ereader_debug_menu.c b/src/debug/ereader_debug_menu.c index aaffca383..74a5ff10c 100644 --- a/src/debug/ereader_debug_menu.c +++ b/src/debug/ereader_debug_menu.c @@ -10,7 +10,11 @@ #include "berry.h" #include "mail_data.h" +#if DEBUG +const u8 Str_842E238[] = DTR("タマゴ", "EGG"); +#else const u8 Str_842E238[] = _("タマゴ"); +#endif #if DEBUG @@ -131,7 +135,7 @@ extern u8 gUnknown_Debug_845DDB2[]; extern u8 gUnknown_Debug_845DDB2End[]; extern u8 gUnknown_Debug_845DDD6[]; -const u8 Str_842E23C[] = _("ガイブ"); +const u8 Str_842E23C[] = DTR("ガイブ", "EXTERNAL"); size_t debug_sub_813C5B4(u8 * dest) { @@ -286,7 +290,7 @@ extern u8 gUnknown_Debug_845E4EF[]; extern u8 gUnknown_Debug_845E4EFEnd[]; extern u8 gUnknown_Debug_845E506[]; -const u8 Str_842E253[] = _(" そら  カードイー"); +const u8 Str_842E253[] = DTR(" そら  カードイー", "eCARD TRAINER"); size_t debug_sub_813C93C(u8 * dest) { @@ -305,22 +309,22 @@ size_t debug_sub_813C93C(u8 * dest) return size; } -const u8 Str_842E25E[] = _("ポケコッコ"); +const u8 Str_842E25E[] = KANA("ポケコッコ"); // TRN: kokko? const u8 Str_842E264[] = _("ticket"); const u8 Str_842E26B[] = _("{PKMN}"); -const u8 Str_842E26E[] = _("wrong {PKMN}"); +const u8 Str_842E26E[] = _("wrong {PKMN}"); const u8 Str_842E277[] = _("ribbon"); const u8 Str_842E27E[] = _("DEX"); const u8 Str_842E282[] = _("message"); const u8 Str_842E28A[] = _("egg"); -const u8 Str_842E28E[] = _("RAM seed"); +const u8 Str_842E28E[] = _("RAM seed"); const u8 Str_842E297[] = _("trainer"); const u8 Str_842E29F[] = _("clock"); const u8 Str_842E2A5[] = _("item"); const u8 Str_842E2AA[] = _("goods"); const u8 Str_842E2B0[] = _("potion"); const u8 Str_842E2B7[] = _("ball"); -const u8 Str_842E2BC[] = _("cheri berry"); +const u8 Str_842E2BC[] = _("cheri berry"); const u8 Str_842E2C8[] = _("TM01"); const struct UnkDebugMenu3Items gUnknown_Debug_842E2D0[] = { diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 1d2879661..27d2db66b 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -44,13 +44,13 @@ static void sub_80AA614(u8, u8); static void sub_80AAD08(struct Sprite *, s8); // unused -const u8 gText_Unused83C9150[] = _("テストです"); // "test" +const u8 gText_Unused83C9150[] = DTR("テストです", "Test"); const u8 gMatsudaDebugMenu_ActionContestText[] = _("Contest"); const u8 gMatsudaDebugMenu_ActionContestResultsText[] = _("Contest results"); // unused -const u8 gMatsudaDebugMenu_ActionChangePerimeterText[] = _("パラメータへんこう"); // "Change parameter" +const u8 gMatsudaDebugMenu_ActionChangeParameterText[] = DTR("パラメータへんこう", "Change parameter"); // unused -const u8 gMatsudaDebugMenu_ActionChangeMoveText[] = _("わざ へんこう"); // "Change move" +const u8 gMatsudaDebugMenu_ActionChangeMoveText[] = DTR("わざ へんこう", "Change move"); // "Change move" const u8 gMatsudaDebugMenu_ActionContestCommText[] = _("Contest (comm.)"); const u8 gMatsudaDebugMenu_ActionCommTestText[] = _("Init comm. data"); const u8 gMatsudaDebugMenu_ActionSetHighScoreText[] = _("Set highest score"); @@ -387,8 +387,8 @@ static void (* const gUnknown_083C92E4[][2])(struct Sprite *, s8) = }; static const u8 gMatsudaDebugMenu_StartText[] = _("{COLOR CYAN}{HIGHLIGHT RED}"); -static const u8 gMatsudaDebugMenu_StartJapText[] = _("かいし"); // because StartText is only called by StringCopy, this part appears to be unused. -static const u8 gMatsudaDebugMenu_GoBackText[] = _("もどる"); +static const u8 gMatsudaDebugMenu_StartJapText[] = DTR("かいし", "START"); // because StartText is only called by StringCopy, this part appears to be unused. +static const u8 gMatsudaDebugMenu_GoBackText[] = DTR("もどる", "BACK"); #ifdef GERMAN static const u8 gMatsudaDebugMenu_BattlePointsText[] = _("{COLOR MAGENTA}BP,"); @@ -396,12 +396,12 @@ static const u8 gMatsudaDebugMenu_BattlePointsText[] = _("{COLOR MAGENTA}BP,"); static const u8 gMatsudaDebugMenu_BattlePointsText[] = _("{COLOR MAGENTA}BP."); #endif -static const u8 MatsudaDebugMenuText_Cool[] = _("かっこよさ"); // cool -static const u8 MatsudaDebugMenuText_Cute[] = _("かわいさ"); // cute -static const u8 MatsudaDebugMenuText_Beauty[] = _("うつくしさ"); // beauty -static const u8 MatsudaDebugMenuText_Smart[] = _("かしこさ"); // smart -static const u8 MatsudaDebugMenuText_Tough[] = _("たくましさ"); // tough -static const u8 MatsudaDebugMenuText_Sheen[] = _("けづや"); // sheen +static const u8 MatsudaDebugMenuText_Cool[] = DTR("かっこよさ", "COOL"); +static const u8 MatsudaDebugMenuText_Cute[] = DTR("かわいさ", "CUTE"); +static const u8 MatsudaDebugMenuText_Beauty[] = DTR("うつくしさ", "BEAUTY"); +static const u8 MatsudaDebugMenuText_Smart[] = DTR("かしこさ", "SMART"); +static const u8 MatsudaDebugMenuText_Tough[] = DTR("たくましさ", "TOUGH"); +static const u8 MatsudaDebugMenuText_Sheen[] = DTR("けづや", "SHEEN"); static const u8 *const gMatsudaDebugMenuTextList1[] = { @@ -413,11 +413,11 @@ static const u8 *const gMatsudaDebugMenuTextList1[] = MatsudaDebugMenuText_Sheen, }; -static const u8 MatsudaDebugMenuText_CoolContest[] = _("かっこよさコンテスト"); -static const u8 MatsudaDebugMenuText_BeautyContest[] = _("うつくしさコンテスト"); -static const u8 MatsudaDebugMenuText_CuteContest[] = _("かわいさコンテスト "); -static const u8 MatsudaDebugMenuText_SmartContest[] = _("かしこさコンテスト "); -static const u8 MatsudaDebugMenuText_ToughContest[] = _("たくましさコンテスト"); +static const u8 MatsudaDebugMenuText_CoolContest[] = DTR("かっこよさコンテスト", "COOL CONTEST"); +static const u8 MatsudaDebugMenuText_BeautyContest[] = DTR("うつくしさコンテスト", "BEAUTY CONTEST"); +static const u8 MatsudaDebugMenuText_CuteContest[] = DTR("かわいさコンテスト ", "CUTE CONTEST"); +static const u8 MatsudaDebugMenuText_SmartContest[] = DTR("かしこさコンテスト ", "SMART CONTEST"); +static const u8 MatsudaDebugMenuText_ToughContest[] = DTR("たくましさコンテスト", "TOUGH CONTEST"); static const u8 *const gMatsudaDebugMenuTextList2[] = { @@ -428,10 +428,10 @@ static const u8 *const gMatsudaDebugMenuTextList2[] = MatsudaDebugMenuText_ToughContest, }; -static const u8 MatsudaDebugMenuText_Fallarbor[] = _("ハジツゲ/ノーマル"); // Fallarbor / Normal -static const u8 MatsudaDebugMenuText_Verdanturf[] = _("シダケ/スーパー "); // Verdanturf / Super -static const u8 MatsudaDebugMenuText_Slateport[] = _("カイナ/ハイパー "); // Slateport / Hyper -static const u8 MatsudaDebugMenuText_Lilycove[] = _("ミナモ/マスター "); // Lilycove / Master +static const u8 MatsudaDebugMenuText_Fallarbor[] = DTR("ハジツゲ/ノーマル", "FALLARBOR/NORMAL"); // Fallarbor / Normal +static const u8 MatsudaDebugMenuText_Verdanturf[] = DTR("シダケ/スーパー ", "VERDANTURF/SUPER"); // Verdanturf / Super +static const u8 MatsudaDebugMenuText_Slateport[] = DTR("カイナ/ハイパー ", "SLATEPORT/HYPER"); // Slateport / Hyper +static const u8 MatsudaDebugMenuText_Lilycove[] = DTR("ミナモ/マスター ", "LILYCOVE/MASTER"); // Lilycove / Master static const u8 *const gMatsudaDebugMenuTextList3[] = { diff --git a/src/debug/mori_debug_menu.c b/src/debug/mori_debug_menu.c index 4f798ecb3..b930350ff 100644 --- a/src/debug/mori_debug_menu.c +++ b/src/debug/mori_debug_menu.c @@ -31,9 +31,9 @@ const u8 gUnknown_0839B22C[][3] = }; const u8 gUnknown_0839B24A[] = _("ND"); -const u8 gUnknown_0839B24D[] = _("の こどもは\n"); // "'s child "= +const u8 gUnknown_0839B24D[] = DTR("の こどもは\n", "'s child =\n"); // TRN const u8 gUnknown_0839B255[] = _(" "); -const u8 gUnknown_0839B257[] = _("ながいなまえぽけもん"); // "long name pokemon" (used as test name) +const u8 gUnknown_0839B257[] = DTR("ながいなまえぽけもん", "LongName{PKMN}"); // "long name pokemon" (used as test name) const u8 Text_39B262[] = _("Search a child"); const u8 Text_39B271[] = _("Egg"); const u8 Text_39B275[] = _("Egg (male)"); @@ -45,7 +45,7 @@ const u8 Text_39B2AF[] = _("Long name"); #ifdef GERMAN const u8 Text_39B2B9[] = _("Delete {POKEBLOCK}"); #else -const u8 Text_39B2B9[] = _("ポロックけす"); +const u8 Text_39B2B9[] = DTR("ポロックけす", "Delete {POKEBLOCK}"); #endif const struct MenuAction gMoriDebugMenuActions[] = diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c index e6af3c58d..32ac57dc2 100644 --- a/src/debug/nakamura_debug_menu.c +++ b/src/debug/nakamura_debug_menu.c @@ -50,7 +50,7 @@ static bool8 SetPokeblock(void); static const u8 Str_843E36C[] = _("Berries"); static const u8 Str_843E374[] = _("Goods"); static const u8 Str_843E37A[] = _("{PKMN} list"); -static const u8 Str_843E382[] = _("トラップ"); +static const u8 Str_843E382[] = DTR("トラップ", "Trap"); static const u8 Str_843E387[] = _("Move your base"); static const u8 Str_843E396[] = _("Moving {PKMN}"); static const u8 Str_843E3A0[] = _("Fishing points"); @@ -874,10 +874,11 @@ static struct { EWRAM_DATA u8 sNakaGenderTest_CursorPosition = 0; static const u8 _843E5D1[] = {0x0F, 0x16, 0x19}; -static const u8 Str_843E5D4[] = _( - "Aボタン {ESCAPE}\p" - "  Bボタン ー\n" - "START けってい"); +static const u8 Str_843E5D4[] = DTR( + "Aボタン {TALL_PLUS}  Bボタン ー\n" + "START けってい", + "A BUTTON {TALL_PLUS} B BUTTON {JPN}ー{ENG}\n" + "START CHOOSE"); void NakaGenderTest(void) { @@ -1916,14 +1917,14 @@ static bool8 SetPokeblock(void) EWRAM_DATA u8 sEVTest_CursorPosition = 0; -static const u8 Str_843E5F2[] = _("HP どりょくち"); -static const u8 Str_843E5FB[] = _("こうげき どりょくち"); -static const u8 Str_843E606[] = _("ぼうぎょ どりょくち"); -static const u8 Str_843E611[] = _("すばやさ どりょくち"); -static const u8 Str_843E61C[] = _("とくこう どりょくち"); -static const u8 Str_843E627[] = _("とくぼう どりょくち"); -static const u8 Str_843E632[] = _("なつきど"); -static const u8 Str_843E637[] = _("どりょくち ごうけい"); +static const u8 Str_843E5F2[] = DTR("HP どりょくち", "HP EVs"); +static const u8 Str_843E5FB[] = DTR("こうげき どりょくち", "ATK EVs"); +static const u8 Str_843E606[] = DTR("ぼうぎょ どりょくち", "DEF EVs"); +static const u8 Str_843E611[] = DTR("すばやさ どりょくち", "SPE EVs"); +static const u8 Str_843E61C[] = DTR("とくこう どりょくち", "SPA EVs"); +static const u8 Str_843E627[] = DTR("とくぼう どりょくち", "SPD EVs"); +static const u8 Str_843E632[] = DTR("なつきど", "FRIENDSHIP"); +static const u8 Str_843E637[] = DTR("どりょくち ごうけい", "EV TOTAL"); static void EVTest_Init(void) { @@ -2071,13 +2072,13 @@ EWRAM_DATA u16 sRngRight = 0; EWRAM_DATA u16 sNumSamples = 0; EWRAM_DATA u16 sRngMax = 0; -static const u8 Str_843E642[] = _("ここから"); -static const u8 Str_843E647[] = _("ここまで"); -static const u8 Str_843E64C[] = _("かいすう"); -static const u8 Str_843E651[] = _("けっか"); -static const u8 Str_843E655[] = _("かい"); +static const u8 Str_843E642[] = DTR("ここから", "FROM"); +static const u8 Str_843E647[] = DTR("ここまで", "TO"); +static const u8 Str_843E64C[] = DTR("かいすう", "TIMES"); +static const u8 Str_843E651[] = DTR("けっか", "RESULT"); +static const u8 Str_843E655[] = DTR("かい", "×"); static const u8 Str_843E658[] = _("0"); -static const u8 Str_843E65A[] = _("はんい"); +static const u8 Str_843E65A[] = DTR("はんい", "RANGE"); static u16 EVTest_GetDiscreteUniformRandomSamples(void) { diff --git a/src/debug/nohara_debug_menu.c b/src/debug/nohara_debug_menu.c index 349e5111f..4cb0f34ed 100644 --- a/src/debug/nohara_debug_menu.c +++ b/src/debug/nohara_debug_menu.c @@ -58,13 +58,13 @@ bool8 NoharaDebugMenu_AddNumWinningStreaks(void); const u8 gUnknown_Debug_083C48C4[] = _("TV"); const u8 gUnknown_Debug_083C48C7[] = _("Fan"); -const u8 gUnknown_Debug_083C48CB[] = _("Battle (vs Dad)"); -const u8 gUnknown_Debug_083C48DB[] = _("Dad after battle"); -const u8 gUnknown_Debug_083C48EC[] = _("SOOTOPOLIS CITY"); +const u8 gUnknown_Debug_083C48CB[] = _("Battle (vs Dad)"); +const u8 gUnknown_Debug_083C48DB[] = _("Dad after battle"); +const u8 gUnknown_Debug_083C48EC[] = _("SOOTOPOLIS CITY"); const u8 gUnknown_Debug_083C48FC[] = _("Embark"); -const u8 gUnknown_Debug_083C4903[] = _("Yes 9999"); -const u8 gUnknown_Debug_083C490C[] = _("Legends flag ON"); -const u8 gUnknown_Debug_083C491C[] = _("Add num of winning streaks"); +const u8 gUnknown_Debug_083C4903[] = _("Yes 9999"); +const u8 gUnknown_Debug_083C490C[] = _("Legends flag ON"); +const u8 gUnknown_Debug_083C491C[] = _("Add num of winning streaks"); const struct MenuAction gUnknown_Debug_083C4938[] = { {gUnknown_Debug_083C48C4, NoharaDebugMenu_TV}, @@ -104,28 +104,30 @@ bool8 debug_sub_808F414(void) } } -const u8 gUnknown_Debug_083C4980[] = _("Want to change data type{CLEAR_TO 143}Press Left\n" - "to see secret type now?{CLEAR_TO 143}to switch"); +const u8 gUnknown_Debug_083C4980[] = _("Want to change data type{CLEAR_TO 143}Press Left\n" + "to see secret type now?{CLEAR_TO 143}to switch"); -const u8 gUnknown_Debug_083C49CA[] = _("Choose the TV data you wish to\n" - "create to check a transmission。"); +const u8 gUnknown_Debug_083C49CA[] = _("Choose the TV data you wish to\n" + "create to check a transmission。"); -const u8 gUnknown_Debug_083C4A09[] = _("ほうそうの はっせいりつを セット\n" - "してください ?ぶんの1に なります"); +const u8 gUnknown_Debug_083C4A09[] = DTR("ほうそうの はっせいりつを セット\n" + "してください ?ぶんの1に なります", + "Please set the transmission frequency\n" + "Part 1"); const u8 gUnknown_Debug_083C4A2E[] = _("SURVEY"); -const u8 gUnknown_Debug_083C4A35[] = _("RECENT HAPPENINGS"); -const u8 gUnknown_Debug_083C4A47[] = _("POKひMON FAN CLUB"); -const u8 gUnknown_Debug_083C4A58[] = _("ジム"); +const u8 gUnknown_Debug_083C4A35[] = _("RECENT HAPPENINGS"); +const u8 gUnknown_Debug_083C4A47[] = _("POKéMON FAN CLUB"); +const u8 gUnknown_Debug_083C4A58[] = DTR("ジム", "GYM"); const u8 gUnknown_Debug_083C4A5B[] = _("OUTBREAKS"); -const u8 gUnknown_Debug_083C4A65[] = _("NAME RATER"); +const u8 gUnknown_Debug_083C4A65[] = _("NAME RATER"); const u8 gUnknown_Debug_083C4A70[] = _("CONTEST"); const u8 gUnknown_Debug_083C4A78[] = _("INTRODUCTION"); const u8 gUnknown_Debug_083C4A85[] = _("SHOPPING"); const u8 gUnknown_Debug_083C4A8E[] = _("MISFORTUNE"); const u8 gUnknown_Debug_083C4A99[] = _("FISHING"); -const u8 gUnknown_Debug_083C4AA1[] = _("MEMORABLE DAY"); -const u8 gUnknown_Debug_083C4AAF[] = _("BRAVO TRAINER"); +const u8 gUnknown_Debug_083C4AA1[] = _("MEMORABLE DAY"); +const u8 gUnknown_Debug_083C4AAF[] = _("BRAVO TRAINER"); const u8 gUnknown_Debug_083C4ABD[] = { TVSHOW_FAN_CLUB_LETTER, @@ -159,8 +161,8 @@ const u8 *const gUnknown_Debug_083C4ACC[] = { const u8 gDebugText_BigSale[] = _("BIG SALE"); -const u8 gUnknown_Debug_083C4B05[] = _("SERVICE DAY"); -const u8 gUnknown_Debug_083C4B11[] = _("CLEARーOUT SALE"); +const u8 gUnknown_Debug_083C4B05[] = _("SERVICE DAY"); +const u8 gUnknown_Debug_083C4B11[] = _("CLEAR-OUT SALE"); const u8 gUnknown_Debug_083C4B20[] = {1, 2, 3}; const u8 *const gUnknown_Debug_083C4B24[] = { @@ -169,15 +171,15 @@ const u8 *const gUnknown_Debug_083C4B24[] = { gUnknown_Debug_083C4B11 }; -const u8 gUnknown_Debug_083C4B30[] = _("Secret type"); +const u8 gUnknown_Debug_083C4B30[] = _("Secret type"); const u8 gUnknown_Debug_083C4B3C[] = _("Start"); -const u8 gUnknown_Debug_083C4B42[] = _("Create TV"); -const u8 gUnknown_Debug_083C4B4C[] = _("All clear"); -const u8 gUnknown_Debug_083C4B56[] = _("All seen"); -const u8 gUnknown_Debug_083C4B5F[] = _("Create CM"); -const u8 gUnknown_Debug_083C4B69[] = _("Not yet seen"); -const u8 gUnknown_Debug_083C4B76[] = _("Hit Table"); -const u8 gUnknown_Debug_083C4B80[] = _("Set full"); +const u8 gUnknown_Debug_083C4B42[] = _("Create TV"); +const u8 gUnknown_Debug_083C4B4C[] = _("All clear"); +const u8 gUnknown_Debug_083C4B56[] = _("All seen"); +const u8 gUnknown_Debug_083C4B5F[] = _("Create CM"); +const u8 gUnknown_Debug_083C4B69[] = _("Not yet seen"); +const u8 gUnknown_Debug_083C4B76[] = _("Hit Table"); +const u8 gUnknown_Debug_083C4B80[] = _("Set full"); // Normaly these would be struct MenuAction, but the prototype of // member .func is not consistent. @@ -754,15 +756,15 @@ bool8 debug_sub_80900AC(void) CloseMenu(); return TRUE; } - -const u8 gUnknown_Debug_083C4C77[] = _("1 スクル"); -const u8 gUnknown_Debug_083C4C7D[] = _("2 ミドル"); -const u8 gUnknown_Debug_083C4C83[] = _("3 オジヨ"); -const u8 gUnknown_Debug_083C4C89[] = _("4 ボーヤ"); -const u8 gUnknown_Debug_083C4C8F[] = _("5 ボーイ"); -const u8 gUnknown_Debug_083C4C95[] = _("6 ヤング"); -const u8 gUnknown_Debug_083C4C9B[] = _("7 ヲーカ"); -const u8 gUnknown_Debug_083C4CA1[] = _("8 オルド"); +// TRN: Figure out the meaning of these abbreviations +const u8 gUnknown_Debug_083C4C77[] = DTR("1 スクル", "1 SCHOOL"); +const u8 gUnknown_Debug_083C4C7D[] = DTR("2 ミドル", "2 MIDDLE"); +const u8 gUnknown_Debug_083C4C83[] = DTR("3 オジヨ", "3 UNCLE"); +const u8 gUnknown_Debug_083C4C89[] = DTR("4 ボーヤ", "4 BOY"); +const u8 gUnknown_Debug_083C4C8F[] = DTR("5 ボーイ", "5 BOY"); +const u8 gUnknown_Debug_083C4C95[] = DTR("6 ヤング", "6 YOUNG"); +const u8 gUnknown_Debug_083C4C9B[] = DTR("7 ヲーカ", "7 WOUKA"); +const u8 gUnknown_Debug_083C4CA1[] = DTR("8 オルド", "8 OLD"); const u8 *const gUnknown_Debug_083C4CA8[] = { gUnknown_Debug_083C4C77, @@ -779,11 +781,11 @@ const u8 gUnknown_Debug_083C4CC8[] = _("Start"); const u8 gUnknown_Debug_083C4CCE[] = _("Increase"); const u8 gUnknown_Debug_083C4CD7[] = _("Reduce"); const u8 gUnknown_Debug_083C4CDE[] = _("Points"); -const u8 gUnknown_Debug_083C4CE5[] = _("Play time 6"); -const u8 gUnknown_Debug_083C4CF1[] = _("P ELITE FOUR"); -const u8 gUnknown_Debug_083C4CFE[] = _("P SECRET BASE"); -const u8 gUnknown_Debug_083C4D0C[] = _("P CONTEST"); -const u8 gUnknown_Debug_083C4D16[] = _("P BATTLE TOWER"); +const u8 gUnknown_Debug_083C4CE5[] = _("Play time 6"); +const u8 gUnknown_Debug_083C4CF1[] = _("P ELITE FOUR"); +const u8 gUnknown_Debug_083C4CFE[] = _("P SECRET BASE"); +const u8 gUnknown_Debug_083C4D0C[] = _("P CONTEST"); +const u8 gUnknown_Debug_083C4D16[] = _("P BATTLE TOWER"); const struct MenuAction gUnknown_Debug_083C4D28[] = { {gUnknown_Debug_083C4CC8, debug_sub_80901E4}, diff --git a/src/debug/sound_check_menu.c b/src/debug/sound_check_menu.c index 1ead5ae1b..95e71fad5 100644 --- a/src/debug/sound_check_menu.c +++ b/src/debug/sound_check_menu.c @@ -156,10 +156,10 @@ void CB2_StartSoundCheckMenu(void) void Task_InitSoundCheckMenu(u8 taskId) { - u8 soundcheckStr[] = _("サウンドチェック"); + u8 soundcheckStr[] = DTR("サウンドチェック", "SOUND CHECK"); u8 bgmStr[] = _("BGM"); u8 seStr[] = _("SE "); - u8 abDescStr[] = _("A‥さいせい B‥おわり"); + u8 abDescStr[] = DTR("A‥さいせい B‥おわり", "A PLAY B STOP"); u8 upDownStr[] = _("L‥UP R‥DOWN"); u8 driverStr[] = _("R‥DRIVER-TEST"); @@ -399,8 +399,8 @@ void sub_80BA79C(const u8 *const string, u16 x, u16 y) void Task_DrawDriverTestMenu(u8 taskId) // Task_DrawDriverTestMenu { - u8 bbackStr[] = _("Bぼたんで もどる"); - u8 aplayStr[] = _("Aぼたんで さいせい"); + u8 bbackStr[] = DTR("Bぼたんで もどる", "B BUTTON: BACK"); + u8 aplayStr[] = DTR("Aぼたんで さいせい", "A BUTTON: PLAY"); u8 voiceStr[] = _("VOICE‥‥‥‥"); u8 volumeStr[] = _("VOLUME‥‥‥"); u8 panpotStr[] = _("PANPOT‥‥‥"); @@ -410,9 +410,9 @@ void Task_DrawDriverTestMenu(u8 taskId) // Task_DrawDriverTestMenu u8 progressStr[] = _("PROGRESS‥"); u8 chorusStr[] = _("CHORUS‥‥‥"); u8 priorityStr[] = _("PRIORITY‥"); - u8 playingStr[] = _("さいせいちゆう‥"); // 再生中 (playing) - u8 reverseStr[] = _("はんてん‥‥‥‥"); // 反転 (reverse) - u8 stereoStr[] = _("すてれお‥‥‥‥"); // stereo + u8 playingStr[] = DTR("さいせいちゆう‥", "PLAYING"); // 再生中 (playing) + u8 reverseStr[] = DTR("はんてん‥‥‥‥", "REVERSE"); // 反転 (reverse) + u8 stereoStr[] = DTR("すてれお‥‥‥‥", "STEREO"); // stereo REG_DISPCNT = 0x3140; Menu_DrawStdWindowFrame(0, 0, 29, 19); @@ -680,7 +680,7 @@ void sub_80BAF84(u8 taskId) { u8 seStr[] = _("SE"); u8 panStr[] = _("PAN"); - u8 playingStr[] = _("さいせいちゆう‥"); + u8 playingStr[] = DTR("さいせいちゆう‥", "PLAYING"); REG_DISPCNT = 0x3140; Menu_DrawStdWindowFrame(0, 0, 29, 19); diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 01f04b8d9..f64de18e9 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -174,8 +174,8 @@ const u8 Str_839B7D8[] = _("Transport"); const u8 Str_839B7E2[] = _("See portraits"); const u8 Str_839B7F0[] = _("Time records"); const u8 Str_839B7FD[] = _("Set time"); -const u8 Str_839B806[] = _("National オカDex"); -const u8 Str_839B815[] = _("Hoenn オカDex"); +const u8 Str_839B806[] = _("National {POKE}Dex"); +const u8 Str_839B815[] = _("Hoenn {POKE}Dex"); const u8 Str_839B821[] = _("Create {PKMN}"); const u8 Str_839B82B[] = _("See {PKMN} graphics"); const u8 Str_839B83B[] = _("See trainers"); @@ -272,21 +272,22 @@ const u8 gUnknown_Debug_839BB64[] = const u8 gUnknown_Debug_0839BBA4[] = _("Debugging Version"); const u8 gUnknown_Debug_0839BBB6[] = _("{VERSION} Version"); const u8 gUnknown_Debug_0839BBC1[] = _("Normal RTC compatible"); -const u8 Str_839BBD7[] = _("か の じっけん"); -const u8 Str_839BBE0[] = _("じっけん2"); -const u8 Str_839BBE6[] = _("BGじっけん"); + +const u8 Str_839BBD7[] = DTR("か の じっけん", "Test"); +const u8 Str_839BBE0[] = DTR("じっけん2", "Test2"); +const u8 Str_839BBE6[] = DTR("BGじっけん", "BG Test"); const u8 Str_839BBED[] = _("Battle"); -const u8 Str_839BBF4[] = _("つうしん じっけん"); +const u8 Str_839BBF4[] = DTR("つうしん じっけん", "LINK Test"); const u8 Str_839BBFE[] = _("LINK Test2"); -const u8 Str_839BC09[] = _("フィールド はじめる"); -const u8 Str_839BC14[] = _("フィールド つづき"); +const u8 Str_839BC09[] = DTR("フィールド はじめる", "Field Start"); // TRN +const u8 Str_839BC14[] = DTR("フィールド つづき", "Field Continue"); // TRN const u8 Str_839BC1E[] = _("Sound test"); const u8 Str_839BC29[] = _("{POKEBLOCK} test"); const u8 Str_839BC34[] = _("Crash backup data"); const u8 Str_839BC46[] = _("e-Card test"); -const u8 Str_839BC52[] = _("こうかんデモ   "); +const u8 Str_839BC52[] = DTR("こうかんデモ   ", "Trade demo"); const u8 Str_839BC5C[] = _("Time in game"); -const u8 Str_839BC69[] = _("フェスタ モード"); +const u8 Str_839BC69[] = DTR("フェスタ モード", "Festa mode"); // TRN const u8 Str_839BC72[] = _("Mimic e-Card"); const u8 Str_839BC7F[] = _("RTC reset"); const u8 Str_839BC89[] = _("Converter"); @@ -324,16 +325,20 @@ const u8 gMenuOrders_839BD14[][10] = const u8 Str_839BD26[] = {2, 0, 0, 0}; // doesn't appear to be referenced -const u8 Str_839BD2C[] = _("RTCを リセット します\n" // Reset RTC - "Aで じっこう   Bでキャンセル"); - -const u8 Str_839BD4C[] = _("RTCを リセット した!"); +const u8 Str_839BD2C[] = DTR("RTCを リセット します\n" // Reset RTC + "Aで じっこう   Bでキャンセル", + "Reset RTC?\n" + "A: START B: CANCEL"); -const u8 Str_839BD5A[] = _("セーブデータを コンバートします\n" - "Aで けってい  Bで キャンセル"); +const u8 Str_839BD4C[] = DTR("RTCを リセット した!", "RTC reset successful!"); -const u8 Str_839BD7D[] = _("へんかんが しゅうりょう しました!"); +const u8 Str_839BD5A[] = DTR("セーブデータを コンバートします\n" + "Aで けってい  Bで キャンセル", + "Convert save data?\n" + "A: CONFIRM B: CANCEL"); +const u8 Str_839BD7D[] = DTR("へんかんが しゅうりょう しました!", + "Conversion finished!"); extern const u8 Str_839BD2C[]; extern const u8 Str_839BD4C[]; @@ -593,14 +598,14 @@ u8 DebugMenu_8076EDC(void) return 0; } -const u8 Str_839BD90[] = _("ジュンイチ"); -const u8 Str_839BD96[] = _("ダイゴロウ"); -const u8 Str_839BD9C[] = _("テツジ"); -const u8 Str_839BDA0[] = _("バレンシア"); -const u8 Str_839BDA6[] = _("ハルコマチ"); +const u8 Str_839BD90[] = DTR("ジュンイチ", "JUNICHI"); +const u8 Str_839BD96[] = DTR("ダイゴロウ", "STEVEN LOW"); // TRN - likely special char +const u8 Str_839BD9C[] = DTR("テツジ", "TETSUJI"); +const u8 Str_839BDA0[] = DTR("バレンシア", "VALENCIA"); // TRN +const u8 Str_839BDA6[] = DTR("ハルコマチ", "HARUKOMACHI"); // TRN const u8 Str_839BDAC[] = _("RAYMOND"); const u8 Str_839BDB4[] = _("TIFFANY"); -const u8 Str_839BDBC[] = _("くまxちえ"); +const u8 Str_839BDBC[] = DTR("くまxちえ", "KUMA x CHIE"); // TRN const struct { const u8 * text; @@ -869,7 +874,7 @@ const u8 Str_839BE0F[] = _("HP"); const u8 Str_839BE12[] = _("PAR"); const u8 Str_839BE16[] = _("SLP"); const u8 Str_839BE1A[] = _("PSN"); -const u8 Str_839BE1E[] = _("ウマイ"); +const u8 Str_839BE1E[] = KANA("ウマイ"); u8 DebugMenu_8077434(void) { @@ -1161,10 +1166,12 @@ u8 DebugMenu_8077954(void) return TRUE; } -const u8 Str_839BE6B[] = _("さいせんかのうトレーナー:{STR_VAR_1}\n" - "さいせんじょうたいトレーナー:{STR_VAR_2}"); -const u8 Str_839BE8D[] = _("いる"); -const u8 Str_839BE90[] = _("いない"); +const u8 Str_839BE6B[] = DTR("さいせんかのうトレーナー:{STR_VAR_1}\n" + "さいせんじょうたいトレーナー:{STR_VAR_2}", + "Rematchable TRAINERS: {STR_VAR_1}\n" + "TRAINERS in rematch state: {STR_VAR_2}"); +const u8 Str_839BE8D[] = DTR("いる", "ON"); +const u8 Str_839BE90[] = DTR("いない", "OFF"); bool8 DebugMenu_8077974(void) { @@ -1251,11 +1258,15 @@ bool8 DebugMenu_8077AE8(void) return TRUE; } -const u8 Str_839BF0C[] = _("のこり {STR_VAR_1}ほ"); -const u8 Str_839BF14[] = _("{STR_VAR_1}\n" - "のこり {STR_VAR_2}ほ"); -const u8 Str_839BF1F[] = _("めのまえには\n" - "キューブが ありません!"); +const u8 Str_839BF0C[] = DTR("のこり {STR_VAR_1}ほ", "Remaining steps: {STR_VAR_1}"); +const u8 Str_839BF14[] = DTR("{STR_VAR_1}\n" + "のこり {STR_VAR_2}ほ", + "{STR_VAR_1}\n" + "Remaining steps: {STR_VAR_2}"); +const u8 Str_839BF1F[] = DTR("めのまえには\n" + "キューブが ありません!", + "There is no {POKEBLOCK}\n" + "in front of you!"); bool8 DebugMenu_8077B00(void) { @@ -1268,11 +1279,11 @@ bool8 DebugMenu_8077B00(void) return FALSE; } -const u8 Str_839BF33[] = _("ほすうをのこり1にする"); -const u8 Str_839BF3F[] = _("ボールをのこり1にする"); -const u8 Str_839BF4B[] = _("キューブおきば"); -const u8 Str_839BF53[] = _("ボールをのこり30に"); -const u8 Str_839BF5E[] = _("ほすうをのこり500に"); +const u8 Str_839BF33[] = DTR("ほすうをのこり1にする", "One step remaining"); +const u8 Str_839BF3F[] = DTR("ボールをのこり1にする", "One BALL remaining"); +const u8 Str_839BF4B[] = DTR("キューブおきば", "{POKEBLOCK} FEEDER"); +const u8 Str_839BF53[] = DTR("ボールをのこり30に", "30 BALLS remaining"); +const u8 Str_839BF5E[] = DTR("ほすうをのこり500に", "500 steps remaining"); const struct MenuAction gUnknown_Debug_839BF6C[] = { {Str_839BF4B, DebugMenu_8077B00}, @@ -1366,7 +1377,8 @@ u8 DebugMenu_8077C14(void) return FALSE; } -const u8 Str_839BFDC[] = _(" じかん ふん びょう"); + +const u8 Str_839BFDC[] = DTR(" じかん ふん びょう", " HOURS MINUTES SECONDS"); const s32 gUnknown_Debug_839BFE8[] = { 99, 10, 2, 23, @@ -1636,7 +1648,7 @@ void DebugMenu_8077F40(u8 taskId) task->func = DebugMenu_8077F7C; } -const u8 Str_839C014[] = _("How many?"); +const u8 Str_839C014[] = _("How many?"); void DebugMenu_8077F7C(u8 taskId) { @@ -1685,13 +1697,19 @@ void DebugMenu_807806C(u8 taskId) DebugMenu_8077048(); } -const u8 Str_839C01E[] = _("にがおえ ばんごう\n" - "ポケモンナンバー\n" - "ポケモンめい\n" - "ブリーダーめい\n" - "しゅるい\n" - "こせいらんすう"); -const u8 Str_839C04D[] = _("データなし"); +const u8 Str_839C01E[] = DTR("にがおえ ばんごう\n" + "ポケモンナンバー\n" + "ポケモンめい\n" + "ブリーダーめい\n" + "しゅるい\n" + "こせいらんすう", + "PORTRAIT No.\n" + "POKéMON No.\n" + "POKéMON Name\n" + "BREEDER Name\n" // TRN ? + "TYPE\n" + "Personality"); +const u8 Str_839C04D[] = DTR("データなし", "No data"); void DebugMenu_807808C(u32 a0) { @@ -1932,60 +1950,61 @@ u8 DebugMenu_OpenMysteryEvent(void) const u8 Str_839C07C[] = _("{STR_VAR_1}:{STR_VAR_2}\n" "{STR_VAR_3}"); -const u8 Str_839C085[] = _("みしよう データ"); +const u8 Str_839C085[] = DTR("みしよう データ", "Unused data"); const u8 Str_839C08E[] = _("Confirmation"); const u8 Str_839C09B[] = _("Max-1 set"); const u8 Str_839C0A5[] = _("Zero clear"); -const u8 Str_839C0B0[] = _("レポート"); -const u8 Str_839C0B5[] = _("クリア じかん"); -const u8 Str_839C0BD[] = _("りゅうこう さくせい"); -const u8 Str_839C0C8[] = _("きのみを うえたかいすう"); -const u8 Str_839C0D5[] = _("じてんしゃこうかん"); -const u8 Str_839C0DF[] = _("ほすう"); -const u8 Str_839C0E3[] = _("インタビュー"); -const u8 Str_839C0EA[] = _("バトル"); -const u8 Str_839C0EE[] = _("やせいバトル"); -const u8 Str_839C0F5[] = _("トレーナーバトル"); -const u8 Str_839C0FE[] = _("でんどういり"); -const u8 Str_839C105[] = _("ポケモンほかく"); -const u8 Str_839C10D[] = _("つった かいすう"); -const u8 Str_839C116[] = _("タマゴかえった"); -const u8 Str_839C11E[] = _("しんかした"); -const u8 Str_839C124[] = _("ポケセン かいふく"); -const u8 Str_839C12E[] = _("じたく かいふく"); -const u8 Str_839C137[] = _("サファリ りよう"); -const u8 Str_839C140[] = _("ひでん:いあいぎり"); -const u8 Str_839C14A[] = _("ひでん:いわくだき"); -const u8 Str_839C154[] = _("きち ひっこし"); -const u8 Str_839C15C[] = _("つうしんこうかん"); -const u8 Str_839C165[] = _("つうしんたいせん"); -const u8 Str_839C16E[] = _("つうしん かち"); -const u8 Str_839C176[] = _("つうしん まけ"); -const u8 Str_839C17E[] = _("つうしん ひきわけ"); -const u8 Str_839C188[] = _("わざ:はねる"); -const u8 Str_839C18F[] = _("わざ:わるあがき"); -const u8 Str_839C198[] = _("スロットおおあたりかいすう"); -const u8 Str_839C1A6[] = _("ルーレット れんしょう"); -const u8 Str_839C1B2[] = _("バトルタワー"); -const u8 Str_839C1B9[] = _("バトルタワーかち"); -const u8 Str_839C1C2[] = _("バトルタワーれんしょう"); -const u8 Str_839C1CE[] = _("ポロックさくせい"); -const u8 Str_839C1D7[] = _("つうしんでポロックつくった"); -const u8 Str_839C1E5[] = _("つうしんコンテストかち"); -const u8 Str_839C1F1[] = _("CPUコンテストさんか"); -const u8 Str_839C1FD[] = _("CPUコンテストかち"); -const u8 Str_839C208[] = _("かいもの"); -const u8 Str_839C20D[] = _("ダウジングマシン"); -const u8 Str_839C216[] = _("あめふり"); -const u8 Str_839C21B[] = _("ずかんをみた"); -const u8 Str_839C222[] = _("リボン もらった"); -const u8 Str_839C22B[] = _("だんさ とびおり"); -const u8 Str_839C234[] = _("TVを みた"); -const u8 Str_839C23B[] = _("とけいを みた"); -const u8 Str_839C243[] = _("くじが あたった"); -const u8 Str_839C24C[] = _("ポケモンあずけた"); -const u8 Str_839C255[] = _("ロープウェイりよう"); -const u8 Str_839C25F[] = _("おんせん はいった"); +const u8 Str_839C0B0[] = DTR("レポート", "SAVES"); +const u8 Str_839C0B5[] = DTR("クリア じかん", "Clear time"); +const u8 Str_839C0BD[] = DTR("りゅうこう さくせい", "TRENDS created"); +const u8 Str_839C0C8[] = DTR("きのみを うえたかいすう", "BERRIES planted"); +const u8 Str_839C0D5[] = DTR("じてんしゃこうかん", "BIKE swaps"); +const u8 Str_839C0DF[] = DTR("ほすう", "Steps"); +const u8 Str_839C0E3[] = DTR("インタビュー", "INTERVIEWS"); +const u8 Str_839C0EA[] = DTR("バトル", "BATTLES"); +const u8 Str_839C0EE[] = DTR("やせいバトル", "Wild BATTLES"); +const u8 Str_839C0F5[] = DTR("トレーナーバトル", "TRAINER BATTLES"); +const u8 Str_839C0FE[] = DTR("でんどういり", "HALL of FAME times"); +const u8 Str_839C105[] = DTR("ポケモンほかく", "POKéMON caught"); +const u8 Str_839C10D[] = DTR("つった かいすう", "Times fished"); +const u8 Str_839C116[] = DTR("タマゴかえった", "EGGS hatched"); +const u8 Str_839C11E[] = DTR("しんかした", "Evolutions"); +const u8 Str_839C124[] = DTR("ポケセン かいふく", "{PKMN} Center heals"); +const u8 Str_839C12E[] = DTR("じたく かいふく", "Home heals"); +const u8 Str_839C137[] = DTR("サファリ りよう", "SAFARI times"); +const u8 Str_839C140[] = DTR("ひでん:いあいぎり", "HM: CUT"); +const u8 Str_839C14A[] = DTR("ひでん:いわくだき", "HM: ROCK SMASH"); +const u8 Str_839C154[] = DTR("きち ひっこし", "BASE relocations"); +const u8 Str_839C15C[] = DTR("つうしんこうかん", "LINK TRADES"); +const u8 Str_839C165[] = DTR("つうしんたいせん", "LINK BATTLES"); +const u8 Str_839C16E[] = DTR("つうしん かち", "LINK WINS"); +const u8 Str_839C176[] = DTR("つうしん まけ", "LINK LOSSES"); +const u8 Str_839C17E[] = DTR("つうしん ひきわけ", "LINK TIES"); +// Idiot counter? +const u8 Str_839C188[] = DTR("わざ:はねる", "Move: SPLASH"); +const u8 Str_839C18F[] = DTR("わざ:わるあがき", "Move: STRUGGLE"); +const u8 Str_839C198[] = DTR("スロットおおあたりかいすう", "SLOTS jackpots"); +const u8 Str_839C1A6[] = DTR("ルーレット れんしょう", "ROULETTE streak"); +const u8 Str_839C1B2[] = DTR("バトルタワー", "BATTLE TOWER"); +const u8 Str_839C1B9[] = DTR("バトルタワーかち", "BATTLE TOWER wins"); +const u8 Str_839C1C2[] = DTR("バトルタワーれんしょう", "BATTLE TOWER streak"); +const u8 Str_839C1CE[] = DTR("ポロックさくせい", "{POKEBLOCK}s created"); +const u8 Str_839C1D7[] = DTR("つうしんでポロックつくった", "LINK {POKEBLOCK}s made"); +const u8 Str_839C1E5[] = DTR("つうしんコンテストかち", "LINK CONTEST wins"); +const u8 Str_839C1F1[] = DTR("CPUコンテストさんか", "CPU CONTEST entries"); +const u8 Str_839C1FD[] = DTR("CPUコンテストかち", "CPU CONTEST wins"); +const u8 Str_839C208[] = DTR("かいもの", "Shopping"); +const u8 Str_839C20D[] = DTR("ダウジングマシン", "ITEMFINDER"); +const u8 Str_839C216[] = DTR("あめふり", "Rained"); +const u8 Str_839C21B[] = DTR("ずかんをみた", "POKéDEX reads"); +const u8 Str_839C222[] = DTR("リボン もらった", "RIBBONS awarded"); +const u8 Str_839C22B[] = DTR("だんさ とびおり", "Ledge hops"); +const u8 Str_839C234[] = DTR("TVを みた", "Watched TV"); +const u8 Str_839C23B[] = DTR("とけいを みた", "Checked CLOCK"); +const u8 Str_839C243[] = DTR("くじが あたった", "LOTTERY wins"); +const u8 Str_839C24C[] = DTR("ポケモンあずけた", "POKéMON DAYCARE uses"); +const u8 Str_839C255[] = DTR("ロープウェイりよう", "CABLE CAR uses"); +const u8 Str_839C25F[] = DTR("おんせん はいった", "HOT SPRING uses"); const struct { u32 maxVal; @@ -2248,7 +2267,7 @@ u8 DebugMenu_OpenBerryInfo(void) return TRUE; } -const u8 Str_839C42E[] = _("レベル  ステージ"); +const u8 Str_839C42E[] = DTR("レベル  ステージ", "TOWER level stage"); void DebugMenu_8078950(void) { @@ -2337,7 +2356,7 @@ u8 DebugMenu_BattleTowerStages(void) return TRUE; } -const u8 Str_839C438[] = _("ポロック グループ{STR_VAR_1}"); +const u8 Str_839C438[] = DTR("ポロック グループ{STR_VAR_1}", "{POKEBLOCK} GROUP{STR_VAR_1}"); void DebugMenu_8078B70(u16 value) { @@ -2473,10 +2492,10 @@ bool8 DebugMenu_8078CA8(void) return FALSE; } -const u8 Str_839C5CC[] =_("かきこみ せいこう"); -const u8 Str_839C5D6[] =_("よみこみせいこう"); -const u8 Str_839C5DF[] =_("かきこみ しっぱい"); -const u8 Str_839C5E9[] =_("よみこみ しっぱい"); +const u8 Str_839C5CC[] = DTR("かきこみ せいこう", "Write successful"); +const u8 Str_839C5D6[] = DTR("よみこみせいこう", "Read successful"); +const u8 Str_839C5DF[] = DTR("かきこみ しっぱい", "Writing failed"); +const u8 Str_839C5E9[] = DTR("よみこみ しっぱい", "Reading failed"); bool8 DebugMenu_8078CE4(void) { diff --git a/src/debug/taya_debug_window.c b/src/debug/taya_debug_window.c index 68ccc6f9d..aa3c1d993 100644 --- a/src/debug/taya_debug_window.c +++ b/src/debug/taya_debug_window.c @@ -65,7 +65,7 @@ const u8 gUnknown_Debug_083C4E85[] = _("MAIL"); const u8 gUnknown_Debug_083C4E8A[] = _("MAIL salutation"); const u8 gUnknown_Debug_083C4E9A[] = _("BARD's song"); const u8 gUnknown_Debug_083C4EA6[] = _("Interview"); -const u8 gUnknown_Debug_083C4EB0[] = _("InterviewシBTス"); +const u8 gUnknown_Debug_083C4EB0[] = _("Interview(BT)"); const struct { const u8 * text; @@ -88,10 +88,10 @@ const u8 gUnknown_Debug_083C4F0E[] = _("BARD"); const u8 gUnknown_Debug_083C4F13[] = _("HIPSTER"); const u8 gUnknown_Debug_083C4F1B[] = _("RECYCLE"); const u8 gUnknown_Debug_083C4F23[] = _("STORYTELLER"); -const u8 gUnknown_Debug_083C4F2F[] = _("GIDDY GUY"); -const u8 gUnknown_Debug_083C4F39[] = _("Flag OFF"); -const u8 gUnknown_Debug_083C4F42[] = _("21 letters"); -const u8 gUnknown_Debug_083C4F4D[] = _("ナウくなる"); +const u8 gUnknown_Debug_083C4F2F[] = _("GIDDY GUY"); +const u8 gUnknown_Debug_083C4F39[] = _("Flag OFF"); +const u8 gUnknown_Debug_083C4F42[] = _("21 letters"); +const u8 gUnknown_Debug_083C4F4D[] = DTR("ナウくなる", "BECOME HIP"); const struct { const u8 * text; @@ -107,18 +107,18 @@ const struct { {gUnknown_Debug_083C4F4D} }; -const u8 gUnknown_Debug_083C4F94[] = _("しょうしょうおまちください!"); +const u8 gUnknown_Debug_083C4F94[] = DTR("しょうしょうおまちください!", "Please wait!"); const u8 gUnknown_Debug_083C4FA3[] = _("Weather"); -const u8 gUnknown_Debug_083C4FAB[] = _("LANETTE'S PC"); +const u8 gUnknown_Debug_083C4FAB[] = _("LANETTE'S PC"); const u8 gUnknown_Debug_083C4FB8[] = _("SimpleText"); const u8 gUnknown_Debug_083C4FC3[] = _("Old man"); const u8 gUnknown_Debug_083C4FCB[] = _("Trend"); -const u8 gUnknown_Debug_083C4FD1[] = _("Trend R"); -const u8 gUnknown_Debug_083C4FD9[] = _("Town flag"); -const u8 gUnknown_Debug_083C4FE3[] = _("Award a ribbon"); +const u8 gUnknown_Debug_083C4FD1[] = _("Trend R"); +const u8 gUnknown_Debug_083C4FD9[] = _("Town flag"); +const u8 gUnknown_Debug_083C4FE3[] = _("Award a ribbon"); const u8 gUnknown_Debug_083C4FF2[] = _("{PKMN}LOTTERY"); const u8 gUnknown_Debug_083C4FFC[] = _("Trainer"); -const u8 gUnknown_Debug_083C5004[] = _("POKéNAV D"); +const u8 gUnknown_Debug_083C5004[] = _("POKéNAV D"); const struct MenuAction gUnknown_Debug_083C5010[] = { {gUnknown_Debug_083C4FA3, debug_sub_808560C}, @@ -195,7 +195,7 @@ const struct { } }; -const u8 gUnknown_Debug_083C517C[] = _("Select Ribbon"); +const u8 gUnknown_Debug_083C517C[] = _("Select Ribbon"); bool8 TayaDebugMenu_Trend(void) { diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c index daaca570c..eb4a046df 100644 --- a/src/debug/tomomichi_debug_menu.c +++ b/src/debug/tomomichi_debug_menu.c @@ -295,19 +295,19 @@ static const struct MenuAction sMenuActions_TrickRelated[] = { {sString_TrickRelated_TrickMaster, TrickRelated_TrickMaster_InitSubmenu} }; -static const u8 sString_Event1[] = _("パート1"); -static const u8 sString_Event2[] = _("パート2"); +static const u8 sString_Event1[] = DTR("パート1", "PART 1"); +static const u8 sString_Event2[] = DTR("パート2", "PART 2"); static const struct MenuAction sMenuActions_ControlEvents[] = { {sString_Event1, ControlEvents_InitSubmenu1}, {sString_Event2, ControlEvents_InitSubmenu2} }; -static const u8 sString_EventFlag[] = _("イベントFLAG"); -static const u8 sString_VanishFlag[] = _("バニシュFLAG"); -static const u8 sString_TrainerFlag[] = _("トレーナーFLAG"); +static const u8 sString_EventFlag[] = DTR("イベントFLAG", "EVENT FLAG"); +static const u8 sString_VanishFlag[] = DTR("バニシュFLAG", "VANISH FLAG"); +static const u8 sString_TrainerFlag[] = DTR("トレーナーFLAG", "TRAINER FLAG"); static const u8 sString_SysFlag[] = _("SYSFLAG"); -static const u8 sString_BallVanishFlag[] = _("BALLバニシュFLAG"); +static const u8 sString_BallVanishFlag[] = DTR("BALLバニシュFLAG", "VANISH FLAG"); static const u8 sString_FH[] = _("FH"); static const u8 sString_FH_OBJ[] = _("FH-OBJ"); @@ -326,7 +326,7 @@ static const u8 sString_SysWork[] = _("SYSWORK"); static const u8 sString_LocalWork[] = _("LOCALWORK"); static const u8 sString_ObjWork[] = _("OBJWORK"); static const u8 sString_AnsWork[] = _("ANSWORK"); -static const u8 sString_SaveWorkPart2[] = _("SAVEWORK パート2"); +static const u8 sString_SaveWorkPart2[] = DTR("SAVEWORK パート2", "SAVEWORK PART 2"); static const struct MenuAction sMenuActions_ControlWorks[] = { {sString_SaveWork, ControlWorks_SaveWork_InitSubmenu}, @@ -337,15 +337,15 @@ static const struct MenuAction sMenuActions_ControlWorks[] = { {sString_SaveWorkPart2, ControlWorks_SaveWorkPart2_InitSubmenu} }; -static const u8 sString_Clear_go[] = _("クリアご"); -static const u8 sString_Coin_kounyuuka[] = _("コインこうにゅうかのう"); -static const u8 sString_Oldale_supporter_set[] = _("コトキサポーターセット"); -static const u8 sString_New_Mauville_open[] = _("ニューキンセツOPEN"); -static const u8 sString_Renrakusen_ni_noreru[] = _("れんらくせんにのれる"); -static const u8 sString_Egg_tsuika[] = _("タマゴついか"); -static const u8 sString_Item_ippai[] = _("アイテムいっぱい"); -static const u8 sString_Gezzu_ippai[] = _("グッズいっぱい"); -static const u8 sString_Coin_ippai[] = _("COINいっぱい"); +static const u8 sString_Clear_go[] = DTR("クリアご", "POSTGAME"); +static const u8 sString_Coin_kounyuuka[] = DTR("コインこうにゅうかのう", ",Get COIN CASE"); +static const u8 sString_Oldale_supporter_set[] = DTR("コトキサポーターセット", "OLDALE POST RIVAL"); +static const u8 sString_New_Mauville_open[] = DTR("ニューキンセツOPEN", "Open NEW MAUVILLE"); +static const u8 sString_Renrakusen_ni_noreru[] = DTR("れんらくせんにのれる", "Get S.S. TICKET"); +static const u8 sString_Egg_tsuika[] = DTR("タマゴついか", "Get KYOGRE EGG"); +static const u8 sString_Item_ippai[] = DTR("アイテムいっぱい", "Max Items"); +static const u8 sString_Gezzu_ippai[] = DTR("グッズいっぱい", "Max Decorations"); +static const u8 sString_Coin_ippai[] = DTR("COINいっぱい", "Max COINS"); static const struct MenuAction sMenuActions_ControlEvents_Events1[] = { {sString_Clear_go, CallScript_DoHallOfFame}, @@ -359,12 +359,13 @@ static const struct MenuAction sMenuActions_ControlEvents_Events1[] = { {sString_Coin_ippai, CallScript_GiveAllCoins} }; -static const u8 sString_SootpolisGymOpen[] = _("ムロジムOPEN"); -static const u8 sString_MoneyTo0[] = _("おかねを0へ"); -static const u8 sString_BarboachFull[] = _("ドジョッチ FULL"); -static const u8 sString_ShroomishFull[] = _("キノココ FULL"); -static const u8 sString_BarboachEgg[] = _("ドジョッチ タマゴ"); -static const u8 sString_ShroomishEgg[] = _("キノココ タマゴ"); +// Note: JP text says Dewford Gym for some reason. +static const u8 sString_SootpolisGymOpen[] = DTR("ムロジムOPEN", "Open SOOTOPOLIS GYM"); +static const u8 sString_MoneyTo0[] = DTR("おかねを0へ", "Set money to 0"); +static const u8 sString_BarboachFull[] = DTR("ドジョッチ FULL", "Full BARBOACH PARTY"); +static const u8 sString_ShroomishFull[] = DTR("キノココ FULL", "Full SHROOMISH PARTY"); +static const u8 sString_BarboachEgg[] = DTR("ドジョッチ タマゴ", "Get BARBOACH EGG"); +static const u8 sString_ShroomishEgg[] = DTR("キノココ タマゴ", "Get SHROOMISH EGG"); static const struct MenuAction sMenuActions_ControlEvents_Events2[] = { {sString_SootpolisGymOpen, CallScript_OpenSootopolisGym}, @@ -375,7 +376,7 @@ static const struct MenuAction sMenuActions_ControlEvents_Events2[] = { {sString_ShroomishEgg, CallScript_GiveShroomishEgg} }; -static const u8 sString_Answork_Mikansei[] = _("ANSWORK みかんせい"); +static const u8 sString_Answork_Mikansei[] = DTR("ANSWORK みかんせい", "ANSWORK Incomplete"); static const struct MenuAction sMenuActions_ControlEvents_AnsWork[] = { {sString_Answork_Mikansei, DummyMenuAction} @@ -499,15 +500,15 @@ static const u16 gUnknown_Debug_083C12D2[][9] = { {0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10} }; -static const u8 gUnknown_Debug_083C12F6[] = _("BATCH"); -static const u8 gUnknown_Debug_083C12FC[] = _("タウンとうちゃく"); -static const u8 gUnknown_Debug_083C1305[] = _("シティとうちゃく"); +static const u8 gUnknown_Debug_083C12F6[] = DTR("BATCH", "BADGE"); +static const u8 gUnknown_Debug_083C12FC[] = DTR("タウンとうちゃく", "Towns arrived"); +static const u8 gUnknown_Debug_083C1305[] = DTR("シティとうちゃく", "Cities arrived"); static const u8 gUnknown_Debug_083C130E[] = _("GET"); -static const u8 gUnknown_Debug_083C1312[] = _("そのた1"); -static const u8 gUnknown_Debug_083C1317[] = _("そのた2"); -static const u8 gUnknown_Debug_083C131C[] = _("そのた3"); -static const u8 gUnknown_Debug_083C1321[] = _("そのた4"); -static const u8 gUnknown_Debug_083C1326[] = _("そのた とうちゃく"); +static const u8 gUnknown_Debug_083C1312[] = DTR("そのた1", "Other 1"); +static const u8 gUnknown_Debug_083C1317[] = DTR("そのた2", "Other 2"); +static const u8 gUnknown_Debug_083C131C[] = DTR("そのた3", "Other 3"); +static const u8 gUnknown_Debug_083C1321[] = DTR("そのた4", "Other 4"); +static const u8 gUnknown_Debug_083C1326[] = DTR("そのた とうちゃく", "Others arrived"); static const struct MenuAction gUnknown_Debug_083C1330[] = { {gUnknown_Debug_083C12F6, debug_sub_808CFA4}, @@ -717,7 +718,7 @@ static const u16 gUnknown_Debug_083C19C6[][9] = { {FLAG_LANDMARK_SEAFLOOR_CAVERN, FLAG_LANDMARK_BATTLE_TOWER, FLAG_LANDMARK_SOUTHERN_ISLAND, FLAG_SYS_POKEMON_LEAGUE_FLY, FLAG_LANDMARK_SKY_PILLAR} }; -static const u8 gDebug_0x83C1A68[] = _("FVーBALL パート1"); +static const u8 gDebug_0x83C1A68[] = DTR("FVーBALL パート1", "FV-BALL PART 1"); static const struct MenuAction gUnknown_Debug_083C1A78[] = { {gDebug_0x83C1A68, debug_sub_808D8D8} @@ -737,9 +738,9 @@ static const u16 gUnknown_Debug_083C1AAE[][9] = { {FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS_2, FLAG_ITEM_MOSSDEEP_STEVENS_HOUSE_1} }; -static const u8 gUnknown_Debug_083C1AC0[] = _("ジムリーダー"); -static const u8 gUnknown_Debug_083C1AC7[] = _("してんのう"); -static const u8 gUnknown_Debug_083C1ACD[] = _("みつる/Champロード"); +static const u8 gUnknown_Debug_083C1AC0[] = DTR("ジムリーダー", "GYM LEADER"); +static const u8 gUnknown_Debug_083C1AC7[] = DTR("してんのう", "ELITE FOUR"); +static const u8 gUnknown_Debug_083C1ACD[] = DTR("みつる/Champロード", "WALLY/VICTORY ROAD"); static const struct MenuAction gUnknown_Debug_083C1ADC[] = { {gUnknown_Debug_083C1AC0, debug_sub_808CD08}, @@ -792,14 +793,14 @@ static const u16 gUnknown_Debug_083C1C38[][9] = { {0x04E1} }; -static const u8 gUnknown_Debug_083C1C6E[] = _("120/119ばんどうろカクレオン"); -static const u8 gUnknown_Debug_083C1C80[] = _("そのた1 / SUPPORTM/W"); -static const u8 gUnknown_Debug_083C1C92[] = _("ODAMAKI/FIGHTER1"); -static const u8 gUnknown_Debug_083C1CA3[] = _("MITSURU/TENKI"); -static const u8 gUnknown_Debug_083C1CB1[] = _("そのた2 /DAIGO"); +static const u8 gUnknown_Debug_083C1C6E[] = DTR("120/119ばんどうろカクレオン", "ROUTE 120/119 KECLEON"); +static const u8 gUnknown_Debug_083C1C80[] = DTR("そのた1 / SUPPORTM/W", "Other 1/SUPPORT/M/W"); +static const u8 gUnknown_Debug_083C1C92[] = DTR("ODAMAKI/FIGHTER1", "BIRCH/FIGHTER1"); +static const u8 gUnknown_Debug_083C1CA3[] = DTR("MITSURU/TENKI", "WALLY/WEATHER"); +static const u8 gUnknown_Debug_083C1CB1[] = DTR("そのた2 /DAIGO", "Other 2/STEVEN"); static const u8 gUnknown_Debug_083C1CBD[] = _("POKE/POKEMON"); static const u8 gUnknown_Debug_083C1CCA[] = _("MAMA/SUPPORT02"); -static const u8 gUnknown_Debug_083C1CD9[] = _("HAGI"); +static const u8 gUnknown_Debug_083C1CD9[] = DTR("HAGI", "Mr. BRINEY"); static const u8 gUnknown_Debug_083C1CDE[] = _("SUPPORT01"); static const struct MenuAction gUnknown_Debug_083C1CE8[] = { @@ -1020,15 +1021,16 @@ static const u16 gUnknown_Debug_083C271A[][9] = { {FLAG_HIDE_RIVAL_BIRCH_LAB, FLAG_HIDE_RIVAL_CHAMPIONS_ROOM, FLAG_HIDE_RIVAL_RUSTBORO, FLAG_HIDE_RIVAL_LILYCOVE_MART, FLAG_HIDE_RIVAL_ROUTE103, FLAG_HIDE_RIVAL_ROUTE110, FLAG_HIDE_RIVAL_ROUTE119, FLAG_HIDE_RIVAL_LAVARIDGE_1, FLAG_HIDE_RIVAL_OLDALE_TOWN} }; -static const u8 gUnknown_Debug_083C27BC[] = _("FEひでんわざ/デボンかんれん"); -static const u8 gUnknown_Debug_083C27CC[] = _("FEだいじなアイテムPART1"); -static const u8 gUnknown_Debug_083C27DC[] = _("そのた1"); -static const u8 gUnknown_Debug_083C27E1[] = _("MITSURU/DOOR"); -static const u8 gUnknown_Debug_083C27EE[] = _("カラクリやしき10のやじるし/GYM07"); -static const u8 gUnknown_Debug_083C2803[] = _("SUPPORT/そのた4"); -static const u8 gUnknown_Debug_083C2810[] = _("DAISUKI/そのた5"); -static const u8 gUnknown_Debug_083C281D[] = _("そのた2"); -static const u8 gUnknown_Debug_083C2822[] = _("そのた6"); +static const u8 gUnknown_Debug_083C27BC[] = DTR("FEひでんわざ/デボンかんれん", "Field HMs/DEVON-related"); +static const u8 gUnknown_Debug_083C27CC[] = DTR("FEだいじなアイテムPART1", "Field Key Items Part 1"); +static const u8 gUnknown_Debug_083C27DC[] = DTR("そのた1", "Other 1"); +static const u8 gUnknown_Debug_083C27E1[] = DTR("MITSURU/DOOR", "WALLY/Door"); +static const u8 gUnknown_Debug_083C27EE[] = DTR("カラクリやしき10のやじるし/GYM07", + "TRICK HOUSE 10 Arrows/GYM 7"); +static const u8 gUnknown_Debug_083C2803[] = DTR("SUPPORT/そのた4", "Support/Other 4"); +static const u8 gUnknown_Debug_083C2810[] = DTR("DAISUKI/そのた5", "FAN CLUB/Other 5"); +static const u8 gUnknown_Debug_083C281D[] = DTR("そのた2", "Other 2"); +static const u8 gUnknown_Debug_083C2822[] = DTR("そのた6", "Other 6"); static const struct MenuAction gUnknown_Debug_083C2828[] = { {gUnknown_Debug_083C27BC, debug_sub_808C3B0}, @@ -1254,11 +1256,11 @@ static const u16 gUnknown_Debug_83C31E6[][9] = { {FLAG_BIRCH_AIDE_MET, FLAG_DECLINED_BIKE, FLAG_RECEIVED_SECRET_POWER} }; -static const u8 gUnknown_Debug_083C3288[] = _("CYCLEかんれん"); -static const u8 gUnknown_Debug_083C3292[] = _("おおきさくらべ"); -static const u8 gUnknown_Debug_083C329A[] = _("カウンタ"); -static const u8 gUnknown_Debug_083C329F[] = _("そのた1"); -static const u8 gUnknown_Debug_083C32A4[] = _("そのた2"); +static const u8 gUnknown_Debug_083C3288[] = DTR("CYCLEかんれん", "CYCLE-related"); +static const u8 gUnknown_Debug_083C3292[] = DTR("おおきさくらべ", "Size comparison"); +static const u8 gUnknown_Debug_083C329A[] = DTR("カウンタ", "Counter"); +static const u8 gUnknown_Debug_083C329F[] = DTR("そのた1", "Other 1"); +static const u8 gUnknown_Debug_083C32A4[] = DTR("そのた2", "Other 2"); static const struct MenuAction gUnknown_Debug_083C32AC[] = { {gUnknown_Debug_083C3288, debug_sub_808E400}, @@ -1404,11 +1406,11 @@ static const u16 gUnknown_Debug_083C371E[][9] = { }; static const u8 gUnknown_Debug_083C3742[] = _("SP"); -static const u8 gUnknown_Debug_083C3745[] = _("ルーム R110 PART1/カラクリ"); -static const u8 gUnknown_Debug_083C3759[] = _("ルーム R110 PART2"); -static const u8 gUnknown_Debug_083C3768[] = _("ルーム ロード"); -static const u8 gUnknown_Debug_083C3770[] = _("ソノタ1"); -static const u8 gUnknown_Debug_083C3775[] = _("ソノタ2"); +static const u8 gUnknown_Debug_083C3745[] = DTR("ルーム R110 PART1/カラクリ", "Room R110 Part 1/TRICK"); +static const u8 gUnknown_Debug_083C3759[] = DTR("ルーム R110 PART2", "Room R110 Part 2"); +static const u8 gUnknown_Debug_083C3768[] = DTR("ルーム ロード", "Room road"); +static const u8 gUnknown_Debug_083C3770[] = DTR("ソノタ1", "Other 1"); +static const u8 gUnknown_Debug_083C3775[] = DTR("ソノタ2", "Other 2"); static const struct MenuAction sMenuActions_ControlWorks_SaveWorkPart2[] = { {gUnknown_Debug_083C3742, ControlWorks_SaveWorkPart2_SP_InitSubsubmenu}, @@ -1561,15 +1563,15 @@ static const u16 sControlWorks_SaveWork_ItemArrays[][9] = { {VAR_WEATHER_INSTITUTE_STATE, VAR_SLATEPORT_FAN_CLUB_STATE, 0x40BB, VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, VAR_GAME_CORNER_STATE, VAR_WHICH_FOSSIL_REVIVED} }; -static const u8 sString_Town[] = _("タウン"); -static const u8 sString_City[] = _("シティ"); -static const u8 sString_Route_101_to_109[] = _("ロード101ー109"); -static const u8 sString_Route_110_to_118[] = _("ロード110ー118"); -static const u8 sString_Route_119_to_127[] = _("ロード119ー127"); -static const u8 sString_Route_128_to_134[] = _("ロード128ー134"); -static const u8 sString_Room_Town[] = _("ルーム タウン"); -static const u8 sString_Room_City[] = _("ルーム シティ"); -static const u8 sString_Dungeon_nai[] = _("ダンジョンない"); +static const u8 sString_Town[] = DTR("タウン", "TOWN"); +static const u8 sString_City[] = DTR("シティ", "CITY"); +static const u8 sString_Route_101_to_109[] = DTR("ロード101ー109", "ROUTE 101-109"); +static const u8 sString_Route_110_to_118[] = DTR("ロード110ー118", "ROUTE 110-118"); +static const u8 sString_Route_119_to_127[] = DTR("ロード119ー127", "ROUTE 119-127"); +static const u8 sString_Route_128_to_134[] = DTR("ロード128ー134", "ROUTE 128-134"); +static const u8 sString_Room_Town[] = DTR("ルーム タウン", "Room Town"); +static const u8 sString_Room_City[] = DTR("ルーム シティ", "Room City"); +static const u8 sString_Dungeon_nai[] = DTR("ダンジョンない", "DUNGEON"); static const struct MenuAction sMenuAction_ControlWorks_SaveWork[] = { {sString_Town, ControlWorks_SaveWork_Town_InitSubsubmenu}, @@ -1858,13 +1860,13 @@ static const struct MenuAction gUnknown_Debug_083C47F0[] = { {gUnknown_Debug_083C47E9, DummyMenuAction} }; -static const u8 gUnknown_Debug_083C4830[] = _("Trick Master"); +static const u8 gUnknown_Debug_083C4830[] = _("Trick Master"); -static const u8 gUnknown_Debug_083C483D[] = _("Hidden MASTER"); -static const u8 gUnknown_Debug_083C484B[] = _("Inside the HOUSE"); -static const u8 gUnknown_Debug_083C485C[] = _("Pass a reward"); -static const u8 gUnknown_Debug_083C486A[] = _("Rig a trick"); -static const u8 gUnknown_Debug_083C4876[] = _("MASTER is gone"); +static const u8 gUnknown_Debug_083C483D[] = _("Hidden MASTER"); +static const u8 gUnknown_Debug_083C484B[] = _("Inside the HOUSE"); +static const u8 gUnknown_Debug_083C485C[] = _("Pass a reward"); +static const u8 gUnknown_Debug_083C486A[] = _("Rig a trick"); +static const u8 gUnknown_Debug_083C4876[] = _("MASTER is gone"); static const struct MenuAction gUnknown_Debug_083C4888[] = { {gUnknown_Debug_083C483D, DummyMenuAction}, diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c index 2e3b684d9..c055781fb 100644 --- a/src/debug/watanabe_debug_menu.c +++ b/src/debug/watanabe_debug_menu.c @@ -400,16 +400,16 @@ void InitSizeComparison(void) gTasks[taskId].data[0] = 0xfc; } -const u8 gUnknown_Debug_083F7FDA[] = _("ひりつ"); -const u8 gUnknown_Debug_083F7FDE[] = _("たかさ"); -const u8 gUnknown_Debug_083F7FE2[] = _("Lキー▶しゅくしょう"); -const u8 gUnknown_Debug_083F7FED[] = _("Rキー▶かくだい"); -const u8 gUnknown_Debug_083F7FF6[] = _("Uキー▶うえ いどう"); -const u8 gUnknown_Debug_083F8001[] = _("Dキー▶した いどう"); -const u8 gUnknown_Debug_083F800C[] = _("Aボタン▶そうさきりかえ"); -const u8 gUnknown_Debug_083F8019[] = _("Bボタン▶やめる"); -const u8 gUnknown_Debug_083F8022[] = _("スタート:"); -const u8 gUnknown_Debug_083F8028[] = _(":セレクト"); +const u8 gUnknown_Debug_083F7FDA[] = DTR("ひりつ", "SCALE"); +const u8 gUnknown_Debug_083F7FDE[] = DTR("たかさ", "HEIGHT"); +const u8 gUnknown_Debug_083F7FE2[] = DTR("Lキー▶しゅくしょう", "{LEFT_ARROW}: SHRINK"); +const u8 gUnknown_Debug_083F7FED[] = DTR("Rキー▶かくだい", "{RIGHT_ARROW}: ENLARGE"); +const u8 gUnknown_Debug_083F7FF6[] = DTR("Uキー▶うえ いどう", "{UP_ARROW}: MOVE UP"); +const u8 gUnknown_Debug_083F8001[] = DTR("Dキー▶した いどう", "{DOWN_ARROW}: MOVE DOWN"); +const u8 gUnknown_Debug_083F800C[] = DTR("Aボタン▶そうさきりかえ", "A: SWITCH CONTROL"); +const u8 gUnknown_Debug_083F8019[] = DTR("Bボタン▶やめる", "B: QUIT"); +const u8 gUnknown_Debug_083F8022[] = DTR("スタート:", "START:"); +const u8 gUnknown_Debug_083F8028[] = DTR(":セレクト", ":SELECT"); #ifdef NONMATCHING void debug_80C3A50(u8 taskId) @@ -1003,11 +1003,13 @@ void debug_80C41A8(void) CreateTask(debug_80C47BC, 0); } -const u8 gUnknown_Debug_083F802E[] = _("やせいたいせん"); -const u8 gUnknown_Debug_083F8036[] = _("1VS1たいせん"); -const u8 gUnknown_Debug_083F803F[] = _("2VS2たいせん"); -const u8 gUnknown_Debug_083F8048[] = _("{COLOR BLUE}1VS1つうしんたいせん"); -const u8 gUnknown_Debug_083F8058[] = _("{COLOR BLUE}2VS2つうしんたいせん"); +const u8 gUnknown_Debug_083F802E[] = DTR("やせいたいせん", "Wild BATTLE"); +const u8 gUnknown_Debug_083F8036[] = DTR("1VS1たいせん", "1v1 BATTLE"); +const u8 gUnknown_Debug_083F803F[] = DTR("2VS2たいせん", "2v2 BATTLE"); +const u8 gUnknown_Debug_083F8048[] = DTR("{COLOR BLUE}1VS1つうしんたいせん", + "{COLOR BLUE}LINK 1v1 BATTLE"); +const u8 gUnknown_Debug_083F8058[] = DTR("{COLOR BLUE}2VS2つうしんたいせん", + "{COLOR BLUE}LINK 2v2 BATTLE"); const struct WatanabeDebugMenuItem gUnknown_Debug_083F8068[] = { {gUnknown_Debug_083F802E, {.type1 = {0x00, 0x01}}}, @@ -1017,16 +1019,16 @@ const struct WatanabeDebugMenuItem gUnknown_Debug_083F8068[] = { {gUnknown_Debug_083F8058, {.type1 = {0x0B, 0x02}}} }; -const u8 gUnknown_Debug_083F8090[] = _("きほんタイプ"); -const u8 gUnknown_Debug_083F8097[] = _("AIタイプ2"); -const u8 gUnknown_Debug_083F809E[] = _("AIタイプ3"); -const u8 gUnknown_Debug_083F80A5[] = _("AIタイプ4"); -const u8 gUnknown_Debug_083F80AC[] = _("AIタイプ5"); -const u8 gUnknown_Debug_083F80B3[] = _("AIタイプ6"); -const u8 gUnknown_Debug_083F80BA[] = _("AIタイプ7"); -const u8 gUnknown_Debug_083F80C1[] = _("AIタイプ8"); -const u8 gUnknown_Debug_083F80C8[] = _("AIタイプ9"); -const u8 gUnknown_Debug_083F80CF[] = _("AIタイプ10"); +const u8 gUnknown_Debug_083F8090[] = DTR("きほんタイプ", "Base type"); +const u8 gUnknown_Debug_083F8097[] = DTR("AIタイプ2", "AI type 2"); +const u8 gUnknown_Debug_083F809E[] = DTR("AIタイプ3", "AI type 3"); +const u8 gUnknown_Debug_083F80A5[] = DTR("AIタイプ4", "AI type 4"); +const u8 gUnknown_Debug_083F80AC[] = DTR("AIタイプ5", "AI type 5"); +const u8 gUnknown_Debug_083F80B3[] = DTR("AIタイプ6", "AI type 6"); +const u8 gUnknown_Debug_083F80BA[] = DTR("AIタイプ7", "AI type 7"); +const u8 gUnknown_Debug_083F80C1[] = DTR("AIタイプ8", "AI type 8"); +const u8 gUnknown_Debug_083F80C8[] = DTR("AIタイプ9", "AI type 9"); +const u8 gUnknown_Debug_083F80CF[] = DTR("AIタイプ10", "AI type 10"); const struct WatanabeDebugMenuItem gUnknown_Debug_083F80D8[] = { {gUnknown_Debug_083F8090, {.type2 = 0x1}}, @@ -1041,15 +1043,15 @@ const struct WatanabeDebugMenuItem gUnknown_Debug_083F80D8[] = { {gUnknown_Debug_083F80CF, {.type2 = 0x200}} }; -const u8 gUnknown_Debug_083F8128[] = _("くさ"); -const u8 gUnknown_Debug_083F812B[] = _("ながい くさ"); -const u8 gUnknown_Debug_083F8132[] = _("すな"); -const u8 gUnknown_Debug_083F8135[] = _("みず"); -const u8 gUnknown_Debug_083F8138[] = _("うみ"); -const u8 gUnknown_Debug_083F813B[] = _("いけ"); -const u8 gUnknown_Debug_083F813E[] = _("いわ"); -const u8 gUnknown_Debug_083F8141[] = _("どうくつ"); -const u8 gUnknown_Debug_083F8146[] = _("そのた"); +const u8 gUnknown_Debug_083F8128[] = DTR("くさ", "GRASS"); +const u8 gUnknown_Debug_083F812B[] = DTR("ながい くさ", "TALL GRASS"); +const u8 gUnknown_Debug_083F8132[] = DTR("すな", "SAND"); +const u8 gUnknown_Debug_083F8135[] = DTR("みず", "WATER"); +const u8 gUnknown_Debug_083F8138[] = DTR("うみ", "SEA"); +const u8 gUnknown_Debug_083F813B[] = DTR("いけ", "POND"); +const u8 gUnknown_Debug_083F813E[] = DTR("いわ", "ROCKY"); +const u8 gUnknown_Debug_083F8141[] = DTR("どうくつ", "CAVE"); +const u8 gUnknown_Debug_083F8146[] = DTR("そのた", "OTHER"); const struct WatanabeDebugMenuItem gUnknown_Debug_083F814C[] = { {gUnknown_Debug_083F8128, {.type3 = 0x0}}, @@ -1105,8 +1107,8 @@ void debug_80C4214(UNUSED u8 a0) void debug_80C42B8(u8 taskId) { - u8 sp00[] = _("ポケモンを えらんでね"); - u8 sp0c[] = _("{COLOR RED}START:つぎへ"); + u8 sp00[] = DTR("ポケモンを えらんでね", "Choose POKéMON"); + u8 sp0c[] = DTR("{COLOR RED}START:つぎへ", "{COLOR RED}START: NEXT"); Menu_DrawStdWindowFrame(0, 16, 29, 19); Menu_PrintText(sp00, 1, 17); @@ -1218,7 +1220,7 @@ void debug_80C4550(u8 taskId) void debug_80C4694(void) { u8 i; - u8 sp00[] = _("{COLOR RED}じぶんの ポケモン"); + u8 sp00[] = DTR("{COLOR RED}じぶんの ポケモン", "{COLOR RED}Enemy's POKéMON"); u8 sp10[POKEMON_NAME_LENGTH + 1]; Menu_DrawStdWindowFrame(0, 0, 14, 15); @@ -1233,7 +1235,7 @@ void debug_80C4694(void) void debug_80C4704(void) { u8 i; - u8 sp00[] = _("{COLOR RED}あいての ポケモン"); + u8 sp00[] = DTR("{COLOR RED}あいての ポケモン", "{COLOR RED}Your POKéMON"); u8 sp10[POKEMON_NAME_LENGTH + 1]; Menu_DrawStdWindowFrame(15, 0, 29, 15); @@ -1256,10 +1258,10 @@ bool8 debug_80C4774(void) void debug_80C47BC(u8 taskId) { u8 i; - u8 sp00[] = _("たいせんモードを えらんでね"); - u8 sp10[] = _("{COLOR RED}START:つぎへ"); - u8 sp20[] = _("{COLOR RED}バトルモード せんたく"); - u8 sp30[] = _("{COLOR RED}トレーナーAI せんたく"); + u8 sp00[] = DTR("たいせんモードを えらんでね", "Choose a battle mode"); + u8 sp10[] = DTR("{COLOR RED}START:つぎへ", "{COLOR RED}START: NEXT"); + u8 sp20[] = DTR("{COLOR RED}バトルモード せんたく", "{COLOR RED}Battle mode:"); + u8 sp30[] = DTR("{COLOR RED}トレーナーAI せんたく", "{COLOR RED}TRAINER AI mode:"); Menu_DrawStdWindowFrame(0, 16, 29, 19); Menu_PrintText(sp00, 1, 17); @@ -1424,9 +1426,9 @@ void debug_80C4C44(u8 a0) void debug_80C4D14(u8 taskId) { - u8 sp00[] = _("たいせんモードを えらんでね"); - u8 sp10[] = _("{COLOR RED}START:かいし"); - u8 sp20[] = _("{COLOR RED}バトルちけい せんたく"); + u8 sp00[] = DTR("たいせんモードを えらんでね", "Choose a battle mode"); + u8 sp10[] = DTR("{COLOR RED}START:かいし", "{COLOR RED}START: BEGIN"); + u8 sp20[] = DTR("{COLOR RED}バトルちけい せんたく", "{COLOR RED}Battle terrain:"); Menu_DrawStdWindowFrame(0, 16, 29, 19); Menu_PrintText(sp00, 1, 17); @@ -1499,11 +1501,11 @@ void debug_80C4F00(u8 a0) void debug_80C4F48(u8 taskId) { - u8 sp00[] = _("じぶんの せいべつを えらんでね"); - u8 sp14[] = _("{COLOR RED}START:つぎへ"); - u8 sp24[] = _("{COLOR RED}せいべつ せんたく"); - u8 sp34[] = _("おとこ"); - u8 sp38[] = _("おんな"); + u8 sp00[] = DTR("じぶんの せいべつを えらんでね", "Choose a gender"); + u8 sp14[] = DTR("{COLOR RED}START:つぎへ", "{COLOR RED}START: NEXT"); + u8 sp24[] = DTR("{COLOR RED}せいべつ せんたく", "{COLOR RED}Gender:"); + u8 sp34[] = DTR("おとこ", "BOY"); + u8 sp38[] = DTR("おんな", "GIRL"); Menu_DrawStdWindowFrame(0, 16, 29, 19); Menu_PrintText(sp00, 1, 17); @@ -1732,7 +1734,7 @@ const u8 gUnknown_Debug_083F851C[] = _("{COLOR RED}DEF "); const u8 gUnknown_Debug_083F8524[] = _("{COLOR RED}SPEED"); const u8 gUnknown_Debug_083F852D[] = _("{COLOR RED}SP。ATK"); const u8 gUnknown_Debug_083F8537[] = _("{COLOR RED}SP。DEF"); -const u8 gUnknown_Debug_083F8541[] = _("なし"); +const u8 gUnknown_Debug_083F8541[] = DTR("なし", "without"); const u8 gUnknown_Debug_083F8544[] = _("♂"); const u8 gUnknown_Debug_083F8546[] = _("♀"); const u8 gUnknown_Debug_083F8548[] = _("ー"); @@ -1828,11 +1830,11 @@ const struct WatanabeDebugMenuItem gUnknown_Debug_083F86E8[] = { {gUnknown_Debug_083F86E0, {.type3 = 0x80}} }; -const u8 gUnknown_Debug_083F8720[] = _("PKMNワLIST"); -const u8 gUnknown_Debug_083F872A[] = _("PKMNワBOX"); +const u8 gUnknown_Debug_083F8720[] = _("PKMN{RIGHT_ARROW}LIST"); +const u8 gUnknown_Debug_083F872A[] = _("PKMN{RIGHT_ARROW}BOX"); void InitCreatePokemon(void) { - u8 sp04[] = _("Create POKひMON   LR:Shift  START:Add"); + u8 sp04[] = _("Create POKéMON LR:Shift START:Add"); debug_80C35DC(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); @@ -2193,7 +2195,7 @@ void debug_80C5EF4(void) void debug_80C5FFC(void) { u32 ivs; - u8 sp10[] = _("たまご"); + u8 sp10[] = DTR("たまご", "EGG"); u8 sp14[] = _("DebugーG"); u8 one; u16 ff; @@ -2600,12 +2602,12 @@ const u16 gUnknown_Debug_083F8790[] = { 0x0002 }; -const u8 gUnknown_Debug_083F87D0[] = _("{COLOR RED}L{ESCAPE}ロ"); -const u8 gUnknown_Debug_083F87D8[] = _("{COLOR RED}{ESCAPE}ワR"); -const u8 gUnknown_Debug_083F87E0[] = _("かいはつナンバー"); -const u8 gUnknown_Debug_083F87E9[] = _("グラフィックナンバー"); -const u8 gUnknown_Debug_083F87F4[] = _("{COLOR RED}A:カラーせってい"); -const u8 gUnknown_Debug_083F8801[] = _("{COLOR RED}A:けってい B:キャンセル"); +const u8 gUnknown_Debug_083F87D0[] = _("{COLOR RED}L{ESCAPE}{LEFT_ARROW}"); +const u8 gUnknown_Debug_083F87D8[] = _("{COLOR RED}{ESCAPE}{RIGHT_ARROW}R"); +const u8 gUnknown_Debug_083F87E0[] = DTR("かいはつナンバー", "Devel No."); +const u8 gUnknown_Debug_083F87E9[] = DTR("グラフィックナンバー", "Graphic No."); +const u8 gUnknown_Debug_083F87F4[] = DTR("{COLOR RED}A:カラーせってい", "{COLOR RED}A: SET COLOR"); +const u8 gUnknown_Debug_083F8801[] = DTR("{COLOR RED}A:けってい B:キャンセル", "{COLOR RED}A: CONFIRM B: CANCEL"); const u8 gUnknown_Debug_083F8813[] = _(":"); void debug_80C6B00(u8 taskId) { diff --git a/src/field_weather.c b/src/field_weather.c index 9a5a83737..340445fd2 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -216,21 +216,21 @@ static const u8 sBasePaletteGammaTypes[32] = #if DEBUG -static const u8 sDebugText_Weather_None[] = _("なし   "); // "none" -static const u8 sDebugText_Weather_Clear[] = _("はれ   "); // "clear" -static const u8 sDebugText_Weather_Clear2[] = _("はれ2  "); // "clear2" -static const u8 sDebugText_Weather_Rain[] = _("あめ   "); // "rain" -static const u8 sDebugText_Weather_Snow[] = _("ゆき   "); // "snow" -static const u8 sDebugText_Weather_Lightning[] = _("かみなり "); // "lightning" -static const u8 sDebugText_Weather_Fog[] = _("きり   "); // "fog" -static const u8 sDebugText_Weather_VolcanicAsh[] = _("かざんばい"); // "volcanic ash" -static const u8 sDebugText_Weather_Sandstorm[] = _("すなあらし"); // "sandstorm -static const u8 sDebugText_Weather_Fog2[] = _("きり2  "); // "fog2" -static const u8 sDebugText_Weather_Underwater[] = _("かいてい "); // "undersea" -static const u8 sDebugText_Weather_Cloudy[] = _("くもり  "); // "cloudy" -static const u8 sDebugText_Weather_Clear3[] = _("はれ3  "); // "clear3" -static const u8 sDebugText_Weather_HeavyRain[] = _("おおあめ"); // "heavy rain" -static const u8 sDebugText_Weather_Underwater2[] = _("かいてい2"); // "undersea2" +static const u8 sDebugText_Weather_None[] = DTR("なし   ", "NONE "); +static const u8 sDebugText_Weather_Clear[] = DTR("はれ   ", "CLOUDY "); +static const u8 sDebugText_Weather_Clear2[] = DTR("はれ2  ", "SUNNY "); +static const u8 sDebugText_Weather_Rain[] = DTR("あめ   ", "RAIN "); +static const u8 sDebugText_Weather_Snow[] = DTR("ゆき   ", "SNOW "); +static const u8 sDebugText_Weather_Lightning[] = DTR("かみなり ", "LIGHTNING "); +static const u8 sDebugText_Weather_Fog[] = DTR("きり   ", "FOG 1 "); +static const u8 sDebugText_Weather_VolcanicAsh[] = DTR("かざんばい", "ASH "); +static const u8 sDebugText_Weather_Sandstorm[] = DTR("すなあらし", "SANDSTORM "); +static const u8 sDebugText_Weather_Fog2[] = DTR("きり2  ", "FOG 2 "); +static const u8 sDebugText_Weather_Underwater[] = DTR("かいてい ", "FOG 3 "); +static const u8 sDebugText_Weather_Cloudy[] = DTR("くもり  ", "SHADE "); +static const u8 sDebugText_Weather_Clear3[] = DTR("はれ3  ", "DROUGHT "); +static const u8 sDebugText_Weather_HeavyRain[] = DTR("おおあめ", "HEAVY RAIN"); +static const u8 sDebugText_Weather_Underwater2[] = DTR("かいてい2", "UNDERWATER"); static const u8 *const sDebugText_Weather[] = { diff --git a/src/mail.c b/src/mail.c index 8b4647532..27a25feba 100644 --- a/src/mail.c +++ b/src/mail.c @@ -242,9 +242,9 @@ const struct MailLayout gUnknown_083E57A4[] = #if DEBUG -const u8 Str_8411540[] = _("レイアウトを にほんごで ひょうじ?"); // Display using Japanese layout? -const u8 Str_8411553[] = _("にほんご "); // Japanese -const u8 Str_8411559[] = _("かいがい "); // Overseas +const u8 Str_8411540[] = DTR("レイアウトを にほんごで ひょうじ?", "Display using JAPANESE layout?"); +const u8 Str_8411553[] = DTR("にほんご ", "JAPANESE"); +const u8 Str_8411559[] = DTR("かいがい ", "OVERSEAS"); const u8 *const _8411560[] = { @@ -252,20 +252,20 @@ const u8 *const _8411560[] = Str_8411559, }; -const u8 Str_8411568[] = _("イメージ タイプを えらんでね"); // Choose an image type +const u8 Str_8411568[] = DTR("イメージ タイプを えらんでね", "Choose an image type"); const u8 Str_8411578[] = _("{STR_VAR_1}"); -const u8 Str_841157B[] = _("オレンジ "); // Orange -const u8 Str_8411581[] = _("ハーバー "); // Harbor -const u8 Str_8411587[] = _("キラキラ "); // Glitter -const u8 Str_841158D[] = _("メカニカル"); // Mech -const u8 Str_8411593[] = _("ウッディー"); // Wood -const u8 Str_8411599[] = _("クロス  "); // Wave -const u8 Str_841159F[] = _("トレジャー"); // Bead -const u8 Str_84115A5[] = _("シャドウ "); // Shadow -const u8 Str_84115AB[] = _("トロピカル"); // Tropic -const u8 Str_84115B1[] = _("ドリーム "); // Dream -const u8 Str_84115B7[] = _("ミラクル "); // Fab -const u8 Str_84115BD[] = _("レトロ  "); // Retro +const u8 Str_841157B[] = DTR("オレンジ ", "ORANGE "); +const u8 Str_8411581[] = DTR("ハーバー ", "HARBOR "); +const u8 Str_8411587[] = DTR("キラキラ ", "GLITTER"); +const u8 Str_841158D[] = DTR("メカニカル", "MECH "); +const u8 Str_8411593[] = DTR("ウッディー", "WOOD "); +const u8 Str_8411599[] = DTR("クロス  ", "WAVE "); +const u8 Str_841159F[] = DTR("トレジャー", "BEAD "); +const u8 Str_84115A5[] = DTR("シャドウ ", "SHADOW "); +const u8 Str_84115AB[] = DTR("トロピカル", "TROPIC "); +const u8 Str_84115B1[] = DTR("ドリーム ", "DREAM "); +const u8 Str_84115B7[] = DTR("ミラクル ", "FAB "); +const u8 Str_84115BD[] = DTR("レトロ  ", "RETRO "); const u8 *const _84115C4[] = { @@ -283,10 +283,10 @@ const u8 *const _84115C4[] = Str_84115BD, }; -const u8 Str_84115F4[] = _("メールをみる"); // View Mail -const u8 Str_84115FB[] = _("メールとうろく"); // Register Mail -const u8 Str_8411603[] = _("もたせる"); // Give to Pokémon -const u8 Str_8411608[] = _("メールをけす"); // Delete Mail +const u8 Str_84115F4[] = DTR("メールをみる", "View MAIL"); +const u8 Str_84115FB[] = DTR("メールとうろく", "Register MAIL"); +const u8 Str_8411603[] = DTR("もたせる", "Give MAIL"); +const u8 Str_8411608[] = DTR("メールをけす", "Delete MAIL"); #endif @@ -744,7 +744,7 @@ void debug_sub_810CA7C(u8 taskId) void debug_sub_810CB50(u8 taskId) { u8 sp0[] = _("{STR_VAR_1} {STR_VAR_2}"); - u8 sp8[] = _("メール{STR_VAR_1} {STR_VAR_2}"); + u8 sp8[] = DTR("メール{STR_VAR_1} {STR_VAR_2}", "MAIL{STR_VAR_1} {STR_VAR_2}"); bool8 r2 = FALSE; if (gMain.newKeys & A_BUTTON) @@ -791,7 +791,7 @@ void debug_sub_810CB50(u8 taskId) void debug_sub_810CCEC(u8 taskId) { - u8 string1[] = _("メール{STR_VAR_1}を だれに もたせる?"); + u8 string1[] = DTR("メール{STR_VAR_1}を だれに もたせる?", "Give MAIL {STR_VAR_1} to who?"); u8 string2[] = _("000 {STR_VAR_1}"); ConvertIntToDecimalStringN(gStringVar1, gSpecialVar_0x8005, 1, 1); @@ -876,8 +876,10 @@ u8 debug_sub_810CEA4(void) u8 debug_sub_810CED0(void) { - u8 text[] = _("せいきの データが とうろくずみ です\n" - "しんき とうろく できません"); + u8 text[] = DTR("せいきの データが とうろくずみ です\n" + "しんき とうろく できません", + "Normal data is registered.\n" + "Cannot register new data."); s8 input = Menu_ProcessInput(); switch (input) @@ -911,8 +913,10 @@ u8 debug_sub_810CED0(void) u8 debug_sub_810CFA4(void) { - u8 text[] = _("せいきに とうろくされたメールデータは\n" - "へんこう できません"); + u8 text[] = DTR("せいきに とうろくされたメールデータは\n" + "へんこう できません", + "Regularly, registered MAIL data\n" + "cannot be changed."); s8 input = Menu_ProcessInput(); switch (input) @@ -990,7 +994,7 @@ u8 debug_sub_810D030(void) void debug_sub_810D174(u8 a) { - u8 string[] = _("メール{STR_VAR_1} {STR_VAR_2} {STR_VAR_3}"); + u8 string[] = DTR("メール{STR_VAR_1} {STR_VAR_2} {STR_VAR_3}", "MAIL{STR_VAR_1} {STR_VAR_2} {STR_VAR_3}"); u8 buffer[9][20]; struct MenuAction menuActions[9]; u8 i; diff --git a/src/main.c b/src/main.c index d7ef91df0..ad4a669b7 100644 --- a/src/main.c +++ b/src/main.c @@ -34,10 +34,12 @@ const u8 gGameVersion = GAME_VERSION; const u8 gGameLanguage = GAME_LANGUAGE; -#if defined(ENGLISH) -const char BuildDateTime[] = "2002 10 15 20:34"; -#elif defined(GERMAN) +// The debug menu expects this exact format. With the English build string, it +// will overflow on the title debug menu, outputting '9999ィ'. +#if defined(GERMAN) || DEBUG const char BuildDateTime[] = "$Name: debug-Euro-2003-05-09-A $"; +#elif defined(ENGLISH) +const char BuildDateTime[] = "2002 10 15 20:34"; #endif const IntrFunc gIntrTableTemplate[] = diff --git a/src/reset_rtc_screen.c b/src/reset_rtc_screen.c index 7bccddde5..c87a5ed72 100644 --- a/src/reset_rtc_screen.c +++ b/src/reset_rtc_screen.c @@ -635,10 +635,10 @@ void debug_sub_806F9B8(void) ScriptContext2_Enable(); } -static const u8 sDebugText_Days[] = _("にっすう"); // "days" -static const u8 sDebugText_Time[] = _("じかん"); // "time" -static const u8 sDebugText_GameTime[] = _("ゲームない じかん"); // "game time" -static const u8 sDebugText_RTCTime[] = _("RTC じかん"); // "RTC time" +static const u8 sDebugText_Days[] = DTR("にっすう", "days"); +static const u8 sDebugText_Time[] = DTR("じかん", "time"); +static const u8 sDebugText_GameTime[] = DTR("ゲームない じかん", "game time"); +static const u8 sDebugText_RTCTime[] = DTR("RTC じかん", "RTC time"); void debug_sub_806F9E4(u8 taskId) { diff --git a/src/slot_machine.c b/src/slot_machine.c index 3de87e0f7..b73b1e80a 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -5616,29 +5616,30 @@ static void debug_sub_811B2E8(void) Menu_PrintText(text, 6, 1); } -static const u8 Str_841B1C4[] = _("SETTEI"); -static const u8 Str_841B1CB[] = _("MAWASITA"); -static const u8 Str_841B1D4[] = _("MODOSI"); -static const u8 Str_841B1DB[] = _("NOMARE"); -static const u8 Str_841B1E2[] = _("MAE 7"); -static const u8 Str_841B1E8[] = _("LR  HENKOU"); -static const u8 Str_841B1F3[] = _("START  JIDOUSU"); -static const u8 Str_841B202[] = _("SELECT  SETTEI"); -static const u8 Str_841B211[] = _("TYUHSEN"); +static const u8 Str_841B1C4[] = DTR("SETTEI", "SET"); +static const u8 Str_841B1CB[] = DTR("MAWASITA", "TURNED"); +static const u8 Str_841B1D4[] = DTR("MODOSI", "RETURN"); +static const u8 Str_841B1DB[] = _("NOMARE"); // TRN: Normal, 's rare, etc? +static const u8 Str_841B1E2[] = DTR("MAE 7", "BEFORE 7"); +static const u8 Str_841B1E8[] = DTR("LR HENKOU", "LR: CHANGE"); +static const u8 Str_841B1F3[] = _("START JIDOUSU"); // TRN +static const u8 Str_841B202[] = DTR("SELECT SETTEI", "SELECT: SET"); +// Irregular Romaji: 抽選 (ちゅうせん/chuusen) +static const u8 Str_841B211[] = DTR("TYUHSEN", "LOTTERY"); static const u8 Str_841B219[] = _("CHERRY"); static const u8 Str_841B220[] = _("REPLAY"); -static const u8 Str_841B227[] = _("HASUBO"); -static const u8 Str_841B22E[] = _("RURIRI"); -static const u8 Str_841B235[] = _("INAZU"); +static const u8 Str_841B227[] = DTR("HASUBO", "LOTAD"); // TRN +static const u8 Str_841B22E[] = DTR("RURIRI", "AZURILL"); +static const u8 Str_841B235[] = DTR("INAZU", "LIGHTNING"); static const u8 Str_841B23B[] = _("REG"); static const u8 Str_841B23F[] = _("BIG"); static const u8 Str_841B243[] = _("BD"); static const u8 Str_841B246[] = _("R7"); static const u8 Str_841B249[] = _("B7"); -static const u8 Str_841B24C[] = _("A  COIN"); -static const u8 Str_841B254[] = _("TYUHSEN"); -static const u8 Str_841B25C[] = _("UD  100"); -static const u8 Str_841B264[] = _("LR  1000"); +static const u8 Str_841B24C[] = _("A COIN"); +static const u8 Str_841B254[] = DTR("TYUHSEN", "LOTTERY"); +static const u8 Str_841B25C[] = _("UD 100"); +static const u8 Str_841B264[] = _("LR 1000"); static const u8 Str_841B26D[] = _("×"); void debug_sub_811B310(void) @@ -5882,10 +5883,10 @@ static void debug_sub_811B654(u8 taskId) } } -static const u8 Str_841B2B0[] = _("·カウントエラーがおきました"); -static const u8 Str_841B2BF[] = _("·リールそうさで エラーが おきました"); -static const u8 Str_841B2D3[] = _("·フラグオフエラーが おきました"); -static const u8 Str_841B2E4[] = _("·ボーナスこやくの エラーが おきました"); +static const u8 Str_841B2B0[] = DTR("·カウントエラーがおきました", "Count error occured."); +static const u8 Str_841B2BF[] = DTR("·リールそうさで エラーが おきました", "Reel processing error occurred."); +static const u8 Str_841B2D3[] = DTR("·フラグオフエラーが おきました", "FLAG OFF error occurred."); +static const u8 Str_841B2E4[] = DTR("·ボーナスこやくの エラーが おきました", "BONUS use error occurred."); // TRN static void debug_sub_811B894(void) { -- cgit v1.2.3 From 265fd20253e34adfc7ca1e9ff3c08a70224d98f6 Mon Sep 17 00:00:00 2001 From: "easyaspi314 (Devin)" Date: Sat, 24 Aug 2019 16:35:52 -0400 Subject: Rename old_charmap and move from graphics-de/unused to graphics/debug. The debug battle text is in English on German ROMs and Japanese on English ROMs. Additionally, old_charmap.bin held the actual text. Weird. I also choose the English when DEBUG_TRANSLATE is on. --- src/battle_main.c | 14 +++++++------- src/data/graphics.c | 16 ++++++++++++---- 2 files changed, 19 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/battle_main.c b/src/battle_main.c index 9a9f954aa..c0147d11d 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -1402,9 +1402,9 @@ extern const u16 gUnknown_Debug_821F424[][5]; extern const u16 gUnknown_Debug_821F56C[][5]; extern const u32 gUnknown_Debug_821F798[][4]; -extern const u8 gUnusedOldCharmap_Gfx_lz[]; -extern const u8 gUnusedOldCharmap_Tilemap_lz[]; -extern const u8 gUnusedOldCharmap_Pal_lz[]; +extern const u8 gDebugBattleCharmap_Gfx_lz[]; +extern const u8 gDebugBattleCharmap_Tilemap_lz[]; +extern const u8 gDebugBattleCharmap_Pal_lz[]; void debug_sub_8010800(void) { @@ -1457,10 +1457,10 @@ void debug_sub_80108B8(void) REG_BG1CNT = 0x4801; REG_BLDCNT = 0; REG_BLDY = 0; - LZDecompressVram(gUnusedOldCharmap_Gfx_lz, (void *)VRAM); - LZDecompressWram(gUnusedOldCharmap_Tilemap_lz, gSharedMem); - LZDecompressVram(gUnusedOldCharmap_Pal_lz, (void *)PLTT); - LZDecompressVram(gUnusedOldCharmap_Pal_lz, (void *)(PLTT + 0x1E0)); + LZDecompressVram(gDebugBattleCharmap_Gfx_lz, (void *)VRAM); + LZDecompressWram(gDebugBattleCharmap_Tilemap_lz, gSharedMem); + LZDecompressVram(gDebugBattleCharmap_Pal_lz, (void *)PLTT); + LZDecompressVram(gDebugBattleCharmap_Pal_lz, (void *)(PLTT + 0x1E0)); m4aSoundVSyncOn(); SetVBlankCallback(debug_sub_8011D40); SetMainCallback2(debug_sub_8010CAC); diff --git a/src/data/graphics.c b/src/data/graphics.c index ce2f02b2c..4d076e083 100644 --- a/src/data/graphics.c +++ b/src/data/graphics.c @@ -10,10 +10,18 @@ const u8 gMonBackPic_CircledQuestionMark[] = INCBIN_U8("graphics/pokemon/circled const u16 gMonPalette_CircledQuestionMark[] = INCBIN_U16("graphics/pokemon/circled_question_mark/normal.gbapal.lz"); const u16 gMonShinyPalette_CircledQuestionMark[] = INCBIN_U16("graphics/pokemon/circled_question_mark/shiny.gbapal.lz"); -// japanese table and bunch of stuff -const u8 gUnusedOldCharmap_Gfx_lz[] = INCBIN_U8("graphics/unused/old_charmap.4bpp.lz"); -const u8 gUnusedOldCharmap_Tilemap_lz[] = INCBIN_U8("graphics/unused/old_charmap.bin.lz"); -const u16 gUnusedOldCharmap_Pal_lz[] = INCBIN_U16("graphics/unused/old_charmap.gbapal.lz"); +// The test menu debug battle tileset. This uses the old Crystal charmap and +// rendering method (it uses tiles instead of text). +// Oddly, the English version is in Japanese and the German version is in English. +#if DEBUG_TRANSLATE || GERMAN +const u8 gDebugBattleCharmap_Gfx_lz[] = INCBIN_U8("graphics/debug/debug_battle_charmap_en.4bpp.lz"); +const u8 gDebugBattleCharmap_Tilemap_lz[] = INCBIN_U8("graphics/debug/debug_battle_charmap_en.bin.lz"); +const u8 gDebugBattleCharmap_Pal_lz[] = INCBIN_U8("graphics/debug/debug_battle_charmap_en.gbapal.lz"); +#else +const u8 gDebugBattleCharmap_Gfx_lz[] = INCBIN_U8("graphics/debug/debug_battle_charmap_jp.4bpp.lz"); +const u8 gDebugBattleCharmap_Tilemap_lz[] = INCBIN_U8("graphics/debug/debug_battle_charmap_jp.bin.lz"); +const u8 gDebugBattleCharmap_Pal_lz[] = INCBIN_U8("graphics/debug/debug_battle_charmap_jp.gbapal.lz"); +#endif const u8 gSmokescreenImpactTiles[] = INCBIN_U8("graphics/battle_anims/sprites/smokescreen_impact.4bpp.lz"); const u16 gSmokescreenImpactPalette[] = INCBIN_U16("graphics/battle_anims/sprites/smokescreen_impact.gbapal.lz"); -- cgit v1.2.3 From 1c0ccca5a2d3fc94b10dca1df7b4baf4b1f01447 Mon Sep 17 00:00:00 2001 From: "easyaspi314 (Devin)" Date: Sat, 24 Aug 2019 23:17:06 -0400 Subject: Match and document DebugMenu_8077C3C (now DebugMenu_ConvertBuildDate) It seems that simply putting an asm("") matched 8077C3C. --- src/debug/start_menu_debug.c | 169 ++++++++++--------------------------------- 1 file changed, 38 insertions(+), 131 deletions(-) (limited to 'src') diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index f64de18e9..0520e7118 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -344,7 +344,15 @@ extern const u8 Str_839BD2C[]; extern const u8 Str_839BD4C[]; static u8 gUnknown_030006B8; -UNUSED static const s32 * gUnknown_030006BC; + +struct DebugBuildDateInfo { + s32 max; + s32 digitMultiplier; + s32 numDigits; + s32 offset; +}; + +static const struct DebugBuildDateInfo *gDebugBuildDate; static u8 gUnknown_030006C0; static u8 gUnknown_030006C1; static const u8 * gUnknown_030006C4; @@ -1380,144 +1388,43 @@ u8 DebugMenu_8077C14(void) const u8 Str_839BFDC[] = DTR(" じかん ふん びょう", " HOURS MINUTES SECONDS"); -const s32 gUnknown_Debug_839BFE8[] = { - 99, 10, 2, 23, - 99, 10, 2, 26 +static const struct DebugBuildDateInfo gDebugBuildDateInfo[] = { + { 99, 10, 2, 23 }, + { 99, 10, 2, 26 } }; -#ifdef NONMATCHING -void DebugMenu_8077C3C(const char * a0, u8 * a1) +// Parses the version code in a highly inefficient and unsafe way. +void DebugMenu_ConvertBuildDate(const char *buildDateStr, u8 *out) { - // Register allocation swap - // Intended: r7 = a1, r6 = gUnknown_030006BC[2] - // Observed: r6 = a1, r7 = gUnknown_030006BC[2] - int i; - - gUnknown_030006BC = gUnknown_Debug_839BFE8; - *a1++ = CHAR_SPACE; - *a1++ = CHAR_SPACE; - - for (i = 0; i < 2; i++, gUnknown_030006BC += 4) - { - u32 r5 = 0; - int r2; - int r4; - for (r2 = gUnknown_030006BC[1], r4 = 0; r4 < gUnknown_030006BC[2]; r4++, r2 /= 10) - r5 += (a0[gUnknown_030006BC[3] + r4] - '0') * r2; - if (gUnknown_030006BC[0] < r5) - r5 = gUnknown_030006BC[0]; - a1 = ConvertIntToDecimalStringN(a1, r5, STR_CONV_MODE_LEADING_ZEROS, gUnknown_030006BC[2]); - } - a1[0] = a0[29] - 'A' + CHAR_A; - if (a1[0] > 0xf6) - a1[0] = 0xf6; - a1[1] = EOS; -} -#else -NAKED void DebugMenu_8077C3C(const char * a0, u8 * a1) -{ - asm("\tpush\t{r4, r5, r6, r7, lr}\n" - "\tmov\tr7, sl\n" - "\tmov\tr6, r9\n" - "\tmov\tr5, r8\n" - "\tpush\t{r5, r6, r7}\n" - "\tadd\tsp, sp, #0xfffffffc\n" - "\tmov\tsl, r0\n" - "\tadd\tr7, r1, #0\n" - "\tldr\tr0, ._271 @ gUnknown_030006BC\n" - "\tldr\tr1, ._271 + 4 @ gUnknown_Debug_839BFE8\n" - "\tstr\tr1, [r0]\n" - "\tmov\tr1, #0x0\n" - "\tstrb\tr1, [r7]\n" - "\tadd\tr7, r7, #0x1\n" - "\tstrb\tr1, [r7]\n" - "\tadd\tr7, r7, #0x1\n" - "\tmov\tr3, #0x0\n" - "\tmov\tr8, r0\n" - "._269:\n" - "\tmov\tr5, #0x0\n" - "\tldr\tr1, ._271 @ gUnknown_030006BC\n" - "\tldr\tr0, [r1]\n" - "\tldr\tr2, [r0, #0x4]\n" - "\tmov\tr4, #0x0\n" - "\tldr\tr1, [r0, #0x8]\n" - "\tadd\tr3, r3, #0x1\n" - "\tmov\tr9, r3\n" - "\tcmp\tr5, r1\n" - "\tbge\t._266\t@cond_branch\n" - "\tadd\tr3, r0, #0\n" - "\tadd\tr6, r1, #0\n" - "._267:\n" - "\tldr\tr0, [r3, #0xc]\n" - "\tadd\tr0, r0, r4\n" - "\tadd r0, r0, sl\n" - "\tldrb\tr0, [r0]\n" - "\tsub\tr0, r0, #0x30\n" - "\tmul\tr0, r0, r2\n" - "\tadd\tr5, r5, r0\n" - "\tadd\tr4, r4, #0x1\n" - "\tadd\tr0, r2, #0\n" - "\tmov\tr1, #0xa\n" - "\tstr\tr3, [sp]\n" - "\tbl\t__divsi3\n" - "\tadd\tr2, r0, #0\n" - "\tldr\tr3, [sp]\n" - "\tcmp\tr4, r6\n" - "\tblt\t._267\t@cond_branch\n" - "._266:\n" - "\tmov\tr0, r8\n" - "\tldr\tr1, [r0]\n" - "\tldr\tr0, [r1]\n" - "\tcmp\tr0, r5\n" - "\tbcs\t._268\t@cond_branch\n" - "\tadd\tr5, r0, #0\n" - "._268:\n" - "\tldrb\tr3, [r1, #0x8]\n" - "\tadd\tr0, r7, #0\n" - "\tadd\tr1, r5, #0\n" - "\tmov\tr2, #0x2\n" - "\tbl\tConvertIntToDecimalStringN\n" - "\tadd\tr7, r0, #0\n" - "\tmov\tr3, r9\n" - "\tmov\tr1, r8\n" - "\tldr\tr0, [r1]\n" - "\tadd\tr0, r0, #0x10\n" - "\tstr\tr0, [r1]\n" - "\tcmp\tr3, #0x1\n" - "\tble\t._269\t@cond_branch\n" - "\tmov\tr1, sl\n" - "\tldrb\tr0, [r1, #0x1d]\n" - "\tadd\tr0, r0, #0x7a\n" - "\tstrb\tr0, [r7]\n" - "\tlsl\tr0, r0, #0x18\n" - "\tlsr\tr0, r0, #0x18\n" - "\tcmp\tr0, #0xf6\n" - "\tbls\t._270\t@cond_branch\n" - "\tmov\tr0, #0xf6\n" - "\tstrb\tr0, [r7]\n" - "._270:\n" - "\tmov\tr0, #0xff\n" - "\tstrb\tr0, [r7, #0x1]\n" - "\tadd\tsp, sp, #0x4\n" - "\tpop\t{r3, r4, r5}\n" - "\tmov\tr8, r3\n" - "\tmov\tr9, r4\n" - "\tmov\tsl, r5\n" - "\tpop\t{r4, r5, r6, r7}\n" - "\tpop\t{r0}\n" - "\tbx\tr0\n" - "._272:\n" - "\t.align\t2, 0\n" - "._271:\n" - "\t.word\tgUnknown_030006BC \n" - "\t.word\tgUnknown_Debug_839BFE8\n"); + // Prevents register allocation swap + // Intended: r7 = out, r6 = gDebugBuildDate->numDigits + // Observed: r6 = out, r7 = gDebugBuildDate->numDigits + asm(""); + + gDebugBuildDate = gDebugBuildDateInfo; + *out++ = CHAR_SPACE; + *out++ = CHAR_SPACE; + for (i = 0; i < 2; i++, gDebugBuildDate++) + { + int j; + int mul; + u32 date = 0; + for (mul = gDebugBuildDate->digitMultiplier, j = 0; j < gDebugBuildDate->numDigits; j++, mul /= 10) + date += (buildDateStr[gDebugBuildDate->offset + j] - '0') * mul; + if (gDebugBuildDate->max < date) + date = gDebugBuildDate->max; + out = ConvertIntToDecimalStringN(out, date, STR_CONV_MODE_LEADING_ZEROS, gDebugBuildDate->numDigits); + } + out[0] = buildDateStr[29] - 'A' + CHAR_A; + if (out[0] > 0xf6) // prevent special characters + out[0] = 0xf6; + out[1] = EOS; } -#endif void debug_sub_8077CF4(u8 x, u8 y) { - DebugMenu_8077C3C(BuildDateTime, gStringVar4); + DebugMenu_ConvertBuildDate(BuildDateTime, gStringVar4); Menu_PrintText(gStringVar4, x, y); } -- cgit v1.2.3 From f97cff87488258fd4b9af45beffeb173820b138d Mon Sep 17 00:00:00 2001 From: "easyaspi314 (Devin)" Date: Sun, 25 Aug 2019 19:23:42 -0400 Subject: Improve some nohara translations. --- src/debug/nohara_debug_menu.c | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/debug/nohara_debug_menu.c b/src/debug/nohara_debug_menu.c index 4cb0f34ed..d26d6038c 100644 --- a/src/debug/nohara_debug_menu.c +++ b/src/debug/nohara_debug_menu.c @@ -57,11 +57,11 @@ bool8 NoharaDebugMenu_LegendsFlagOn(void); bool8 NoharaDebugMenu_AddNumWinningStreaks(void); const u8 gUnknown_Debug_083C48C4[] = _("TV"); -const u8 gUnknown_Debug_083C48C7[] = _("Fan"); +const u8 gUnknown_Debug_083C48C7[] = DTR("Fan", "LILYCOVE TRAINER FAN CLUB"); const u8 gUnknown_Debug_083C48CB[] = _("Battle (vs Dad)"); const u8 gUnknown_Debug_083C48DB[] = _("Dad after battle"); const u8 gUnknown_Debug_083C48EC[] = _("SOOTOPOLIS CITY"); -const u8 gUnknown_Debug_083C48FC[] = _("Embark"); +const u8 gUnknown_Debug_083C48FC[] = DTR("Embark", "Reset Mr. BRINEY"); const u8 gUnknown_Debug_083C4903[] = _("Yes 9999"); const u8 gUnknown_Debug_083C490C[] = _("Legends flag ON"); const u8 gUnknown_Debug_083C491C[] = _("Add num of winning streaks"); @@ -756,15 +756,18 @@ bool8 debug_sub_80900AC(void) CloseMenu(); return TRUE; } -// TRN: Figure out the meaning of these abbreviations -const u8 gUnknown_Debug_083C4C77[] = DTR("1 スクル", "1 SCHOOL"); -const u8 gUnknown_Debug_083C4C7D[] = DTR("2 ミドル", "2 MIDDLE"); -const u8 gUnknown_Debug_083C4C83[] = DTR("3 オジヨ", "3 UNCLE"); -const u8 gUnknown_Debug_083C4C89[] = DTR("4 ボーヤ", "4 BOY"); -const u8 gUnknown_Debug_083C4C8F[] = DTR("5 ボーイ", "5 BOY"); -const u8 gUnknown_Debug_083C4C95[] = DTR("6 ヤング", "6 YOUNG"); -const u8 gUnknown_Debug_083C4C9B[] = DTR("7 ヲーカ", "7 WOUKA"); -const u8 gUnknown_Debug_083C4CA1[] = DTR("8 オルド", "8 OLD"); +// These represent the people in Lilycove Fan Club. +// TRN: These translations are probably wrong but it is really hard to tell with +// the abbreviations. They are mosly based on observation +// The first one is selected by default when there are no fans. +const u8 gUnknown_Debug_083C4C77[] = DTR("1 スクル", "1 LASS/NONE"); // school (girl) +const u8 gUnknown_Debug_083C4C7D[] = DTR("2 ミドル", "2 MIDDLE AGE MAN"); // middle +const u8 gUnknown_Debug_083C4C83[] = DTR("3 オジヨ", "3 DAUGHTER"); // おしょう (daughter) +const u8 gUnknown_Debug_083C4C89[] = DTR("4 ボーヤ", "4 YOUNG BOY"); // 坊や (boy) +const u8 gUnknown_Debug_083C4C8F[] = DTR("5 ボーイ", "5 BOY"); // boy +const u8 gUnknown_Debug_083C4C95[] = DTR("6 ヤング", "6 YOUNG MAN"); // young +const u8 gUnknown_Debug_083C4C9B[] = DTR("7 ヲーカ", "7 MOM"); // お母さん? (probably typo) +const u8 gUnknown_Debug_083C4CA1[] = DTR("8 オルド", "8 OLD LADY"); // old const u8 *const gUnknown_Debug_083C4CA8[] = { gUnknown_Debug_083C4C77, @@ -777,9 +780,9 @@ const u8 *const gUnknown_Debug_083C4CA8[] = { gUnknown_Debug_083C4CA1 }; -const u8 gUnknown_Debug_083C4CC8[] = _("Start"); -const u8 gUnknown_Debug_083C4CCE[] = _("Increase"); -const u8 gUnknown_Debug_083C4CD7[] = _("Reduce"); +const u8 gUnknown_Debug_083C4CC8[] = _("Start"); // Starts the "Oh! I've heard of you' script" +const u8 gUnknown_Debug_083C4CCE[] = _("Increase"); // Increases popularity +const u8 gUnknown_Debug_083C4CD7[] = _("Reduce"); // reduces popularity const u8 gUnknown_Debug_083C4CDE[] = _("Points"); const u8 gUnknown_Debug_083C4CE5[] = _("Play time 6"); const u8 gUnknown_Debug_083C4CF1[] = _("P ELITE FOUR"); -- cgit v1.2.3 From b19c77d1c9ec659a331e29f38b157891364d93ec Mon Sep 17 00:00:00 2001 From: "easyaspi314 (Devin)" Date: Sun, 25 Aug 2019 21:06:57 -0400 Subject: Replace asm("") with ++ --. agbcc is weird --- src/debug/start_menu_debug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 0520e7118..c0d6a3c76 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -1400,7 +1400,7 @@ void DebugMenu_ConvertBuildDate(const char *buildDateStr, u8 *out) // Prevents register allocation swap // Intended: r7 = out, r6 = gDebugBuildDate->numDigits // Observed: r6 = out, r7 = gDebugBuildDate->numDigits - asm(""); + ++out; --out; gDebugBuildDate = gDebugBuildDateInfo; *out++ = CHAR_SPACE; -- cgit v1.2.3 From 5d1f39aa6fd984542686cc0c83b9ed85bff34811 Mon Sep 17 00:00:00 2001 From: "easyaspi314 (Devin)" Date: Sun, 25 Aug 2019 21:07:42 -0400 Subject: Improve a mori_debug_menu translation --- src/debug/mori_debug_menu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/debug/mori_debug_menu.c b/src/debug/mori_debug_menu.c index b930350ff..dfa2487a5 100644 --- a/src/debug/mori_debug_menu.c +++ b/src/debug/mori_debug_menu.c @@ -31,7 +31,7 @@ const u8 gUnknown_0839B22C[][3] = }; const u8 gUnknown_0839B24A[] = _("ND"); -const u8 gUnknown_0839B24D[] = DTR("の こどもは\n", "'s child =\n"); // TRN +const u8 gUnknown_0839B24D[] = DTR("の こどもは\n", "'s child is\n"); const u8 gUnknown_0839B255[] = _(" "); const u8 gUnknown_0839B257[] = DTR("ながいなまえぽけもん", "LongName{PKMN}"); // "long name pokemon" (used as test name) const u8 Text_39B262[] = _("Search a child"); -- cgit v1.2.3 From 0934066d11db4b5258fa8a62fea265b1c8474c15 Mon Sep 17 00:00:00 2001 From: "easyaspi314 (Devin)" Date: Sun, 25 Aug 2019 22:54:45 -0400 Subject: Fix some test menu translations, document unused functions and name stuff --- src/debug/start_menu_debug.c | 91 ++++++++++++++++++++++---------------------- 1 file changed, 46 insertions(+), 45 deletions(-) (limited to 'src') diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index c0d6a3c76..51c0ed297 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -273,49 +273,49 @@ const u8 gUnknown_Debug_0839BBA4[] = _("Debugging Version"); const u8 gUnknown_Debug_0839BBB6[] = _("{VERSION} Version"); const u8 gUnknown_Debug_0839BBC1[] = _("Normal RTC compatible"); -const u8 Str_839BBD7[] = DTR("か の じっけん", "Test"); -const u8 Str_839BBE0[] = DTR("じっけん2", "Test2"); -const u8 Str_839BBE6[] = DTR("BGじっけん", "BG Test"); -const u8 Str_839BBED[] = _("Battle"); -const u8 Str_839BBF4[] = DTR("つうしん じっけん", "LINK Test"); -const u8 Str_839BBFE[] = _("LINK Test2"); -const u8 Str_839BC09[] = DTR("フィールド はじめる", "Field Start"); // TRN -const u8 Str_839BC14[] = DTR("フィールド つづき", "Field Continue"); // TRN -const u8 Str_839BC1E[] = _("Sound test"); -const u8 Str_839BC29[] = _("{POKEBLOCK} test"); -const u8 Str_839BC34[] = _("Crash backup data"); -const u8 Str_839BC46[] = _("e-Card test"); -const u8 Str_839BC52[] = DTR("こうかんデモ   ", "Trade demo"); -const u8 Str_839BC5C[] = _("Time in game"); -const u8 Str_839BC69[] = DTR("フェスタ モード", "Festa mode"); // TRN -const u8 Str_839BC72[] = _("Mimic e-Card"); -const u8 Str_839BC7F[] = _("RTC reset"); -const u8 Str_839BC89[] = _("Converter"); - -const struct MenuAction gUnknown_Debug_839BC94[] = -{ - { Str_839BBD7, DebugMenu_8076CBC }, - { Str_839BBE0, DebugMenu_8076CC0 }, - { Str_839BBE6, DebugMenu_8076CD4 }, - { Str_839BBED, DebugMenu_8076C6C }, - { Str_839BC29, DebugMenu_8076CD8 }, - { Str_839BBFE, DebugMenu_8076D28 }, - { Str_839BC1E, DebugMenu_8076D3C }, - { Str_839BC09, DebugMenu_8076C80 }, - { Str_839BC14, DebugMenu_8076C90 }, - { Str_839BC34, DebugMenu_8076D50 }, - { Str_839BC46, DebugMenu_8076CEC }, - { Str_839BC52, DebugMenu_8076D14 }, - { Str_839BC72, DebugMenu_8076D00 }, - { Str_839BC5C, DebugMenu_8076D5C }, - { Str_839BC7F, DebugMenu_8076E18 }, - { Str_839BC89, DebugMenu_8076EDC }, +const u8 gTestMenu_TestMenuHeaderText[] = DTR("か の じっけん", "TEST MENU"); // 科の実験 (Test section) +const u8 gTestMenu_Test2Text[] = DTR("じっけん2", "Test2"); +const u8 gTestMenu_BGTestText[] = DTR("BGじっけん", "BG Test"); +const u8 gTestMenu_BattleText[] = _("Battle"); +const u8 gTestMenu_UnusedLinkTestText[] = DTR("つうしん じっけん", "LINK Test"); // unused +const u8 gTestMenu_LinkTest2Text[] = _("LINK Test2"); +const u8 gTestMenu_FieldStartText[] = DTR("フィールド はじめる", "New game"); // "Field start" +const u8 gTestMenu_FieldContinueText[] = DTR("フィールド つづき", "Continue game"); // "Field continue" +const u8 gTestMenu_SoundTestText[] = _("Sound test"); +const u8 gTestMenu_PokeblockTestText[] = _("{POKEBLOCK} test"); +const u8 gTestMenu_CrashBackupDataText[] = _("Crash backup data"); +const u8 gTestMenu_eCardTestText[] = _("e-Card test"); +const u8 gTestMenu_TradeDemoText[] = DTR("こうかんデモ   ", "Trade demo"); +const u8 gTestMenu_TimeInGameText[] = _("Time in game"); +const u8 gTestMenu_UnusedFestaModeText[] = DTR("フェスタ モード", "Festa mode"); // unused +const u8 gTestMenu_MimicECardText[] = _("Mimic e-Card"); +const u8 gTestMenu_RTCResetText[] = _("RTC reset"); +const u8 gTestMenu_ConverterText[] = _("Converter"); + +const struct MenuAction gDebug_TestMenuItems[] = +{ + { gTestMenu_TestMenuHeaderText, DebugMenu_8076CBC }, // Disabled - nop header + { gTestMenu_Test2Text, DebugMenu_8076CC0 }, // Disabled - freezes game (likely went to tomohara menu + { gTestMenu_BGTestText, DebugMenu_8076CD4 }, // Disabled - nop + { gTestMenu_BattleText, DebugMenu_8076C6C }, + { gTestMenu_PokeblockTestText, DebugMenu_8076CD8 }, + { gTestMenu_LinkTest2Text, DebugMenu_8076D28 }, + { gTestMenu_SoundTestText, DebugMenu_8076D3C }, + { gTestMenu_FieldStartText, DebugMenu_8076C80 }, // Disabled - starts new game w/o intro with preset name + { gTestMenu_FieldContinueText, DebugMenu_8076C90 }, // Disabled - continues game + { gTestMenu_CrashBackupDataText, DebugMenu_8076D50 }, + { gTestMenu_eCardTestText, DebugMenu_8076CEC }, + { gTestMenu_TradeDemoText, DebugMenu_8076D14 }, // Disabled - starts a trade then crashes + { gTestMenu_MimicECardText, DebugMenu_8076D00 }, + { gTestMenu_TimeInGameText, DebugMenu_8076D5C }, + { gTestMenu_RTCResetText, DebugMenu_8076E18 }, + { gTestMenu_ConverterText, DebugMenu_8076EDC }, }; // NOTE: When decompiling this file, I found out that having an extraneous extern // in a C file can affect the generated asm. If this extern is commented out, // debug_sub_8076BB4 will access the array differently and no longer match. -//extern const struct MenuAction gUnknown_Debug_839BC94[]; +//extern const struct MenuAction gDebug_TestMenuItems[]; const u8 gMenuOrders_839BD14[][10] = { @@ -367,7 +367,7 @@ void debug_sub_8076AC8(u8 a) ; Menu_EraseWindowRect(16, 0, 29, 19); Menu_DrawStdWindowFrame(16, 0, 29, r4 * 2 + 1); - Menu_PrintItemsReordered(17, 1, r4, (struct MenuAction2 *)gUnknown_Debug_839BC94, gUnknown_030006C4); + Menu_PrintItemsReordered(17, 1, r4, (struct MenuAction2 *)gDebug_TestMenuItems, gUnknown_030006C4); InitMenu(0, 17, 1, r4, 0, 12); } @@ -400,7 +400,7 @@ void debug_sub_8076BB4(u8 taskId) switch (input) { default: - gUnknown_Debug_839BC94[gUnknown_030006C4[cursorPos]].func(); + gDebug_TestMenuItems[gUnknown_030006C4[cursorPos]].func(); break; case -2: if (gMain.newKeys & 0x20) @@ -606,14 +606,15 @@ u8 DebugMenu_8076EDC(void) return 0; } +// A list of preset player names const u8 Str_839BD90[] = DTR("ジュンイチ", "JUNICHI"); -const u8 Str_839BD96[] = DTR("ダイゴロウ", "STEVEN LOW"); // TRN - likely special char -const u8 Str_839BD9C[] = DTR("テツジ", "TETSUJI"); -const u8 Str_839BDA0[] = DTR("バレンシア", "VALENCIA"); // TRN -const u8 Str_839BDA6[] = DTR("ハルコマチ", "HARUKOMACHI"); // TRN +const u8 Str_839BD96[] = DTR("ダイゴロウ", "DAIGORO"); +const u8 Str_839BD9C[] = DTR("テツジ", "TETSUJI"); +const u8 Str_839BDA0[] = DTR("バレンシア", "VALENCY"); // Valencia is too long +const u8 Str_839BDA6[] = DTR("ハルコマチ", "MAY"); // May town? const u8 Str_839BDAC[] = _("RAYMOND"); const u8 Str_839BDB4[] = _("TIFFANY"); -const u8 Str_839BDBC[] = DTR("くまxちえ", "KUMA x CHIE"); // TRN +const u8 Str_839BDBC[] = DTR("くまxちえ", "KUMA"); // Chie Kuma? const struct { const u8 * text; -- cgit v1.2.3 From 79a40cb610a9bb1915405092de3f41329f8caeac Mon Sep 17 00:00:00 2001 From: "easyaspi314 (Devin)" Date: Mon, 26 Aug 2019 12:55:32 -0400 Subject: Improve slot machine translation, make textbox larger --- src/slot_machine.c | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/slot_machine.c b/src/slot_machine.c index b73b1e80a..c03ae0dfa 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -5619,25 +5619,25 @@ static void debug_sub_811B2E8(void) static const u8 Str_841B1C4[] = DTR("SETTEI", "SET"); static const u8 Str_841B1CB[] = DTR("MAWASITA", "TURNED"); static const u8 Str_841B1D4[] = DTR("MODOSI", "RETURN"); -static const u8 Str_841B1DB[] = _("NOMARE"); // TRN: Normal, 's rare, etc? +static const u8 Str_841B1DB[] = DTR("NOMARE", "CONSUMED"); static const u8 Str_841B1E2[] = DTR("MAE 7", "BEFORE 7"); static const u8 Str_841B1E8[] = DTR("LR HENKOU", "LR: CHANGE"); -static const u8 Str_841B1F3[] = _("START JIDOUSU"); // TRN -static const u8 Str_841B202[] = DTR("SELECT SETTEI", "SELECT: SET"); +static const u8 Str_841B1F3[] = DTR("START JIDOUSU", "START: AUTO"); +static const u8 Str_841B202[] = DTR("SELECT SETTEI", "SELECT: FORCE"); // Irregular Romaji: 抽選 (ちゅうせん/chuusen) -static const u8 Str_841B211[] = DTR("TYUHSEN", "LOTTERY"); +static const u8 Str_841B211[] = DTR("TYUHSEN", "DRAWINGS"); static const u8 Str_841B219[] = _("CHERRY"); static const u8 Str_841B220[] = _("REPLAY"); -static const u8 Str_841B227[] = DTR("HASUBO", "LOTAD"); // TRN +static const u8 Str_841B227[] = DTR("HASUBO", "LOTAD"); static const u8 Str_841B22E[] = DTR("RURIRI", "AZURILL"); static const u8 Str_841B235[] = DTR("INAZU", "LIGHTNING"); static const u8 Str_841B23B[] = _("REG"); static const u8 Str_841B23F[] = _("BIG"); -static const u8 Str_841B243[] = _("BD"); +static const u8 Str_841B243[] = DTR("BD", "REEL TIME"); static const u8 Str_841B246[] = _("R7"); static const u8 Str_841B249[] = _("B7"); -static const u8 Str_841B24C[] = _("A COIN"); -static const u8 Str_841B254[] = DTR("TYUHSEN", "LOTTERY"); +static const u8 Str_841B24C[] = DTR("A COIN", "A: COIN"); +static const u8 Str_841B254[] = DTR("TYUHSEN", "DRAWINGS"); static const u8 Str_841B25C[] = _("UD 100"); static const u8 Str_841B264[] = _("LR 1000"); static const u8 Str_841B26D[] = _("×"); @@ -5676,15 +5676,21 @@ void debug_sub_811B310(void) PRINT_NUMBER(eSlotMachine->unk68, 10, 3); PRINT_NUMBER(eSlotMachine->unk6C, 10, 5); PRINT_NUMBER(eSlotMachine->unk10, 10, 7); - PRINT_NUMBER(eSlotMachine->unk70, 20, 3); - PRINT_NUMBER(eSlotMachine->unk74, 20, 5); - PRINT_NUMBER(eSlotMachine->unk78, 20, 7); - PRINT_NUMBER(eSlotMachine->unk7C, 20, 9); - PRINT_NUMBER(eSlotMachine->unk80, 20, 11); - PRINT_NUMBER(eSlotMachine->unk84, 20, 13); - PRINT_NUMBER(eSlotMachine->unk88, 20, 15); - PRINT_NUMBER(eSlotMachine->unk8C, 20, 17); +#if DEBUG_TRANSLATE +#define OFFSET 24 // wider window +#else +#define OFFSET 20 +#endif + PRINT_NUMBER(eSlotMachine->unk70, OFFSET, 3); + PRINT_NUMBER(eSlotMachine->unk74, OFFSET, 5); + PRINT_NUMBER(eSlotMachine->unk78, OFFSET, 7); + PRINT_NUMBER(eSlotMachine->unk7C, OFFSET, 9); + PRINT_NUMBER(eSlotMachine->unk80, OFFSET, 11); + PRINT_NUMBER(eSlotMachine->unk84, OFFSET, 13); + PRINT_NUMBER(eSlotMachine->unk88, OFFSET, 15); + PRINT_NUMBER(eSlotMachine->unk8C, OFFSET, 17); +#undef OFFSET #undef PRINT_NUMBER if (unk_debug_bss_1_0 != 0) @@ -5779,7 +5785,12 @@ static void debug_sub_811B654(u8 taskId) switch (task->data[0]) { case 0: +#if DEBUG_TRANSLATE + Menu_DrawStdWindowFrame(0, 0, 28, 19); // wider window +#else Menu_DrawStdWindowFrame(0, 0, 24, 19); +#endif + debug_sub_811B310(); task->data[0]++; break; -- cgit v1.2.3 From 973f010c417e8d5b5c5e2e2da0a7063c7f5cc110 Mon Sep 17 00:00:00 2001 From: "easyaspi314 (Devin)" Date: Mon, 26 Aug 2019 12:56:08 -0400 Subject: Translate the Trainer card test name --- src/trainer_card.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/trainer_card.c b/src/trainer_card.c index b34517def..5e07fdcc8 100644 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -87,7 +87,7 @@ const struct TrainerCard sTestTrainerCard = .pokemonTrades = 0xFFFF, .money = 99999, .var_28 = {1, 2, 3, 4}, - .playerName = _("てすと"), // "test" + .playerName = DTR("てすと", "TEST"), }; #endif -- cgit v1.2.3 From abc82feda6f7f3b4852d24af4cb83d12a82c3144 Mon Sep 17 00:00:00 2001 From: "easyaspi314 (Devin)" Date: Mon, 26 Aug 2019 12:56:57 -0400 Subject: Translate skipped Mail text --- src/mail.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/mail.c b/src/mail.c index 27a25feba..9a56d73cc 100644 --- a/src/mail.c +++ b/src/mail.c @@ -947,9 +947,11 @@ u8 debug_sub_810CFA4(void) u8 debug_sub_810D030(void) { - const u8 text1[] = _("メール{STR_VAR_1} とうろく かいじょ"); - const u8 text2[] = _("デバッグメニューから とうろくした\n" - "メール いがいは けせません"); + const u8 text1[] = DTR("メール{STR_VAR_1} とうろく かいじょ", "UNREGISTER MAIL{STR_VAR_1}"); + const u8 text2[] = DTR("デバッグメニューから とうろくした\n" + "メール いがいは けせません", + "You cannot delete REGISTERED MAIL\n" + "from the DEBUG MENU"); s8 input = Menu_ProcessInput(); switch (input) -- cgit v1.2.3 From 8f1e63cbcdb6169297717ecda2607c9f6f3580e6 Mon Sep 17 00:00:00 2001 From: "easyaspi314 (Devin)" Date: Mon, 26 Aug 2019 19:27:24 -0400 Subject: Mark some things in tomomichi_debug_menu.c --- src/debug/tomomichi_debug_menu.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c index eb4a046df..7bf23a05c 100644 --- a/src/debug/tomomichi_debug_menu.c +++ b/src/debug/tomomichi_debug_menu.c @@ -16,6 +16,8 @@ #include "contest_painting.h" #include "sound.h" +// TRN: If anyone wants to translate the dummy options, they are welcome to :P + static u16 sPicTest_Species; static u32 sPicTest_OTID; static u32 sPicTest_Personality; @@ -1408,7 +1410,7 @@ static const u16 gUnknown_Debug_083C371E[][9] = { static const u8 gUnknown_Debug_083C3742[] = _("SP"); static const u8 gUnknown_Debug_083C3745[] = DTR("ルーム R110 PART1/カラクリ", "Room R110 Part 1/TRICK"); static const u8 gUnknown_Debug_083C3759[] = DTR("ルーム R110 PART2", "Room R110 Part 2"); -static const u8 gUnknown_Debug_083C3768[] = DTR("ルーム ロード", "Room road"); +static const u8 gUnknown_Debug_083C3768[] = DTR("ルーム ロード", "Room road"); // TRN static const u8 gUnknown_Debug_083C3770[] = DTR("ソノタ1", "Other 1"); static const u8 gUnknown_Debug_083C3775[] = DTR("ソノタ2", "Other 2"); @@ -1569,7 +1571,7 @@ static const u8 sString_Route_101_to_109[] = DTR("ロード101ー109", "ROUTE 10 static const u8 sString_Route_110_to_118[] = DTR("ロード110ー118", "ROUTE 110-118"); static const u8 sString_Route_119_to_127[] = DTR("ロード119ー127", "ROUTE 119-127"); static const u8 sString_Route_128_to_134[] = DTR("ロード128ー134", "ROUTE 128-134"); -static const u8 sString_Room_Town[] = DTR("ルーム タウン", "Room Town"); +static const u8 sString_Room_Town[] = DTR("ルーム タウン", "Room Town"); // TRN static const u8 sString_Room_City[] = DTR("ルーム シティ", "Room City"); static const u8 sString_Dungeon_nai[] = DTR("ダンジョンない", "DUNGEON"); -- cgit v1.2.3 From 3203e4f2f444b2264dad4350288912319f0f02a8 Mon Sep 17 00:00:00 2001 From: "easyaspi314 (Devin)" Date: Thu, 5 Sep 2019 13:37:38 -0400 Subject: Document some debug menu things --- src/debug/start_menu_debug.c | 46 ++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 23 deletions(-) (limited to 'src') diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 51c0ed297..af26a60a6 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -607,27 +607,27 @@ u8 DebugMenu_8076EDC(void) } // A list of preset player names -const u8 Str_839BD90[] = DTR("ジュンイチ", "JUNICHI"); -const u8 Str_839BD96[] = DTR("ダイゴロウ", "DAIGORO"); -const u8 Str_839BD9C[] = DTR("テツジ", "TETSUJI"); -const u8 Str_839BDA0[] = DTR("バレンシア", "VALENCY"); // Valencia is too long -const u8 Str_839BDA6[] = DTR("ハルコマチ", "MAY"); // May town? -const u8 Str_839BDAC[] = _("RAYMOND"); -const u8 Str_839BDB4[] = _("TIFFANY"); -const u8 Str_839BDBC[] = DTR("くまxちえ", "KUMA"); // Chie Kuma? +const u8 gTestMenuStr_Junichi[] = DTR("ジュンイチ", "JUNICHI"); +const u8 gTestMenuStr_Daigoro[] = DTR("ダイゴロウ", "DAIGORO"); +const u8 gTestMenuStr_Tetsuji[] = DTR("テツジ", "TETSUJI"); +const u8 gTestMenuStr_Valencia[] = DTR("バレンシア", "VALENCY"); // Valencia is too long +const u8 gTestMenuStr_Harukomachi[] = DTR("ハルコマチ", "MAY"); // May town? +const u8 gTestMenuStr_Raymond[] = _("RAYMOND"); +const u8 gTestMenuStr_Tiffany[] = _("TIFFANY"); +const u8 gTestMenuStr_KumaXChie[] = DTR("くまxちえ", "KUMA"); // Chie Kuma? const struct { const u8 * text; u32 flags; -} gUnknown_Debug_839BDC4[] = { - {Str_839BD90, 0x0}, - {Str_839BD96, 0x0}, - {Str_839BDA0, 0x1}, - {Str_839BDA6, 0x1}, - {Str_839BDAC, 0x80}, - {Str_839BDB4, 0x81}, - {Str_839BD9C, 0x0}, - {Str_839BDBC, 0x1} +} gTestMenu_FieldStartNames[] = { + {gTestMenuStr_Junichi, 0x0}, + {gTestMenuStr_Daigoro, 0x0}, + {gTestMenuStr_Tetsuji, 0x1}, + {gTestMenuStr_Valencia, 0x1}, + {gTestMenuStr_Harukomachi, 0x80}, + {gTestMenuStr_Raymond, 0x81}, + {gTestMenuStr_Tiffany, 0x0}, + {gTestMenuStr_KumaXChie, 0x1} }; void DebugMenu_8076EF4(void) @@ -635,12 +635,12 @@ void DebugMenu_8076EF4(void) u8 i; Menu_DrawStdWindowFrame(0, 0, 11, 17); - Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_839BDC4), gUnknown_Debug_839BDC4); - for (i = 0; i < ARRAY_COUNT(gUnknown_Debug_839BDC4); i++) + Menu_PrintItems(2, 1, ARRAY_COUNT(gTestMenu_FieldStartNames), gTestMenu_FieldStartNames); + for (i = 0; i < ARRAY_COUNT(gTestMenu_FieldStartNames); i++) { - sub_8071F60((gUnknown_Debug_839BDC4[i].flags & 1) == MALE ? CHAR_MALE : CHAR_FEMALE, 10, 2 * i + 1); + sub_8071F60((gTestMenu_FieldStartNames[i].flags & 1) == MALE ? CHAR_MALE : CHAR_FEMALE, 10, 2 * i + 1); } - InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_839BDC4), 0, 9); + InitMenu(0, 1, 1, ARRAY_COUNT(gTestMenu_FieldStartNames), 0, 9); } void DebugMenu_8076F60(u8 taskId) @@ -659,9 +659,9 @@ void DebugMenu_8076F60(u8 taskId) break; default: { - u8 flags = gUnknown_Debug_839BDC4[cursorPos].flags; + u8 flags = gTestMenu_FieldStartNames[cursorPos].flags; gSaveBlock2.playerGender = flags & 1; - StringCopy(gSaveBlock2.playerName, gUnknown_Debug_839BDC4[cursorPos].text); + StringCopy(gSaveBlock2.playerName, gTestMenu_FieldStartNames[cursorPos].text); if ((flags & 0x80) == 0) debug_sub_8057508(FALSE); else -- cgit v1.2.3 From dcd7c8a2412bf389b694b47892085b7684bca15e Mon Sep 17 00:00:00 2001 From: "easyaspi314 (Devin)" Date: Thu, 5 Sep 2019 14:28:56 -0400 Subject: Fix a mixup in the naming :( --- src/debug/start_menu_debug.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index af26a60a6..940f21ac7 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -622,11 +622,11 @@ const struct { } gTestMenu_FieldStartNames[] = { {gTestMenuStr_Junichi, 0x0}, {gTestMenuStr_Daigoro, 0x0}, - {gTestMenuStr_Tetsuji, 0x1}, {gTestMenuStr_Valencia, 0x1}, - {gTestMenuStr_Harukomachi, 0x80}, - {gTestMenuStr_Raymond, 0x81}, - {gTestMenuStr_Tiffany, 0x0}, + {gTestMenuStr_Harukomachi, 0x1}, + {gTestMenuStr_Raymond, 0x80}, + {gTestMenuStr_Tiffany, 0x81}, + {gTestMenuStr_Tetsuji, 0x0}, {gTestMenuStr_KumaXChie, 0x1} }; -- cgit v1.2.3 From 2126668f0926d19e06850f28d61107f7b4a07a85 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 5 Oct 2019 10:42:48 -0400 Subject: Match sub_80C9720 --- src/item_use.c | 159 ++------------------------------------------------------- 1 file changed, 5 insertions(+), 154 deletions(-) (limited to 'src') diff --git a/src/item_use.c b/src/item_use.c index d927b5937..9c8c2da57 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -420,8 +420,6 @@ bool8 sub_80C9688(struct MapConnection *connection, int x, int y) return HiddenItemAtPos(mapHeader->events, localX, localY); } -// weird math -#ifdef NONMATCHING void sub_80C9720(u8 taskId) { s16 x, y; @@ -429,15 +427,18 @@ void sub_80C9720(u8 taskId) s16 width = gMapHeader.mapLayout->width + 7; s16 height = gMapHeader.mapLayout->height + 7; + s16 var1 = 7; + s16 var2 = 7; + PlayerGetDestCoords(&x, &y); for (curX = x - 7; curX <= x + 7; curX++) { for (curY = y - 5; curY <= y + 5; curY++) { - if (7 > curX + if (var1 > curX || curX >= width - || 7 > curY + || var2 > curY || curY >= height) { struct MapConnection *conn = sub_8056BA0(curX, curY); @@ -447,156 +448,6 @@ void sub_80C9720(u8 taskId) } } } -#else -NAKED -void sub_80C9720(u8 taskId) -{ - 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, 24\n\ - lsrs r0, 24\n\ - str r0, [sp, 0x4]\n\ - ldr r0, _080C9834 @ =gMapHeader\n\ - ldr r1, [r0]\n\ - ldr r0, [r1]\n\ - adds r0, 0x7\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x8]\n\ - ldr r0, [r1, 0x4]\n\ - adds r0, 0x7\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0xC]\n\ - mov r4, sp\n\ - adds r4, 0x2\n\ - mov r0, sp\n\ - adds r1, r4, 0\n\ - bl PlayerGetDestCoords\n\ - mov r0, sp\n\ - ldrh r0, [r0]\n\ - subs r0, 0x7\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - asrs r0, 16\n\ - mov r1, sp\n\ - movs r2, 0\n\ - ldrsh r1, [r1, r2]\n\ - adds r1, 0x7\n\ - cmp r0, r1\n\ - bgt _080C9824\n\ -_080C976E:\n\ - mov r5, sp\n\ - ldrh r0, [r5, 0x2]\n\ - subs r0, 0x5\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - lsls r2, r4, 16\n\ - asrs r1, r2, 16\n\ - movs r6, 0x2\n\ - ldrsh r0, [r5, r6]\n\ - adds r0, 0x5\n\ - lsls r3, 16\n\ - mov r8, r3\n\ - cmp r1, r0\n\ - bgt _080C980E\n\ - movs r0, 0x7\n\ - str r0, [sp, 0x10]\n\ - mov r1, r8\n\ - asrs r1, 16\n\ - mov r9, r1\n\ - mov r10, r0\n\ -_080C9796:\n\ - ldr r3, [sp, 0x10]\n\ - cmp r3, r9\n\ - bgt _080C97B8\n\ - ldr r5, [sp, 0x8]\n\ - lsls r0, r5, 16\n\ - asrs r0, 16\n\ - cmp r9, r0\n\ - bge _080C97B8\n\ - asrs r1, r2, 16\n\ - cmp r10, r1\n\ - bgt _080C97B8\n\ - ldr r6, [sp, 0xC]\n\ - lsls r0, r6, 16\n\ - asrs r0, 16\n\ - lsls r7, r4, 16\n\ - cmp r1, r0\n\ - blt _080C97F6\n\ -_080C97B8:\n\ - mov r0, r8\n\ - asrs r5, r0, 16\n\ - lsls r4, 16\n\ - asrs r6, r4, 16\n\ - adds r0, r5, 0\n\ - adds r1, r6, 0\n\ - bl sub_8056BA0\n\ - adds r7, r4, 0\n\ - cmp r0, 0\n\ - beq _080C97F6\n\ - adds r1, r5, 0\n\ - adds r2, r6, 0\n\ - bl sub_80C9688\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - bne _080C97F6\n\ - mov r0, sp\n\ - ldrh r1, [r0]\n\ - subs r1, r5, r1\n\ - lsls r1, 16\n\ - asrs r1, 16\n\ - ldrh r2, [r0, 0x2]\n\ - subs r2, r6, r2\n\ - lsls r2, 16\n\ - asrs r2, 16\n\ - ldr r0, [sp, 0x4]\n\ - bl sub_80C9838\n\ -_080C97F6:\n\ - movs r1, 0x80\n\ - lsls r1, 9\n\ - adds r0, r7, r1\n\ - lsrs r4, r0, 16\n\ - lsls r2, r4, 16\n\ - asrs r1, r2, 16\n\ - mov r3, sp\n\ - movs r5, 0x2\n\ - ldrsh r0, [r3, r5]\n\ - adds r0, 0x5\n\ - cmp r1, r0\n\ - ble _080C9796\n\ -_080C980E:\n\ - movs r1, 0x80\n\ - lsls r1, 9\n\ - add r1, r8\n\ - lsrs r3, r1, 16\n\ - asrs r1, 16\n\ - mov r0, sp\n\ - movs r6, 0\n\ - ldrsh r0, [r0, r6]\n\ - adds r0, 0x7\n\ - cmp r1, r0\n\ - ble _080C976E\n\ -_080C9824:\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 {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080C9834: .4byte gMapHeader\n\ - .syntax divided"); -} -#endif void sub_80C9838(u8 taskId, s16 x, s16 y) { -- cgit v1.2.3 From fc2926aa469de176403d0ccaba3ad503c65ff98e Mon Sep 17 00:00:00 2001 From: garak Date: Mon, 30 Sep 2019 19:18:06 -0400 Subject: add fishing rod groups to encounter json --- src/data/wild_encounters.json | 16 ++++++++++++---- src/data/wild_encounters.json.txt | 14 +++++++++++++- src/wild_encounter.c | 21 +++++++++++---------- 3 files changed, 36 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/data/wild_encounters.json b/src/data/wild_encounters.json index 9adbc28de..37cffbca9 100644 --- a/src/data/wild_encounters.json +++ b/src/data/wild_encounters.json @@ -8,25 +8,33 @@ "type": "land_mons", "encounter_rates": [ 20, 20, 10, 10, 10, 10, 5, 5, 4, 4, 1, 1 - ] + ], + "groups": {} }, { "type": "water_mons", "encounter_rates": [ 60, 30, 5, 4, 1 - ] + ], + "groups": {} }, { "type": "rock_smash_mons", "encounter_rates": [ 60, 30, 5, 4, 1 - ] + ], + "groups": {} }, { "type": "fishing_mons", "encounter_rates": [ 70, 30, 60, 20, 20, 40, 40, 15, 4, 1 - ] + ], + "groups": { + "old_rod": [0, 1], + "good_rod": [2, 3, 4], + "super_rod": [5, 6, 7, 8, 9] + } } ], "encounters": [ diff --git a/src/data/wild_encounters.json.txt b/src/data/wild_encounters.json.txt index de8396dd6..5e0286b61 100644 --- a/src/data/wild_encounters.json.txt +++ b/src/data/wild_encounters.json.txt @@ -3,14 +3,26 @@ ## for wild_encounter_group in wild_encounter_groups {% if wild_encounter_group.for_maps %} ## for wild_encounter_field in wild_encounter_group.fields +{% if isEmpty(wild_encounter_field.groups) %} ## for encounter_rate in wild_encounter_field.encounter_rates -{% if trackVar(encounter_rate, 100) %} +{% if loop.index == 0 %} #define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ loop.index }} {{ encounter_rate }} {% else %}#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ loop.index }} ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ subtract(loop.index, 1) }} + {{ encounter_rate }}{% endif %} {{ setVarInt(wild_encounter_field.type, loop.index) }} ## endfor #define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_TOTAL (ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ getVar(wild_encounter_field.type) }}) +{% else %} +## for field_subgroup_key, field_subgroup_subarray in wild_encounter_field.groups +## for field_subgroup_index in field_subgroup_subarray +{% if loop.index == 0 %} +#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_{{ upper(field_subgroup_key) }}_SLOT_{{ field_subgroup_index }} {{ at(wild_encounter_field.encounter_rates, field_subgroup_index) }} {% else %}#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_{{ upper(field_subgroup_key) }}_SLOT_{{ field_subgroup_index }} ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_{{ upper(field_subgroup_key) }}_SLOT_{{ getVar("previous_slot") }} + {{ at(wild_encounter_field.encounter_rates, field_subgroup_index) }}{% endif %}{{ setVarInt(concat(wild_encounter_field.type, field_subgroup_key), field_subgroup_index) }}{{ setVarInt("previous_slot", field_subgroup_index) }} +## endfor +#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_{{ upper(field_subgroup_key) }}_TOTAL (ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_{{ upper(field_subgroup_key) }}_SLOT_{{ getVar(concat(wild_encounter_field.type, field_subgroup_key)) }}) +## endfor +{% endif %} ## endfor {% endif %} + + ## for encounter in wild_encounter_group.encounters {% if contains(encounter.base_label, "Sapphire") %}#ifdef SAPPHIRE {% else if contains(encounter.base_label, "Ruby") %}#ifdef RUBY{% endif %} diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 0680570fc..47eb81541 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -203,34 +203,35 @@ enum static u8 ChooseWildMonIndex_Fishing(u8 rod) { u8 wildMonIndex = 0; - u8 rand = Random() % 100; + u8 rand = Random() % max(max(ENCOUNTER_CHANCE_FISHING_MONS_OLD_ROD_TOTAL, ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_TOTAL), + ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_TOTAL);; switch (rod) { case OLD_ROD: - if (rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_0) + if (rand < ENCOUNTER_CHANCE_FISHING_MONS_OLD_ROD_SLOT_0) wildMonIndex = 0; else wildMonIndex = 1; break; case GOOD_ROD: - if (rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_2) + if (rand < ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_2) wildMonIndex = 2; - if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_2 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_3) + if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_2 && rand < ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_3) wildMonIndex = 3; - if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_3 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_4) + if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_3 && rand < ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_4) wildMonIndex = 4; break; case SUPER_ROD: - if (rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_5) + if (rand < ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_5) wildMonIndex = 5; - if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_5 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_6) + if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_5 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_6) wildMonIndex = 6; - if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_6 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_7) + if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_6 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_7) wildMonIndex = 7; - if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_7 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_8) + if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_7 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_8) wildMonIndex = 8; - if (rand == ENCOUNTER_CHANCE_FISHING_MONS_SLOT_8) + if (rand == ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_8) wildMonIndex = 9; break; } -- cgit v1.2.3 From 0bc41d1fd304e205e0db23bf502dfcbc7f1142bc Mon Sep 17 00:00:00 2001 From: garak Date: Mon, 14 Oct 2019 13:05:07 -0400 Subject: remove empty groups from wild encounter fields json objects --- src/data/wild_encounters.json | 9 +++------ src/data/wild_encounters.json.txt | 2 +- 2 files changed, 4 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/data/wild_encounters.json b/src/data/wild_encounters.json index 37cffbca9..46d6feea4 100644 --- a/src/data/wild_encounters.json +++ b/src/data/wild_encounters.json @@ -8,22 +8,19 @@ "type": "land_mons", "encounter_rates": [ 20, 20, 10, 10, 10, 10, 5, 5, 4, 4, 1, 1 - ], - "groups": {} + ] }, { "type": "water_mons", "encounter_rates": [ 60, 30, 5, 4, 1 - ], - "groups": {} + ] }, { "type": "rock_smash_mons", "encounter_rates": [ 60, 30, 5, 4, 1 - ], - "groups": {} + ] }, { "type": "fishing_mons", diff --git a/src/data/wild_encounters.json.txt b/src/data/wild_encounters.json.txt index 5e0286b61..c6bbdd34e 100644 --- a/src/data/wild_encounters.json.txt +++ b/src/data/wild_encounters.json.txt @@ -3,7 +3,7 @@ ## for wild_encounter_group in wild_encounter_groups {% if wild_encounter_group.for_maps %} ## for wild_encounter_field in wild_encounter_group.fields -{% if isEmpty(wild_encounter_field.groups) %} +{% if not existsIn(wild_encounter_field, "groups") %} ## for encounter_rate in wild_encounter_field.encounter_rates {% if loop.index == 0 %} #define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ loop.index }} {{ encounter_rate }} {% else %}#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ loop.index }} ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ subtract(loop.index, 1) }} + {{ encounter_rate }}{% endif %} {{ setVarInt(wild_encounter_field.type, loop.index) }} -- cgit v1.2.3 From 11170ce90c0baf77b196e378441d25e7f16e2cf3 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 1 Oct 2019 02:30:10 -0400 Subject: Sync specialvars with pokeemerald --- src/event_data.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/event_data.c b/src/event_data.c index bfa9ff821..7c508f02b 100644 --- a/src/event_data.c +++ b/src/event_data.c @@ -114,9 +114,9 @@ u16 *GetVarPointer(u16 id) { if (id < VARS_START) return NULL; - if (id < 0x8000) + if (id < SPECIAL_VARS_START) return &gSaveBlock1.vars[id - VARS_START]; - return gSpecialVars[id - 0x8000]; + return gSpecialVars[id - SPECIAL_VARS_START]; } u16 VarGet(u16 id) -- cgit v1.2.3 From ded1950d71466f083e4f0075db5736050854e917 Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Sat, 9 Nov 2019 03:23:06 +0000 Subject: Use descriptive constant for ScriptGiveMon call --- src/battle_setup.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/battle_setup.c b/src/battle_setup.c index fb76a2ed2..89064b97b 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -32,6 +32,7 @@ #include "constants/opponents.h" #include "constants/songs.h" #include "constants/species.h" +#include "constants/items.h" extern u16 gSpecialVar_Result; @@ -871,7 +872,7 @@ static void CB2_GiveStarter(void) *GetVarPointer(VAR_STARTER_MON) = gSpecialVar_Result; starterPoke = GetStarterPokemon(gSpecialVar_Result); - ScriptGiveMon(starterPoke, 5, 0, 0, 0, 0); + ScriptGiveMon(starterPoke, 5, ITEM_NONE, 0, 0, 0); ResetTasks(); sub_80408BC(); SetMainCallback2(CB2_StartFirstBattle); -- cgit v1.2.3