Misc. documentation and move some data into .c files
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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]);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
|
||||
22
src/sound.c
22
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)
|
||||
|
||||
16
src/tv.c
16
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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user