summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle_bg.c26
-rw-r--r--src/battle_controller_player.c6
-rw-r--r--src/battle_gfx_sfx_util.c4
-rw-r--r--src/battle_intro.c8
-rw-r--r--src/battle_main.c4
-rw-r--r--src/battle_script_commands.c28
-rw-r--r--src/battle_util.c50
-rw-r--r--src/field_weather.c20
-rw-r--r--src/pokemon.c16
-rw-r--r--src/recorded_battle.c6
-rw-r--r--src/sound.c22
-rw-r--r--src/tv.c16
12 files changed, 117 insertions, 89 deletions
diff --git a/src/battle_bg.c b/src/battle_bg.c
index a072a2cda..61a914fc9 100644
--- a/src/battle_bg.c
+++ b/src/battle_bg.c
@@ -1037,10 +1037,10 @@ void sub_8035D74(u8 taskId)
case 1:
palId = AllocSpritePalette(0x2710);
gPlttBufferUnfaded[palId * 16 + 0x10F] = gPlttBufferFaded[palId * 16 + 0x10F] = 0x7FFF;
- gBattleStruct->field_7D = CreateSprite(&gUnknown_0831A9D0, 111, 80, 0);
- gBattleStruct->field_7E = CreateSprite(&gUnknown_0831A9E8, 129, 80, 0);
- gSprites[gBattleStruct->field_7D].invisible = TRUE;
- gSprites[gBattleStruct->field_7E].invisible = TRUE;
+ gBattleStruct->linkBattleVsSpriteId_V = CreateSprite(&gUnknown_0831A9D0, 111, 80, 0);
+ gBattleStruct->linkBattleVsSpriteId_S = CreateSprite(&gUnknown_0831A9E8, 129, 80, 0);
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].invisible = TRUE;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].invisible = TRUE;
gTasks[taskId].data[0]++;
break;
case 2:
@@ -1071,15 +1071,15 @@ void sub_8035D74(u8 taskId)
PlaySE(SE_W231);
DestroyTask(taskId);
- gSprites[gBattleStruct->field_7D].invisible = FALSE;
- gSprites[gBattleStruct->field_7E].invisible = FALSE;
- gSprites[gBattleStruct->field_7E].oam.tileNum += 0x40;
- gSprites[gBattleStruct->field_7D].data[0] = 0;
- gSprites[gBattleStruct->field_7E].data[0] = 1;
- gSprites[gBattleStruct->field_7D].data[1] = gSprites[gBattleStruct->field_7D].pos1.x;
- gSprites[gBattleStruct->field_7E].data[1] = gSprites[gBattleStruct->field_7E].pos1.x;
- gSprites[gBattleStruct->field_7D].data[2] = 0;
- gSprites[gBattleStruct->field_7E].data[2] = 0;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].invisible = FALSE;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].invisible = FALSE;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].oam.tileNum += 0x40;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].data[0] = 0;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].data[0] = 1;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].data[1] = gSprites[gBattleStruct->linkBattleVsSpriteId_V].pos1.x;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].data[1] = gSprites[gBattleStruct->linkBattleVsSpriteId_S].pos1.x;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].data[2] = 0;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].data[2] = 0;
}
break;
}
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index a6a6ac0f3..70b0a6160 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -696,10 +696,10 @@ static void HandleMoveSwitching(void)
moveInfo->maxPp[gMoveSelectionCursor[gActiveBattler]] = moveInfo->maxPp[gMultiUsePlayerCursor];
moveInfo->maxPp[gMultiUsePlayerCursor] = 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[gMultiUsePlayerCursor];
+ gDisableStructs[gActiveBattler].mimickedMoves &= (~gBitTable[gMoveSelectionCursor[gActiveBattler]]);
+ gDisableStructs[gActiveBattler].mimickedMoves |= gBitTable[gMultiUsePlayerCursor];
}
MoveSelectionDisplayMoveNames();
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index 3ceaef983..089d09558 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -205,13 +205,13 @@ u16 ChooseMoveAndTargetInBattlePalace(void)
if (Random() % 100 > 49)
{
- gProtectStructs[gActiveBattler].flag_x10 = 1;
+ gProtectStructs[gActiveBattler].palaceAbleToUseMove = 1;
return 0;
}
}
else
{
- gProtectStructs[gActiveBattler].flag_x10 = 1;
+ gProtectStructs[gActiveBattler].palaceAbleToUseMove = 1;
return 0;
}
}
diff --git a/src/battle_intro.c b/src/battle_intro.c
index 21e83ed29..043cf855a 100644
--- a/src/battle_intro.c
+++ b/src/battle_intro.c
@@ -463,10 +463,10 @@ static void BattleIntroSlideLink(u8 taskId)
if (--gTasks[taskId].data[2] == 0)
{
gTasks[taskId].data[0]++;
- gSprites[gBattleStruct->field_7D].oam.objMode = ST_OAM_OBJ_WINDOW;
- gSprites[gBattleStruct->field_7D].callback = sub_8038B74;
- gSprites[gBattleStruct->field_7E].oam.objMode = ST_OAM_OBJ_WINDOW;
- gSprites[gBattleStruct->field_7E].callback = sub_8038B74;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].oam.objMode = ST_OAM_OBJ_WINDOW;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].callback = sub_8038B74;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].oam.objMode = ST_OAM_OBJ_WINDOW;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].callback = sub_8038B74;
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2);
}
diff --git a/src/battle_main.c b/src/battle_main.c
index 1aeaa25ca..6d04103e5 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -3196,7 +3196,7 @@ void SwitchInClearSetData(void)
gMoveResultFlags = 0;
gDisableStructs[gActiveBattler].isFirstTurn = 2;
- gDisableStructs[gActiveBattler].truantUnknownBit = disableStructCopy.truantUnknownBit;
+ gDisableStructs[gActiveBattler].truantSwitchInHack = disableStructCopy.truantSwitchInHack;
gLastMoves[gActiveBattler] = 0;
gLastLandedMoves[gActiveBattler] = 0;
gLastHitByType[gActiveBattler] = 0;
@@ -5492,7 +5492,7 @@ static void HandleAction_UseMove(void)
// choose battlescript
if (gBattleTypeFlags & BATTLE_TYPE_PALACE
- && gProtectStructs[gBattlerAttacker].flag_x10)
+ && gProtectStructs[gBattlerAttacker].palaceAbleToUseMove)
{
if (gBattleMons[gBattlerAttacker].hp == 0)
{
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 0995eec45..6bbee842e 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -1243,7 +1243,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]);
@@ -5550,10 +5550,12 @@ static void atk52_switchineffects(void)
}
else
{
- if (gBattleMons[gActiveBattler].ability == ABILITY_TRUANT && !gDisableStructs[gActiveBattler].truantUnknownBit)
+ // There is a hack here to ensure the truant counter will be 0 when the battler's next turn starts.
+ // The truant counter is not updated in the case where a mon switches in after a lost judgement in the battle arena.
+ if (gBattleMons[gActiveBattler].ability == ABILITY_TRUANT && !gDisableStructs[gActiveBattler].truantSwitchInHack)
gDisableStructs[gActiveBattler].truantCounter = 1;
- gDisableStructs[gActiveBattler].truantUnknownBit = 0;
+ gDisableStructs[gActiveBattler].truantSwitchInHack = 0;
if (!AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gActiveBattler, 0, 0, 0)
&& !ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gActiveBattler, FALSE))
@@ -5774,7 +5776,7 @@ static void atk5A_yesnoboxlearnmove(void)
if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId
&& !(gBattleMons[0].status2 & STATUS2_TRANSFORMED)
- && !(gDisableStructs[0].unk18_b & gBitTable[movePosition]))
+ && !(gDisableStructs[0].mimickedMoves & gBitTable[movePosition]))
{
RemoveBattleMonPPBonus(&gBattleMons[0], movePosition);
SetBattleMonMoveSlot(&gBattleMons[0], gMoveToLearn, movePosition);
@@ -5782,7 +5784,7 @@ static void atk5A_yesnoboxlearnmove(void)
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
&& gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId
&& !(gBattleMons[2].status2 & STATUS2_TRANSFORMED)
- && !(gDisableStructs[2].unk18_b & gBitTable[movePosition]))
+ && !(gDisableStructs[2].mimickedMoves & gBitTable[movePosition]))
{
RemoveBattleMonPPBonus(&gBattleMons[2], movePosition);
SetBattleMonMoveSlot(&gBattleMons[2], gMoveToLearn, movePosition);
@@ -6694,14 +6696,14 @@ static void atk76_various(void)
gBattleMons[1].hp = 0;
gHitMarker |= HITMARKER_FAINTED(1);
gBattleStruct->arenaLostOpponentMons |= gBitTable[gBattlerPartyIndexes[1]];
- gDisableStructs[1].truantUnknownBit = 1;
+ gDisableStructs[1].truantSwitchInHack = 1;
break;
case VARIOUS_ARENA_PLAYER_MON_LOST:
gBattleMons[0].hp = 0;
gHitMarker |= HITMARKER_FAINTED(0);
gHitMarker |= HITMARKER_x400000;
gBattleStruct->arenaLostPlayerMons |= gBitTable[gBattlerPartyIndexes[0]];
- gDisableStructs[0].truantUnknownBit = 1;
+ gDisableStructs[0].truantSwitchInHack = 1;
break;
case VARIOUS_ARENA_BOTH_MONS_LOST:
gBattleMons[0].hp = 0;
@@ -6711,8 +6713,8 @@ static void atk76_various(void)
gHitMarker |= HITMARKER_x400000;
gBattleStruct->arenaLostPlayerMons |= gBitTable[gBattlerPartyIndexes[0]];
gBattleStruct->arenaLostOpponentMons |= gBitTable[gBattlerPartyIndexes[1]];
- gDisableStructs[0].truantUnknownBit = 1;
- gDisableStructs[1].truantUnknownBit = 1;
+ gDisableStructs[0].truantSwitchInHack = 1;
+ gDisableStructs[1].truantSwitchInHack = 1;
break;
case VARIOUS_EMIT_YESNOBOX:
BtlController_EmitUnknownYesNoBox(0);
@@ -8021,7 +8023,7 @@ static void atk9B_transformdataexecution(void)
gDisableStructs[gBattlerAttacker].disabledMove = 0;
gDisableStructs[gBattlerAttacker].disableTimer = 0;
gDisableStructs[gBattlerAttacker].transformedMonPersonality = gBattleMons[gBattlerTarget].personality;
- gDisableStructs[gBattlerAttacker].unk18_b = 0;
+ gDisableStructs[gBattlerAttacker].mimickedMoves = 0;
PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[gBattlerTarget].species)
@@ -8095,7 +8097,7 @@ static void atk9D_mimicattackcopy(void)
}
else
{
- s32 i;
+ int i;
for (i = 0; i < MAX_MON_MOVES; i++)
{
@@ -8114,7 +8116,7 @@ static void atk9D_mimicattackcopy(void)
PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastMoves[gBattlerTarget])
- gDisableStructs[gBattlerAttacker].unk18_b |= gBitTable[gCurrMovePos];
+ gDisableStructs[gBattlerAttacker].mimickedMoves |= gBitTable[gCurrMovePos];
gBattlescriptCurrInstr += 5;
}
else
@@ -8571,7 +8573,7 @@ static void atkAD_tryspiteppreduce(void)
gBattleMons[gBattlerTarget].pp[i] -= ppToDeduct;
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]);
diff --git a/src/battle_util.c b/src/battle_util.c
index 5d8e42482..04659571e 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -78,38 +78,38 @@ u8 GetBattlerForBattleScript(u8 caseId)
return ret;
}
-void PressurePPLose(u8 defender, u8 attacker, u16 move)
+void PressurePPLose(u8 target, u8 attacker, u16 move)
{
- s32 i;
+ int moveIndex;
- if (gBattleMons[defender].ability != ABILITY_PRESSURE)
+ if (gBattleMons[target].ability != ABILITY_PRESSURE)
return;
- for (i = 0; i < MAX_MON_MOVES; i++)
+ for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++)
{
- if (gBattleMons[attacker].moves[i] == move)
+ if (gBattleMons[attacker].moves[moveIndex] == move)
break;
}
- if (i == MAX_MON_MOVES) // mons don't share any moves
+ if (moveIndex == MAX_MON_MOVES)
return;
- if (gBattleMons[attacker].pp[i] != 0)
- gBattleMons[attacker].pp[i]--;
+ if (gBattleMons[attacker].pp[moveIndex] != 0)
+ gBattleMons[attacker].pp[moveIndex]--;
if (!(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED)
- && !(gDisableStructs[attacker].unk18_b & gBitTable[i]))
+ && !(gDisableStructs[attacker].mimickedMoves & gBitTable[moveIndex]))
{
gActiveBattler = attacker;
- BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBattler].pp[i]);
+ BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + moveIndex, 0, 1, &gBattleMons[gActiveBattler].pp[moveIndex]);
MarkBattlerForControllerExec(gActiveBattler);
}
}
void PressurePPLoseOnUsingImprision(u8 attacker)
{
- s32 i, j;
- s32 imprisionPos = 4;
+ int i, j;
+ int imprisionPos = 4;
u8 atkSide = GetBattlerSide(attacker);
for (i = 0; i < gBattlersCount; i++)
@@ -132,7 +132,7 @@ void PressurePPLoseOnUsingImprision(u8 attacker)
if (imprisionPos != 4
&& !(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED)
- && !(gDisableStructs[attacker].unk18_b & gBitTable[imprisionPos]))
+ && !(gDisableStructs[attacker].mimickedMoves & gBitTable[imprisionPos]))
{
gActiveBattler = attacker;
BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + imprisionPos, 0, 1, &gBattleMons[gActiveBattler].pp[imprisionPos]);
@@ -142,8 +142,8 @@ void PressurePPLoseOnUsingImprision(u8 attacker)
void PressurePPLoseOnUsingPerishSong(u8 attacker)
{
- s32 i, j;
- s32 perishSongPos = 4;
+ int i, j;
+ int perishSongPos = 4;
for (i = 0; i < gBattlersCount; i++)
{
@@ -165,7 +165,7 @@ void PressurePPLoseOnUsingPerishSong(u8 attacker)
if (perishSongPos != MAX_MON_MOVES
&& !(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED)
- && !(gDisableStructs[attacker].unk18_b & gBitTable[perishSongPos]))
+ && !(gDisableStructs[attacker].mimickedMoves & gBitTable[perishSongPos]))
{
gActiveBattler = attacker;
BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + perishSongPos, 0, 1, &gBattleMons[gActiveBattler].pp[perishSongPos]);
@@ -175,7 +175,7 @@ void PressurePPLoseOnUsingPerishSong(u8 attacker)
void MarkAllBattlersForControllerExec(void) // unused
{
- s32 i;
+ int i;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
@@ -314,14 +314,14 @@ u8 TrySetCantSelectMoveBattleScript(void)
u8 holdEffect;
u16* choicedMove = &gBattleStruct->choicedMove[gActiveBattler];
- if (gDisableStructs[gActiveBattler].disabledMove == move && move != 0)
+ if (gDisableStructs[gActiveBattler].disabledMove == move && move != MOVE_NONE)
{
gBattleScripting.battler = gActiveBattler;
gCurrentMove = move;
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingDisabledMoveInPalace;
- gProtectStructs[gActiveBattler].flag_x10 = 1;
+ gProtectStructs[gActiveBattler].palaceAbleToUseMove = 1;
}
else
{
@@ -336,7 +336,7 @@ u8 TrySetCantSelectMoveBattleScript(void)
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingTormentedMoveInPalace;
- gProtectStructs[gActiveBattler].flag_x10 = 1;
+ gProtectStructs[gActiveBattler].palaceAbleToUseMove = 1;
}
else
{
@@ -351,7 +351,7 @@ u8 TrySetCantSelectMoveBattleScript(void)
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingNotAllowedMoveTauntInPalace;
- gProtectStructs[gActiveBattler].flag_x10 = 1;
+ gProtectStructs[gActiveBattler].palaceAbleToUseMove = 1;
}
else
{
@@ -366,7 +366,7 @@ u8 TrySetCantSelectMoveBattleScript(void)
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingImprisionedMoveInPalace;
- gProtectStructs[gActiveBattler].flag_x10 = 1;
+ gProtectStructs[gActiveBattler].palaceAbleToUseMove = 1;
}
else
{
@@ -388,7 +388,7 @@ u8 TrySetCantSelectMoveBattleScript(void)
gLastUsedItem = gBattleMons[gActiveBattler].item;
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- gProtectStructs[gActiveBattler].flag_x10 = 1;
+ gProtectStructs[gActiveBattler].palaceAbleToUseMove = 1;
}
else
{
@@ -401,7 +401,7 @@ u8 TrySetCantSelectMoveBattleScript(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- gProtectStructs[gActiveBattler].flag_x10 = 1;
+ gProtectStructs[gActiveBattler].palaceAbleToUseMove = 1;
}
else
{
@@ -3035,7 +3035,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
MarkBattlerForControllerExec(gActiveBattler);
break;
case ITEM_PP_CHANGE:
- if (!(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED) && !(gDisableStructs[battlerId].unk18_b & gBitTable[i]))
+ if (!(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED) && !(gDisableStructs[battlerId].mimickedMoves & gBitTable[i]))
gBattleMons[battlerId].pp[i] = changedPP;
break;
}
diff --git a/src/field_weather.c b/src/field_weather.c
index f0615dabf..21168426c 100644
--- a/src/field_weather.c
+++ b/src/field_weather.c
@@ -17,7 +17,7 @@
#include "trig.h"
#include "gpu_regs.h"
-#define MACRO1(color) ((((color) >> 1) & 0xF) | (((color) >> 2) & 0xF0) | (((color) >> 3) & 0xF00))
+#define DROUGHT_COLOR_INDEX(color) ((((color) >> 1) & 0xF) | (((color) >> 2) & 0xF0) | (((color) >> 3) & 0xF00))
enum
{
@@ -65,15 +65,21 @@ static void None_Init(void);
static void None_Main(void);
static u8 None_Finish(void);
-// EWRAM
EWRAM_DATA struct Weather gWeather = {0};
EWRAM_DATA static u8 sFieldEffectPaletteGammaTypes[32] = {0};
-// IWRAM bss
IWRAM_DATA static const u8 *sPaletteGammaTypes;
-// CONST
-extern const u16 gUnknown_0854014C[][4096];
+// The drought weather effect uses a precalculated color lookup table. Presumably this
+// is because the underlying color shift calculation is slow.
+const u16 sDroughtWeatherColors[][0x1000] = {
+ INCBIN_U16("graphics/weather/drought/0.gbapal"),
+ INCBIN_U16("graphics/weather/drought/1.gbapal"),
+ INCBIN_U16("graphics/weather/drought/2.gbapal"),
+ INCBIN_U16("graphics/weather/drought/3.gbapal"),
+ INCBIN_U16("graphics/weather/drought/4.gbapal"),
+ INCBIN_U16("graphics/weather/drought/5.gbapal"),
+};
// This is a pointer to gWeather. All code in this file accesses gWeather directly,
// while code in other field weather files accesses gWeather through this pointer.
@@ -513,7 +519,7 @@ static void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex)
{
for (i = 0; i < 16; i++)
{
- gPlttBufferFaded[palOffset] = gUnknown_0854014C[gammaIndex][MACRO1(gPlttBufferUnfaded[palOffset])];
+ gPlttBufferFaded[palOffset] = sDroughtWeatherColors[gammaIndex][DROUGHT_COLOR_INDEX(gPlttBufferUnfaded[palOffset])];
palOffset++;
}
}
@@ -619,7 +625,7 @@ static void ApplyDroughtGammaShiftWithBlend(s8 gammaIndex, u8 blendCoeff, u16 bl
b1 = color1.b;
offset = ((b1 & 0x1E) << 7) | ((g1 & 0x1E) << 3) | ((r1 & 0x1E) >> 1);
- color2 = *(struct RGBColor *)&gUnknown_0854014C[gammaIndex][offset];
+ color2 = *(struct RGBColor *)&sDroughtWeatherColors[gammaIndex][offset];
r2 = color2.r;
g2 = color2.g;
b2 = color2.b;
diff --git a/src/pokemon.c b/src/pokemon.c
index 174f7ae66..cdb87f464 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -5242,14 +5242,14 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
{
gAbsentBattlerFlags &= ~gBitTable[battlerId];
CopyPlayerPartyMonToBattleData(battlerId, pokemon_order_func(gBattlerPartyIndexes[battlerId]));
- if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER && gBattleResults.unk4 < 255)
- gBattleResults.unk4++;
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER && gBattleResults.numRevivesUsed < 255)
+ gBattleResults.numRevivesUsed++;
}
else
{
gAbsentBattlerFlags &= ~gBitTable[gActiveBattler ^ 2];
- if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER && gBattleResults.unk4 < 255)
- gBattleResults.unk4++;
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER && gBattleResults.numRevivesUsed < 255)
+ gBattleResults.numRevivesUsed++;
}
}
}
@@ -5289,8 +5289,8 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
gBattleMons[battlerId].hp = dataUnsigned;
if (!(r10 & 0x10) && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
- if (gBattleResults.unk3 < 255)
- gBattleResults.unk3++;
+ if (gBattleResults.numHealingItemsUsed < 255)
+ gBattleResults.numHealingItemsUsed++;
// I have to re-use this variable to match.
r5 = gActiveBattler;
gActiveBattler = battlerId;
@@ -5329,7 +5329,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
SetMonData(mon, MON_DATA_PP1 + r5, &dataUnsigned);
if (gMain.inBattle
&& battlerId != 4 && !(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED)
- && !(gDisableStructs[battlerId].unk18_b & gBitTable[r5]))
+ && !(gDisableStructs[battlerId].mimickedMoves & gBitTable[r5]))
gBattleMons[battlerId].pp[r5] = dataUnsigned;
retVal = FALSE;
}
@@ -5354,7 +5354,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
SetMonData(mon, MON_DATA_PP1 + moveIndex, &dataUnsigned);
if (gMain.inBattle
&& battlerId != 4 && !(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED)
- && !(gDisableStructs[battlerId].unk18_b & gBitTable[moveIndex]))
+ && !(gDisableStructs[battlerId].mimickedMoves & gBitTable[moveIndex]))
gBattleMons[battlerId].pp[moveIndex] = dataUnsigned;
retVal = FALSE;
}
diff --git a/src/recorded_battle.c b/src/recorded_battle.c
index 0dae76f02..c11dc55e7 100644
--- a/src/recorded_battle.c
+++ b/src/recorded_battle.c
@@ -782,7 +782,7 @@ void sub_818603C(u8 arg0)
movePp.moves[j] = gBattleMons[battlerId].moves[array1[j]];
movePp.pp[j] = gBattleMons[battlerId].pp[array1[j]];
array3[j] = ppBonuses[array1[j]];
- array2[j] = (gDisableStructs[battlerId].unk18_b & gBitTable[j]) >> j;
+ array2[j] = (gDisableStructs[battlerId].mimickedMoves & gBitTable[j]) >> j;
}
for (j = 0; j < MAX_MON_MOVES; j++)
{
@@ -790,11 +790,11 @@ void sub_818603C(u8 arg0)
gBattleMons[battlerId].pp[j] = movePp.pp[j];
}
gBattleMons[battlerId].ppBonuses = 0;
- gDisableStructs[battlerId].unk18_b = 0;
+ gDisableStructs[battlerId].mimickedMoves = 0;
for (j = 0; j < MAX_MON_MOVES; j++)
{
gBattleMons[battlerId].ppBonuses |= (array3[j]) << (j << 1);
- gDisableStructs[battlerId].unk18_b |= (array2[j]) << (j);
+ gDisableStructs[battlerId].mimickedMoves |= (array2[j]) << (j);
}
if (!(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED))
diff --git a/src/sound.c b/src/sound.c
index c63183bdc..ebb4fad75 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -34,13 +34,33 @@ extern struct MusicPlayerInfo gMPlayInfo_SE2;
extern struct MusicPlayerInfo gMPlayInfo_SE3;
extern struct ToneData gCryTable[];
extern struct ToneData gCryTable2[];
-extern const struct Fanfare sFanfares[];
static void Task_Fanfare(u8 taskId);
static void CreateFanfareTask(void);
static void Task_DuckBGMForPokemonCry(u8 taskId);
static void RestoreBGMVolumeAfterPokemonCry(void);
+static const struct Fanfare sFanfares[] = {
+ { MUS_FANFA1, 80 },
+ { MUS_FANFA4, 160 },
+ { MUS_FANFA5, 220 },
+ { MUS_ME_WAZA, 220 },
+ { MUS_ME_ASA, 160 },
+ { MUS_ME_BACHI, 340 },
+ { MUS_ME_WASURE, 180 },
+ { MUS_ME_KINOMI, 120 },
+ { MUS_ME_TAMA, 710 },
+ { MUS_ME_B_BIG, 250 },
+ { MUS_ME_B_SMALL, 150 },
+ { MUS_ME_ZANNEN, 160 },
+ { MUS_RG_POKEFUE, 450 },
+ { MUS_RG_FAN5, 170 },
+ { MUS_RG_FAN2, 196 },
+ { MUS_ME_POINTGET, 313 },
+ { MUS_ME_SYMBOLGET, 318 },
+ { MUS_ME_TORE_EYE, 135 },
+};
+
#define CRY_VOLUME 120 // was 125 in R/S
void InitMapMusic(void)
diff --git a/src/tv.c b/src/tv.c
index dfb4a3a64..5b640836f 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -913,13 +913,13 @@ void ResetGabbyAndTy(void)
gSaveBlock1Ptr->gabbyAndTyData.quote[0] = -1;
gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn = FALSE;
gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon = FALSE;
- gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem = FALSE;
+ gSaveBlock1Ptr->gabbyAndTyData.playerUsedHealingItem = FALSE;
gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall = FALSE;
gSaveBlock1Ptr->gabbyAndTyData.onAir = FALSE;
gSaveBlock1Ptr->gabbyAndTyData.valA_5 = 0;
gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn2 = FALSE;
gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon2 = FALSE;
- gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem2 = FALSE;
+ gSaveBlock1Ptr->gabbyAndTyData.playerUsedHealingItem2 = FALSE;
gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall2 = FALSE;
gSaveBlock1Ptr->gabbyAndTyData.valB_4 = 0;
gSaveBlock1Ptr->gabbyAndTyData.mapnum = 0;
@@ -946,13 +946,13 @@ void GabbyAndTyBeforeInterview(void)
{
gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon = FALSE;
}
- if (gBattleResults.unk3 != 0)
+ if (gBattleResults.numHealingItemsUsed != 0)
{
- gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem = TRUE;
+ gSaveBlock1Ptr->gabbyAndTyData.playerUsedHealingItem = TRUE;
}
else
{
- gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem = FALSE;
+ gSaveBlock1Ptr->gabbyAndTyData.playerUsedHealingItem = FALSE;
}
if (!gBattleResults.usedMasterBall)
{
@@ -980,7 +980,7 @@ void GabbyAndTyAfterInterview(void)
{
gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn2 = gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn;
gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon2 = gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon;
- gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem2 = gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem;
+ gSaveBlock1Ptr->gabbyAndTyData.playerUsedHealingItem2 = gSaveBlock1Ptr->gabbyAndTyData.playerUsedHealingItem;
gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall2 = gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall;
gSaveBlock1Ptr->gabbyAndTyData.onAir = TRUE;
gSaveBlock1Ptr->gabbyAndTyData.mapnum = gMapHeader.regionMapSectionId;
@@ -1027,7 +1027,7 @@ u8 GabbyAndTyGetLastBattleTrivia(void)
{
return 2;
}
- if (gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem2)
+ if (gSaveBlock1Ptr->gabbyAndTyData.playerUsedHealingItem2)
{
return 3;
}
@@ -6141,7 +6141,7 @@ void DoTVShowInSearchOfTrainers(void)
{
sTVShowState = 5;
}
- else if (gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem)
+ else if (gSaveBlock1Ptr->gabbyAndTyData.playerUsedHealingItem)
{
sTVShowState = 6;
}