Merge branch 'master' into rename-tablecmds
This commit is contained in:
+6
-6
@@ -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);
|
||||
|
||||
@@ -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++)
|
||||
{
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
@@ -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
@@ -49,7 +49,7 @@ struct PikeWildMon
|
||||
{
|
||||
u16 species;
|
||||
u8 levelDelta;
|
||||
u16 moves[4];
|
||||
u16 moves[MAX_MON_MOVES];
|
||||
};
|
||||
|
||||
// IWRAM bss
|
||||
|
||||
@@ -77,7 +77,7 @@ struct PyramidWildMon
|
||||
u16 species;
|
||||
u8 lvl;
|
||||
u8 abilityNum;
|
||||
u16 moves[4];
|
||||
u16 moves[MAX_MON_MOVES];
|
||||
};
|
||||
|
||||
struct PyramidFloorTemplate
|
||||
|
||||
@@ -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
@@ -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
@@ -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];
|
||||
|
||||
@@ -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
@@ -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[] =
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
};
|
||||
+5049
-4645
File diff suppressed because it is too large
Load Diff
+123
-122
@@ -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[] = {
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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
|
||||
};
|
||||
+5712
-5744
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -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",
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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.
|
||||
@@ -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
File diff suppressed because it is too large
Load Diff
+1934
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
@@ -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)
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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
@@ -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
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
File diff suppressed because it is too large
Load Diff
+88
-86
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user