Misc. documentation and move some data into .c files

This commit is contained in:
Marcus Huderle
2019-01-19 15:32:25 -06:00
committed by huderlem
parent 5bfd802dbb
commit e81838dba3
120 changed files with 158 additions and 25124 deletions

View File

@@ -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;
}

View File

@@ -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();

View File

@@ -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;
}
}

View File

@@ -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);
}

View File

@@ -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)
{

View File

@@ -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]);

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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))

View File

@@ -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)

View File

@@ -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;
}