Merge branch 'master' into rename-tablecmds

This commit is contained in:
GriffinR
2019-09-26 15:02:38 -04:00
committed by GitHub
370 changed files with 29807 additions and 17924 deletions
+6 -6
View File
@@ -1100,7 +1100,7 @@ void ResetAllApprenticeData(void)
gSaveBlock2Ptr->apprentices[i].lvlMode = 0;
gSaveBlock2Ptr->apprentices[i].number = 0;
gSaveBlock2Ptr->apprentices[i].field_1 = 0;
for (j = 0; j < 4; j++)
for (j = 0; j < TRAINER_ID_LENGTH; j++)
gSaveBlock2Ptr->apprentices[i].playerId[j] = 0;
gSaveBlock2Ptr->apprentices[i].language = gGameLanguage;
gSaveBlock2Ptr->apprentices[i].checksum = 0;
@@ -1410,7 +1410,7 @@ static void GetLatestLearnedMoves(u16 species, u16 *moves)
static u16 sub_81A0284(u8 arg0, u8 speciesTableId, u8 arg2)
{
u16 moves[4];
u16 moves[MAX_MON_MOVES];
u8 i, count;
if (PLAYER_APPRENTICE.field_B1_1 < 3)
@@ -1559,8 +1559,8 @@ static void CreateMenuWithAnswers(u8 arg0)
pixelWidth = width;
}
width = convert_pixel_width_to_tile_width(pixelWidth);
left = sub_80E2D5C(left, width);
width = ConvertPixelWidthToTileWidth(pixelWidth);
left = ScriptMenu_AdjustLeftCoordFromWidth(left, width);
windowId = CreateAndShowWindow(left, top, width, count * 2);
SetStandardWindowBorderStyle(windowId, 0);
@@ -2063,7 +2063,7 @@ static void sub_81A1370(void)
r10 = 0xFFFF;
r9 = -1;
for (i = 1; i < 4; i++)
for (i = 1; i < TRAINER_ID_LENGTH; i++)
{
if (GetTrainerId(gSaveBlock2Ptr->apprentices[i].playerId) == GetTrainerId(gSaveBlock2Ptr->playerTrainerId)
&& gSaveBlock2Ptr->apprentices[i].number < r10)
@@ -2092,7 +2092,7 @@ static void sub_81A1438(void)
gSaveBlock2Ptr->apprentices[0].number++;
sub_81A0390(gSaveBlock2Ptr->apprentices[0].field_1);
for (i = 0; i < 4; i++)
for (i = 0; i < TRAINER_ID_LENGTH; i++)
gSaveBlock2Ptr->apprentices[0].playerId[i] = gSaveBlock2Ptr->playerTrainerId[i];
StringCopy(gSaveBlock2Ptr->apprentices[0].playerName, gSaveBlock2Ptr->playerName);
+10 -10
View File
@@ -298,7 +298,7 @@ void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves)
)
)
{
for (i = 0; i < 4; i++)
for (i = 0; i < MAX_TRAINER_ITEMS; i++)
{
if (gTrainers[gTrainerBattleOpponent_A].items[i] != 0)
{
@@ -397,8 +397,8 @@ u8 BattleAI_ChooseMoveOrAction(void)
static u8 ChooseMoveOrAction_Singles(void)
{
u8 currentMoveArray[4];
u8 consideredMoveArray[4];
u8 currentMoveArray[MAX_MON_MOVES];
u8 consideredMoveArray[MAX_MON_MOVES];
u8 numOfBestMoves;
s32 i;
@@ -452,11 +452,11 @@ static u8 ChooseMoveOrAction_Doubles(void)
s32 i;
s32 j;
s32 scriptsToRun;
s16 bestMovePointsForTarget[4];
s8 mostViableTargetsArray[4];
u8 actionOrMoveIndex[4];
u8 mostViableMovesScores[4];
u8 mostViableMovesIndices[4];
s16 bestMovePointsForTarget[MAX_BATTLERS_COUNT];
s8 mostViableTargetsArray[MAX_BATTLERS_COUNT];
u8 actionOrMoveIndex[MAX_BATTLERS_COUNT];
u8 mostViableMovesScores[MAX_MON_MOVES];
u8 mostViableMovesIndices[MAX_MON_MOVES];
s32 mostViableTargetsNo;
s32 mostViableMovesNo;
s16 mostMovePoints;
@@ -543,7 +543,7 @@ static u8 ChooseMoveOrAction_Doubles(void)
mostViableTargetsArray[0] = 0;
mostViableTargetsNo = 1;
for (i = 1; i < MAX_MON_MOVES; i++)
for (i = 1; i < MAX_BATTLERS_COUNT; i++)
{
if (mostMovePoints == bestMovePointsForTarget[i])
{
@@ -1167,7 +1167,7 @@ static void Cmd_get_considered_move_power(void)
static void Cmd_get_how_powerful_move_is(void)
{
s32 i, checkedMove;
s32 moveDmgs[4];
s32 moveDmgs[MAX_MON_MOVES];
for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
{
+1 -1
View File
@@ -820,7 +820,7 @@ static bool8 ShouldUseItem(void)
}
}
for (i = 0; i < 4; i++)
for (i = 0; i < MAX_TRAINER_ITEMS; i++)
{
u16 item;
const u8 *itemEffects;
+1 -1
View File
@@ -1841,7 +1841,7 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo
UpdateOamPriorityInAllHealthboxes(0);
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
if (GetBattlerSide(i) != 0)
if (GetBattlerSide(i) != B_SIDE_PLAYER)
gAnimBattlerSpecies[i] = GetMonData(&gEnemyParty[gBattlerPartyIndexes[i]], MON_DATA_SPECIES);
else
gAnimBattlerSpecies[i] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_SPECIES);
+10 -10
View File
@@ -2547,7 +2547,7 @@ static void AnimPetalDanceSmallFlowerStep(struct Sprite* sprite)
{
sprite->pos2.x += Sin(sprite->data[5], 8);
if ((u16)(sprite->data[5] - 59) < 5 || (u16)(sprite->data[5] - 187) < 5)
sprite->oam.matrixNum ^= 0x8; // horizontal flip
sprite->oam.matrixNum ^= ST_OAM_HFLIP;
sprite->data[5] += 5;
sprite->data[5] &= 0xFF;
@@ -3560,7 +3560,7 @@ void sub_8100640(struct Sprite* sprite)
else
battler = gBattleAnimTarget;
if (GetBattlerSide(battler) != 0)
if (GetBattlerSide(battler) != B_SIDE_PLAYER)
{
sprite->data[4] = 0;
sprite->data[2] = gBattleAnimArgs[3];
@@ -3731,7 +3731,7 @@ static void sub_81009DC(struct Sprite* sprite)
void sub_81009F8(struct Sprite* sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) != 0)
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
sprite->pos1.x -= gBattleAnimArgs[0];
sprite->pos1.y += gBattleAnimArgs[1];
@@ -3828,7 +3828,7 @@ void sub_8100B88(struct Sprite* sprite)
sprite->pos1.x = a;
sprite->pos1.y = b;
if (GetBattlerSide(gBattleAnimTarget) == 0)
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
sprite->pos1.y += 8;
sprite->callback = AnimSliceStep;
@@ -4380,19 +4380,19 @@ void sub_8101898(struct Sprite* sprite)
{
sprite->pos1.x -= 0x18;
sprite->pos1.y += 0x18;
sprite->oam.matrixNum = 16;
sprite->oam.matrixNum = ST_OAM_VFLIP;
}
else if ((s16)sprite->oam.affineParam == 3)
{
sprite->pos1.x += 0x18;
sprite->pos1.y -= 0x18;
sprite->oam.matrixNum = 8;
sprite->oam.matrixNum = ST_OAM_HFLIP;
}
else
{
sprite->pos1.x += 0x18;
sprite->pos1.y += 0x18;
sprite->oam.matrixNum = 24;
sprite->oam.matrixNum = ST_OAM_HFLIP | ST_OAM_VFLIP;
}
sprite->oam.tileNum = (sprite->oam.tileNum + 16);
@@ -5105,7 +5105,7 @@ void sub_8102844(struct Sprite* sprite)
sprite->data[7] = sprite->pos1.y;
if (IsContest())
{
sprite->oam.matrixNum = 8;
sprite->oam.matrixNum = ST_OAM_HFLIP;
sprite->pos1.x += 40;
sprite->pos1.y += 20;
sprite->data[2] = sprite->pos1.x << 7;
@@ -5130,7 +5130,7 @@ void sub_8102844(struct Sprite* sprite)
sprite->data[3] = -0x1400 / sprite->data[1];
sprite->data[4] = sprite->pos1.y << 7;
sprite->data[5] = 0xA00 / sprite->data[1];
sprite->oam.matrixNum = 24;
sprite->oam.matrixNum = (ST_OAM_HFLIP | ST_OAM_VFLIP);
}
sprite->callback = sub_810296C;
@@ -5387,7 +5387,7 @@ void sub_8102FB8(struct Sprite* sprite)
s16 a;
if (gBattleAnimArgs[0] == 1)
{
sprite->oam.matrixNum = 8;
sprite->oam.matrixNum = ST_OAM_HFLIP;
a = 16;
}
else
+4 -4
View File
@@ -1479,7 +1479,7 @@ void AnimSonicBoomProjectile(struct Sprite *sprite)
{
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
}
else if (GetBattlerSide(gBattleAnimAttacker) != 0)
else if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
@@ -1609,10 +1609,10 @@ static void sub_8103C0C(u8 taskId)
switch (gTasks[taskId].data[4])
{
case 1:
sprite->oam.matrixNum |= 24;
sprite->oam.matrixNum |= (ST_OAM_HFLIP | ST_OAM_VFLIP);
break;
case 2:
sprite->oam.matrixNum = 8;
sprite->oam.matrixNum = ST_OAM_HFLIP;
break;
}
@@ -1646,7 +1646,7 @@ void sub_8103CF0(u8 taskId)
}
else
{
if ((gBattlerPositions[gBattleAnimTarget] & 1) == 0)
if ((gBattlerPositions[gBattleAnimTarget] & BIT_SIDE) == B_SIDE_PLAYER)
{
gTasks[taskId].data[4] = 1;
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+4 -4
View File
@@ -1618,7 +1618,7 @@ void sub_815AAA4(struct Sprite *sprite)
if (gBattleAnimArgs[2] == 0)
{
sprite->oam.matrixNum = 8;
sprite->oam.matrixNum = ST_OAM_HFLIP;
sprite->pos2.x = -12;
sprite->data[1] = 2;
}
@@ -4167,7 +4167,7 @@ void AnimSmellingSaltsHand(struct Sprite *sprite)
sprite->pos1.y = GetBattlerSpriteCoord(battler, 3);
if (gBattleAnimArgs[1] == 0)
{
sprite->oam.matrixNum |= 0x8;
sprite->oam.matrixNum |= ST_OAM_HFLIP;
sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) - 8;
}
else
@@ -4317,7 +4317,7 @@ void AnimHelpingHandClap(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
sprite->oam.matrixNum |= 0x8; // horizontal flip
sprite->oam.matrixNum |= ST_OAM_HFLIP;
sprite->pos1.x = 100;
sprite->data[7] = 1;
}
@@ -4545,7 +4545,7 @@ void AnimForesightMagnifyingGlass(struct Sprite *sprite)
}
if (GetBattlerSide(sprite->data[7]) == B_SIDE_OPPONENT)
sprite->oam.matrixNum = 8; // horizontal flip
sprite->oam.matrixNum = ST_OAM_HFLIP;
sprite->oam.priority = GetBattlerSpriteBGPriority(sprite->data[7]);
sprite->oam.objMode = ST_OAM_OBJ_BLEND;
+1 -1
View File
@@ -664,7 +664,7 @@ u32 sub_8057FBC(void) // unused
static void HandleMoveSwitching(void)
{
u8 perMovePPBonuses[4];
u8 perMovePPBonuses[MAX_MON_MOVES];
struct ChooseMoveStruct moveStruct;
u8 totalPPBonuses;
+11 -11
View File
@@ -64,7 +64,7 @@ void SetUpBattleVarsAndBirchZigzagoon(void)
if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
{
ZeroEnemyPartyMons();
CreateMon(&gEnemyParty[0], SPECIES_ZIGZAGOON, 2, 32, 0, 0, 0, 0);
CreateMon(&gEnemyParty[0], SPECIES_ZIGZAGOON, 2, 32, 0, 0, OT_ID_PLAYER_ID, 0);
i = 0;
SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &i);
}
@@ -234,16 +234,16 @@ static void InitSinglePlayerBtlControllers(void)
gBattleMainFunc = BeginBattleIntro;
gBattlerControllerFuncs[0] = SetControllerToRecordedPlayer;
gBattlerPositions[0] = 0;
gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
gBattlerControllerFuncs[1] = SetControllerToOpponent;
gBattlerPositions[1] = 1;
gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
gBattlerControllerFuncs[2] = SetControllerToRecordedPlayer;
gBattlerPositions[2] = 2;
gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
gBattlerControllerFuncs[3] = SetControllerToOpponent;
gBattlerPositions[3] = 3;
gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
gBattlersCount = MAX_BATTLERS_COUNT;
@@ -524,12 +524,12 @@ static void InitLinkBtlControllers(void)
{
case 0:
case 3:
gBattlerPositions[gLinkPlayers[i].id] = 0;
gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_PLAYER_LEFT;
gBattlerPartyIndexes[gLinkPlayers[i].id] = 0;
break;
case 1:
case 2:
gBattlerPositions[gLinkPlayers[i].id] = 2;
gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_PLAYER_RIGHT;
gBattlerPartyIndexes[gLinkPlayers[i].id] = 3;
break;
}
@@ -544,12 +544,12 @@ static void InitLinkBtlControllers(void)
{
case 0:
case 3:
gBattlerPositions[gLinkPlayers[i].id] = 0;
gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_PLAYER_LEFT;
gBattlerPartyIndexes[gLinkPlayers[i].id] = 0;
break;
case 1:
case 2:
gBattlerPositions[gLinkPlayers[i].id] = 2;
gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_PLAYER_RIGHT;
gBattlerPartyIndexes[gLinkPlayers[i].id] = 3;
break;
}
@@ -561,12 +561,12 @@ static void InitLinkBtlControllers(void)
{
case 0:
case 3:
gBattlerPositions[gLinkPlayers[i].id] = 1;
gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_OPPONENT_LEFT;
gBattlerPartyIndexes[gLinkPlayers[i].id] = 0;
break;
case 1:
case 2:
gBattlerPositions[gLinkPlayers[i].id] = 3;
gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_OPPONENT_RIGHT;
gBattlerPartyIndexes[gLinkPlayers[i].id] = 3;
break;
}
+2 -2
View File
@@ -415,7 +415,7 @@ static void SetPlayerAndOpponentParties(void)
monLevel,
ivs,
TRUE, gSaveBlock2Ptr->frontier.rentalMons[i].personality,
0, 0);
OT_ID_PLAYER_ID, 0);
count = 0;
bits = gFacilityTrainerMons[monSetId].evSpread;
@@ -456,7 +456,7 @@ static void SetPlayerAndOpponentParties(void)
monLevel,
ivs,
TRUE, gSaveBlock2Ptr->frontier.rentalMons[i + 3].personality,
0, 0);
OT_ID_PLAYER_ID, 0);
count = 0;
bits = gFacilityTrainerMons[monSetId].evSpread;
+1 -1
View File
@@ -779,7 +779,7 @@ bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId)
break;
case 4:
InitBattlerHealthboxCoords(*battlerId);
if (gBattlerPositions[*battlerId] <= 1)
if (gBattlerPositions[*battlerId] <= B_POSITION_OPPONENT_LEFT)
DummyBattleInterfaceFunc(gHealthboxSpriteIds[*battlerId], FALSE);
else
DummyBattleInterfaceFunc(gHealthboxSpriteIds[*battlerId], TRUE);
+1 -1
View File
@@ -1536,7 +1536,7 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
if (isOpponent)
{
gSprites[summaryBarSpriteId].pos1.x -= 96;
gSprites[summaryBarSpriteId].oam.matrixNum = 8;
gSprites[summaryBarSpriteId].oam.matrixNum = ST_OAM_HFLIP;
}
else
{
+11 -11
View File
@@ -1790,9 +1790,9 @@ static void CB2_HandleStartMultiBattle(void)
gBattleCommunication[SPRITES_INIT_STATE2] = 0;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
for (id = 0; id < 4 && (gLinkPlayers[id].version & 0xFF) == 3; id++);
for (id = 0; id < MAX_LINK_PLAYERS && (gLinkPlayers[id].version & 0xFF) == VERSION_EMERALD; id++);
if (id == 4)
if (id == MAX_LINK_PLAYERS)
gBattleCommunication[MULTIUSE_STATE] = 8;
else
gBattleCommunication[MULTIUSE_STATE] = 10;
@@ -2004,7 +2004,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
personalityValue += nameHash << 8;
fixedIV = partyData[i].iv * 31 / 255;
CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, 2, 0);
CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0);
for (j = 0; j < MAX_MON_MOVES; j++)
{
@@ -2022,7 +2022,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
personalityValue += nameHash << 8;
fixedIV = partyData[i].iv * 31 / 255;
CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, 2, 0);
CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0);
SetMonData(&party[i], MON_DATA_HELD_ITEM, &partyData[i].heldItem);
break;
@@ -2036,7 +2036,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
personalityValue += nameHash << 8;
fixedIV = partyData[i].iv * 31 / 255;
CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, 2, 0);
CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0);
SetMonData(&party[i], MON_DATA_HELD_ITEM, &partyData[i].heldItem);
@@ -4025,7 +4025,7 @@ void BattleTurnPassed(void)
if (gBattleOutcome != 0)
{
gCurrentActionFuncId = 12;
gCurrentActionFuncId = B_ACTION_FINISHED;
gBattleMainFunc = RunTurnActionsFunctions;
return;
}
@@ -4244,7 +4244,7 @@ static void HandleTurnActionSelectionState(void)
moveInfo.monType1 = gBattleMons[gActiveBattler].type1;
moveInfo.monType2 = gBattleMons[gActiveBattler].type2;
for (i = 0; i < 4; i++)
for (i = 0; i < MAX_MON_MOVES; i++)
{
moveInfo.moves[i] = gBattleMons[gActiveBattler].moves[i];
moveInfo.currentPp[i] = gBattleMons[gActiveBattler].pp[i];
@@ -4979,7 +4979,7 @@ static void CheckFocusPunch_ClearVarsBeforeTurnStarts(void)
static void RunTurnActionsFunctions(void)
{
if (gBattleOutcome != 0)
gCurrentActionFuncId = 12;
gCurrentActionFuncId = B_ACTION_FINISHED;
*(&gBattleStruct->savedTurnActionNumber) = gCurrentTurnActionNumber;
sTurnActionsFuncsTable[gCurrentActionFuncId]();
@@ -5139,7 +5139,7 @@ static void HandleEndTurn_MonFled(void)
static void HandleEndTurn_FinishBattle(void)
{
if (gCurrentActionFuncId == 0xB || gCurrentActionFuncId == 0xC)
if (gCurrentActionFuncId == B_ACTION_TRY_FINISH || gCurrentActionFuncId == B_ACTION_FINISHED)
{
if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK
| BATTLE_TYPE_x2000000
@@ -5284,7 +5284,7 @@ static void ReturnFromBattleToOverworld(void)
void RunBattleScriptCommands_PopCallbacksStack(void)
{
if (gCurrentActionFuncId == 0xB || gCurrentActionFuncId == 0xC)
if (gCurrentActionFuncId == B_ACTION_TRY_FINISH || gCurrentActionFuncId == B_ACTION_FINISHED)
{
if (gBattleResources->battleCallbackStack->size != 0)
gBattleResources->battleCallbackStack->size--;
@@ -5592,7 +5592,7 @@ static void HandleAction_UseItem(void)
else
{
PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK)
PREPARE_STRING_BUFFER(gBattleTextBuff2, 0xD2)
PREPARE_STRING_BUFFER(gBattleTextBuff2, CHAR_X)
while (!((*(gBattleStruct->AI_itemFlags + (gBattlerAttacker >> 1))) & 1))
{
+1 -1
View File
@@ -49,7 +49,7 @@ struct PikeWildMon
{
u16 species;
u8 levelDelta;
u16 moves[4];
u16 moves[MAX_MON_MOVES];
};
// IWRAM bss
+1 -1
View File
@@ -77,7 +77,7 @@ struct PyramidWildMon
u16 species;
u8 lvl;
u8 abilityNum;
u16 moves[4];
u16 moves[MAX_MON_MOVES];
};
struct PyramidFloorTemplate
+65 -85
View File
@@ -1681,29 +1681,22 @@ static void Cmd_adjustnormaldamage(void)
RecordItemEffectBattle(gBattlerTarget, holdEffect);
gSpecialStatuses[gBattlerTarget].focusBanded = 1;
}
if (gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE)
goto END;
if (gBattleMoves[gCurrentMove].effect != EFFECT_FALSE_SWIPE && !gProtectStructs[gBattlerTarget].endured
&& !gSpecialStatuses[gBattlerTarget].focusBanded)
goto END;
if (gBattleMons[gBattlerTarget].hp > gBattleMoveDamage)
goto END;
gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1;
if (gProtectStructs[gBattlerTarget].endured)
if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE)
&& (gBattleMoves[gCurrentMove].effect == EFFECT_FALSE_SWIPE || gProtectStructs[gBattlerTarget].endured || gSpecialStatuses[gBattlerTarget].focusBanded)
&& gBattleMons[gBattlerTarget].hp <= gBattleMoveDamage)
{
gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED;
gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1;
if (gProtectStructs[gBattlerTarget].endured)
{
gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED;
}
else if (gSpecialStatuses[gBattlerTarget].focusBanded)
{
gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON;
gLastUsedItem = gBattleMons[gBattlerTarget].item;
}
}
else if (gSpecialStatuses[gBattlerTarget].focusBanded)
{
gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON;
gLastUsedItem = gBattleMons[gBattlerTarget].item;
}
END:
gBattlescriptCurrInstr++;
gBattlescriptCurrInstr++;
}
static void Cmd_adjustnormaldamage2(void) // The same as adjustnormaldamage except it doesn't check for false swipe move effect.
@@ -1730,27 +1723,22 @@ static void Cmd_adjustnormaldamage2(void) // The same as adjustnormaldamage exce
RecordItemEffectBattle(gBattlerTarget, holdEffect);
gSpecialStatuses[gBattlerTarget].focusBanded = 1;
}
if (gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE)
goto END;
if (!gProtectStructs[gBattlerTarget].endured && !gSpecialStatuses[gBattlerTarget].focusBanded)
goto END;
if (gBattleMons[gBattlerTarget].hp > gBattleMoveDamage)
goto END;
gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1;
if (gProtectStructs[gBattlerTarget].endured)
if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE)
&& (gProtectStructs[gBattlerTarget].endured || gSpecialStatuses[gBattlerTarget].focusBanded)
&& gBattleMons[gBattlerTarget].hp <= gBattleMoveDamage)
{
gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED;
gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1;
if (gProtectStructs[gBattlerTarget].endured)
{
gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED;
}
else if (gSpecialStatuses[gBattlerTarget].focusBanded)
{
gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON;
gLastUsedItem = gBattleMons[gBattlerTarget].item;
}
}
else if (gSpecialStatuses[gBattlerTarget].focusBanded)
{
gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON;
gLastUsedItem = gBattleMons[gBattlerTarget].item;
}
END:
gBattlescriptCurrInstr++;
gBattlescriptCurrInstr++;
}
static void Cmd_attackanimation(void)
@@ -4564,27 +4552,26 @@ static void Cmd_moveend(void)
gBattleScripting.moveendState++;
break;
case MOVEEND_CHOICE_MOVE: // update choice band move
if (!(gHitMarker & HITMARKER_OBEYS) || holdEffectAtk != HOLD_EFFECT_CHOICE_BAND
|| gChosenMove == MOVE_STRUGGLE || (*choicedMoveAtk != 0 && *choicedMoveAtk != 0xFFFF))
goto LOOP;
if (gChosenMove == MOVE_BATON_PASS && !(gMoveResultFlags & MOVE_RESULT_FAILED))
if (gHitMarker & HITMARKER_OBEYS
&& holdEffectAtk == HOLD_EFFECT_CHOICE_BAND
&& gChosenMove != MOVE_STRUGGLE
&& (*choicedMoveAtk == 0 || *choicedMoveAtk == 0xFFFF))
{
gBattleScripting.moveendState++;
break;
}
*choicedMoveAtk = gChosenMove;
LOOP:
{
for (i = 0; i < MAX_MON_MOVES; i++)
if (gChosenMove == MOVE_BATON_PASS && !(gMoveResultFlags & MOVE_RESULT_FAILED))
{
if (gBattleMons[gBattlerAttacker].moves[i] == *choicedMoveAtk)
break;
++gBattleScripting.moveendState;
break;
}
if (i == MAX_MON_MOVES)
*choicedMoveAtk = 0;
gBattleScripting.moveendState++;
*choicedMoveAtk = gChosenMove;
}
for (i = 0; i < MAX_MON_MOVES; ++i)
{
if (gBattleMons[gBattlerAttacker].moves[i] == *choicedMoveAtk)
break;
}
if (i == MAX_MON_MOVES)
*choicedMoveAtk = 0;
++gBattleScripting.moveendState;
break;
case MOVEEND_CHANGED_ITEMS: // changed held items
for (i = 0; i < gBattlersCount; i++)
@@ -6152,29 +6139,22 @@ static void Cmd_adjustsetdamage(void) // The same as adjustnormaldamage, except
RecordItemEffectBattle(gBattlerTarget, holdEffect);
gSpecialStatuses[gBattlerTarget].focusBanded = 1;
}
if (gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE)
goto END;
if (gBattleMoves[gCurrentMove].effect != EFFECT_FALSE_SWIPE && !gProtectStructs[gBattlerTarget].endured
&& !gSpecialStatuses[gBattlerTarget].focusBanded)
goto END;
if (gBattleMons[gBattlerTarget].hp > gBattleMoveDamage)
goto END;
gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1;
if (gProtectStructs[gBattlerTarget].endured)
if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE)
&& (gBattleMoves[gCurrentMove].effect == EFFECT_FALSE_SWIPE || gProtectStructs[gBattlerTarget].endured || gSpecialStatuses[gBattlerTarget].focusBanded)
&& gBattleMons[gBattlerTarget].hp <= gBattleMoveDamage)
{
gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED;
gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1;
if (gProtectStructs[gBattlerTarget].endured)
{
gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED;
}
else if (gSpecialStatuses[gBattlerTarget].focusBanded)
{
gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON;
gLastUsedItem = gBattleMons[gBattlerTarget].item;
}
}
else if (gSpecialStatuses[gBattlerTarget].focusBanded)
{
gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON;
gLastUsedItem = gBattleMons[gBattlerTarget].item;
}
END:
gBattlescriptCurrInstr++;
gBattlescriptCurrInstr++;
}
static void Cmd_removeitem(void)
@@ -10184,7 +10164,7 @@ static void Cmd_handleballthrow(void)
gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_POKEBALL, &gLastUsedItem);
if (CalculatePlayerPartyCount() == 6)
if (CalculatePlayerPartyCount() == PARTY_SIZE)
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
else
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
@@ -10196,7 +10176,7 @@ static void Cmd_handleballthrow(void)
odds = Sqrt(Sqrt(16711680 / odds));
odds = 1048560 / odds;
for (shakes = 0; shakes < 4 && Random() < odds; shakes++);
for (shakes = 0; shakes < BALL_3_SHAKES_SUCCESS && Random() < odds; shakes++);
if (gLastUsedItem == ITEM_MASTER_BALL)
shakes = BALL_3_SHAKES_SUCCESS; // why calculate the shakes before that check?
@@ -10209,7 +10189,7 @@ static void Cmd_handleballthrow(void)
gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_POKEBALL, &gLastUsedItem);
if (CalculatePlayerPartyCount() == 6)
if (CalculatePlayerPartyCount() == PARTY_SIZE)
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
else
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
@@ -10227,17 +10207,17 @@ static void Cmd_givecaughtmon(void)
{
if (GiveMonToPlayer(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]]) != MON_GIVEN_TO_PARTY)
{
if (!sub_813B21C())
if (!ShouldShowBoxWasFullMessage())
{
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_STORAGE_UNKNOWN)));
StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON)));
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gStringVar2);
}
else
{
StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_STORAGE_UNKNOWN)));
StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON))); // box the mon was sent to
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gStringVar2);
StringCopy(gStringVar3, GetBoxNamePtr(get_unknown_box_id()));
StringCopy(gStringVar3, GetBoxNamePtr(GetPCBoxToSendMon())); //box the mon was going to be sent to
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
}
+85 -78
View File
@@ -231,86 +231,93 @@ static const struct TrainerBattleParameter sTrainerBContinueScriptBattleParams[]
{&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
};
#define REMATCH(trainer1, trainer2, trainer3, trainer4, trainer5, map) \
{ \
.trainerIds = {trainer1, trainer2, trainer3, trainer4, trainer5}, \
.mapGroup = MAP_GROUP(map), \
.mapNum = MAP_NUM(map), \
}
const struct RematchTrainer gRematchTable[REMATCH_TABLE_ENTRIES] =
{
[REMATCH_ROSE] = {{TRAINER_ROSE_1, TRAINER_ROSE_2, TRAINER_ROSE_3, TRAINER_ROSE_4, TRAINER_ROSE_5}, 0x0, 0x21},
[REMATCH_ANDRES] = {{TRAINER_ANDRES_1, TRAINER_ANDRES_2, TRAINER_ANDRES_3, TRAINER_ANDRES_4, TRAINER_ANDRES_5}, 0x0, 0x14},
[REMATCH_DUSTY] = {{TRAINER_DUSTY_1, TRAINER_DUSTY_2, TRAINER_DUSTY_3, TRAINER_DUSTY_4, TRAINER_DUSTY_5}, 0x0, 0x1a},
[REMATCH_LOLA] = {{TRAINER_LOLA_1, TRAINER_LOLA_2, TRAINER_LOLA_3, TRAINER_LOLA_4, TRAINER_LOLA_5}, 0x0, 0x18},
[REMATCH_RICKY] = {{TRAINER_RICKY_1, TRAINER_RICKY_2, TRAINER_RICKY_3, TRAINER_RICKY_4, TRAINER_RICKY_5}, 0x0, 0x18},
[REMATCH_LILA_AND_ROY] = {{TRAINER_LILA_AND_ROY_1, TRAINER_LILA_AND_ROY_2, TRAINER_LILA_AND_ROY_3, TRAINER_LILA_AND_ROY_4, TRAINER_LILA_AND_ROY_5}, 0x0, 0x27},
[REMATCH_CRISTIN] = {{TRAINER_CRISTIN_1, TRAINER_CRISTIN_2, TRAINER_CRISTIN_3, TRAINER_CRISTIN_4, TRAINER_CRISTIN_5}, 0x0, 0x24},
[REMATCH_BROOKE] = {{TRAINER_BROOKE_1, TRAINER_BROOKE_2, TRAINER_BROOKE_3, TRAINER_BROOKE_4, TRAINER_BROOKE_5}, 0x0, 0x1a},
[REMATCH_WILTON] = {{TRAINER_WILTON_1, TRAINER_WILTON_2, TRAINER_WILTON_3, TRAINER_WILTON_4, TRAINER_WILTON_5}, 0x0, 0x1a},
[REMATCH_VALERIE] = {{TRAINER_VALERIE_1, TRAINER_VALERIE_2, TRAINER_VALERIE_3, TRAINER_VALERIE_4, TRAINER_VALERIE_5}, 0x18, 0x14},
[REMATCH_CINDY] = {{TRAINER_CINDY_1, TRAINER_CINDY_3, TRAINER_CINDY_4, TRAINER_CINDY_5, TRAINER_CINDY_6}, 0x0, 0x13},
[REMATCH_THALIA] = {{TRAINER_THALIA_1, TRAINER_THALIA_2, TRAINER_THALIA_3, TRAINER_THALIA_4, TRAINER_THALIA_5}, 0x18, 0x38},
[REMATCH_JESSICA] = {{TRAINER_JESSICA_1, TRAINER_JESSICA_2, TRAINER_JESSICA_3, TRAINER_JESSICA_4, TRAINER_JESSICA_5}, 0x0, 0x24},
[REMATCH_WINSTON] = {{TRAINER_WINSTON_1, TRAINER_WINSTON_2, TRAINER_WINSTON_3, TRAINER_WINSTON_4, TRAINER_WINSTON_5}, 0x0, 0x13},
[REMATCH_STEVE] = {{TRAINER_STEVE_1, TRAINER_STEVE_2, TRAINER_STEVE_3, TRAINER_STEVE_4, TRAINER_STEVE_5}, 0x0, 0x1d},
[REMATCH_TONY] = {{TRAINER_TONY_1, TRAINER_TONY_2, TRAINER_TONY_3, TRAINER_TONY_4, TRAINER_TONY_5}, 0x0, 0x16},
[REMATCH_NOB] = {{TRAINER_NOB_1, TRAINER_NOB_2, TRAINER_NOB_3, TRAINER_NOB_4, TRAINER_NOB_5}, 0x0, 0x1e},
[REMATCH_KOJI] = {{TRAINER_KOJI_1, TRAINER_KOJI_2, TRAINER_KOJI_3, TRAINER_KOJI_4, TRAINER_KOJI_5}, 0x0, 0x2a},
[REMATCH_FERNANDO] = {{TRAINER_FERNANDO_1, TRAINER_FERNANDO_2, TRAINER_FERNANDO_3, TRAINER_FERNANDO_4, TRAINER_FERNANDO_5}, 0x0, 0x26},
[REMATCH_DALTON] = {{TRAINER_DALTON_1, TRAINER_DALTON_2, TRAINER_DALTON_3, TRAINER_DALTON_4, TRAINER_DALTON_5}, 0x0, 0x21},
[REMATCH_BERNIE] = {{TRAINER_BERNIE_1, TRAINER_BERNIE_2, TRAINER_BERNIE_3, TRAINER_BERNIE_4, TRAINER_BERNIE_5}, 0x0, 0x1d},
[REMATCH_ETHAN] = {{TRAINER_ETHAN_1, TRAINER_ETHAN_2, TRAINER_ETHAN_3, TRAINER_ETHAN_4, TRAINER_ETHAN_5}, 0x18, 0xd},
[REMATCH_JOHN_AND_JAY] = {{TRAINER_JOHN_AND_JAY_1, TRAINER_JOHN_AND_JAY_2, TRAINER_JOHN_AND_JAY_3, TRAINER_JOHN_AND_JAY_4, TRAINER_JOHN_AND_JAY_5}, 0x18, 0x1},
[REMATCH_JEFFREY] = {{TRAINER_JEFFREY_1, TRAINER_JEFFREY_2, TRAINER_JEFFREY_3, TRAINER_JEFFREY_4, TRAINER_JEFFREY_5}, 0x0, 0x23},
[REMATCH_CAMERON] = {{TRAINER_CAMERON_1, TRAINER_CAMERON_2, TRAINER_CAMERON_3, TRAINER_CAMERON_4, TRAINER_CAMERON_5}, 0x0, 0x26},
[REMATCH_JACKI] = {{TRAINER_JACKI_1, TRAINER_JACKI_2, TRAINER_JACKI_3, TRAINER_JACKI_4, TRAINER_JACKI_5}, 0x0, 0x26},
[REMATCH_WALTER] = {{TRAINER_WALTER_1, TRAINER_WALTER_2, TRAINER_WALTER_3, TRAINER_WALTER_4, TRAINER_WALTER_5}, 0x0, 0x24},
[REMATCH_KAREN] = {{TRAINER_KAREN_1, TRAINER_KAREN_2, TRAINER_KAREN_3, TRAINER_KAREN_4, TRAINER_KAREN_5}, 0x0, 0x1f},
[REMATCH_JERRY] = {{TRAINER_JERRY_1, TRAINER_JERRY_2, TRAINER_JERRY_3, TRAINER_JERRY_4, TRAINER_JERRY_5}, 0x0, 0x1f},
[REMATCH_ANNA_AND_MEG] = {{TRAINER_ANNA_AND_MEG_1, TRAINER_ANNA_AND_MEG_2, TRAINER_ANNA_AND_MEG_3, TRAINER_ANNA_AND_MEG_4, TRAINER_ANNA_AND_MEG_5}, 0x0, 0x20},
[REMATCH_ISABEL] = {{TRAINER_ISABEL_1, TRAINER_ISABEL_2, TRAINER_ISABEL_3, TRAINER_ISABEL_4, TRAINER_ISABEL_5}, 0x0, 0x19},
[REMATCH_MIGUEL] = {{TRAINER_MIGUEL_1, TRAINER_MIGUEL_2, TRAINER_MIGUEL_3, TRAINER_MIGUEL_4, TRAINER_MIGUEL_5}, 0x0, 0x12},
[REMATCH_TIMOTHY] = {{TRAINER_TIMOTHY_1, TRAINER_TIMOTHY_2, TRAINER_TIMOTHY_3, TRAINER_TIMOTHY_4, TRAINER_TIMOTHY_5}, 0x0, 0x1e},
[REMATCH_SHELBY] = {{TRAINER_SHELBY_1, TRAINER_SHELBY_2, TRAINER_SHELBY_3, TRAINER_SHELBY_4, TRAINER_SHELBY_5}, 0x18, 0xc},
[REMATCH_CALVIN] = {{TRAINER_CALVIN_1, TRAINER_CALVIN_2, TRAINER_CALVIN_3, TRAINER_CALVIN_4, TRAINER_CALVIN_5}, 0x0, 0x11},
[REMATCH_ELLIOT] = {{TRAINER_ELLIOT_1, TRAINER_ELLIOT_2, TRAINER_ELLIOT_3, TRAINER_ELLIOT_4, TRAINER_ELLIOT_5}, 0x0, 0x15},
[REMATCH_ISAIAH] = {{TRAINER_ISAIAH_1, TRAINER_ISAIAH_2, TRAINER_ISAIAH_3, TRAINER_ISAIAH_4, TRAINER_ISAIAH_5}, 0x0, 0x2b},
[REMATCH_MARIA] = {{TRAINER_MARIA_1, TRAINER_MARIA_2, TRAINER_MARIA_3, TRAINER_MARIA_4, TRAINER_MARIA_5}, 0x0, 0x20},
[REMATCH_ABIGAIL] = {{TRAINER_ABIGAIL_1, TRAINER_ABIGAIL_2, TRAINER_ABIGAIL_3, TRAINER_ABIGAIL_4, TRAINER_ABIGAIL_5}, 0x0, 0x19},
[REMATCH_DYLAN] = {{TRAINER_DYLAN_1, TRAINER_DYLAN_2, TRAINER_DYLAN_3, TRAINER_DYLAN_4, TRAINER_DYLAN_5}, 0x0, 0x20},
[REMATCH_KATELYN] = {{TRAINER_KATELYN_1, TRAINER_KATELYN_2, TRAINER_KATELYN_3, TRAINER_KATELYN_4, TRAINER_KATELYN_5}, 0x0, 0x2b},
[REMATCH_BENJAMIN] = {{TRAINER_BENJAMIN_1, TRAINER_BENJAMIN_2, TRAINER_BENJAMIN_3, TRAINER_BENJAMIN_4, TRAINER_BENJAMIN_5}, 0x0, 0x19},
[REMATCH_PABLO] = {{TRAINER_PABLO_1, TRAINER_PABLO_2, TRAINER_PABLO_3, TRAINER_PABLO_4, TRAINER_PABLO_5}, 0x0, 0x29},
[REMATCH_NICOLAS] = {{TRAINER_NICOLAS_1, TRAINER_NICOLAS_2, TRAINER_NICOLAS_3, TRAINER_NICOLAS_4, TRAINER_NICOLAS_5}, 0x18, 0x1},
[REMATCH_ROBERT] = {{TRAINER_ROBERT_1, TRAINER_ROBERT_2, TRAINER_ROBERT_3, TRAINER_ROBERT_4, TRAINER_ROBERT_5}, 0x0, 0x23},
[REMATCH_LAO] = {{TRAINER_LAO_1, TRAINER_LAO_2, TRAINER_LAO_3, TRAINER_LAO_4, TRAINER_LAO_5}, 0x0, 0x1c},
[REMATCH_CYNDY] = {{TRAINER_CYNDY_1, TRAINER_CYNDY_2, TRAINER_CYNDY_3, TRAINER_CYNDY_4, TRAINER_CYNDY_5}, 0x0, 0x1e},
[REMATCH_MADELINE] = {{TRAINER_MADELINE_1, TRAINER_MADELINE_2, TRAINER_MADELINE_3, TRAINER_MADELINE_4, TRAINER_MADELINE_5}, 0x0, 0x1c},
[REMATCH_JENNY] = {{TRAINER_JENNY_1, TRAINER_JENNY_2, TRAINER_JENNY_3, TRAINER_JENNY_4, TRAINER_JENNY_5}, 0x0, 0x27},
[REMATCH_DIANA] = {{TRAINER_DIANA_1, TRAINER_DIANA_2, TRAINER_DIANA_3, TRAINER_DIANA_4, TRAINER_DIANA_5}, 0x18, 0xd},
[REMATCH_AMY_AND_LIV] = {{TRAINER_AMY_AND_LIV_1, TRAINER_AMY_AND_LIV_2, TRAINER_AMY_AND_LIV_4, TRAINER_AMY_AND_LIV_5, TRAINER_AMY_AND_LIV_6}, 0x0, 0x12},
[REMATCH_ERNEST] = {{TRAINER_ERNEST_1, TRAINER_ERNEST_2, TRAINER_ERNEST_3, TRAINER_ERNEST_4, TRAINER_ERNEST_5}, 0x0, 0x28},
[REMATCH_CORY] = {{TRAINER_CORY_1, TRAINER_CORY_2, TRAINER_CORY_3, TRAINER_CORY_4, TRAINER_CORY_5}, 0x0, 0x17},
[REMATCH_EDWIN] = {{TRAINER_EDWIN_1, TRAINER_EDWIN_2, TRAINER_EDWIN_3, TRAINER_EDWIN_4, TRAINER_EDWIN_5}, 0x0, 0x19},
[REMATCH_LYDIA] = {{TRAINER_LYDIA_1, TRAINER_LYDIA_2, TRAINER_LYDIA_3, TRAINER_LYDIA_4, TRAINER_LYDIA_5}, 0x0, 0x20},
[REMATCH_ISAAC] = {{TRAINER_ISAAC_1, TRAINER_ISAAC_2, TRAINER_ISAAC_3, TRAINER_ISAAC_4, TRAINER_ISAAC_5}, 0x0, 0x20},
[REMATCH_GABRIELLE] = {{TRAINER_GABRIELLE_1, TRAINER_GABRIELLE_2, TRAINER_GABRIELLE_3, TRAINER_GABRIELLE_4, TRAINER_GABRIELLE_5}, 0x18, 0x11},
[REMATCH_CATHERINE] = {{TRAINER_CATHERINE_1, TRAINER_CATHERINE_2, TRAINER_CATHERINE_3, TRAINER_CATHERINE_4, TRAINER_CATHERINE_5}, 0x0, 0x22},
[REMATCH_JACKSON] = {{TRAINER_JACKSON_1, TRAINER_JACKSON_2, TRAINER_JACKSON_3, TRAINER_JACKSON_4, TRAINER_JACKSON_5}, 0x0, 0x22},
[REMATCH_HALEY] = {{TRAINER_HALEY_1, TRAINER_HALEY_2, TRAINER_HALEY_3, TRAINER_HALEY_4, TRAINER_HALEY_5}, 0x0, 0x13},
[REMATCH_JAMES] = {{TRAINER_JAMES_1, TRAINER_JAMES_2, TRAINER_JAMES_3, TRAINER_JAMES_4, TRAINER_JAMES_5}, 0x18, 0xb},
[REMATCH_TRENT] = {{TRAINER_TRENT_1, TRAINER_TRENT_2, TRAINER_TRENT_3, TRAINER_TRENT_4, TRAINER_TRENT_5}, 0x0, 0x1b},
[REMATCH_SAWYER] = {{TRAINER_SAWYER_1, TRAINER_SAWYER_2, TRAINER_SAWYER_3, TRAINER_SAWYER_4, TRAINER_SAWYER_5}, 0x18, 0xc},
[REMATCH_KIRA_AND_DAN] = {{TRAINER_KIRA_AND_DAN_1, TRAINER_KIRA_AND_DAN_2, TRAINER_KIRA_AND_DAN_3, TRAINER_KIRA_AND_DAN_4, TRAINER_KIRA_AND_DAN_5}, 0x18, 0x3e},
[REMATCH_WALLY_3] = {{TRAINER_WALLY_3, TRAINER_WALLY_4, TRAINER_WALLY_5, TRAINER_WALLY_6, TRAINER_WALLY_6}, 0x18, 0x2b},
[REMATCH_ROXANNE] = {{TRAINER_ROXANNE_1, TRAINER_ROXANNE_2, TRAINER_ROXANNE_3, TRAINER_ROXANNE_4, TRAINER_ROXANNE_5}, 0x0, 0x3},
[REMATCH_BRAWLY] = {{TRAINER_BRAWLY_1, TRAINER_BRAWLY_2, TRAINER_BRAWLY_3, TRAINER_BRAWLY_4, TRAINER_BRAWLY_5}, 0x0, 0xb},
[REMATCH_WATTSON] = {{TRAINER_WATTSON_1, TRAINER_WATTSON_2, TRAINER_WATTSON_3, TRAINER_WATTSON_4, TRAINER_WATTSON_5}, 0x0, 0x2},
[REMATCH_FLANNERY] = {{TRAINER_FLANNERY_1, TRAINER_FLANNERY_2, TRAINER_FLANNERY_3, TRAINER_FLANNERY_4, TRAINER_FLANNERY_5}, 0x0, 0xc},
[REMATCH_NORMAN] = {{TRAINER_NORMAN_1, TRAINER_NORMAN_2, TRAINER_NORMAN_3, TRAINER_NORMAN_4, TRAINER_NORMAN_5}, 0x0, 0x0},
[REMATCH_WINONA] = {{TRAINER_WINONA_1, TRAINER_WINONA_2, TRAINER_WINONA_3, TRAINER_WINONA_4, TRAINER_WINONA_5}, 0x0, 0x4},
[REMATCH_TATE_AND_LIZA] = {{TRAINER_TATE_AND_LIZA_1, TRAINER_TATE_AND_LIZA_2, TRAINER_TATE_AND_LIZA_3, TRAINER_TATE_AND_LIZA_4, TRAINER_TATE_AND_LIZA_5}, 0x0, 0x6},
[REMATCH_JUAN] = {{TRAINER_JUAN_1, TRAINER_JUAN_2, TRAINER_JUAN_3, TRAINER_JUAN_4, TRAINER_JUAN_5}, 0x0, 0x7},
[REMATCH_SIDNEY] = {{TRAINER_SIDNEY, TRAINER_SIDNEY, TRAINER_SIDNEY, TRAINER_SIDNEY, TRAINER_SIDNEY}, 0x0, 0x8},
[REMATCH_PHOEBE] = {{TRAINER_PHOEBE, TRAINER_PHOEBE, TRAINER_PHOEBE, TRAINER_PHOEBE, TRAINER_PHOEBE}, 0x0, 0x8},
[REMATCH_GLACIA] = {{TRAINER_GLACIA, TRAINER_GLACIA, TRAINER_GLACIA, TRAINER_GLACIA, TRAINER_GLACIA}, 0x0, 0x8},
[REMATCH_DRAKE] = {{TRAINER_DRAKE, TRAINER_DRAKE, TRAINER_DRAKE, TRAINER_DRAKE, TRAINER_DRAKE}, 0x0, 0x8},
[REMATCH_WALLACE] = {{TRAINER_WALLACE, TRAINER_WALLACE, TRAINER_WALLACE, TRAINER_WALLACE, TRAINER_WALLACE}, 0x0, 0x8},
[REMATCH_ROSE] = REMATCH(TRAINER_ROSE_1, TRAINER_ROSE_2, TRAINER_ROSE_3, TRAINER_ROSE_4, TRAINER_ROSE_5, ROUTE118),
[REMATCH_ANDRES] = REMATCH(TRAINER_ANDRES_1, TRAINER_ANDRES_2, TRAINER_ANDRES_3, TRAINER_ANDRES_4, TRAINER_ANDRES_5, ROUTE105),
[REMATCH_DUSTY] = REMATCH(TRAINER_DUSTY_1, TRAINER_DUSTY_2, TRAINER_DUSTY_3, TRAINER_DUSTY_4, TRAINER_DUSTY_5, ROUTE111),
[REMATCH_LOLA] = REMATCH(TRAINER_LOLA_1, TRAINER_LOLA_2, TRAINER_LOLA_3, TRAINER_LOLA_4, TRAINER_LOLA_5, ROUTE109),
[REMATCH_RICKY] = REMATCH(TRAINER_RICKY_1, TRAINER_RICKY_2, TRAINER_RICKY_3, TRAINER_RICKY_4, TRAINER_RICKY_5, ROUTE109),
[REMATCH_LILA_AND_ROY] = REMATCH(TRAINER_LILA_AND_ROY_1, TRAINER_LILA_AND_ROY_2, TRAINER_LILA_AND_ROY_3, TRAINER_LILA_AND_ROY_4, TRAINER_LILA_AND_ROY_5, ROUTE124),
[REMATCH_CRISTIN] = REMATCH(TRAINER_CRISTIN_1, TRAINER_CRISTIN_2, TRAINER_CRISTIN_3, TRAINER_CRISTIN_4, TRAINER_CRISTIN_5, ROUTE121),
[REMATCH_BROOKE] = REMATCH(TRAINER_BROOKE_1, TRAINER_BROOKE_2, TRAINER_BROOKE_3, TRAINER_BROOKE_4, TRAINER_BROOKE_5, ROUTE111),
[REMATCH_WILTON] = REMATCH(TRAINER_WILTON_1, TRAINER_WILTON_2, TRAINER_WILTON_3, TRAINER_WILTON_4, TRAINER_WILTON_5, ROUTE111),
[REMATCH_VALERIE] = REMATCH(TRAINER_VALERIE_1, TRAINER_VALERIE_2, TRAINER_VALERIE_3, TRAINER_VALERIE_4, TRAINER_VALERIE_5, MT_PYRE_6F),
[REMATCH_CINDY] = REMATCH(TRAINER_CINDY_1, TRAINER_CINDY_3, TRAINER_CINDY_4, TRAINER_CINDY_5, TRAINER_CINDY_6, ROUTE104),
[REMATCH_THALIA] = REMATCH(TRAINER_THALIA_1, TRAINER_THALIA_2, TRAINER_THALIA_3, TRAINER_THALIA_4, TRAINER_THALIA_5, ABANDONED_SHIP_ROOMS_1F),
[REMATCH_JESSICA] = REMATCH(TRAINER_JESSICA_1, TRAINER_JESSICA_2, TRAINER_JESSICA_3, TRAINER_JESSICA_4, TRAINER_JESSICA_5, ROUTE121),
[REMATCH_WINSTON] = REMATCH(TRAINER_WINSTON_1, TRAINER_WINSTON_2, TRAINER_WINSTON_3, TRAINER_WINSTON_4, TRAINER_WINSTON_5, ROUTE104),
[REMATCH_STEVE] = REMATCH(TRAINER_STEVE_1, TRAINER_STEVE_2, TRAINER_STEVE_3, TRAINER_STEVE_4, TRAINER_STEVE_5, ROUTE114),
[REMATCH_TONY] = REMATCH(TRAINER_TONY_1, TRAINER_TONY_2, TRAINER_TONY_3, TRAINER_TONY_4, TRAINER_TONY_5, ROUTE107),
[REMATCH_NOB] = REMATCH(TRAINER_NOB_1, TRAINER_NOB_2, TRAINER_NOB_3, TRAINER_NOB_4, TRAINER_NOB_5, ROUTE115),
[REMATCH_KOJI] = REMATCH(TRAINER_KOJI_1, TRAINER_KOJI_2, TRAINER_KOJI_3, TRAINER_KOJI_4, TRAINER_KOJI_5, ROUTE127),
[REMATCH_FERNANDO] = REMATCH(TRAINER_FERNANDO_1, TRAINER_FERNANDO_2, TRAINER_FERNANDO_3, TRAINER_FERNANDO_4, TRAINER_FERNANDO_5, ROUTE123),
[REMATCH_DALTON] = REMATCH(TRAINER_DALTON_1, TRAINER_DALTON_2, TRAINER_DALTON_3, TRAINER_DALTON_4, TRAINER_DALTON_5, ROUTE118),
[REMATCH_BERNIE] = REMATCH(TRAINER_BERNIE_1, TRAINER_BERNIE_2, TRAINER_BERNIE_3, TRAINER_BERNIE_4, TRAINER_BERNIE_5, ROUTE114),
[REMATCH_ETHAN] = REMATCH(TRAINER_ETHAN_1, TRAINER_ETHAN_2, TRAINER_ETHAN_3, TRAINER_ETHAN_4, TRAINER_ETHAN_5, JAGGED_PASS),
[REMATCH_JOHN_AND_JAY] = REMATCH(TRAINER_JOHN_AND_JAY_1, TRAINER_JOHN_AND_JAY_2, TRAINER_JOHN_AND_JAY_3, TRAINER_JOHN_AND_JAY_4, TRAINER_JOHN_AND_JAY_5, METEOR_FALLS_1F_2R),
[REMATCH_JEFFREY] = REMATCH(TRAINER_JEFFREY_1, TRAINER_JEFFREY_2, TRAINER_JEFFREY_3, TRAINER_JEFFREY_4, TRAINER_JEFFREY_5, ROUTE120),
[REMATCH_CAMERON] = REMATCH(TRAINER_CAMERON_1, TRAINER_CAMERON_2, TRAINER_CAMERON_3, TRAINER_CAMERON_4, TRAINER_CAMERON_5, ROUTE123),
[REMATCH_JACKI] = REMATCH(TRAINER_JACKI_1, TRAINER_JACKI_2, TRAINER_JACKI_3, TRAINER_JACKI_4, TRAINER_JACKI_5, ROUTE123),
[REMATCH_WALTER] = REMATCH(TRAINER_WALTER_1, TRAINER_WALTER_2, TRAINER_WALTER_3, TRAINER_WALTER_4, TRAINER_WALTER_5, ROUTE121),
[REMATCH_KAREN] = REMATCH(TRAINER_KAREN_1, TRAINER_KAREN_2, TRAINER_KAREN_3, TRAINER_KAREN_4, TRAINER_KAREN_5, ROUTE116),
[REMATCH_JERRY] = REMATCH(TRAINER_JERRY_1, TRAINER_JERRY_2, TRAINER_JERRY_3, TRAINER_JERRY_4, TRAINER_JERRY_5, ROUTE116),
[REMATCH_ANNA_AND_MEG] = REMATCH(TRAINER_ANNA_AND_MEG_1, TRAINER_ANNA_AND_MEG_2, TRAINER_ANNA_AND_MEG_3, TRAINER_ANNA_AND_MEG_4, TRAINER_ANNA_AND_MEG_5, ROUTE117),
[REMATCH_ISABEL] = REMATCH(TRAINER_ISABEL_1, TRAINER_ISABEL_2, TRAINER_ISABEL_3, TRAINER_ISABEL_4, TRAINER_ISABEL_5, ROUTE110),
[REMATCH_MIGUEL] = REMATCH(TRAINER_MIGUEL_1, TRAINER_MIGUEL_2, TRAINER_MIGUEL_3, TRAINER_MIGUEL_4, TRAINER_MIGUEL_5, ROUTE103),
[REMATCH_TIMOTHY] = REMATCH(TRAINER_TIMOTHY_1, TRAINER_TIMOTHY_2, TRAINER_TIMOTHY_3, TRAINER_TIMOTHY_4, TRAINER_TIMOTHY_5, ROUTE115),
[REMATCH_SHELBY] = REMATCH(TRAINER_SHELBY_1, TRAINER_SHELBY_2, TRAINER_SHELBY_3, TRAINER_SHELBY_4, TRAINER_SHELBY_5, MT_CHIMNEY),
[REMATCH_CALVIN] = REMATCH(TRAINER_CALVIN_1, TRAINER_CALVIN_2, TRAINER_CALVIN_3, TRAINER_CALVIN_4, TRAINER_CALVIN_5, ROUTE102),
[REMATCH_ELLIOT] = REMATCH(TRAINER_ELLIOT_1, TRAINER_ELLIOT_2, TRAINER_ELLIOT_3, TRAINER_ELLIOT_4, TRAINER_ELLIOT_5, ROUTE106),
[REMATCH_ISAIAH] = REMATCH(TRAINER_ISAIAH_1, TRAINER_ISAIAH_2, TRAINER_ISAIAH_3, TRAINER_ISAIAH_4, TRAINER_ISAIAH_5, ROUTE128),
[REMATCH_MARIA] = REMATCH(TRAINER_MARIA_1, TRAINER_MARIA_2, TRAINER_MARIA_3, TRAINER_MARIA_4, TRAINER_MARIA_5, ROUTE117),
[REMATCH_ABIGAIL] = REMATCH(TRAINER_ABIGAIL_1, TRAINER_ABIGAIL_2, TRAINER_ABIGAIL_3, TRAINER_ABIGAIL_4, TRAINER_ABIGAIL_5, ROUTE110),
[REMATCH_DYLAN] = REMATCH(TRAINER_DYLAN_1, TRAINER_DYLAN_2, TRAINER_DYLAN_3, TRAINER_DYLAN_4, TRAINER_DYLAN_5, ROUTE117),
[REMATCH_KATELYN] = REMATCH(TRAINER_KATELYN_1, TRAINER_KATELYN_2, TRAINER_KATELYN_3, TRAINER_KATELYN_4, TRAINER_KATELYN_5, ROUTE128),
[REMATCH_BENJAMIN] = REMATCH(TRAINER_BENJAMIN_1, TRAINER_BENJAMIN_2, TRAINER_BENJAMIN_3, TRAINER_BENJAMIN_4, TRAINER_BENJAMIN_5, ROUTE110),
[REMATCH_PABLO] = REMATCH(TRAINER_PABLO_1, TRAINER_PABLO_2, TRAINER_PABLO_3, TRAINER_PABLO_4, TRAINER_PABLO_5, ROUTE126),
[REMATCH_NICOLAS] = REMATCH(TRAINER_NICOLAS_1, TRAINER_NICOLAS_2, TRAINER_NICOLAS_3, TRAINER_NICOLAS_4, TRAINER_NICOLAS_5, METEOR_FALLS_1F_2R),
[REMATCH_ROBERT] = REMATCH(TRAINER_ROBERT_1, TRAINER_ROBERT_2, TRAINER_ROBERT_3, TRAINER_ROBERT_4, TRAINER_ROBERT_5, ROUTE120),
[REMATCH_LAO] = REMATCH(TRAINER_LAO_1, TRAINER_LAO_2, TRAINER_LAO_3, TRAINER_LAO_4, TRAINER_LAO_5, ROUTE113),
[REMATCH_CYNDY] = REMATCH(TRAINER_CYNDY_1, TRAINER_CYNDY_2, TRAINER_CYNDY_3, TRAINER_CYNDY_4, TRAINER_CYNDY_5, ROUTE115),
[REMATCH_MADELINE] = REMATCH(TRAINER_MADELINE_1, TRAINER_MADELINE_2, TRAINER_MADELINE_3, TRAINER_MADELINE_4, TRAINER_MADELINE_5, ROUTE113),
[REMATCH_JENNY] = REMATCH(TRAINER_JENNY_1, TRAINER_JENNY_2, TRAINER_JENNY_3, TRAINER_JENNY_4, TRAINER_JENNY_5, ROUTE124),
[REMATCH_DIANA] = REMATCH(TRAINER_DIANA_1, TRAINER_DIANA_2, TRAINER_DIANA_3, TRAINER_DIANA_4, TRAINER_DIANA_5, JAGGED_PASS),
[REMATCH_AMY_AND_LIV] = REMATCH(TRAINER_AMY_AND_LIV_1, TRAINER_AMY_AND_LIV_2, TRAINER_AMY_AND_LIV_4, TRAINER_AMY_AND_LIV_5, TRAINER_AMY_AND_LIV_6, ROUTE103),
[REMATCH_ERNEST] = REMATCH(TRAINER_ERNEST_1, TRAINER_ERNEST_2, TRAINER_ERNEST_3, TRAINER_ERNEST_4, TRAINER_ERNEST_5, ROUTE125),
[REMATCH_CORY] = REMATCH(TRAINER_CORY_1, TRAINER_CORY_2, TRAINER_CORY_3, TRAINER_CORY_4, TRAINER_CORY_5, ROUTE108),
[REMATCH_EDWIN] = REMATCH(TRAINER_EDWIN_1, TRAINER_EDWIN_2, TRAINER_EDWIN_3, TRAINER_EDWIN_4, TRAINER_EDWIN_5, ROUTE110),
[REMATCH_LYDIA] = REMATCH(TRAINER_LYDIA_1, TRAINER_LYDIA_2, TRAINER_LYDIA_3, TRAINER_LYDIA_4, TRAINER_LYDIA_5, ROUTE117),
[REMATCH_ISAAC] = REMATCH(TRAINER_ISAAC_1, TRAINER_ISAAC_2, TRAINER_ISAAC_3, TRAINER_ISAAC_4, TRAINER_ISAAC_5, ROUTE117),
[REMATCH_GABRIELLE] = REMATCH(TRAINER_GABRIELLE_1, TRAINER_GABRIELLE_2, TRAINER_GABRIELLE_3, TRAINER_GABRIELLE_4, TRAINER_GABRIELLE_5, MT_PYRE_3F),
[REMATCH_CATHERINE] = REMATCH(TRAINER_CATHERINE_1, TRAINER_CATHERINE_2, TRAINER_CATHERINE_3, TRAINER_CATHERINE_4, TRAINER_CATHERINE_5, ROUTE119),
[REMATCH_JACKSON] = REMATCH(TRAINER_JACKSON_1, TRAINER_JACKSON_2, TRAINER_JACKSON_3, TRAINER_JACKSON_4, TRAINER_JACKSON_5, ROUTE119),
[REMATCH_HALEY] = REMATCH(TRAINER_HALEY_1, TRAINER_HALEY_2, TRAINER_HALEY_3, TRAINER_HALEY_4, TRAINER_HALEY_5, ROUTE104),
[REMATCH_JAMES] = REMATCH(TRAINER_JAMES_1, TRAINER_JAMES_2, TRAINER_JAMES_3, TRAINER_JAMES_4, TRAINER_JAMES_5, PETALBURG_WOODS),
[REMATCH_TRENT] = REMATCH(TRAINER_TRENT_1, TRAINER_TRENT_2, TRAINER_TRENT_3, TRAINER_TRENT_4, TRAINER_TRENT_5, ROUTE112),
[REMATCH_SAWYER] = REMATCH(TRAINER_SAWYER_1, TRAINER_SAWYER_2, TRAINER_SAWYER_3, TRAINER_SAWYER_4, TRAINER_SAWYER_5, MT_CHIMNEY),
[REMATCH_KIRA_AND_DAN] = REMATCH(TRAINER_KIRA_AND_DAN_1, TRAINER_KIRA_AND_DAN_2, TRAINER_KIRA_AND_DAN_3, TRAINER_KIRA_AND_DAN_4, TRAINER_KIRA_AND_DAN_5, ABANDONED_SHIP_ROOMS2_1F),
[REMATCH_WALLY_3] = REMATCH(TRAINER_WALLY_3, TRAINER_WALLY_4, TRAINER_WALLY_5, TRAINER_WALLY_6, TRAINER_WALLY_6, VICTORY_ROAD_1F),
[REMATCH_ROXANNE] = REMATCH(TRAINER_ROXANNE_1, TRAINER_ROXANNE_2, TRAINER_ROXANNE_3, TRAINER_ROXANNE_4, TRAINER_ROXANNE_5, RUSTBORO_CITY),
[REMATCH_BRAWLY] = REMATCH(TRAINER_BRAWLY_1, TRAINER_BRAWLY_2, TRAINER_BRAWLY_3, TRAINER_BRAWLY_4, TRAINER_BRAWLY_5, DEWFORD_TOWN),
[REMATCH_WATTSON] = REMATCH(TRAINER_WATTSON_1, TRAINER_WATTSON_2, TRAINER_WATTSON_3, TRAINER_WATTSON_4, TRAINER_WATTSON_5, MAUVILLE_CITY),
[REMATCH_FLANNERY] = REMATCH(TRAINER_FLANNERY_1, TRAINER_FLANNERY_2, TRAINER_FLANNERY_3, TRAINER_FLANNERY_4, TRAINER_FLANNERY_5, LAVARIDGE_TOWN),
[REMATCH_NORMAN] = REMATCH(TRAINER_NORMAN_1, TRAINER_NORMAN_2, TRAINER_NORMAN_3, TRAINER_NORMAN_4, TRAINER_NORMAN_5, PETALBURG_CITY),
[REMATCH_WINONA] = REMATCH(TRAINER_WINONA_1, TRAINER_WINONA_2, TRAINER_WINONA_3, TRAINER_WINONA_4, TRAINER_WINONA_5, FORTREE_CITY),
[REMATCH_TATE_AND_LIZA] = REMATCH(TRAINER_TATE_AND_LIZA_1, TRAINER_TATE_AND_LIZA_2, TRAINER_TATE_AND_LIZA_3, TRAINER_TATE_AND_LIZA_4, TRAINER_TATE_AND_LIZA_5, MOSSDEEP_CITY),
[REMATCH_JUAN] = REMATCH(TRAINER_JUAN_1, TRAINER_JUAN_2, TRAINER_JUAN_3, TRAINER_JUAN_4, TRAINER_JUAN_5, SOOTOPOLIS_CITY),
[REMATCH_SIDNEY] = REMATCH(TRAINER_SIDNEY, TRAINER_SIDNEY, TRAINER_SIDNEY, TRAINER_SIDNEY, TRAINER_SIDNEY, EVER_GRANDE_CITY),
[REMATCH_PHOEBE] = REMATCH(TRAINER_PHOEBE, TRAINER_PHOEBE, TRAINER_PHOEBE, TRAINER_PHOEBE, TRAINER_PHOEBE, EVER_GRANDE_CITY),
[REMATCH_GLACIA] = REMATCH(TRAINER_GLACIA, TRAINER_GLACIA, TRAINER_GLACIA, TRAINER_GLACIA, TRAINER_GLACIA, EVER_GRANDE_CITY),
[REMATCH_DRAKE] = REMATCH(TRAINER_DRAKE, TRAINER_DRAKE, TRAINER_DRAKE, TRAINER_DRAKE, TRAINER_DRAKE, EVER_GRANDE_CITY),
[REMATCH_WALLACE] = REMATCH(TRAINER_WALLACE, TRAINER_WALLACE, TRAINER_WALLACE, TRAINER_WALLACE, TRAINER_WALLACE, EVER_GRANDE_CITY),
};
static const u16 sBadgeFlags[8] =
+5 -5
View File
@@ -1019,7 +1019,7 @@ struct
u8 level;
u8 nature;
u8 evs[6];
u16 moves[4];
u16 moves[MAX_MON_MOVES];
} const sStevenMons[3] =
{
{
@@ -1561,7 +1561,7 @@ void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm)
for (i = 0; i < 5; i++)
{
k = 0;
for (j = 0; j < 4; j++)
for (j = 0; j < TRAINER_ID_LENGTH; j++)
{
if (gSaveBlock2Ptr->frontier.towerRecords[i].trainerId[j] != newRecord->trainerId[j])
break;
@@ -3190,7 +3190,7 @@ static void FillPartnerParty(u16 trainerId)
sStevenMons[i].level,
sStevenMons[i].fixedIV,
TRUE, i, // BUG: personality was stored in the 'j' variable. As a result, Steven's pokemon do not have the intended natures.
TRUE, STEVEN_OTID);
OT_ID_PRESET, STEVEN_OTID);
for (j = 0; j < 6; j++)
SetMonData(&gPlayerParty[3 + i], MON_DATA_HP_EV + j, &sStevenMons[i].evs[j]);
for (j = 0; j < MAX_MON_MOVES; j++)
@@ -3308,7 +3308,7 @@ bool32 RubyBattleTowerRecordToEmerald(struct RSBattleTowerRecord *src, struct Em
for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
dst->name[i] = src->name[i];
for (i = 0; i < 4; i++)
for (i = 0; i < TRAINER_ID_LENGTH; i++)
dst->trainerId[i] = src->trainerId[i];
for (i = 0; i < 6; i++)
dst->greeting[i] = src->greeting[i];
@@ -3357,7 +3357,7 @@ bool32 EmeraldBattleTowerRecordToRuby(struct EmeraldBattleTowerRecord *src, stru
for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
dst->name[i] = src->name[i];
for (i = 0; i < 4; i++)
for (i = 0; i < TRAINER_ID_LENGTH; i++)
dst->trainerId[i] = src->trainerId[i];
for (i = 0; i < 6; i++)
dst->greeting[i] = src->greeting[i];
+3 -2
View File
@@ -1961,9 +1961,10 @@ static bool8 Phase2_Ripple_Func2(struct Task *task)
for (i = 0; i < 160; i++, r4 += r8)
{
// todo: fix the asm
s16 var = r4 >> 8;
asm("");
var++;
var--;
gScanlineEffectRegBuffers[0][i] = sTransitionStructPtr->field_16 + Sin(var, r3);
}
+11 -11
View File
@@ -1,30 +1,30 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
#include "constants/battle_script_commands.h"
#include "constants/abilities.h"
#include "constants/moves.h"
#include "constants/hold_effects.h"
#include "constants/battle_anim.h"
#include "pokemon.h"
#include "constants/species.h"
#include "item.h"
#include "constants/items.h"
#include "util.h"
#include "constants/battle_move_effects.h"
#include "battle_scripts.h"
#include "random.h"
#include "text.h"
#include "string_util.h"
#include "battle_message.h"
#include "constants/battle_string_ids.h"
#include "constants/weather.h"
#include "battle_ai_script_commands.h"
#include "battle_controllers.h"
#include "event_data.h"
#include "link.h"
#include "berry.h"
#include "field_weather.h"
#include "constants/abilities.h"
#include "constants/battle_anim.h"
#include "constants/battle_move_effects.h"
#include "constants/battle_script_commands.h"
#include "constants/battle_string_ids.h"
#include "constants/berry.h"
#include "constants/hold_effects.h"
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/species.h"
#include "constants/weather.h"
// rom const data
static const u16 sSoundMovesTable[] =
+1
View File
@@ -11,6 +11,7 @@
#include "random.h"
#include "string_util.h"
#include "text.h"
#include "constants/berry.h"
#include "constants/event_object_movement_constants.h"
#include "constants/items.h"
+1
View File
@@ -36,6 +36,7 @@
#include "new_game.h"
#include "save.h"
#include "link.h"
#include "constants/berry.h"
#include "constants/rgb.h"
#define BLENDER_SCORE_BEST 0
+3 -2
View File
@@ -4,7 +4,6 @@
#include "decompress.h"
#include "event_object_movement.h"
#include "item_menu.h"
#include "constants/items.h"
#include "item.h"
#include "item_use.h"
#include "main.h"
@@ -15,7 +14,6 @@
#include "menu_helpers.h"
#include "palette.h"
#include "overworld.h"
#include "constants/songs.h"
#include "sound.h"
#include "sprite.h"
#include "string_util.h"
@@ -28,7 +26,10 @@
#include "item_menu_icons.h"
#include "decompress.h"
#include "international_string_util.h"
#include "constants/berry.h"
#include "constants/items.h"
#include "constants/rgb.h"
#include "constants/songs.h"
// There are 4 windows used in berry tag screen.
enum
+10 -59
View File
@@ -1174,78 +1174,29 @@ u32 GetTileMapIndexFromCoords(s32 x, s32 y, s32 screenSize, u32 screenWidth, u32
return (y * 0x20) + x;
}
#ifdef NONMATCHING // This one has some weird switch statement cases that refuse to cooperate
void CopyTileMapEntry(const u16 *src, u16 *dest, s32 palette1, s32 tileOffset, s32 palette2)
{
u16 var;
if (palette1 == 16)
goto CASE_16;
switch (palette1)
{
case 0 ... 16:
if (palette1 != 16)
var = ((*src + tileOffset) & 0xFFF) + ((palette1 + palette2) << 12);
else
var = ((*dest & 0xFC00) + (palette2 << 12)) | ((*src + tileOffset) & 0x3FF);
var = ((*src + tileOffset) & 0xFFF) + ((palette1 + palette2) << 12);
break;
CASE_16:
var = *dest;
var &= 0xFC00;
var += palette2 << 12;
var |= (*src + tileOffset) & 0x3FF;
break;
default:
var = *src + tileOffset + (palette2 << 12);
break;
}
*dest = var;
}
#else
NAKED
void CopyTileMapEntry(const u16 *src, u16 *dest, s32 palette1, s32 tileOffset, s32 palette2)
{
asm("push {r4-r6,lr}\n\
add r4, r0, #0\n\
add r6, r1, #0\n\
ldr r5, [sp, #0x10]\n\
cmp r2, #0x10\n\
beq _08002B14\n\
cmp r2, #0x10\n\
bgt _08002B34\n\
cmp r2, #0\n\
blt _08002B34\n\
ldrh r0, [r4]\n\
add r0, r3\n\
ldr r3, =0x00000fff\n\
add r1, r3, #0\n\
and r0, r1\n\
add r1, r2, r5\n\
lsl r1, #12\n\
b _08002B3A\n\
.pool\n\
_08002B14:\n\
ldrh r1, [r6]\n\
mov r0, #0xFC\n\
lsl r0, #8\n\
and r1, r0\n\
lsl r2, r5, #12\n\
add r2, r1, r2\n\
ldrh r0, [r4]\n\
add r0, r3\n\
ldr r3, =0x000003ff\n\
add r1, r3, #0\n\
and r0, r1\n\
orr r0, r2\n\
b _08002B3C\n\
.pool\n\
_08002B34:\n\
ldrh r0, [r4]\n\
add r0, r3\n\
lsl r1, r5, #12\n\
_08002B3A:\n\
add r0, r1\n\
_08002B3C:\n\
lsl r0, #16\n\
lsr r1, r0, #16\n\
strh r1, [r6]\n\
pop {r4-r6}\n\
pop {r0}\n\
bx r0\n");
}
#endif // NONMATCHING
u32 GetBgType(u8 bg)
{
+1 -1
View File
@@ -25,7 +25,7 @@ static void InitTimeBasedEvents(void)
void DoTimeBasedEvents(void)
{
if (FlagGet(FLAG_SYS_CLOCK_SET) && !sub_813B9C0())
if (FlagGet(FLAG_SYS_CLOCK_SET) && !InPokemonCenter())
{
RtcCalcLocalTime();
UpdatePerDay(&gLocalTime);
+4 -4
View File
@@ -1217,10 +1217,10 @@ static bool8 SetupContestGraphics(u8 *stateVar)
CreateApplauseMeterSprite();
sub_80DC5E8();
sub_80DC7EC();
gBattlerPositions[0] = 0;
gBattlerPositions[1] = 1;
gBattlerPositions[2] = 3;
gBattlerPositions[3] = 2;
gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
gBattlerPositions[2] = B_POSITION_OPPONENT_RIGHT;
gBattlerPositions[3] = B_POSITION_PLAYER_RIGHT;
gBattleTypeFlags = 0;
gBattlerAttacker = 2;
gBattlerTarget = 3;
+1 -1
View File
@@ -292,7 +292,7 @@ static void PrintContestPaintingCaption(u8 contestType, u8 arg1)
category = gUnknown_030061C0->contestCategory;
if (contestType < 8)
{
sub_818E868(gStringVar1, category);
BufferContestName(gStringVar1, category);
StringAppend(gStringVar1, gText_Space);
StringAppend(gStringVar1, gContestRankTextPointers[gUnknown_030061C0->contestRank]);
StringCopy(gStringVar2, gUnknown_030061C0->trainerName);
+239 -236
View File
@@ -143,7 +143,7 @@ struct Unk201C000
struct CreditsEntry
{
u8 var_0;
u8 var_1;
bool8 isTitle;
const u8 *text;
};
@@ -165,7 +165,7 @@ static const u32 gCreditsCopyrightEnd_Gfx[] = INCBIN_U32("graphics/credits/the_e
static void sub_81772B8(struct Sprite *sprite);
static const u8 gUnknown_085E5BAC[] =
static const u8 sTheEnd_LetterTMap[] =
{
0, 1, 0,
0xFF, 1, 0xFF,
@@ -174,7 +174,7 @@ static const u8 gUnknown_085E5BAC[] =
0xFF, 1, 0xFF,
};
static const u8 gUnknown_085E5BBB[] =
static const u8 sTheEnd_LetterHMap[] =
{
1, 0xFF, 1,
1, 0xFF, 1,
@@ -183,7 +183,7 @@ static const u8 gUnknown_085E5BBB[] =
1, 0xFF, 1,
};
static const u8 gUnknown_085E5BCA[] =
static const u8 sTheEnd_LetterEMap[] =
{
1, 0, 0,
1, 0xFF, 0xFF,
@@ -192,7 +192,7 @@ static const u8 gUnknown_085E5BCA[] =
1, 0x80, 0x80,
};
static const u8 gUnknown_085E5BD9[] =
static const u8 sTheEnd_LetterNMap[] =
{
1, 3, 1,
1, 4, 1,
@@ -201,7 +201,7 @@ static const u8 gUnknown_085E5BD9[] =
1, 0xC3, 1,
};
static const u8 gUnknown_085E5BE8[] =
static const u8 sTheEnd_LetterDMap[] =
{
1, 6, 7,
1, 8, 9,
@@ -369,165 +369,165 @@ static const u8 gCreditsText_MotoyasuTojima[] = _("Motoyasu Tojima");
static const u8 gCreditsText_NicolaPrattBarlow[] = _("Nicola Pratt-Barlow");
static const u8 gCreditsText_ShellieDow[] = _("Shellie Dow");
static const u8 gCreditsText_ErikJohnson[] = _("Erik Johnson");
static const struct CreditsEntry gCreditsEntry_EmptyString[] = {0, 0, gCreditsText_EmptyString};
static const struct CreditsEntry gCreditsEntry_PkmnEmeraldVersion[] = {7, 1, gCreditsText_PkmnEmeraldVersion};
static const struct CreditsEntry gCreditsEntry_Credits[] = {11, 1, gCreditsText_Credits};
static const struct CreditsEntry gCreditsEntry_ExecutiveDirector[] = {8, 1, gCreditsText_ExecutiveDirector};
static const struct CreditsEntry gCreditsEntry_Director[] = {12, 1, gCreditsText_Director};
static const struct CreditsEntry gCreditsEntry_ArtDirector[] = {10, 1, gCreditsText_ArtDirector};
static const struct CreditsEntry gCreditsEntry_BattleDirector[] = {10, 1, gCreditsText_BattleDirector};
static const struct CreditsEntry gCreditsEntry_MainProgrammer[] = {10, 1, gCreditsText_MainProgrammer};
static const struct CreditsEntry gCreditsEntry_BattleSystemPgrms[] = {8, 1, gCreditsText_BattleSystemPgrms};
static const struct CreditsEntry gCreditsEntry_FieldSystemPgrms[] = {7, 1, gCreditsText_FieldSystemPgrms};
static const struct CreditsEntry gCreditsEntry_Programmers[] = {12, 1, gCreditsText_Programmers};
static const struct CreditsEntry gCreditsEntry_MainGraphicDesigner[] = {7, 1, gCreditsText_MainGraphicDesigner};
static const struct CreditsEntry gCreditsEntry_GraphicDesigners[] = {9, 1, gCreditsText_GraphicDesigners};
static const struct CreditsEntry gCreditsEntry_PkmnDesigners[] = {10, 1, gCreditsText_PkmnDesigners};
static const struct CreditsEntry gCreditsEntry_MusicComposition[] = {13, 1, gCreditsText_MusicComposition};
static const struct CreditsEntry gCreditsEntry_SoundEffectsAndPkmnVoices[] = {4, 1, gCreditsText_SoundEffectsAndPkmnVoices};
static const struct CreditsEntry gCreditsEntry_GameDesigners[] = {11, 1, gCreditsText_GameDesigners};
static const struct CreditsEntry gCreditsEntry_ScenarioPlot[] = {11, 1, gCreditsText_ScenarioPlot};
static const struct CreditsEntry gCreditsEntry_Scenario[] = {13, 1, gCreditsText_Scenario};
static const struct CreditsEntry gCreditsEntry_ScriptDesigners[] = {10, 1, gCreditsText_ScriptDesigners};
static const struct CreditsEntry gCreditsEntry_MapDesigners[] = {11, 1, gCreditsText_MapDesigners};
static const struct CreditsEntry gCreditsEntry_MapDataDesigners[] = {9, 1, gCreditsText_MapDataDesigners};
static const struct CreditsEntry gCreditsEntry_ParametricDesigners[] = {9, 1, gCreditsText_ParametricDesigners};
static const struct CreditsEntry gCreditsEntry_PokedexText[] = {11, 1, gCreditsText_PokedexText};
static const struct CreditsEntry gCreditsEntry_EnvAndToolPgrms[] = {6, 1, gCreditsText_EnvAndToolPgrms};
static const struct CreditsEntry gCreditsEntry_NCLProductTesting[] = {11, 1, gCreditsText_NCLProductTesting};
static const struct CreditsEntry gCreditsEntry_SpecialThanks[] = {10, 1, gCreditsText_SpecialThanks};
static const struct CreditsEntry gCreditsEntry_Coordinators[] = {11, 1, gCreditsText_Coordinators};
static const struct CreditsEntry gCreditsEntry_Producers[] = {11, 1, gCreditsText_Producers};
static const struct CreditsEntry gCreditsEntry_ExecProducers[] = {7, 1, gCreditsText_ExecProducers};
static const struct CreditsEntry gCreditsEntry_InfoSupervisors[] = {10, 1, gCreditsText_InfoSupervisors};
static const struct CreditsEntry gCreditsEntry_TaskManagers[] = {8, 1, gCreditsText_TaskManagers};
static const struct CreditsEntry gCreditsEntry_BrailleCodeCheck[] = {10, 1, gCreditsText_BrailleCodeCheck};
static const struct CreditsEntry gCreditsEntry_WorldDirector[] = {10, 1, gCreditsText_WorldDirector};
static const struct CreditsEntry gCreditsEntry_BattleFrontierData[] = {8, 1, gCreditsText_BattleFrontierData};
static const struct CreditsEntry gCreditsEntry_SupportProgrammers[] = {10, 1, gCreditsText_SupportProgrammers};
static const struct CreditsEntry gCreditsEntry_Artwork[] = {12, 1, gCreditsText_Artwork};
static const struct CreditsEntry gCreditsEntry_LeadProgrammer[] = {10, 1, gCreditsText_LeadProgrammer};
static const struct CreditsEntry gCreditsEntry_LeadGraphicArtist[] = {9, 1, gCreditsText_LeadGraphicArtist};
static const struct CreditsEntry gCreditsEntry_SatoshiTajiri[] = {11, 0, gCreditsText_SatoshiTajiri};
static const struct CreditsEntry gCreditsEntry_JunichiMasuda[] = {11, 0, gCreditsText_JunichiMasuda};
static const struct CreditsEntry gCreditsEntry_KenSugimori[] = {11, 0, gCreditsText_KenSugimori};
static const struct CreditsEntry gCreditsEntry_ShigekiMorimoto[] = {11, 0, gCreditsText_ShigekiMorimoto};
static const struct CreditsEntry gCreditsEntry_TetsuyaWatanabe[] = {11, 0, gCreditsText_TetsuyaWatanabe};
static const struct CreditsEntry gCreditsEntry_HisashiSogabe[] = {11, 0, gCreditsText_HisashiSogabe};
static const struct CreditsEntry gCreditsEntry_SosukeTamada[] = {11, 0, gCreditsText_SosukeTamada};
static const struct CreditsEntry gCreditsEntry_AkitoMori[] = {11, 0, gCreditsText_AkitoMori};
static const struct CreditsEntry gCreditsEntry_KeitaKagaya[] = {11, 0, gCreditsText_KeitaKagaya};
static const struct CreditsEntry gCreditsEntry_YoshinoriMatsuda[] = {11, 0, gCreditsText_YoshinoriMatsuda};
static const struct CreditsEntry gCreditsEntry_HiroyukiNakamura[] = {11, 0, gCreditsText_HiroyukiNakamura};
static const struct CreditsEntry gCreditsEntry_MasaoTaya[] = {11, 0, gCreditsText_MasaoTaya};
static const struct CreditsEntry gCreditsEntry_SatoshiNohara[] = {11, 0, gCreditsText_SatoshiNohara};
static const struct CreditsEntry gCreditsEntry_TomomichiOhta[] = {11, 0, gCreditsText_TomomichiOhta};
static const struct CreditsEntry gCreditsEntry_MiyukiIwasawa[] = {11, 0, gCreditsText_MiyukiIwasawa};
static const struct CreditsEntry gCreditsEntry_TakenoriOhta[] = {11, 0, gCreditsText_TakenoriOhta};
static const struct CreditsEntry gCreditsEntry_HironobuYoshida[] = {11, 0, gCreditsText_HironobuYoshida};
static const struct CreditsEntry gCreditsEntry_MotofumiFujiwara[] = {11, 0, gCreditsText_MotofumiFujiwara};
static const struct CreditsEntry gCreditsEntry_SatoshiOhta[] = {11, 0, gCreditsText_SatoshiOhta};
static const struct CreditsEntry gCreditsEntry_AsukaIwashita[] = {11, 0, gCreditsText_AsukaIwashita};
static const struct CreditsEntry gCreditsEntry_AimiTomita[] = {11, 0, gCreditsText_AimiTomita};
static const struct CreditsEntry gCreditsEntry_TakaoUnno[] = {11, 0, gCreditsText_TakaoUnno};
static const struct CreditsEntry gCreditsEntry_KanakoEo[] = {11, 0, gCreditsText_KanakoEo};
static const struct CreditsEntry gCreditsEntry_JunOkutani[] = {11, 0, gCreditsText_JunOkutani};
static const struct CreditsEntry gCreditsEntry_AtsukoNishida[] = {11, 0, gCreditsText_AtsukoNishida};
static const struct CreditsEntry gCreditsEntry_MuneoSaito[] = {11, 0, gCreditsText_MuneoSaito};
static const struct CreditsEntry gCreditsEntry_RenaYoshikawa[] = {11, 0, gCreditsText_RenaYoshikawa};
static const struct CreditsEntry gCreditsEntry_GoIchinose[] = {11, 0, gCreditsText_GoIchinose};
static const struct CreditsEntry gCreditsEntry_MorikazuAoki[] = {11, 0, gCreditsText_MorikazuAoki};
static const struct CreditsEntry gCreditsEntry_KojiNishino[] = {11, 0, gCreditsText_KojiNishino};
static const struct CreditsEntry gCreditsEntry_KenjiMatsushima[] = {11, 0, gCreditsText_KenjiMatsushima};
static const struct CreditsEntry gCreditsEntry_TetsujiOhta[] = {11, 0, gCreditsText_TetsujiOhta};
static const struct CreditsEntry gCreditsEntry_HitomiSato[] = {11, 0, gCreditsText_HitomiSato};
static const struct CreditsEntry gCreditsEntry_TakeshiKawachimaru[] = {11, 0, gCreditsText_TakeshiKawachimaru};
static const struct CreditsEntry gCreditsEntry_TeruyukiShimoyamada[] = {11, 0, gCreditsText_TeruyukiShimoyamada};
static const struct CreditsEntry gCreditsEntry_ShigeruOhmori[] = {11, 0, gCreditsText_ShigeruOhmori};
static const struct CreditsEntry gCreditsEntry_TadashiTakahashi[] = {11, 0, gCreditsText_TadashiTakahashi};
static const struct CreditsEntry gCreditsEntry_ToshinobuMatsumiya[] = {11, 0, gCreditsText_ToshinobuMatsumiya};
static const struct CreditsEntry gCreditsEntry_AkihitoTomisawa[] = {11, 0, gCreditsText_AkihitoTomisawa};
static const struct CreditsEntry gCreditsEntry_HirokiEnomoto[] = {11, 0, gCreditsText_HirokiEnomoto};
static const struct CreditsEntry gCreditsEntry_KazuyukiTerada[] = {11, 0, gCreditsText_KazuyukiTerada};
static const struct CreditsEntry gCreditsEntry_YuriSakurai[] = {11, 0, gCreditsText_YuriSakurai};
static const struct CreditsEntry gCreditsEntry_HiromiSagawa[] = {11, 0, gCreditsText_HiromiSagawa};
static const struct CreditsEntry gCreditsEntry_KenjiTominaga[] = {11, 0, gCreditsText_KenjiTominaga};
static const struct CreditsEntry gCreditsEntry_YoshioTajiri[] = {11, 0, gCreditsText_YoshioTajiri};
static const struct CreditsEntry gCreditsEntry_TeikoSasaki[] = {11, 0, gCreditsText_TeikoSasaki};
static const struct CreditsEntry gCreditsEntry_SachikoHamano[] = {11, 0, gCreditsText_SachikoHamano};
static const struct CreditsEntry gCreditsEntry_ChieMatsumiya[] = {11, 0, gCreditsText_ChieMatsumiya};
static const struct CreditsEntry gCreditsEntry_AkikoShinozaki[] = {11, 0, gCreditsText_AkikoShinozaki};
static const struct CreditsEntry gCreditsEntry_AstukoFujii[] = {11, 0, gCreditsText_AstukoFujii};
static const struct CreditsEntry gCreditsEntry_NozomuSaito[] = {11, 0, gCreditsText_NozomuSaito};
static const struct CreditsEntry gCreditsEntry_KenkichiToyama[] = {11, 0, gCreditsText_KenkichiToyama};
static const struct CreditsEntry gCreditsEntry_SuguruNakatsui[] = {11, 0, gCreditsText_SuguruNakatsui};
static const struct CreditsEntry gCreditsEntry_YumiFunasaka[] = {11, 0, gCreditsText_YumiFunasaka};
static const struct CreditsEntry gCreditsEntry_NaokoYanase[] = {11, 0, gCreditsText_NaokoYanase};
static const struct CreditsEntry gCreditsEntry_NCLSuperMarioClub[] = {11, 0, gCreditsText_NCLSuperMarioClub};
static const struct CreditsEntry gCreditsEntry_AtsushiTada[] = {11, 0, gCreditsText_AtsushiTada};
static const struct CreditsEntry gCreditsEntry_TakahiroOhnishi[] = {11, 0, gCreditsText_TakahiroOhnishi};
static const struct CreditsEntry gCreditsEntry_NorihideOkamura[] = {11, 0, gCreditsText_NorihideOkamura};
static const struct CreditsEntry gCreditsEntry_HiroNakamura[] = {11, 0, gCreditsText_HiroNakamura};
static const struct CreditsEntry gCreditsEntry_HiroyukiUesugi[] = {11, 0, gCreditsText_HiroyukiUesugi};
static const struct CreditsEntry gCreditsEntry_TerukiMurakawa[] = {11, 0, gCreditsText_TerukiMurakawa};
static const struct CreditsEntry gCreditsEntry_AkiraKinashi[] = {11, 0, gCreditsText_AkiraKinashi};
static const struct CreditsEntry gCreditsEntry_MichikoTakizawa[] = {11, 0, gCreditsText_MichikoTakizawa};
static const struct CreditsEntry gCreditsEntry_MakikoTakada[] = {11, 0, gCreditsText_MakikoTakada};
static const struct CreditsEntry gCreditsEntry_TakanaoKondo[] = {11, 0, gCreditsText_TakanaoKondo};
static const struct CreditsEntry gCreditsEntry_AiMashima[] = {11, 0, gCreditsText_AiMashima};
static const struct CreditsEntry gCreditsEntry_GakujiNomoto[] = {11, 0, gCreditsText_GakujiNomoto};
static const struct CreditsEntry gCreditsEntry_TakehiroIzushi[] = {11, 0, gCreditsText_TakehiroIzushi};
static const struct CreditsEntry gCreditsEntry_HitoshiYamagami[] = {11, 0, gCreditsText_HitoshiYamagami};
static const struct CreditsEntry gCreditsEntry_KyokoWatanabe[] = {11, 0, gCreditsText_KyokoWatanabe};
static const struct CreditsEntry gCreditsEntry_TakaoNakano[] = {11, 0, gCreditsText_TakaoNakano};
static const struct CreditsEntry gCreditsEntry_HiroyukiJinnai[] = {11, 0, gCreditsText_HiroyukiJinnai};
static const struct CreditsEntry gCreditsEntry_HiroakiTsuru[] = {11, 0, gCreditsText_HiroakiTsuru};
static const struct CreditsEntry gCreditsEntry_TsunekazIshihara[] = {11, 0, gCreditsText_TsunekazIshihara};
static const struct CreditsEntry gCreditsEntry_SatoruIwata[] = {11, 0, gCreditsText_SatoruIwata};
static const struct CreditsEntry gCreditsEntry_KazuyaSuyama[] = {11, 0, gCreditsText_KazuyaSuyama};
static const struct CreditsEntry gCreditsEntry_SatoshiMitsuhara[] = {11, 0, gCreditsText_SatoshiMitsuhara};
static const struct CreditsEntry gCreditsEntry_JapanBrailleLibrary[] = {9, 0, gCreditsText_JapanBrailleLibrary};
static const struct CreditsEntry gCreditsEntry_TomotakaKomura[] = {11, 0, gCreditsText_TomotakaKomura};
static const struct CreditsEntry gCreditsEntry_MikikoOhhashi[] = {11, 0, gCreditsText_MikikoOhhashi};
static const struct CreditsEntry gCreditsEntry_DaisukeHoshino[] = {11, 0, gCreditsText_DaisukeHoshino};
static const struct CreditsEntry gCreditsEntry_KenjiroIto[] = {11, 0, gCreditsText_KenjiroIto};
static const struct CreditsEntry gCreditsEntry_RuiKawaguchi[] = {11, 0, gCreditsText_RuiKawaguchi};
static const struct CreditsEntry gCreditsEntry_ShunsukeKohori[] = {11, 0, gCreditsText_ShunsukeKohori};
static const struct CreditsEntry gCreditsEntry_SachikoNakamichi[] = {11, 0, gCreditsText_SachikoNakamichi};
static const struct CreditsEntry gCreditsEntry_FujikoNomura[] = {11, 0, gCreditsText_FujikoNomura};
static const struct CreditsEntry gCreditsEntry_KazukiYoshihara[] = {11, 0, gCreditsText_KazukiYoshihara};
static const struct CreditsEntry gCreditsEntry_RetsujiNomoto[] = {11, 0, gCreditsText_RetsujiNomoto};
static const struct CreditsEntry gCreditsEntry_AzusaTajima[] = {11, 0, gCreditsText_AzusaTajima};
static const struct CreditsEntry gCreditsEntry_ShusakuEgami[] = {11, 0, gCreditsText_ShusakuEgami};
static const struct CreditsEntry gCreditsEntry_PackageAndManual[] = {0, 1, gCreditsText_PackageAndManual};
static const struct CreditsEntry gCreditsEntry_EnglishVersion[] = {0, 1, gCreditsText_EnglishVersion};
static const struct CreditsEntry gCreditsEntry_Translator[] = {0, 1, gCreditsText_Translator};
static const struct CreditsEntry gCreditsEntry_TextEditor[] = {0, 1, gCreditsText_TextEditor};
static const struct CreditsEntry gCreditsEntry_NCLCoordinator[] = {0, 1, gCreditsText_NCLCoordinator};
static const struct CreditsEntry gCreditsEntry_GraphicDesigner[] = {0, 1, gCreditsText_GraphicDesigner};
static const struct CreditsEntry gCreditsEntry_NOAProductTesting[] = {0, 1, gCreditsText_NOAProductTesting};
static const struct CreditsEntry gCreditsEntry_HideyukiNakajima[] = {0, 0, gCreditsText_HideyukiNakajima};
static const struct CreditsEntry gCreditsEntry_HidenoriSaeki[] = {0, 0, gCreditsText_HidenoriSaeki};
static const struct CreditsEntry gCreditsEntry_YokoWatanabe[] = {0, 0, gCreditsText_YokoWatanabe};
static const struct CreditsEntry gCreditsEntry_SakaeKimura[] = {0, 0, gCreditsText_SakaeKimura};
static const struct CreditsEntry gCreditsEntry_ChiakiShinkai[] = {0, 0, gCreditsText_ChiakiShinkai};
static const struct CreditsEntry gCreditsEntry_SethMcMahill[] = {0, 0, gCreditsText_SethMcMahill};
static const struct CreditsEntry gCreditsEntry_NobOgasawara[] = {0, 0, gCreditsText_NobOgasawara};
static const struct CreditsEntry gCreditsEntry_TeresaLillygren[] = {0, 0, gCreditsText_TeresaLillygren};
static const struct CreditsEntry gCreditsEntry_KimikoNakamichi[] = {0, 0, gCreditsText_KimikoNakamichi};
static const struct CreditsEntry gCreditsEntry_SouichiYamamoto[] = {0, 0, gCreditsText_SouichiYamamoto};
static const struct CreditsEntry gCreditsEntry_YuichiroIto[] = {0, 0, gCreditsText_YuichiroIto};
static const struct CreditsEntry gCreditsEntry_ThomasHertzog[] = {0, 0, gCreditsText_ThomasHertzog};
static const struct CreditsEntry gCreditsEntry_MikaKurosawa[] = {0, 0, gCreditsText_MikaKurosawa};
static const struct CreditsEntry gCreditsEntry_NationalFederationBlind[] = {0, 0, gCreditsText_NationalFederationBlind};
static const struct CreditsEntry gCreditsEntry_PatriciaAMaurer[] = {0, 0, gCreditsText_PatriciaAMaurer};
static const struct CreditsEntry gCreditsEntry_EuropeanBlindUnion[] = {0, 0, gCreditsText_EuropeanBlindUnion};
static const struct CreditsEntry gCreditsEntry_AustralianBrailleAuthority[] = {0, 0, gCreditsText_AustralianBrailleAuthority};
static const struct CreditsEntry gCreditsEntry_RoyalNewZealandFederationBlind[] = {0, 0, gCreditsText_RoyalNewZealandFederationBlind};
static const struct CreditsEntry gCreditsEntry_MotoyasuTojima[] = {0, 0, gCreditsText_MotoyasuTojima};
static const struct CreditsEntry gCreditsEntry_NicolaPrattBarlow[] = {0, 0, gCreditsText_NicolaPrattBarlow};
static const struct CreditsEntry gCreditsEntry_ShellieDow[] = {0, 0, gCreditsText_ShellieDow};
static const struct CreditsEntry gCreditsEntry_ErikJohnson[] = {0, 0, gCreditsText_ErikJohnson};
static const struct CreditsEntry gCreditsEntry_EmptyString[] = {0, FALSE, gCreditsText_EmptyString};
static const struct CreditsEntry gCreditsEntry_PkmnEmeraldVersion[] = {7, TRUE, gCreditsText_PkmnEmeraldVersion};
static const struct CreditsEntry gCreditsEntry_Credits[] = {11, TRUE, gCreditsText_Credits};
static const struct CreditsEntry gCreditsEntry_ExecutiveDirector[] = {8, TRUE, gCreditsText_ExecutiveDirector};
static const struct CreditsEntry gCreditsEntry_Director[] = {12, TRUE, gCreditsText_Director};
static const struct CreditsEntry gCreditsEntry_ArtDirector[] = {10, TRUE, gCreditsText_ArtDirector};
static const struct CreditsEntry gCreditsEntry_BattleDirector[] = {10, TRUE, gCreditsText_BattleDirector};
static const struct CreditsEntry gCreditsEntry_MainProgrammer[] = {10, TRUE, gCreditsText_MainProgrammer};
static const struct CreditsEntry gCreditsEntry_BattleSystemPgrms[] = {8, TRUE, gCreditsText_BattleSystemPgrms};
static const struct CreditsEntry gCreditsEntry_FieldSystemPgrms[] = {7, TRUE, gCreditsText_FieldSystemPgrms};
static const struct CreditsEntry gCreditsEntry_Programmers[] = {12, TRUE, gCreditsText_Programmers};
static const struct CreditsEntry gCreditsEntry_MainGraphicDesigner[] = {7, TRUE, gCreditsText_MainGraphicDesigner};
static const struct CreditsEntry gCreditsEntry_GraphicDesigners[] = {9, TRUE, gCreditsText_GraphicDesigners};
static const struct CreditsEntry gCreditsEntry_PkmnDesigners[] = {10, TRUE, gCreditsText_PkmnDesigners};
static const struct CreditsEntry gCreditsEntry_MusicComposition[] = {13, TRUE, gCreditsText_MusicComposition};
static const struct CreditsEntry gCreditsEntry_SoundEffectsAndPkmnVoices[] = {4, TRUE, gCreditsText_SoundEffectsAndPkmnVoices};
static const struct CreditsEntry gCreditsEntry_GameDesigners[] = {11, TRUE, gCreditsText_GameDesigners};
static const struct CreditsEntry gCreditsEntry_ScenarioPlot[] = {11, TRUE, gCreditsText_ScenarioPlot};
static const struct CreditsEntry gCreditsEntry_Scenario[] = {13, TRUE, gCreditsText_Scenario};
static const struct CreditsEntry gCreditsEntry_ScriptDesigners[] = {10, TRUE, gCreditsText_ScriptDesigners};
static const struct CreditsEntry gCreditsEntry_MapDesigners[] = {11, TRUE, gCreditsText_MapDesigners};
static const struct CreditsEntry gCreditsEntry_MapDataDesigners[] = {9, TRUE, gCreditsText_MapDataDesigners};
static const struct CreditsEntry gCreditsEntry_ParametricDesigners[] = {9, TRUE, gCreditsText_ParametricDesigners};
static const struct CreditsEntry gCreditsEntry_PokedexText[] = {11, TRUE, gCreditsText_PokedexText};
static const struct CreditsEntry gCreditsEntry_EnvAndToolPgrms[] = {6, TRUE, gCreditsText_EnvAndToolPgrms};
static const struct CreditsEntry gCreditsEntry_NCLProductTesting[] = {11, TRUE, gCreditsText_NCLProductTesting};
static const struct CreditsEntry gCreditsEntry_SpecialThanks[] = {10, TRUE, gCreditsText_SpecialThanks};
static const struct CreditsEntry gCreditsEntry_Coordinators[] = {11, TRUE, gCreditsText_Coordinators};
static const struct CreditsEntry gCreditsEntry_Producers[] = {11, TRUE, gCreditsText_Producers};
static const struct CreditsEntry gCreditsEntry_ExecProducers[] = {7, TRUE, gCreditsText_ExecProducers};
static const struct CreditsEntry gCreditsEntry_InfoSupervisors[] = {10, TRUE, gCreditsText_InfoSupervisors};
static const struct CreditsEntry gCreditsEntry_TaskManagers[] = {8, TRUE, gCreditsText_TaskManagers};
static const struct CreditsEntry gCreditsEntry_BrailleCodeCheck[] = {10, TRUE, gCreditsText_BrailleCodeCheck};
static const struct CreditsEntry gCreditsEntry_WorldDirector[] = {10, TRUE, gCreditsText_WorldDirector};
static const struct CreditsEntry gCreditsEntry_BattleFrontierData[] = {8, TRUE, gCreditsText_BattleFrontierData};
static const struct CreditsEntry gCreditsEntry_SupportProgrammers[] = {10, TRUE, gCreditsText_SupportProgrammers};
static const struct CreditsEntry gCreditsEntry_Artwork[] = {12, TRUE, gCreditsText_Artwork};
static const struct CreditsEntry gCreditsEntry_LeadProgrammer[] = {10, TRUE, gCreditsText_LeadProgrammer};
static const struct CreditsEntry gCreditsEntry_LeadGraphicArtist[] = {9, TRUE, gCreditsText_LeadGraphicArtist};
static const struct CreditsEntry gCreditsEntry_SatoshiTajiri[] = {11, FALSE, gCreditsText_SatoshiTajiri};
static const struct CreditsEntry gCreditsEntry_JunichiMasuda[] = {11, FALSE, gCreditsText_JunichiMasuda};
static const struct CreditsEntry gCreditsEntry_KenSugimori[] = {11, FALSE, gCreditsText_KenSugimori};
static const struct CreditsEntry gCreditsEntry_ShigekiMorimoto[] = {11, FALSE, gCreditsText_ShigekiMorimoto};
static const struct CreditsEntry gCreditsEntry_TetsuyaWatanabe[] = {11, FALSE, gCreditsText_TetsuyaWatanabe};
static const struct CreditsEntry gCreditsEntry_HisashiSogabe[] = {11, FALSE, gCreditsText_HisashiSogabe};
static const struct CreditsEntry gCreditsEntry_SosukeTamada[] = {11, FALSE, gCreditsText_SosukeTamada};
static const struct CreditsEntry gCreditsEntry_AkitoMori[] = {11, FALSE, gCreditsText_AkitoMori};
static const struct CreditsEntry gCreditsEntry_KeitaKagaya[] = {11, FALSE, gCreditsText_KeitaKagaya};
static const struct CreditsEntry gCreditsEntry_YoshinoriMatsuda[] = {11, FALSE, gCreditsText_YoshinoriMatsuda};
static const struct CreditsEntry gCreditsEntry_HiroyukiNakamura[] = {11, FALSE, gCreditsText_HiroyukiNakamura};
static const struct CreditsEntry gCreditsEntry_MasaoTaya[] = {11, FALSE, gCreditsText_MasaoTaya};
static const struct CreditsEntry gCreditsEntry_SatoshiNohara[] = {11, FALSE, gCreditsText_SatoshiNohara};
static const struct CreditsEntry gCreditsEntry_TomomichiOhta[] = {11, FALSE, gCreditsText_TomomichiOhta};
static const struct CreditsEntry gCreditsEntry_MiyukiIwasawa[] = {11, FALSE, gCreditsText_MiyukiIwasawa};
static const struct CreditsEntry gCreditsEntry_TakenoriOhta[] = {11, FALSE, gCreditsText_TakenoriOhta};
static const struct CreditsEntry gCreditsEntry_HironobuYoshida[] = {11, FALSE, gCreditsText_HironobuYoshida};
static const struct CreditsEntry gCreditsEntry_MotofumiFujiwara[] = {11, FALSE, gCreditsText_MotofumiFujiwara};
static const struct CreditsEntry gCreditsEntry_SatoshiOhta[] = {11, FALSE, gCreditsText_SatoshiOhta};
static const struct CreditsEntry gCreditsEntry_AsukaIwashita[] = {11, FALSE, gCreditsText_AsukaIwashita};
static const struct CreditsEntry gCreditsEntry_AimiTomita[] = {11, FALSE, gCreditsText_AimiTomita};
static const struct CreditsEntry gCreditsEntry_TakaoUnno[] = {11, FALSE, gCreditsText_TakaoUnno};
static const struct CreditsEntry gCreditsEntry_KanakoEo[] = {11, FALSE, gCreditsText_KanakoEo};
static const struct CreditsEntry gCreditsEntry_JunOkutani[] = {11, FALSE, gCreditsText_JunOkutani};
static const struct CreditsEntry gCreditsEntry_AtsukoNishida[] = {11, FALSE, gCreditsText_AtsukoNishida};
static const struct CreditsEntry gCreditsEntry_MuneoSaito[] = {11, FALSE, gCreditsText_MuneoSaito};
static const struct CreditsEntry gCreditsEntry_RenaYoshikawa[] = {11, FALSE, gCreditsText_RenaYoshikawa};
static const struct CreditsEntry gCreditsEntry_GoIchinose[] = {11, FALSE, gCreditsText_GoIchinose};
static const struct CreditsEntry gCreditsEntry_MorikazuAoki[] = {11, FALSE, gCreditsText_MorikazuAoki};
static const struct CreditsEntry gCreditsEntry_KojiNishino[] = {11, FALSE, gCreditsText_KojiNishino};
static const struct CreditsEntry gCreditsEntry_KenjiMatsushima[] = {11, FALSE, gCreditsText_KenjiMatsushima};
static const struct CreditsEntry gCreditsEntry_TetsujiOhta[] = {11, FALSE, gCreditsText_TetsujiOhta};
static const struct CreditsEntry gCreditsEntry_HitomiSato[] = {11, FALSE, gCreditsText_HitomiSato};
static const struct CreditsEntry gCreditsEntry_TakeshiKawachimaru[] = {11, FALSE, gCreditsText_TakeshiKawachimaru};
static const struct CreditsEntry gCreditsEntry_TeruyukiShimoyamada[] = {11, FALSE, gCreditsText_TeruyukiShimoyamada};
static const struct CreditsEntry gCreditsEntry_ShigeruOhmori[] = {11, FALSE, gCreditsText_ShigeruOhmori};
static const struct CreditsEntry gCreditsEntry_TadashiTakahashi[] = {11, FALSE, gCreditsText_TadashiTakahashi};
static const struct CreditsEntry gCreditsEntry_ToshinobuMatsumiya[] = {11, FALSE, gCreditsText_ToshinobuMatsumiya};
static const struct CreditsEntry gCreditsEntry_AkihitoTomisawa[] = {11, FALSE, gCreditsText_AkihitoTomisawa};
static const struct CreditsEntry gCreditsEntry_HirokiEnomoto[] = {11, FALSE, gCreditsText_HirokiEnomoto};
static const struct CreditsEntry gCreditsEntry_KazuyukiTerada[] = {11, FALSE, gCreditsText_KazuyukiTerada};
static const struct CreditsEntry gCreditsEntry_YuriSakurai[] = {11, FALSE, gCreditsText_YuriSakurai};
static const struct CreditsEntry gCreditsEntry_HiromiSagawa[] = {11, FALSE, gCreditsText_HiromiSagawa};
static const struct CreditsEntry gCreditsEntry_KenjiTominaga[] = {11, FALSE, gCreditsText_KenjiTominaga};
static const struct CreditsEntry gCreditsEntry_YoshioTajiri[] = {11, FALSE, gCreditsText_YoshioTajiri};
static const struct CreditsEntry gCreditsEntry_TeikoSasaki[] = {11, FALSE, gCreditsText_TeikoSasaki};
static const struct CreditsEntry gCreditsEntry_SachikoHamano[] = {11, FALSE, gCreditsText_SachikoHamano};
static const struct CreditsEntry gCreditsEntry_ChieMatsumiya[] = {11, FALSE, gCreditsText_ChieMatsumiya};
static const struct CreditsEntry gCreditsEntry_AkikoShinozaki[] = {11, FALSE, gCreditsText_AkikoShinozaki};
static const struct CreditsEntry gCreditsEntry_AstukoFujii[] = {11, FALSE, gCreditsText_AstukoFujii};
static const struct CreditsEntry gCreditsEntry_NozomuSaito[] = {11, FALSE, gCreditsText_NozomuSaito};
static const struct CreditsEntry gCreditsEntry_KenkichiToyama[] = {11, FALSE, gCreditsText_KenkichiToyama};
static const struct CreditsEntry gCreditsEntry_SuguruNakatsui[] = {11, FALSE, gCreditsText_SuguruNakatsui};
static const struct CreditsEntry gCreditsEntry_YumiFunasaka[] = {11, FALSE, gCreditsText_YumiFunasaka};
static const struct CreditsEntry gCreditsEntry_NaokoYanase[] = {11, FALSE, gCreditsText_NaokoYanase};
static const struct CreditsEntry gCreditsEntry_NCLSuperMarioClub[] = {11, FALSE, gCreditsText_NCLSuperMarioClub};
static const struct CreditsEntry gCreditsEntry_AtsushiTada[] = {11, FALSE, gCreditsText_AtsushiTada};
static const struct CreditsEntry gCreditsEntry_TakahiroOhnishi[] = {11, FALSE, gCreditsText_TakahiroOhnishi};
static const struct CreditsEntry gCreditsEntry_NorihideOkamura[] = {11, FALSE, gCreditsText_NorihideOkamura};
static const struct CreditsEntry gCreditsEntry_HiroNakamura[] = {11, FALSE, gCreditsText_HiroNakamura};
static const struct CreditsEntry gCreditsEntry_HiroyukiUesugi[] = {11, FALSE, gCreditsText_HiroyukiUesugi};
static const struct CreditsEntry gCreditsEntry_TerukiMurakawa[] = {11, FALSE, gCreditsText_TerukiMurakawa};
static const struct CreditsEntry gCreditsEntry_AkiraKinashi[] = {11, FALSE, gCreditsText_AkiraKinashi};
static const struct CreditsEntry gCreditsEntry_MichikoTakizawa[] = {11, FALSE, gCreditsText_MichikoTakizawa};
static const struct CreditsEntry gCreditsEntry_MakikoTakada[] = {11, FALSE, gCreditsText_MakikoTakada};
static const struct CreditsEntry gCreditsEntry_TakanaoKondo[] = {11, FALSE, gCreditsText_TakanaoKondo};
static const struct CreditsEntry gCreditsEntry_AiMashima[] = {11, FALSE, gCreditsText_AiMashima};
static const struct CreditsEntry gCreditsEntry_GakujiNomoto[] = {11, FALSE, gCreditsText_GakujiNomoto};
static const struct CreditsEntry gCreditsEntry_TakehiroIzushi[] = {11, FALSE, gCreditsText_TakehiroIzushi};
static const struct CreditsEntry gCreditsEntry_HitoshiYamagami[] = {11, FALSE, gCreditsText_HitoshiYamagami};
static const struct CreditsEntry gCreditsEntry_KyokoWatanabe[] = {11, FALSE, gCreditsText_KyokoWatanabe};
static const struct CreditsEntry gCreditsEntry_TakaoNakano[] = {11, FALSE, gCreditsText_TakaoNakano};
static const struct CreditsEntry gCreditsEntry_HiroyukiJinnai[] = {11, FALSE, gCreditsText_HiroyukiJinnai};
static const struct CreditsEntry gCreditsEntry_HiroakiTsuru[] = {11, FALSE, gCreditsText_HiroakiTsuru};
static const struct CreditsEntry gCreditsEntry_TsunekazIshihara[] = {11, FALSE, gCreditsText_TsunekazIshihara};
static const struct CreditsEntry gCreditsEntry_SatoruIwata[] = {11, FALSE, gCreditsText_SatoruIwata};
static const struct CreditsEntry gCreditsEntry_KazuyaSuyama[] = {11, FALSE, gCreditsText_KazuyaSuyama};
static const struct CreditsEntry gCreditsEntry_SatoshiMitsuhara[] = {11, FALSE, gCreditsText_SatoshiMitsuhara};
static const struct CreditsEntry gCreditsEntry_JapanBrailleLibrary[] = {9, FALSE, gCreditsText_JapanBrailleLibrary};
static const struct CreditsEntry gCreditsEntry_TomotakaKomura[] = {11, FALSE, gCreditsText_TomotakaKomura};
static const struct CreditsEntry gCreditsEntry_MikikoOhhashi[] = {11, FALSE, gCreditsText_MikikoOhhashi};
static const struct CreditsEntry gCreditsEntry_DaisukeHoshino[] = {11, FALSE, gCreditsText_DaisukeHoshino};
static const struct CreditsEntry gCreditsEntry_KenjiroIto[] = {11, FALSE, gCreditsText_KenjiroIto};
static const struct CreditsEntry gCreditsEntry_RuiKawaguchi[] = {11, FALSE, gCreditsText_RuiKawaguchi};
static const struct CreditsEntry gCreditsEntry_ShunsukeKohori[] = {11, FALSE, gCreditsText_ShunsukeKohori};
static const struct CreditsEntry gCreditsEntry_SachikoNakamichi[] = {11, FALSE, gCreditsText_SachikoNakamichi};
static const struct CreditsEntry gCreditsEntry_FujikoNomura[] = {11, FALSE, gCreditsText_FujikoNomura};
static const struct CreditsEntry gCreditsEntry_KazukiYoshihara[] = {11, FALSE, gCreditsText_KazukiYoshihara};
static const struct CreditsEntry gCreditsEntry_RetsujiNomoto[] = {11, FALSE, gCreditsText_RetsujiNomoto};
static const struct CreditsEntry gCreditsEntry_AzusaTajima[] = {11, FALSE, gCreditsText_AzusaTajima};
static const struct CreditsEntry gCreditsEntry_ShusakuEgami[] = {11, FALSE, gCreditsText_ShusakuEgami};
static const struct CreditsEntry gCreditsEntry_PackageAndManual[] = {0, TRUE, gCreditsText_PackageAndManual};
static const struct CreditsEntry gCreditsEntry_EnglishVersion[] = {0, TRUE, gCreditsText_EnglishVersion};
static const struct CreditsEntry gCreditsEntry_Translator[] = {0, TRUE, gCreditsText_Translator};
static const struct CreditsEntry gCreditsEntry_TextEditor[] = {0, TRUE, gCreditsText_TextEditor};
static const struct CreditsEntry gCreditsEntry_NCLCoordinator[] = {0, TRUE, gCreditsText_NCLCoordinator};
static const struct CreditsEntry gCreditsEntry_GraphicDesigner[] = {0, TRUE, gCreditsText_GraphicDesigner};
static const struct CreditsEntry gCreditsEntry_NOAProductTesting[] = {0, TRUE, gCreditsText_NOAProductTesting};
static const struct CreditsEntry gCreditsEntry_HideyukiNakajima[] = {0, FALSE, gCreditsText_HideyukiNakajima};
static const struct CreditsEntry gCreditsEntry_HidenoriSaeki[] = {0, FALSE, gCreditsText_HidenoriSaeki};
static const struct CreditsEntry gCreditsEntry_YokoWatanabe[] = {0, FALSE, gCreditsText_YokoWatanabe};
static const struct CreditsEntry gCreditsEntry_SakaeKimura[] = {0, FALSE, gCreditsText_SakaeKimura};
static const struct CreditsEntry gCreditsEntry_ChiakiShinkai[] = {0, FALSE, gCreditsText_ChiakiShinkai};
static const struct CreditsEntry gCreditsEntry_SethMcMahill[] = {0, FALSE, gCreditsText_SethMcMahill};
static const struct CreditsEntry gCreditsEntry_NobOgasawara[] = {0, FALSE, gCreditsText_NobOgasawara};
static const struct CreditsEntry gCreditsEntry_TeresaLillygren[] = {0, FALSE, gCreditsText_TeresaLillygren};
static const struct CreditsEntry gCreditsEntry_KimikoNakamichi[] = {0, FALSE, gCreditsText_KimikoNakamichi};
static const struct CreditsEntry gCreditsEntry_SouichiYamamoto[] = {0, FALSE, gCreditsText_SouichiYamamoto};
static const struct CreditsEntry gCreditsEntry_YuichiroIto[] = {0, FALSE, gCreditsText_YuichiroIto};
static const struct CreditsEntry gCreditsEntry_ThomasHertzog[] = {0, FALSE, gCreditsText_ThomasHertzog};
static const struct CreditsEntry gCreditsEntry_MikaKurosawa[] = {0, FALSE, gCreditsText_MikaKurosawa};
static const struct CreditsEntry gCreditsEntry_NationalFederationBlind[] = {0, FALSE, gCreditsText_NationalFederationBlind};
static const struct CreditsEntry gCreditsEntry_PatriciaAMaurer[] = {0, FALSE, gCreditsText_PatriciaAMaurer};
static const struct CreditsEntry gCreditsEntry_EuropeanBlindUnion[] = {0, FALSE, gCreditsText_EuropeanBlindUnion};
static const struct CreditsEntry gCreditsEntry_AustralianBrailleAuthority[] = {0, FALSE, gCreditsText_AustralianBrailleAuthority};
static const struct CreditsEntry gCreditsEntry_RoyalNewZealandFederationBlind[] = {0, FALSE, gCreditsText_RoyalNewZealandFederationBlind};
static const struct CreditsEntry gCreditsEntry_MotoyasuTojima[] = {0, FALSE, gCreditsText_MotoyasuTojima};
static const struct CreditsEntry gCreditsEntry_NicolaPrattBarlow[] = {0, FALSE, gCreditsText_NicolaPrattBarlow};
static const struct CreditsEntry gCreditsEntry_ShellieDow[] = {0, FALSE, gCreditsText_ShellieDow};
static const struct CreditsEntry gCreditsEntry_ErikJohnson[] = {0, FALSE, gCreditsText_ErikJohnson};
#define _ gCreditsEntry_EmptyString
static const struct CreditsEntry *const gCreditsEntryPointerTable[][5] =
@@ -934,7 +934,7 @@ static const struct CreditsEntry *const gCreditsEntryPointerTable[][5] =
};
#undef _
static const struct BgTemplate gUnknown_085E6F68[] =
static const struct BgTemplate sBackgroundTemplates[] =
{
{
.bg = 0,
@@ -946,7 +946,7 @@ static const struct BgTemplate gUnknown_085E6F68[] =
.baseTile = 0
},
};
static const struct WindowTemplate gUnknown_085E6F6C[] =
static const struct WindowTemplate sWindowTemplates[] =
{
{
.bg = 0,
@@ -1102,51 +1102,51 @@ static const struct SpriteTemplate gUnknown_085E7068 =
.callback = sub_81772B8,
};
static void sub_8175744(u8 taskIdA);
static void sub_8175774(u8 taskIdA);
static void Task_WaitPaletteFade(u8 taskIdA);
static void Task_ProgressCreditTasks(u8 taskIdA);
static void sub_8175808(u8 taskIdA);
static void c2_080C9BFC(u8 taskIdA);
static void sub_81758E4(u8 taskIdA);
static void Task_CreditsLoadGrassScene(u8 taskIdA);
static void sub_81758A4(u8 taskIdA);
static void sub_8175A9C(u8 taskIdA);
static void sub_8175AE4(u8 taskIdA);
static void sub_8175B1C(u8 taskIdA);
static void sub_8175B90(u8 taskIdA);
static void sub_8175BD8(u8 taskIdA);
static void sub_8175C34(u8 taskIdA);
static void sub_8175CC8(u8 taskIdA);
static void sub_8175CE4(void);
static void Task_CreditsTheEnd1(u8 taskIdA);
static void Task_CreditsTheEnd2(u8 taskIdA);
static void Task_CreditsTheEnd3(u8 taskIdA);
static void Task_CreditsTheEnd4(u8 taskIdA);
static void Task_CreditsTheEnd5(u8 taskIdA);
static void Task_CreditsTheEnd6(u8 taskIdA);
static void Task_CreditsSoftReset(u8 taskIdA);
static void ResetGpuAndVram(void);
static void sub_8175DA0(u8 taskIdB);
static u8 sub_817603C(u8 page, u8 taskIdA);
static u8 CheckChangeScene(u8 page, u8 taskIdA);
static void sub_81760FC(u8 taskIdA);
static void sub_817651C(u8 taskIdA);
static void sub_817624C(u8 taskIdA);
static bool8 sub_8176AB0(u8 data, u8 taskIdA);
static void sub_8176CA0(u8 taskIdA);
static void sub_8176D1C(u16, u16, u16);
static void ResetCreditsTasks(u8 taskIdA);
static void LoadTheEndScreen(u16, u16, u16);
static void sub_8176E40(u16 arg0, u16 palette);
static void sub_8176EE8(struct Sprite *sprite);
static void sub_8176F90(struct Sprite *sprite);
static u8 sub_8177224(u16 species, s16 x, s16 y, u16 position);
static void sub_8177388(void);
static void sub_81754C8(void)
static void CreditsVBlankCallback(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
}
static void sub_81754DC(void)
static void CB2_RunCreditsSequence(void)
{
RunTasks();
AnimateSprites();
if ((gMain.heldKeys & B_BUTTON)
&& gHasHallOfFameRecords != 0
&& gTasks[gUnknown_0203BCE2].func == sub_8175774)
&& gTasks[gUnknown_0203BCE2].func == Task_ProgressCreditTasks)
{
sub_81754C8();
CreditsVBlankCallback();
RunTasks();
AnimateSprites();
gUnknown_0203BCE5 = 1;
@@ -1158,10 +1158,10 @@ static void sub_81754DC(void)
static void sub_8175548(void)
{
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gUnknown_085E6F68, 1);
InitBgsFromTemplates(0, sBackgroundTemplates, 1);
SetBgTilemapBuffer(0, AllocZeroed(0x800));
LoadPalette(gUnknown_085E56F0, 0x80, 0x40);
InitWindows(gUnknown_085E6F6C);
InitWindows(sWindowTemplates);
DeactivateAllTextPrinters();
PutWindowTilemap(0);
CopyWindowToVram(0, 3);
@@ -1177,14 +1177,14 @@ static void sub_81755A4(void)
Free(ptr);
}
static void sub_81755BC(const u8 *string, u8 y, u8 a2)
static void PrintCreditsText(const u8 *string, u8 y, bool8 isTitle)
{
u8 x;
u8 color[3];
color[0] = 0;
if (a2 == 1)
if (isTitle == TRUE)
{
color[1] = 3;
color[2] = 4;
@@ -1199,20 +1199,20 @@ static void sub_81755BC(const u8 *string, u8 y, u8 a2)
AddTextPrinterParameterized4(0, 1, x, y, 1, 0, color, -1, string);
}
void sub_8175620(void)
void CB2_StartCreditsSequence(void)
{
u8 taskIdA;
s16 taskIdC;
u8 taskIdB;
sub_8175CE4();
ResetGpuAndVram();
SetVBlankCallback(NULL);
InitHeap(gHeap, HEAP_SIZE);
ResetPaletteFade();
ResetTasks();
sub_8175548();
taskIdA = CreateTask(sub_8175744, 0);
taskIdA = CreateTask(Task_WaitPaletteFade, 0);
gTasks[taskIdA].data[TDA_4] = 0;
gTasks[taskIdA].data[TDA_7] = 0;
@@ -1237,9 +1237,9 @@ void sub_8175620(void)
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
EnableInterrupts(INTR_FLAG_VBLANK);
SetVBlankCallback(sub_81754C8);
SetVBlankCallback(CreditsVBlankCallback);
m4aSongNumStart(MUS_THANKFOR);
SetMainCallback2(sub_81754DC);
SetMainCallback2(CB2_RunCreditsSequence);
gUnknown_0203BCE5 = 0;
gUnknown_0203BCE8 = AllocZeroed(sizeof(struct Unk201C000));
@@ -1252,13 +1252,13 @@ void sub_8175620(void)
gUnknown_0203BCE2 = taskIdA;
}
static void sub_8175744(u8 taskIdA)
static void Task_WaitPaletteFade(u8 taskIdA)
{
if (!gPaletteFade.active)
gTasks[taskIdA].func = sub_8175774;
gTasks[taskIdA].func = Task_ProgressCreditTasks;
}
static void sub_8175774(u8 taskIdA)
static void Task_ProgressCreditTasks(u8 taskIdA)
{
u16 data1;
@@ -1270,7 +1270,7 @@ static void sub_8175774(u8 taskIdA)
gTasks[taskIdC].data[TDC_0] = 30;
gTasks[taskIdA].data[TDA_12] = 0x100;
gTasks[taskIdA].func = sub_8175A9C;
gTasks[taskIdA].func = Task_CreditsTheEnd1;
return;
}
@@ -1298,7 +1298,7 @@ static void sub_8175808(u8 taskIdA)
if (!gPaletteFade.active)
{
SetGpuReg(REG_OFFSET_DISPCNT, 0);
sub_8176CA0(taskIdA);
ResetCreditsTasks(taskIdA);
gTasks[taskIdA].func = c2_080C9BFC;
}
}
@@ -1313,8 +1313,8 @@ static void c2_080C9BFC(u8 taskIdA)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
EnableInterrupts(INTR_FLAG_VBLANK);
SetVBlankCallback(sub_81754C8);
gTasks[taskIdA].func = sub_8175744;
SetVBlankCallback(CreditsVBlankCallback);
gTasks[taskIdA].func = Task_WaitPaletteFade;
}
}
@@ -1323,12 +1323,12 @@ static void sub_81758A4(u8 taskIdA)
if (!gPaletteFade.active)
{
SetGpuReg(REG_OFFSET_DISPCNT, 0);
sub_8176CA0(taskIdA);
gTasks[taskIdA].func = sub_81758E4;
ResetCreditsTasks(taskIdA);
gTasks[taskIdA].func = Task_CreditsLoadGrassScene;
}
}
static void sub_81758E4(u8 taskIdA)
static void Task_CreditsLoadGrassScene(u8 taskIdA)
{
switch (gMain.state)
{
@@ -1387,12 +1387,12 @@ static void sub_81758E4(u8 taskIdA)
gMain.state = 0;
gUnknown_0203BD28 = 0;
gTasks[taskIdA].func = sub_8175744;
gTasks[taskIdA].func = Task_WaitPaletteFade;
break;
}
}
static void sub_8175A9C(u8 taskIdA)
static void Task_CreditsTheEnd1(u8 taskIdA)
{
if (gTasks[taskIdA].data[TDA_12])
{
@@ -1401,23 +1401,23 @@ static void sub_8175A9C(u8 taskIdA)
}
BeginNormalPaletteFade(0xFFFFFFFF, 12, 0, 16, RGB_BLACK);
gTasks[taskIdA].func = sub_8175AE4;
gTasks[taskIdA].func = Task_CreditsTheEnd2;
}
static void sub_8175AE4(u8 taskIdA)
static void Task_CreditsTheEnd2(u8 taskIdA)
{
if (!gPaletteFade.active)
{
sub_8176CA0(taskIdA);
gTasks[taskIdA].func = sub_8175B1C;
ResetCreditsTasks(taskIdA);
gTasks[taskIdA].func = Task_CreditsTheEnd3;
}
}
static void sub_8175B1C(u8 taskIdA)
static void Task_CreditsTheEnd3(u8 taskIdA)
{
sub_8175CE4();
ResetGpuAndVram();
ResetPaletteFade();
sub_8176D1C(0, 0x3800, 0);
LoadTheEndScreen(0, 0x3800, 0);
ResetSpriteData();
FreeAllSpritePalettes();
BeginNormalPaletteFade(0xFFFFFFFF, 8, 16, 0, RGB_BLACK);
@@ -1432,11 +1432,11 @@ static void sub_8175B1C(u8 taskIdA)
| DISPCNT_OBJ_1D_MAP
| DISPCNT_BG0_ON);
gTasks[taskIdA].data[TDA_0] = 0xEB;
gTasks[taskIdA].func = sub_8175B90;
gTasks[taskIdA].data[TDA_0] = 235; //set this to 215 to actually show "THE END" in time to the last song beat
gTasks[taskIdA].func = Task_CreditsTheEnd4;
}
static void sub_8175B90(u8 taskIdA)
static void Task_CreditsTheEnd4(u8 taskIdA)
{
if (gTasks[taskIdA].data[TDA_0])
{
@@ -1445,10 +1445,10 @@ static void sub_8175B90(u8 taskIdA)
}
BeginNormalPaletteFade(0xFFFFFFFF, 6, 0, 16, RGB_BLACK);
gTasks[taskIdA].func = sub_8175BD8;
gTasks[taskIdA].func = Task_CreditsTheEnd5;
}
static void sub_8175BD8(u8 taskIdA)
static void Task_CreditsTheEnd5(u8 taskIdA)
{
if (!gPaletteFade.active)
{
@@ -1456,11 +1456,11 @@ static void sub_8175BD8(u8 taskIdA)
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0, RGB_BLACK);
gTasks[taskIdA].data[TDA_0] = 7200;
gTasks[taskIdA].func = sub_8175C34;
gTasks[taskIdA].func = Task_CreditsTheEnd6;
}
}
static void sub_8175C34(u8 taskIdA)
static void Task_CreditsTheEnd6(u8 taskIdA)
{
if (!gPaletteFade.active)
{
@@ -1468,7 +1468,7 @@ static void sub_8175C34(u8 taskIdA)
{
FadeOutBGM(4);
BeginNormalPaletteFade(0xFFFFFFFF, 8, 0, 16, RGB_WHITEALPHA);
gTasks[taskIdA].func = sub_8175CC8;
gTasks[taskIdA].func = Task_CreditsSoftReset;
return;
}
@@ -1482,13 +1482,13 @@ static void sub_8175C34(u8 taskIdA)
}
}
static void sub_8175CC8(u8 taskIdA)
static void Task_CreditsSoftReset(u8 taskIdA)
{
if (!gPaletteFade.active)
SoftReset(0xFF);
}
static void sub_8175CE4(void)
static void ResetGpuAndVram(void)
{
SetGpuReg(REG_OFFSET_DISPCNT, 0);
@@ -1539,12 +1539,15 @@ static void sub_8175DA0(u8 taskIdB)
gTasks[taskIdB].data[TDB_0] += 1;
return;
case 2:
if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].func == sub_8175774)
if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].func == Task_ProgressCreditTasks)
{
if (gTasks[taskIdB].data[TDB_CURRENT_PAGE] < PAGE_COUNT)
{
for (i = 0; i < 5; i++)
sub_81755BC(gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->text, 5 + i * 16, gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->var_1);
PrintCreditsText(
gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->text,
5 + i * 16,
gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->isTitle);
CopyWindowToVram(0, 2);
@@ -1578,7 +1581,7 @@ static void sub_8175DA0(u8 taskIdB)
return;
}
if (sub_817603C((u8)gTasks[taskIdB].data[TDB_CURRENT_PAGE], (u8)gTasks[taskIdB].data[TDB_TASK_A_ID]))
if (CheckChangeScene((u8)gTasks[taskIdB].data[TDB_CURRENT_PAGE], (u8)gTasks[taskIdB].data[TDB_TASK_A_ID]))
{
gTasks[taskIdB].data[TDB_0] += 1;
return;
@@ -1606,7 +1609,7 @@ static void sub_8175DA0(u8 taskIdB)
}
}
static u8 sub_817603C(u8 page, u8 taskIdA)
static u8 CheckChangeScene(u8 page, u8 taskIdA)
{
// Starts with bike + ocean + morning
@@ -1685,7 +1688,7 @@ static void sub_81760FC(u8 taskIdD)
gTasks[taskIdD].data[TDD_STATE]++;
break;
case 2:
if (gUnknown_0203BCE8->unk8E == 71 || gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != sub_8175774)
if (gUnknown_0203BCE8->unk8E == 71 || gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != Task_ProgressCreditTasks)
break;
r2 = sub_8177224(gUnknown_0203BCE8->unk0[gUnknown_0203BCE8->unk92], gUnknown_085E6F7C[gUnknown_0203BCE8->unk90][0], gUnknown_085E6F7C[gUnknown_0203BCE8->unk90][1], gUnknown_0203BCE8->unk90);
if (gUnknown_0203BCE8->unk92 < gUnknown_0203BCE8->unk94 - 1)
@@ -2006,7 +2009,7 @@ static bool8 sub_8176AB0(u8 data, u8 taskIdA)
return FALSE;
}
static void sub_8176CA0(u8 taskIdA)
static void ResetCreditsTasks(u8 taskIdA)
{
if (gTasks[taskIdA].data[TDA_0] != 0)
{
@@ -2035,7 +2038,7 @@ static void sub_8176CA0(u8 taskIdA)
gUnknown_0203BD28 = 1;
}
static void sub_8176D1C(u16 arg0, u16 arg1, u16 arg2)
static void LoadTheEndScreen(u16 arg0, u16 arg1, u16 arg2)
{
u16 baseTile;
u16 i;
@@ -2084,12 +2087,12 @@ static void sub_8176E40(u16 arg0, u16 palette)
for (pos = 0; pos < 32 * 32; pos++)
((u16 *) (VRAM + arg0))[pos] = baseTile + 1;
sub_8176DBC(gUnknown_085E5BAC, 3, 7, arg0, palette);
sub_8176DBC(gUnknown_085E5BBB, 7, 7, arg0, palette);
sub_8176DBC(gUnknown_085E5BCA, 11, 7, arg0, palette);
sub_8176DBC(gUnknown_085E5BCA, 16, 7, arg0, palette);
sub_8176DBC(gUnknown_085E5BD9, 20, 7, arg0, palette);
sub_8176DBC(gUnknown_085E5BE8, 24, 7, arg0, palette);
sub_8176DBC(sTheEnd_LetterTMap, 3, 7, arg0, palette);
sub_8176DBC(sTheEnd_LetterHMap, 7, 7, arg0, palette);
sub_8176DBC(sTheEnd_LetterEMap, 11, 7, arg0, palette);
sub_8176DBC(sTheEnd_LetterEMap, 16, 7, arg0, palette);
sub_8176DBC(sTheEnd_LetterNMap, 20, 7, arg0, palette);
sub_8176DBC(sTheEnd_LetterDMap, 24, 7, arg0, palette);
}
static void sub_8176EE8(struct Sprite *sprite)
+199
View File
@@ -0,0 +1,199 @@
.include "constants/gba_constants.inc"
.syntax unified
.global Start
.text
.arm
Start: @ 8000000
b Init
.include "asm/rom_header.inc"
@ 80000C0
.word 0
.global GPIOPortData
GPIOPortData: @ 80000C4
.2byte 0
.global GPIOPortDirection
GPIOPortDirection: @ 80000C6
.2byte 0
.global GPIOPortReadEnable
GPIOPortReadEnable: @ 80000C8
.2byte 0
@ 80000CA
.2byte 0
@ 80000CC
.space 0x34
.4byte 3
.4byte 2
.ascii "pokemon emerald version"
.space 9
.4byte gMonFrontPicTable
.4byte gMonBackPicTable
.4byte gMonPaletteTable
.4byte gMonShinyPaletteTable
.4byte gMonIconTable
.4byte gMonIconPaletteIndices
.4byte gMonIconPaletteTable
.4byte gSpeciesNames
.4byte gMoveNames
.4byte gDecorations
.4byte 0x00001270, 0x0000139c, 0x00000018, 0x00000988
.4byte 0x00003b24, 0x00000046, 0x000008e4, 0x000008ac
.4byte 0x00000182
.byte 0x07, 0x0a, 0x0a, 0x0a, 0x0c, 0x0c, 0x06, 0x0c
.byte 0x06, 0x10, 0x12, 0x0c, 0x0f, 0x0b, 0x01, 0x08
.4byte 0x0000000c, 0x00000f2c, 0x00003d88, 0x00000234
.4byte 0x00000238, 0x00000009, 0x0000000a, 0x00000000
.4byte 0x00000008, 0x00000ca8, 0x00000ca8, 0x000031c7
.4byte 0x000031b3, 0x00000000
.4byte gBaseStats
.4byte gAbilityNames
.4byte gAbilityDescriptionPointers
.4byte gItems
.4byte gBattleMoves
.4byte gBallSpriteSheets
.4byte gBallSpritePalettes
.4byte 0x000000a8, 0x00000864, 0x0000089b
.byte 0x1e, 0x1e, 0x10, 0x40
.4byte 0x0000322e, 0x00000498, 0x000031a8, 0x000031f8
.4byte 0x00000034, 0x00000000, 0x00000000
.arm
.align 2, 0
.global Init
Init: @ 8000204
mov r0, PSR_IRQ_MODE
msr cpsr_cf, r0
ldr sp, sp_irq
mov r0, PSR_SYS_MODE
msr cpsr_cf, r0
ldr sp, sp_sys
ldr r1, =INTR_VECTOR
adr r0, IntrMain
str r0, [r1]
ldr r1, =AgbMain + 1
mov lr, pc
bx r1
b Init
.align 2, 0
sp_sys: .word IWRAM_END - 0x1c0
sp_irq: .word IWRAM_END - 0x60
.pool
.arm
.align 2, 0
.global IntrMain
IntrMain: @ 8000248
mov r3, REG_BASE
add r3, r3, 0x200
ldr r2, [r3, OFFSET_REG_IE - 0x200]
ldrh r1, [r3, OFFSET_REG_IME - 0x200]
mrs r0, spsr
stmdb sp!, {r0-r3,lr}
mov r0, 0
strh r0, [r3, OFFSET_REG_IME - 0x200]
and r1, r2, r2, lsr 16
mov r12, 0
ands r0, r1, INTR_FLAG_VCOUNT
bne IntrMain_FoundIntr
add r12, r12, 0x4
mov r0, 0x1
strh r0, [r3, OFFSET_REG_IME - 0x200]
ands r0, r1, INTR_FLAG_SERIAL
bne IntrMain_FoundIntr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_TIMER3
bne IntrMain_FoundIntr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_HBLANK
bne IntrMain_FoundIntr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_VBLANK
bne IntrMain_FoundIntr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_TIMER0
bne IntrMain_FoundIntr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_TIMER1
bne IntrMain_FoundIntr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_TIMER2
bne IntrMain_FoundIntr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_DMA0
bne IntrMain_FoundIntr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_DMA1
bne IntrMain_FoundIntr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_DMA2
bne IntrMain_FoundIntr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_DMA3
bne IntrMain_FoundIntr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_KEYPAD
bne IntrMain_FoundIntr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_GAMEPAK
strbne r0, [r3, OFFSET_REG_SOUNDCNT_X - 0x200]
bne . @ spin
IntrMain_FoundIntr:
strh r0, [r3, OFFSET_REG_IF - 0x200]
bic r2, r2, r0
ldr r0, =gRfuState
ldr r0, [r0]
ldrb r0, [r0, 0xA]
mov r1, 0x8
mov r0, r1, lsl r0
orr r0, r0, INTR_FLAG_GAMEPAK
orr r1, r0, INTR_FLAG_SERIAL | INTR_FLAG_TIMER3 | INTR_FLAG_VCOUNT | INTR_FLAG_HBLANK
and r1, r1, r2
strh r1, [r3, OFFSET_REG_IE - 0x200]
mrs r3, cpsr
bic r3, r3, PSR_I_BIT | PSR_F_BIT | PSR_MODE_MASK
orr r3, r3, PSR_SYS_MODE
msr cpsr_cf, r3
ldr r1, =gIntrTable
add r1, r1, r12
ldr r0, [r1]
stmdb sp!, {lr}
adr lr, IntrMain_RetAddr
bx r0
IntrMain_RetAddr:
ldmia sp!, {lr}
mrs r3, cpsr
bic r3, r3, PSR_I_BIT | PSR_F_BIT | PSR_MODE_MASK
orr r3, r3, PSR_I_BIT | PSR_IRQ_MODE
msr cpsr_cf, r3
ldmia sp!, {r0-r3,lr}
strh r2, [r3, OFFSET_REG_IE - 0x200]
strh r1, [r3, OFFSET_REG_IME - 0x200]
msr spsr_cf, r0
bx lr
.pool
.align 2, 0 @ Don't pad with nop.
@@ -0,0 +1,99 @@
static const u16 sFrontierExchangeCorner_Decor1[] =
{
DECOR_KISS_POSTER,
DECOR_KISS_CUSHION,
DECOR_SMOOCHUM_DOLL,
DECOR_TOGEPI_DOLL,
DECOR_MEOWTH_DOLL,
DECOR_CLEFAIRY_DOLL,
DECOR_DITTO_DOLL,
DECOR_CYNDAQUIL_DOLL,
DECOR_CHIKORITA_DOLL,
DECOR_TOTODILE_DOLL,
0xFFFF
};
static const u16 sFrontierExchangeCorner_Decor2[] =
{
DECOR_LAPRAS_DOLL,
DECOR_SNORLAX_DOLL,
DECOR_VENUSAUR_DOLL,
DECOR_CHARIZARD_DOLL,
DECOR_BLASTOISE_DOLL,
0xFFFF
};
static const u16 sFrontierExchangeCorner_Vitamins[] =
{
ITEM_PROTEIN,
ITEM_CALCIUM,
ITEM_IRON,
ITEM_ZINC,
ITEM_CARBOS,
ITEM_HP_UP,
0xFFFF
};
static const u16 sFrontierExchangeCorner_HoldItems[] =
{
ITEM_LEFTOVERS,
ITEM_WHITE_HERB,
ITEM_QUICK_CLAW,
ITEM_MENTAL_HERB,
ITEM_BRIGHT_POWDER,
ITEM_CHOICE_BAND,
ITEM_KINGS_ROCK,
ITEM_FOCUS_BAND,
ITEM_SCOPE_LENS,
0xFFFF
};
static const u8 *const sFrontierExchangeCorner_Decor1Descriptions[] =
{
BattleFrontier_BattlePointExchangeServiceCorner_Text_2601AA,
BattleFrontier_BattlePointExchangeServiceCorner_Text_2601D0,
BattleFrontier_BattlePointExchangeServiceCorner_Text_260201,
BattleFrontier_BattlePointExchangeServiceCorner_Text_26022F,
BattleFrontier_BattlePointExchangeServiceCorner_Text_26025B,
BattleFrontier_BattlePointExchangeServiceCorner_Text_260287,
BattleFrontier_BattlePointExchangeServiceCorner_Text_2602B5,
BattleFrontier_BattlePointExchangeServiceCorner_Text_2602E0,
BattleFrontier_BattlePointExchangeServiceCorner_Text_26030F,
BattleFrontier_BattlePointExchangeServiceCorner_Text_26033E,
gText_Exit,
};
static const u8 *const sFrontierExchangeCorner_Decor2Descriptions[] =
{
BattleFrontier_BattlePointExchangeServiceCorner_Text_26036C,
BattleFrontier_BattlePointExchangeServiceCorner_Text_26036C,
BattleFrontier_BattlePointExchangeServiceCorner_Text_26036C,
BattleFrontier_BattlePointExchangeServiceCorner_Text_26036C,
BattleFrontier_BattlePointExchangeServiceCorner_Text_26036C,
gText_Exit
};
static const u8 *const sFrontierExchangeCorner_VitaminsDescriptions[] =
{
BattleFrontier_BattlePointExchangeServiceCorner_Text_260397,
BattleFrontier_BattlePointExchangeServiceCorner_Text_2603BE,
BattleFrontier_BattlePointExchangeServiceCorner_Text_2603E6,
BattleFrontier_BattlePointExchangeServiceCorner_Text_26040E,
BattleFrontier_BattlePointExchangeServiceCorner_Text_260436,
BattleFrontier_BattlePointExchangeServiceCorner_Text_26045C,
gText_Exit
};
static const u8 *const sFrontierExchangeCorner_HoldItemsDescriptions[] =
{
BattleFrontier_BattlePointExchangeServiceCorner_Text_26047A,
BattleFrontier_BattlePointExchangeServiceCorner_Text_2604AC,
BattleFrontier_BattlePointExchangeServiceCorner_Text_2604D8,
BattleFrontier_BattlePointExchangeServiceCorner_Text_26050F,
BattleFrontier_BattlePointExchangeServiceCorner_Text_260542,
BattleFrontier_BattlePointExchangeServiceCorner_Text_260575,
BattleFrontier_BattlePointExchangeServiceCorner_Text_2605A8,
BattleFrontier_BattlePointExchangeServiceCorner_Text_2605E2,
BattleFrontier_BattlePointExchangeServiceCorner_Text_260613,
gText_Exit
};
File diff suppressed because it is too large Load Diff
+123 -122
View File
@@ -1,123 +1,124 @@
const u32 *const gUnknown_085A6BE8[][2] = {
{gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
{NULL, NULL},
{NULL, NULL},
{gUnknown_08DB7AA0, gUnknown_08DB7B34},
{gUnknown_08DB7B5C, gUnknown_08DB7BEC},
{gUnknown_08DB7C08, gUnknown_08DB7CE8},
{gUnknown_08DB7D08, gUnknown_08DB7DCC},
{gUnknown_08DB7DF4, gUnknown_08DB7EA0},
{gUnknown_08DB7EC4, gUnknown_08DB7F60},
{gUnknown_08DB7F7C, gUnknown_08DB8070},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{gUnknown_08DB808C, gUnknown_08DB8138},
{gUnknown_08DB8160, gUnknown_08DB8218},
{gUnknown_08DB823C, gUnknown_08DB8300},
{gUnknown_08DB8328, gUnknown_08DB8430},
{gUnknown_08DB8458, gUnknown_08DB8528},
{gUnknown_08DB854C, gUnknown_08DB862C},
{gUnknown_08DB8654, gUnknown_08DB86C4},
{gUnknown_08DB86E0, gUnknown_08DB8750},
{gUnknown_08DB876C, gUnknown_08DB87DC},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{gUnknown_08DB87F8, gUnknown_08DB88D8},
{gUnknown_08DB8900, gUnknown_08DB89E0},
{gUnknown_08DB8A08, gUnknown_08DB8A68},
{gUnknown_08DB8A84, gUnknown_08DB8B40},
{NULL, NULL},
{NULL, NULL},
{gUnknown_08DB8B68, gUnknown_08DB8C40},
{gUnknown_08DB8C5C, gUnknown_08DB8CF4},
{NULL, NULL},
{gUnknown_08DB8D18, gUnknown_08DB8DB0},
{gUnknown_08DB8DD4, gUnknown_08DB8E80},
{NULL, NULL},
{NULL, NULL},
{gUnknown_08DB8EA0, gUnknown_08DB8F58},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{gUnknown_08DB8F7C, gUnknown_08DB9038},
{gUnknown_08DB9058, gUnknown_08DB9130},
{gUnknown_08DB9154, gUnknown_08DB9218},
{gUnknown_08DB9234, gUnknown_08DB92FC},
{gUnknown_08DB931C, gUnknown_08DB93E8},
{gUnknown_08DB940C, gUnknown_08DB94CC},
{gUnknown_08DB94E8, gUnknown_08DB95AC},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{NULL, NULL},
{gUnknown_08DB95D0, gUnknown_08DB96C4},
{gUnknown_08DB96EC, gUnknown_08DB97F4},
{gUnknown_08DB981C, gUnknown_08DB9908},
{gUnknown_08DB9930, gUnknown_08DB9A54},
{gUnknown_08DB9A7C, gUnknown_08DB9B7C},
{gUnknown_08DB9BA4, gUnknown_08DB9CB0},
{gUnknown_08DB9CD8, gUnknown_08DB9DAC},
{gUnknown_08DB9F08, gUnknown_08DB9FFC},
{gUnknown_08DB9DD4, gUnknown_08DB9EE4},
{gUnknown_08DBA020, gUnknown_08DBA12C}
const u32 *const gDecorIconTable[][2] =
{
[DECOR_NONE] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
[DECOR_SMALL_DESK] = {NULL, NULL},
[DECOR_POKEMON_DESK] = {NULL, NULL},
[DECOR_HEAVY_DESK] = {gDecorIcon_HeavyDesk, gDecorIconPalette_HeavyDesk},
[DECOR_RAGGED_DESK] = {gDecorIcon_RaggedDesk, gDecorIconPalette_RaggedDesk},
[DECOR_COMFORT_DESK] = {gDecorIcon_ComfortDesk, gDecorIconPalette_ComfortDesk},
[DECOR_PRETTY_DESK] = {gDecorIcon_PrettyDesk, gDecorIconPalette_PrettyDesk},
[DECOR_BRICK_DESK] = {gDecorIcon_BrickDesk, gDecorIconPalette_BrickDesk},
[DECOR_CAMP_DESK] = {gDecorIcon_CampDesk, gDecorIconPalette_CampDesk},
[DECOR_HARD_DESK] = {gDecorIcon_HardDesk, gDecorIconPalette_HardDesk},
[DECOR_SMALL_CHAIR] = {NULL, NULL},
[DECOR_POKEMON_CHAIR] = {NULL, NULL},
[DECOR_HEAVY_CHAIR] = {NULL, NULL},
[DECOR_PRETTY_CHAIR] = {NULL, NULL},
[DECOR_COMFORT_CHAIR] = {NULL, NULL},
[DECOR_RAGGED_CHAIR] = {NULL, NULL},
[DECOR_BRICK_CHAIR] = {NULL, NULL},
[DECOR_CAMP_CHAIR] = {NULL, NULL},
[DECOR_HARD_CHAIR] = {NULL, NULL},
[DECOR_RED_PLANT] = {gDecorIcon_RedPlant, gDecorIconPalette_RedPlant},
[DECOR_TROPICAL_PLANT] = {gDecorIcon_TropicalPlant, gDecorIconPalette_TropicalPlant},
[DECOR_PRETTY_FLOWERS] = {gDecorIcon_PrettyFlowers, gDecorIconPalette_PrettyFlowers},
[DECOR_COLORFUL_PLANT] = {gDecorIcon_ColorfulPlant, gDecorIconPalette_ColorfulPlant},
[DECOR_BIG_PLANT] = {gDecorIcon_BigPlant, gDecorIconPalette_BigPlant},
[DECOR_GORGEOUS_PLANT] = {gDecorIcon_GorgeousPlant, gDecorIconPalette_GorgeousPlant},
[DECOR_RED_BRICK] = {gDecorIcon_RedBrick, gDecorIconPalette_RedBrick},
[DECOR_YELLOW_BRICK] = {gDecorIcon_YellowBrick, gDecorIconPalette_YellowBrick},
[DECOR_BLUE_BRICK] = {gDecorIcon_BlueBrick, gDecorIconPalette_BlueBrick},
[DECOR_RED_BALLOON] = {NULL, NULL},
[DECOR_BLUE_BALLOON] = {NULL, NULL},
[DECOR_YELLOW_BALLOON] = {NULL, NULL},
[DECOR_RED_TENT] = {gDecorIcon_RedTent, gDecorIconPalette_RedTent},
[DECOR_BLUE_TENT] = {gDecorIcon_BlueTent, gDecorIconPalette_BlueTent},
[DECOR_SOLID_BOARD] = {gDecorIcon_SolidBoard, gDecorIconPalette_SolidBoard},
[DECOR_SLIDE] = {gDecorIcon_Slide, gDecorIconPalette_Slide},
[DECOR_FENCE_LENGTH] = {NULL, NULL},
[DECOR_FENCE_WIDTH] = {NULL, NULL},
[DECOR_TIRE] = {gDecorIcon_Tire, gDecorIconPalette_Tire},
[DECOR_STAND] = {gDecorIcon_Stand, gDecorIconPalette_Stand},
[DECOR_MUD_BALL] = {NULL, NULL},
[DECOR_BREAKABLE_DOOR] = {gDecorIcon_BreakableDoor, gDecorIconPalette_BreakableDoor},
[DECOR_SAND_ORNAMENT] = {gDecorIcon_SandOrnament, gDecorIconPalette_SandOrnament},
[DECOR_SILVER_SHIELD] = {NULL, NULL},
[DECOR_GOLD_SHIELD] = {NULL, NULL},
[DECOR_GLASS_ORNAMENT] = {gDecorIcon_GlassOrnament, gDecorIconPalette_GlassOrnament},
[DECOR_TV] = {NULL, NULL},
[DECOR_ROUND_TV] = {NULL, NULL},
[DECOR_CUTE_TV] = {NULL, NULL},
[DECOR_GLITTER_MAT] = {NULL, NULL},
[DECOR_JUMP_MAT] = {NULL, NULL},
[DECOR_SPIN_MAT] = {NULL, NULL},
[DECOR_C_LOW_NOTE_MAT] = {NULL, NULL},
[DECOR_D_NOTE_MAT] = {NULL, NULL},
[DECOR_E_NOTE_MAT] = {NULL, NULL},
[DECOR_F_NOTE_MAT] = {NULL, NULL},
[DECOR_G_NOTE_MAT] = {NULL, NULL},
[DECOR_A_NOTE_MAT] = {NULL, NULL},
[DECOR_B_NOTE_MAT] = {NULL, NULL},
[DECOR_C_HIGH_NOTE_MAT] = {NULL, NULL},
[DECOR_SURF_MAT] = {gDecorIcon_SurfMat, gDecorIconPalette_SurfMat},
[DECOR_THUNDER_MAT] = {gDecorIcon_ThunderMat, gDecorIconPalette_ThunderMat},
[DECOR_FIRE_BLAST_MAT] = {gDecorIcon_FireBlastMat, gDecorIconPalette_FireBlastMat},
[DECOR_POWDER_SNOW_MAT] = {gDecorIcon_PowderSnowMat, gDecorIconPalette_PowderSnowMat},
[DECOR_ATTRACT_MAT] = {gDecorIcon_AttractMat, gDecorIconPalette_AttractMat},
[DECOR_FISSURE_MAT] = {gDecorIcon_FissureMat, gDecorIconPalette_FissureMat},
[DECOR_SPIKES_MAT] = {gDecorIcon_SpikesMat, gDecorIconPalette_SpikesMat},
[DECOR_BALL_POSTER] = {NULL, NULL},
[DECOR_GREEN_POSTER] = {NULL, NULL},
[DECOR_RED_POSTER] = {NULL, NULL},
[DECOR_BLUE_POSTER] = {NULL, NULL},
[DECOR_CUTE_POSTER] = {NULL, NULL},
[DECOR_PIKA_POSTER] = {NULL, NULL},
[DECOR_LONG_POSTER] = {NULL, NULL},
[DECOR_SEA_POSTER] = {NULL, NULL},
[DECOR_SKY_POSTER] = {NULL, NULL},
[DECOR_KISS_POSTER] = {NULL, NULL},
[DECOR_PICHU_DOLL] = {NULL, NULL},
[DECOR_PIKACHU_DOLL] = {NULL, NULL},
[DECOR_MARILL_DOLL] = {NULL, NULL},
[DECOR_TOGEPI_DOLL] = {NULL, NULL},
[DECOR_CYNDAQUIL_DOLL] = {NULL, NULL},
[DECOR_CHIKORITA_DOLL] = {NULL, NULL},
[DECOR_TOTODILE_DOLL] = {NULL, NULL},
[DECOR_JIGGLYPUFF_DOLL] = {NULL, NULL},
[DECOR_MEOWTH_DOLL] = {NULL, NULL},
[DECOR_CLEFAIRY_DOLL] = {NULL, NULL},
[DECOR_DITTO_DOLL] = {NULL, NULL},
[DECOR_SMOOCHUM_DOLL] = {NULL, NULL},
[DECOR_TREECKO_DOLL] = {NULL, NULL},
[DECOR_TORCHIC_DOLL] = {NULL, NULL},
[DECOR_MUDKIP_DOLL] = {NULL, NULL},
[DECOR_DUSKULL_DOLL] = {NULL, NULL},
[DECOR_WYNAUT_DOLL] = {NULL, NULL},
[DECOR_BALTOY_DOLL] = {NULL, NULL},
[DECOR_KECLEON_DOLL] = {NULL, NULL},
[DECOR_AZURILL_DOLL] = {NULL, NULL},
[DECOR_SKITTY_DOLL] = {NULL, NULL},
[DECOR_SWABLU_DOLL] = {NULL, NULL},
[DECOR_GULPIN_DOLL] = {NULL, NULL},
[DECOR_LOTAD_DOLL] = {NULL, NULL},
[DECOR_SEEDOT_DOLL] = {NULL, NULL},
[DECOR_PIKA_CUSHION] = {NULL, NULL},
[DECOR_ROUND_CUSHION] = {NULL, NULL},
[DECOR_KISS_CUSHION] = {NULL, NULL},
[DECOR_ZIGZAG_CUSHION] = {NULL, NULL},
[DECOR_SPIN_CUSHION] = {NULL, NULL},
[DECOR_DIAMOND_CUSHION] = {NULL, NULL},
[DECOR_BALL_CUSHION] = {NULL, NULL},
[DECOR_GRASS_CUSHION] = {NULL, NULL},
[DECOR_FIRE_CUSHION] = {NULL, NULL},
[DECOR_WATER_CUSHION] = {NULL, NULL},
[DECOR_SNORLAX_DOLL] = {gDecorIcon_SnorlaxDoll, gDecorIconPalette_SnorlaxDoll},
[DECOR_RHYDON_DOLL] = {gDecorIcon_RhydonDoll, gDecorIconPalette_RhydonDoll},
[DECOR_LAPRAS_DOLL] = {gDecorIcon_LaprasDoll, gDecorIconPalette_LaprasDoll},
[DECOR_VENUSAUR_DOLL] = {gDecorIcon_VenusaurDoll, gDecorIconPalette_VenusaurDoll},
[DECOR_CHARIZARD_DOLL] = {gDecorIcon_CharizardDoll, gDecorIconPalette_CharizardDoll},
[DECOR_BLASTOISE_DOLL] = {gDecorIcon_BlastoiseDoll, gDecorIconPalette_BlastoiseDoll},
[DECOR_WAILMER_DOLL] = {gDecorIcon_WailmerDoll, gDecorIconPalette_WailmerDoll},
[DECOR_REGIROCK_DOLL] = {gDecorIcon_RegirockDoll, gDecorIconPalette_RegirockDoll},
[DECOR_REGICE_DOLL] = {gDecorIcon_RegiceDoll, gDecorIconPalette_RegiceDoll},
[DECOR_REGISTEEL_DOLL] = {gDecorIcon_RegisteelDoll, gDecorIconPalette_RegisteelDoll}
};
@@ -247,245 +247,245 @@ const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedMauvilleOldM
const struct EventObjectGraphicsInfo *const gEventObjectGraphicsInfoPointers[] = {
&gEventObjectGraphicsInfo_BrendanNormal,
&gEventObjectGraphicsInfo_BrendanMachBike,
&gEventObjectGraphicsInfo_BrendanSurfing,
&gEventObjectGraphicsInfo_BrendanFieldMove,
&gEventObjectGraphicsInfo_QuintyPlump,
&gEventObjectGraphicsInfo_NinjaBoy,
&gEventObjectGraphicsInfo_Twin,
&gEventObjectGraphicsInfo_Boy1,
&gEventObjectGraphicsInfo_Girl1,
&gEventObjectGraphicsInfo_Boy2,
&gEventObjectGraphicsInfo_Girl2,
&gEventObjectGraphicsInfo_LittleBoy,
&gEventObjectGraphicsInfo_LittleGirl,
&gEventObjectGraphicsInfo_Boy3,
&gEventObjectGraphicsInfo_Girl3,
&gEventObjectGraphicsInfo_RichBoy,
&gEventObjectGraphicsInfo_Woman1,
&gEventObjectGraphicsInfo_FatMan,
&gEventObjectGraphicsInfo_PokefanF,
&gEventObjectGraphicsInfo_Man1,
&gEventObjectGraphicsInfo_Woman2,
&gEventObjectGraphicsInfo_ExpertM,
&gEventObjectGraphicsInfo_ExpertF,
&gEventObjectGraphicsInfo_Man2,
&gEventObjectGraphicsInfo_Woman3,
&gEventObjectGraphicsInfo_PokefanM,
&gEventObjectGraphicsInfo_Woman4,
&gEventObjectGraphicsInfo_Cook,
&gEventObjectGraphicsInfo_LinkReceptionist,
&gEventObjectGraphicsInfo_OldMan,
&gEventObjectGraphicsInfo_OldWoman,
&gEventObjectGraphicsInfo_Camper,
&gEventObjectGraphicsInfo_Picnicker,
&gEventObjectGraphicsInfo_Man3,
&gEventObjectGraphicsInfo_Woman5,
&gEventObjectGraphicsInfo_Youngster,
&gEventObjectGraphicsInfo_BugCatcher,
&gEventObjectGraphicsInfo_PsychicM,
&gEventObjectGraphicsInfo_SchoolKidM,
&gEventObjectGraphicsInfo_Maniac,
&gEventObjectGraphicsInfo_HexManiac,
&gEventObjectGraphicsInfo_Rayquaza1,
&gEventObjectGraphicsInfo_SwimmerM,
&gEventObjectGraphicsInfo_SwimmerF,
&gEventObjectGraphicsInfo_BlackBelt,
&gEventObjectGraphicsInfo_Beauty,
&gEventObjectGraphicsInfo_Scientist1,
&gEventObjectGraphicsInfo_Lass,
&gEventObjectGraphicsInfo_Gentleman,
&gEventObjectGraphicsInfo_Sailor,
&gEventObjectGraphicsInfo_Fisherman,
&gEventObjectGraphicsInfo_RunningTriathleteM,
&gEventObjectGraphicsInfo_RunningTriathleteF,
&gEventObjectGraphicsInfo_TuberF,
&gEventObjectGraphicsInfo_TuberM,
&gEventObjectGraphicsInfo_Hiker,
&gEventObjectGraphicsInfo_CyclingTriathleteM,
&gEventObjectGraphicsInfo_CyclingTriathleteF,
&gEventObjectGraphicsInfo_Nurse,
&gEventObjectGraphicsInfo_ItemBall,
&gEventObjectGraphicsInfo_BerryTree,
&gEventObjectGraphicsInfo_BerryTreeEarlyStages,
&gEventObjectGraphicsInfo_BerryTreeLateStages,
&gEventObjectGraphicsInfo_BrendanAcroBike,
&gEventObjectGraphicsInfo_ProfBirch,
&gEventObjectGraphicsInfo_Man4,
&gEventObjectGraphicsInfo_Man5,
&gEventObjectGraphicsInfo_ReporterM,
&gEventObjectGraphicsInfo_ReporterF,
&gEventObjectGraphicsInfo_Bard,
&gEventObjectGraphicsInfo_Anabel,
&gEventObjectGraphicsInfo_Tucker,
&gEventObjectGraphicsInfo_Greta,
&gEventObjectGraphicsInfo_Spenser,
&gEventObjectGraphicsInfo_Noland,
&gEventObjectGraphicsInfo_Lucy,
&gEventObjectGraphicsInfo_UnusedNatuDoll,
&gEventObjectGraphicsInfo_UnusedMagnemiteDoll,
&gEventObjectGraphicsInfo_UnusedSquirtleDoll,
&gEventObjectGraphicsInfo_UnusedWooperDoll,
&gEventObjectGraphicsInfo_UnusedPikachuDoll,
&gEventObjectGraphicsInfo_UnusedPorygon2Doll,
&gEventObjectGraphicsInfo_CuttableTree,
&gEventObjectGraphicsInfo_MartEmployee,
&gEventObjectGraphicsInfo_RooftopSaleWoman,
&gEventObjectGraphicsInfo_Teala,
&gEventObjectGraphicsInfo_BreakableRock,
&gEventObjectGraphicsInfo_PushableBoulder,
&gEventObjectGraphicsInfo_MrBrineysBoat,
&gEventObjectGraphicsInfo_MayNormal,
&gEventObjectGraphicsInfo_MayMachBike,
&gEventObjectGraphicsInfo_MayAcroBike,
&gEventObjectGraphicsInfo_MaySurfing,
&gEventObjectGraphicsInfo_MayFieldMove,
&gEventObjectGraphicsInfo_Truck,
&gEventObjectGraphicsInfo_VigorothCarryingBox,
&gEventObjectGraphicsInfo_VigorothFacingAway,
&gEventObjectGraphicsInfo_BirchsBag,
&gEventObjectGraphicsInfo_EnemyZigzagoon,
&gEventObjectGraphicsInfo_Artist,
&gEventObjectGraphicsInfo_RivalBrendanNormal,
&gEventObjectGraphicsInfo_RivalBrendanMachBike,
&gEventObjectGraphicsInfo_RivalBrendanAcroBike,
&gEventObjectGraphicsInfo_RivalBrendanSurfing,
&gEventObjectGraphicsInfo_RivalBrendanFieldMove,
&gEventObjectGraphicsInfo_RivalMayNormal,
&gEventObjectGraphicsInfo_RivalMayMachBike,
&gEventObjectGraphicsInfo_RivalMayAcroBike,
&gEventObjectGraphicsInfo_RivalMaySurfing,
&gEventObjectGraphicsInfo_RivalMayFieldMove,
&gEventObjectGraphicsInfo_Cameraman,
&gEventObjectGraphicsInfo_BrendanUnderwater,
&gEventObjectGraphicsInfo_MayUnderwater,
&gEventObjectGraphicsInfo_MovingBox,
&gEventObjectGraphicsInfo_CableCar,
&gEventObjectGraphicsInfo_Scientist2,
&gEventObjectGraphicsInfo_DevonEmployee,
&gEventObjectGraphicsInfo_AquaMemberM,
&gEventObjectGraphicsInfo_AquaMemberF,
&gEventObjectGraphicsInfo_MagmaMemberM,
&gEventObjectGraphicsInfo_MagmaMemberF,
&gEventObjectGraphicsInfo_Sidney,
&gEventObjectGraphicsInfo_Phoebe,
&gEventObjectGraphicsInfo_Glacia,
&gEventObjectGraphicsInfo_Drake,
&gEventObjectGraphicsInfo_Roxanne,
&gEventObjectGraphicsInfo_Brawly,
&gEventObjectGraphicsInfo_Wattson,
&gEventObjectGraphicsInfo_Flannery,
&gEventObjectGraphicsInfo_Norman,
&gEventObjectGraphicsInfo_Winona,
&gEventObjectGraphicsInfo_Liza,
&gEventObjectGraphicsInfo_Tate,
&gEventObjectGraphicsInfo_Wallace,
&gEventObjectGraphicsInfo_Steven,
&gEventObjectGraphicsInfo_Wally,
&gEventObjectGraphicsInfo_RubySapphireLittleBoy,
&gEventObjectGraphicsInfo_BrendanFishing,
&gEventObjectGraphicsInfo_MayFishing,
&gEventObjectGraphicsInfo_HotSpringsOldWoman,
&gEventObjectGraphicsInfo_SSTidal,
&gEventObjectGraphicsInfo_SubmarineShadow,
&gEventObjectGraphicsInfo_PichuDoll,
&gEventObjectGraphicsInfo_PikachuDoll,
&gEventObjectGraphicsInfo_MarillDoll,
&gEventObjectGraphicsInfo_TogepiDoll,
&gEventObjectGraphicsInfo_CyndaquilDoll,
&gEventObjectGraphicsInfo_ChikoritaDoll,
&gEventObjectGraphicsInfo_TotodileDoll,
&gEventObjectGraphicsInfo_JigglypuffDoll,
&gEventObjectGraphicsInfo_MeowthDoll,
&gEventObjectGraphicsInfo_ClefairyDoll,
&gEventObjectGraphicsInfo_DittoDoll,
&gEventObjectGraphicsInfo_SmoochumDoll,
&gEventObjectGraphicsInfo_TreeckoDoll,
&gEventObjectGraphicsInfo_TorchicDoll,
&gEventObjectGraphicsInfo_MudkipDoll,
&gEventObjectGraphicsInfo_DuskullDoll,
&gEventObjectGraphicsInfo_WynautDoll,
&gEventObjectGraphicsInfo_BaltoyDoll,
&gEventObjectGraphicsInfo_KecleonDoll,
&gEventObjectGraphicsInfo_AzurillDoll,
&gEventObjectGraphicsInfo_SkittyDoll,
&gEventObjectGraphicsInfo_SwabluDoll,
&gEventObjectGraphicsInfo_GulpinDoll,
&gEventObjectGraphicsInfo_LotadDoll,
&gEventObjectGraphicsInfo_SeedotDoll,
&gEventObjectGraphicsInfo_PikaCushion,
&gEventObjectGraphicsInfo_RoundCushion,
&gEventObjectGraphicsInfo_KissCushion,
&gEventObjectGraphicsInfo_ZigzagCushion,
&gEventObjectGraphicsInfo_SpinCushion,
&gEventObjectGraphicsInfo_DiamondCushion,
&gEventObjectGraphicsInfo_BallCushion,
&gEventObjectGraphicsInfo_GrassCushion,
&gEventObjectGraphicsInfo_FireCushion,
&gEventObjectGraphicsInfo_WaterCushion,
&gEventObjectGraphicsInfo_BigSnorlaxDoll,
&gEventObjectGraphicsInfo_BigRhydonDoll,
&gEventObjectGraphicsInfo_BigLaprasDoll,
&gEventObjectGraphicsInfo_BigVenusaurDoll,
&gEventObjectGraphicsInfo_BigCharizardDoll,
&gEventObjectGraphicsInfo_BigBlastoiseDoll,
&gEventObjectGraphicsInfo_BigWailmerDoll,
&gEventObjectGraphicsInfo_BigRegirockDoll,
&gEventObjectGraphicsInfo_BigRegiceDoll,
&gEventObjectGraphicsInfo_BigRegisteelDoll,
&gEventObjectGraphicsInfo_Latias,
&gEventObjectGraphicsInfo_Latios,
&gEventObjectGraphicsInfo_GameboyKid,
&gEventObjectGraphicsInfo_ContestJudge,
&gEventObjectGraphicsInfo_BrendanWatering,
&gEventObjectGraphicsInfo_MayWatering,
&gEventObjectGraphicsInfo_BrendanDecorating,
&gEventObjectGraphicsInfo_MayDecorating,
&gEventObjectGraphicsInfo_Archie,
&gEventObjectGraphicsInfo_Maxie,
&gEventObjectGraphicsInfo_Kyogre1,
&gEventObjectGraphicsInfo_Groudon1,
&gEventObjectGraphicsInfo_Fossil,
&gEventObjectGraphicsInfo_Regirock,
&gEventObjectGraphicsInfo_Regice,
&gEventObjectGraphicsInfo_Registeel,
&gEventObjectGraphicsInfo_Skitty,
&gEventObjectGraphicsInfo_Kecleon1,
&gEventObjectGraphicsInfo_Kyogre2,
&gEventObjectGraphicsInfo_Groudon2,
&gEventObjectGraphicsInfo_Rayquaza2,
&gEventObjectGraphicsInfo_Zigzagoon,
&gEventObjectGraphicsInfo_Pikachu,
&gEventObjectGraphicsInfo_Azumarill,
&gEventObjectGraphicsInfo_Wingull,
&gEventObjectGraphicsInfo_Kecleon2,
&gEventObjectGraphicsInfo_TuberMSwimming,
&gEventObjectGraphicsInfo_Azurill,
&gEventObjectGraphicsInfo_Mom,
&gEventObjectGraphicsInfo_LinkBrendan,
&gEventObjectGraphicsInfo_LinkMay,
&gEventObjectGraphicsInfo_Juan,
&gEventObjectGraphicsInfo_Scott,
&gEventObjectGraphicsInfo_Poochyena,
&gEventObjectGraphicsInfo_Kyogre3,
&gEventObjectGraphicsInfo_Groudon3,
&gEventObjectGraphicsInfo_MysteryEventDeliveryman,
&gEventObjectGraphicsInfo_Statue,
&gEventObjectGraphicsInfo_Kirlia,
&gEventObjectGraphicsInfo_Dusclops,
&gEventObjectGraphicsInfo_UnionRoomAttendant,
&gEventObjectGraphicsInfo_Sudowoodo,
&gEventObjectGraphicsInfo_Mew,
&gEventObjectGraphicsInfo_Red,
&gEventObjectGraphicsInfo_Leaf,
&gEventObjectGraphicsInfo_Deoxys,
&gEventObjectGraphicsInfo_BirthIslandStone,
&gEventObjectGraphicsInfo_Brandon,
&gEventObjectGraphicsInfo_RubySapphireBrendan,
&gEventObjectGraphicsInfo_RubySapphireMay,
&gEventObjectGraphicsInfo_Lugia,
&gEventObjectGraphicsInfo_HoOh,
[EVENT_OBJ_GFX_BRENDAN_NORMAL] = &gEventObjectGraphicsInfo_BrendanNormal,
[EVENT_OBJ_GFX_BRENDAN_MACH_BIKE] = &gEventObjectGraphicsInfo_BrendanMachBike,
[EVENT_OBJ_GFX_BRENDAN_SURFING] = &gEventObjectGraphicsInfo_BrendanSurfing,
[EVENT_OBJ_GFX_BRENDAN_FIELD_MOVE] = &gEventObjectGraphicsInfo_BrendanFieldMove,
[EVENT_OBJ_GFX_QUINTY_PLUMP] = &gEventObjectGraphicsInfo_QuintyPlump,
[EVENT_OBJ_GFX_NINJA_BOY] = &gEventObjectGraphicsInfo_NinjaBoy,
[EVENT_OBJ_GFX_TWIN] = &gEventObjectGraphicsInfo_Twin,
[EVENT_OBJ_GFX_BOY_1] = &gEventObjectGraphicsInfo_Boy1,
[EVENT_OBJ_GFX_GIRL_1] = &gEventObjectGraphicsInfo_Girl1,
[EVENT_OBJ_GFX_BOY_2] = &gEventObjectGraphicsInfo_Boy2,
[EVENT_OBJ_GFX_GIRL_2] = &gEventObjectGraphicsInfo_Girl2,
[EVENT_OBJ_GFX_LITTLE_BOY] = &gEventObjectGraphicsInfo_LittleBoy,
[EVENT_OBJ_GFX_LITTLE_GIRL] = &gEventObjectGraphicsInfo_LittleGirl,
[EVENT_OBJ_GFX_BOY_3] = &gEventObjectGraphicsInfo_Boy3,
[EVENT_OBJ_GFX_GIRL_3] = &gEventObjectGraphicsInfo_Girl3,
[EVENT_OBJ_GFX_RICH_BOY] = &gEventObjectGraphicsInfo_RichBoy,
[EVENT_OBJ_GFX_WOMAN_1] = &gEventObjectGraphicsInfo_Woman1,
[EVENT_OBJ_GFX_FAT_MAN] = &gEventObjectGraphicsInfo_FatMan,
[EVENT_OBJ_GFX_POKEFAN_F] = &gEventObjectGraphicsInfo_PokefanF,
[EVENT_OBJ_GFX_MAN_1] = &gEventObjectGraphicsInfo_Man1,
[EVENT_OBJ_GFX_WOMAN_2] = &gEventObjectGraphicsInfo_Woman2,
[EVENT_OBJ_GFX_EXPERT_M] = &gEventObjectGraphicsInfo_ExpertM,
[EVENT_OBJ_GFX_EXPERT_F] = &gEventObjectGraphicsInfo_ExpertF,
[EVENT_OBJ_GFX_MAN_2] = &gEventObjectGraphicsInfo_Man2,
[EVENT_OBJ_GFX_WOMAN_3] = &gEventObjectGraphicsInfo_Woman3,
[EVENT_OBJ_GFX_POKEFAN_M] = &gEventObjectGraphicsInfo_PokefanM,
[EVENT_OBJ_GFX_WOMAN_4] = &gEventObjectGraphicsInfo_Woman4,
[EVENT_OBJ_GFX_COOK] = &gEventObjectGraphicsInfo_Cook,
[EVENT_OBJ_GFX_LINK_RECEPTIONIST] = &gEventObjectGraphicsInfo_LinkReceptionist,
[EVENT_OBJ_GFX_OLD_MAN] = &gEventObjectGraphicsInfo_OldMan,
[EVENT_OBJ_GFX_OLD_WOMAN] = &gEventObjectGraphicsInfo_OldWoman,
[EVENT_OBJ_GFX_CAMPER] = &gEventObjectGraphicsInfo_Camper,
[EVENT_OBJ_GFX_PICNICKER] = &gEventObjectGraphicsInfo_Picnicker,
[EVENT_OBJ_GFX_MAN_3] = &gEventObjectGraphicsInfo_Man3,
[EVENT_OBJ_GFX_WOMAN_5] = &gEventObjectGraphicsInfo_Woman5,
[EVENT_OBJ_GFX_YOUNGSTER] = &gEventObjectGraphicsInfo_Youngster,
[EVENT_OBJ_GFX_BUG_CATCHER] = &gEventObjectGraphicsInfo_BugCatcher,
[EVENT_OBJ_GFX_PSYCHIC_M] = &gEventObjectGraphicsInfo_PsychicM,
[EVENT_OBJ_GFX_SCHOOL_KID_M] = &gEventObjectGraphicsInfo_SchoolKidM,
[EVENT_OBJ_GFX_MANIAC] = &gEventObjectGraphicsInfo_Maniac,
[EVENT_OBJ_GFX_HEX_MANIAC] = &gEventObjectGraphicsInfo_HexManiac,
[EVENT_OBJ_GFX_RAYQUAZA_1] = &gEventObjectGraphicsInfo_Rayquaza1,
[EVENT_OBJ_GFX_SWIMMER_M] = &gEventObjectGraphicsInfo_SwimmerM,
[EVENT_OBJ_GFX_SWIMMER_F] = &gEventObjectGraphicsInfo_SwimmerF,
[EVENT_OBJ_GFX_BLACK_BELT] = &gEventObjectGraphicsInfo_BlackBelt,
[EVENT_OBJ_GFX_BEAUTY] = &gEventObjectGraphicsInfo_Beauty,
[EVENT_OBJ_GFX_SCIENTIST_1] = &gEventObjectGraphicsInfo_Scientist1,
[EVENT_OBJ_GFX_LASS] = &gEventObjectGraphicsInfo_Lass,
[EVENT_OBJ_GFX_GENTLEMAN] = &gEventObjectGraphicsInfo_Gentleman,
[EVENT_OBJ_GFX_SAILOR] = &gEventObjectGraphicsInfo_Sailor,
[EVENT_OBJ_GFX_FISHERMAN] = &gEventObjectGraphicsInfo_Fisherman,
[EVENT_OBJ_GFX_RUNNING_TRIATHLETE_M] = &gEventObjectGraphicsInfo_RunningTriathleteM,
[EVENT_OBJ_GFX_RUNNING_TRIATHLETE_F] = &gEventObjectGraphicsInfo_RunningTriathleteF,
[EVENT_OBJ_GFX_TUBER_F] = &gEventObjectGraphicsInfo_TuberF,
[EVENT_OBJ_GFX_TUBER_M] = &gEventObjectGraphicsInfo_TuberM,
[EVENT_OBJ_GFX_HIKER] = &gEventObjectGraphicsInfo_Hiker,
[EVENT_OBJ_GFX_CYCLING_TRIATHLETE_M] = &gEventObjectGraphicsInfo_CyclingTriathleteM,
[EVENT_OBJ_GFX_CYCLING_TRIATHLETE_F] = &gEventObjectGraphicsInfo_CyclingTriathleteF,
[EVENT_OBJ_GFX_NURSE] = &gEventObjectGraphicsInfo_Nurse,
[EVENT_OBJ_GFX_ITEM_BALL] = &gEventObjectGraphicsInfo_ItemBall,
[EVENT_OBJ_GFX_BERRY_TREE] = &gEventObjectGraphicsInfo_BerryTree,
[EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES] = &gEventObjectGraphicsInfo_BerryTreeEarlyStages,
[EVENT_OBJ_GFX_BERRY_TREE_LATE_STAGES] = &gEventObjectGraphicsInfo_BerryTreeLateStages,
[EVENT_OBJ_GFX_BRENDAN_ACRO_BIKE] = &gEventObjectGraphicsInfo_BrendanAcroBike,
[EVENT_OBJ_GFX_PROF_BIRCH] = &gEventObjectGraphicsInfo_ProfBirch,
[EVENT_OBJ_GFX_MAN_4] = &gEventObjectGraphicsInfo_Man4,
[EVENT_OBJ_GFX_MAN_5] = &gEventObjectGraphicsInfo_Man5,
[EVENT_OBJ_GFX_REPORTER_M] = &gEventObjectGraphicsInfo_ReporterM,
[EVENT_OBJ_GFX_REPORTER_F] = &gEventObjectGraphicsInfo_ReporterF,
[EVENT_OBJ_GFX_BARD] = &gEventObjectGraphicsInfo_Bard,
[EVENT_OBJ_GFX_ANABEL] = &gEventObjectGraphicsInfo_Anabel,
[EVENT_OBJ_GFX_TUCKER] = &gEventObjectGraphicsInfo_Tucker,
[EVENT_OBJ_GFX_GRETA] = &gEventObjectGraphicsInfo_Greta,
[EVENT_OBJ_GFX_SPENSER] = &gEventObjectGraphicsInfo_Spenser,
[EVENT_OBJ_GFX_NOLAND] = &gEventObjectGraphicsInfo_Noland,
[EVENT_OBJ_GFX_LUCY] = &gEventObjectGraphicsInfo_Lucy,
[EVENT_OBJ_GFX_UNUSED_NATU_DOLL] = &gEventObjectGraphicsInfo_UnusedNatuDoll,
[EVENT_OBJ_GFX_UNUSED_MAGNEMITE_DOLL] = &gEventObjectGraphicsInfo_UnusedMagnemiteDoll,
[EVENT_OBJ_GFX_UNUSED_SQUIRTLE_DOLL] = &gEventObjectGraphicsInfo_UnusedSquirtleDoll,
[EVENT_OBJ_GFX_UNUSED_WOOPER_DOLL] = &gEventObjectGraphicsInfo_UnusedWooperDoll,
[EVENT_OBJ_GFX_UNUSED_PIKACHU_DOLL] = &gEventObjectGraphicsInfo_UnusedPikachuDoll,
[EVENT_OBJ_GFX_UNUSED_PORYGON2_DOLL] = &gEventObjectGraphicsInfo_UnusedPorygon2Doll,
[EVENT_OBJ_GFX_CUTTABLE_TREE] = &gEventObjectGraphicsInfo_CuttableTree,
[EVENT_OBJ_GFX_MART_EMPLOYEE] = &gEventObjectGraphicsInfo_MartEmployee,
[EVENT_OBJ_GFX_ROOFTOP_SALE_WOMAN] = &gEventObjectGraphicsInfo_RooftopSaleWoman,
[EVENT_OBJ_GFX_TEALA] = &gEventObjectGraphicsInfo_Teala,
[EVENT_OBJ_GFX_BREAKABLE_ROCK] = &gEventObjectGraphicsInfo_BreakableRock,
[EVENT_OBJ_GFX_PUSHABLE_BOULDER] = &gEventObjectGraphicsInfo_PushableBoulder,
[EVENT_OBJ_GFX_MR_BRINEYS_BOAT] = &gEventObjectGraphicsInfo_MrBrineysBoat,
[EVENT_OBJ_GFX_MAY_NORMAL] = &gEventObjectGraphicsInfo_MayNormal,
[EVENT_OBJ_GFX_MAY_MACH_BIKE] = &gEventObjectGraphicsInfo_MayMachBike,
[EVENT_OBJ_GFX_MAY_ACRO_BIKE] = &gEventObjectGraphicsInfo_MayAcroBike,
[EVENT_OBJ_GFX_MAY_SURFING] = &gEventObjectGraphicsInfo_MaySurfing,
[EVENT_OBJ_GFX_MAY_FIELD_MOVE] = &gEventObjectGraphicsInfo_MayFieldMove,
[EVENT_OBJ_GFX_TRUCK] = &gEventObjectGraphicsInfo_Truck,
[EVENT_OBJ_GFX_VIGOROTH_CARRYING_BOX] = &gEventObjectGraphicsInfo_VigorothCarryingBox,
[EVENT_OBJ_GFX_VIGOROTH_FACING_AWAY] = &gEventObjectGraphicsInfo_VigorothFacingAway,
[EVENT_OBJ_GFX_BIRCHS_BAG] = &gEventObjectGraphicsInfo_BirchsBag,
[EVENT_OBJ_GFX_ZIGZAGOON_1] = &gEventObjectGraphicsInfo_EnemyZigzagoon,
[EVENT_OBJ_GFX_ARTIST] = &gEventObjectGraphicsInfo_Artist,
[EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL] = &gEventObjectGraphicsInfo_RivalBrendanNormal,
[EVENT_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE] = &gEventObjectGraphicsInfo_RivalBrendanMachBike,
[EVENT_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE] = &gEventObjectGraphicsInfo_RivalBrendanAcroBike,
[EVENT_OBJ_GFX_RIVAL_BRENDAN_SURFING] = &gEventObjectGraphicsInfo_RivalBrendanSurfing,
[EVENT_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE] = &gEventObjectGraphicsInfo_RivalBrendanFieldMove,
[EVENT_OBJ_GFX_RIVAL_MAY_NORMAL] = &gEventObjectGraphicsInfo_RivalMayNormal,
[EVENT_OBJ_GFX_RIVAL_MAY_MACH_BIKE] = &gEventObjectGraphicsInfo_RivalMayMachBike,
[EVENT_OBJ_GFX_RIVAL_MAY_ACRO_BIKE] = &gEventObjectGraphicsInfo_RivalMayAcroBike,
[EVENT_OBJ_GFX_RIVAL_MAY_SURFING] = &gEventObjectGraphicsInfo_RivalMaySurfing,
[EVENT_OBJ_GFX_RIVAL_MAY_FIELD_MOVE] = &gEventObjectGraphicsInfo_RivalMayFieldMove,
[EVENT_OBJ_GFX_CAMERAMAN] = &gEventObjectGraphicsInfo_Cameraman,
[EVENT_OBJ_GFX_BRENDAN_UNDERWATER] = &gEventObjectGraphicsInfo_BrendanUnderwater,
[EVENT_OBJ_GFX_MAY_UNDERWATER] = &gEventObjectGraphicsInfo_MayUnderwater,
[EVENT_OBJ_GFX_MOVING_BOX] = &gEventObjectGraphicsInfo_MovingBox,
[EVENT_OBJ_GFX_CABLE_CAR] = &gEventObjectGraphicsInfo_CableCar,
[EVENT_OBJ_GFX_SCIENTIST_2] = &gEventObjectGraphicsInfo_Scientist2,
[EVENT_OBJ_GFX_DEVON_EMPLOYEE] = &gEventObjectGraphicsInfo_DevonEmployee,
[EVENT_OBJ_GFX_AQUA_MEMBER_M] = &gEventObjectGraphicsInfo_AquaMemberM,
[EVENT_OBJ_GFX_AQUA_MEMBER_F] = &gEventObjectGraphicsInfo_AquaMemberF,
[EVENT_OBJ_GFX_MAGMA_MEMBER_M] = &gEventObjectGraphicsInfo_MagmaMemberM,
[EVENT_OBJ_GFX_MAGMA_MEMBER_F] = &gEventObjectGraphicsInfo_MagmaMemberF,
[EVENT_OBJ_GFX_SIDNEY] = &gEventObjectGraphicsInfo_Sidney,
[EVENT_OBJ_GFX_PHOEBE] = &gEventObjectGraphicsInfo_Phoebe,
[EVENT_OBJ_GFX_GLACIA] = &gEventObjectGraphicsInfo_Glacia,
[EVENT_OBJ_GFX_DRAKE] = &gEventObjectGraphicsInfo_Drake,
[EVENT_OBJ_GFX_ROXANNE] = &gEventObjectGraphicsInfo_Roxanne,
[EVENT_OBJ_GFX_BRAWLY] = &gEventObjectGraphicsInfo_Brawly,
[EVENT_OBJ_GFX_WATTSON] = &gEventObjectGraphicsInfo_Wattson,
[EVENT_OBJ_GFX_FLANNERY] = &gEventObjectGraphicsInfo_Flannery,
[EVENT_OBJ_GFX_NORMAN] = &gEventObjectGraphicsInfo_Norman,
[EVENT_OBJ_GFX_WINONA] = &gEventObjectGraphicsInfo_Winona,
[EVENT_OBJ_GFX_LIZA] = &gEventObjectGraphicsInfo_Liza,
[EVENT_OBJ_GFX_TATE] = &gEventObjectGraphicsInfo_Tate,
[EVENT_OBJ_GFX_WALLACE] = &gEventObjectGraphicsInfo_Wallace,
[EVENT_OBJ_GFX_STEVEN] = &gEventObjectGraphicsInfo_Steven,
[EVENT_OBJ_GFX_WALLY] = &gEventObjectGraphicsInfo_Wally,
[EVENT_OBJ_GFX_LITTLE_BOY_3] = &gEventObjectGraphicsInfo_RubySapphireLittleBoy,
[EVENT_OBJ_GFX_BRENDAN_FISHING] = &gEventObjectGraphicsInfo_BrendanFishing,
[EVENT_OBJ_GFX_MAY_FISHING] = &gEventObjectGraphicsInfo_MayFishing,
[EVENT_OBJ_GFX_HOT_SPRINGS_OLD_WOMAN] = &gEventObjectGraphicsInfo_HotSpringsOldWoman,
[EVENT_OBJ_GFX_SS_TIDAL] = &gEventObjectGraphicsInfo_SSTidal,
[EVENT_OBJ_GFX_SUBMARINE_SHADOW] = &gEventObjectGraphicsInfo_SubmarineShadow,
[EVENT_OBJ_GFX_PICHU_DOLL] = &gEventObjectGraphicsInfo_PichuDoll,
[EVENT_OBJ_GFX_PIKACHU_DOLL] = &gEventObjectGraphicsInfo_PikachuDoll,
[EVENT_OBJ_GFX_MARILL_DOLL] = &gEventObjectGraphicsInfo_MarillDoll,
[EVENT_OBJ_GFX_TOGEPI_DOLL] = &gEventObjectGraphicsInfo_TogepiDoll,
[EVENT_OBJ_GFX_CYNDAQUIL_DOLL] = &gEventObjectGraphicsInfo_CyndaquilDoll,
[EVENT_OBJ_GFX_CHIKORITA_DOLL] = &gEventObjectGraphicsInfo_ChikoritaDoll,
[EVENT_OBJ_GFX_TOTODILE_DOLL] = &gEventObjectGraphicsInfo_TotodileDoll,
[EVENT_OBJ_GFX_JIGGLYPUFF_DOLL] = &gEventObjectGraphicsInfo_JigglypuffDoll,
[EVENT_OBJ_GFX_MEOWTH_DOLL] = &gEventObjectGraphicsInfo_MeowthDoll,
[EVENT_OBJ_GFX_CLEFAIRY_DOLL] = &gEventObjectGraphicsInfo_ClefairyDoll,
[EVENT_OBJ_GFX_DITTO_DOLL] = &gEventObjectGraphicsInfo_DittoDoll,
[EVENT_OBJ_GFX_SMOOCHUM_DOLL] = &gEventObjectGraphicsInfo_SmoochumDoll,
[EVENT_OBJ_GFX_TREECKO_DOLL] = &gEventObjectGraphicsInfo_TreeckoDoll,
[EVENT_OBJ_GFX_TORCHIC_DOLL] = &gEventObjectGraphicsInfo_TorchicDoll,
[EVENT_OBJ_GFX_MUDKIP_DOLL] = &gEventObjectGraphicsInfo_MudkipDoll,
[EVENT_OBJ_GFX_DUSKULL_DOLL] = &gEventObjectGraphicsInfo_DuskullDoll,
[EVENT_OBJ_GFX_WYNAUT_DOLL] = &gEventObjectGraphicsInfo_WynautDoll,
[EVENT_OBJ_GFX_BALTOY_DOLL] = &gEventObjectGraphicsInfo_BaltoyDoll,
[EVENT_OBJ_GFX_KECLEON_DOLL] = &gEventObjectGraphicsInfo_KecleonDoll,
[EVENT_OBJ_GFX_AZURILL_DOLL] = &gEventObjectGraphicsInfo_AzurillDoll,
[EVENT_OBJ_GFX_SKITTY_DOLL] = &gEventObjectGraphicsInfo_SkittyDoll,
[EVENT_OBJ_GFX_SWABLU_DOLL] = &gEventObjectGraphicsInfo_SwabluDoll,
[EVENT_OBJ_GFX_GULPIN_DOLL] = &gEventObjectGraphicsInfo_GulpinDoll,
[EVENT_OBJ_GFX_LOTAD_DOLL] = &gEventObjectGraphicsInfo_LotadDoll,
[EVENT_OBJ_GFX_SEEDOT_DOLL] = &gEventObjectGraphicsInfo_SeedotDoll,
[EVENT_OBJ_GFX_PIKA_CUSHION] = &gEventObjectGraphicsInfo_PikaCushion,
[EVENT_OBJ_GFX_ROUND_CUSHION] = &gEventObjectGraphicsInfo_RoundCushion,
[EVENT_OBJ_GFX_KISS_CUSHION] = &gEventObjectGraphicsInfo_KissCushion,
[EVENT_OBJ_GFX_ZIGZAG_CUSHION] = &gEventObjectGraphicsInfo_ZigzagCushion,
[EVENT_OBJ_GFX_SPIN_CUSHION] = &gEventObjectGraphicsInfo_SpinCushion,
[EVENT_OBJ_GFX_DIAMOND_CUSHION] = &gEventObjectGraphicsInfo_DiamondCushion,
[EVENT_OBJ_GFX_BALL_CUSHION] = &gEventObjectGraphicsInfo_BallCushion,
[EVENT_OBJ_GFX_GRASS_CUSHION] = &gEventObjectGraphicsInfo_GrassCushion,
[EVENT_OBJ_GFX_FIRE_CUSHION] = &gEventObjectGraphicsInfo_FireCushion,
[EVENT_OBJ_GFX_WATER_CUSHION] = &gEventObjectGraphicsInfo_WaterCushion,
[EVENT_OBJ_GFX_BIG_SNORLAX_DOLL] = &gEventObjectGraphicsInfo_BigSnorlaxDoll,
[EVENT_OBJ_GFX_BIG_RHYDON_DOLL] = &gEventObjectGraphicsInfo_BigRhydonDoll,
[EVENT_OBJ_GFX_BIG_LAPRAS_DOLL] = &gEventObjectGraphicsInfo_BigLaprasDoll,
[EVENT_OBJ_GFX_BIG_VENUSAUR_DOLL] = &gEventObjectGraphicsInfo_BigVenusaurDoll,
[EVENT_OBJ_GFX_BIG_CHARIZARD_DOLL] = &gEventObjectGraphicsInfo_BigCharizardDoll,
[EVENT_OBJ_GFX_BIG_BLASTOISE_DOLL] = &gEventObjectGraphicsInfo_BigBlastoiseDoll,
[EVENT_OBJ_GFX_BIG_WAILMER_DOLL] = &gEventObjectGraphicsInfo_BigWailmerDoll,
[EVENT_OBJ_GFX_BIG_REGIROCK_DOLL] = &gEventObjectGraphicsInfo_BigRegirockDoll,
[EVENT_OBJ_GFX_BIG_REGICE_DOLL] = &gEventObjectGraphicsInfo_BigRegiceDoll,
[EVENT_OBJ_GFX_BIG_REGISTEEL_DOLL] = &gEventObjectGraphicsInfo_BigRegisteelDoll,
[EVENT_OBJ_GFX_LATIAS] = &gEventObjectGraphicsInfo_Latias,
[EVENT_OBJ_GFX_LATIOS] = &gEventObjectGraphicsInfo_Latios,
[EVENT_OBJ_GFX_GAMEBOY_KID] = &gEventObjectGraphicsInfo_GameboyKid,
[EVENT_OBJ_GFX_CONTEST_JUDGE] = &gEventObjectGraphicsInfo_ContestJudge,
[EVENT_OBJ_GFX_BRENDAN_WATERING] = &gEventObjectGraphicsInfo_BrendanWatering,
[EVENT_OBJ_GFX_MAY_WATERING] = &gEventObjectGraphicsInfo_MayWatering,
[EVENT_OBJ_GFX_BRENDAN_DECORATING] = &gEventObjectGraphicsInfo_BrendanDecorating,
[EVENT_OBJ_GFX_MAY_DECORATING] = &gEventObjectGraphicsInfo_MayDecorating,
[EVENT_OBJ_GFX_ARCHIE] = &gEventObjectGraphicsInfo_Archie,
[EVENT_OBJ_GFX_MAXIE] = &gEventObjectGraphicsInfo_Maxie,
[EVENT_OBJ_GFX_KYOGRE_1] = &gEventObjectGraphicsInfo_Kyogre1,
[EVENT_OBJ_GFX_GROUDON_1] = &gEventObjectGraphicsInfo_Groudon1,
[EVENT_OBJ_GFX_FOSSIL] = &gEventObjectGraphicsInfo_Fossil,
[EVENT_OBJ_GFX_REGIROCK] = &gEventObjectGraphicsInfo_Regirock,
[EVENT_OBJ_GFX_REGICE] = &gEventObjectGraphicsInfo_Regice,
[EVENT_OBJ_GFX_REGISTEEL] = &gEventObjectGraphicsInfo_Registeel,
[EVENT_OBJ_GFX_SKITTY] = &gEventObjectGraphicsInfo_Skitty,
[EVENT_OBJ_GFX_KECLEON_1] = &gEventObjectGraphicsInfo_Kecleon1,
[EVENT_OBJ_GFX_KYOGRE_2] = &gEventObjectGraphicsInfo_Kyogre2,
[EVENT_OBJ_GFX_GROUDON_2] = &gEventObjectGraphicsInfo_Groudon2,
[EVENT_OBJ_GFX_RAYQUAZA_2] = &gEventObjectGraphicsInfo_Rayquaza2,
[EVENT_OBJ_GFX_ZIGZAGOON_2] = &gEventObjectGraphicsInfo_Zigzagoon,
[EVENT_OBJ_GFX_PIKACHU] = &gEventObjectGraphicsInfo_Pikachu,
[EVENT_OBJ_GFX_AZUMARILL] = &gEventObjectGraphicsInfo_Azumarill,
[EVENT_OBJ_GFX_WINGULL] = &gEventObjectGraphicsInfo_Wingull,
[EVENT_OBJ_GFX_KECLEON_2] = &gEventObjectGraphicsInfo_Kecleon2,
[EVENT_OBJ_GFX_TUBER_M_SWIMMING] = &gEventObjectGraphicsInfo_TuberMSwimming,
[EVENT_OBJ_GFX_AZURILL] = &gEventObjectGraphicsInfo_Azurill,
[EVENT_OBJ_GFX_MOM] = &gEventObjectGraphicsInfo_Mom,
[EVENT_OBJ_GFX_LINK_BRENDAN] = &gEventObjectGraphicsInfo_LinkBrendan,
[EVENT_OBJ_GFX_LINK_MAY] = &gEventObjectGraphicsInfo_LinkMay,
[EVENT_OBJ_GFX_JUAN] = &gEventObjectGraphicsInfo_Juan,
[EVENT_OBJ_GFX_SCOTT] = &gEventObjectGraphicsInfo_Scott,
[EVENT_OBJ_GFX_POOCHYENA] = &gEventObjectGraphicsInfo_Poochyena,
[EVENT_OBJ_GFX_KYOGRE_3] = &gEventObjectGraphicsInfo_Kyogre3,
[EVENT_OBJ_GFX_GROUDON_3] = &gEventObjectGraphicsInfo_Groudon3,
[EVENT_OBJ_GFX_MYSTERY_GIFT_MAN] = &gEventObjectGraphicsInfo_MysteryEventDeliveryman,
[EVENT_OBJ_GFX_TRICK_HOUSE_STATUE] = &gEventObjectGraphicsInfo_Statue,
[EVENT_OBJ_GFX_KIRLIA] = &gEventObjectGraphicsInfo_Kirlia,
[EVENT_OBJ_GFX_DUSCLOPS] = &gEventObjectGraphicsInfo_Dusclops,
[EVENT_OBJ_GFX_UNION_ROOM_NURSE] = &gEventObjectGraphicsInfo_UnionRoomAttendant,
[EVENT_OBJ_GFX_SUDOWOODO] = &gEventObjectGraphicsInfo_Sudowoodo,
[EVENT_OBJ_GFX_MEW] = &gEventObjectGraphicsInfo_Mew,
[EVENT_OBJ_GFX_RED] = &gEventObjectGraphicsInfo_Red,
[EVENT_OBJ_GFX_LEAF] = &gEventObjectGraphicsInfo_Leaf,
[EVENT_OBJ_GFX_DEOXYS] = &gEventObjectGraphicsInfo_Deoxys,
[EVENT_OBJ_GFX_DEOXYS_TRIANGLE] = &gEventObjectGraphicsInfo_BirthIslandStone,
[EVENT_OBJ_GFX_BRANDON] = &gEventObjectGraphicsInfo_Brandon,
[EVENT_OBJ_GFX_LINK_RS_BRENDAN] = &gEventObjectGraphicsInfo_RubySapphireBrendan,
[EVENT_OBJ_GFX_LINK_RS_MAY] = &gEventObjectGraphicsInfo_RubySapphireMay,
[EVENT_OBJ_GFX_LUGIA] = &gEventObjectGraphicsInfo_Lugia,
[EVENT_OBJ_GFX_HOOH] = &gEventObjectGraphicsInfo_HoOh,
};
const struct EventObjectGraphicsInfo *const gMauvilleOldManGraphicsInfoPointers[] = {
+84 -84
View File
@@ -1,125 +1,125 @@
const u32 gUnknown_08DB7AA0[] = INCBIN_U32("graphics/decorations/decor_heavy_desk.4bpp.lz");
const u32 gUnknown_08DB7B34[] = INCBIN_U32("graphics/decorations/decor_heavy_desk.gbapal.lz");
const u32 gDecorIcon_HeavyDesk[] = INCBIN_U32("graphics/decorations/decor_heavy_desk.4bpp.lz");
const u32 gDecorIconPalette_HeavyDesk[] = INCBIN_U32("graphics/decorations/decor_heavy_desk.gbapal.lz");
const u32 gUnknown_08DB7B5C[] = INCBIN_U32("graphics/decorations/decor_ragged_desk.4bpp.lz");
const u32 gUnknown_08DB7BEC[] = INCBIN_U32("graphics/decorations/decor_ragged_desk.gbapal.lz");
const u32 gDecorIcon_RaggedDesk[] = INCBIN_U32("graphics/decorations/decor_ragged_desk.4bpp.lz");
const u32 gDecorIconPalette_RaggedDesk[] = INCBIN_U32("graphics/decorations/decor_ragged_desk.gbapal.lz");
const u32 gUnknown_08DB7C08[] = INCBIN_U32("graphics/decorations/decor_comfort_desk.4bpp.lz");
const u32 gUnknown_08DB7CE8[] = INCBIN_U32("graphics/decorations/decor_comfort_desk.gbapal.lz");
const u32 gDecorIcon_ComfortDesk[] = INCBIN_U32("graphics/decorations/decor_comfort_desk.4bpp.lz");
const u32 gDecorIconPalette_ComfortDesk[] = INCBIN_U32("graphics/decorations/decor_comfort_desk.gbapal.lz");
const u32 gUnknown_08DB7D08[] = INCBIN_U32("graphics/decorations/decor_pretty_desk.4bpp.lz");
const u32 gUnknown_08DB7DCC[] = INCBIN_U32("graphics/decorations/decor_pretty_desk.gbapal.lz");
const u32 gDecorIcon_PrettyDesk[] = INCBIN_U32("graphics/decorations/decor_pretty_desk.4bpp.lz");
const u32 gDecorIconPalette_PrettyDesk[] = INCBIN_U32("graphics/decorations/decor_pretty_desk.gbapal.lz");
const u32 gUnknown_08DB7DF4[] = INCBIN_U32("graphics/decorations/decor_brick_desk.4bpp.lz");
const u32 gUnknown_08DB7EA0[] = INCBIN_U32("graphics/decorations/decor_brick_desk.gbapal.lz");
const u32 gDecorIcon_BrickDesk[] = INCBIN_U32("graphics/decorations/decor_brick_desk.4bpp.lz");
const u32 gDecorIconPalette_BrickDesk[] = INCBIN_U32("graphics/decorations/decor_brick_desk.gbapal.lz");
const u32 gUnknown_08DB7EC4[] = INCBIN_U32("graphics/decorations/decor_camp_desk.4bpp.lz");
const u32 gUnknown_08DB7F60[] = INCBIN_U32("graphics/decorations/decor_camp_desk.gbapal.lz");
const u32 gDecorIcon_CampDesk[] = INCBIN_U32("graphics/decorations/decor_camp_desk.4bpp.lz");
const u32 gDecorIconPalette_CampDesk[] = INCBIN_U32("graphics/decorations/decor_camp_desk.gbapal.lz");
const u32 gUnknown_08DB7F7C[] = INCBIN_U32("graphics/decorations/decor_hard_desk.4bpp.lz");
const u32 gUnknown_08DB8070[] = INCBIN_U32("graphics/decorations/decor_hard_desk.gbapal.lz");
const u32 gDecorIcon_HardDesk[] = INCBIN_U32("graphics/decorations/decor_hard_desk.4bpp.lz");
const u32 gDecorIconPalette_HardDesk[] = INCBIN_U32("graphics/decorations/decor_hard_desk.gbapal.lz");
const u32 gUnknown_08DB808C[] = INCBIN_U32("graphics/decorations/decor_red_plant.4bpp.lz");
const u32 gUnknown_08DB8138[] = INCBIN_U32("graphics/decorations/decor_red_plant.gbapal.lz");
const u32 gDecorIcon_RedPlant[] = INCBIN_U32("graphics/decorations/decor_red_plant.4bpp.lz");
const u32 gDecorIconPalette_RedPlant[] = INCBIN_U32("graphics/decorations/decor_red_plant.gbapal.lz");
const u32 gUnknown_08DB8160[] = INCBIN_U32("graphics/decorations/decor_tropical_plant.4bpp.lz");
const u32 gUnknown_08DB8218[] = INCBIN_U32("graphics/decorations/decor_tropical_plant.gbapal.lz");
const u32 gDecorIcon_TropicalPlant[] = INCBIN_U32("graphics/decorations/decor_tropical_plant.4bpp.lz");
const u32 gDecorIconPalette_TropicalPlant[] = INCBIN_U32("graphics/decorations/decor_tropical_plant.gbapal.lz");
const u32 gUnknown_08DB823C[] = INCBIN_U32("graphics/decorations/decor_pretty_flowers.4bpp.lz");
const u32 gUnknown_08DB8300[] = INCBIN_U32("graphics/decorations/decor_pretty_flowers.gbapal.lz");
const u32 gDecorIcon_PrettyFlowers[] = INCBIN_U32("graphics/decorations/decor_pretty_flowers.4bpp.lz");
const u32 gDecorIconPalette_PrettyFlowers[] = INCBIN_U32("graphics/decorations/decor_pretty_flowers.gbapal.lz");
const u32 gUnknown_08DB8328[] = INCBIN_U32("graphics/decorations/decor_colorful_plant.4bpp.lz");
const u32 gUnknown_08DB8430[] = INCBIN_U32("graphics/decorations/decor_colorful_plant.gbapal.lz");
const u32 gDecorIcon_ColorfulPlant[] = INCBIN_U32("graphics/decorations/decor_colorful_plant.4bpp.lz");
const u32 gDecorIconPalette_ColorfulPlant[] = INCBIN_U32("graphics/decorations/decor_colorful_plant.gbapal.lz");
const u32 gUnknown_08DB8458[] = INCBIN_U32("graphics/decorations/decor_big_plant.4bpp.lz");
const u32 gUnknown_08DB8528[] = INCBIN_U32("graphics/decorations/decor_big_plant.gbapal.lz");
const u32 gDecorIcon_BigPlant[] = INCBIN_U32("graphics/decorations/decor_big_plant.4bpp.lz");
const u32 gDecorIconPalette_BigPlant[] = INCBIN_U32("graphics/decorations/decor_big_plant.gbapal.lz");
const u32 gUnknown_08DB854C[] = INCBIN_U32("graphics/decorations/decor_gorgeous_plant.4bpp.lz");
const u32 gUnknown_08DB862C[] = INCBIN_U32("graphics/decorations/decor_gorgeous_plant.gbapal.lz");
const u32 gDecorIcon_GorgeousPlant[] = INCBIN_U32("graphics/decorations/decor_gorgeous_plant.4bpp.lz");
const u32 gDecorIconPalette_GorgeousPlant[] = INCBIN_U32("graphics/decorations/decor_gorgeous_plant.gbapal.lz");
const u32 gUnknown_08DB8654[] = INCBIN_U32("graphics/decorations/decor_red_brick.4bpp.lz");
const u32 gUnknown_08DB86C4[] = INCBIN_U32("graphics/decorations/decor_red_brick.gbapal.lz");
const u32 gDecorIcon_RedBrick[] = INCBIN_U32("graphics/decorations/decor_red_brick.4bpp.lz");
const u32 gDecorIconPalette_RedBrick[] = INCBIN_U32("graphics/decorations/decor_red_brick.gbapal.lz");
const u32 gUnknown_08DB86E0[] = INCBIN_U32("graphics/decorations/decor_yellow_brick.4bpp.lz");
const u32 gUnknown_08DB8750[] = INCBIN_U32("graphics/decorations/decor_yellow_brick.gbapal.lz");
const u32 gDecorIcon_YellowBrick[] = INCBIN_U32("graphics/decorations/decor_yellow_brick.4bpp.lz");
const u32 gDecorIconPalette_YellowBrick[] = INCBIN_U32("graphics/decorations/decor_yellow_brick.gbapal.lz");
const u32 gUnknown_08DB876C[] = INCBIN_U32("graphics/decorations/decor_blue_brick.4bpp.lz");
const u32 gUnknown_08DB87DC[] = INCBIN_U32("graphics/decorations/decor_blue_brick.gbapal.lz");
const u32 gDecorIcon_BlueBrick[] = INCBIN_U32("graphics/decorations/decor_blue_brick.4bpp.lz");
const u32 gDecorIconPalette_BlueBrick[] = INCBIN_U32("graphics/decorations/decor_blue_brick.gbapal.lz");
const u32 gUnknown_08DB87F8[] = INCBIN_U32("graphics/decorations/decor_red_tent.4bpp.lz");
const u32 gUnknown_08DB88D8[] = INCBIN_U32("graphics/decorations/decor_red_tent.gbapal.lz");
const u32 gDecorIcon_RedTent[] = INCBIN_U32("graphics/decorations/decor_red_tent.4bpp.lz");
const u32 gDecorIconPalette_RedTent[] = INCBIN_U32("graphics/decorations/decor_red_tent.gbapal.lz");
const u32 gUnknown_08DB8900[] = INCBIN_U32("graphics/decorations/decor_blue_tent.4bpp.lz");
const u32 gUnknown_08DB89E0[] = INCBIN_U32("graphics/decorations/decor_blue_tent.gbapal.lz");
const u32 gDecorIcon_BlueTent[] = INCBIN_U32("graphics/decorations/decor_blue_tent.4bpp.lz");
const u32 gDecorIconPalette_BlueTent[] = INCBIN_U32("graphics/decorations/decor_blue_tent.gbapal.lz");
const u32 gUnknown_08DB8A08[] = INCBIN_U32("graphics/decorations/decor_solid_board.4bpp.lz");
const u32 gUnknown_08DB8A68[] = INCBIN_U32("graphics/decorations/decor_solid_board.gbapal.lz");
const u32 gDecorIcon_SolidBoard[] = INCBIN_U32("graphics/decorations/decor_solid_board.4bpp.lz");
const u32 gDecorIconPalette_SolidBoard[] = INCBIN_U32("graphics/decorations/decor_solid_board.gbapal.lz");
const u32 gUnknown_08DB8A84[] = INCBIN_U32("graphics/decorations/decor_slide.4bpp.lz");
const u32 gUnknown_08DB8B40[] = INCBIN_U32("graphics/decorations/decor_slide.gbapal.lz");
const u32 gDecorIcon_Slide[] = INCBIN_U32("graphics/decorations/decor_slide.4bpp.lz");
const u32 gDecorIconPalette_Slide[] = INCBIN_U32("graphics/decorations/decor_slide.gbapal.lz");
const u32 gUnknown_08DB8B68[] = INCBIN_U32("graphics/decorations/decor_tire.4bpp.lz");
const u32 gUnknown_08DB8C40[] = INCBIN_U32("graphics/decorations/decor_tire.gbapal.lz");
const u32 gDecorIcon_Tire[] = INCBIN_U32("graphics/decorations/decor_tire.4bpp.lz");
const u32 gDecorIconPalette_Tire[] = INCBIN_U32("graphics/decorations/decor_tire.gbapal.lz");
const u32 gUnknown_08DB8C5C[] = INCBIN_U32("graphics/decorations/decor_stand.4bpp.lz");
const u32 gUnknown_08DB8CF4[] = INCBIN_U32("graphics/decorations/decor_stand.gbapal.lz");
const u32 gDecorIcon_Stand[] = INCBIN_U32("graphics/decorations/decor_stand.4bpp.lz");
const u32 gDecorIconPalette_Stand[] = INCBIN_U32("graphics/decorations/decor_stand.gbapal.lz");
const u32 gUnknown_08DB8D18[] = INCBIN_U32("graphics/decorations/decor_breakable_door.4bpp.lz");
const u32 gUnknown_08DB8DB0[] = INCBIN_U32("graphics/decorations/decor_breakable_door.gbapal.lz");
const u32 gDecorIcon_BreakableDoor[] = INCBIN_U32("graphics/decorations/decor_breakable_door.4bpp.lz");
const u32 gDecorIconPalette_BreakableDoor[] = INCBIN_U32("graphics/decorations/decor_breakable_door.gbapal.lz");
const u32 gUnknown_08DB8DD4[] = INCBIN_U32("graphics/decorations/decor_sand_ornament.4bpp.lz");
const u32 gUnknown_08DB8E80[] = INCBIN_U32("graphics/decorations/decor_sand_ornament.gbapal.lz");
const u32 gDecorIcon_SandOrnament[] = INCBIN_U32("graphics/decorations/decor_sand_ornament.4bpp.lz");
const u32 gDecorIconPalette_SandOrnament[] = INCBIN_U32("graphics/decorations/decor_sand_ornament.gbapal.lz");
const u32 gUnknown_08DB8EA0[] = INCBIN_U32("graphics/decorations/decor_glass_ornament.4bpp.lz");
const u32 gUnknown_08DB8F58[] = INCBIN_U32("graphics/decorations/decor_glass_ornament.gbapal.lz");
const u32 gDecorIcon_GlassOrnament[] = INCBIN_U32("graphics/decorations/decor_glass_ornament.4bpp.lz");
const u32 gDecorIconPalette_GlassOrnament[] = INCBIN_U32("graphics/decorations/decor_glass_ornament.gbapal.lz");
const u32 gUnknown_08DB8F7C[] = INCBIN_U32("graphics/decorations/decor_surf_mat.4bpp.lz");
const u32 gUnknown_08DB9038[] = INCBIN_U32("graphics/decorations/decor_surf_mat.gbapal.lz");
const u32 gDecorIcon_SurfMat[] = INCBIN_U32("graphics/decorations/decor_surf_mat.4bpp.lz");
const u32 gDecorIconPalette_SurfMat[] = INCBIN_U32("graphics/decorations/decor_surf_mat.gbapal.lz");
const u32 gUnknown_08DB9058[] = INCBIN_U32("graphics/decorations/decor_thunder_mat.4bpp.lz");
const u32 gUnknown_08DB9130[] = INCBIN_U32("graphics/decorations/decor_thunder_mat.gbapal.lz");
const u32 gDecorIcon_ThunderMat[] = INCBIN_U32("graphics/decorations/decor_thunder_mat.4bpp.lz");
const u32 gDecorIconPalette_ThunderMat[] = INCBIN_U32("graphics/decorations/decor_thunder_mat.gbapal.lz");
const u32 gUnknown_08DB9154[] = INCBIN_U32("graphics/decorations/decor_fire_blast_mat.4bpp.lz");
const u32 gUnknown_08DB9218[] = INCBIN_U32("graphics/decorations/decor_fire_blast_mat.gbapal.lz");
const u32 gDecorIcon_FireBlastMat[] = INCBIN_U32("graphics/decorations/decor_fire_blast_mat.4bpp.lz");
const u32 gDecorIconPalette_FireBlastMat[] = INCBIN_U32("graphics/decorations/decor_fire_blast_mat.gbapal.lz");
const u32 gUnknown_08DB9234[] = INCBIN_U32("graphics/decorations/decor_powder_snow_mat.4bpp.lz");
const u32 gUnknown_08DB92FC[] = INCBIN_U32("graphics/decorations/decor_powder_snow_mat.gbapal.lz");
const u32 gDecorIcon_PowderSnowMat[] = INCBIN_U32("graphics/decorations/decor_powder_snow_mat.4bpp.lz");
const u32 gDecorIconPalette_PowderSnowMat[] = INCBIN_U32("graphics/decorations/decor_powder_snow_mat.gbapal.lz");
const u32 gUnknown_08DB931C[] = INCBIN_U32("graphics/decorations/decor_attract_mat.4bpp.lz");
const u32 gUnknown_08DB93E8[] = INCBIN_U32("graphics/decorations/decor_attract_mat.gbapal.lz");
const u32 gDecorIcon_AttractMat[] = INCBIN_U32("graphics/decorations/decor_attract_mat.4bpp.lz");
const u32 gDecorIconPalette_AttractMat[] = INCBIN_U32("graphics/decorations/decor_attract_mat.gbapal.lz");
const u32 gUnknown_08DB940C[] = INCBIN_U32("graphics/decorations/decor_fissure_mat.4bpp.lz");
const u32 gUnknown_08DB94CC[] = INCBIN_U32("graphics/decorations/decor_fissure_mat.gbapal.lz");
const u32 gDecorIcon_FissureMat[] = INCBIN_U32("graphics/decorations/decor_fissure_mat.4bpp.lz");
const u32 gDecorIconPalette_FissureMat[] = INCBIN_U32("graphics/decorations/decor_fissure_mat.gbapal.lz");
const u32 gUnknown_08DB94E8[] = INCBIN_U32("graphics/decorations/decor_spikes_mat.4bpp.lz");
const u32 gUnknown_08DB95AC[] = INCBIN_U32("graphics/decorations/decor_spikes_mat.gbapal.lz");
const u32 gDecorIcon_SpikesMat[] = INCBIN_U32("graphics/decorations/decor_spikes_mat.4bpp.lz");
const u32 gDecorIconPalette_SpikesMat[] = INCBIN_U32("graphics/decorations/decor_spikes_mat.gbapal.lz");
const u32 gUnknown_08DB95D0[] = INCBIN_U32("graphics/decorations/decor_snorlax_doll.4bpp.lz");
const u32 gUnknown_08DB96C4[] = INCBIN_U32("graphics/decorations/decor_snorlax_doll.gbapal.lz");
const u32 gDecorIcon_SnorlaxDoll[] = INCBIN_U32("graphics/decorations/decor_snorlax_doll.4bpp.lz");
const u32 gDecorIconPalette_SnorlaxDoll[] = INCBIN_U32("graphics/decorations/decor_snorlax_doll.gbapal.lz");
const u32 gUnknown_08DB96EC[] = INCBIN_U32("graphics/decorations/decor_rhydon_doll.4bpp.lz");
const u32 gUnknown_08DB97F4[] = INCBIN_U32("graphics/decorations/decor_rhydon_doll.gbapal.lz");
const u32 gDecorIcon_RhydonDoll[] = INCBIN_U32("graphics/decorations/decor_rhydon_doll.4bpp.lz");
const u32 gDecorIconPalette_RhydonDoll[] = INCBIN_U32("graphics/decorations/decor_rhydon_doll.gbapal.lz");
const u32 gUnknown_08DB981C[] = INCBIN_U32("graphics/decorations/decor_lapras_doll.4bpp.lz");
const u32 gUnknown_08DB9908[] = INCBIN_U32("graphics/decorations/decor_lapras_doll.gbapal.lz");
const u32 gDecorIcon_LaprasDoll[] = INCBIN_U32("graphics/decorations/decor_lapras_doll.4bpp.lz");
const u32 gDecorIconPalette_LaprasDoll[] = INCBIN_U32("graphics/decorations/decor_lapras_doll.gbapal.lz");
const u32 gUnknown_08DB9930[] = INCBIN_U32("graphics/decorations/decor_venusaur_doll.4bpp.lz");
const u32 gUnknown_08DB9A54[] = INCBIN_U32("graphics/decorations/decor_venusaur_doll.gbapal.lz");
const u32 gDecorIcon_VenusaurDoll[] = INCBIN_U32("graphics/decorations/decor_venusaur_doll.4bpp.lz");
const u32 gDecorIconPalette_VenusaurDoll[] = INCBIN_U32("graphics/decorations/decor_venusaur_doll.gbapal.lz");
const u32 gUnknown_08DB9A7C[] = INCBIN_U32("graphics/decorations/decor_charizard_doll.4bpp.lz");
const u32 gUnknown_08DB9B7C[] = INCBIN_U32("graphics/decorations/decor_charizard_doll.gbapal.lz");
const u32 gDecorIcon_CharizardDoll[] = INCBIN_U32("graphics/decorations/decor_charizard_doll.4bpp.lz");
const u32 gDecorIconPalette_CharizardDoll[] = INCBIN_U32("graphics/decorations/decor_charizard_doll.gbapal.lz");
const u32 gUnknown_08DB9BA4[] = INCBIN_U32("graphics/decorations/decor_blastoise_doll.4bpp.lz");
const u32 gUnknown_08DB9CB0[] = INCBIN_U32("graphics/decorations/decor_blastoise_doll.gbapal.lz");
const u32 gDecorIcon_BlastoiseDoll[] = INCBIN_U32("graphics/decorations/decor_blastoise_doll.4bpp.lz");
const u32 gDecorIconPalette_BlastoiseDoll[] = INCBIN_U32("graphics/decorations/decor_blastoise_doll.gbapal.lz");
const u32 gUnknown_08DB9CD8[] = INCBIN_U32("graphics/decorations/decor_wailmer_doll.4bpp.lz");
const u32 gUnknown_08DB9DAC[] = INCBIN_U32("graphics/decorations/decor_wailmer_doll.gbapal.lz");
const u32 gDecorIcon_WailmerDoll[] = INCBIN_U32("graphics/decorations/decor_wailmer_doll.4bpp.lz");
const u32 gDecorIconPalette_WailmerDoll[] = INCBIN_U32("graphics/decorations/decor_wailmer_doll.gbapal.lz");
const u32 gUnknown_08DB9DD4[] = INCBIN_U32("graphics/decorations/decor_regice_doll.4bpp.lz");
const u32 gUnknown_08DB9EE4[] = INCBIN_U32("graphics/decorations/decor_regice_doll.gbapal.lz");
const u32 gDecorIcon_RegiceDoll[] = INCBIN_U32("graphics/decorations/decor_regice_doll.4bpp.lz");
const u32 gDecorIconPalette_RegiceDoll[] = INCBIN_U32("graphics/decorations/decor_regice_doll.gbapal.lz");
const u32 gUnknown_08DB9F08[] = INCBIN_U32("graphics/decorations/decor_regirock_doll.4bpp.lz");
const u32 gUnknown_08DB9FFC[] = INCBIN_U32("graphics/decorations/decor_regirock_doll.gbapal.lz");
const u32 gDecorIcon_RegirockDoll[] = INCBIN_U32("graphics/decorations/decor_regirock_doll.4bpp.lz");
const u32 gDecorIconPalette_RegirockDoll[] = INCBIN_U32("graphics/decorations/decor_regirock_doll.gbapal.lz");
const u32 gUnknown_08DBA020[] = INCBIN_U32("graphics/decorations/decor_registeel_doll.4bpp.lz");
const u32 gUnknown_08DBA12C[] = INCBIN_U32("graphics/decorations/decor_registeel_doll.gbapal.lz");
const u32 gDecorIcon_RegisteelDoll[] = INCBIN_U32("graphics/decorations/decor_registeel_doll.4bpp.lz");
const u32 gDecorIconPalette_RegisteelDoll[] = INCBIN_U32("graphics/decorations/decor_registeel_doll.gbapal.lz");
+470
View File
@@ -0,0 +1,470 @@
#include "constants/easy_chat.h"
#include "constants/event_objects.h"
#include "constants/items.h"
#include "constants/species.h"
#include "constants/moves.h"
static const u16 sContestLadyMonGfxId[] =
{
EVENT_OBJ_GFX_ZIGZAGOON_1,
EVENT_OBJ_GFX_SKITTY,
EVENT_OBJ_GFX_POOCHYENA,
EVENT_OBJ_GFX_KECLEON_1,
EVENT_OBJ_GFX_PIKACHU
};
static const u16 sLilycoveLadyGfxId[] =
{
EVENT_OBJ_GFX_WOMAN_4,
EVENT_OBJ_GFX_WOMAN_2,
EVENT_OBJ_GFX_GIRL_2
};
// Quiz Lady data
static const u16 sQuizLadyQuestion1[] =
{
EC_WORD_WHICH,
EC_WORD_STORES,
EC_WORD_INFORMATION,
EC_WORD_ON,
EC_WORD_POKEMON,
EC_WORD_QUES,
EC_WORD_CAMERA,
EC_WORD_POKEDEX,
EC_WORD_POKENAV
};
static const u16 sQuizLadyQuestion2[] =
{
EC_WORD_WHICH,
EC_WORD_ISN_T,
EC_WORD_A,
EC_WORD_GAME,
EC_WORD_VERSION,
EC_WORD_QUES,
EC_WORD_RUBY,
EC_WORD_SAPPHIRE,
EC_WORD_DARK
};
static const u16 sQuizLadyQuestion3[] =
{
EC_WORD_HOW,
EC_WORD_DO,
EC_WORD_POKEMON,
EC_WORD_EVOLVE,
EC_WORD_QUES,
0xFFFF,
EC_WORD_LEVEL,
EC_WORD_INSOMNIA,
EC_WORD_CUTE_CHARM
};
static const u16 sQuizLadyQuestion4[] =
{
EC_WORD_WHICH,
EC_WORD_IS,
EC_WORD_THE,
EC_WORD_PRETTY,
EC_WORD_ITEM,
EC_WORD_QUES,
EC_WORD_COLD,
EC_WORD_FLOWERS,
EC_WORD_MACHINE
};
static const u16 sQuizLadyQuestion5[] =
{
EC_WORD_WHICH,
EC_WORD_ITEM,
EC_WORD_DO,
EC_WORD_YOU,
EC_WORD_BREAK,
EC_WORD_QUES,
EC_WORD_EGG,
EC_WORD_MAIL,
EC_WORD_PHONE
};
static const u16 sQuizLadyQuestion6[] =
{
EC_WORD_WHICH,
EC_WORD_WILL,
EC_WORD_STOP,
EC_MOVE2(CONFUSION),
EC_WORD_QUES,
0xFFFF,
EC_WORD_ILLUMINATE,
EC_WORD_OWN_TEMPO,
EC_WORD_SWIFT_SWIM
};
static const u16 sQuizLadyQuestion7[] =
{
EC_WORD_WHICH,
EC_WORD_OF,
EC_WORD_THESE,
EC_WORD_IS,
EC_WORD_MUSIC,
EC_WORD_QUES,
EC_WORD_FLYING,
EC_WORD_STEEL,
EC_WORD_ROCK
};
static const u16 sQuizLadyQuestion8[] =
{
EC_WORD_WHICH,
EC_WORD_WILL,
EC_MOVE2(BLOCK),
EC_WORD_ESCAPE,
EC_WORD_QUES,
0xFFFF,
EC_WORD_RUN_AWAY,
EC_WORD_SHADOW_TAG,
EC_WORD_WONDER_GUARD
};
static const u16 sQuizLadyQuestion9[] =
{
EC_WORD_WHICH,
EC_WORD_WILL,
EC_WORD_STOP,
EC_WORD_POISON,
EC_WORD_QUES,
0xFFFF,
EC_WORD_GUTS,
EC_WORD_IMMUNITY,
EC_WORD_SHED_SKIN
};
static const u16 sQuizLadyQuestion10[] =
{
EC_WORD_WHICH,
EC_WORD_GOES,
EC_WORD_WITH,
EC_WORD_CENTER,
EC_WORD_QUES,
0xFFFF,
EC_WORD_POKEDEX,
EC_WORD_POKEMON,
EC_WORD_POKENAV
};
static const u16 sQuizLadyQuestion11[] =
{
EC_WORD_WHICH,
EC_WORD_STORES,
EC_WORD_YOUR,
EC_WORD_POKEMON,
EC_WORD_QUES,
0xFFFF,
EC_WORD_PC,
EC_WORD_DEPT_STORE,
EC_WORD_TELEVISION
};
static const u16 sQuizLadyQuestion12[] =
{
EC_WORD_WHICH,
EC_WORD_MACHINE,
EC_WORD_GIVES,
EC_WORD_YOU,
EC_WORD_INFORMATION,
EC_WORD_QUES,
EC_WORD_BIKE,
EC_WORD_LOCOMOTIVE,
EC_WORD_TELEVISION
};
static const u16 sQuizLadyQuestion13[] =
{
EC_WORD_A,
EC_WORD_POKEMON,
EC_WORD_WAS,
EC_WORD_ONCE,
EC_WORD_THIS,
EC_WORD_QUES,
EC_WORD_PHONE,
EC_WORD_PLUSH_DOLL,
EC_WORD_LETTER
};
static const u16 sQuizLadyQuestion14[] =
{
EC_WORD_STEEL,
EC_WORD_IS,
EC_WORD_STRONG,
EC_WORD_VERSUS,
EC_WORD_WHICH,
EC_WORD_QUES,
EC_WORD_ICE,
EC_WORD_GROUND,
0xFFFF
};
static const u16 sQuizLadyQuestion15[] =
{
EC_WORD_DARK,
EC_WORD_IS,
EC_WORD_WEAK,
EC_WORD_VERSUS,
EC_WORD_WHICH,
EC_WORD_QUES,
EC_WORD_PSYCHIC,
EC_WORD_FIGHTING,
0xFFFF
};
static const u16 sQuizLadyQuestion16[] =
{
EC_WORD_GHOST,
EC_WORD_IS,
EC_WORD_WEAK,
EC_WORD_VERSUS,
EC_WORD_WHICH,
EC_WORD_QUES,
EC_WORD_NORMAL,
EC_WORD_DARK,
0xFFFF
};
static const u16 *const sQuizLadyQuizQuestions[] =
{
sQuizLadyQuestion1,
sQuizLadyQuestion2,
sQuizLadyQuestion3,
sQuizLadyQuestion4,
sQuizLadyQuestion5,
sQuizLadyQuestion6,
sQuizLadyQuestion7,
sQuizLadyQuestion8,
sQuizLadyQuestion9,
sQuizLadyQuestion10,
sQuizLadyQuestion11,
sQuizLadyQuestion12,
sQuizLadyQuestion13,
sQuizLadyQuestion14,
sQuizLadyQuestion15,
sQuizLadyQuestion16
};
static const u16 sQuizLadyQuizAnswers[] =
{
EC_WORD_POKEDEX,
EC_WORD_DARK,
EC_WORD_LEVEL,
EC_WORD_FLOWERS,
EC_WORD_EGG,
EC_WORD_OWN_TEMPO,
EC_WORD_ROCK,
EC_WORD_SHADOW_TAG,
EC_WORD_IMMUNITY,
EC_WORD_POKEMON,
EC_WORD_PC,
EC_WORD_TELEVISION,
EC_WORD_PLUSH_DOLL,
EC_WORD_ICE,
EC_WORD_FIGHTING,
EC_WORD_DARK
};
static const u16 sQuizLadyPrizes[] =
{
ITEM_GLITTER_MAIL,
ITEM_BEAD_MAIL,
ITEM_TROPIC_MAIL,
ITEM_MAX_ETHER,
ITEM_MAX_ETHER,
ITEM_MAX_ETHER,
ITEM_WATMEL_BERRY,
ITEM_BELUE_BERRY,
ITEM_DURIN_BERRY,
ITEM_LUXURY_BALL,
ITEM_TM15_HYPER_BEAM,
ITEM_BIG_PEARL,
ITEM_STAR_PIECE,
ITEM_RARE_CANDY,
ITEM_RARE_CANDY,
ITEM_PREMIER_BALL
};
// Favor Lady data
static const u8 *const sFavorLadyRequests[] =
{
gText_FavorLady_Slippery,
gText_FavorLady_Roundish,
gText_FavorLady_Whamish,
gText_FavorLady_Shiny,
gText_FavorLady_Sticky,
gText_FavorLady_Pointy
};
static const u16 sFavorLadyAcceptedItems_Slippery[] =
{
ITEM_REPEL,
ITEM_SUPER_REPEL,
ITEM_MAX_REPEL,
ITEM_ANTIDOTE,
ITEM_PARALYZE_HEAL,
ITEM_BURN_HEAL,
ITEM_BELUE_BERRY,
ITEM_AWAKENING,
ITEM_ICE_HEAL,
ITEM_REVIVE,
ITEM_MAX_REVIVE,
ITEM_ENERGY_POWDER,
ITEM_NONE
};
static const u16 sFavorLadyAcceptedItems_Roundish[] =
{
ITEM_FLUFFY_TAIL,
ITEM_PEARL,
ITEM_BIG_PEARL,
ITEM_HARD_STONE,
ITEM_SMOKE_BALL,
ITEM_SHOAL_SHELL,
ITEM_TINY_MUSHROOM,
ITEM_BIG_MUSHROOM,
ITEM_PECHA_BERRY,
ITEM_ASPEAR_BERRY,
ITEM_ORAN_BERRY,
ITEM_GREPA_BERRY,
ITEM_MAGOST_BERRY,
ITEM_WATMEL_BERRY,
ITEM_POKE_BALL,
ITEM_ULTRA_BALL,
ITEM_NONE
};
static const u16 sFavorLadyAcceptedItems_Whamish[] =
{
ITEM_REVIVAL_HERB,
ITEM_POTION,
ITEM_FRESH_WATER,
ITEM_SODA_POP,
ITEM_LEMONADE,
ITEM_HARD_STONE,
ITEM_LIGHT_BALL,
ITEM_LAVA_COOKIE,
ITEM_CHESTO_BERRY,
ITEM_NANAB_BERRY,
ITEM_WEPEAR_BERRY,
ITEM_KELPSY_BERRY,
ITEM_NOMEL_BERRY,
ITEM_DURIN_BERRY,
ITEM_NONE
};
static const u16 sFavorLadyAcceptedItems_Shiny[] =
{
ITEM_HEAL_POWDER,
ITEM_X_SPEED,
ITEM_X_ATTACK,
ITEM_X_DEFEND,
ITEM_BLUE_FLUTE,
ITEM_YELLOW_FLUTE,
ITEM_RED_FLUTE,
ITEM_BLACK_FLUTE,
ITEM_WHITE_FLUTE,
ITEM_NUGGET,
ITEM_SUN_STONE,
ITEM_STARDUST,
ITEM_STAR_PIECE,
ITEM_PEARL,
ITEM_BIG_PEARL,
ITEM_TWISTED_SPOON,
ITEM_SILVER_POWDER,
ITEM_BRIGHT_POWDER,
ITEM_LUXURY_BALL,
ITEM_PREMIER_BALL,
ITEM_NONE
};
static const u16 sFavorLadyAcceptedItems_Sticky[] =
{
ITEM_ENERGY_ROOT,
ITEM_FULL_RESTORE,
ITEM_MAX_POTION,
ITEM_DIRE_HIT,
ITEM_X_ACCURACY,
ITEM_GUARD_SPEC,
ITEM_WATMEL_BERRY,
ITEM_LEFTOVERS,
ITEM_TINY_MUSHROOM,
ITEM_HEART_SCALE,
ITEM_NONE
};
static const u16 sFavorLadyAcceptedItems_Pointy[] =
{
ITEM_QUICK_CLAW,
ITEM_POISON_BARB,
ITEM_SHARP_BEAK,
ITEM_DRAGON_FANG,
ITEM_TAMATO_BERRY,
ITEM_DURIN_BERRY,
ITEM_PETAYA_BERRY,
ITEM_SALAC_BERRY,
ITEM_STARDUST,
ITEM_STAR_PIECE,
ITEM_NONE
};
static const u16 *const sFavorLadyAcceptedItemLists[] =
{
sFavorLadyAcceptedItems_Slippery,
sFavorLadyAcceptedItems_Roundish,
sFavorLadyAcceptedItems_Whamish,
sFavorLadyAcceptedItems_Shiny,
sFavorLadyAcceptedItems_Sticky,
sFavorLadyAcceptedItems_Pointy
};
static const u16 sFavorLadyPrizes[] =
{
ITEM_LUXURY_BALL,
ITEM_NUGGET,
ITEM_PROTEIN,
ITEM_HEART_SCALE,
ITEM_RARE_CANDY,
ITEM_PP_MAX
};
static const u8 *const sContestLadyMonNames[] =
{
gText_ContestLady_Handsome,
gText_ContestLady_Vinny,
gText_ContestLady_Moreme,
gText_ContestLady_Ironhard,
gText_ContestLady_Muscle
};
static const u8 *const sContestLadyCategoryNames[] =
{
gText_ContestLady_Coolness,
gText_ContestLady_Beauty,
gText_ContestLady_Cuteness,
gText_ContestLady_Smartness,
gText_ContestLady_Toughness
};
static const u8 *const sContestNames[] =
{
gText_CoolnessContest,
gText_BeautyContest,
gText_CutenessContest,
gText_SmartnessContest,
gText_ToughnessContest
};
static const u16 sContestLadyMonSpecies[] =
{
SPECIES_ZIGZAGOON,
SPECIES_SKITTY,
SPECIES_POOCHYENA,
SPECIES_KECLEON,
SPECIES_PIKACHU
};
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+26
View File
@@ -3,6 +3,32 @@
{
"label": "gWildMonHeaders",
"for_maps": true,
"fields": [
{
"type": "land_mons",
"encounter_rates": [
20, 20, 10, 10, 10, 10, 5, 5, 4, 4, 1, 1
]
},
{
"type": "water_mons",
"encounter_rates": [
60, 30, 5, 4, 1
]
},
{
"type": "rock_smash_mons",
"encounter_rates": [
60, 30, 5, 4, 1
]
},
{
"type": "fishing_mons",
"encounter_rates": [
70, 30, 60, 20, 20, 40, 40, 15, 4, 1
]
}
],
"encounters": [
{
"map": "MAP_ROUTE101",
+11
View File
@@ -1,5 +1,16 @@
{{ doNotModifyHeader }}
## for wild_encounter_group in wild_encounter_groups
{% if wild_encounter_group.for_maps %}
## for wild_encounter_field in wild_encounter_group.fields
## for encounter_rate in wild_encounter_field.encounter_rates
{% if trackVar(encounter_rate, 100) %}
#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) }})
## endfor
{% endif %}
## for encounter in wild_encounter_group.encounters
{% if existsIn(encounter, "land_mons") %}
const struct WildPokemon {{ encounter.base_label }}_LandMons[] =
+138 -144
View File
@@ -3,14 +3,11 @@
#include "battle.h"
#include "daycare.h"
#include "string_util.h"
#include "constants/species.h"
#include "constants/items.h"
#include "mail.h"
#include "pokemon_storage_system.h"
#include "event_data.h"
#include "random.h"
#include "main.h"
#include "constants/moves.h"
#include "egg_hatch.h"
#include "text.h"
#include "menu.h"
@@ -22,9 +19,10 @@
#include "party_menu.h"
#include "list_menu.h"
#include "overworld.h"
#define EGG_MOVES_ARRAY_COUNT 10
#define EGG_LVL_UP_MOVES_ARRAY_COUNT 50
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/region_map_sections.h"
#include "constants/species.h"
// this file's functions
static void ClearDaycareMonMail(struct DayCareMail *mail);
@@ -34,10 +32,10 @@ static void DaycarePrintMonInfo(u8 windowId, s32 daycareSlotId, u8 y);
// RAM buffers used to assist with BuildEggMoveset()
EWRAM_DATA static u16 sHatchedEggLevelUpMoves[EGG_LVL_UP_MOVES_ARRAY_COUNT] = {0};
EWRAM_DATA static u16 sHatchedEggFatherMoves[4] = {0};
EWRAM_DATA static u16 sHatchedEggFinalMoves[4] = {0};
EWRAM_DATA static u16 sHatchedEggFatherMoves[MAX_MON_MOVES] = {0};
EWRAM_DATA static u16 sHatchedEggFinalMoves[MAX_MON_MOVES] = {0};
EWRAM_DATA static u16 sHatchedEggEggMoves[EGG_MOVES_ARRAY_COUNT] = {0};
EWRAM_DATA static u16 sHatchedEggMotherMoves[4] = {0};
EWRAM_DATA static u16 sHatchedEggMotherMoves[MAX_MON_MOVES] = {0};
#include "data/pokemon/egg_moves.h"
@@ -52,11 +50,13 @@ static const struct WindowTemplate sDaycareLevelMenuWindowTemplate =
.baseBlock = 8
};
// Indices here are assigned by Task_HandleDaycareLevelMenuInput to VAR_RESULT,
// which is copied to VAR_0x8004 and used as an index for GetDaycareCost
static const struct ListMenuItem sLevelMenuItems[] =
{
{gExpandedPlaceholder_Empty, 0},
{gExpandedPlaceholder_Empty, 1},
{gText_Exit, 5}
{gText_Exit, DAYCARE_LEVEL_MENU_EXIT}
};
static const struct ListMenuTemplate sDaycareListMenuLevelTemplate =
@@ -91,7 +91,7 @@ static const u8 *const sCompatibilityMessages[] =
static const u8 sJapaneseEggNickname[] = _("タマゴ"); // "tamago" ("egg" in Japanese)
u8 *GetMonNick(struct Pokemon *mon, u8 *dest)
u8 *GetMonNickname2(struct Pokemon *mon, u8 *dest)
{
u8 nickname[POKEMON_NAME_LENGTH * 2];
@@ -99,7 +99,7 @@ u8 *GetMonNick(struct Pokemon *mon, u8 *dest)
return StringCopy10(dest, nickname);
}
u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest)
u8 *GetBoxMonNickname(struct BoxPokemon *mon, u8 *dest)
{
u8 nickname[POKEMON_NAME_LENGTH * 2];
@@ -169,7 +169,7 @@ static void StorePokemonInDaycare(struct Pokemon *mon, struct DaycareMon *daycar
u8 mailId;
StringCopy(daycareMon->mail.OT_name, gSaveBlock2Ptr->playerName);
GetMonNick(mon, daycareMon->mail.monName);
GetMonNickname2(mon, daycareMon->mail.monName);
StripExtCtrlCodes(daycareMon->mail.monName);
daycareMon->mail.gameLanguage = LANGUAGE_ENGLISH;
daycareMon->mail.monLanguage = GetMonData(mon, MON_DATA_LANGUAGE);
@@ -202,8 +202,8 @@ void StoreSelectedPokemonInDaycare(void)
static void ShiftDaycareSlots(struct DayCare *daycare)
{
// This condition is only satisfied when the player takes out the first pokemon from the daycare.
if (GetBoxMonData(&daycare->mons[1].mon, MON_DATA_SPECIES) != 0
&& GetBoxMonData(&daycare->mons[0].mon, MON_DATA_SPECIES) == 0)
if (GetBoxMonData(&daycare->mons[1].mon, MON_DATA_SPECIES) != SPECIES_NONE
&& GetBoxMonData(&daycare->mons[0].mon, MON_DATA_SPECIES) == SPECIES_NONE)
{
daycare->mons[0].mon = daycare->mons[1].mon;
ZeroBoxMonData(&daycare->mons[1].mon);
@@ -254,7 +254,7 @@ static u16 TakeSelectedPokemonFromDaycare(struct DaycareMon *daycareMon)
u32 experience;
struct Pokemon pokemon;
GetBoxMonNick(&daycareMon->mon, gStringVar1);
GetBoxMonNickname(&daycareMon->mon, gStringVar1);
species = GetBoxMonData(&daycareMon->mon, MON_DATA_SPECIES);
BoxMonToMon(&daycareMon->mon, &pokemon);
@@ -314,7 +314,7 @@ static u8 GetNumLevelsGainedForDaycareMon(struct DaycareMon *daycareMon)
{
u8 numLevelsGained = GetNumLevelsGainedFromSteps(daycareMon);
ConvertIntToDecimalStringN(gStringVar2, numLevelsGained, STR_CONV_MODE_LEFT_ALIGN, 2);
GetBoxMonNick(&daycareMon->mon, gStringVar1);
GetBoxMonNickname(&daycareMon->mon, gStringVar1);
return numLevelsGained;
}
@@ -323,7 +323,7 @@ static u32 GetDaycareCostForSelectedMon(struct DaycareMon *daycareMon)
u32 cost;
u8 numLevelsGained = GetNumLevelsGainedFromSteps(daycareMon);
GetBoxMonNick(&daycareMon->mon, gStringVar1);
GetBoxMonNickname(&daycareMon->mon, gStringVar1);
cost = 100 + 100 * numLevelsGained;
ConvertIntToDecimalStringN(gStringVar2, cost, STR_CONV_MODE_LEFT_ALIGN, 5);
return cost;
@@ -419,18 +419,18 @@ static u16 GetEggSpecies(u16 species)
return species;
}
static s32 GetSlotToInheritNature(struct DayCare *daycare)
static s32 GetParentToInheritNature(struct DayCare *daycare)
{
u32 species[DAYCARE_MON_COUNT];
s32 i;
s32 dittoCount;
s32 slot = -1;
s32 parent = -1;
// search for female gender
for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
if (GetBoxMonGender(&daycare->mons[i].mon) == MON_FEMALE)
slot = i;
parent = i;
}
// search for ditto
@@ -438,50 +438,52 @@ static s32 GetSlotToInheritNature(struct DayCare *daycare)
{
species[i] = GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES);
if (species[i] == SPECIES_DITTO)
dittoCount++, slot = i;
dittoCount++, parent = i;
}
// coin flip on ...two Dittos
if (dittoCount == 2)
if (dittoCount == DAYCARE_MON_COUNT)
{
if (Random() >= USHRT_MAX / 2)
slot = 0;
parent = 0;
else
slot = 1;
parent = 1;
}
// nature inheritance only if holds everstone
if (GetBoxMonData(&daycare->mons[slot].mon, MON_DATA_HELD_ITEM) != ITEM_EVERSTONE
// Don't inherit nature if not holding Everstone
if (GetBoxMonData(&daycare->mons[parent].mon, MON_DATA_HELD_ITEM) != ITEM_EVERSTONE
|| Random() >= USHRT_MAX / 2)
{
return -1;
}
return slot;
return parent;
}
static void _TriggerPendingDaycareEgg(struct DayCare *daycare)
{
s32 natureSlot;
s32 parent;
s32 natureTries = 0;
SeedRng2(gMain.vblankCounter2);
natureSlot = GetSlotToInheritNature(daycare);
parent = GetParentToInheritNature(daycare);
if (natureSlot < 0)
// don't inherit nature
if (parent < 0)
{
daycare->offspringPersonality = (Random2() << 0x10) | ((Random() % 0xfffe) + 1);
daycare->offspringPersonality = (Random2() << 16) | ((Random() % 0xfffe) + 1);
}
// inherit nature
else
{
u8 wantedNature = GetNatureFromPersonality(GetBoxMonData(&daycare->mons[natureSlot].mon, MON_DATA_PERSONALITY, NULL));
u8 wantedNature = GetNatureFromPersonality(GetBoxMonData(&daycare->mons[parent].mon, MON_DATA_PERSONALITY, NULL));
u32 personality;
do
{
personality = (Random2() << 0x10) | (Random());
personality = (Random2() << 16) | (Random());
if (wantedNature == GetNatureFromPersonality(personality) && personality != 0)
break; // we found a personality with the same nature
break; // found a personality with the same nature
natureTries++;
} while (natureTries <= 2400);
@@ -492,9 +494,10 @@ static void _TriggerPendingDaycareEgg(struct DayCare *daycare)
FlagSet(FLAG_PENDING_DAYCARE_EGG);
}
// Functionally unused
static void _TriggerPendingDaycareMaleEgg(struct DayCare *daycare)
{
daycare->offspringPersonality = (Random()) | (0x8000);
daycare->offspringPersonality = (Random()) | (EGG_GENDER_MALE);
FlagSet(FLAG_PENDING_DAYCARE_EGG);
}
@@ -503,6 +506,7 @@ void TriggerPendingDaycareEgg(void)
_TriggerPendingDaycareEgg(&gSaveBlock1Ptr->daycare);
}
// Unused
static void TriggerPendingDaycareMaleEgg(void)
{
_TriggerPendingDaycareMaleEgg(&gSaveBlock1Ptr->daycare);
@@ -532,9 +536,9 @@ static void RemoveIVIndexFromList(u8 *ivs, u8 selectedIv)
static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare)
{
u8 i;
u8 selectedIvs[3];
u8 selectedIvs[INHERITED_IV_COUNT];
u8 availableIVs[NUM_STATS];
u8 whichParent[ARRAY_COUNT(selectedIvs)];
u8 whichParents[INHERITED_IV_COUNT];
u8 iv;
// Initialize a list of IV indices.
@@ -544,48 +548,46 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare)
}
// Select the 3 IVs that will be inherited.
for (i = 0; i < ARRAY_COUNT(selectedIvs); i++)
for (i = 0; i < INHERITED_IV_COUNT; i++)
{
// Randomly pick an IV from the available list.
// Randomly pick an IV from the available list and stop from being chosen again.
selectedIvs[i] = availableIVs[Random() % (NUM_STATS - i)];
// Remove the selected IV index from the available IV indices.
RemoveIVIndexFromList(availableIVs, i);
}
// Determine which parent each of the selected IVs should inherit from.
for (i = 0; i < ARRAY_COUNT(selectedIvs); i++)
for (i = 0; i < INHERITED_IV_COUNT; i++)
{
whichParent[i] = Random() % 2;
whichParents[i] = Random() % DAYCARE_MON_COUNT;
}
// Set each of inherited IVs on the egg mon.
for (i = 0; i < ARRAY_COUNT(selectedIvs); i++)
for (i = 0; i < INHERITED_IV_COUNT; i++)
{
switch (selectedIvs[i])
{
case 0:
iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_HP_IV);
iv = GetBoxMonData(&daycare->mons[whichParents[i]].mon, MON_DATA_HP_IV);
SetMonData(egg, MON_DATA_HP_IV, &iv);
break;
case 1:
iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_ATK_IV);
iv = GetBoxMonData(&daycare->mons[whichParents[i]].mon, MON_DATA_ATK_IV);
SetMonData(egg, MON_DATA_ATK_IV, &iv);
break;
case 2:
iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_DEF_IV);
iv = GetBoxMonData(&daycare->mons[whichParents[i]].mon, MON_DATA_DEF_IV);
SetMonData(egg, MON_DATA_DEF_IV, &iv);
break;
case 3:
iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_SPEED_IV);
iv = GetBoxMonData(&daycare->mons[whichParents[i]].mon, MON_DATA_SPEED_IV);
SetMonData(egg, MON_DATA_SPEED_IV, &iv);
break;
case 4:
iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_SPATK_IV);
iv = GetBoxMonData(&daycare->mons[whichParents[i]].mon, MON_DATA_SPATK_IV);
SetMonData(egg, MON_DATA_SPATK_IV, &iv);
break;
case 5:
iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_SPDEF_IV);
iv = GetBoxMonData(&daycare->mons[whichParents[i]].mon, MON_DATA_SPDEF_IV);
SetMonData(egg, MON_DATA_SPDEF_IV, &iv);
break;
}
@@ -638,14 +640,14 @@ static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, stru
numSharedParentMoves = 0;
for (i = 0; i < MAX_MON_MOVES; i++)
{
sHatchedEggMotherMoves[i] = 0;
sHatchedEggFatherMoves[i] = 0;
sHatchedEggFinalMoves[i] = 0;
sHatchedEggMotherMoves[i] = MOVE_NONE;
sHatchedEggFatherMoves[i] = MOVE_NONE;
sHatchedEggFinalMoves[i] = MOVE_NONE;
}
for (i = 0; i < EGG_MOVES_ARRAY_COUNT; i++)
sHatchedEggEggMoves[i] = 0;
sHatchedEggEggMoves[i] = MOVE_NONE;
for (i = 0; i < EGG_LVL_UP_MOVES_ARRAY_COUNT; i++)
sHatchedEggLevelUpMoves[i] = 0;
sHatchedEggLevelUpMoves[i] = MOVE_NONE;
numLevelUpMoves = GetLevelUpMovesBySpecies(GetMonData(egg, MON_DATA_SPECIES), sHatchedEggLevelUpMoves);
for (i = 0; i < MAX_MON_MOVES; i++)
@@ -761,13 +763,10 @@ static void GiveVoltTackleIfLightBall(struct Pokemon *mon, struct DayCare *dayca
static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parentSlots)
{
u16 i;
u16 species[2];
u16 species[DAYCARE_MON_COUNT];
u16 eggSpecies;
// Determine which of the daycare mons is the mother and father of the egg.
// The 0th index of the parentSlots array is considered the mother slot, and the
// 1st index is the father slot.
for (i = 0; i < 2; i++)
for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
species[i] = GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES);
if (species[i] == SPECIES_DITTO)
@@ -783,11 +782,11 @@ static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parent
}
eggSpecies = GetEggSpecies(species[parentSlots[0]]);
if (eggSpecies == SPECIES_NIDORAN_F && daycare->offspringPersonality & 0x8000)
if (eggSpecies == SPECIES_NIDORAN_F && daycare->offspringPersonality & EGG_GENDER_MALE)
{
eggSpecies = SPECIES_NIDORAN_M;
}
if (eggSpecies == SPECIES_ILLUMISE && daycare->offspringPersonality & 0x8000)
if (eggSpecies == SPECIES_ILLUMISE && daycare->offspringPersonality & EGG_GENDER_MALE)
{
eggSpecies = SPECIES_VOLBEAT;
}
@@ -795,19 +794,19 @@ static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parent
// Make Ditto the "mother" slot if the other daycare mon is male.
if (species[parentSlots[1]] == SPECIES_DITTO && GetBoxMonGender(&daycare->mons[parentSlots[0]].mon) != MON_FEMALE)
{
u8 temp = parentSlots[1];
u8 ditto = parentSlots[1];
parentSlots[1] = parentSlots[0];
parentSlots[0] = temp;
parentSlots[0] = ditto;
}
return eggSpecies;
}
static void _GiveEggFromDaycare(struct DayCare *daycare) // give_egg
static void _GiveEggFromDaycare(struct DayCare *daycare)
{
struct Pokemon egg;
u16 species;
u8 parentSlots[2]; // 0th index is "mother" daycare slot, 1st is "father"
u8 parentSlots[DAYCARE_MON_COUNT];
bool8 isEgg;
species = DetermineEggSpeciesAndParentSlots(daycare, parentSlots);
@@ -835,7 +834,7 @@ void CreateEgg(struct Pokemon *mon, u16 species, bool8 setHotSpringsLocation)
u8 metLocation;
u8 isEgg;
CreateMon(mon, species, EGG_HATCH_LEVEL, 0x20, FALSE, 0, FALSE, 0);
CreateMon(mon, species, EGG_HATCH_LEVEL, 32, FALSE, 0, OT_ID_PLAYER_ID, 0);
metLevel = 0;
ball = ITEM_POKE_BALL;
language = LANGUAGE_JAPANESE;
@@ -846,7 +845,7 @@ void CreateEgg(struct Pokemon *mon, u16 species, bool8 setHotSpringsLocation)
SetMonData(mon, MON_DATA_LANGUAGE, &language);
if (setHotSpringsLocation)
{
metLocation = 253; // hot springs; see PokemonSummaryScreen_PrintEggTrainerMemo
metLocation = METLOC_SPECIAL_EGG;
SetMonData(mon, MON_DATA_MET_LOCATION, &metLocation);
}
@@ -862,7 +861,7 @@ static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *
u8 language;
personality = daycare->offspringPersonality;
CreateMon(mon, species, EGG_HATCH_LEVEL, 0x20, TRUE, personality, FALSE, 0);
CreateMon(mon, species, EGG_HATCH_LEVEL, 32, TRUE, personality, OT_ID_PLAYER_ID, 0);
metLevel = 0;
ball = ITEM_POKE_BALL;
language = LANGUAGE_JAPANESE;
@@ -878,7 +877,7 @@ void GiveEggFromDaycare(void)
_GiveEggFromDaycare(&gSaveBlock1Ptr->daycare);
}
static bool8 _DoEggActions_CheckHatch(struct DayCare *daycare)
static bool8 TryProduceOrHatchEgg(struct DayCare *daycare)
{
u32 i, validEggs = 0;
@@ -888,15 +887,16 @@ static bool8 _DoEggActions_CheckHatch(struct DayCare *daycare)
daycare->mons[i].steps++, validEggs++;
}
// try to trigger poke sex
if (daycare->offspringPersonality == 0 && validEggs == 2 && (daycare->mons[1].steps & 0xFF) == 0xFF)
// Check if an egg should be produced
if (daycare->offspringPersonality == 0 && validEggs == DAYCARE_MON_COUNT && (daycare->mons[1].steps & 0xFF) == 0xFF)
{
u8 loveScore = GetDaycareCompatibilityScore(daycare);
if (loveScore > (Random() * 100u) / USHRT_MAX)
u8 compatability = GetDaycareCompatibilityScore(daycare);
if (compatability > (Random() * 100u) / USHRT_MAX)
TriggerPendingDaycareEgg();
}
if (++daycare->stepCounter == 255) // hatch an egg
// Hatch Egg
if (++daycare->stepCounter == 255)
{
u32 steps;
u8 toSub = GetEggStepsToSubtract();
@@ -909,7 +909,7 @@ static bool8 _DoEggActions_CheckHatch(struct DayCare *daycare)
continue;
steps = GetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP);
if (steps != 0) // subtract needed steps
if (steps != 0)
{
if (steps >= toSub)
steps -= toSub;
@@ -918,7 +918,7 @@ static bool8 _DoEggActions_CheckHatch(struct DayCare *daycare)
SetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP, &steps);
}
else // hatch the egg
else
{
gSpecialVar_0x8004 = i;
return TRUE;
@@ -926,12 +926,12 @@ static bool8 _DoEggActions_CheckHatch(struct DayCare *daycare)
}
}
return FALSE; // no hatching
return FALSE;
}
bool8 ShouldEggHatch(void)
{
return _DoEggActions_CheckHatch(&gSaveBlock1Ptr->daycare);
return TryProduceOrHatchEgg(&gSaveBlock1Ptr->daycare);
}
static bool8 IsEggPending(struct DayCare *daycare)
@@ -947,20 +947,20 @@ static void _GetDaycareMonNicknames(struct DayCare *daycare)
u8 text[12];
if (GetBoxMonData(&daycare->mons[0].mon, MON_DATA_SPECIES) != 0)
{
GetBoxMonNick(&daycare->mons[0].mon, gStringVar1);
GetBoxMonNickname(&daycare->mons[0].mon, gStringVar1);
GetBoxMonData(&daycare->mons[0].mon, MON_DATA_OT_NAME, text);
StringCopy(gStringVar3, text);
}
if (GetBoxMonData(&daycare->mons[1].mon, MON_DATA_SPECIES) != 0)
{
GetBoxMonNick(&daycare->mons[1].mon, gStringVar2);
GetBoxMonNickname(&daycare->mons[1].mon, gStringVar2);
}
}
u16 GetSelectedMonNickAndSpecies(void)
u16 GetSelectedMonNicknameAndSpecies(void)
{
GetBoxMonNick(&gPlayerParty[GetCursorSelectionMonId()].box, gStringVar1);
GetBoxMonNickname(&gPlayerParty[GetCursorSelectionMonId()].box, gStringVar1);
return GetBoxMonData(&gPlayerParty[GetCursorSelectionMonId()].box, MON_DATA_SPECIES);
}
@@ -971,26 +971,19 @@ void GetDaycareMonNicknames(void)
u8 GetDaycareState(void)
{
// The daycare can be in 4 possible states:
// 0: default state--no deposited mons, no egg
// 1: there is an egg waiting for the player to pick it up
// 2: there is a single pokemon in the daycare
// 3: there are two pokemon in the daycare, no egg
u8 numMons;
if (IsEggPending(&gSaveBlock1Ptr->daycare))
{
// There is an Egg waiting for the player.
return 1;
return DAYCARE_EGG_WAITING;
}
numMons = CountPokemonInDaycare(&gSaveBlock1Ptr->daycare);
if (numMons != 0)
{
return numMons + 1;
return numMons + 1; // DAYCARE_ONE_MON or DAYCARE_TWO_MONS
}
return 0;
return DAYCARE_NO_MONS;
}
static u8 GetDaycarePokemonCount(void)
@@ -1002,15 +995,15 @@ static u8 GetDaycarePokemonCount(void)
return 0;
}
// Determine if the two given egg group lists contain any of the
// same egg groups.
static bool8 EggGroupsOverlap(u16 *eggGroups1, u16 *eggGroups2)
{
// Determine if the two given egg group lists contain any of the
// same egg groups.
s32 i, j;
for (i = 0; i < 2; i++)
for (i = 0; i < EGG_GROUPS_PER_MON; i++)
{
for (j = 0; j < 2; j++)
for (j = 0; j < EGG_GROUPS_PER_MON; j++)
{
if (eggGroups1[i] == eggGroups2[j])
return TRUE;
@@ -1023,12 +1016,12 @@ static bool8 EggGroupsOverlap(u16 *eggGroups1, u16 *eggGroups2)
static u8 GetDaycareCompatibilityScore(struct DayCare *daycare)
{
u32 i;
u16 eggGroups[2][2];
u16 species[2];
u32 trainerIds[2];
u32 genders[2];
u16 eggGroups[DAYCARE_MON_COUNT][EGG_GROUPS_PER_MON];
u16 species[DAYCARE_MON_COUNT];
u32 trainerIds[DAYCARE_MON_COUNT];
u32 genders[DAYCARE_MON_COUNT];
for (i = 0; i < 2; i++)
for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
u32 personality;
@@ -1042,41 +1035,42 @@ static u8 GetDaycareCompatibilityScore(struct DayCare *daycare)
// check unbreedable egg group
if (eggGroups[0][0] == EGG_GROUP_UNDISCOVERED || eggGroups[1][0] == EGG_GROUP_UNDISCOVERED)
return 0;
return PARENTS_INCOMPATIBLE;
// two Ditto can't breed
if (eggGroups[0][0] == EGG_GROUP_DITTO && eggGroups[1][0] == EGG_GROUP_DITTO)
return 0;
return PARENTS_INCOMPATIBLE;
// now that we checked, one ditto can breed with any other mon
// one parent is Ditto
if (eggGroups[0][0] == EGG_GROUP_DITTO || eggGroups[1][0] == EGG_GROUP_DITTO)
{
if (trainerIds[0] == trainerIds[1]) // same trainer
return 20;
if (trainerIds[0] == trainerIds[1])
return PARENTS_LOW_COMPATIBILITY;
return 50; // different trainers, more chance of poke sex
return PARENTS_MED_COMPATABILITY;
}
// neither parent is Ditto
else
{
if (genders[0] == genders[1]) // no homo
return 0;
if (genders[0] == genders[1])
return PARENTS_INCOMPATIBLE;
if (genders[0] == MON_GENDERLESS || genders[1] == MON_GENDERLESS)
return 0;
if (!EggGroupsOverlap(eggGroups[0], eggGroups[1])) // not compatible with each other
return 0;
return PARENTS_INCOMPATIBLE;
if (!EggGroupsOverlap(eggGroups[0], eggGroups[1]))
return PARENTS_INCOMPATIBLE;
if (species[0] == species[1]) // same species
if (species[0] == species[1])
{
if (trainerIds[0] == trainerIds[1]) // same species and trainer
return 50;
if (trainerIds[0] == trainerIds[1])
return PARENTS_MED_COMPATABILITY; // same species, same trainer
return 70; // different trainers, same species
return PARENTS_MAX_COMPATABILITY; // same species, different trainers
}
else
{
if (trainerIds[0] != trainerIds[1]) // different trainers, different species
return 50;
if (trainerIds[0] != trainerIds[1])
return PARENTS_MED_COMPATABILITY; // different species, different trainers
return 20; // different species, same trainer
return PARENTS_LOW_COMPATIBILITY; // different species, same trainer
}
}
}
@@ -1093,13 +1087,13 @@ void SetDaycareCompatibilityString(void)
relationshipScore = GetDaycareCompatibilityScoreFromSave();
whichString = 0;
if (relationshipScore == 0)
if (relationshipScore == PARENTS_INCOMPATIBLE)
whichString = 3;
if (relationshipScore == 20)
if (relationshipScore == PARENTS_LOW_COMPATIBILITY)
whichString = 2;
if (relationshipScore == 50)
if (relationshipScore == PARENTS_MED_COMPATABILITY)
whichString = 1;
if (relationshipScore == 70)
if (relationshipScore == PARENTS_MAX_COMPATABILITY)
whichString = 0;
StringCopy(gStringVar4, sCompatibilityMessages[whichString]);
@@ -1108,20 +1102,20 @@ void SetDaycareCompatibilityString(void)
bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio)
{
u8 i;
u8 symbolsCount[2]; // male, female
symbolsCount[0] = symbolsCount[1] = 0;
u8 symbolsCount[GENDER_COUNT];
symbolsCount[MALE] = symbolsCount[FEMALE] = 0;
for (i = 0; name[i] != EOS; i++)
{
if (name[i] == CHAR_MALE)
symbolsCount[0]++;
symbolsCount[MALE]++;
if (name[i] == CHAR_FEMALE)
symbolsCount[1]++;
symbolsCount[FEMALE]++;
}
if (genderRatio == MON_MALE && symbolsCount[0] != 0 && symbolsCount[1] == 0)
if (genderRatio == MON_MALE && symbolsCount[MALE] != 0 && symbolsCount[FEMALE] == 0)
return TRUE;
if (genderRatio == MON_FEMALE && symbolsCount[1] != 0 && symbolsCount[0] == 0)
if (genderRatio == MON_FEMALE && symbolsCount[FEMALE] != 0 && symbolsCount[MALE] == 0)
return TRUE;
return FALSE;
@@ -1150,13 +1144,13 @@ static u8 *AppendMonGenderSymbol(u8 *name, struct BoxPokemon *boxMon)
static void GetDaycareLevelMenuText(struct DayCare *daycare, u8 *dest)
{
u8 monNames[2][20];
u8 monNames[DAYCARE_MON_COUNT][20];
u8 i;
*dest = EOS;
for (i = 0; i < 2; i++)
for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
GetBoxMonNick(&daycare->mons[i].mon, monNames[i]);
GetBoxMonNickname(&daycare->mons[i].mon, monNames[i]);
AppendMonGenderSymbol(monNames[i], &daycare->mons[i].mon);
}
@@ -1174,7 +1168,7 @@ static void GetDaycareLevelMenuLevelText(struct DayCare *daycare, u8 *dest)
u8 text[20];
*dest = EOS;
for (i = 0; i < 2; i++)
for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
StringAppend(dest, gText_Lv);
level = GetLevelAfterDaycareSteps(&daycare->mons[i].mon, daycare->mons[i].steps);
@@ -1206,13 +1200,13 @@ static void DaycareAddTextPrinter(u8 windowId, const u8 *text, u32 x, u32 y)
AddTextPrinter(&printer, 0xFF, NULL);
}
static void DaycarePrintMonNick(struct DayCare *daycare, u8 windowId, u32 daycareSlotId, u32 y)
static void DaycarePrintMonNickname(struct DayCare *daycare, u8 windowId, u32 daycareSlotId, u32 y)
{
u8 nick[POKEMON_NAME_LENGTH * 2];
u8 nickname[POKEMON_NAME_LENGTH * 2];
GetBoxMonNick(&daycare->mons[daycareSlotId].mon, nick);
AppendMonGenderSymbol(nick, &daycare->mons[daycareSlotId].mon);
DaycareAddTextPrinter(windowId, nick, 8, y);
GetBoxMonNickname(&daycare->mons[daycareSlotId].mon, nickname);
AppendMonGenderSymbol(nickname, &daycare->mons[daycareSlotId].mon);
DaycareAddTextPrinter(windowId, nickname, 8, y);
}
static void DaycarePrintMonLvl(struct DayCare *daycare, u8 windowId, u32 daycareSlotId, u32 y)
@@ -1234,7 +1228,7 @@ static void DaycarePrintMonInfo(u8 windowId, s32 daycareSlotId, u8 y)
{
if (daycareSlotId < (unsigned) DAYCARE_MON_COUNT)
{
DaycarePrintMonNick(&gSaveBlock1Ptr->daycare, windowId, daycareSlotId, y);
DaycarePrintMonNickname(&gSaveBlock1Ptr->daycare, windowId, daycareSlotId, y);
DaycarePrintMonLvl(&gSaveBlock1Ptr->daycare, windowId, daycareSlotId, y);
}
}
@@ -1254,8 +1248,8 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId)
case 1:
gSpecialVar_Result = input;
break;
case 5:
gSpecialVar_Result = 2;
case DAYCARE_LEVEL_MENU_EXIT:
gSpecialVar_Result = DAYCARE_EXITED_LEVEL_MENU;
break;
}
DestroyListMenuTask(gTasks[taskId].tMenuListTaskId, NULL, NULL);
@@ -1266,7 +1260,7 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId)
}
else if (gMain.newKeys & B_BUTTON)
{
gSpecialVar_Result = 2;
gSpecialVar_Result = DAYCARE_EXITED_LEVEL_MENU;
DestroyListMenuTask(gTasks[taskId].tMenuListTaskId, NULL, NULL);
ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE);
RemoveWindow(gTasks[taskId].tWindowId);
+2 -2
View File
@@ -2043,7 +2043,7 @@ const u32 *GetDecorationIconPicOrPalette(u16 decor, u8 mode)
if (decor > NUM_DECORATIONS)
decor = DECOR_NONE;
return gUnknown_085A6BE8[decor][mode];
return gDecorIconTable[decor][mode];
}
u8 AddDecorationIconObjectFromEventObject(u16 tilesTag, u16 paletteTag, u8 decor)
@@ -2095,7 +2095,7 @@ u8 AddDecorationIconObject(u8 decor, s16 x, s16 y, u8 priority, u16 tilesTag, u1
gSprites[spriteId].pos2.x = x + 4;
gSprites[spriteId].pos2.y = y + 4;
}
else if (gUnknown_085A6BE8[decor][0] == NULL)
else if (gDecorIconTable[decor][0] == NULL)
{
spriteId = AddDecorationIconObjectFromEventObject(tilesTag, paletteTag, decor);
if (spriteId == MAX_SPRITES)
+1 -1
View File
@@ -127,7 +127,7 @@ static void Task_DiplomaFadeOut(u8 taskId)
static void DisplayDiplomaText(void)
{
if (sub_80C0944())
if (HasAllMons())
{
SetGpuReg(REG_OFFSET_BG1HOFS, DISPCNT_BG0_ON);
StringCopy(gStringVar1, gText_DexNational);
+16 -14
View File
@@ -30,6 +30,7 @@
#include "constants/easy_chat.h"
#include "constants/event_objects.h"
#include "constants/flags.h"
#include "constants/lilycove_lady.h"
#include "constants/songs.h"
#include "constants/species.h"
#include "constants/rgb.h"
@@ -240,6 +241,7 @@ struct Unk8597530
MainCallback callback;
};
// Lilycove Quiz Lady
static const struct Unk8597530 sUnknown_08597530[] = {
{
.word = 26,
@@ -1305,15 +1307,15 @@ void ShowEasyChatScreen(void)
displayedPersonType = EASY_CHAT_PERSON_BOY;
break;
case EASY_CHAT_TYPE_QUIZ_ANSWER:
words = &gSaveBlock1Ptr->lilycoveLady.quiz.unk_016;
words = &gSaveBlock1Ptr->lilycoveLady.quiz.playerAnswer;
break;
case EASY_CHAT_TYPE_QUIZ_QUESTION:
return;
case EASY_CHAT_TYPE_QUIZ_SET_QUESTION:
words = gSaveBlock1Ptr->lilycoveLady.quiz.unk_002;
words = gSaveBlock1Ptr->lilycoveLady.quiz.question;
break;
case EASY_CHAT_TYPE_QUIZ_SET_ANSWER:
words = &gSaveBlock1Ptr->lilycoveLady.quiz.unk_014;
words = &gSaveBlock1Ptr->lilycoveLady.quiz.correctAnswer;
break;
case EASY_CHAT_TYPE_APPRENTICE:
words = gSaveBlock2Ptr->apprentices[0].easyChatWords;
@@ -1329,7 +1331,7 @@ void ShowEasyChatScreen(void)
DoEasyChatScreen(gSpecialVar_0x8004, words, CB2_ReturnToFieldContinueScript, displayedPersonType);
}
static void sub_811A7E4(void)
static void CB2_QuizLadyQuestion(void)
{
LilycoveLady *lilycoveLady;
@@ -1343,7 +1345,7 @@ static void sub_811A7E4(void)
if (!gPaletteFade.active)
{
lilycoveLady = &gSaveBlock1Ptr->lilycoveLady;
lilycoveLady->quiz.unk_016 = -1;
lilycoveLady->quiz.playerAnswer = -1;
CleanupOverworldWindowsAndTilemaps();
DoQuizQuestionEasyChatScreen();
}
@@ -1352,9 +1354,9 @@ static void sub_811A7E4(void)
gMain.state ++;
}
void sub_811A858(void)
void QuizLadyShowQuizQuestion(void)
{
SetMainCallback2(sub_811A7E4);
SetMainCallback2(CB2_QuizLadyQuestion);
}
static int sub_811A868(u16 word)
@@ -1387,7 +1389,7 @@ static void DoQuizAnswerEasyChatScreen(void)
{
DoEasyChatScreen(
EASY_CHAT_TYPE_QUIZ_ANSWER,
&gSaveBlock1Ptr->lilycoveLady.quiz.unk_016,
&gSaveBlock1Ptr->lilycoveLady.quiz.playerAnswer,
CB2_ReturnToFieldContinueScript,
EASY_CHAT_PERSON_DISPLAY_NONE);
}
@@ -1395,7 +1397,7 @@ static void DoQuizAnswerEasyChatScreen(void)
static void DoQuizQuestionEasyChatScreen(void)
{
DoEasyChatScreen(EASY_CHAT_TYPE_QUIZ_QUESTION,
gSaveBlock1Ptr->lilycoveLady.quiz.unk_002,
gSaveBlock1Ptr->lilycoveLady.quiz.question,
CB2_ReturnToFieldContinueScript,
EASY_CHAT_PERSON_DISPLAY_NONE);
}
@@ -1403,7 +1405,7 @@ static void DoQuizQuestionEasyChatScreen(void)
static void DoQuizSetAnswerEasyChatScreen(void)
{
DoEasyChatScreen(EASY_CHAT_TYPE_QUIZ_SET_ANSWER,
&gSaveBlock1Ptr->lilycoveLady.quiz.unk_014,
&gSaveBlock1Ptr->lilycoveLady.quiz.correctAnswer,
CB2_ReturnToFieldContinueScript,
EASY_CHAT_PERSON_DISPLAY_NONE);
}
@@ -1411,7 +1413,7 @@ static void DoQuizSetAnswerEasyChatScreen(void)
static void DoQuizSetQuestionEasyChatScreen(void)
{
DoEasyChatScreen(EASY_CHAT_TYPE_QUIZ_SET_QUESTION,
gSaveBlock1Ptr->lilycoveLady.quiz.unk_002,
gSaveBlock1Ptr->lilycoveLady.quiz.question,
CB2_ReturnToFieldContinueScript,
EASY_CHAT_PERSON_DISPLAY_NONE);
}
@@ -2660,9 +2662,9 @@ static int sub_811BD64(void)
return sub_811BCF4();
saveBlock1 = gSaveBlock1Ptr;
for (i = 0; i < 9; i++)
for (i = 0; i < QUIZ_QUESTION_LEN; i++)
{
if (saveBlock1->lilycoveLady.quiz.unk_002[i] != 0xFFFF)
if (saveBlock1->lilycoveLady.quiz.question[i] != 0xFFFF)
return 0;
}
@@ -2676,7 +2678,7 @@ static int sub_811BDB0(void)
return sub_811BCF4();
quiz = &gSaveBlock1Ptr->lilycoveLady.quiz;
return quiz->unk_014 == 0xFFFF ? 1 : 0;
return quiz->correctAnswer == 0xFFFF ? 1 : 0;
}
static void sub_811BDF0(u8 *arg0)
+20 -20
View File
@@ -56,7 +56,7 @@ struct EggHatchData
extern const u32 gUnknown_08331F60[]; // tilemap gameboy circle
extern const u8 gText_HatchedFromEgg[];
extern const u8 gText_NickHatchPrompt[];
extern const u8 gText_NicknameHatchPrompt[];
static void Task_EggHatch(u8 taskID);
static void CB2_EggHatch_0(void);
@@ -298,13 +298,13 @@ static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
u16 species;
u32 personality, pokerus;
u8 i, friendship, language, gameMet, markings, obedience;
u16 moves[4];
u16 moves[MAX_MON_MOVES];
u32 ivs[NUM_STATS];
species = GetMonData(egg, MON_DATA_SPECIES);
for (i = 0; i < 4; i++)
for (i = 0; i < MAX_MON_MOVES; i++)
{
moves[i] = GetMonData(egg, MON_DATA_MOVE1 + i);
}
@@ -322,9 +322,9 @@ static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
pokerus = GetMonData(egg, MON_DATA_POKERUS);
obedience = GetMonData(egg, MON_DATA_OBEDIENCE);
CreateMon(temp, species, EGG_HATCH_LEVEL, 32, TRUE, personality, 0, 0);
CreateMon(temp, species, EGG_HATCH_LEVEL, 32, TRUE, personality, OT_ID_PLAYER_ID, 0);
for (i = 0; i < 4; i++)
for (i = 0; i < MAX_MON_MOVES; i++)
{
SetMonData(temp, MON_DATA_MOVE1 + i, &moves[i]);
}
@@ -368,7 +368,7 @@ static void AddHatchedMonToParty(u8 id)
GetSetPokedexFlag(pokeNum, FLAG_SET_SEEN);
GetSetPokedexFlag(pokeNum, FLAG_SET_CAUGHT);
GetMonNick(mon, gStringVar1);
GetMonNickname2(mon, gStringVar1);
ball = ITEM_POKE_BALL;
SetMonData(mon, MON_DATA_POKEBALL, &ball);
@@ -388,17 +388,17 @@ void ScriptHatchMon(void)
AddHatchedMonToParty(gSpecialVar_0x8004);
}
static bool8 sub_807158C(struct DayCare *daycare, u8 daycareId)
static bool8 _CheckDaycareMonReceivedMail(struct DayCare *daycare, u8 daycareId)
{
u8 nick[0x20];
u8 nickname[32];
struct DaycareMon *daycareMon = &daycare->mons[daycareId];
GetBoxMonNick(&daycareMon->mon, nick);
if (daycareMon->mail.message.itemId != 0
&& (StringCompareWithoutExtCtrlCodes(nick, daycareMon->mail.monName) != 0
GetBoxMonNickname(&daycareMon->mon, nickname);
if (daycareMon->mail.message.itemId != ITEM_NONE
&& (StringCompareWithoutExtCtrlCodes(nickname, daycareMon->mail.monName) != 0
|| StringCompareWithoutExtCtrlCodes(gSaveBlock2Ptr->playerName, daycareMon->mail.OT_name) != 0))
{
StringCopy(gStringVar1, nick);
StringCopy(gStringVar1, nickname);
TVShowConvertInternationalString(gStringVar2, daycareMon->mail.OT_name, daycareMon->mail.gameLanguage);
TVShowConvertInternationalString(gStringVar3, daycareMon->mail.monName, daycareMon->mail.monLanguage);
return TRUE;
@@ -406,9 +406,9 @@ static bool8 sub_807158C(struct DayCare *daycare, u8 daycareId)
return FALSE;
}
bool8 sub_8071614(void)
bool8 CheckDaycareMonReceivedMail(void)
{
return sub_807158C(&gSaveBlock1Ptr->daycare, gSpecialVar_0x8004);
return _CheckDaycareMonReceivedMail(&gSaveBlock1Ptr->daycare, gSpecialVar_0x8004);
}
static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID, u16* speciesLoc)
@@ -634,7 +634,7 @@ static void CB2_EggHatch_1(void)
}
break;
case 5:
GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1);
GetMonNickname2(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_HatchedFromEgg);
EggHatchPrintMessage(sEggHatchData->windowId, gStringVar4, 0, 3, 0xFF);
PlayFanfare(MUS_FANFA5);
@@ -651,8 +651,8 @@ static void CB2_EggHatch_1(void)
sEggHatchData->CB2_state++;
break;
case 8:
GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_NickHatchPrompt);
GetMonNickname2(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_NicknameHatchPrompt);
EggHatchPrintMessage(sEggHatchData->windowId, gStringVar4, 0, 2, 1);
sEggHatchData->CB2_state++;
break;
@@ -668,7 +668,7 @@ static void CB2_EggHatch_1(void)
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
case 0:
GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar3);
GetMonNickname2(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar3);
species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES);
gender = GetMonGender(&gPlayerParty[sEggHatchData->eggPartyID]);
personality = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_PERSONALITY, 0);
@@ -880,9 +880,9 @@ u8 GetEggStepsToSubtract(void)
return 1;
}
u16 sub_80722E0(void)
u16 CountPartyAliveNonEggMons(void)
{
u16 aliveNonEggMonsCount = CountStorageNonEggMons();
aliveNonEggMonsCount += CountPartyAliveNonEggMonsExcept(6);
aliveNonEggMonsCount += CountPartyAliveNonEggMonsExcept(PARTY_SIZE);
return aliveNonEggMonsCount;
}
+2 -2
View File
@@ -667,9 +667,9 @@ static void sub_810A75C(struct Sprite *sprite)
sprite->oam.tileNum += gBattleAnimArgs[3] * 4;
if (gBattleAnimArgs[3] == 1)
sprite->oam.matrixNum = 8;
sprite->oam.matrixNum = ST_OAM_HFLIP;
else if (gBattleAnimArgs[3] == 2)
sprite->oam.matrixNum = 16;
sprite->oam.matrixNum = ST_OAM_VFLIP;
sprite->data[0] = gBattleAnimArgs[2];
sprite->callback = WaitAnimForDuration;
+385 -33
View File
@@ -9,6 +9,12 @@
#include "sprite.h"
#include "task.h"
#include "util.h"
#include "trainer_hill.h"
#include "constants/easy_chat.h"
#include "constants/trainers.h"
#include "constants/species.h"
#include "constants/moves.h"
#include "constants/items.h"
struct Unknown030012C8
{
@@ -38,14 +44,359 @@ static u16 gUnknown_030012F0;
static u16 gUnknown_030012F2;
static u16 gUnknown_030012F4;
extern const u8 gUnknown_08625B6C[][0x148];
static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = {
[0] = {
.name = __("マキエ$$$$$ "),
.facilityClass = FACILITY_CLASS_HEX_MANIAC,
.unused = 0x1,
.speechBefore = { EC_WORD_PREPOSTEROUS, EC_WORD_CASE, EC_WORD_THERE, EC_WORD_TO_HER, EC_WORD_CHALLENGE, EC_WORD_JOKING },
.speechWin = { EC_WORD_HERS, EC_WORD_TRUMP_CARD, EC_MOVE2(SECRET_POWER), EC_WORD_USING, EC_WORD_WON, EC_WORD_EXCL_EXCL },
.speechLose = { EC_WORD_TO_HER, EC_WORD_WIN, EC_WORD_JOKING, EC_WORD_HIGHS, EC_WORD_SCARY, EC_WORD_ELLIPSIS_EXCL },
.speechAfter = { EC_WORD_IGNORANT, EC_WORD_SO, EC_WORD_TODAY, EC_WORD_NIGHTTIME, EC_WORD_YOU_RE, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS },
.mons = {
[0] = NULL_BATTLE_TOWER_POKEMON,
[1] = NULL_BATTLE_TOWER_POKEMON,
[2] = NULL_BATTLE_TOWER_POKEMON,
[3] = {
.species = SPECIES_SWALOT,
.heldItem = ITEM_SHELL_BELL,
.moves = { MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_PAIN_SPLIT, MOVE_YAWN },
.level = 0,
.ppBonuses = 0x0,
.hpEV = 55,
.attackEV = 255,
.defenseEV = 100,
.speedEV = 0,
.spAttackEV = 0,
.spDefenseEV = 100,
.otId = 0x10000000,
.hpIV = 5,
.attackIV = 5,
.defenseIV = 5,
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
.abilityNum = 1,
.personality = 0x80,
.nickname = __("マルノーム$$$$$$"),
.friendship = 255
},
[4] = {
.species = SPECIES_DUSTOX,
.heldItem = ITEM_BRIGHT_POWDER,
.moves = { MOVE_SILVER_WIND, MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_GIGA_DRAIN },
.level = 0,
.ppBonuses = 0x0,
.hpEV = 0,
.attackEV = 255,
.defenseEV = 0,
.speedEV = 0,
.spAttackEV = 255,
.spDefenseEV = 0,
.otId = 0x10000000,
.hpIV = 5,
.attackIV = 5,
.defenseIV = 5,
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
.abilityNum = 0,
.personality = 0x6,
.nickname = __("ドクケイル$$$$$$"),
.friendship = 255
},
[5] = {
.species = SPECIES_RELICANTH,
.heldItem = ITEM_QUICK_CLAW,
.moves = { MOVE_ANCIENT_POWER, MOVE_SURF, MOVE_EARTHQUAKE, MOVE_AMNESIA },
.level = 0,
.ppBonuses = 0x0,
.hpEV = 100,
.attackEV = 0,
.defenseEV = 0,
.speedEV = 0,
.spAttackEV = 155,
.spDefenseEV = 255,
.otId = 0x10000000,
.hpIV = 5,
.attackIV = 5,
.defenseIV = 5,
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
.abilityNum = 0,
.personality = 0x2f,
.nickname = __("ジーランス$$$$$$"),
.friendship = 255
},
}
},
[1] = {
.name = __("ハルヒト$$$$ "),
.facilityClass = FACILITY_CLASS_CAMPER,
.unused = 0x1,
.speechBefore = { EC_MOVE2(BOUNCE), EC_WORD_AS_MUCH_AS, 0xFFFF, EC_WORD_THEY_RE, EC_WORD_STRONG, EC_WORD_EXCL },
.speechWin = { EC_MOVE(FLY), EC_WORD_AS_MUCH_AS, 0xFFFF, EC_WORD_THEY_RE, EC_WORD_HAPPY, EC_WORD_EXCL },
.speechLose = { EC_MOVE2(MINIMIZE), EC_WORD_AS_MUCH_AS, 0xFFFF, EC_WORD_THEY_RE, EC_WORD_SAD, EC_WORD_EXCL },
.speechAfter = { EC_MOVE(BITE), EC_WORD_AS_MUCH_AS, 0xFFFF, EC_WORD_THEY_RE, EC_WORD_ANGRY, EC_WORD_EXCL },
.mons = {
[0] = NULL_BATTLE_TOWER_POKEMON,
[1] = NULL_BATTLE_TOWER_POKEMON,
[2] = NULL_BATTLE_TOWER_POKEMON,
[3] = {
.species = SPECIES_CACTURNE,
.heldItem = ITEM_QUICK_CLAW,
.moves = { MOVE_GIGA_DRAIN, MOVE_FAINT_ATTACK, MOVE_THUNDER_PUNCH, MOVE_GROWTH },
.level = 0,
.ppBonuses = 0x0,
.hpEV = 55,
.attackEV = 0,
.defenseEV = 100,
.speedEV = 0,
.spAttackEV = 255,
.spDefenseEV = 100,
.otId = 0x10000000,
.hpIV = 5,
.attackIV = 5,
.defenseIV = 5,
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
.abilityNum = 0,
.personality = 0x8c,
.nickname = __("ノクタス$$$$$$$"),
.friendship = 255
},
[4] = {
.species = SPECIES_SWELLOW,
.heldItem = ITEM_BRIGHT_POWDER,
.moves = { MOVE_FACADE, MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK, MOVE_DOUBLE_TEAM },
.level = 0,
.ppBonuses = 0x0,
.hpEV = 255,
.attackEV = 255,
.defenseEV = 0,
.speedEV = 0,
.spAttackEV = 0,
.spDefenseEV = 0,
.otId = 0x10000000,
.hpIV = 5,
.attackIV = 5,
.defenseIV = 5,
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
.abilityNum = 0,
.personality = 0x80,
.nickname = __("オオスバメ$$$$$$"),
.friendship = 255
},
[5] = {
.species = SPECIES_WHISCASH,
.heldItem = ITEM_CHESTO_BERRY,
.moves = { MOVE_SURF, MOVE_EARTHQUAKE, MOVE_AMNESIA, MOVE_REST },
.level = 0,
.ppBonuses = 0x0,
.hpEV = 0,
.attackEV = 255,
.defenseEV = 0,
.speedEV = 0,
.spAttackEV = 255,
.spDefenseEV = 0,
.otId = 0x10000000,
.hpIV = 5,
.attackIV = 5,
.defenseIV = 5,
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
.abilityNum = 0,
.personality = 0x0,
.nickname = __("ナマズン$$$$$$$"),
.friendship = 255
},
}
},
[2] = {
.name = __("メイコ$$$$$ "),
.facilityClass = FACILITY_CLASS_SCHOOL_KID_F,
.unused = 0x1,
.speechBefore = { EC_WORD_SHINE, EC_WORD_POKEMON, EC_WORD_RELEASE, EC_WORD_WAS, EC_MOVE2(FRUSTRATION), EC_WORD_WITHOUT },
.speechWin = { EC_WORD_SHINE, EC_WORD_POKEMON, EC_WORD_TO_HER, EC_MOVE2(PRESENT), EC_WORD_KNOWS, EC_WORD_WITHOUT },
.speechLose = { EC_WORD_THAT, EC_WORD_ABOVE, EC_WORD_LOST, EC_WORD_STORES, EC_WORD_JOKING, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS },
.speechAfter = { EC_WORD_ENTERTAINING, EC_WORD_NONE, EC_WORD_HEY_QUES, EC_WORD_ALMOST, EC_WORD_EXCL, 0xFFFF },
.mons = {
[0] = NULL_BATTLE_TOWER_POKEMON,
[1] = NULL_BATTLE_TOWER_POKEMON,
[2] = NULL_BATTLE_TOWER_POKEMON,
[3] = {
.species = SPECIES_DELCATTY,
.heldItem = ITEM_LUM_BERRY,
.moves = { MOVE_SING, MOVE_BODY_SLAM, MOVE_SHADOW_BALL, MOVE_IRON_TAIL },
.level = 0,
.ppBonuses = 0x0,
.hpEV = 0,
.attackEV = 255,
.defenseEV = 0,
.speedEV = 255,
.spAttackEV = 0,
.spDefenseEV = 0,
.otId = 0x10000000,
.hpIV = 5,
.attackIV = 5,
.defenseIV = 5,
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
.abilityNum = 0,
.personality = 0x3,
.nickname = __("エネコロロ$$$$$$"),
.friendship = 255
},
[4] = {
.species = SPECIES_ROSELIA,
.heldItem = ITEM_LEFTOVERS,
.moves = { MOVE_GIGA_DRAIN, MOVE_GRASS_WHISTLE, MOVE_TOXIC, MOVE_LEECH_SEED },
.level = 0,
.ppBonuses = 0x0,
.hpEV = 255,
.attackEV = 0,
.defenseEV = 0,
.speedEV = 0,
.spAttackEV = 255,
.spDefenseEV = 0,
.otId = 0x10000000,
.hpIV = 5,
.attackIV = 5,
.defenseIV = 5,
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
.abilityNum = 1,
.personality = 0x6,
.nickname = __("ロゼリア$$$$$$$"),
.friendship = 255
},
[5] = {
.species = SPECIES_BEAUTIFLY,
.heldItem = ITEM_BRIGHT_POWDER,
.moves = { MOVE_SILVER_WIND, MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_PSYCHIC },
.level = 0,
.ppBonuses = 0x0,
.hpEV = 100,
.attackEV = 200,
.defenseEV = 0,
.speedEV = 0,
.spAttackEV = 200,
.spDefenseEV = 0,
.otId = 0x10000000,
.hpIV = 5,
.attackIV = 5,
.defenseIV = 5,
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
.abilityNum = 0,
.personality = 0x6,
.nickname = __("アゲハント$$$$$$"),
.friendship = 255
},
}
},
[3] = {
.name = __("ピエール$$$$ "),
.facilityClass = FACILITY_CLASS_GENTLEMAN,
.unused = 0x1,
.speechBefore = { EC_WORD_SHE_WAS, EC_WORD_NO_1, EC_WORD_STRONG, EC_WORD_UNCLE, EC_WORD_THERE, EC_WORD_EXCL },
.speechWin = { EC_WORD_HAHAHA, EC_WORD_TEACHER, EC_WORD_BECOMES, EC_WORD_GIVE, EC_WORD_IS_IT_QUES, 0xFFFF },
.speechLose = { EC_WORD_OUTSIDE, EC_WORD_UNCLE, EC_WORD_SURPRISE, EC_WORD_THESE, EC_WORD_HEY_QUES, EC_WORD_ELLIPSIS_EXCL },
.speechAfter = { EC_WORD_HE_S, EC_WORD_NO_1, EC_WORD_STRONG, EC_WORD_CHILDREN, EC_WORD_CAN_T, EC_WORD_EXCL_EXCL },
.mons = {
[0] = NULL_BATTLE_TOWER_POKEMON,
[1] = NULL_BATTLE_TOWER_POKEMON,
[2] = NULL_BATTLE_TOWER_POKEMON,
[3] = {
.species = SPECIES_MAWILE,
.heldItem = ITEM_BRIGHT_POWDER,
.moves = { MOVE_CRUNCH, MOVE_FLAMETHROWER, MOVE_THUNDER_PUNCH, MOVE_COMET_PUNCH },
.level = 0,
.ppBonuses = 0x0,
.hpEV = 0,
.attackEV = 0,
.defenseEV = 100,
.speedEV = 0,
.spAttackEV = 255,
.spDefenseEV = 155,
.otId = 0x10000000,
.hpIV = 5,
.attackIV = 5,
.defenseIV = 5,
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
.abilityNum = 1,
.personality = 0x0,
.nickname = __("クチート$$$$$$$"),
.friendship = 255
},
[4] = {
.species = SPECIES_SHARPEDO,
.heldItem = ITEM_SCOPE_LENS,
.moves = { MOVE_SURF, MOVE_CRUNCH, MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE },
.level = 0,
.ppBonuses = 0x0,
.hpEV = 255,
.attackEV = 0,
.defenseEV = 0,
.speedEV = 0,
.spAttackEV = 255,
.spDefenseEV = 0,
.otId = 0x10000000,
.hpIV = 5,
.attackIV = 5,
.defenseIV = 5,
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
.abilityNum = 0,
.personality = 0x96,
.nickname = __("サメハダー$$$$$$"),
.friendship = 255
},
[5] = {
.species = SPECIES_BANETTE,
.heldItem = ITEM_LUM_BERRY,
.moves = { MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT, MOVE_WILL_O_WISP },
.level = 0,
.ppBonuses = 0x0,
.hpEV = 255,
.attackEV = 0,
.defenseEV = 0,
.speedEV = 0,
.spAttackEV = 255,
.spDefenseEV = 0,
.otId = 0x10000000,
.hpIV = 5,
.attackIV = 5,
.defenseIV = 5,
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
.abilityNum = 0,
.personality = 0x96,
.nickname = __("ジュペッタ$$$$$$"),
.friendship = 255
},
}
},
};
static u8 sub_81D38D4(void)
{
return (gSaveBlock1Ptr->trainerHill.unused + 1) % 256;
}
static bool32 Struct_Unk81D38FC_ValidateChecksum(struct Unk81D38FC *arg0)
static bool32 Struct_EReaderTrainerHillTrainer_ValidateChecksum(struct EReaderTrainerHillTrainer *arg0)
{
int checksum = CalcByteArraySum((u8 *)arg0, 0x270);
if (checksum != arg0->checksum)
@@ -58,17 +409,17 @@ bool8 EReader_IsReceivedDataValid(struct EReaderTrainerHillSet *buffer)
{
u32 i;
u32 checksum;
int var0 = buffer->unk_0;
int var0 = buffer->count;
if (var0 < 1 || var0 > 8)
return FALSE;
for (i = 0; i < var0; i++)
{
if (!Struct_Unk81D38FC_ValidateChecksum(&buffer->unk_8[i]))
if (!Struct_EReaderTrainerHillTrainer_ValidateChecksum(&buffer->unk_8[i]))
return FALSE;
}
checksum = CalcByteArraySum((u8 *)buffer->unk_8, var0 * sizeof(struct Unk81D38FC));
checksum = CalcByteArraySum((u8 *)buffer->unk_8, var0 * sizeof(struct EReaderTrainerHillTrainer));
if (checksum != buffer->checksum)
return FALSE;
@@ -78,7 +429,7 @@ bool8 EReader_IsReceivedDataValid(struct EReaderTrainerHillSet *buffer)
static bool32 TrainerHill_VerifyChecksum(struct EReaderTrainerHillSet *buffer)
{
u32 checksum;
int var0 = buffer->unk_0;
int var0 = buffer->count;
if (var0 < 1 || var0 > 8)
return FALSE;
@@ -89,38 +440,39 @@ static bool32 TrainerHill_VerifyChecksum(struct EReaderTrainerHillSet *buffer)
return TRUE;
}
static bool32 TryWriteTrainerHill_r(struct EReaderTrainerHillSet *arg0, struct Unk81D3998 *buffer2)
static bool32 TryWriteTrainerHill_r(struct EReaderTrainerHillSet *ttdata, struct TrHillTag *buffer2)
{
int i;
memset(buffer2, 0, 0x1000);
buffer2->unk_000 = arg0->unk_0;
buffer2->unk_001 = sub_81D38D4();
buffer2->unk_002 = (arg0->unk_0 + 1) / 2;
AGB_ASSERT_EX(ttdata->dummy == 0, "cereader_tool.c", 450);
AGB_ASSERT_EX(ttdata->id == 0, "cereader_tool.c", 452);
for (i = 0; i < arg0->unk_0; i++)
memset(buffer2, 0, 0x1000);
buffer2->unkField_0 = ttdata->count;
buffer2->unused1 = sub_81D38D4();
buffer2->numFloors = (ttdata->count + 1) / 2;
for (i = 0; i < ttdata->count; i++)
{
if (!(i & 1))
{
buffer2->unk_008[i / 2].unk_000[0] = arg0->unk_8[i].unk0;
memcpy(buffer2->unk_008[i / 2].unk_294, arg0->unk_8[i].unk14C, 0x124);
memcpy(buffer2->unk_008[i / 2].unk_004, arg0->unk_8[i].unk4, 0x148);
buffer2->floors[i / 2].unk0 = ttdata->unk_8[i].unk0;
buffer2->floors[i / 2].display = ttdata->unk_8[i].unk14C;
buffer2->floors[i / 2].trainers[0] = ttdata->unk_8[i].unk4;
}
else
{
buffer2->unk_008[i / 2].unk_000[1] = arg0->unk_8[i].unk0;
memcpy(buffer2->unk_008[i / 2].unk_14C, arg0->unk_8[i].unk4, 0x148);
buffer2->floors[i / 2].unk1 = ttdata->unk_8[i].unk0;
buffer2->floors[i / 2].trainers[1] = ttdata->unk_8[i].unk4;
}
}
if (i & 1)
{
u8 * dest = buffer2->unk_008[i / 2].unk_14C;
const u8 (* src)[0x148] = gUnknown_08625B6C;
memcpy(dest, src[i / 2], 0x148);
buffer2->floors[i / 2].trainers[1] = sTrainerHillTrainerTemplates_JP[i / 2];
}
buffer2->checksum = CalcByteArraySum((u8 *)buffer2->unk_008, sizeof(struct Unk81D3998) - offsetof(struct Unk81D3998, unk_008));
buffer2->checksum = CalcByteArraySum((u8 *)buffer2->floors, 4 * sizeof(struct TrHillFloor));
if (TryWriteSpecialSaveSection(SECTOR_ID_TRAINER_HILL, (u8 *)buffer2) != 1)
return FALSE;
@@ -129,7 +481,7 @@ static bool32 TryWriteTrainerHill_r(struct EReaderTrainerHillSet *arg0, struct U
bool32 TryWriteTrainerHill(struct EReaderTrainerHillSet *arg0)
{
struct Unk81D3998 *var0 = AllocZeroed(0x1000);
void *var0 = AllocZeroed(0x1000);
bool32 result = TryWriteTrainerHill_r(arg0, var0);
Free(var0);
return result;
@@ -163,20 +515,20 @@ bool32 ReadTrainerHillAndValidate(void)
return result;
}
static int unref_sub_81D3B54(int arg0, u32 *arg1)
int EReader_Send(int arg0, u32 *arg1)
{
int result;
u16 var0;
int var1;
sub_81D41A0();
EReaderHelper_SaveRegsState();
while (1)
{
sub_81D4170();
if (gUnknown_030012E2 & 2)
gShouldAdvanceLinkState = 2;
var1 = sub_81D3D70(1, arg0, arg1, NULL);
var1 = EReaderHandleTransfer(1, arg0, arg1, NULL);
gUnknown_030012E4 = var1;
if ((gUnknown_030012E4 & 0x13) == 0x10)
{
@@ -202,24 +554,24 @@ static int unref_sub_81D3B54(int arg0, u32 *arg1)
}
CpuFill32(0, &gUnknown_030012C8, sizeof(struct Unknown030012C8));
sub_81D41F4();
EReaderHelper_RestoreRegsState();
return result;
}
static int unref_sub_81D3BE8(u32 *arg0)
int EReader_Recv(u32 *arg0)
{
int result;
u16 var0;
int var1;
sub_81D41A0();
EReaderHelper_SaveRegsState();
while (1)
{
sub_81D4170();
if (gUnknown_030012E2 & 2)
gShouldAdvanceLinkState = 2;
var1 = sub_81D3D70(0, 0, NULL, arg0);
var1 = EReaderHandleTransfer(0, 0, NULL, arg0);
gUnknown_030012E4 = var1;
if ((gUnknown_030012E4 & 0x13) == 0x10)
{
@@ -245,7 +597,7 @@ static int unref_sub_81D3BE8(u32 *arg0)
}
CpuFill32(0, &gUnknown_030012C8, sizeof(struct Unknown030012C8));
sub_81D41F4();
EReaderHelper_RestoreRegsState();
return result;
}
@@ -285,7 +637,7 @@ static void sub_81D3D34(void)
gUnknown_030012E8 = 0;
}
int sub_81D3D70(u8 arg0, u32 arg1, u32 *arg2, u32 *arg3)
int EReaderHandleTransfer(u8 arg0, u32 arg1, u32 *arg2, u32 *arg3)
{
switch (gUnknown_030012C8.unk0[1])
{
@@ -519,7 +871,7 @@ static void sub_81D4170(void)
gUnknown_030012E0 = keysMask;
}
void sub_81D41A0(void)
void EReaderHelper_SaveRegsState(void)
{
gUnknown_030012EC = REG_IME;
gUnknown_030012EE = REG_IE;
@@ -528,7 +880,7 @@ void sub_81D41A0(void)
gUnknown_030012F4 = REG_RCNT;
}
void sub_81D41F4(void)
void EReaderHelper_RestoreRegsState(void)
{
REG_IME = gUnknown_030012EC;
REG_IE = gUnknown_030012EE;
+3 -3
View File
@@ -49,7 +49,7 @@ static void sub_81D4D50(struct Unk03006370 *arg0, int arg1, u32 *arg2)
REG_IME = 0;
gIntrTable[1] = sub_81D3FAC;
gIntrTable[2] = sub_81D3F9C;
sub_81D41A0();
EReaderHelper_SaveRegsState();
sub_81D4238();
REG_IE |= INTR_FLAG_VCOUNT;
REG_IME = backupIME;
@@ -63,7 +63,7 @@ static void sub_81D4DB8(struct Unk03006370 *arg0)
volatile u16 backupIME = REG_IME;
REG_IME = 0;
sub_81D4238();
sub_81D41F4();
EReaderHelper_RestoreRegsState();
RestoreSerialTimer3IntrHandlers();
REG_IME = backupIME;
}
@@ -71,7 +71,7 @@ static void sub_81D4DB8(struct Unk03006370 *arg0)
static u8 sub_81D4DE8(struct Unk03006370 *arg0)
{
u8 var0 = 0;
arg0->unk0 = sub_81D3D70(1, arg0->unk4, arg0->unk8, NULL);
arg0->unk0 = EReaderHandleTransfer(1, arg0->unk4, arg0->unk8, NULL);
if ((arg0->unk0 & 0x13) == 0x10)
var0 = 1;
+2 -2
View File
@@ -92,7 +92,7 @@ void ScriptUnfreezeEventObjects(void)
{
u8 playerObjectId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
EventObjectClearHeldMovementIfFinished(&gEventObjects[playerObjectId]);
sub_80D338C();
ScriptMovement_UnfreezeEventObjects();
UnfreezeEventObjects();
}
@@ -104,7 +104,7 @@ void sub_8098524(void)
EventObjectClearHeldMovementIfFinished(&gEventObjects[gSelectedEventObject]);
playerObjectId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
EventObjectClearHeldMovementIfFinished(&gEventObjects[playerObjectId]);
sub_80D338C();
ScriptMovement_UnfreezeEventObjects();
UnfreezeEventObjects();
}
+864 -785
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -912,9 +912,9 @@ void sub_810D874(struct Sprite *sprite)
}
if (IsContest())
sprite->oam.matrixNum |= 0x8;
sprite->oam.matrixNum |= ST_OAM_HFLIP;
else if (GetBattlerSide(battler) == B_SIDE_PLAYER)
sprite->oam.matrixNum |= 0x18;
sprite->oam.matrixNum |= (ST_OAM_HFLIP | ST_OAM_VFLIP);
sprite->data[0] = 16;
sprite->data[1] = sprite->pos1.x;
+3 -3
View File
@@ -949,7 +949,7 @@ static u16 sub_8109930(u8 spriteId)
{
u16 var1 = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y + gSprites[spriteId].centerToCornerVecY;
if (GetBattlerSide(gBattleAnimAttacker) == 0)
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
var1 = ((var1 << 16) + 0x4A0000) >> 16;
}
@@ -1059,7 +1059,7 @@ static void sub_8109AFC(struct Sprite *sprite)
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
sprite->data[7] = gBattleAnimArgs[2];
if (GetBattlerSide(gBattleAnimAttacker) != 0)
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
sprite->data[4] = 4;
}
@@ -1073,7 +1073,7 @@ static void sub_8109AFC(struct Sprite *sprite)
break;
case 1:
sprite->data[1] += 192;
if (GetBattlerSide(gBattleAnimAttacker) != 0)
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
sprite->pos2.y = -(sprite->data[1] >> 8);
}
+1 -1
View File
@@ -1800,7 +1800,7 @@ void sub_810EEF8(struct Sprite *sprite)
sprite->data[2] = gBattleAnimArgs[0];
if (sprite->data[2])
sprite->oam.matrixNum = 8;
sprite->oam.matrixNum = ST_OAM_HFLIP;
if (gBattleAnimArgs[1] == 0)
{
+4 -4
View File
@@ -794,15 +794,15 @@ static void sub_81A17A0(void)
case 0:
break;
case 1:
sub_813A878(0);
FrontierGamblerSetWonOrLost(FALSE);
VarSet(VAR_TEMP_0, gSaveBlock2Ptr->frontier.field_CA8);
break;
case 4:
sub_813A878(0);
FrontierGamblerSetWonOrLost(FALSE);
VarSet(VAR_TEMP_0, gSaveBlock2Ptr->frontier.field_CA8);
break;
case 3:
sub_813A878(1);
FrontierGamblerSetWonOrLost(TRUE);
VarSet(VAR_TEMP_0, gSaveBlock2Ptr->frontier.field_CA8);
break;
case 2:
@@ -2503,7 +2503,7 @@ void CreateFrontierBrainPokemon(void)
monLevel,
sFrontierBrainsMons[facility][symbol][i].fixedIV,
TRUE, j,
TRUE, FRONTIER_BRAIN_OTID);
OT_ID_PRESET, FRONTIER_BRAIN_OTID);
SetMonData(&gEnemyParty[monPartyId], MON_DATA_HELD_ITEM, &sFrontierBrainsMons[facility][symbol][i].heldItem);
for (j = 0; j < NUM_STATS; j++)
SetMonData(&gEnemyParty[monPartyId], MON_DATA_HP_EV + j, &sFrontierBrainsMons[facility][symbol][i].evs[j]);
+1 -1
View File
@@ -1039,7 +1039,7 @@ static void sub_81129F0(struct Sprite *sprite)
{
xDelta = 24;
xDelta2 = -2;
sprite->oam.matrixNum = 8;
sprite->oam.matrixNum = ST_OAM_HFLIP;
}
else
{
+1 -1
View File
@@ -755,7 +755,7 @@ static void Task_Hof_HandleExit(u8 taskId)
static void SetCallback2AfterHallOfFameDisplay(void)
{
SetMainCallback2(sub_8175620);
SetMainCallback2(CB2_StartCreditsSequence);
}
#undef tDontSaveData
+1 -1
View File
@@ -27,7 +27,7 @@ static void ReshowPCMenuAfterHallOfFamePC(void)
{
ScriptContext2_Enable();
Overworld_PlaySpecialMapMusic();
ScrSpecial_CreatePCMenu();
ScriptMenu_CreatePCMultichoice();
ScriptMenu_DisplayPCStartupPrompt();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
CreateTask(Task_WaitForPaletteFade, 10);
+3 -3
View File
@@ -735,7 +735,7 @@ void AnimSwirlingSnowball_Step2(struct Sprite *sprite)
void AnimSwirlingSnowball_Step3(struct Sprite *sprite)
{
s16 tempVar;
tempVar = GetBattlerSide(gBattleAnimAttacker) != 0 ? 20 : -20;
tempVar = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? 20 : -20;
if (sprite->data[5] <= 31)
{
@@ -1190,12 +1190,12 @@ void InitPoisonGasCloudAnim(struct Sprite *sprite)
if (GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) < GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2))
sprite->data[7] = 0x8000;
if (!(gBattlerPositions[gBattleAnimTarget] & 1))
if ((gBattlerPositions[gBattleAnimTarget] & BIT_SIDE) == B_SIDE_PLAYER)
{
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
if ((sprite->data[7] & 0x8000) && !(gBattlerPositions[gBattleAnimAttacker] & 1))
if ((sprite->data[7] & 0x8000) && (gBattlerPositions[gBattleAnimAttacker] & BIT_SIDE) == B_SIDE_PLAYER)
sprite->subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority + 1;
sprite->data[6] = 1;
+2 -2
View File
@@ -45,7 +45,7 @@ int GetMaxWidthInMenuTable(const struct MenuAction *str, int arg1)
var = stringWidth;
}
return convert_pixel_width_to_tile_width(var);
return ConvertPixelWidthToTileWidth(var);
}
int sub_81DB3D8(const struct MenuAction *str, const u8* arg1, int arg2)
@@ -59,7 +59,7 @@ int sub_81DB3D8(const struct MenuAction *str, const u8* arg1, int arg2)
var = stringWidth;
}
return convert_pixel_width_to_tile_width(var);
return ConvertPixelWidthToTileWidth(var);
}
int Intl_GetListMenuWidth(const struct ListMenuTemplate *listMenu)
+12 -12
View File
@@ -118,9 +118,9 @@ void sub_81AD9C0(u8);
void sub_81ADB14(u8);
void sub_81ADA7C(u8);
void sub_81ADC0C(u8);
void bag_menu_leave_maybe_3(void);
void bag_menu_leave_maybe_2(void);
void bag_menu_leave_maybe(void);
void CB2_FavorLadyExitBagMenu(void);
void CB2_QuizLadyExitBagMenu(void);
void sub_81ABA6C(void);
static void SetPocketListPositions(void);
void sub_81ABAE0(void);
@@ -493,20 +493,20 @@ void sub_81AAC14(void)
void sub_81AAC28(void)
{
GoToBagMenu(RETURN_LOCATION_FIELD_6, POCKETS_COUNT, bag_menu_leave_maybe_3);
GoToBagMenu(RETURN_LOCATION_FIELD_6, POCKETS_COUNT, bag_menu_leave_maybe);
gSpecialVar_0x8005 = 0;
gSpecialVar_Result = 0;
}
void sub_81AAC50(void)
void FavorLadyOpenBagMenu(void)
{
GoToBagMenu(RETURN_LOCATION_FIELD_4, POCKETS_COUNT, bag_menu_leave_maybe_2);
GoToBagMenu(RETURN_LOCATION_FIELD_4, POCKETS_COUNT, CB2_FavorLadyExitBagMenu);
gSpecialVar_Result = 0;
}
void sub_81AAC70(void)
void QuizLadyOpenBagMenu(void)
{
GoToBagMenu(RETURN_LOCATION_FIELD_5, POCKETS_COUNT, bag_menu_leave_maybe);
GoToBagMenu(RETURN_LOCATION_FIELD_5, POCKETS_COUNT, CB2_QuizLadyExitBagMenu);
gSpecialVar_Result = 0;
}
@@ -2202,7 +2202,7 @@ void unknown_ItemMenu_Show(u8 taskId)
unknown_ItemMenu_Confirm(taskId);
}
void bag_menu_leave_maybe_3(void)
void bag_menu_leave_maybe(void)
{
gFieldCallback = Apprentice_EnableBothScriptContexts;
SetMainCallback2(CB2_ReturnToField);
@@ -2216,9 +2216,9 @@ void unknown_ItemMenu_Give2(u8 taskId)
unknown_ItemMenu_Confirm(taskId);
}
void bag_menu_leave_maybe_2(void)
void CB2_FavorLadyExitBagMenu(void)
{
gFieldCallback = sub_818DEF4;
gFieldCallback = FieldCallback_FavorLadyEnableScriptContexts;
SetMainCallback2(CB2_ReturnToField);
}
@@ -2229,9 +2229,9 @@ void unknown_ItemMenu_Confirm2(u8 taskId)
unknown_ItemMenu_Confirm(taskId);
}
void bag_menu_leave_maybe(void)
void CB2_QuizLadyExitBagMenu(void)
{
gFieldCallback = sub_818E564;
gFieldCallback = FieldCallback_QuizLadyEnableScriptContexts;
SetMainCallback2(CB2_ReturnToField);
}
+116
View File
@@ -0,0 +1,116 @@
.include "constants/gba_constants.inc"
.include "asm/macros.inc"
.syntax unified
.text
thumb_func_start ArcTan2
ArcTan2: @ 82E7078
swi 0xA
bx lr
thumb_func_end ArcTan2
thumb_func_start BgAffineSet
@ void BgAffineSet(BgAffineSet_src_data *src, BgAffineSet_dest_data *dest, int entry_count)
BgAffineSet: @ 82E707C
swi 0xE
bx lr
thumb_func_end BgAffineSet
thumb_func_start CpuFastSet
@ void CpuFastSet(void *src, void *dest, unsigned int mode)
CpuFastSet: @ 82E7080
swi 0xC
bx lr
thumb_func_end CpuFastSet
thumb_func_start CpuSet
@ void CpuSet(void *src, void *dest, unsigned int mode)
CpuSet: @ 82E7084
swi 0xB
bx lr
thumb_func_end CpuSet
thumb_func_start Div
Div: @ 82E7088
swi 0x6
bx lr
thumb_func_end Div
thumb_func_start LZ77UnCompVram
@ void LZ77UnCompVram(void *src, void *dest)
LZ77UnCompVram: @ 82E708C
swi 0x12
bx lr
thumb_func_end LZ77UnCompVram
thumb_func_start LZ77UnCompWram
@ void LZ77UnCompWram(void *src, void *dest)
LZ77UnCompWram: @ 82E7090
swi 0x11
bx lr
thumb_func_end LZ77UnCompWram
thumb_func_start MultiBoot
@ s32 MultiBoot(struct MultiBootParam *mp)
MultiBoot: @ 82E7094
movs r1, 0x1
swi 0x25
bx lr
thumb_func_end MultiBoot
thumb_func_start ObjAffineSet
ObjAffineSet: @ 82E709C
swi 0xF
bx lr
thumb_func_end ObjAffineSet
thumb_func_start RLUnCompVram
RLUnCompVram: @ 82E70A0
swi 0x15
bx lr
thumb_func_end RLUnCompVram
thumb_func_start RLUnCompWram
RLUnCompWram: @ 82E70A4
swi 0x14
bx lr
thumb_func_end RLUnCompWram
thumb_func_start RegisterRamReset
@ void RegisterRamReset(int ResetFlags)
RegisterRamReset: @ 82E70A8
swi 0x1
bx lr
thumb_func_end RegisterRamReset
thumb_func_start SoftReset
@ void SoftReset()
SoftReset: @ 82E70AC
ldr r3, =REG_IME
movs r2, 0
strb r2, [r3]
ldr r1, =0x3007F00
mov sp, r1
swi 0x1
swi 0
.pool
thumb_func_end SoftReset
thumb_func_start Sqrt
@ s16 Sqrt(int)
Sqrt: @ 82E70C4
swi 0x8
bx lr
thumb_func_end Sqrt
thumb_func_start VBlankIntrWait
@ void VBlankIntrWait()
VBlankIntrWait: @ 82E70C8
movs r2, 0
swi 0x5
bx lr
thumb_func_end VBlankIntrWait
.align 2, 0 @ Don't pad with nop.
+550
View File
@@ -0,0 +1,550 @@
@ This library can be used to download and execute a multi-boot image from
@ a GameCube using the JOY Bus protocol over the link cable.
.include "asm/macros.inc"
.include "constants/constants.inc"
.equiv GCMB_STRUCT_BASE_DEST_PTR, 0x20
.equiv GCMB_STRUCT_CUR_DEST_PTR, 0x24
.equiv GCMB_STRUCT_SERIAL_INTR_HANDLER, 0x28
.equiv ROM_HEADER_NINTENDO_LOGO_OFFSET, 0x4
.syntax unified
.text
thumb_func_start GameCubeMultiBoot_Hash
GameCubeMultiBoot_Hash: @ 82DED70
push {r4,lr}
ldr r4, pool_HashVal
eors r3, r1
movs r2, 0x20
GameCubeMultiBoot_Hash_Loop:
lsrs r3, 1
bcc GameCubeMultiBoot_Hash_SkipEor
eors r3, r4
GameCubeMultiBoot_Hash_SkipEor:
subs r2, 0x1
bne GameCubeMultiBoot_Hash_Loop
pop {r4,pc}
thumb_func_end GameCubeMultiBoot_Hash
thumb_func_start GameCubeMultiBoot_Main
@ void GameCubeMultiBoot_Main(struct GameCubeMultiBoot *mb);
GameCubeMultiBoot_Main: @ 82DED84
ldr r1, [r0, GCMB_STRUCT_SERIAL_INTR_HANDLER]
cmp r1, 0
beq _082DEDAA
ldrb r1, [r0, 0x1]
adds r1, 0x1
strb r1, [r0, 0x1]
ldrb r1, [r0, 0x2]
cmp r1, 0x2
beq _082DEDF4
ldr r3, pool_InterruptRegs
ldrh r2, [r3, OFFSET_REG_IME - 0x200]
movs r1, 0
strh r1, [r3, OFFSET_REG_IME - 0x200]
ldrb r1, [r0]
cmp r1, 0xA
bgt _082DEDA8
adds r1, 0x1
strb r1, [r0]
_082DEDA8:
strh r2, [r3, OFFSET_REG_IME - 0x200]
_082DEDAA:
bcs GameCubeMultiBoot_Init
ldrb r1, [r0, 0x2]
cmp r1, 0
bne _082DEDF6
ldr r1, [r0, GCMB_STRUCT_CUR_DEST_PTR]
ldr r2, [r0, GCMB_STRUCT_BASE_DEST_PTR]
subs r1, r2
beq _082DEE76
cmp r1, 0xA0
bcc _082DEE76
push {r4-r6}
movs r1, 0x98
adds r2, ROM_HEADER_NINTENDO_LOGO_OFFSET
ldr r4, pool_NintendoLogo
_082DEDC6:
ldm r2!, {r5}
ldm r4!, {r6}
cmp r5, r6
bne _082DEDDC
subs r1, 0x4
bne _082DEDC6
ldm r2!, {r5}
ldm r4!, {r6}
eors r5, r6
lsrs r5, 8
str r2, [r0, GCMB_STRUCT_BASE_DEST_PTR]
_082DEDDC:
pop {r4-r6}
bne GameCubeMultiBoot_Init
movs r1, 0x1
strb r1, [r0, 0x2]
ldr r1, [r0, 0x4]
ldr r2, [r0, 0x8]
eors r1, r2
str r1, [r0, 0x18]
ldr r2, pool_Kawa
muls r1, r2
adds r1, 0x1
str r1, [r0, 0x14]
_082DEDF4:
bx lr
_082DEDF6:
ldr r1, [r0, GCMB_STRUCT_CUR_DEST_PTR]
mov r12, r1
ldr r3, [r0, 0x18]
push {r4-r7}
ldr r4, [r0, GCMB_STRUCT_BASE_DEST_PTR]
ldr r5, pool_Kawa
ldr r6, [r0, 0x14]
ldr r7, pool_HashVal
_082DEE06:
cmp r4, r12
bcs _082DEE26
ldr r1, [r4]
eors r1, r6
adds r1, r3
stm r4!, {r1}
eors r3, r1
movs r2, 0x20
_082DEE16:
lsrs r3, 1
bcc _082DEE1C
eors r3, r7
_082DEE1C:
subs r2, 0x1
bne _082DEE16
muls r6, r5
adds r6, 0x1
b _082DEE06
_082DEE26:
str r4, [r0, GCMB_STRUCT_BASE_DEST_PTR]
str r6, [r0, 0x14]
pop {r4-r7}
str r3, [r0, 0x18]
ldrh r1, [r0, 0x12]
cmp r1, 0
bne _082DEE76
ldr r1, [r0, GCMB_STRUCT_CUR_DEST_PTR]
ldr r2, [r0, GCMB_STRUCT_BASE_DEST_PTR]
cmp r1, r2
bne _082DEE76
ldr r1, [r0, 0xC]
cmp r1, 0
beq _082DEE60
ldrh r1, [r0, 0x10]
cmp r1, 0
beq _082DEDF4
mov r12, lr
movs r1, 0xBB
ldr r3, [r0, 0xC]
bl GameCubeMultiBoot_Hash
ldrh r1, [r0, 0x10]
mov lr, r12
subs r1, r3
bne GameCubeMultiBoot_Init
movs r1, 0x2
strb r1, [r0, 0x2]
bx lr
_082DEE60:
mov r12, lr
ldrb r1, [r0, 0x3]
lsls r1, 24
subs r1, 0x1
str r1, [r0, 0xC]
bl GameCubeMultiBoot_Hash
lsls r3, 8
adds r3, 0xFF
str r3, [r0, 0x1C]
bx r12
_082DEE76:
bx lr
thumb_func_end GameCubeMultiBoot_Main
.align 2, 0
pool_HashVal: .4byte 0xa1c1
pool_Kawa: .ascii "Kawa" @ name of BIOS developer
pool_NintendoLogo: .4byte RomHeaderNintendoLogo
thumb_func_start GameCubeMultiBoot_ExecuteProgram
@ void GameCubeMultiBoot_ExecuteProgram(struct GameCubeMultiBoot *mb);
GameCubeMultiBoot_ExecuteProgram: @ 82DEE84
ldrb r1, [r0, 0x2]
cmp r1, 0x2
bne GameCubeMultiBoot_ExecuteProgram_Fail
ldr r3, pool_InterruptRegs
movs r1, 0
strh r1, [r3, OFFSET_REG_IME - 0x200]
ldr r1, pool_MultiBootLoadAddr
adds r1, 0xC0
bx r1
GameCubeMultiBoot_ExecuteProgram_Fail:
bx lr
thumb_func_end GameCubeMultiBoot_ExecuteProgram
thumb_func_start GameCubeMultiBoot_Init
@ void GameCubeMultiBoot_Init(struct GameCubeMultiBoot *mb);
GameCubeMultiBoot_Init: @ 82DEE98
ldr r3, pool_InterruptRegs
@ Save IME register.
ldrh r2, [r3, OFFSET_REG_IME - 0x200]
@ Disable interrupts.
movs r1, 0
strh r1, [r3, OFFSET_REG_IME - 0x200]
@ Set the handler to the "Stop" routine.
@ Unless the first command that is received is a device reset command, the
@ "Stop" routine will be executed and no further commands will be processed.
adr r3, GcMbIntrHandler_Stop
str r3, [r0, GCMB_STRUCT_SERIAL_INTR_HANDLER]
ldrb r3, [r0, 0x3]
push {r3}
ldrb r3, [r0, 0x1]
push {r0,r3}
adds r3, r0, 0
adds r3, GCMB_STRUCT_BASE_DEST_PTR
@ clear all but the last 3 fields of the struct
GameCubeMultiBoot_Init_ClearStructLoop:
stm r0!, {r1}
cmp r0, r3
blo GameCubeMultiBoot_Init_ClearStructLoop
pop {r0,r3}
lsrs r3, 1
strb r3, [r0, 0x3]
pop {r3}
strb r3, [r0, 0x1]
ldr r3, pool_SerialRegs
@ Turn off JOY Bus mode.
lsls r0, r3, 10
strh r0, [r3, OFFSET_REG_RCNT - 0x120]
@ Turn on JOY Bus mode.
movs r0, 0xC0
lsls r0, 8
strh r0, [r3, OFFSET_REG_RCNT - 0x120]
@ Init JOY Bus registers.
movs r0, 0x47
strh r0, [r3, OFFSET_REG_JOYCNT - 0x120]
strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120]
ldr r3, pool_InterruptRegs
@ Acknowledge serial interrupt.
movs r0, INTR_FLAG_SERIAL
strh r0, [r3, OFFSET_REG_IF - 0x200]
@ Enable serial interrupt.
ldrh r1, [r3, OFFSET_REG_IE - 0x200]
orrs r1, r0
strh r1, [r3, OFFSET_REG_IE - 0x200]
@ Restore IME register.
strh r2, [r3, OFFSET_REG_IME - 0x200]
bx lr
thumb_func_end GameCubeMultiBoot_Init
non_word_aligned_thumb_func_start GameCubeMultiBoot_HandleSerialInterrupt
@ void GameCubeMultiBoot_HandleSerialInterrupt(struct GameCubeMultiBoot *mb);
GameCubeMultiBoot_HandleSerialInterrupt: @ 82DEEE2
ldr r3, pool_SerialRegs
@ Acknowledge reset/receive/send flags.
ldrh r1, [r3, OFFSET_REG_JOYCNT - 0x120]
strh r1, [r3, OFFSET_REG_JOYCNT - 0x120]
movs r2, 0
strb r2, [r0]
ldr r2, [r0, GCMB_STRUCT_SERIAL_INTR_HANDLER]
cmp r2, 0
beq GameCubeMultiBoot_HandleSerialInterruptDone
lsrs r1, 1 @ was a device reset command received?
bcs GameCubeMultiBoot_BeginHandshake @ branch if so
mov pc, r2
.align 2, 0
@ Zero the status and the interrupt handler pointer.
@ Commands from the GameCube will not be processed after this is executed
@ unless GameCubeMultiBoot_Init() is called again.
GcMbIntrHandler_Stop:
movs r2, 0
strh r2, [r3, OFFSET_REG_JOYSTAT - 0x120]
GameCubeMultiBoot_SetInterruptHandler:
str r2, [r0, GCMB_STRUCT_SERIAL_INTR_HANDLER]
GameCubeMultiBoot_ReadVCount:
ldr r3, pool_RegDispstat
ldrh r1, [r3, OFFSET_REG_VCOUNT - OFFSET_REG_DISPSTAT]
strb r1, [r0, 0x3]
GameCubeMultiBoot_HandleSerialInterruptDone:
bx lr
GameCubeMultiBoot_BeginHandshake:
ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120]
ldr r1, pool_RubyUSAGameCode
str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120]
movs r1, 0x10
strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120]
ldrb r1, [r0, 0x3]
strb r1, [r0, 0x9]
ldrb r1, [r0, 0x2]
cmp r1, 0
bne GcMbIntrHandler_Stop
ldr r1, pool_MultiBootLoadAddr
str r1, [r0, GCMB_STRUCT_BASE_DEST_PTR]
str r1, [r0, GCMB_STRUCT_CUR_DEST_PTR]
adr r2, GcMbIntrHandler_CheckGameCodeSent
b GameCubeMultiBoot_SetInterruptHandler
.align 2, 0
GcMbIntrHandler_CheckGameCodeSent: @ 82DEF24
lsls r1, 31
bcc GcMbIntrHandler_Stop @ stop if send failed
bmi GameCubeMultiBoot_CheckHandshakeResponse @ branch if receive is complete
@ If the response hasn't been fully received yet,
@ check again upon the next interrupt.
adr r2, GcMbIntrHandler_CheckHandshakeResponse
b GameCubeMultiBoot_SetInterruptHandler
.align 2, 0
GcMbIntrHandler_CheckHandshakeResponse: @ 82DEF30
lsrs r1, 1 @ is receive complete?
bcc GcMbIntrHandler_Stop @ stop if not
GameCubeMultiBoot_CheckHandshakeResponse:
ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120]
ldr r2, pool_RubyUSAGameCode
cmp r1, r2
bne GcMbIntrHandler_Stop @ stop if the GameCube didn't reply with the same game code
ldrb r1, [r0, 0x3]
strb r1, [r0, 0xB]
adr r2, GcMbIntrHandler_82DEF44
b GameCubeMultiBoot_SetInterruptHandler
.align 2, 0
GcMbIntrHandler_82DEF44: @ 82DEF44
lsrs r1, 1 @ is receive complete?
bcc GcMbIntrHandler_Stop @ branch if not
ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120]
lsrs r2, r1, 24
cmp r2, 0xDD
bne GcMbIntrHandler_Stop
str r1, [r0, 0x4]
ldrb r1, [r0, 0x1]
strb r1, [r0, 0xA]
movs r2, 0
movs r3, 0
ldr r1, [r0, 0x8]
lsrs r1, 8
_082DEF5E:
lsrs r1, 1
adcs r2, r3
cmp r1, 0
bne _082DEF5E
cmp r2, 0xE
bgt _082DEF70
cmp r2, 0x7
bge _082DEF72
movs r1, 0xFF
_082DEF70:
strb r1, [r0, 0xA]
_082DEF72:
ldr r1, [r0, 0x8]
adds r1, 0xEE
ldr r3, pool_SerialRegs
str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120]
movs r1, 0x30
strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120]
adr r2, GcMbIntrHandler_82DEF84
b GameCubeMultiBoot_SetInterruptHandler
.align 2, 0
GcMbIntrHandler_82DEF84: @ 82DEF84
lsls r1, 31
bcc GcMbIntrHandler_Stop @ stop if send failed
bmi _082DEF94 @ branch if receive is complete
adr r2, GcMbIntrHandler_82DEF90
b GameCubeMultiBoot_SetInterruptHandler
.align 2, 0
GcMbIntrHandler_82DEF90: @ 82DEF90
lsrs r1, 1 @ is receive complete?
bcc GcMbIntrHandler_Stop @ branch if not
_082DEF94:
ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120]
ldr r2, _082DF034
cmp r1, r2
bhs GcMbIntrHandler_Stop
adds r1, 0x1
adds r1, r1
strh r1, [r0, 0x12]
ldrb r1, [r0, 0x2]
cmp r1, 0
_082DEFA6:
bne GcMbIntrHandler_Stop
ldr r1, pool_MultiBootLoadAddr
str r1, [r0, GCMB_STRUCT_BASE_DEST_PTR]
str r1, [r0, GCMB_STRUCT_CUR_DEST_PTR]
adr r2, GcMbIntrHandler_82DEFB4
b GameCubeMultiBoot_SetInterruptHandler
.align 2, 0
GcMbIntrHandler_82DEFB4: @ 82DEFB4
lsrs r1, 1 @ is receive complete?
bcc GcMbIntrHandler_Stop @ branch if not
ldr r2, [r0, GCMB_STRUCT_CUR_DEST_PTR]
movs r1, 0x4
ands r1, r2
adds r1, 0x8
lsls r1, 2
strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120]
ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120]
stm r2!, {r1}
str r2, [r0, GCMB_STRUCT_CUR_DEST_PTR]
ldrh r1, [r0, 0x12]
subs r1, 0x1
strh r1, [r0, 0x12]
bne GameCubeMultiBoot_ReadVCount
_082DEFD2:
ldrb r1, [r0, 0x1]
lsls r1, 8
adds r1, 0xCC
str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120]
adr r2, _082DEFE0
b GameCubeMultiBoot_SetInterruptHandler
.align 2, 0
_082DEFE0:
lsls r1, 31
_082DEFE2:
bcc GcMbIntrHandler_Stop
ldr r1, [r0, 0x1C]
cmp r1, 0
beq _082DEFD2
str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120]
adr r2, GcMbIntrHandler_82DEFF0
b GameCubeMultiBoot_SetInterruptHandler
.align 2, 0
GcMbIntrHandler_82DEFF0: @ 82DEFF0
lsls r1, 31
bcc _082DEFE2 @ branch if send failed
bmi _082DF000 @ branch if receive is complete
adr r2, GcMbIntrHandler_82DEFFC
b GameCubeMultiBoot_SetInterruptHandler
.align 2, 0
GcMbIntrHandler_82DEFFC: @ 82DEFFC
lsrs r1, 1 @ is receive complete?
bcc _082DEFE2 @ branch if not
_082DF000:
ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120]
lsrs r2, r1, 24
cmp r2, 0xBB
bne _082DEFA6
strh r1, [r0, 0x10]
adr r2, GcMbIntrHandler_82DF010
b GameCubeMultiBoot_SetInterruptHandler
.align 2, 0
GcMbIntrHandler_82DF010: @ 82DF010
b GcMbIntrHandler_Stop
thumb_func_end GameCubeMultiBoot_HandleSerialInterrupt
non_word_aligned_thumb_func_start GameCubeMultiBoot_Quit
@ void GameCubeMultiBoot_Quit();
GameCubeMultiBoot_Quit: @ 82DF012
ldr r3, pool_InterruptRegs
@ Save IME register.
ldrh r2, [r3, OFFSET_REG_IME - 0x200]
@ Disable interrupts.
movs r1, 0
strh r1, [r3, OFFSET_REG_IME - 0x200]
ldr r3, pool_SerialRegs
@ Acknowledge all JOYCNT flags.
movs r0, 0x7
strh r0, [r3, OFFSET_REG_JOYCNT - 0x120]
@ Turn off JOY Bus mode.
lsls r0, r3, 10
strh r0, [r3, OFFSET_REG_RCNT - 0x120] @ store 0x8000
ldr r3, pool_InterruptRegs
@ Acknowledge serial interrupt.
movs r0, INTR_FLAG_SERIAL
strh r0, [r3, OFFSET_REG_IF - 0x200]
@ Disable serial interrupt.
ldrh r1, [r3, OFFSET_REG_IE - 0x200]
bics r1, r0
strh r1, [r3, OFFSET_REG_IE - 0x200]
@ Restore IME register.
strh r2, [r3, OFFSET_REG_IME - 0x200]
bx lr
thumb_func_end GameCubeMultiBoot_Quit
.align 2, 0
_082DF034: .4byte 0x4000
pool_InterruptRegs: .4byte REG_BASE + 0x200
pool_SerialRegs: .4byte REG_BASE + 0x120
pool_RegDispstat: .4byte REG_DISPSTAT
pool_RubyUSAGameCode: .ascii "AXVE"
pool_MultiBootLoadAddr: .4byte EWRAM_START
.align 2, 0 @ Don't pad with nop.
+374 -563
View File
File diff suppressed because it is too large Load Diff
+1934
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1290,7 +1290,7 @@ static bool32 sub_81963F0(u8 taskId)
sub_81973A4();
playerObjectId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
EventObjectClearHeldMovementIfFinished(&gEventObjects[playerObjectId]);
sub_80D338C();
ScriptMovement_UnfreezeEventObjects();
UnfreezeEventObjects();
ScriptContext2_Disable();
}
+1 -1
View File
@@ -1155,7 +1155,7 @@ static void PrintStoryList(void)
if (curWidth > width)
width = curWidth;
}
sStorytellerWindowId = CreateWindowFromRect(0, 0, convert_pixel_width_to_tile_width(width), GetFreeStorySlot() * 2 + 2);
sStorytellerWindowId = CreateWindowFromRect(0, 0, ConvertPixelWidthToTileWidth(width), GetFreeStorySlot() * 2 + 2);
SetStandardWindowBorderStyle(sStorytellerWindowId, 0);
for (i = 0; i < 4; i++)
{
+4 -4
View File
@@ -350,7 +350,7 @@ void sub_811FAA4(u8 markings, s16 x, s16 y)
u16 i;
sMenu->cursorPos = 0;
sMenu->markings = markings;
for (i = 0; i < 4; i++)
for (i = 0; i < NUM_MON_MARKINGS; i++)
sMenu->markingsArray[i] = (sMenu->markings >> i) & 1;
sub_811FC80(x, y, sMenu->baseTileTag, sMenu->basePaletteTag);
}
@@ -371,7 +371,7 @@ void sub_811FAF8(void)
DestroySprite(sMenu->menuWindowSprites[i]);
sMenu->menuWindowSprites[i] = NULL;
}
for (i = 0; i < 4; i++)
for (i = 0; i < NUM_MON_MARKINGS; i++)
{
if (!sMenu->menuMarkingSprites[i])
return;
@@ -422,7 +422,7 @@ bool8 sub_811FBA4(void)
{
case 4:
sMenu->markings = 0;
for (i = 0; i < 4; i++)
for (i = 0; i < NUM_MON_MARKINGS; i++)
sMenu->markings |= sMenu->markingsArray[i] << i;
return FALSE;
case 5:
@@ -498,7 +498,7 @@ static void sub_811FC80(s16 x, s16 y, u16 baseTileTag, u16 basePaletteTag)
sprTemplate.callback = sub_811FF40;
sprTemplate.oam = &gUnknown_0859EE84;
for (i = 0; i < 4; i++)
for (i = 0; i < NUM_MON_MARKINGS; i++)
{
spriteId = CreateSprite(&sprTemplate, x + 32, y + 16 + 16 * i, 0);
if (spriteId != MAX_SPRITES)
+1 -1
View File
@@ -55,7 +55,7 @@ void FinishMossdeepGymTiles(void)
id = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
EventObjectClearHeldMovementIfFinished(&gEventObjects[id]);
sub_80D338C();
ScriptMovement_UnfreezeEventObjects();
}
u16 MossdeepGym_MoveEvents(u8 arg0)
+1 -1
View File
@@ -154,7 +154,7 @@ static EWRAM_DATA struct
{
u8 state;
u8 heartSpriteIds[16]; /*0x001*/
u16 movesToLearn[4]; /*0x012*/
u16 movesToLearn[MAX_MON_MOVES]; /*0x012*/
u8 filler1A[0x44 - 0x1A]; /*0x01A*/
u8 partyMon; /*0x044*/
u8 moveSlot; /*0x045*/
+4 -4
View File
@@ -541,16 +541,16 @@ static void DisplaySentToPCMessage(void)
{
u8 stringToDisplay = 0;
if (!sub_813B260())
if (!IsDestinationBoxFull())
{
StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_STORAGE_UNKNOWN)));
StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON)));
StringCopy(gStringVar2, gNamingScreenData->destBuffer);
}
else
{
StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_STORAGE_UNKNOWN)));
StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON)));
StringCopy(gStringVar2, gNamingScreenData->destBuffer);
StringCopy(gStringVar3, GetBoxNamePtr(get_unknown_box_id()));
StringCopy(gStringVar3, GetBoxNamePtr(GetPCBoxToSendMon()));
stringToDisplay = 2;
}
+2 -2
View File
@@ -81,7 +81,7 @@ u32 GetTrainerId(u8 *trainerId)
void CopyTrainerId(u8 *dst, u8 *src)
{
s32 i;
for (i = 0; i < 4; i++)
for (i = 0; i < TRAINER_ID_LENGTH; i++)
dst[i] = src[i];
}
@@ -198,7 +198,7 @@ void NewGameInitData(void)
ScriptContext2_RunNewScript(EventScript_ResetAllMapFlags);
ResetMiniGamesResults();
copy_strings_to_sav1();
SetLilycoveLady();
InitLilycoveLady();
ResetAllApprenticeData();
ClearRankingHallRecords();
InitMatchCallCounters();
+30 -23
View File
@@ -48,6 +48,13 @@ enum
WIN_OPTIONS
};
#define YPOS_TEXTSPEED (MENUITEM_TEXTSPEED * 16)
#define YPOS_BATTLESCENE (MENUITEM_BATTLESCENE * 16)
#define YPOS_BATTLESTYLE (MENUITEM_BATTLESTYLE * 16)
#define YPOS_SOUND (MENUITEM_SOUND * 16)
#define YPOS_BUTTONMODE (MENUITEM_BUTTONMODE * 16)
#define YPOS_FRAMETYPE (MENUITEM_FRAMETYPE * 16)
// this file's functions
static void Task_OptionMenuFadeIn(u8 taskId);
static void Task_OptionMenuProcessInput(u8 taskId);
@@ -80,13 +87,13 @@ static const u8 sEqualSignGfx[] = INCBIN_U8("graphics/misc/option_menu_equals_si
static const u8 *const sOptionMenuItemsNames[MENUITEM_COUNT] =
{
gText_TextSpeed,
gText_BattleScene,
gText_BattleStyle,
gText_Sound,
gText_ButtonMode,
gText_Frame,
gText_OptionMenuCancel,
[MENUITEM_TEXTSPEED] = gText_TextSpeed,
[MENUITEM_BATTLESCENE] = gText_BattleScene,
[MENUITEM_BATTLESTYLE] = gText_BattleStyle,
[MENUITEM_SOUND] = gText_Sound,
[MENUITEM_BUTTONMODE] = gText_ButtonMode,
[MENUITEM_FRAMETYPE] = gText_Frame,
[MENUITEM_CANCEL] = gText_OptionMenuCancel,
};
static const struct WindowTemplate sOptionMenuWinTemplates[] =
@@ -280,12 +287,12 @@ static void Task_OptionMenuProcessInput(u8 taskId)
if (gTasks[taskId].data[TD_MENUSELECTION] > 0)
gTasks[taskId].data[TD_MENUSELECTION]--;
else
gTasks[taskId].data[TD_MENUSELECTION] = 6;
gTasks[taskId].data[TD_MENUSELECTION] = MENUITEM_CANCEL;
HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]);
}
else if (gMain.newKeys & DPAD_DOWN)
{
if (gTasks[taskId].data[TD_MENUSELECTION] <= 5)
if (gTasks[taskId].data[TD_MENUSELECTION] < MENUITEM_CANCEL)
gTasks[taskId].data[TD_MENUSELECTION]++;
else
gTasks[taskId].data[TD_MENUSELECTION] = 0;
@@ -431,7 +438,7 @@ static void TextSpeed_DrawChoices(u8 selection)
styles[2] = 0;
styles[selection] = 1;
DrawOptionMenuChoice(gText_TextSpeedSlow, 104, 0, styles[0]);
DrawOptionMenuChoice(gText_TextSpeedSlow, 104, YPOS_TEXTSPEED, styles[0]);
widthSlow = GetStringWidth(1, gText_TextSpeedSlow, 0);
widthMid = GetStringWidth(1, gText_TextSpeedMid, 0);
@@ -439,9 +446,9 @@ static void TextSpeed_DrawChoices(u8 selection)
widthMid -= 94;
xMid = (widthSlow - widthMid - widthFast) / 2 + 104;
DrawOptionMenuChoice(gText_TextSpeedMid, xMid, 0, styles[1]);
DrawOptionMenuChoice(gText_TextSpeedMid, xMid, YPOS_TEXTSPEED, styles[1]);
DrawOptionMenuChoice(gText_TextSpeedFast, GetStringRightAlignXOffset(1, gText_TextSpeedFast, 198), 0, styles[2]);
DrawOptionMenuChoice(gText_TextSpeedFast, GetStringRightAlignXOffset(1, gText_TextSpeedFast, 198), YPOS_TEXTSPEED, styles[2]);
}
static u8 BattleScene_ProcessInput(u8 selection)
@@ -463,8 +470,8 @@ static void BattleScene_DrawChoices(u8 selection)
styles[1] = 0;
styles[selection] = 1;
DrawOptionMenuChoice(gText_BattleSceneOn, 104, 16, styles[0]);
DrawOptionMenuChoice(gText_BattleSceneOff, GetStringRightAlignXOffset(1, gText_BattleSceneOff, 198), 16, styles[1]);
DrawOptionMenuChoice(gText_BattleSceneOn, 104, YPOS_BATTLESCENE, styles[0]);
DrawOptionMenuChoice(gText_BattleSceneOff, GetStringRightAlignXOffset(1, gText_BattleSceneOff, 198), YPOS_BATTLESCENE, styles[1]);
}
static u8 BattleStyle_ProcessInput(u8 selection)
@@ -486,8 +493,8 @@ static void BattleStyle_DrawChoices(u8 selection)
styles[1] = 0;
styles[selection] = 1;
DrawOptionMenuChoice(gText_BattleStyleShift, 104, 32, styles[0]);
DrawOptionMenuChoice(gText_BattleStyleSet, GetStringRightAlignXOffset(1, gText_BattleStyleSet, 198), 32, styles[1]);
DrawOptionMenuChoice(gText_BattleStyleShift, 104, YPOS_BATTLESTYLE, styles[0]);
DrawOptionMenuChoice(gText_BattleStyleSet, GetStringRightAlignXOffset(1, gText_BattleStyleSet, 198), YPOS_BATTLESTYLE, styles[1]);
}
static u8 Sound_ProcessInput(u8 selection)
@@ -510,8 +517,8 @@ static void Sound_DrawChoices(u8 selection)
styles[1] = 0;
styles[selection] = 1;
DrawOptionMenuChoice(gText_SoundMono, 104, 48, styles[0]);
DrawOptionMenuChoice(gText_SoundStereo, GetStringRightAlignXOffset(1, gText_SoundStereo, 198), 48, styles[1]);
DrawOptionMenuChoice(gText_SoundMono, 104, YPOS_SOUND, styles[0]);
DrawOptionMenuChoice(gText_SoundStereo, GetStringRightAlignXOffset(1, gText_SoundStereo, 198), YPOS_SOUND, styles[1]);
}
static u8 FrameType_ProcessInput(u8 selection)
@@ -568,8 +575,8 @@ static void FrameType_DrawChoices(u8 selection)
text[i] = EOS;
DrawOptionMenuChoice(gText_FrameType, 104, 80, 0);
DrawOptionMenuChoice(text, 128, 80, 1);
DrawOptionMenuChoice(gText_FrameType, 104, YPOS_FRAMETYPE, 0);
DrawOptionMenuChoice(text, 128, YPOS_FRAMETYPE, 1);
}
static u8 ButtonMode_ProcessInput(u8 selection)
@@ -605,7 +612,7 @@ static void ButtonMode_DrawChoices(u8 selection)
styles[2] = 0;
styles[selection] = 1;
DrawOptionMenuChoice(gText_ButtonTypeNormal, 104, 64, styles[0]);
DrawOptionMenuChoice(gText_ButtonTypeNormal, 104, YPOS_BUTTONMODE, styles[0]);
widthNormal = GetStringWidth(1, gText_ButtonTypeNormal, 0);
widthLR = GetStringWidth(1, gText_ButtonTypeLR, 0);
@@ -613,9 +620,9 @@ static void ButtonMode_DrawChoices(u8 selection)
widthLR -= 94;
xLR = (widthNormal - widthLR - widthLA) / 2 + 104;
DrawOptionMenuChoice(gText_ButtonTypeLR, xLR, 64, styles[1]);
DrawOptionMenuChoice(gText_ButtonTypeLR, xLR, YPOS_BUTTONMODE, styles[1]);
DrawOptionMenuChoice(gText_ButtonTypeLEqualsA, GetStringRightAlignXOffset(1, gText_ButtonTypeLEqualsA, 198), 64, styles[2]);
DrawOptionMenuChoice(gText_ButtonTypeLEqualsA, GetStringRightAlignXOffset(1, gText_ButtonTypeLEqualsA, 198), YPOS_BUTTONMODE, styles[2]);
}
static void DrawTextOption(void)
+3 -3
View File
@@ -1759,7 +1759,7 @@ void CB2_ContinueSavedGame(void)
static void FieldClearVBlankHBlankCallbacks(void)
{
if (warp0_in_pokecenter() == TRUE)
if (UsedPokemonCenterWarp() == TRUE)
CloseLink();
if (gWirelessCommType != 0)
@@ -2435,7 +2435,7 @@ static void UpdateAllLinkPlayers(u16 *keys, s32 selfId)
struct TradeRoomPlayer trainer;
s32 i;
for (i = 0; i < 4; i++)
for (i = 0; i < MAX_LINK_PLAYERS; i++)
{
u8 key = keys[i];
u16 setFacing = FACING_NONE;
@@ -3026,7 +3026,7 @@ static s32 sub_80878E4(u8 linkPlayerId)
static u8 GetLinkPlayerIdAt(s16 x, s16 y)
{
u8 i;
for (i = 0; i < 4; i++)
for (i = 0; i < MAX_LINK_PLAYERS; i++)
{
if (gLinkPlayerEventObjects[i].active
&& (gLinkPlayerEventObjects[i].movementMode == 0 || gLinkPlayerEventObjects[i].movementMode == 2))
+1 -1
View File
@@ -3650,7 +3650,7 @@ static u8 sub_81B31B0(u8 a)
for (i = 0; i < gUnknown_0203CEC4->listSize; i++)
{
u8 unk = (gUnknown_0203CEC4->actions[i] > 18) ? 4 : 3;
u8 unk = (gUnknown_0203CEC4->actions[i] >= MENU_FIELD_MOVES) ? 4 : 3;
AddTextPrinterParameterized4(gUnknown_0203CEC4->windowId[0], 1, cursorDimension, (i * 16) + 1, fontAttribute, 0, sFontColorTable[unk], 0, sCursorOptions[gUnknown_0203CEC4->actions[i]].text);
}
+1 -1
View File
@@ -3,7 +3,6 @@
#include "battle.h"
#include "battle_controllers.h"
#include "battle_message.h"
#include "berry.h"
#include "bg.h"
#include "decompress.h"
#include "event_data.h"
@@ -30,6 +29,7 @@
#include "task.h"
#include "text.h"
#include "text_window.h"
#include "constants/berry.h"
#include "constants/items.h"
#include "constants/songs.h"
#include "constants/rgb.h"
+27 -27
View File
@@ -4249,12 +4249,12 @@ u16 GetPokedexHeightWeight(u16 dexNum, u8 data)
{
switch (data)
{
case 0: // height
return gPokedexEntries[dexNum].height;
case 1: // weight
return gPokedexEntries[dexNum].weight;
default:
return 1;
case 0: // height
return gPokedexEntries[dexNum].height;
case 1: // weight
return gPokedexEntries[dexNum].weight;
default:
return 1;
}
}
@@ -4360,23 +4360,23 @@ u16 GetHoennPokedexCount(u8 caseID)
return count;
}
u16 sub_80C089C(u8 caseID)
u16 GetKantoPokedexCount(u8 caseID)
{
u16 count = 0;
u16 i;
for (i = 0; i < 151; i++)
for (i = 0; i < KANTO_DEX_COUNT; i++)
{
switch (caseID)
{
case FLAG_GET_SEEN:
if (GetSetPokedexFlag(i + 1, FLAG_GET_SEEN))
count++;
break;
case FLAG_GET_CAUGHT:
if (GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
count++;
break;
case FLAG_GET_SEEN:
if (GetSetPokedexFlag(i + 1, FLAG_GET_SEEN))
count++;
break;
case FLAG_GET_CAUGHT:
if (GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
count++;
break;
}
}
return count;
@@ -4386,7 +4386,7 @@ bool16 HasAllHoennMons(void)
{
u16 i;
for (i = 0; i < 200; i++)
for (i = 0; i < HOENN_DEX_COUNT - 2; i++)
{
if (!GetSetPokedexFlag(HoennToNationalOrder(i + 1), FLAG_GET_CAUGHT))
return FALSE;
@@ -4394,11 +4394,11 @@ bool16 HasAllHoennMons(void)
return TRUE;
}
bool8 sub_80C0918(void)
bool8 HasAllKantoMons(void)
{
u16 i;
for (i = 0; i < 150; i++)
for (i = 0; i < KANTO_DEX_COUNT - 1; i++)
{
if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
return FALSE;
@@ -4406,26 +4406,26 @@ bool8 sub_80C0918(void)
return TRUE;
}
u16 sub_80C0944(void)
bool16 HasAllMons(void)
{
u16 i;
for (i = 0; i < 150; i++)
for (i = 0; i < NATIONAL_DEX_MEWTWO; i++)
{
if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
return 0;
return FALSE;
}
for (i = 151; i < 248; i++)
for (i = NATIONAL_DEX_MEW; i < NATIONAL_DEX_TYRANITAR; i++)
{
if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
return 0;
return FALSE;
}
for (i = 251; i < 384; i++)
for (i = NATIONAL_DEX_CELEBI; i < NATIONAL_DEX_RAYQUAZA; i++)
{
if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
return 0;
return FALSE;
}
return 1;
return TRUE;
}
void sub_80C09B0(u16 a)
+34 -34
View File
@@ -2341,7 +2341,7 @@ void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedI
u16 evAmount;
u8 evsBits;
CreateMon(mon, species, level, fixedIV, 0, 0, 0, 0);
CreateMon(mon, species, level, fixedIV, 0, 0, OT_ID_PLAYER_ID, 0);
evsBits = evSpread;
@@ -2373,7 +2373,7 @@ void CreateBattleTowerMon(struct Pokemon *mon, struct BattleTowerPokemon *src)
u8 language;
u8 value;
CreateMon(mon, src->species, src->level, 0, 1, src->personality, 1, src->otId);
CreateMon(mon, src->species, src->level, 0, 1, src->personality, OT_ID_PRESET, src->otId);
for (i = 0; i < MAX_MON_MOVES; i++)
SetMonMoveSlot(mon, src->moves[i], i);
@@ -2435,7 +2435,7 @@ void CreateBattleTowerMon2(struct Pokemon *mon, struct BattleTowerPokemon *src,
else
level = src->level;
CreateMon(mon, src->species, level, 0, 1, src->personality, 1, src->otId);
CreateMon(mon, src->species, level, 0, 1, src->personality, OT_ID_PRESET, src->otId);
for (i = 0; i < MAX_MON_MOVES; i++)
SetMonMoveSlot(mon, src->moves[i], i);
@@ -2497,7 +2497,7 @@ void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 m
0x1F,
TRUE,
personality,
TRUE,
OT_ID_PRESET,
otId);
SetMonData(mon, MON_DATA_HELD_ITEM, &src->party[monId].item);
@@ -2527,7 +2527,7 @@ void CreateMonWithEVSpreadNatureOTID(struct Pokemon *mon, u16 species, u8 level,
i = Random32();
} while (nature != GetNatureFromPersonality(i));
CreateMon(mon, species, level, fixedIV, TRUE, i, TRUE, otId);
CreateMon(mon, species, level, fixedIV, TRUE, i, OT_ID_PRESET, otId);
evsBits = evSpread;
for (i = 0; i < NUM_STATS; i++)
{
@@ -2989,11 +2989,11 @@ u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove)
void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move)
{
s32 i;
u16 moves[4];
u8 pp[4];
u16 moves[MAX_MON_MOVES];
u8 pp[MAX_MON_MOVES];
u8 ppBonuses;
for (i = 0; i < 3; i++)
for (i = 0; i < MAX_MON_MOVES - 1; i++)
{
moves[i] = GetMonData(mon, MON_DATA_MOVE2 + i, NULL);
pp[i] = GetMonData(mon, MON_DATA_PP2 + i, NULL);
@@ -3016,11 +3016,11 @@ void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move)
void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move)
{
s32 i;
u16 moves[4];
u8 pp[4];
u16 moves[MAX_MON_MOVES];
u8 pp[MAX_MON_MOVES];
u8 ppBonuses;
for (i = 0; i < 3; i++)
for (i = 0; i < MAX_MON_MOVES - 1; i++)
{
moves[i] = GetBoxMonData(boxMon, MON_DATA_MOVE2 + i, NULL);
pp[i] = GetBoxMonData(boxMon, MON_DATA_PP2 + i, NULL);
@@ -3197,13 +3197,13 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if ((sideStatus & SIDE_STATUS_REFLECT) && gCritMultiplier == 1)
{
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMonsInBattle(2) == 2)
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMonsInBattle(BATTLE_ALIVE_DEF_SIDE) == 2)
damage = 2 * (damage / 3);
else
damage /= 2;
}
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMonsInBattle(2) == 2)
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMonsInBattle(BATTLE_ALIVE_DEF_SIDE) == 2)
damage /= 2;
// moves always do at least 1 damage.
@@ -3244,13 +3244,13 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if ((sideStatus & SIDE_STATUS_LIGHTSCREEN) && gCritMultiplier == 1)
{
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMonsInBattle(2) == 2)
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMonsInBattle(BATTLE_ALIVE_DEF_SIDE) == 2)
damage = 2 * (damage / 3);
else
damage /= 2;
}
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMonsInBattle(2) == 2)
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMonsInBattle(BATTLE_ALIVE_DEF_SIDE) == 2)
damage /= 2;
// are effects of weather negated with cloud nine or air lock
@@ -3304,21 +3304,21 @@ u8 CountAliveMonsInBattle(u8 caseId)
switch (caseId)
{
case BATTLE_ALIVE_EXCEPT_ACTIVE:
for (i = 0; i < 4; i++)
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
if (i != gActiveBattler && !(gAbsentBattlerFlags & gBitTable[i]))
retVal++;
}
break;
case BATTLE_ALIVE_ATK_SIDE:
for (i = 0; i < 4; i++)
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
if (GetBattlerSide(i) == GetBattlerSide(gBattlerAttacker) && !(gAbsentBattlerFlags & gBitTable[i]))
retVal++;
}
break;
case BATTLE_ALIVE_DEF_SIDE:
for (i = 0; i < 4; i++)
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
if (GetBattlerSide(i) == GetBattlerSide(gBattlerTarget) && !(gAbsentBattlerFlags & gBitTable[i]))
retVal++;
@@ -4329,7 +4329,7 @@ u8 SendMonToPC(struct Pokemon* mon)
{
s32 boxNo, boxPos;
set_unknown_box_id(VarGet(VAR_STORAGE_UNKNOWN));
SetPCBoxToSendMon(VarGet(VAR_PC_BOX_TO_SEND_MON));
boxNo = StorageGetCurrentBox();
@@ -4344,9 +4344,9 @@ u8 SendMonToPC(struct Pokemon* mon)
CopyMon(checkingMon, &mon->box, sizeof(mon->box));
gSpecialVar_MonBoxId = boxNo;
gSpecialVar_MonBoxPos = boxPos;
if (get_unknown_box_id() != boxNo)
FlagClear(FLAG_SYS_STORAGE_UNKNOWN_FLAG);
VarSet(VAR_STORAGE_UNKNOWN, boxNo);
if (GetPCBoxToSendMon() != boxNo)
FlagClear(FLAG_SHOWN_BOX_WAS_FULL_MESSAGE);
VarSet(VAR_PC_BOX_TO_SEND_MON, boxNo);
return MON_GIVEN_TO_PC;
}
}
@@ -4424,7 +4424,7 @@ u8 GetMonsStateToDoubles_2(void)
return (aliveCount > 1) ? PLAYER_HAS_TWO_USABLE_MONS : PLAYER_HAS_ONE_USABLE_MON;
}
u8 GetAbilityBySpecies(u16 species, bool8 abilityNum)
u8 GetAbilityBySpecies(u16 species, u8 abilityNum)
{
if (abilityNum)
gLastUsedAbility = gBaseStats[species].abilities[1];
@@ -4458,7 +4458,7 @@ void CreateSecretBaseEnemyParty(struct SecretBase *secretBaseRecord)
15,
1,
gBattleResources->secretBase->party.personality[i],
2,
OT_ID_RANDOM_NO_SHINY,
0);
SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBattleResources->secretBase->party.heldItems[i]);
@@ -4817,11 +4817,11 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
{
if (evCount >= MAX_TOTAL_EVS)
return TRUE;
if (dataSigned >= 100)
if (dataSigned >= EV_ITEM_RAISE_LIMIT)
break;
if (dataSigned + r2 > 100)
r5 = 100 - (dataSigned + r2) + r2;
if (dataSigned + r2 > EV_ITEM_RAISE_LIMIT)
r5 = EV_ITEM_RAISE_LIMIT - (dataSigned + r2) + r2;
else
r5 = r2;
@@ -5021,11 +5021,11 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
{
if (evCount >= MAX_TOTAL_EVS)
return TRUE;
if (dataSigned >= 100)
if (dataSigned >= EV_ITEM_RAISE_LIMIT)
break;
if (dataSigned + r2 > 100)
r5 = 100 - (dataSigned + r2) + r2;
if (dataSigned + r2 > EV_ITEM_RAISE_LIMIT)
r5 = EV_ITEM_RAISE_LIMIT - (dataSigned + r2) + r2;
else
r5 = r2;
@@ -6096,7 +6096,7 @@ u32 CanSpeciesLearnTMHM(u16 species, u8 tm)
u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves)
{
u16 learnedMoves[4];
u16 learnedMoves[MAX_MON_MOVES];
u8 numMoves = 0;
u16 species = GetMonData(mon, MON_DATA_SPECIES, 0);
u8 level = GetMonData(mon, MON_DATA_LEVEL, 0);
@@ -6146,7 +6146,7 @@ u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves)
u8 GetNumberOfRelearnableMoves(struct Pokemon *mon)
{
u16 learnedMoves[4];
u16 learnedMoves[MAX_MON_MOVES];
u16 moves[20];
u8 numMoves = 0;
u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
@@ -6683,7 +6683,7 @@ u8 sub_806EF08(u8 arg0)
var = (arg0 != 0) ? 2 : 0;
break;
}
for (i = 0; i < 4; i++)
for (i = 0; i < MAX_LINK_PLAYERS; i++)
{
if (gLinkPlayers[i].id == (s16)(var))
break;
@@ -6706,7 +6706,7 @@ u8 sub_806EF84(u8 arg0, u8 arg1)
var = (arg0 != 0) ? 2 : 0;
break;
}
for (i = 0; i < 4; i++)
for (i = 0; i < MAX_LINK_PLAYERS; i++)
{
if (gLinkPlayers[i].id == (s16)(var))
break;
+5 -8
View File
@@ -453,7 +453,7 @@ EWRAM_DATA static bool8 sInPartyMenu = 0;
EWRAM_DATA static u8 sCurrentBoxOption = 0;
EWRAM_DATA static u8 gUnknown_02039D0E = 0;
EWRAM_DATA static u8 sWhichToReshow = 0;
EWRAM_DATA static u8 gUnknown_02039D10 = 0;
EWRAM_DATA static u8 sLastUsedBox = 0;
EWRAM_DATA static u16 gUnknown_02039D12 = 0;
EWRAM_DATA static struct Pokemon gUnknown_02039D14 = {0};
EWRAM_DATA static s8 sBoxCursorArea = 0;
@@ -464,9 +464,6 @@ EWRAM_DATA static u8 sMovingMonOrigBoxPos = 0;
EWRAM_DATA static bool8 sCanOnlyMove = 0;
// This file's functions.
#if !defined(NONMATCHING) && MODERN
#define static
#endif
static void CreatePCMenu(u8 whichMenu, s16 *windowIdPtr);
static void Cb2_EnterPSS(u8 boxOption);
static u8 GetCurrentBoxOption(void);
@@ -2170,7 +2167,7 @@ static void Cb2_EnterPSS(u8 boxOption)
gUnknown_02039D12 = 0;
sPSSData->state = 0;
sPSSData->taskId = CreateTask(Cb_InitPSS, 3);
gUnknown_02039D10 = StorageGetCurrentBox();
sLastUsedBox = StorageGetCurrentBox();
SetMainCallback2(Cb2_PSS);
}
}
@@ -4369,10 +4366,10 @@ static bool8 DoShowPartyMenu(void)
static void sub_80CABE0(void)
{
if (gUnknown_02039D10 != StorageGetCurrentBox())
if (sLastUsedBox != StorageGetCurrentBox())
{
FlagClear(FLAG_SYS_STORAGE_UNKNOWN_FLAG);
VarSet(VAR_STORAGE_UNKNOWN, StorageGetCurrentBox());
FlagClear(FLAG_SHOWN_BOX_WAS_FULL_MESSAGE);
VarSet(VAR_PC_BOX_TO_SEND_MON, StorageGetCurrentBox());
}
}
+22 -22
View File
@@ -121,8 +121,8 @@ static EWRAM_DATA struct PokemonSummaryScreenData
u8 metGame; // 0xB
u32 pid; // 0xC
u32 exp; // 0x10
u16 moves[4]; // 0x14
u8 pp[4]; // 0x1C
u16 moves[MAX_MON_MOVES]; // 0x14
u8 pp[MAX_MON_MOVES]; // 0x1C
u16 currentHP; // 0x20
u16 maxHP; // 0x22
u16 atk; // 0x24
@@ -224,10 +224,10 @@ static void DrawExperienceProgressBar(struct Pokemon* mon);
static void DrawContestMoveHearts(u16 move);
static void LimitEggSummaryPageDisplay(void);
static void ResetWindows(void);
static void sub_81C25E8(void);
static void sub_81C2628(void);
static void sub_81C2794(void);
static void sub_81C27DC(struct Pokemon *mon, u16 a);
static void PrintMonInfo(void);
static void PrintNotEggInfo(void);
static void PrintEggInfo(void);
static void PrintGenderSymbol(struct Pokemon *mon, u16 a);
static void PrintPageNamesAndStatsPageToWindows(void);
static void CreatePageWindowTilemaps(u8 a);
static void ClearPageWindowTilemaps(u8 a);
@@ -1173,7 +1173,7 @@ static bool8 SummaryScreen_LoadGraphics(void)
gMain.state++;
break;
case 11:
sub_81C25E8();
PrintMonInfo();
gMain.state++;
break;
case 12:
@@ -1449,7 +1449,7 @@ static void sub_81C0348(void)
DrawPokerusCuredSymbol(&sMonSummaryScreen->currentMon);
}
static void sub_81C0434(void)
static void FreeSummaryScreen(void)
{
FreeAllWindowBuffers();
Free(sMonSummaryScreen);
@@ -1474,7 +1474,7 @@ static void CloseSummaryScreen(u8 taskId)
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
if (gMonSpritesGfxPtr == 0)
sub_806F47C(0);
sub_81C0434();
FreeSummaryScreen();
DestroyTask(taskId);
}
}
@@ -1625,7 +1625,7 @@ static void sub_81C0704(u8 taskId)
SetTypeIcons();
break;
case 10:
sub_81C25E8();
PrintMonInfo();
break;
case 11:
PrintPageSpecificText(sMonSummaryScreen->currPageIndex);
@@ -2571,7 +2571,7 @@ static void DrawPokerusCuredSymbol(struct Pokemon *mon) // This checks if the mo
schedule_bg_copy_tilemap_to_vram(3);
}
static void sub_81C228C(bool8 isMonShiny)
static void SetDexNumberColor(bool8 isMonShiny)
{
if (!isMonShiny)
sub_8199C30(3, 1, 4, 8, 8, 0);
@@ -2695,19 +2695,19 @@ static void SummaryScreen_PrintTextOnWindow(u8 windowId, const u8 *string, u8 x,
AddTextPrinterParameterized4(windowId, 1, x, y, 0, lineSpacing, sTextColors_861CD2C[colorId], 0, string);
}
static void sub_81C25E8(void)
static void PrintMonInfo(void)
{
FillWindowPixelBuffer(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, PIXEL_FILL(0));
FillWindowPixelBuffer(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME, PIXEL_FILL(0));
FillWindowPixelBuffer(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, PIXEL_FILL(0));
if (!sMonSummaryScreen->summary.isEgg)
sub_81C2628();
PrintNotEggInfo();
else
sub_81C2794();
PrintEggInfo();
schedule_bg_copy_tilemap_to_vram(0);
}
static void sub_81C2628(void)
static void PrintNotEggInfo(void)
{
u8 strArray[16];
struct Pokemon *mon = &sMonSummaryScreen->currentMon;
@@ -2721,12 +2721,12 @@ static void sub_81C2628(void)
if (!IsMonShiny(mon))
{
SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, gStringVar1, 0, 1, 0, 1);
sub_81C228C(FALSE);
SetDexNumberColor(FALSE);
}
else
{
SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, gStringVar1, 0, 1, 0, 7);
sub_81C228C(TRUE);
SetDexNumberColor(TRUE);
}
PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER);
}
@@ -2734,9 +2734,9 @@ static void sub_81C2628(void)
{
ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER);
if (!IsMonShiny(mon))
sub_81C228C(FALSE);
SetDexNumberColor(FALSE);
else
sub_81C228C(TRUE);
SetDexNumberColor(TRUE);
}
StringCopy(gStringVar1, &gText_LevelSymbol[0]);
ConvertIntToDecimalStringN(gStringVar2, summary->level, 0, 3);
@@ -2747,12 +2747,12 @@ static void sub_81C2628(void)
strArray[0] = CHAR_SLASH;
StringCopy(&strArray[1], &gSpeciesNames[summary->species2][0]);
SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, &strArray[0], 0, 1, 0, 1);
sub_81C27DC(mon, summary->species2);
PrintGenderSymbol(mon, summary->species2);
PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME);
PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
}
static void sub_81C2794(void)
static void PrintEggInfo(void)
{
GetMonNickname(&sMonSummaryScreen->currentMon, gStringVar1);
SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME, gStringVar1, 0, 1, 0, 1);
@@ -2761,7 +2761,7 @@ static void sub_81C2794(void)
ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
}
static void sub_81C27DC(struct Pokemon *mon, u16 species)
static void PrintGenderSymbol(struct Pokemon *mon, u16 species)
{
if (species != SPECIES_NIDORAN_M && species != SPECIES_NIDORAN_F)
{
+59 -57
View File
@@ -6,7 +6,9 @@
#include "battle.h"
#include "gym_leader_rematch.h"
#include "match_call.h"
#include "pokenav.h"
#include "constants/region_map_sections.h"
#include "constants/trainers.h"
// Static type declarations
@@ -94,11 +96,11 @@ typedef union {
const struct MatchCallStruct5 *type5;
} match_call_t;
struct UnkStruct_08625388 {
struct MatchCallOverride {
u16 idx;
u16 v2;
u32 v4;
const u8 *v8[4];
u16 facilityClass;
u32 flag;
const u8 *flavorTexts[4];
};
// Static RAM declarations
@@ -123,11 +125,11 @@ static bool32 MatchCall_IsRematchable_Type2(match_call_t);
static bool32 MatchCall_IsRematchable_Type3(match_call_t);
static bool32 MatchCall_IsRematchable_Type4(match_call_t);
static bool32 sub_81D1840(match_call_t);
static bool32 sub_81D1844(match_call_t);
static bool32 sub_81D1848(match_call_t);
static bool32 sub_81D184C(match_call_t);
static bool32 sub_81D1850(match_call_t);
static bool32 MatchCall_HasCheckPage_Type0(match_call_t);
static bool32 MatchCall_HasCheckPage_Type1(match_call_t);
static bool32 MatchCall_HasCheckPage_Type2(match_call_t);
static bool32 MatchCall_HasCheckPage_Type3(match_call_t);
static bool32 MatchCall_HasCheckPage_Type4(match_call_t);
static u32 MatchCall_GetRematchTableIdx_Type0(match_call_t);
static u32 MatchCall_GetRematchTableIdx_Type1(match_call_t);
@@ -423,10 +425,10 @@ static const match_call_text_data_t sMayTextScripts[] = {
{ NULL, 0xFFFF, 0xFFFF }
};
static const struct MatchCallStruct4 sBrendanMatchCallHeader =
static const struct MatchCallStruct4 sMayMatchCallHeader =
{
.type = 4,
.gender = MALE,
.gender = MALE, //Gender of player
.flag = FLAG_ENABLE_RIVAL_MATCH_CALL,
.desc = gMayBrendanMatchCallDesc,
.name = gExpandedPlaceholder_May,
@@ -452,10 +454,10 @@ static const match_call_text_data_t sBrendanTextScripts[] = {
{ NULL, 0xFFFF, 0xFFFF }
};
static const struct MatchCallStruct4 sMayMatchCallHeader =
static const struct MatchCallStruct4 sBrendanMatchCallHeader =
{
.type = 4,
.gender = FEMALE,
.gender = FEMALE, //Gender of player
.flag = FLAG_ENABLE_RIVAL_MATCH_CALL,
.desc = gMayBrendanMatchCallDesc,
.name = gExpandedPlaceholder_Brendan,
@@ -727,27 +729,27 @@ static const struct MatchCallStruct5 sWallaceMatchCallHeader =
};
static const match_call_t sMatchCallHeaders[] = {
{.type0 = &sMrStoneMatchCallHeader},
{.type3 = &sProfBirchMatchCallHeader},
{.type4 = &sMayMatchCallHeader},
{.type4 = &sBrendanMatchCallHeader},
{.type2 = &sWallyMatchCallHeader},
{.type5 = &sNormanMatchCallHeader},
{.type0 = &sMomMatchCallHeader},
{.type0 = &sStevenMatchCallHeader},
{.type0 = &sScottMatchCallHeader},
{.type5 = &sRoxanneMatchCallHeader},
{.type5 = &sBrawlyMatchCallHeader},
{.type5 = &sWattsonMatchCallHeader},
{.type5 = &sFlanneryMatchCallHeader},
{.type5 = &sWinonaMatchCallHeader},
{.type5 = &sTateLizaMatchCallHeader},
{.type5 = &sJuanMatchCallHeader},
{.type5 = &sSidneyMatchCallHeader},
{.type5 = &sPhoebeMatchCallHeader},
{.type5 = &sGlaciaMatchCallHeader},
{.type5 = &sDrakeMatchCallHeader},
{.type5 = &sWallaceMatchCallHeader}
[MC_HEADER_MR_STONE] = {.type0 = &sMrStoneMatchCallHeader},
[MC_HEADER_PROF_BIRCH] = {.type3 = &sProfBirchMatchCallHeader},
[MC_HEADER_BRENDAN] = {.type4 = &sBrendanMatchCallHeader},
[MC_HEADER_MAY] = {.type4 = &sMayMatchCallHeader},
[MC_HEADER_WALLY] = {.type2 = &sWallyMatchCallHeader},
[MC_HEADER_NORMAN] = {.type5 = &sNormanMatchCallHeader},
[MC_HEADER_MOM] = {.type0 = &sMomMatchCallHeader},
[MC_HEADER_STEVEN] = {.type0 = &sStevenMatchCallHeader},
[MC_HEADER_SCOTT] = {.type0 = &sScottMatchCallHeader},
[MC_HEADER_ROXANNE] = {.type5 = &sRoxanneMatchCallHeader},
[MC_HEADER_BRAWLY] = {.type5 = &sBrawlyMatchCallHeader},
[MC_HEADER_WATTSON] = {.type5 = &sWattsonMatchCallHeader},
[MC_HEADER_FLANNERY] = {.type5 = &sFlanneryMatchCallHeader},
[MC_HEADER_WINONA] = {.type5 = &sWinonaMatchCallHeader},
[MC_HEADER_TATE_LIZA] = {.type5 = &sTateLizaMatchCallHeader},
[MC_HEADER_JUAN] = {.type5 = &sJuanMatchCallHeader},
[MC_HEADER_SIDNEY] = {.type5 = &sSidneyMatchCallHeader},
[MC_HEADER_PHOEBE] = {.type5 = &sPhoebeMatchCallHeader},
[MC_HEADER_GLACIA] = {.type5 = &sGlaciaMatchCallHeader},
[MC_HEADER_DRAKE] = {.type5 = &sDrakeMatchCallHeader},
[MC_HEADER_WALLACE] = {.type5 = &sWallaceMatchCallHeader}
};
static bool32 (*const sMatchCallGetFlagFuncs[])(match_call_t) = {
@@ -774,12 +776,12 @@ static bool32 (*const sMatchCall_IsRematchableFunctions[])(match_call_t) = {
MatchCall_IsRematchable_Type3
};
static bool32 (*const gUnknown_08625338[])(match_call_t) = {
sub_81D1840,
sub_81D1844,
sub_81D1848,
sub_81D184C,
sub_81D1850
static bool32 (*const sMatchCall_HasCheckPageFunctions[])(match_call_t) = {
MatchCall_HasCheckPage_Type0,
MatchCall_HasCheckPage_Type1,
MatchCall_HasCheckPage_Type2,
MatchCall_HasCheckPage_Type4,
MatchCall_HasCheckPage_Type3
};
static u32 (*const sMatchCall_GetRematchTableIdxFunctions[])(match_call_t) = {
@@ -806,11 +808,11 @@ static void (*const sMatchCall_GetNameAndDescFunctions[])(match_call_t, const u8
MatchCall_GetNameAndDesc_Type3
};
static const struct UnkStruct_08625388 sMatchCallCheckPageOverrides[] = {
{ 7, 0x4B, 0xffff, { gMatchCallStevenStrategyText, gMatchCall_StevenTrainersPokemonText, gMatchCall_StevenSelfIntroductionText_Line1_BeforeMeteorFallsBattle, gMatchCall_StevenSelfIntroductionText_Line2_BeforeMeteorFallsBattle } }, // STEVEN
{ 7, 0x4B, FLAG_DEFEATED_MOSSDEEP_GYM, { gMatchCallStevenStrategyText, gMatchCall_StevenTrainersPokemonText, gMatchCall_StevenSelfIntroductionText_Line1_AfterMeteorFallsBattle, gMatchCall_StevenSelfIntroductionText_Line2_AfterMeteorFallsBattle } }, // STEVEN
{ 2, 0x3c, 0xffff, { gMatchCall_BrendanStrategyText, gMatchCall_BrendanTrainersPokemonText, gMatchCall_BrendanSelfIntroductionText_Line1, gMatchCall_BrendanSelfIntroductionText_Line2 } }, // Brendan
{ 3, 0x3f, 0xffff, { gMatchCall_MayStrategyText, gMatchCall_MayTrainersPokemonText, gMatchCall_MaySelfIntroductionText_Line1, gMatchCall_MaySelfIntroductionText_Line2 } } // May
static const struct MatchCallOverride sMatchCallCheckPageOverrides[] = {
{ MC_HEADER_STEVEN, FACILITY_CLASS_STEVEN, 0xFFFF, { gMatchCallStevenStrategyText, gMatchCall_StevenTrainersPokemonText, gMatchCall_StevenSelfIntroductionText_Line1_BeforeMeteorFallsBattle, gMatchCall_StevenSelfIntroductionText_Line2_BeforeMeteorFallsBattle } }, // STEVEN
{ MC_HEADER_STEVEN, FACILITY_CLASS_STEVEN, FLAG_DEFEATED_MOSSDEEP_GYM, { gMatchCallStevenStrategyText, gMatchCall_StevenTrainersPokemonText, gMatchCall_StevenSelfIntroductionText_Line1_AfterMeteorFallsBattle, gMatchCall_StevenSelfIntroductionText_Line2_AfterMeteorFallsBattle } }, // STEVEN
{ MC_HEADER_BRENDAN, FACILITY_CLASS_BRENDAN, 0xFFFF, { gMatchCall_BrendanStrategyText, gMatchCall_BrendanTrainersPokemonText, gMatchCall_BrendanSelfIntroductionText_Line1, gMatchCall_BrendanSelfIntroductionText_Line2 } }, // Brendan
{ MC_HEADER_MAY, FACILITY_CLASS_MAY, 0xFFFF, { gMatchCall_MayStrategyText, gMatchCall_MayTrainersPokemonText, gMatchCall_MaySelfIntroductionText_Line1, gMatchCall_MaySelfIntroductionText_Line2 } } // May
};
// .text
@@ -981,7 +983,7 @@ static bool32 MatchCall_IsRematchable_Type3(match_call_t matchCall)
return FALSE;
}
bool32 sub_81D17E8(u32 idx)
bool32 MatchCall_HasCheckPage(u32 idx)
{
match_call_t matchCall;
u32 i;
@@ -990,7 +992,7 @@ bool32 sub_81D17E8(u32 idx)
return FALSE;
matchCall = sMatchCallHeaders[idx];
i = MatchCallGetFunctionIndex(matchCall);
if (gUnknown_08625338[i](matchCall))
if (sMatchCall_HasCheckPageFunctions[i](matchCall))
return TRUE;
for (i = 0; i < ARRAY_COUNT(sMatchCallCheckPageOverrides); i++)
{
@@ -1000,27 +1002,27 @@ bool32 sub_81D17E8(u32 idx)
return FALSE;
}
static bool32 sub_81D1840(match_call_t matchCall)
static bool32 MatchCall_HasCheckPage_Type0(match_call_t matchCall)
{
return FALSE;
}
static bool32 sub_81D1844(match_call_t matchCall)
static bool32 MatchCall_HasCheckPage_Type1(match_call_t matchCall)
{
return TRUE;
}
static bool32 sub_81D1848(match_call_t matchCall)
static bool32 MatchCall_HasCheckPage_Type2(match_call_t matchCall)
{
return TRUE;
}
static bool32 sub_81D184C(match_call_t matchCall)
static bool32 MatchCall_HasCheckPage_Type4(match_call_t matchCall)
{
return FALSE;
}
static bool32 sub_81D1850(match_call_t matchCall)
static bool32 MatchCall_HasCheckPage_Type3(match_call_t matchCall)
{
return FALSE;
}
@@ -1210,7 +1212,7 @@ static void MatchCall_GetNameAndDescByRematchIdx(u32 idx, const u8 **desc, const
*name = trainer->trainerName;
}
const u8 *sub_81D1B40(u32 idx, u32 offset)
const u8 *MatchCall_GetOverrideFlavorText(u32 idx, u32 offset)
{
u32 i;
@@ -1224,24 +1226,24 @@ const u8 *sub_81D1B40(u32 idx, u32 offset)
break;
if (sMatchCallCheckPageOverrides[i + 1].idx != idx)
break;
if (!FlagGet(sMatchCallCheckPageOverrides[i + 1].v4))
if (!FlagGet(sMatchCallCheckPageOverrides[i + 1].flag))
break;
i++;
}
return sMatchCallCheckPageOverrides[i].v8[offset];
return sMatchCallCheckPageOverrides[i].flavorTexts[offset];
}
}
return NULL;
}
int sub_81D1BD0(u32 idx)
int MatchCall_GetOverrideFacilityClass(u32 idx)
{
u32 i;
for (i = 0; i < ARRAY_COUNT(sMatchCallCheckPageOverrides); i++)
{
if (sMatchCallCheckPageOverrides[i].idx == idx)
return sMatchCallCheckPageOverrides[i].v2;
return sMatchCallCheckPageOverrides[i].facilityClass;
}
return -1;
}
+7 -7
View File
@@ -84,7 +84,7 @@ static u32 sub_81CAB44(struct Pokenav3Struct *state)
state->callback = sub_81CAC04;
state->unk0 = 0;
selectedMatchCall = GetSelectedMatchCall();
if (!state->unk1C[selectedMatchCall].boxId || sub_81D17E8(state->unk1C[selectedMatchCall].unk6))
if (!state->unk1C[selectedMatchCall].boxId || MatchCall_HasCheckPage(state->unk1C[selectedMatchCall].unk6))
{
state->unk4 = gUnknown_0862250A;
state->unk2 = 2;
@@ -212,7 +212,7 @@ static u32 sub_81CAD20(s32 taskState)
state->unkA++;
}
if (++state->unk8 >= 21) // TODO: This is the size of sMatchCallHeaders
if (++state->unk8 >= MC_HEADER_COUNT)
{
state->unkC = state->unk8;
state->unk8 = 0;
@@ -331,7 +331,7 @@ int sub_81CAF04(int index)
return gTrainers[index].trainerPic;
}
index = sub_81D1BD0(var0);
index = MatchCall_GetOverrideFacilityClass(var0);
return gFacilityClassToPicIndex[index];
}
@@ -358,7 +358,7 @@ const u8 *sub_81CAFD8(int index, int textType)
{
var0 = MatchCall_GetRematchTableIdx(state->unk1C[index].unk6);
if (var0 == REMATCH_TABLE_ENTRIES)
return sub_81D1B40(state->unk1C[index].unk6, textType);
return MatchCall_GetOverrideFlavorText(state->unk1C[index].unk6, textType);
}
else
{
@@ -426,7 +426,7 @@ int sub_81CB0E4(int index)
{
if (!state->unk1C[index].boxId)
return count;
if (sub_81D17E8(state->unk1C[index].unk6))
if (MatchCall_HasCheckPage(state->unk1C[index].unk6))
return count;
count++;
@@ -443,7 +443,7 @@ int sub_81CB128(int index)
{
if (!state->unk1C[index].boxId)
return count;
if (sub_81D17E8(state->unk1C[index].unk6))
if (MatchCall_HasCheckPage(state->unk1C[index].unk6))
return count;
count--;
@@ -462,7 +462,7 @@ bool32 unref_sub_81CB16C(void)
return TRUE;
}
for (i = 0; i < 21; i++) // TODO: This is the size of sMatchCallHeaders
for (i = 0; i < MC_HEADER_COUNT; i++)
{
if (MatchCallFlagGetByIndex(i))
{
+2 -2
View File
@@ -701,10 +701,10 @@ static void ReceiveLilycoveLadyData(LilycoveLady *lilycoveLady, size_t recordSiz
}
memcpy(sLilycoveLadySave, (void *)lilycoveLady + recordSize * mixIndices[which], sizeof(LilycoveLady));
sub_818DA78();
ResetLilycoveLadyForRecordMix();
if (dest != NULL)
{
sub_818E570(dest);
QuizLadyClearQuestionForRecordMix(dest);
free(dest);
}
}
+7 -7
View File
@@ -37,8 +37,8 @@ struct PlayerInfo
struct MovePp
{
u16 moves[4];
u8 pp[4];
u16 moves[MAX_MON_MOVES];
u8 pp[MAX_MON_MOVES];
};
struct RecordedBattleSave
@@ -91,7 +91,7 @@ EWRAM_DATA static u32 sBattleFlags = 0;
EWRAM_DATA static u32 sAI_Scripts = 0;
EWRAM_DATA static struct Pokemon sSavedPlayerParty[PARTY_SIZE] = {0};
EWRAM_DATA static struct Pokemon sSavedOpponentParty[PARTY_SIZE] = {0};
EWRAM_DATA static u16 sPlayerMonMoves[2][4] = {0};
EWRAM_DATA static u16 sPlayerMonMoves[2][MAX_MON_MOVES] = {0};
EWRAM_DATA static struct PlayerInfo sPlayers[MAX_BATTLERS_COUNT] = {0};
EWRAM_DATA static u8 sUnknown_0203CCD0 = 0;
EWRAM_DATA static u8 sRecordMixFriendName[PLAYER_NAME_LENGTH + 1] = {0};
@@ -766,11 +766,11 @@ void sub_818603C(u8 arg0)
{
if (sBattleRecords[battlerId][sRecordedBytesNo[battlerId]] == ACTION_MOVE_CHANGE)
{
u8 ppBonuses[4];
u8 array1[4];
u8 array2[4];
u8 ppBonuses[MAX_MON_MOVES];
u8 array1[MAX_MON_MOVES];
u8 array2[MAX_MON_MOVES];
struct MovePp movePp;
u8 array3[8];
u8 array3[(MAX_MON_MOVES * 2)];
u8 var;
RecordedBattle_GetBattlerAction(battlerId);
+6 -5
View File
@@ -24,6 +24,7 @@
#include "region_map.h"
#include "constants/region_map_sections.h"
#include "heal_location.h"
#include "constants/field_specials.h"
#include "constants/heal_locations.h"
#include "constants/map_types.h"
#include "constants/rgb.h"
@@ -1144,20 +1145,20 @@ static void RegionMap_InitializeStateBasedOnSSTidalLocation(void)
x = 0;
switch (GetSSTidalLocation(&mapGroup, &mapNum, &xOnMap, &yOnMap))
{
case 1:
case SS_TIDAL_LOCATION_SLATEPORT:
gRegionMap->mapSecId = MAPSEC_SLATEPORT_CITY;
break;
case 2:
case SS_TIDAL_LOCATION_LILYCOVE:
gRegionMap->mapSecId = MAPSEC_LILYCOVE_CITY;
break;
case 3:
case SS_TIDAL_LOCATION_ROUTE124:
gRegionMap->mapSecId = MAPSEC_ROUTE_124;
break;
case 4:
case SS_TIDAL_LOCATION_ROUTE131:
gRegionMap->mapSecId = MAPSEC_ROUTE_131;
break;
default:
case 0:
case SS_TIDAL_LOCATION_OTHER:
mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum);
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+1 -1
View File
@@ -67,7 +67,7 @@ static void CreateInitialRoamerMon(bool16 createLatios)
else
(&gSaveBlock1Ptr->roamer)->species = SPECIES_LATIOS;
CreateMon(&gEnemyParty[0], (&gSaveBlock1Ptr->roamer)->species, 40, 0x20, 0, 0, 0, 0);
CreateMon(&gEnemyParty[0], (&gSaveBlock1Ptr->roamer)->species, 40, 0x20, 0, 0, OT_ID_PLAYER_ID, 0);
(&gSaveBlock1Ptr->roamer)->level = 40;
(&gSaveBlock1Ptr->roamer)->status = 0;
(&gSaveBlock1Ptr->roamer)->active = TRUE;
+1 -1
View File
@@ -508,7 +508,7 @@ void AnimDirtParticleAcrossScreen(struct Sprite *sprite)
sprite->pos1.x = 304;
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
sprite->data[5] = 1;
sprite->oam.matrixNum = 8;
sprite->oam.matrixNum = ST_OAM_HFLIP;
}
else
{
+18 -15
View File
@@ -62,7 +62,7 @@ static EWRAM_DATA u16 sMovingNpcMapBank = 0;
static EWRAM_DATA u16 sMovingNpcMapId = 0;
static EWRAM_DATA u16 sFieldEffectScriptId = 0;
static u8 gUnknown_03000F30;
static u8 gBrailleWindowId;
extern const SpecialFunc gSpecials[];
extern const u8 *gStdScripts[];
@@ -466,6 +466,9 @@ bool8 ScrCmd_addvar(struct ScriptContext *ctx)
{
u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx));
*ptr += ScriptReadHalfword(ctx);
// Note: addvar doesn't support adding from a variable in vanilla. If you were to
// add a VarGet() to the above, make sure you change the `addvar VAR_0x8006, 65535`
// in the contest scripts to `subvar VAR_0x8006, 1`, else contests will break.
return FALSE;
}
@@ -1102,7 +1105,7 @@ bool8 ScrCmd_setobjectxyperm(struct ScriptContext *ctx)
return FALSE;
}
bool8 ScrCmd_moveobjectoffscreen(struct ScriptContext *ctx)
bool8 ScrCmd_copyobjectxytoperm(struct ScriptContext *ctx)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
@@ -1244,7 +1247,7 @@ bool8 ScrCmd_releaseall(struct ScriptContext *ctx)
HideFieldMessageBox();
playerObjectId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
EventObjectClearHeldMovementIfFinished(&gEventObjects[playerObjectId]);
sub_80D338C();
ScriptMovement_UnfreezeEventObjects();
UnfreezeEventObjects();
return FALSE;
}
@@ -1258,7 +1261,7 @@ bool8 ScrCmd_release(struct ScriptContext *ctx)
EventObjectClearHeldMovementIfFinished(&gEventObjects[gSelectedEventObject]);
playerObjectId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
EventObjectClearHeldMovementIfFinished(&gEventObjects[playerObjectId]);
sub_80D338C();
ScriptMovement_UnfreezeEventObjects();
UnfreezeEventObjects();
return FALSE;
}
@@ -1515,13 +1518,13 @@ bool8 ScrCmd_braillemessage(struct ScriptContext *ctx)
yText = (yText - yWindow - 1) * 8;
winTemplate = CreateWindowTemplate(0, xWindow, yWindow + 1, width, height, 0xF, 0x1);
gUnknown_03000F30 = AddWindow(&winTemplate);
LoadUserWindowBorderGfx(gUnknown_03000F30, 0x214, 0xE0);
DrawStdWindowFrame(gUnknown_03000F30, 0);
PutWindowTilemap(gUnknown_03000F30);
FillWindowPixelBuffer(gUnknown_03000F30, PIXEL_FILL(1));
AddTextPrinterParameterized(gUnknown_03000F30, 6, gStringVar4, xText, yText, 0xFF, 0x0);
CopyWindowToVram(gUnknown_03000F30, 3);
gBrailleWindowId = AddWindow(&winTemplate);
LoadUserWindowBorderGfx(gBrailleWindowId, 0x214, 0xE0);
DrawStdWindowFrame(gBrailleWindowId, 0);
PutWindowTilemap(gBrailleWindowId);
FillWindowPixelBuffer(gBrailleWindowId, PIXEL_FILL(1));
AddTextPrinterParameterized(gBrailleWindowId, 6, gStringVar4, xText, yText, 0xFF, 0x0);
CopyWindowToVram(gBrailleWindowId, 3);
return FALSE;
}
@@ -1621,7 +1624,7 @@ bool8 ScrCmd_bufferstdstring(struct ScriptContext *ctx)
u8 stringVarIndex = ScriptReadByte(ctx);
u16 index = VarGet(ScriptReadHalfword(ctx));
StringCopy(sScriptStringVars[stringVarIndex], gUnknown_0858BAF0[index]);
StringCopy(sScriptStringVars[stringVarIndex], gStdStrings[index]);
return FALSE;
}
@@ -1630,7 +1633,7 @@ bool8 ScrCmd_buffercontesttype(struct ScriptContext *ctx)
u8 stringVarIndex = ScriptReadByte(ctx);
u16 index = VarGet(ScriptReadHalfword(ctx));
sub_818E868(sScriptStringVars[stringVarIndex], index);
BufferContestName(sScriptStringVars[stringVarIndex], index);
return FALSE;
}
@@ -2254,8 +2257,8 @@ bool8 ScrCmd_setmonmetlocation(struct ScriptContext *ctx)
void sub_809BDB4(void)
{
ClearStdWindowAndFrame(gUnknown_03000F30, 1);
RemoveWindow(gUnknown_03000F30);
ClearStdWindowAndFrame(gBrailleWindowId, 1);
RemoveWindow(gBrailleWindowId);
}
bool8 ScrCmd_buffertrainerclassname(struct ScriptContext *ctx)
+146 -1138
View File
File diff suppressed because it is too large Load Diff
+88 -86
View File
@@ -3,20 +3,22 @@
#include "event_object_movement.h"
#include "task.h"
#include "util.h"
#include "constants/event_objects.h"
#include "constants/event_object_movement_constants.h"
// static functions
static void sub_80D33AC(u8);
static u8 sub_80D33F4(void);
static bool8 sub_80D3408(u8, u8, const u8 *);
static u8 sub_80D3474(u8, u8);
static bool8 sub_80D3584(u8, u8);
static void sub_80D35DC(u8, u8, u8, const u8 *);
static void UnfreezeObjects(u8);
static void sub_80D3660(u8);
static void sub_80A2490(u8, u8, u8, const u8 *);
static void ScriptMovement_StartMoveObjects(u8 priority);
static u8 GetMoveObjectsTaskId(void);
static bool8 ScriptMovement_TryAddNewMovement(u8 taskId, u8 eventObjId, const u8 *movementScript);
static u8 GetMovementScriptIdFromEventObjectId(u8 taskId, u8 eventObjId);
static bool8 IsMovementScriptFinished(u8 taskId, u8 moveScrId);
static void ScriptMovement_AddNewMovement(u8 taskId, u8 moveScrId, u8 eventObjId, const u8 *movementScript);
static void ScriptMovement_UnfreezeActiveObjects(u8 taskId);
static void ScriptMovement_MoveObjects(u8 taskId);
static void ScriptMovement_TakeStep(u8 taskId, u8 moveScrId, u8 eventObjId, const u8 *movementScript);
// EWRAM_DATA
static EWRAM_DATA const u8 *gUnknown_02039D90[16] = {0};
static EWRAM_DATA const u8 *gMovementScripts[EVENT_OBJECTS_COUNT] = {0};
// text
bool8 ScriptMovement_StartObjectMovementScript(u8 localId, u8 mapNum, u8 mapGroup, const u8 *movementScript)
@@ -25,207 +27,207 @@ bool8 ScriptMovement_StartObjectMovementScript(u8 localId, u8 mapNum, u8 mapGrou
if (TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjId))
return TRUE;
if (!FuncIsActiveTask(sub_80D3660))
sub_80D33AC(50);
return sub_80D3408(sub_80D33F4(), eventObjId, movementScript);
if (!FuncIsActiveTask(ScriptMovement_MoveObjects))
ScriptMovement_StartMoveObjects(50);
return ScriptMovement_TryAddNewMovement(GetMoveObjectsTaskId(), eventObjId, movementScript);
}
bool8 ScriptMovement_IsObjectMovementFinished(u8 localId, u8 mapNum, u8 mapBank)
bool8 ScriptMovement_IsObjectMovementFinished(u8 localId, u8 mapNum, u8 mapGroup)
{
u8 eventObjId;
u8 r4;
u8 r1;
u8 taskId;
u8 moveScrId;
if (TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapBank, &eventObjId))
if (TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjId))
return TRUE;
r4 = sub_80D33F4();
r1 = sub_80D3474(r4, eventObjId);
if (r1 == 16)
taskId = GetMoveObjectsTaskId();
moveScrId = GetMovementScriptIdFromEventObjectId(taskId, eventObjId);
if (moveScrId == EVENT_OBJECTS_COUNT)
return TRUE;
return sub_80D3584(r4, r1);
return IsMovementScriptFinished(taskId, moveScrId);
}
void sub_80D338C(void)
void ScriptMovement_UnfreezeEventObjects(void)
{
u8 taskId;
taskId = sub_80D33F4();
taskId = GetMoveObjectsTaskId();
if (taskId != 0xFF)
{
UnfreezeObjects(taskId);
ScriptMovement_UnfreezeActiveObjects(taskId);
DestroyTask(taskId);
}
}
static void sub_80D33AC(u8 priority)
static void ScriptMovement_StartMoveObjects(u8 priority)
{
u8 taskId;
u8 i;
taskId = CreateTask(sub_80D3660, priority);
for (i = 1; i < 16; i++)
taskId = CreateTask(ScriptMovement_MoveObjects, priority);
for (i = 1; i < NUM_TASK_DATA; i++)
gTasks[taskId].data[i] = 0xFFFF;
}
static u8 sub_80D33F4(void)
static u8 GetMoveObjectsTaskId(void)
{
return FindTaskIdByFunc(sub_80D3660);
return FindTaskIdByFunc(ScriptMovement_MoveObjects);
}
static bool8 sub_80D3408(u8 taskId, u8 eventObjId, const u8 *movementScript)
static bool8 ScriptMovement_TryAddNewMovement(u8 taskId, u8 eventObjId, const u8 *movementScript)
{
u8 r4;
u8 moveScrId;
r4 = sub_80D3474(taskId, eventObjId);
if (r4 != 16)
moveScrId = GetMovementScriptIdFromEventObjectId(taskId, eventObjId);
if (moveScrId != EVENT_OBJECTS_COUNT)
{
if (sub_80D3584(taskId, r4) == 0)
if (IsMovementScriptFinished(taskId, moveScrId) == 0)
{
return TRUE;
}
else
{
sub_80D35DC(taskId, r4, eventObjId, movementScript);
ScriptMovement_AddNewMovement(taskId, moveScrId, eventObjId, movementScript);
return FALSE;
}
}
r4 = sub_80D3474(taskId, 0xFF);
if (r4 == 16)
moveScrId = GetMovementScriptIdFromEventObjectId(taskId, EVENT_OBJ_ID_PLAYER);
if (moveScrId == EVENT_OBJECTS_COUNT)
{
return TRUE;
}
else
{
sub_80D35DC(taskId, r4, eventObjId, movementScript);
ScriptMovement_AddNewMovement(taskId, moveScrId, eventObjId, movementScript);
return FALSE;
}
}
static u8 sub_80D3474(u8 taskId, u8 b)
static u8 GetMovementScriptIdFromEventObjectId(u8 taskId, u8 eventObjId)
{
u8 *ptr;
u8 *moveScriptId;
u8 i;
ptr = (u8 *)&gTasks[taskId].data[1];
for (i = 0; i < 16; i++, ptr++)
moveScriptId = (u8 *)&gTasks[taskId].data[1];
for (i = 0; i < EVENT_OBJECTS_COUNT; i++, moveScriptId++)
{
if (*ptr == b)
if (*moveScriptId == eventObjId)
return i;
}
return 16;
return EVENT_OBJECTS_COUNT;
}
static void sub_80D34B0(u8 taskId, u8 b, u8 **c)
static void LoadEventObjectIdPtrFromMovementScript(u8 taskId, u8 moveScrId, u8 **pEventObjId)
{
u8 i;
*c = (u8 *)&gTasks[taskId].data[1];
for (i = 0; i < b; i++, (*c)++)
*pEventObjId = (u8 *)&gTasks[taskId].data[1];
for (i = 0; i < moveScrId; i++, (*pEventObjId)++)
;
}
static void sub_80D34E4(u8 taskId, u8 b, u8 c)
static void SetEventObjectIdAtMovementScript(u8 taskId, u8 moveScrId, u8 eventObjId)
{
u8 *ptr;
sub_80D34B0(taskId, b, &ptr);
*ptr = c; //what is this supposed to do?
LoadEventObjectIdPtrFromMovementScript(taskId, moveScrId, &ptr);
*ptr = eventObjId;
}
static void sub_80D3508(u8 taskId, u8 b, u8 *c)
static void LoadEventObjectIdFromMovementScript(u8 taskId, u8 moveScrId, u8 *eventObjId)
{
u8 *ptr;
sub_80D34B0(taskId, b, &ptr);
*c = *ptr;
LoadEventObjectIdPtrFromMovementScript(taskId, moveScrId, &ptr);
*eventObjId = *ptr;
}
static void sub_80D352C(u8 a, u8 b)
static void ClearMovementScriptFinished(u8 taskId, u8 moveScrId)
{
u16 var = ~gBitTable[b];
u16 mask = ~gBitTable[moveScrId];
gTasks[a].data[0] &= var;
gTasks[taskId].data[0] &= mask;
}
static void sub_80D355C(u8 taskId, u8 b)
static void SetMovementScriptFinished(u8 taskId, u8 moveScrId)
{
gTasks[taskId].data[0] |= gBitTable[b];
gTasks[taskId].data[0] |= gBitTable[moveScrId];
}
static bool8 sub_80D3584(u8 taskId, u8 b)
static bool8 IsMovementScriptFinished(u8 taskId, u8 moveScrId)
{
u16 var = (u16)gTasks[taskId].data[0] & gBitTable[b];
u16 moveScriptFinished = (u16)gTasks[taskId].data[0] & gBitTable[moveScrId];
if (var != 0)
if (moveScriptFinished != 0)
return TRUE;
else
return FALSE;
}
static void npc_obj_offscreen_culling_and_flag_update(u8 a, const u8 *movementScript)
static void SetMovementScript(u8 moveScrId, const u8 *movementScript)
{
gUnknown_02039D90[a] = movementScript;
gMovementScripts[moveScrId] = movementScript;
}
static const u8 *sub_80D35CC(u8 a)
static const u8 *GetMovementScript(u8 moveScrId)
{
return gUnknown_02039D90[a];
return gMovementScripts[moveScrId];
}
static void sub_80D35DC(u8 taskId, u8 b, u8 eventObjId, const u8 *movementScript)
static void ScriptMovement_AddNewMovement(u8 taskId, u8 moveScrId, u8 eventObjId, const u8 *movementScript)
{
sub_80D352C(taskId, b);
npc_obj_offscreen_culling_and_flag_update(b, movementScript);
sub_80D34E4(taskId, b, eventObjId);
ClearMovementScriptFinished(taskId, moveScrId);
SetMovementScript(moveScrId, movementScript);
SetEventObjectIdAtMovementScript(taskId, moveScrId, eventObjId);
}
static void UnfreezeObjects(u8 taskId)
static void ScriptMovement_UnfreezeActiveObjects(u8 taskId)
{
u8 *pEventObjId;
u8 i;
pEventObjId = (u8 *)&gTasks[taskId].data[1];
for (i = 0; i < 16; i++, pEventObjId++)
for (i = 0; i < EVENT_OBJECTS_COUNT; i++, pEventObjId++)
{
if (*pEventObjId != 0xFF)
UnfreezeEventObject(&gEventObjects[*pEventObjId]);
}
}
static void sub_80D3660(u8 taskId)
static void ScriptMovement_MoveObjects(u8 taskId)
{
u8 i;
u8 var;
u8 eventObjId;
for (i = 0; i < 16; i++)
for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
{
sub_80D3508(taskId, i, &var);
if (var != 0xFF)
sub_80A2490(taskId, i, var, sub_80D35CC(i));
LoadEventObjectIdFromMovementScript(taskId, i, &eventObjId);
if (eventObjId != 0xFF)
ScriptMovement_TakeStep(taskId, i, eventObjId, GetMovementScript(i));
}
}
static void sub_80A2490(u8 taskId, u8 b, u8 eventObjId, const u8 *d)
static void ScriptMovement_TakeStep(u8 taskId, u8 moveScrId, u8 eventObjId, const u8 *movementScript)
{
u8 var;
u8 nextMoveActionId;
if (EventObjectIsHeldMovementActive(&gEventObjects[eventObjId])
&& !EventObjectClearHeldMovementIfFinished(&gEventObjects[eventObjId]))
return;
var = *d;
if (var == 0xFE)
nextMoveActionId = *movementScript;
if (nextMoveActionId == MOVEMENT_ACTION_STEP_END)
{
sub_80D355C(taskId, b);
SetMovementScriptFinished(taskId, moveScrId);
FreezeEventObject(&gEventObjects[eventObjId]);
}
else
{
if (!EventObjectSetHeldMovement(&gEventObjects[eventObjId], var))
if (!EventObjectSetHeldMovement(&gEventObjects[eventObjId], nextMoveActionId))
{
d++;
npc_obj_offscreen_culling_and_flag_update(b, d);
movementScript++;
SetMovementScript(moveScrId, movementScript);
}
}
}
+8 -8
View File
@@ -551,7 +551,7 @@ u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 u
u8 heldItem[2];
struct Pokemon mon;
CreateMon(&mon, species, level, 32, 0, 0, 0, 0);
CreateMon(&mon, species, level, 32, 0, 0, OT_ID_PLAYER_ID, 0);
heldItem[0] = item;
heldItem[1] = item >> 8;
SetMonData(&mon, MON_DATA_HELD_ITEM, heldItem);
@@ -585,14 +585,14 @@ void HasEnoughMonsForDoubleBattle(void)
{
switch (GetMonsStateToDoubles())
{
case 0:
gSpecialVar_Result = 0;
case PLAYER_HAS_TWO_USABLE_MONS:
gSpecialVar_Result = PLAYER_HAS_TWO_USABLE_MONS;
break;
case 1:
gSpecialVar_Result = 1;
case PLAYER_HAS_ONE_MON:
gSpecialVar_Result = PLAYER_HAS_ONE_MON;
break;
case 2:
gSpecialVar_Result = 2;
case PLAYER_HAS_ONE_USABLE_MON:
gSpecialVar_Result = PLAYER_HAS_ONE_USABLE_MON;
break;
}
}
@@ -624,7 +624,7 @@ void CreateScriptedWildMon(u16 species, u8 level, u16 item)
u8 heldItem[2];
ZeroEnemyPartyMons();
CreateMon(&gEnemyParty[0], species, level, 0x20, 0, 0, 0, 0);
CreateMon(&gEnemyParty[0], species, level, 0x20, 0, 0, OT_ID_PLAYER_ID, 0);
if (item)
{
heldItem[0] = item;
+3 -3
View File
@@ -349,7 +349,7 @@ void SetPlayerSecretBase(void)
u16 i;
gSaveBlock1Ptr->secretBases[0].secretBaseId = sCurSecretBaseId;
for (i = 0; i < 4; i++)
for (i = 0; i < TRAINER_ID_LENGTH; i++)
gSaveBlock1Ptr->secretBases[0].trainerId[i] = gSaveBlock2Ptr->playerTrainerId[i];
VarSet(VAR_CURRENT_SECRET_BASE, 0);
@@ -1291,7 +1291,7 @@ static void SetSecretBaseDataAndLanguage(u8 secretBaseId, struct SecretBase *sec
static bool8 SecretBasesHaveSameTrainerId(struct SecretBase *secretBase1, struct SecretBase *secretBase2)
{
u8 i;
for (i = 0; i < 4; i++)
for (i = 0; i < TRAINER_ID_LENGTH; i++)
{
if (secretBase1->trainerId[i] != secretBase2->trainerId[i])
return FALSE;
@@ -1445,7 +1445,7 @@ bool8 SecretBaseBelongsToPlayer(struct SecretBase *secretBase)
return FALSE;
// Check if the player's trainer Id matches the secret base's id.
for (i = 0; i < 4; i++)
for (i = 0; i < TRAINER_ID_LENGTH; i++)
{
if (secretBase->trainerId[i] != gSaveBlock2Ptr->playerTrainerId[i])
return FALSE;
+14 -14
View File
@@ -505,20 +505,20 @@ const u8 *GetExpandedPlaceholder(u32 id)
static const ExpandPlaceholderFunc funcs[] =
{
ExpandPlaceholder_UnknownStringVar,
ExpandPlaceholder_PlayerName,
ExpandPlaceholder_StringVar1,
ExpandPlaceholder_StringVar2,
ExpandPlaceholder_StringVar3,
ExpandPlaceholder_KunChan,
ExpandPlaceholder_RivalName,
ExpandPlaceholder_Version,
ExpandPlaceholder_Aqua,
ExpandPlaceholder_Magma,
ExpandPlaceholder_Archie,
ExpandPlaceholder_Maxie,
ExpandPlaceholder_Kyogre,
ExpandPlaceholder_Groudon,
[PLACEHOLDER_ID_UNKNOWN] = ExpandPlaceholder_UnknownStringVar,
[PLACEHOLDER_ID_PLAYER] = ExpandPlaceholder_PlayerName,
[PLACEHOLDER_ID_STRING_VAR_1] = ExpandPlaceholder_StringVar1,
[PLACEHOLDER_ID_STRING_VAR_2] = ExpandPlaceholder_StringVar2,
[PLACEHOLDER_ID_STRING_VAR_3] = ExpandPlaceholder_StringVar3,
[PLACEHOLDER_ID_KUN] = ExpandPlaceholder_KunChan,
[PLACEHOLDER_ID_RIVAL] = ExpandPlaceholder_RivalName,
[PLACEHOLDER_ID_VERSION] = ExpandPlaceholder_Version,
[PLACEHOLDER_ID_AQUA] = ExpandPlaceholder_Aqua,
[PLACEHOLDER_ID_MAGMA] = ExpandPlaceholder_Magma,
[PLACEHOLDER_ID_ARCHIE] = ExpandPlaceholder_Archie,
[PLACEHOLDER_ID_MAXIE] = ExpandPlaceholder_Maxie,
[PLACEHOLDER_ID_KYOGRE] = ExpandPlaceholder_Kyogre,
[PLACEHOLDER_ID_GROUDON] = ExpandPlaceholder_Groudon,
};
if (id >= ARRAY_COUNT(funcs))
+150 -151
View File
@@ -599,89 +599,89 @@ const u8 gText_Brawly[] = _("BRAWLY");
const u8 gText_Winona[] = _("WINONA");
const u8 gText_Phoebe[] = _("PHOEBE");
const u8 gText_Glacia[] = _("GLACIA");
const u8 gUnknown_085EAD37[] = _("PETALBURG");
const u8 gUnknown_085EAD41[] = _("SLATEPORT");
const u8 gUnknown_085EAD4B[] = _("LITTLEROOT");
const u8 gUnknown_085EAD56[] = _("LILYCOVE");
const u8 gUnknown_085EAD5F[] = _("DEWFORD");
const u8 gUnknown_085EAD67[] = _("ENTER");
const u8 gUnknown_085EAD6D[] = _("INFO");
const u8 gUnknown_085EAD72[] = _("What's a CONTEST?");
const u8 gUnknown_085EAD84[] = _("Types of CONTESTS");
const u8 gUnknown_085EAD96[] = _("Ranks");
const u8 gUnknown_085EAD9C[] = _("Judging");
const u8 gUnknown_085EADA4[] = _("COOLNESS CONTEST");
const u8 gUnknown_085EADB5[] = _("BEAUTY CONTEST");
const u8 gUnknown_085EADC4[] = _("CUTENESS CONTEST");
const u8 gUnknown_085EADD5[] = _("SMARTNESS CONTEST");
const u8 gUnknown_085EADE7[] = _("TOUGHNESS CONTEST");
const u8 gUnknown_085EADF9[] = _("DECORATION");
const u8 gUnknown_085EAE04[] = _("PACK UP");
const u8 gUnknown_085EAE0C[] = _("COUNT");
const u8 gUnknown_085EAE12[] = _("REGISTRY");
const u8 gUnknown_085EAE1B[] = _("INFORMATION");
const u8 gUnknown_085EAE27[] = _("MACH");
const u8 gUnknown_085EAE2C[] = _("ACRO");
const u8 gUnknown_085EAE31[] = _("PSN");
const u8 gUnknown_085EAE35[] = _("PAR");
const u8 gUnknown_085EAE39[] = _("SLP");
const u8 gUnknown_085EAE3D[] = _("BRN");
const u8 gUnknown_085EAE41[] = _("FRZ");
const u8 gText_Petalburg[] = _("PETALBURG");
const u8 gText_Slateport[] = _("SLATEPORT");
const u8 gText_Littleroot[] = _("LITTLEROOT"); // Unused. Given the context, Briney may at one point have been able to sail the player here
const u8 gText_Lilycove[] = _("LILYCOVE"); // Unused. Given the context, Briney may at one point have been able to sail the player here
const u8 gText_Dewford[] = _("DEWFORD");
const u8 gText_Enter2[] = _("ENTER");
const u8 gText_Info2[] = _("INFO");
const u8 gText_WhatsAContest[] = _("What's a CONTEST?");
const u8 gText_TypesOfContests[] = _("Types of CONTESTS");
const u8 gText_Ranks[] = _("Ranks");
const u8 gText_Judging[] = _("Judging"); //unused
const u8 gText_CoolnessContest[] = _("COOLNESS CONTEST");
const u8 gText_BeautyContest[] = _("BEAUTY CONTEST");
const u8 gText_CutenessContest[] = _("CUTENESS CONTEST");
const u8 gText_SmartnessContest[] = _("SMARTNESS CONTEST");
const u8 gText_ToughnessContest[] = _("TOUGHNESS CONTEST");
const u8 gText_Decoration2[] = _("DECORATION");
const u8 gText_PackUp[] = _("PACK UP");
const u8 gText_Count[] = _("COUNT"); //unused
const u8 gText_Registry[] = _("REGISTRY");
const u8 gText_Information[] = _("INFORMATION");
const u8 gText_Mach[] = _("MACH");
const u8 gText_Acro[] = _("ACRO");
const u8 gText_Psn[] = _("PSN");
const u8 gText_Par[] = _("PAR");
const u8 gText_Slp[] = _("SLP");
const u8 gText_Brn[] = _("BRN");
const u8 gText_Frz[] = _("FRZ");
const u8 gUnknown_085EAE45[] = _("TOXIC");
const u8 gUnknown_085EAE4B[] = _("OK");
const u8 gUnknown_085EAE4E[] = _("QUIT");
const u8 gUnknown_085EAE53[] = _("Saw it");
const u8 gUnknown_085EAE5A[] = _("Not yet");
const u8 gText_SawIt[] = _("Saw it");
const u8 gText_NotYet[] = _("Not yet");
const u8 gText_Yes[] = _("YES");
const u8 gText_No[] = _("NO");
const u8 gUnknown_085EAE69[] = _("INFO");
const u8 gUnknown_085EAE6E[] = _("SINGLE BATTLE");
const u8 gUnknown_085EAE7C[] = _("DOUBLE BATTLE");
const u8 gUnknown_085EAE8A[] = _("MULTI BATTLE");
const u8 gText_SingleBattle[] = _("SINGLE BATTLE");
const u8 gText_DoubleBattle[] = _("DOUBLE BATTLE");
const u8 gText_MultiBattle[] = _("MULTI BATTLE");
const u8 gUnknown_085EAE97[] = _("MR. BRINEY");
const u8 gUnknown_085EAEA2[] = _("CHALLENGE");
const u8 gUnknown_085EAEAC[] = _("INFO");
const u8 gText_Challenge[] = _("CHALLENGE");
const u8 gText_Info3[] = _("INFO");
const u8 gText_Lv50[] = _("LV. 50");
const u8 gText_OpenLevel[] = _("OPEN LEVEL");
const u8 gUnknown_085EAEC3[] = _("FRESH WATER{CLEAR_TO 0x48}¥200");
const u8 gUnknown_085EAED6[] = _("SODA POP{CLEAR_TO 0x48}¥300");
const u8 gUnknown_085EAEE6[] = _("LEMONADE{CLEAR_TO 0x48}¥350");
const u8 gUnknown_085EAEF6[] = _("HOW TO RIDE");
const u8 gUnknown_085EAF02[] = _("HOW TO TURN");
const u8 gUnknown_085EAF0E[] = _("SANDY SLOPES");
const u8 gUnknown_085EAF1B[] = _("WHEELIES");
const u8 gUnknown_085EAF24[] = _("BUNNY-HOPS");
const u8 gUnknown_085EAF2F[] = _("JUMP");
const u8 gUnknown_085EAF34[] = _("Satisfied");
const u8 gUnknown_085EAF3E[] = _("Dissatisfied");
const u8 gUnknown_085EAF4B[] = _("DEEPSEATOOTH");
const u8 gUnknown_085EAF58[] = _("DEEPSEASCALE");
const u8 gUnknown_085EAF65[] = _("BLUE FLUTE");
const u8 gUnknown_085EAF70[] = _("YELLOW FLUTE");
const u8 gUnknown_085EAF7D[] = _("RED FLUTE");
const u8 gUnknown_085EAF87[] = _("WHITE FLUTE");
const u8 gUnknown_085EAF93[] = _("BLACK FLUTE");
const u8 gUnknown_085EAF9F[] = _("GLASS CHAIR");
const u8 gUnknown_085EAFAB[] = _("GLASS DESK");
const u8 gUnknown_085EAFB6[] = _("TREECKO DOLL 1,000 COINS");
const u8 gUnknown_085EAFCF[] = _("TORCHIC DOLL 1,000 COINS");
const u8 gUnknown_085EAFE8[] = _("MUDKIP DOLL 1,000 COINS");
const u8 gUnknown_085EB002[] = _(" 50 COINS ¥1,000");
const u8 gUnknown_085EB017[] = _("500 COINS ¥10,000");
const u8 gUnknown_085EB02A[] = _("Excellent");
const u8 gUnknown_085EB034[] = _("Not so good");
const u8 gUnknown_085EB040[] = _("RED SHARD");
const u8 gUnknown_085EB04A[] = _("YELLOW SHARD");
const u8 gUnknown_085EB057[] = _("BLUE SHARD");
const u8 gUnknown_085EB062[] = _("GREEN SHARD");
const u8 gText_FreshWaterAndPrice[] = _("FRESH WATER{CLEAR_TO 0x48}¥200");
const u8 gText_SodaPopAndPrice[] = _("SODA POP{CLEAR_TO 0x48}¥300");
const u8 gText_LemonadeAndPrice[] = _("LEMONADE{CLEAR_TO 0x48}¥350");
const u8 gText_HowToRide[] = _("HOW TO RIDE");
const u8 gText_HowToTurn[] = _("HOW TO TURN");
const u8 gText_SandySlopes[] = _("SANDY SLOPES");
const u8 gText_Wheelies[] = _("WHEELIES");
const u8 gText_BunnyHops[] = _("BUNNY-HOPS");
const u8 gText_Jump[] = _("JUMP");
const u8 gText_Satisfied[] = _("Satisfied");
const u8 gText_Dissatisfied[] = _("Dissatisfied");
const u8 gText_DeepSeaTooth[] = _("DEEPSEATOOTH");
const u8 gText_DeepSeaScale[] = _("DEEPSEASCALE");
const u8 gText_BlueFlute2[] = _("BLUE FLUTE");
const u8 gText_YellowFlute2[] = _("YELLOW FLUTE");
const u8 gText_RedFlute2[] = _("RED FLUTE");
const u8 gText_WhiteFlute2[] = _("WHITE FLUTE");
const u8 gText_BlackFlute2[] = _("BLACK FLUTE");
const u8 gText_GlassChair[] = _("GLASS CHAIR");
const u8 gText_GlassDesk[] = _("GLASS DESK");
const u8 gText_TreeckoDollAndPrice[] = _("TREECKO DOLL 1,000 COINS");
const u8 gText_TorchicDollAndPrice[] = _("TORCHIC DOLL 1,000 COINS");
const u8 gText_MudkipDollAndPrice[] = _("MUDKIP DOLL 1,000 COINS");
const u8 gText_50CoinsAndPrice[] = _(" 50 COINS ¥1,000");
const u8 gText_500CoinsAndPrice[] = _("500 COINS ¥10,000");
const u8 gText_Excellent2[] = _("Excellent");
const u8 gText_NotSoGood[] = _("Not so good");
const u8 gText_RedShard[] = _("RED SHARD");
const u8 gText_YellowShard[] = _("YELLOW SHARD");
const u8 gText_BlueShard[] = _("BLUE SHARD");
const u8 gText_GreenShard[] = _("GREEN SHARD");
const u8 gText_BattleFrontier[] = _("BATTLE FRONTIER");
const u8 gUnknown_085EB07E[] = _("Right");
const u8 gUnknown_085EB084[] = _("Left");
const u8 gUnknown_085EB089[] = _("TM32{CLEAR_TO 0x48}1,500 COINS");
const u8 gUnknown_085EB09C[] = _("TM29{CLEAR_TO 0x48}3,500 COINS");
const u8 gUnknown_085EB0AF[] = _("TM35{CLEAR_TO 0x48}4,000 COINS");
const u8 gUnknown_085EB0C2[] = _("TM24{CLEAR_TO 0x48}4,000 COINS");
const u8 gUnknown_085EB0D5[] = _("TM13{CLEAR_TO 0x48}4,000 COINS");
const u8 gText_Right[] = _("Right");
const u8 gText_Left[] = _("Left");
const u8 gText_TM32AndPrice[] = _("TM32{CLEAR_TO 0x48}1,500 COINS");
const u8 gText_TM29AndPrice[] = _("TM29{CLEAR_TO 0x48}3,500 COINS");
const u8 gText_TM35AndPrice[] = _("TM35{CLEAR_TO 0x48}4,000 COINS");
const u8 gText_TM24AndPrice[] = _("TM24{CLEAR_TO 0x48}4,000 COINS");
const u8 gText_TM13AndPrice[] = _("TM13{CLEAR_TO 0x48}4,000 COINS");
const u8 gText_Cool[] = _("COOL");
const u8 gText_Beauty[] = _("BEAUTY");
const u8 gText_Cute[] = _("CUTE");
@@ -728,82 +728,81 @@ const u8 gText_MenuOptionPokedex[] = _("POKéDEX");
const u8 gText_MenuOptionPokemon[] = _("POKéMON");
const u8 gText_MenuOptionBag[] = _("BAG");
const u8 gText_MenuOptionPokenav[] = _("POKéNAV");
const u8 gUnknown_085EB278[] = _("");
const u8 gText_Blank[] = _("");
const u8 gText_MenuOptionSave[] = _("SAVE");
const u8 gText_MenuOptionOption[] = _("OPTION");
const u8 gText_MenuOptionExit[] = _("EXIT");
const u8 gUnknown_085EB28A[] = __(" ");
const u8 gUnknown_085EB28C[] = _("5BP");
const u8 gUnknown_085EB290[] = _("10BP");
const u8 gUnknown_085EB295[] = _("15BP");
const u8 gUnknown_085EB29A[] = _("RED TENT");
const u8 gUnknown_085EB2A3[] = _("BLUE TENT");
const u8 gText_5BP[] = _(" 5BP");
const u8 gText_10BP[] = _("10BP");
const u8 gText_15BP[] = _("15BP");
const u8 gText_RedTent[] = _("RED TENT");
const u8 gText_BlueTent[] = _("BLUE TENT");
const u8 gText_SouthernIsland[] = _("SOUTHERN ISLAND");
const u8 gText_BirthIsland[] = _("BIRTH ISLAND");
const u8 gText_FarawayIsland[] = _("FARAWAY ISLAND");
const u8 gText_NavelRock[] = _("NAVEL ROCK");
const u8 gUnknown_085EB2E4[] = _("CLAW FOSSIL");
const u8 gUnknown_085EB2F0[] = _("ROOT FOSSIL");
const u8 gUnknown_085EB2FC[] = _("NO");
const u8 gUnknown_085EB2FF[] = _("I'll battle now!");
const u8 gUnknown_085EB310[] = _("I won!");
const u8 gUnknown_085EB317[] = _("I lost!");
const u8 gUnknown_085EB31F[] = _("I won't tell.");
const u8 gText_ClawFossil[] = _("CLAW FOSSIL");
const u8 gText_RootFossil[] = _("ROOT FOSSIL");
const u8 gText_No4[] = _("NO");
const u8 gText_IllBattleNow[] = _("I'll battle now!");
const u8 gText_IWon[] = _("I won!");
const u8 gText_ILost[] = _("I lost!");
const u8 gText_IWontTell[] = _("I won't tell.");
const u8 gText_NormalTagMatch[] = _("NORMAL TAG MATCH");
const u8 gText_VarietyTagMatch[] = _("VARIETY TAG MATCH");
const u8 gText_UniqueTagMatch[] = _("UNIQUE TAG MATCH");
const u8 gText_ExpertTagMatch[] = _("EXPERT TAG MATCH");
const u8 gUnknown_085EB372[] = _("TRADE CENTER");
const u8 gUnknown_085EB37F[] = _("COLOSSEUM");
const u8 gUnknown_085EB389[] = _("RECORD CORNER");
const u8 gUnknown_085EB397[] = _("BERRY CRUSH");
const u8 gText_TradeCenter[] = _("TRADE CENTER");
const u8 gText_Colosseum[] = _("COLOSSEUM");
const u8 gText_RecordCorner[] = _("RECORD CORNER");
const u8 gText_BerryCrush3[] = _("BERRY CRUSH");
const u8 gUnknown_085EB3A3[] = _("");
const u8 gUnknown_085EB3A4[] = _("POKéMON JUMP");
const u8 gUnknown_085EB3B1[] = _("DODRIO BERRY-PICKING");
const u8 gUnknown_085EB3C6[] = _("BECOME LEADER");
const u8 gUnknown_085EB3D4[] = _("JOIN GROUP");
const u8 gUnknown_085EB3DF[] = _("TWO STYLES");
const u8 gUnknown_085EB3EA[] = _("LV. 50");
const u8 gUnknown_085EB3F1[] = _("OPEN LEVEL");
const u8 gUnknown_085EB3FC[] = _("{PKMN} TYPE & NO.");
const u8 gUnknown_085EB40A[] = _("HOLD ITEMS");
const u8 gUnknown_085EB415[] = _("SYMBOLS");
const u8 gUnknown_085EB41D[] = _("RECORD");
const u8 gUnknown_085EB424[] = _("BATTLE PTS");
const u8 gUnknown_085EB42F[] = _("TOWER INFO");
const u8 gUnknown_085EB43A[] = _("BATTLE {PKMN}");
const u8 gUnknown_085EB444[] = _("BATTLE SALON");
const u8 gUnknown_085EB451[] = _("MULTI-LINK");
const u8 gUnknown_085EB45C[] = _("BATTLE RULES");
const u8 gUnknown_085EB469[] = _("JUDGE: MIND");
const u8 gUnknown_085EB475[] = _("JUDGE: SKILL");
const u8 gUnknown_085EB482[] = _("JUDGE: BODY");
const u8 gUnknown_085EB48E[] = _("MATCHUP");
const u8 gUnknown_085EB496[] = _("TOURNEY TREE");
const u8 gUnknown_085EB4A3[] = _("DOUBLE KO");
const u8 gUnknown_085EB4AD[] = _("BASIC RULES");
const u8 gUnknown_085EB4B9[] = _("SWAP: PARTNER");
const u8 gUnknown_085EB4C7[] = _("SWAP: NUMBER");
const u8 gUnknown_085EB4D4[] = _("SWAP: NOTES");
const u8 gUnknown_085EB4E0[] = _("OPEN LEVEL");
const u8 gText_PokemonJump[] = _("POKéMON JUMP");
const u8 gText_DodrioBerryPicking[] = _("DODRIO BERRY-PICKING");
const u8 gText_BecomeLeader[] = _("BECOME LEADER");
const u8 gText_JoinGroup[] = _("JOIN GROUP");
const u8 gText_TwoStyles[] = _("TWO STYLES");
const u8 gText_Lv50_3[] = _("LV. 50");
const u8 gText_OpenLevel2[] = _("OPEN LEVEL");
const u8 gText_MonTypeAndNo[] = _("{PKMN} TYPE & NO.");
const u8 gText_HoldItems[] = _("HOLD ITEMS");
const u8 gText_Symbols2[] = _("SYMBOLS");
const u8 gText_Record3[] = _("RECORD");
const u8 gText_BattlePts[] = _("BATTLE PTS");
const u8 gText_TowerInfo[] = _("TOWER INFO");
const u8 gText_BattleMon[] = _("BATTLE {PKMN}");
const u8 gText_BattleSalon[] = _("BATTLE SALON");
const u8 gText_MultiLink2[] = _("MULTI-LINK");
const u8 gText_BattleRules[] = _("BATTLE RULES");
const u8 gText_JudgeMind[] = _("JUDGE: MIND");
const u8 gText_JudgeSkill[] = _("JUDGE: SKILL");
const u8 gText_JudgeBody[] = _("JUDGE: BODY");
const u8 gText_Matchup[] = _("MATCHUP");
const u8 gText_TourneyTree[] = _("TOURNEY TREE");
const u8 gText_DoubleKO[] = _("DOUBLE KO");
const u8 gText_BasicRules[] = _("BASIC RULES");
const u8 gText_SwapPartners[] = _("SWAP: PARTNER");
const u8 gText_SwapNumber[] = _("SWAP: NUMBER");
const u8 gText_SwapNotes[] = _("SWAP: NOTES");
const u8 gText_OpenLevel3[] = _("OPEN LEVEL");
const u8 gText_BattleBasics[] = _("BATTLE BASICS");
const u8 gText_PokemonNature[] = _("POKéMON NATURE");
const u8 gText_PokemonMoves[] = _("POKéMON MOVES");
const u8 gText_Underpowered[] = _("UNDERPOWERED");
const u8 gText_WhenInDanger[] = _("WHEN IN DANGER");
const u8 gUnknown_085EB532[] = _("PYRAMID: POKéMON");
const u8 gUnknown_085EB543[] = _("PYRAMID: TRAINERS");
const u8 gUnknown_085EB555[] = _("PYRAMID: MAZE");
const u8 gUnknown_085EB563[] = _("BATTLE BAG");
const u8 gUnknown_085EB56E[] = _("POKéNAV AND BAG");
const u8 gUnknown_085EB57E[] = _("HELD ITEMS");
const u8 gUnknown_085EB589[] = _("POKéMON ORDER");
const u8 gUnknown_085EB597[] = _("BATTLE POKéMON");
const u8 gText_PyramidPokemon[] = _("PYRAMID: POKéMON");
const u8 gText_PyramidTrainers[] = _("PYRAMID: TRAINERS");
const u8 gText_PyramidMaze[] = _("PYRAMID: MAZE");
const u8 gText_BattleBag2[] = _("BATTLE BAG");
const u8 gText_PokenavAndBag[] = _("POKéNAV AND BAG");
const u8 gText_HeldItems[] = _("HELD ITEMS");
const u8 gText_PokemonOrder[] = _("POKéMON ORDER");
const u8 gText_BattlePokemon[] = _("BATTLE POKéMON");
const u8 gText_BattleTrainers[] = _("BATTLE TRAINERS");
const u8 gUnknown_085EB5B6[] = _("GO ON");
const u8 gUnknown_085EB5BC[] = _("RECORD");
const u8 gUnknown_085EB5C3[] = _("REST");
const u8 gUnknown_085EB5C8[] = _("RETIRE");
const u8 gText_GoOn[] = _("GO ON");
const u8 gText_Record2[] = _("RECORD");
const u8 gText_Rest[] = _("REST");
const u8 gText_Retire[] = _("RETIRE");
const u8 gText_99TimesPlus[] = _("99 times +");
const u8 gText_1MinutePlus[] = _("1 minute +");
const u8 gText_SpaceSeconds[] = _(" seconds");
@@ -1292,7 +1291,7 @@ const u8 gMatchCall_MayTrainersPokemonText[] = _("I'll use any POKéMON!");
const u8 gMatchCall_MaySelfIntroductionText_Line1[] = _("My POKéMON and I help");
const u8 gMatchCall_MaySelfIntroductionText_Line2[] = _("my father's research.");
const u8 gText_HatchedFromEgg[] = _("{STR_VAR_1} hatched from the EGG!");
const u8 gText_NickHatchPrompt[] = _("Would you like to nickname the newly\nhatched {STR_VAR_1}?");
const u8 gText_NicknameHatchPrompt[] = _("Would you like to nickname the newly\nhatched {STR_VAR_1}?");
ALIGNED(4) const u8 gText_ReadyToBerryCrush[] = _("Are you ready to BERRY-CRUSH?\nPlease pick a BERRY for use.\p");
ALIGNED(4) const u8 gText_WaitForAllChooseBerry[] = _("Please wait while each member\nchooses a BERRY.");
ALIGNED(4) const u8 gText_EndedWithXUnitsPowder[] = _("{PAUSE_MUSIC}{PLAY_BGM MUS_FANFA1}You ended up with {STR_VAR_1} units of\nsilky-smooth BERRY POWDER.{RESUME_MUSIC}\pYour total amount of BERRY POWDER\nis {STR_VAR_2}.\p");
@@ -1419,8 +1418,8 @@ const u8 gUnknown_085EE0FA[] = _("つうしん しゅうりょう!");
const u8 gUnknown_085EE107[] = _("あらたな トレーナーが\nホウエンに やってきた!");
const u8 gUnknown_085EE120[] = _("しばらく おまちください");
const u8 gUnknown_085EE12D[] = _("かきこみ エラー です\nデータが ほぞん できませんでした");
const u8 gUnknown_085EE14B[] = _("RED");
const u8 gUnknown_085EE14F[] = _("BLUE");
const u8 gText_Red[] = _("RED");
const u8 gText_Blue[] = _("BLUE");
const u8 gUnknown_085EE154[] = _("---");
const u8 gText_SingleBattleRoomResults[] = _("{PLAYER}'s Single Battle Room Results");
const u8 gText_DoubleBattleRoomResults[] = _("{PLAYER}'s Double Battle Room Results");
@@ -1591,23 +1590,23 @@ const u8 gText_PkmnsNickname[] = _("{STR_VAR_1}'s nickname?");
const u8 gText_TellHimTheWords[] = _("Tell him the words.");
const u8 gText_MoveOkBack[] = _("{DPAD_NONE}MOVE {A_BUTTON}OK {B_BUTTON}BACK");
const u8 gText_CallCantBeMadeHere[] = _("A call can't be made from here.");
const u8 gUnknown_085EEB2B[] = _("HANDSOME");
const u8 gUnknown_085EEB34[] = _("VINNY");
const u8 gUnknown_085EEB3A[] = _("MOREME");
const u8 gUnknown_085EEB41[] = _("IRONHARD");
const u8 gUnknown_085EEB4A[] = _("MUSCLE");
const u8 gUnknown_085EEB51[] = _("coolness");
const u8 gUnknown_085EEB5A[] = _("beauty");
const u8 gUnknown_085EEB61[] = _("cuteness");
const u8 gUnknown_085EEB6A[] = _("smartness");
const u8 gUnknown_085EEB74[] = _("toughness");
const u8 gText_Lady2[] = _("Lady");
const u8 gUnknown_085EEB83[] = _("slippery");
const u8 gUnknown_085EEB8C[] = _("roundish");
const u8 gUnknown_085EEB95[] = _("wham-ish");
const u8 gUnknown_085EEB9E[] = _("shiny");
const u8 gUnknown_085EEBA4[] = _("sticky");
const u8 gUnknown_085EEBAB[] = _("pointy");
const u8 gText_ContestLady_Handsome[] = _("HANDSOME");
const u8 gText_ContestLady_Vinny[] = _("VINNY");
const u8 gText_ContestLady_Moreme[] = _("MOREME");
const u8 gText_ContestLady_Ironhard[] = _("IRONHARD");
const u8 gText_ContestLady_Muscle[] = _("MUSCLE");
const u8 gText_ContestLady_Coolness[] = _("coolness");
const u8 gText_ContestLady_Beauty[] = _("beauty");
const u8 gText_ContestLady_Cuteness[] = _("cuteness");
const u8 gText_ContestLady_Smartness[] = _("smartness");
const u8 gText_ContestLady_Toughness[] = _("toughness");
const u8 gText_QuizLady_Lady[] = _("Lady");
const u8 gText_FavorLady_Slippery[] = _("slippery");
const u8 gText_FavorLady_Roundish[] = _("roundish");
const u8 gText_FavorLady_Whamish[] = _("wham-ish");
const u8 gText_FavorLady_Shiny[] = _("shiny");
const u8 gText_FavorLady_Sticky[] = _("sticky");
const u8 gText_FavorLady_Pointy[] = _("pointy");
const u8 gText_RentalPkmn2[] = _("RENTAL POKéMON");
const u8 gText_SelectFirstPkmn[] = _("Select the first POKéMON.");
const u8 gText_SelectSecondPkmn[] = _("Select the second POKéMON.");
+7 -7
View File
@@ -1551,7 +1551,7 @@ static void sub_80773D0(void)
for (i = 0; i < PARTY_SIZE; i++)
{
CreateMon(&gEnemyParty[i], SPECIES_NONE, 0, 0x20, FALSE, 0, 0, 0);
CreateMon(&gEnemyParty[i], SPECIES_NONE, 0, 0x20, FALSE, 0, OT_ID_PLAYER_ID, 0);
}
sub_807A19C(0);
@@ -3032,7 +3032,7 @@ static u8 sub_8079A3C(u8 *str, u8 whichParty, u8 monIdx)
static void sub_8079AA4(u8 *a0, u8 a1, u8 a2)
{
u16 arr[4];
u16 moves[MAX_MON_MOVES];
u16 i;
if (!gUnknown_0203229C->unk_51[a1][a2])
@@ -3041,11 +3041,11 @@ static void sub_8079AA4(u8 *a0, u8 a1, u8 a2)
{
if (!a1)
{
arr[i] = GetMonData(&gPlayerParty[a2], i + MON_DATA_MOVE1, NULL);
moves[i] = GetMonData(&gPlayerParty[a2], i + MON_DATA_MOVE1, NULL);
}
else
{
arr[i] = GetMonData(&gEnemyParty[a2], i + MON_DATA_MOVE1, NULL);
moves[i] = GetMonData(&gEnemyParty[a2], i + MON_DATA_MOVE1, NULL);
}
}
@@ -3053,9 +3053,9 @@ static void sub_8079AA4(u8 *a0, u8 a1, u8 a2)
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (arr[i] != MOVE_NONE)
if (moves[i] != MOVE_NONE)
{
StringAppend(a0, gMoveNames[arr[i]]);
StringAppend(a0, gMoveNames[moves[i]]);
}
StringAppend(a0, gText_NewLine3);
@@ -5832,7 +5832,7 @@ static void _CreateInGameTradePokemon(u8 whichPlayerMon, u8 whichInGameTrade)
u8 isMail;
struct Pokemon *pokemon = &gEnemyParty[0];
CreateMon(pokemon, inGameTrade->species, level, 32, TRUE, inGameTrade->personality, TRUE, inGameTrade->otId);
CreateMon(pokemon, inGameTrade->species, level, 32, TRUE, inGameTrade->personality, OT_ID_PRESET, inGameTrade->otId);
SetMonData(pokemon, MON_DATA_HP_IV, &inGameTrade->ivs[0]);
SetMonData(pokemon, MON_DATA_ATK_IV, &inGameTrade->ivs[1]);
+1 -1
View File
@@ -71,7 +71,7 @@ void CreateAvailableDecorationsMenu(u8 taskId)
if (curWidth > windowWidth)
windowWidth = curWidth;
}
windowTemplate.width = convert_pixel_width_to_tile_width(windowWidth);
windowTemplate.width = ConvertPixelWidthToTileWidth(windowWidth);
data[3] = AddWindow(&windowTemplate);
DrawStdFrameWithCustomTileAndPalette(data[3], FALSE, 0x214, 14);
for (i = 0; i < 4; i++)
+27 -69
View File
@@ -38,58 +38,16 @@
#define HILL_TAG_UNIQUE 2
#define HILL_TAG_EXPERT 3
#define HILL_TRAINER_NAME_LENGTH 11
#define HILL_MAX_TIME 215999 // 60 * 60 * 60 - 1
struct TrHillRoomTrainers
{
u8 name[2][HILL_TRAINER_NAME_LENGTH];
u8 facilityClass[2];
};
struct TrainerHillTrainer
{
u8 name[HILL_TRAINER_NAME_LENGTH];
u8 facilityClass;
u32 unused;
u16 speechBefore[6];
u16 speechWin[6];
u16 speechLose[6];
u16 speechAfter[6];
struct BattleTowerPokemon mons[PARTY_SIZE];
};
struct TrHillFloor
{
u8 unk0;
u8 unk1;
struct TrainerHillTrainer trainers[2];
u8 data[0x100];
u16 unk3A0[16];
u8 coords[2]; // x first 4 bits, y last 4 bits
u8 direction; // array of 4 bits for each trainer
u8 range; // array of 4 bits for each trainer
};
struct TrHillTag
{
u8 unkField_0;
u8 unused1;
u8 unkField_2;
u8 unused3;
u8 unused4;
u8 unused5;
u8 unused6;
struct TrHillFloor floors[4];
};
// EWRAM
struct TrHillStruct2
{
u8 floorId;
struct TrHillTag tag;
struct TrHillFloor floors[4];
};
// EWRAM
static EWRAM_DATA struct TrHillStruct2 *sHillData = NULL;
static EWRAM_DATA struct TrHillRoomTrainers *sRoomTrainers = NULL;
EWRAM_DATA u32 *gTrainerHillVBlankCounter = NULL;
@@ -350,7 +308,7 @@ u8 GetTrainerHillTrainerFrontSpriteId(u16 trainerId)
SetUpDataStruct();
id = trainerId - 1;
facilityClass = sHillData->tag.floors[sHillData->floorId].trainers[id].facilityClass;
facilityClass = sHillData->floors[sHillData->floorId].trainers[id].facilityClass;
FreeDataStruct();
return gFacilityClassToPicIndex[facilityClass];
@@ -367,9 +325,9 @@ void InitTrainerHillBattleStruct(void)
{
for (j = 0; j < HILL_TRAINER_NAME_LENGTH; j++)
{
sRoomTrainers->name[i][j] = sHillData->tag.floors[sHillData->floorId].trainers[i].name[j];
sRoomTrainers->name[i][j] = sHillData->floors[sHillData->floorId].trainers[i].name[j];
}
sRoomTrainers->facilityClass[i] = sHillData->tag.floors[sHillData->floorId].trainers[i].facilityClass;
sRoomTrainers->facilityClass[i] = sHillData->floors[sHillData->floorId].trainers[i].facilityClass;
}
SetTrainerHillVBlankCounter(&gSaveBlock1Ptr->trainerHill.timer);
FreeDataStruct();
@@ -387,7 +345,7 @@ static void SetUpDataStruct(void)
{
sHillData = AllocZeroed(sizeof(*sHillData));
sHillData->floorId = gMapHeader.mapLayoutId - LAYOUT_TRAINER_HILL_1F;
CpuCopy32(sDataPerTag[gSaveBlock1Ptr->trainerHill.tag], &sHillData->tag, sizeof(sHillData->tag));
CpuCopy32(sDataPerTag[gSaveBlock1Ptr->trainerHill.tag], &sHillData->tag, sizeof(sHillData->tag) + 4 * sizeof(struct TrHillFloor));
nullsub_2();
}
}
@@ -409,16 +367,16 @@ void CopyTrainerHillTrainerText(u8 which, u16 trainerId)
switch (which)
{
case 2:
FrontierSpeechToString(sHillData->tag.floors[floorId].trainers[id].speechBefore);
FrontierSpeechToString(sHillData->floors[floorId].trainers[id].speechBefore);
break;
case 3:
FrontierSpeechToString(sHillData->tag.floors[floorId].trainers[id].speechWin);
FrontierSpeechToString(sHillData->floors[floorId].trainers[id].speechWin);
break;
case 4:
FrontierSpeechToString(sHillData->tag.floors[floorId].trainers[id].speechLose);
FrontierSpeechToString(sHillData->floors[floorId].trainers[id].speechLose);
break;
case 5:
FrontierSpeechToString(sHillData->tag.floors[floorId].trainers[id].speechAfter);
FrontierSpeechToString(sHillData->floors[floorId].trainers[id].speechAfter);
break;
}
@@ -460,7 +418,7 @@ static void sub_81D5924(void)
{
u16 itemId = sub_81D6640();
if (sHillData->tag.unkField_2 != 4 || gSaveBlock1Ptr->trainerHill.field_3D6E_0a)
if (sHillData->tag.numFloors != 4 || gSaveBlock1Ptr->trainerHill.field_3D6E_0a)
{
gSpecialVar_Result = 2;
}
@@ -556,9 +514,9 @@ static void sub_81D5B2C(void)
static void sub_81D5BBC(void)
{
SetUpDataStruct();
if (sHillData->tag.unkField_2 != 4)
if (sHillData->tag.numFloors != 4)
{
ConvertIntToDecimalStringN(gStringVar1, sHillData->tag.unkField_2, STR_CONV_MODE_LEFT_ALIGN, 1);
ConvertIntToDecimalStringN(gStringVar1, sHillData->tag.numFloors, STR_CONV_MODE_LEFT_ALIGN, 1);
gSpecialVar_Result = 0;
}
else
@@ -673,12 +631,12 @@ void sub_81D5DF8(void)
eventTemplates[i] = gUnknown_0862A670;
eventTemplates[i].localId = i + 1;
eventTemplates[i].graphicsId = FacilityClassToGraphicsId(sHillData->tag.floors[floorId].trainers[i].facilityClass);
eventTemplates[i].x = sHillData->tag.floors[floorId].coords[i] & 0xF;
eventTemplates[i].y = ((sHillData->tag.floors[floorId].coords[i] >> 4) & 0xF) + 5;
eventTemplates[i].graphicsId = FacilityClassToGraphicsId(sHillData->floors[floorId].trainers[i].facilityClass);
eventTemplates[i].x = sHillData->floors[floorId].display.coords[i] & 0xF;
eventTemplates[i].y = ((sHillData->floors[floorId].display.coords[i] >> 4) & 0xF) + 5;
bits = i << 2;
eventTemplates[i].movementType = ((sHillData->tag.floors[floorId].direction >> bits) & 0xF) + MOVEMENT_TYPE_FACE_UP;
eventTemplates[i].trainerRange_berryTreeId = (sHillData->tag.floors[floorId].range >> bits) & 0xF;
eventTemplates[i].movementType = ((sHillData->floors[floorId].display.direction >> bits) & 0xF) + MOVEMENT_TYPE_FACE_UP;
eventTemplates[i].trainerRange_berryTreeId = (sHillData->floors[floorId].display.range >> bits) & 0xF;
eventTemplates[i].script = EventScript_2C83F0;
gSaveBlock2Ptr->frontier.trainerIds[i] = i + 1;
}
@@ -699,8 +657,8 @@ static u32 sub_81D5F58(u8 floorId, u32 bit, u32 arg2, u32 arg3)
{
u32 var0, var1, var2, var3;
var0 = (sHillData->tag.floors[floorId].unk3A0[arg2] >> (15 - bit)) & 1;
var1 = sHillData->tag.floors[floorId].data[arg2 * arg3 + bit];
var0 = (sHillData->floors[floorId].unk3A0[arg2] >> (15 - bit)) & 1;
var1 = sHillData->floors[floorId].data[arg2 * arg3 + bit];
var3 = 0x200;
var2 = 0x3000;
@@ -943,7 +901,7 @@ static void sub_81D62CC(u16 trainerId, u8 firstMonId)
u8 id = gUnknown_0862A698[trId][arrId];
struct Pokemon *mon = &gEnemyParty[i];
CreateBattleTowerMon(mon, &sHillData->tag.floors[floorId].trainers[trId].mons[id]);
CreateBattleTowerMon(mon, &sHillData->floors[floorId].trainers[trId].mons[id]);
sub_81D642C(mon, level);
}
@@ -978,7 +936,7 @@ u8 GetTrainerEncounterMusicIdInTrainerHill(u16 trainerId)
SetUpDataStruct();
trId = trainerId - 1;
facilityClass = sHillData->tag.floors[sHillData->floorId].trainers[trId].facilityClass;
facilityClass = sHillData->floors[sHillData->floorId].trainers[trId].facilityClass;
FreeDataStruct();
for (i = 0; i < ARRAY_COUNT(gUnknown_0862A3B4); i++)
@@ -1005,7 +963,7 @@ u8 sub_81D6490(void)
u8 ret;
SetUpDataStruct();
ret = sHillData->tag.unkField_2;
ret = sHillData->tag.numFloors;
FreeDataStruct();
return ret;
@@ -1070,8 +1028,8 @@ static u8 sub_81D65E8(u8 arg0)
var = 0;
for (i = 0; i < 4; i++)
{
var ^= sHillData->tag.floors[i].unk0 & 0x1F;
var ^= sHillData->tag.floors[i].unk1 & 0x1F;
var ^= sHillData->floors[i].unk0 & 0x1F;
var ^= sHillData->floors[i].unk1 & 0x1F;
}
if (arg0)
@@ -1091,8 +1049,8 @@ static u16 sub_81D6640(void)
for (i = 0; i < 4; i++)
{
var += sHillData->tag.floors[i].unk0;
var += sHillData->tag.floors[i].unk1;
var += sHillData->floors[i].unk0;
var += sHillData->floors[i].unk1;
}
var2 = var / 256;
+29 -27
View File
@@ -38,8 +38,10 @@
#include "secret_base.h"
#include "tv.h"
#include "data.h"
#include "constants/contest.h"
#include "constants/layouts.h"
#include "constants/metatile_behaviors.h"
#include "constants/script_menu.h"
// Static type declarations
@@ -182,7 +184,7 @@ static void DoTVShowPokemonContestLiveUpdates2(void);
static const struct {
u16 species;
u16 moves[4];
u16 moves[MAX_MON_MOVES];
u8 level;
u8 location;
} sPokeOutbreakSpeciesList[] = {
@@ -1657,12 +1659,12 @@ void PutLilycoveContestLadyShowOnTheAir(void)
if (gSpecialVar_Result != TRUE)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
sub_818E848(&show->contestLiveUpdates2.language);
BufferContestLadyLanguage(&show->contestLiveUpdates2.language);
show->contestLiveUpdates2.pokemonNameLanguage = LANGUAGE_ENGLISH;
show->contestLiveUpdates2.kind = TVSHOW_CONTEST_LIVE_UPDATES_2;
show->contestLiveUpdates2.active = TRUE;
sub_818E81C(show->contestLiveUpdates2.playerName);
sub_818E7E0(&show->contestLiveUpdates2.contestCategory, show->contestLiveUpdates2.nickname);
BufferContestLadyPlayerName(show->contestLiveUpdates2.playerName);
BufferContestLadyMonName(&show->contestLiveUpdates2.contestCategory, show->contestLiveUpdates2.nickname);
show->contestLiveUpdates2.pokeblockState = sub_818E880();
tv_store_id_2x(show);
}
@@ -2329,7 +2331,7 @@ void sub_80EE35C(u16 foeSpecies, u16 species, u8 moveIdx, const u16 *movePtr, u1
show->battleSeminar.foeSpecies = foeSpecies;
show->battleSeminar.species = species;
show->battleSeminar.move = movePtr[moveIdx];
for (i = 0, j = 0; i < 4; i ++)
for (i = 0, j = 0; i < MAX_MON_MOVES; i ++)
{
if (i != moveIdx && movePtr[i])
{
@@ -2786,11 +2788,11 @@ bool8 GetPriceReduction(u8 newsKind)
{
u8 i;
if (newsKind == 0)
if (newsKind == POKENEWS_NONE)
{
return FALSE;
}
for (i = 0; i < 16; i ++)
for (i = 0; i < POKE_NEWS_COUNT; i ++)
{
if (gSaveBlock1Ptr->pokeNews[i].kind == newsKind)
{
@@ -2870,17 +2872,17 @@ void CopyContestRankToStringVar(u8 varIdx, u8 rank)
{
switch (rank)
{
case 0: // NORMAL
StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[5]);
case CONTEST_RANK_NORMAL:
StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_NORMAL]);
break;
case 1: // SUPER
StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[6]);
case CONTEST_RANK_SUPER:
StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_SUPER]);
break;
case 2: // HYPER
StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[7]);
case CONTEST_RANK_HYPER:
StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_HYPER]);
break;
case 3: // MASTER
StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[8]);
case CONTEST_RANK_MASTER:
StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_MASTER]);
break;
}
}
@@ -2889,20 +2891,20 @@ void CopyContestCategoryToStringVar(u8 varIdx, u8 category)
{
switch (category)
{
case 0: // COOL
StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[0]);
case CONTEST_CATEGORY_COOL:
StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_COOL]);
break;
case 1: // BEAUTY
StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[1]);
case CONTEST_CATEGORY_BEAUTY:
StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_BEAUTY]);
break;
case 2: // CUTE
StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[2]);
case CONTEST_CATEGORY_CUTE:
StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_CUTE]);
break;
case 3: // SMART
StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[3]);
case CONTEST_CATEGORY_SMART:
StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_SMART]);
break;
case 4: // TOUGH
StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[4]);
case CONTEST_CATEGORY_TOUGH:
StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_TOUGH]);
break;
}
}
@@ -5600,7 +5602,7 @@ static void DoTVShowPokemonContestLiveUpdates(void)
switch (state)
{
case 0:
sub_818E868(gStringVar1, show->contestLiveUpdates.category);
BufferContestName(gStringVar1, show->contestLiveUpdates.category);
StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
TVShowConvertInternationalString(gStringVar3, show->contestLiveUpdates.playerName, show->contestLiveUpdates.language);
if (show->contestLiveUpdates.round1Rank == show->contestLiveUpdates.round2Rank)
@@ -7720,7 +7722,7 @@ static void DoTVShowPokemonContestLiveUpdates2(void)
switch (state)
{
case 0:
sub_818E868(gStringVar1, show->contestLiveUpdates2.contestCategory);
BufferContestName(gStringVar1, show->contestLiveUpdates2.contestCategory);
if (show->contestLiveUpdates2.pokeblockState == 1)
{
sTVShowState = 1;
+30 -30
View File
@@ -143,47 +143,47 @@ static void FeebasSeedRng(u16 seed)
static u8 ChooseWildMonIndex_Land(void)
{
u8 rand = Random() % 100;
u8 rand = Random() % ENCOUNTER_CHANCE_LAND_MONS_TOTAL;
if (rand < 20) // 20% chance
if (rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_0)
return 0;
else if (rand >= 20 && rand < 40) // 20% chance
else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_0 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_1)
return 1;
else if (rand >= 40 && rand < 50) // 10% chance
else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_1 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_2)
return 2;
else if (rand >= 50 && rand < 60) // 10% chance
else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_2 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_3)
return 3;
else if (rand >= 60 && rand < 70) // 10% chance
else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_3 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_4)
return 4;
else if (rand >= 70 && rand < 80) // 10% chance
else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_4 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_5)
return 5;
else if (rand >= 80 && rand < 85) // 5% chance
else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_5 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_6)
return 6;
else if (rand >= 85 && rand < 90) // 5% chance
else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_6 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_7)
return 7;
else if (rand >= 90 && rand < 94) // 4% chance
else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_7 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_8)
return 8;
else if (rand >= 94 && rand < 98) // 4% chance
else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_8 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_9)
return 9;
else if (rand == 98) // 1% chance
else if (rand == ENCOUNTER_CHANCE_LAND_MONS_SLOT_9)
return 10;
else // 1% chance
else
return 11;
}
static u8 ChooseWildMonIndex_WaterRock(void)
{
u8 rand = Random() % 100;
u8 rand = Random() % ENCOUNTER_CHANCE_WATER_MONS_TOTAL;
if (rand < 60) // 60% chance
if (rand < ENCOUNTER_CHANCE_WATER_MONS_SLOT_0)
return 0;
else if (rand >= 60 && rand < 90) // 30% chance
else if (rand >= ENCOUNTER_CHANCE_WATER_MONS_SLOT_0 && rand < ENCOUNTER_CHANCE_WATER_MONS_SLOT_1)
return 1;
else if (rand >= 90 && rand < 95) // 5% chance
else if (rand >= ENCOUNTER_CHANCE_WATER_MONS_SLOT_1 && rand < ENCOUNTER_CHANCE_WATER_MONS_SLOT_2)
return 2;
else if (rand >= 95 && rand < 99) // 4% chance
else if (rand >= ENCOUNTER_CHANCE_WATER_MONS_SLOT_2 && rand < ENCOUNTER_CHANCE_WATER_MONS_SLOT_3)
return 3;
else // 1% chance
else
return 4;
}
@@ -197,34 +197,34 @@ enum
static u8 ChooseWildMonIndex_Fishing(u8 rod)
{
u8 wildMonIndex = 0;
u8 rand = Random() % 100;
u8 rand = Random() % ENCOUNTER_CHANCE_FISHING_MONS_TOTAL;
switch (rod)
{
case OLD_ROD:
if (rand < 70) // 70% chance
if (rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_0)
wildMonIndex = 0;
else // 30% chance
else
wildMonIndex = 1;
break;
case GOOD_ROD:
if (rand < 60) // 60% chance
if (rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_2)
wildMonIndex = 2;
if (rand >= 60 && rand < 80) // 20% chance
if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_2 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_3)
wildMonIndex = 3;
if (rand >= 80 && rand < 100) // 20% chance
if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_3 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_4)
wildMonIndex = 4;
break;
case SUPER_ROD:
if (rand < 40) // 40% chance
if (rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_5)
wildMonIndex = 5;
if (rand >= 40 && rand < 80) // 40% chance
if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_5 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_6)
wildMonIndex = 6;
if (rand >= 80 && rand < 95) // 15% chance
if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_6 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_7)
wildMonIndex = 7;
if (rand >= 95 && rand < 99) // 4% chance
if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_7 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_8)
wildMonIndex = 8;
if (rand == 99) // 1% chance
if (rand == ENCOUNTER_CHANCE_FISHING_MONS_SLOT_8)
wildMonIndex = 9;
break;
}