Merge branch 'master' of https://github.com/pret/pokeemerald into secret-base
This commit is contained in:
+10
-10
@@ -72,10 +72,10 @@ static const struct UCoords8 sBattlerCoords[][4] =
|
||||
// One entry for each of the four Castform forms.
|
||||
const struct MonCoords gCastformFrontSpriteCoords[] =
|
||||
{
|
||||
{ 0x44, 17 }, // NORMAL
|
||||
{ 0x66, 9 }, // SUN
|
||||
{ 0x46, 9 }, // RAIN
|
||||
{ 0x86, 8 }, // HAIL
|
||||
{ .size = 0x44, .y_offset = 17 }, // NORMAL
|
||||
{ .size = 0x66, .y_offset = 9 }, // SUN
|
||||
{ .size = 0x46, .y_offset = 9 }, // RAIN
|
||||
{ .size = 0x86, .y_offset = 8 }, // HAIL
|
||||
};
|
||||
|
||||
static const u8 sCastformElevations[] =
|
||||
@@ -2216,17 +2216,17 @@ s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr)
|
||||
switch (attr)
|
||||
{
|
||||
case BATTLER_COORD_ATTR_HEIGHT:
|
||||
return (coords->coords & 0xf) * 8;
|
||||
return (coords->size & 0xf) * 8;
|
||||
case BATTLER_COORD_ATTR_WIDTH:
|
||||
return (coords->coords >> 4) * 8;
|
||||
return (coords->size >> 4) * 8;
|
||||
case BATTLER_COORD_ATTR_LEFT:
|
||||
return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) - ((coords->coords >> 4) * 4);
|
||||
return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) - ((coords->size >> 4) * 4);
|
||||
case BATTLER_COORD_ATTR_RIGHT:
|
||||
return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) + ((coords->coords >> 4) * 4);
|
||||
return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) + ((coords->size >> 4) * 4);
|
||||
case BATTLER_COORD_ATTR_TOP:
|
||||
return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) - ((coords->coords & 0xf) * 4);
|
||||
return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) - ((coords->size & 0xf) * 4);
|
||||
case BATTLER_COORD_ATTR_BOTTOM:
|
||||
return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) + ((coords->coords & 0xf) * 4);
|
||||
return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) + ((coords->size & 0xf) * 4);
|
||||
case BATTLER_COORD_ATTR_RAW_BOTTOM:
|
||||
ret = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 31;
|
||||
return ret - coords->y_offset;
|
||||
|
||||
@@ -1301,7 +1301,7 @@ static void LinkOpponentHandleDrawTrainerPic(void)
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
xPos,
|
||||
(8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40,
|
||||
(8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40,
|
||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
|
||||
@@ -1324,7 +1324,7 @@ static void LinkOpponentHandleTrainerSlide(void)
|
||||
|
||||
DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, 176, (8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40, 0x1E);
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, 176, (8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40, 0x1E);
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 96;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.x += 32;
|
||||
|
||||
@@ -1143,7 +1143,7 @@ static void LinkPartnerHandleDrawTrainerPic(void)
|
||||
|
||||
DecompressTrainerBackPic(trainerPicId, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, (8 - gTrainerBackPicCoords[trainerPicId].coords) * 4 + 80, GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80, GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
|
||||
|
||||
@@ -1292,7 +1292,7 @@ static void OpponentHandleDrawTrainerPic(void)
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
xPos,
|
||||
(8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40,
|
||||
(8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40,
|
||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
|
||||
@@ -1362,7 +1362,7 @@ static void OpponentHandleTrainerSlide(void)
|
||||
|
||||
DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, 176, (8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40, 0x1E);
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, 176, (8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40, 0x1E);
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 96;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.x += 32;
|
||||
|
||||
@@ -2291,18 +2291,18 @@ static void PlayerHandleDrawTrainerPic(void)
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gPartnerTrainerId != TRAINER_STEVEN_PARTNER)
|
||||
{
|
||||
xPos = 90;
|
||||
yPos = (8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 80;
|
||||
yPos = (8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 80;
|
||||
}
|
||||
else
|
||||
{
|
||||
yPos = (8 - gTrainerBackPicCoords[trainerPicId].coords) * 4 + 80;
|
||||
yPos = (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
xPos = 80;
|
||||
yPos = (8 - gTrainerBackPicCoords[trainerPicId].coords) * 4 + 80;
|
||||
yPos = (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80;
|
||||
}
|
||||
|
||||
// Use front pic table for any tag battles unless your partner is Steven.
|
||||
@@ -2365,7 +2365,7 @@ static void PlayerHandleTrainerSlide(void)
|
||||
|
||||
DecompressTrainerBackPic(trainerPicId, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, 80, (8 - gTrainerBackPicCoords[trainerPicId].coords) * 4 + 80, 30);
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, 80, (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80, 30);
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -96;
|
||||
|
||||
@@ -1308,13 +1308,13 @@ static void PlayerPartnerHandleDrawTrainerPic(void)
|
||||
{
|
||||
trainerPicId = TRAINER_BACK_PIC_STEVEN;
|
||||
xPos = 90;
|
||||
yPos = (8 - gTrainerBackPicCoords[trainerPicId].coords) * 4 + 80;
|
||||
yPos = (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80;
|
||||
}
|
||||
else
|
||||
{
|
||||
trainerPicId = GetFrontierTrainerFrontSpriteId(gPartnerTrainerId);
|
||||
xPos = 32;
|
||||
yPos = (8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 80;
|
||||
yPos = (8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 80;
|
||||
}
|
||||
|
||||
// Use back pic only if the partner is Steven
|
||||
|
||||
@@ -1248,7 +1248,7 @@ static void RecordedOpponentHandleDrawTrainerPic(void)
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
xPos,
|
||||
(8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40,
|
||||
(8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40,
|
||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
|
||||
|
||||
@@ -1217,18 +1217,18 @@ static void RecordedPlayerHandleDrawTrainerPic(void)
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
|
||||
{
|
||||
xPos = 90;
|
||||
yPos = (8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 80;
|
||||
yPos = (8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 80;
|
||||
}
|
||||
else
|
||||
{
|
||||
yPos = (8 - gTrainerBackPicCoords[trainerPicId].coords) * 4 + 80;
|
||||
yPos = (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
xPos = 80;
|
||||
yPos = (8 - gTrainerBackPicCoords[trainerPicId].coords) * 4 + 80;
|
||||
yPos = (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80;
|
||||
}
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
|
||||
|
||||
@@ -359,7 +359,7 @@ static void SafariHandleDrawTrainerPic(void)
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
|
||||
&gMultiuseSpriteTemplate,
|
||||
80,
|
||||
(8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].coords) * 4 + 80,
|
||||
(8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80,
|
||||
30);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
|
||||
|
||||
@@ -1036,7 +1036,7 @@ static void WallyHandleDrawTrainerPic(void)
|
||||
SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_WALLY, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
80,
|
||||
80 + 4 * (8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_WALLY].coords),
|
||||
80 + 4 * (8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_WALLY].size),
|
||||
30);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
|
||||
@@ -1051,7 +1051,7 @@ static void WallyHandleTrainerSlide(void)
|
||||
SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_WALLY, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
80,
|
||||
80 + 4 * (8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_WALLY].coords),
|
||||
80 + 4 * (8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_WALLY].size),
|
||||
30);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -96;
|
||||
|
||||
+8
-3
@@ -5847,17 +5847,22 @@ static void sub_8194220(u8 taskId)
|
||||
gTasks[i].data[0] = 0;
|
||||
}
|
||||
ScanlineEffect_Clear();
|
||||
for (i = 0; i < 91; i++)
|
||||
|
||||
i = 0;
|
||||
while (i < 91)
|
||||
{
|
||||
gScanlineEffectRegBuffers[0][i] = 0x1F0A;
|
||||
gScanlineEffectRegBuffers[1][i] = 0x1F0A;
|
||||
i++;
|
||||
}
|
||||
for (i = 91; i < 160; i++)
|
||||
|
||||
while (i < 160)
|
||||
{
|
||||
asm(""::"r"(i));
|
||||
gScanlineEffectRegBuffers[0][i] = 0x1F09;
|
||||
gScanlineEffectRegBuffers[1][i] = 0x1F09;
|
||||
i++;
|
||||
}
|
||||
|
||||
ScanlineEffect_SetParams(gUnknown_0860CF44);
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
|
||||
+12
-6
@@ -656,16 +656,19 @@ static void CB2_InitBattleInternal(void)
|
||||
gBattle_WIN0V = 0x5051;
|
||||
ScanlineEffect_Clear();
|
||||
|
||||
for (i = 0; i < 80; i++)
|
||||
i = 0;
|
||||
while (i < 80)
|
||||
{
|
||||
gScanlineEffectRegBuffers[0][i] = 0xF0;
|
||||
gScanlineEffectRegBuffers[1][i] = 0xF0;
|
||||
i++;
|
||||
}
|
||||
for (i = 80; i < 160; i++)
|
||||
|
||||
while (i < 160)
|
||||
{
|
||||
asm(""::"r"(i));
|
||||
gScanlineEffectRegBuffers[0][i] = 0xFF10;
|
||||
gScanlineEffectRegBuffers[1][i] = 0xFF10;
|
||||
i++;
|
||||
}
|
||||
|
||||
ScanlineEffect_SetParams(sIntroScanlineParams16Bit);
|
||||
@@ -2222,16 +2225,19 @@ void sub_8038D64(void)
|
||||
gBattle_WIN0V = 0x5051;
|
||||
ScanlineEffect_Clear();
|
||||
|
||||
for (i = 0; i < 80; i++)
|
||||
i = 0;
|
||||
while (i < 80)
|
||||
{
|
||||
gScanlineEffectRegBuffers[0][i] = 0xF0;
|
||||
gScanlineEffectRegBuffers[1][i] = 0xF0;
|
||||
i++;
|
||||
}
|
||||
for (i = 80; i < 160; i++)
|
||||
|
||||
while (i < 160)
|
||||
{
|
||||
asm(""::"r"(i)); // Needed to stop the compiler from optimizing out the loop counter.
|
||||
gScanlineEffectRegBuffers[0][i] = 0xFF10;
|
||||
gScanlineEffectRegBuffers[1][i] = 0xFF10;
|
||||
i++;
|
||||
}
|
||||
|
||||
ResetPaletteFade();
|
||||
|
||||
+1
-1
@@ -1557,7 +1557,7 @@ static bool32 sub_80B1D94(s32 rematchTableId)
|
||||
if (rematchTableId >= REMATCH_ELITE_FOUR_ENTRIES)
|
||||
return TRUE;
|
||||
else if (rematchTableId == REMATCH_WALLY_ENTRY)
|
||||
return (FlagGet(FLAG_0x07E) == FALSE);
|
||||
return (FlagGet(FLAG_DEFEATED_WALLY_VICTORY_ROAD) == FALSE);
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
+2
-2
@@ -3158,10 +3158,10 @@ void sub_81653CC(void)
|
||||
{
|
||||
if (gSaveBlock2Ptr->frontier.field_CA8 == 1)
|
||||
sub_80F01B8();
|
||||
if (FlagGet(FLAG_0x077) == TRUE)
|
||||
if (FlagGet(FLAG_CANCEL_BATTLE_ROOM_CHALLENGE) == TRUE)
|
||||
{
|
||||
sub_80F01B8();
|
||||
FlagClear(FLAG_0x077);
|
||||
FlagClear(FLAG_CANCEL_BATTLE_ROOM_CHALLENGE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+14
-14
@@ -176,7 +176,7 @@ EWRAM_DATA s16 gUnknown_02039F08[4] = {0};
|
||||
EWRAM_DATA s16 gUnknown_02039F10[4] = {0};
|
||||
EWRAM_DATA s16 gUnknown_02039F18[4] = {0};
|
||||
EWRAM_DATA u8 gContestFinalStandings[4] = {0};
|
||||
EWRAM_DATA u8 gUnknown_02039F24 = 0;
|
||||
EWRAM_DATA u8 gContestMonPartyIndex = 0;
|
||||
EWRAM_DATA u8 gContestPlayerMonIndex = 0;
|
||||
EWRAM_DATA u8 gUnknown_02039F26[4] = {0};
|
||||
EWRAM_DATA u8 gIsLinkContest = 0;
|
||||
@@ -185,8 +185,8 @@ EWRAM_DATA u8 gIsLinkContest = 0;
|
||||
EWRAM_DATA u8 gUnknown_02039F2B = 0;
|
||||
EWRAM_DATA u16 gSpecialVar_ContestCategory = 0;
|
||||
EWRAM_DATA u16 gSpecialVar_ContestRank = 0;
|
||||
EWRAM_DATA u8 gUnknown_02039F30 = 0;
|
||||
EWRAM_DATA u8 gUnknown_02039F31 = 0;
|
||||
EWRAM_DATA u8 gNumLinkContestPlayers = 0;
|
||||
EWRAM_DATA u8 gHighestRibbonRank = 0;
|
||||
EWRAM_DATA struct ContestResources * gContestResources = NULL;
|
||||
EWRAM_DATA u8 sContestBgCopyFlags = 0;
|
||||
EWRAM_DATA struct ContestWinner gUnknown_02039F3C = {0};
|
||||
@@ -932,9 +932,9 @@ void sub_80D8A88(u8 taskId)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i + gUnknown_02039F30 < 4; i++)
|
||||
for (i = 0; i + gNumLinkContestPlayers < 4; i++)
|
||||
{
|
||||
gContestResources->field_4[gUnknown_02039F30 + i].currMove = sub_80DB8B8(gUnknown_02039F30 + i);
|
||||
gContestResources->field_4[gNumLinkContestPlayers + i].currMove = sub_80DB8B8(gNumLinkContestPlayers + i);
|
||||
}
|
||||
}
|
||||
gTasks[taskId].data[0] = 0;
|
||||
@@ -2110,7 +2110,7 @@ void sub_80DAB8C(u8 contestType, u8 rank)
|
||||
opponentsCount--;
|
||||
}
|
||||
|
||||
sub_80DA8C8(gUnknown_02039F24);
|
||||
sub_80DA8C8(gContestMonPartyIndex);
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
@@ -2121,7 +2121,7 @@ void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame)
|
||||
u8 opponents[100];
|
||||
const u8 * r6;
|
||||
|
||||
if (gUnknown_02039F30 == 4)
|
||||
if (gNumLinkContestPlayers == 4)
|
||||
return;
|
||||
|
||||
r6 = gUnknown_085898A4;
|
||||
@@ -2151,14 +2151,14 @@ void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame)
|
||||
opponents[opponentsCount++] = i;
|
||||
}
|
||||
opponents[opponentsCount] = 0xFF;
|
||||
for (i = 0; i < 4 - gUnknown_02039F30; i++)
|
||||
for (i = 0; i < 4 - gNumLinkContestPlayers; i++)
|
||||
{
|
||||
u16 rnd = sub_80F903C() % opponentsCount;
|
||||
s32 j;
|
||||
|
||||
gContestMons[gUnknown_02039F30 + i] = gContestOpponents[opponents[rnd]];
|
||||
sub_80DF9D4(gContestMons[gUnknown_02039F30 + i].trainerName);
|
||||
sub_80DF9E0(gContestMons[gUnknown_02039F30 + i].nickname, GAME_LANGUAGE);
|
||||
gContestMons[gNumLinkContestPlayers + i] = gContestOpponents[opponents[rnd]];
|
||||
sub_80DF9D4(gContestMons[gNumLinkContestPlayers + i].trainerName);
|
||||
sub_80DF9E0(gContestMons[gNumLinkContestPlayers + i].nickname, GAME_LANGUAGE);
|
||||
for (j = rnd; opponents[j] != 0xFF; j++)
|
||||
opponents[j] = opponents[j + 1];
|
||||
opponentsCount--;
|
||||
@@ -2178,7 +2178,7 @@ NAKED void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame)
|
||||
"\tlsls r1, 24\n"
|
||||
"\tlsrs r2, r1, 24\n"
|
||||
"\tmovs r7, 0\n"
|
||||
"\tldr r0, =gUnknown_02039F30\n"
|
||||
"\tldr r0, =gNumLinkContestPlayers\n"
|
||||
"\tldrb r1, [r0]\n"
|
||||
"\tmov r9, r0\n"
|
||||
"\tcmp r1, 0x4\n"
|
||||
@@ -2471,12 +2471,12 @@ u16 sub_80DAFE0(u8 who, u8 contestCategory)
|
||||
return statMain + (statSub1 + statSub2 + gContestMons[who].sheen) / 2;
|
||||
}
|
||||
|
||||
void sub_80DB09C(u8 a0)
|
||||
void sub_80DB09C(u8 contestCategory)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
gContestMonConditions[i] = sub_80DAFE0(i, a0);
|
||||
gContestMonConditions[i] = sub_80DAFE0(i, contestCategory);
|
||||
}
|
||||
|
||||
u8 sub_80DB0C4(void)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,548 @@
|
||||
#include "global.h"
|
||||
#include "contest.h"
|
||||
#include "decompress.h"
|
||||
#include "event_data.h"
|
||||
#include "link.h"
|
||||
#include "pokemon.h"
|
||||
#include "random.h"
|
||||
#include "task.h"
|
||||
#include "constants/flags.h"
|
||||
|
||||
static void sub_80FC5C0(u8);
|
||||
static void sub_80FC5DC(u8);
|
||||
|
||||
bool32 sub_80FC4F4(void *src, u16 size)
|
||||
{
|
||||
memcpy(gDecompressionBuffer, src, size);
|
||||
if (SendBlock(bitmask_all_link_players_but_self(), gDecompressionBuffer, size))
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_80FC530(u8 arg0)
|
||||
{
|
||||
u8 mask = (1 << arg0);
|
||||
if (!(GetBlockReceivedStatus() & mask))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
ResetBlockReceivedFlag(arg0);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_80FC55C(void)
|
||||
{
|
||||
if (GetBlockReceivedStatus() == sub_800A9D8())
|
||||
{
|
||||
ResetBlockReceivedFlags();
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80FC580(u8 taskId)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
gBlockRecvBuffer[i][0] = 0xFF;
|
||||
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].func = sub_80FC5C0;
|
||||
}
|
||||
|
||||
static void sub_80FC5C0(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].func = sub_80FC5DC;
|
||||
}
|
||||
|
||||
static void sub_80FC5DC(u8 taskId)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!gReceivedRemoteLinkPlayers)
|
||||
return;
|
||||
|
||||
gContestPlayerMonIndex = GetMultiplayerId();
|
||||
gNumLinkContestPlayers = GetLinkPlayerCount();
|
||||
gIsLinkContest = 1;
|
||||
if (gWirelessCommType == 1)
|
||||
gIsLinkContest = 3;
|
||||
|
||||
for (i = 0; i < gNumLinkContestPlayers && (u32)(gLinkPlayers[i].version & 0xFF) - 1 > VERSION_RUBY - 1; i++)
|
||||
;
|
||||
|
||||
if (i < gNumLinkContestPlayers)
|
||||
gIsLinkContest |= 0x4;
|
||||
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
}
|
||||
|
||||
bool32 sub_80FC670(s16 *arg0)
|
||||
{
|
||||
if (gIsLinkContest & 0x4)
|
||||
return TRUE;
|
||||
|
||||
switch (*arg0)
|
||||
{
|
||||
case 0:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
sub_800ADF8();
|
||||
(*arg0)++;
|
||||
}
|
||||
return FALSE;
|
||||
case 1:
|
||||
(*arg0)++;
|
||||
return FALSE;
|
||||
default:
|
||||
if (IsLinkTaskFinished() != TRUE)
|
||||
return FALSE;
|
||||
else
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80FC6BC(u8 taskId)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!sub_80FC670(&gTasks[taskId].data[12]))
|
||||
return;
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 0:
|
||||
if (GetMultiplayerId() == 0)
|
||||
{
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
memcpy(gBlockSendBuffer, &gContestMons[gContestPlayerMonIndex], sizeof(struct ContestPokemon));
|
||||
gTasks[taskId].data[0] = 10;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(gBlockSendBuffer, &gContestMons[gContestPlayerMonIndex], sizeof(struct ContestPokemon));
|
||||
gTasks[taskId].data[0] = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
{
|
||||
for (i = 0; i < gNumLinkContestPlayers; i++)
|
||||
{
|
||||
memcpy(&gContestMons[i], gBlockRecvBuffer[i], sizeof(struct ContestPokemon));
|
||||
sub_80DFA08(&gContestMons[i], gLinkPlayers[i].language);
|
||||
}
|
||||
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if (++gTasks[taskId].data[11] > 300)
|
||||
{
|
||||
sub_800A4D8(2);
|
||||
gTasks[taskId].data[0] = 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[11] = 0;
|
||||
gTasks[taskId].data[12] = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80FC804(u8 taskId)
|
||||
{
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 0:
|
||||
if (GetMultiplayerId() == 0)
|
||||
{
|
||||
if (IsLinkTaskFinished() && sub_80FC4F4(&gRngValue, sizeof(gRngValue)) == TRUE)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC530(0))
|
||||
{
|
||||
memcpy(&gRngValue, gBlockRecvBuffer[0], sizeof(gRngValue));
|
||||
memcpy(&gContestRngValue, gBlockRecvBuffer[0], sizeof(gContestRngValue));
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80FC894(u8 taskId)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!sub_80FC670(&gTasks[taskId].data[12]))
|
||||
return;
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 0:
|
||||
gBlockSendBuffer[0] = gTasks[taskId].data[9];
|
||||
if (GetMultiplayerId() == 0)
|
||||
{
|
||||
if (IsLinkTaskFinished())
|
||||
gTasks[taskId].data[0] = 10;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
{
|
||||
for (i = 0; i < gNumLinkContestPlayers; i++)
|
||||
gTasks[taskId].data[i + 1] = gBlockRecvBuffer[i][0];
|
||||
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if (++gTasks[taskId].data[11] > 10)
|
||||
{
|
||||
sub_800A4D8(2);
|
||||
gTasks[taskId].data[0] = 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[11] = 0;
|
||||
gTasks[taskId].data[12] = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80FC998(u8 taskId)
|
||||
{
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 0:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(&gContestPlayerMonIndex, sizeof(gContestPlayerMonIndex)) == TRUE)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80FC9F8(u8 taskId)
|
||||
{
|
||||
int i;
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 0:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(&gContestResources->field_4[gContestPlayerMonIndex].currMove, sizeof(gContestResources->field_4[gContestPlayerMonIndex].currMove)) == TRUE)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
{
|
||||
for (i = 0; i < gNumLinkContestPlayers; i++)
|
||||
gContestResources->field_4[i].currMove = gBlockRecvBuffer[i][0];
|
||||
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80FCACC(u8 taskId)
|
||||
{
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 0:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(gUnknown_02039F08, sizeof(gUnknown_02039F08)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
{
|
||||
memcpy(gUnknown_02039F08, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gUnknown_02039F08));
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case 5:
|
||||
case 8:
|
||||
case 11:
|
||||
if (gTasks[taskId].data[1]++ > 10)
|
||||
{
|
||||
gTasks[taskId].data[1] = 0;
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(gUnknown_02039F10, sizeof(gUnknown_02039F10)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (sub_80FC55C())
|
||||
{
|
||||
memcpy(gUnknown_02039F10, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gUnknown_02039F10));
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(gUnknown_02039F18, sizeof(gUnknown_02039F18)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if (sub_80FC55C())
|
||||
{
|
||||
memcpy(gUnknown_02039F18, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gUnknown_02039F18));
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(gContestFinalStandings, sizeof(gContestFinalStandings)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if (sub_80FC55C())
|
||||
{
|
||||
memcpy(gContestFinalStandings, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gContestFinalStandings));
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80FCC88(u8 taskId)
|
||||
{
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 0:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(gContestResources->field_4, 4 * sizeof(struct ContestantStatus)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
{
|
||||
memcpy(gContestResources->field_4, gBlockRecvBuffer[gUnknown_02039F2B], 4 * sizeof(struct ContestantStatus));
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case 5:
|
||||
case 8:
|
||||
case 11:
|
||||
if (gTasks[taskId].data[1]++ > 10)
|
||||
{
|
||||
gTasks[taskId].data[1] = 0;
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(gContestResources->field_8, sizeof(struct UnknownContestStruct7)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (sub_80FC55C())
|
||||
{
|
||||
memcpy(gContestResources->field_8, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(struct UnknownContestStruct7));
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(gContestResources->field_10, sizeof(struct UnknownContestStruct5)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if (sub_80FC55C())
|
||||
{
|
||||
memcpy(gContestResources->field_10, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(struct UnknownContestStruct5));
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(gUnknown_02039F26, sizeof(gUnknown_02039F26)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if (sub_80FC55C())
|
||||
{
|
||||
memcpy(gUnknown_02039F26, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gUnknown_02039F26));
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80FCE48(u8 taskId)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!sub_80FC670(&gTasks[taskId].data[12]))
|
||||
return;
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 0:
|
||||
gBlockSendBuffer[0] = 0x6E;
|
||||
if (GetMultiplayerId() == 0)
|
||||
{
|
||||
if (IsLinkTaskFinished())
|
||||
gTasks[taskId].data[0] = 10;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
{
|
||||
for (i = 0; i < 4; i++)
|
||||
gTasks[taskId].data[i + 5] = gBlockRecvBuffer[i][0];
|
||||
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if (++gTasks[taskId].data[11] > 10)
|
||||
{
|
||||
sub_800A4D8(2);
|
||||
gTasks[taskId].data[0] = 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[11] = 0;
|
||||
gTasks[taskId].data[12] = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80FCF40(u8 taskId)
|
||||
{
|
||||
if (!sub_80FC670(&gTasks[taskId].data[12]))
|
||||
return;
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 0:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(gContestMonConditions, sizeof(gContestMonConditions)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
{
|
||||
memcpy(gContestMonConditions, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gContestMonConditions));
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[12] = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80FCFD0(u8 taskId)
|
||||
{
|
||||
if (!sub_80FC670(&gTasks[taskId].data[12]))
|
||||
return;
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 0:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(gUnknown_02039F26, sizeof(gUnknown_02039F26)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
{
|
||||
memcpy(gUnknown_02039F26, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gUnknown_02039F26));
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[12] = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,331 @@
|
||||
#include "global.h"
|
||||
#include "contest.h"
|
||||
#include "event_data.h"
|
||||
#include "link.h"
|
||||
#include "random.h"
|
||||
#include "task.h"
|
||||
|
||||
static void sub_81D9F14(u8);
|
||||
static void sub_81D9F30(u8);
|
||||
static void sub_81D9F4C(u8);
|
||||
static void sub_81D9F68(u8);
|
||||
static void sub_81DA10C(u8);
|
||||
static void sub_81DA138(u8);
|
||||
static void sub_81DA160(u8);
|
||||
static void sub_81DA244(u8);
|
||||
static void sub_81DA2E8(u8);
|
||||
static void sub_81DA3B8(u8);
|
||||
static void sub_81DA488(u8);
|
||||
|
||||
void sub_81D9DE4(u8 taskId)
|
||||
{
|
||||
int gameCleared;
|
||||
|
||||
switch (gTasks[taskId].data[9])
|
||||
{
|
||||
case 0:
|
||||
gHighestRibbonRank = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_COOL_RIBBON);
|
||||
break;
|
||||
case 1:
|
||||
gHighestRibbonRank = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_BEAUTY_RIBBON);
|
||||
break;
|
||||
case 2:
|
||||
gHighestRibbonRank = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_CUTE_RIBBON);
|
||||
break;
|
||||
case 3:
|
||||
gHighestRibbonRank = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_SMART_RIBBON);
|
||||
break;
|
||||
case 4:
|
||||
default:
|
||||
gHighestRibbonRank = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_TOUGH_RIBBON);
|
||||
break;
|
||||
}
|
||||
|
||||
gContestMons[gContestPlayerMonIndex].unk2C[0] = gHighestRibbonRank;
|
||||
gameCleared = FlagGet(FLAG_SYS_GAME_CLEAR) > 0;
|
||||
gContestMons[gContestPlayerMonIndex].unk2C[1] = gameCleared;
|
||||
SetTaskFuncWithFollowupFunc(taskId, sub_81DA160, sub_81D9F14);
|
||||
}
|
||||
|
||||
static void sub_81D9F14(u8 taskId)
|
||||
{
|
||||
SetTaskFuncWithFollowupFunc(taskId, sub_81DA244, sub_81D9F30);
|
||||
}
|
||||
|
||||
static void sub_81D9F30(u8 taskId)
|
||||
{
|
||||
SetTaskFuncWithFollowupFunc(taskId, sub_81DA2E8, sub_81D9F4C);
|
||||
}
|
||||
|
||||
static void sub_81D9F4C(u8 taskId)
|
||||
{
|
||||
SetTaskFuncWithFollowupFunc(taskId, sub_81DA3B8, sub_81D9F68);
|
||||
}
|
||||
|
||||
static void sub_81D9F68(u8 taskId)
|
||||
{
|
||||
u8 i;
|
||||
u8 rank;
|
||||
int gameCleared;
|
||||
u8 data1[4];
|
||||
u8 data2[4];
|
||||
|
||||
memset(data1, 0, sizeof(data1));
|
||||
memset(data2, 0, sizeof(data2));
|
||||
|
||||
for (i = 0; i < gNumLinkContestPlayers; i++)
|
||||
data1[i] = gTasks[taskId].data[i + 1];
|
||||
|
||||
i = 0;
|
||||
if (i < gNumLinkContestPlayers)
|
||||
{
|
||||
while (++i < gNumLinkContestPlayers)
|
||||
{
|
||||
if (data1[0] != data1[i])
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (i == gNumLinkContestPlayers)
|
||||
gSpecialVar_0x8004 = 0;
|
||||
else
|
||||
gSpecialVar_0x8004 = 1;
|
||||
|
||||
for (i = 0; i < gNumLinkContestPlayers; i++)
|
||||
data2[i] = gTasks[taskId].data[i + 5];
|
||||
|
||||
if (gNumLinkContestPlayers != 4 && GetMultiplayerId() == 0)
|
||||
{
|
||||
rank = gContestMons[0].unk2C[0];
|
||||
for (i = 1; i < gNumLinkContestPlayers; i++)
|
||||
{
|
||||
if (rank < gContestMons[i].unk2C[0])
|
||||
rank = gContestMons[i].unk2C[0];
|
||||
}
|
||||
|
||||
if (rank)
|
||||
rank--;
|
||||
|
||||
gameCleared = 1;
|
||||
for (i = 0; i < gNumLinkContestPlayers; i++)
|
||||
{
|
||||
if (!gContestMons[i].unk2C[1])
|
||||
{
|
||||
gameCleared = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
sub_80DACBC(data1[0], rank, gameCleared);
|
||||
}
|
||||
|
||||
gUnknown_02039F2B = sub_80F86E0(data2);
|
||||
if (gNumLinkContestPlayers < 4)
|
||||
SetTaskFuncWithFollowupFunc(taskId, sub_81DA488, sub_81DA10C);
|
||||
else
|
||||
gTasks[taskId].func = sub_81DA10C;
|
||||
}
|
||||
|
||||
static void sub_81DA10C(u8 taskId)
|
||||
{
|
||||
sub_80DB09C(gSpecialVar_ContestCategory);
|
||||
SetTaskFuncWithFollowupFunc(taskId, sub_80FCF40, sub_81DA138);
|
||||
}
|
||||
|
||||
static void sub_81DA138(u8 taskId)
|
||||
{
|
||||
sub_80DCE58(0);
|
||||
SetTaskFuncWithFollowupFunc(taskId, sub_80FCFD0, sub_80F8714);
|
||||
}
|
||||
|
||||
static void sub_81DA160(u8 taskId)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!sub_80FC670(&gTasks[taskId].data[12]))
|
||||
return;
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[12] = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
case 0:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(&gContestMons[gContestPlayerMonIndex], sizeof(struct ContestPokemon)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
{
|
||||
for (i = 0; i < gNumLinkContestPlayers; i++)
|
||||
{
|
||||
memcpy(&gContestMons[i], gBlockRecvBuffer[i], sizeof(struct ContestPokemon));
|
||||
sub_80DFA08(&gContestMons[i], gLinkPlayers[i].language);
|
||||
}
|
||||
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81DA244(u8 taskId)
|
||||
{
|
||||
if (!sub_80FC670(&gTasks[taskId].data[12]))
|
||||
return;
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[12] = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
case 0:
|
||||
if (GetMultiplayerId() == 0)
|
||||
{
|
||||
if (!IsLinkTaskFinished())
|
||||
return;
|
||||
|
||||
if (sub_80FC4F4(&gRngValue, sizeof(gRngValue)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC530(0))
|
||||
{
|
||||
memcpy(&gRngValue, gBlockRecvBuffer[0], sizeof(gRngValue));
|
||||
memcpy(&gContestRngValue, gBlockRecvBuffer[0], sizeof(gContestRngValue));
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81DA2E8(u8 taskId)
|
||||
{
|
||||
int i;
|
||||
u16 data[4];
|
||||
u16 var0;
|
||||
|
||||
if (!sub_80FC670(&gTasks[taskId].data[12]))
|
||||
return;
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[12] = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
case 0:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
var0 = 0x6E;
|
||||
if (sub_80FC4F4(&var0, sizeof(var0)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
{
|
||||
for (i = 0; i < gNumLinkContestPlayers; i++)
|
||||
{
|
||||
data[i] = gBlockRecvBuffer[i][0];
|
||||
gTasks[taskId].data[i + 5] = data[i];
|
||||
}
|
||||
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81DA3B8(u8 taskId)
|
||||
{
|
||||
int i;
|
||||
u16 data[4];
|
||||
u16 var0;
|
||||
|
||||
if (!sub_80FC670(&gTasks[taskId].data[12]))
|
||||
return;
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[12] = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
case 0:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
var0 = gTasks[taskId].data[9];
|
||||
if (sub_80FC4F4(&var0, sizeof(var0)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
{
|
||||
for (i = 0; i < gNumLinkContestPlayers; i++)
|
||||
{
|
||||
data[i] = gBlockRecvBuffer[i][0];
|
||||
gTasks[taskId].data[i + 1] = data[i];
|
||||
}
|
||||
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81DA488(u8 taskId)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!sub_80FC670(&gTasks[taskId].data[12]))
|
||||
return;
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[12] = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
case 0:
|
||||
if (GetMultiplayerId() == 0)
|
||||
{
|
||||
if (!IsLinkTaskFinished())
|
||||
return;
|
||||
|
||||
if (sub_80FC4F4(&gContestMons[gNumLinkContestPlayers], (4 - gNumLinkContestPlayers) * sizeof(struct ContestPokemon)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC530(0))
|
||||
{
|
||||
memcpy(&gContestMons[gNumLinkContestPlayers], gBlockRecvBuffer[0], (4 - gNumLinkContestPlayers) * sizeof(struct ContestPokemon));
|
||||
for (i = gNumLinkContestPlayers; i < 4; i++)
|
||||
sub_80DFA08(&gContestMons[i], gLinkPlayers[0].language);
|
||||
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -20,9 +20,6 @@
|
||||
#include "window.h"
|
||||
#include "constants/rgb.h"
|
||||
|
||||
extern u8 gUnknown_02039F5C;
|
||||
extern u8 gUnknown_02039F5D;
|
||||
|
||||
extern u16 (*gUnknown_03006190)[][32];
|
||||
extern struct ContestWinner *gUnknown_030061C0;
|
||||
extern u16 *gContestPaintingMonPalette;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,13 +1,13 @@
|
||||
const struct MonCoords gTrainerBackPicCoords[] =
|
||||
{
|
||||
{8, 4},
|
||||
{8, 4},
|
||||
{8, 5},
|
||||
{8, 5},
|
||||
{8, 4},
|
||||
{8, 4},
|
||||
{8, 4},
|
||||
{8, 4},
|
||||
{.size = 8, .y_offset = 4},
|
||||
{.size = 8, .y_offset = 4},
|
||||
{.size = 8, .y_offset = 5},
|
||||
{.size = 8, .y_offset = 5},
|
||||
{.size = 8, .y_offset = 4},
|
||||
{.size = 8, .y_offset = 4},
|
||||
{.size = 8, .y_offset = 4},
|
||||
{.size = 8, .y_offset = 4},
|
||||
};
|
||||
|
||||
// this table goes functionally unused, since none of these pics are compressed
|
||||
|
||||
@@ -1,98 +1,98 @@
|
||||
const struct MonCoords gTrainerFrontPicCoords[] =
|
||||
{
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 2},
|
||||
{8, 2},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 2},
|
||||
{8, 1},
|
||||
{8, 2},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 2},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 2},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{8, 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 2},
|
||||
{.size = 8, .y_offset = 2},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 2},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 2},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 2},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 2},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
{.size = 8, .y_offset = 1},
|
||||
};
|
||||
|
||||
const struct CompressedSpriteSheet gTrainerFrontPicTable[] =
|
||||
|
||||
+5
-5
@@ -1629,7 +1629,7 @@ void sub_8128950(u8 taskId)
|
||||
void sub_81289D0(u8 taskId)
|
||||
{
|
||||
DisplayYesNoMenu();
|
||||
sub_8121F68(taskId, &gUnknown_085A72C4);
|
||||
DoYesNoFuncWithChoice(taskId, &gUnknown_085A72C4);
|
||||
}
|
||||
|
||||
void sub_81289F0(u8 taskId)
|
||||
@@ -1694,7 +1694,7 @@ void sub_8128AAC(u8 taskId)
|
||||
void sub_8128B80(u8 taskId)
|
||||
{
|
||||
DisplayYesNoMenu();
|
||||
sub_8121F68(taskId, &gUnknown_085A72CC);
|
||||
DoYesNoFuncWithChoice(taskId, &gUnknown_085A72CC);
|
||||
}
|
||||
|
||||
void sub_8128BA0(u8 taskId)
|
||||
@@ -2589,7 +2589,7 @@ void sub_812A0E8(u8 taskId)
|
||||
void sub_812A1A0(u8 taskId)
|
||||
{
|
||||
DisplayYesNoMenu();
|
||||
sub_8121F68(taskId, &gUnknown_085A7348);
|
||||
DoYesNoFuncWithChoice(taskId, &gUnknown_085A7348);
|
||||
}
|
||||
|
||||
void sub_812A1C0(u8 taskId)
|
||||
@@ -2602,7 +2602,7 @@ void sub_812A1C0(u8 taskId)
|
||||
void sub_812A1F0(u8 taskId)
|
||||
{
|
||||
DisplayYesNoMenu();
|
||||
sub_8121F68(taskId, &gUnknown_085A7350);
|
||||
DoYesNoFuncWithChoice(taskId, &gUnknown_085A7350);
|
||||
}
|
||||
|
||||
void sub_812A210(u8 taskId)
|
||||
@@ -2726,7 +2726,7 @@ void sub_812A3D4(u8 taskId)
|
||||
void sub_812A458(u8 taskId)
|
||||
{
|
||||
DisplayYesNoMenu();
|
||||
sub_8121F68(taskId, &gUnknown_085A741C);
|
||||
DoYesNoFuncWithChoice(taskId, &gUnknown_085A741C);
|
||||
}
|
||||
|
||||
void sub_812A478(u8 taskId)
|
||||
|
||||
+16
-16
@@ -45,7 +45,7 @@ void ClearTempFieldEventData(void)
|
||||
FlagClear(FLAG_SYS_ENC_DOWN_ITEM);
|
||||
FlagClear(FLAG_SYS_USE_STRENGTH);
|
||||
FlagClear(FLAG_SYS_CTRL_OBJ_DELETE);
|
||||
FlagClear(FLAG_0x880);
|
||||
FlagClear(FLAG_NURSE_UNION_ROOM_REMINDER);
|
||||
}
|
||||
|
||||
// Probably had different flag splits at one point.
|
||||
@@ -114,21 +114,21 @@ bool32 IsMysteryGiftEnabled(void)
|
||||
void sub_809D4D8(void)
|
||||
{
|
||||
FlagClear(FLAG_MYSTERY_EVENT_DONE);
|
||||
FlagClear(FLAG_0x1E5);
|
||||
FlagClear(FLAG_0x1E6);
|
||||
FlagClear(FLAG_0x1E7);
|
||||
FlagClear(FLAG_0x1E8);
|
||||
FlagClear(FLAG_0x1E9);
|
||||
FlagClear(FLAG_0x1EA);
|
||||
FlagClear(FLAG_0x1EB);
|
||||
FlagClear(FLAG_0x1EC);
|
||||
FlagClear(FLAG_0x1ED);
|
||||
FlagClear(FLAG_0x1EE);
|
||||
FlagClear(FLAG_0x1EF);
|
||||
FlagClear(FLAG_0x1F0);
|
||||
FlagClear(FLAG_0x1F1);
|
||||
FlagClear(FLAG_0x1F2);
|
||||
FlagClear(FLAG_0x1F3);
|
||||
FlagClear(FLAG_MYSTERY_EVENT_1);
|
||||
FlagClear(FLAG_MYSTERY_EVENT_2);
|
||||
FlagClear(FLAG_MYSTERY_EVENT_3);
|
||||
FlagClear(FLAG_MYSTERY_EVENT_4);
|
||||
FlagClear(FLAG_MYSTERY_EVENT_5);
|
||||
FlagClear(FLAG_MYSTERY_EVENT_6);
|
||||
FlagClear(FLAG_MYSTERY_EVENT_7);
|
||||
FlagClear(FLAG_MYSTERY_EVENT_8);
|
||||
FlagClear(FLAG_MYSTERY_EVENT_9);
|
||||
FlagClear(FLAG_MYSTERY_EVENT_10);
|
||||
FlagClear(FLAG_MYSTERY_EVENT_11);
|
||||
FlagClear(FLAG_MYSTERY_EVENT_12);
|
||||
FlagClear(FLAG_MYSTERY_EVENT_13);
|
||||
FlagClear(FLAG_MYSTERY_EVENT_14);
|
||||
FlagClear(FLAG_MYSTERY_EVENT_15);
|
||||
}
|
||||
|
||||
void sub_809D570(void)
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
#include "constants/maps.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
extern bool32 sub_8196034(void);
|
||||
extern bool32 TryStartMatchCall(void);
|
||||
|
||||
static EWRAM_DATA u8 sWildEncounterImmunitySteps = 0;
|
||||
static EWRAM_DATA u16 sPreviousPlayerMetatileBehavior = 0;
|
||||
@@ -600,7 +600,7 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior)
|
||||
ScriptContext1_SetupScript(SSTidalCorridor_EventScript_23C050);
|
||||
return TRUE;
|
||||
}
|
||||
if (sub_8196034())
|
||||
if (TryStartMatchCall())
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
#include "task.h"
|
||||
#include "text.h"
|
||||
|
||||
extern bool32 sub_8196094(void);
|
||||
extern void sub_8196080(u8*);
|
||||
extern bool32 IsMatchCallTaskActive(void);
|
||||
extern void StartMatchCallFromScript(u8*);
|
||||
|
||||
static EWRAM_DATA u8 sFieldMessageBoxMode = 0;
|
||||
|
||||
@@ -68,7 +68,7 @@ bool8 ShowFieldMessage(u8 *str)
|
||||
|
||||
void sub_8098214(u8 taskId)
|
||||
{
|
||||
if (!sub_8196094())
|
||||
if (!IsMatchCallTaskActive())
|
||||
{
|
||||
sFieldMessageBoxMode = 0;
|
||||
DestroyTask(taskId);
|
||||
@@ -81,7 +81,7 @@ bool8 sub_8098238(u8 *str)
|
||||
return FALSE;
|
||||
StringExpandPlaceholders(gStringVar4, str);
|
||||
CreateTask(sub_8098214, 0);
|
||||
sub_8196080(str);
|
||||
StartMatchCallFromScript(str);
|
||||
sFieldMessageBoxMode = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+10
-10
@@ -361,7 +361,7 @@ u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y)
|
||||
|
||||
bool32 is_tile_that_overrides_player_control(void)
|
||||
{
|
||||
if (FlagGet(FLAG_0x088))
|
||||
if (FlagGet(FLAG_ENABLE_FIRST_WALLY_POKENAV_CALL))
|
||||
{
|
||||
switch (gMapHeader.mapType)
|
||||
{
|
||||
@@ -388,7 +388,7 @@ bool32 is_tile_that_overrides_player_control(void)
|
||||
|
||||
bool32 sub_8138120(void)
|
||||
{
|
||||
if (FlagGet(FLAG_0x08A))
|
||||
if (FlagGet(FLAG_REGISTER_WINONA_POKENAV))
|
||||
{
|
||||
switch (gMapHeader.mapType)
|
||||
{
|
||||
@@ -415,7 +415,7 @@ bool32 sub_8138120(void)
|
||||
|
||||
bool32 sub_8138168(void)
|
||||
{
|
||||
if (FlagGet(FLAG_0x072))
|
||||
if (FlagGet(FLAG_SCOTT_CALL_NATIONAL_DEX))
|
||||
{
|
||||
switch (gMapHeader.mapType)
|
||||
{
|
||||
@@ -442,7 +442,7 @@ bool32 sub_8138168(void)
|
||||
|
||||
bool32 sub_81381B0(void)
|
||||
{
|
||||
if (FlagGet(FLAG_0x080))
|
||||
if (FlagGet(FLAG_ENABLE_ROXANNE_FIRST_CALL))
|
||||
{
|
||||
switch (gMapHeader.mapType)
|
||||
{
|
||||
@@ -469,7 +469,7 @@ bool32 sub_81381B0(void)
|
||||
|
||||
bool32 sub_81381F8(void)
|
||||
{
|
||||
if (FlagGet(FLAG_0x075))
|
||||
if (FlagGet(FLAG_DEFEATED_MAGMA_SPACE_CENTER))
|
||||
{
|
||||
switch (gMapHeader.mapType)
|
||||
{
|
||||
@@ -1201,7 +1201,7 @@ void EndLotteryCornerComputerEffect(void)
|
||||
void SetTrickHouseEndRoomFlag(void)
|
||||
{
|
||||
u16 *specVar = &gSpecialVar_0x8004;
|
||||
u16 flag = FLAG_0x1F5;
|
||||
u16 flag = FLAG_TRICK_HOUSE_END_ROOM;
|
||||
*specVar = flag;
|
||||
FlagSet(flag);
|
||||
}
|
||||
@@ -1209,7 +1209,7 @@ void SetTrickHouseEndRoomFlag(void)
|
||||
void ResetTrickHouseEndRoomFlag(void)
|
||||
{
|
||||
u16 *specVar = &gSpecialVar_0x8004;
|
||||
u16 flag = FLAG_0x1F5;
|
||||
u16 flag = FLAG_TRICK_HOUSE_END_ROOM;
|
||||
*specVar = flag;
|
||||
FlagClear(flag);
|
||||
}
|
||||
@@ -2111,7 +2111,7 @@ void sub_813A080(void)
|
||||
u16 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
|
||||
if (battleMode == FRONTIER_MODE_MULTIS && !FlagGet(FLAG_0x152))
|
||||
if (battleMode == FRONTIER_MODE_MULTIS && !FlagGet(FLAG_CHOSEN_MULTI_BATTLE_NPC_PARTNER))
|
||||
{
|
||||
gSpecialVar_0x8005 = 5;
|
||||
gSpecialVar_0x8006 = 4;
|
||||
@@ -3425,11 +3425,11 @@ void sub_813B2E4(void)
|
||||
u16 randomValue = Random();
|
||||
VarSet(VAR_0x4038, 0);
|
||||
|
||||
if (FlagGet(FLAG_0x1BE) == TRUE)
|
||||
if (FlagGet(FLAG_DEFEATED_KYOGRE) == TRUE)
|
||||
{
|
||||
VarSet(VAR_0x4037, (randomValue & 7) + 1);
|
||||
}
|
||||
else if (FlagGet(FLAG_0x1BF) == TRUE)
|
||||
else if (FlagGet(FLAG_DEFEATED_GROUDON) == TRUE)
|
||||
{
|
||||
VarSet(VAR_0x4037, (randomValue & 7) + 9);
|
||||
}
|
||||
|
||||
+1
-1
@@ -317,7 +317,7 @@ static void InitLocalLinkPlayer(void)
|
||||
gLocalLinkPlayer.version = gGameVersion + 0x4000;
|
||||
gLocalLinkPlayer.lp_field_2 = 0x8000;
|
||||
gLocalLinkPlayer.name[8] = IsNationalPokedexEnabled();
|
||||
if (FlagGet(FLAG_0x87F))
|
||||
if (FlagGet(FLAG_IS_CHAMPION))
|
||||
{
|
||||
gLocalLinkPlayer.name[8] |= 0x10;
|
||||
}
|
||||
|
||||
+1
-1
@@ -2140,7 +2140,7 @@ void sub_800DD94(struct UnkLinkRfuStruct_02022B14 *data, u8 r9, bool32 r2, s32 r
|
||||
data->unk_00.unk_00_4 = 0;
|
||||
data->unk_00.unk_00_5 = 0;
|
||||
data->unk_00.unk_00_6 = 0;
|
||||
data->unk_00.unk_00_7 = FlagGet(FLAG_0x87F);
|
||||
data->unk_00.unk_00_7 = FlagGet(FLAG_IS_CHAMPION);
|
||||
data->unk_00.unk_01_0 = IsNationalPokedexEnabled();
|
||||
data->unk_00.unk_01_1 = FlagGet(FLAG_SYS_GAME_CLEAR);
|
||||
}
|
||||
|
||||
+1968
-1226
File diff suppressed because it is too large
Load Diff
+236
-236
@@ -1,24 +1,24 @@
|
||||
#include "global.h"
|
||||
#include "bg.h"
|
||||
#include "window.h"
|
||||
#include "palette.h"
|
||||
#include "menu.h"
|
||||
#include "constants/songs.h"
|
||||
#include "main.h"
|
||||
#include "sound.h"
|
||||
#include "menu_helpers.h"
|
||||
#include "alloc.h"
|
||||
#include "task.h"
|
||||
#include "bg.h"
|
||||
#include "dma3.h"
|
||||
#include "string_util.h"
|
||||
#include "pokemon_icon.h"
|
||||
#include "constants/flags.h"
|
||||
#include "event_data.h"
|
||||
#include "pokedex.h"
|
||||
#include "region_map.h"
|
||||
#include "text_window.h"
|
||||
#include "strings.h"
|
||||
#include "graphics.h"
|
||||
#include "main.h"
|
||||
#include "menu.h"
|
||||
#include "menu_helpers.h"
|
||||
#include "palette.h"
|
||||
#include "pokedex.h"
|
||||
#include "pokemon_icon.h"
|
||||
#include "region_map.h"
|
||||
#include "sound.h"
|
||||
#include "string_util.h"
|
||||
#include "strings.h"
|
||||
#include "task.h"
|
||||
#include "text_window.h"
|
||||
#include "window.h"
|
||||
#include "constants/flags.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
#define DLG_WINDOW_PALETTE_NUM 15
|
||||
#define DLG_WINDOW_BASE_TILE_NUM 0x200
|
||||
@@ -50,11 +50,11 @@ struct Menu
|
||||
|
||||
static EWRAM_DATA u8 sStartMenuWindowId = 0;
|
||||
static EWRAM_DATA u8 sMapNamePopupWindowId = 0;
|
||||
static EWRAM_DATA struct Menu gUnknown_0203CD90 = {0};
|
||||
static EWRAM_DATA u16 gUnknown_0203CD9C = 0;
|
||||
static EWRAM_DATA u8 gUnknown_0203CD9E = 0;
|
||||
static EWRAM_DATA u8 gUnknown_0203CD9F = 0;
|
||||
static EWRAM_DATA u8 gUnknown_0203CDA0 = 0;
|
||||
static EWRAM_DATA struct Menu sMenu = {0};
|
||||
static EWRAM_DATA u16 sTileNum = 0;
|
||||
static EWRAM_DATA u8 sPaletteNum = 0;
|
||||
static EWRAM_DATA u8 sYesNoWindowId = 0;
|
||||
static EWRAM_DATA u8 sWindowId = 0;
|
||||
static EWRAM_DATA u16 sFiller = 0; // needed to align
|
||||
static EWRAM_DATA bool8 gUnknown_0203CDA4[4] = {FALSE};
|
||||
static EWRAM_DATA u16 gUnknown_0203CDA8 = 0;
|
||||
@@ -549,10 +549,10 @@ void sub_8197AE8(bool8 copyToVram)
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
}
|
||||
|
||||
void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a3, u8 a4)
|
||||
void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 tileNum, u8 paletteNum)
|
||||
{
|
||||
gUnknown_0203CD9C = a3;
|
||||
gUnknown_0203CD9E = a4;
|
||||
sTileNum = tileNum;
|
||||
sPaletteNum = paletteNum;
|
||||
CallWindowFunction(windowId, sub_8197BB4);
|
||||
FillWindowPixelBuffer(windowId, 0x11);
|
||||
PutWindowTilemap(windowId);
|
||||
@@ -560,10 +560,10 @@ void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a3, u8 a4)
|
||||
CopyWindowToVram(windowId, 3);
|
||||
}
|
||||
|
||||
void sub_8197B64(u8 windowId, bool8 copyToVram, u16 a3)
|
||||
void sub_8197B64(u8 windowId, bool8 copyToVram, u16 tileNum)
|
||||
{
|
||||
gUnknown_0203CD9C = a3;
|
||||
gUnknown_0203CD9E = GetWindowAttribute(windowId, WINDOW_PALETTE_NUM);
|
||||
sTileNum = tileNum;
|
||||
sPaletteNum = GetWindowAttribute(windowId, WINDOW_PALETTE_NUM);
|
||||
CallWindowFunction(windowId, sub_8197BB4);
|
||||
FillWindowPixelBuffer(windowId, 0x11);
|
||||
PutWindowTilemap(windowId);
|
||||
@@ -574,96 +574,96 @@ void sub_8197B64(u8 windowId, bool8 copyToVram, u16 a3)
|
||||
void sub_8197BB4(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
|
||||
{
|
||||
FillBgTilemapBufferRect(bg,
|
||||
gUnknown_0203CD9C + 1,
|
||||
sTileNum + 1,
|
||||
tilemapLeft - 2,
|
||||
tilemapTop - 1,
|
||||
1,
|
||||
1,
|
||||
gUnknown_0203CD9E);
|
||||
sPaletteNum);
|
||||
FillBgTilemapBufferRect(bg,
|
||||
gUnknown_0203CD9C + 3,
|
||||
sTileNum + 3,
|
||||
tilemapLeft - 1,
|
||||
tilemapTop - 1,
|
||||
1,
|
||||
1,
|
||||
gUnknown_0203CD9E);
|
||||
sPaletteNum);
|
||||
FillBgTilemapBufferRect(bg,
|
||||
gUnknown_0203CD9C + 4,
|
||||
sTileNum + 4,
|
||||
tilemapLeft,
|
||||
tilemapTop - 1,
|
||||
width - 1,
|
||||
1,
|
||||
gUnknown_0203CD9E);
|
||||
sPaletteNum);
|
||||
FillBgTilemapBufferRect(bg,
|
||||
gUnknown_0203CD9C + 5,
|
||||
sTileNum + 5,
|
||||
tilemapLeft + width - 1,
|
||||
tilemapTop - 1,
|
||||
1,
|
||||
1,
|
||||
gUnknown_0203CD9E);
|
||||
sPaletteNum);
|
||||
FillBgTilemapBufferRect(bg,
|
||||
gUnknown_0203CD9C + 6,
|
||||
sTileNum + 6,
|
||||
tilemapLeft + width,
|
||||
tilemapTop - 1,
|
||||
1,
|
||||
1,
|
||||
gUnknown_0203CD9E);
|
||||
sPaletteNum);
|
||||
FillBgTilemapBufferRect(bg,
|
||||
gUnknown_0203CD9C + 7,
|
||||
sTileNum + 7,
|
||||
tilemapLeft - 2,
|
||||
tilemapTop,
|
||||
1,
|
||||
5,
|
||||
gUnknown_0203CD9E);
|
||||
sPaletteNum);
|
||||
FillBgTilemapBufferRect(bg,
|
||||
gUnknown_0203CD9C + 9,
|
||||
sTileNum + 9,
|
||||
tilemapLeft - 1,
|
||||
tilemapTop,
|
||||
width + 1,
|
||||
5,
|
||||
gUnknown_0203CD9E);
|
||||
sPaletteNum);
|
||||
FillBgTilemapBufferRect(bg,
|
||||
gUnknown_0203CD9C + 10,
|
||||
sTileNum + 10,
|
||||
tilemapLeft + width,
|
||||
tilemapTop,
|
||||
1,
|
||||
5,
|
||||
gUnknown_0203CD9E);
|
||||
sPaletteNum);
|
||||
FillBgTilemapBufferRect(bg,
|
||||
BG_TILE_V_FLIP(gUnknown_0203CD9C + 1),
|
||||
BG_TILE_V_FLIP(sTileNum + 1),
|
||||
tilemapLeft - 2,
|
||||
tilemapTop + height,
|
||||
1,
|
||||
1,
|
||||
gUnknown_0203CD9E);
|
||||
sPaletteNum);
|
||||
FillBgTilemapBufferRect(bg,
|
||||
BG_TILE_V_FLIP(gUnknown_0203CD9C + 3),
|
||||
BG_TILE_V_FLIP(sTileNum + 3),
|
||||
tilemapLeft - 1,
|
||||
tilemapTop + height,
|
||||
1,
|
||||
1,
|
||||
gUnknown_0203CD9E);
|
||||
sPaletteNum);
|
||||
FillBgTilemapBufferRect(bg,
|
||||
BG_TILE_V_FLIP(gUnknown_0203CD9C + 4),
|
||||
BG_TILE_V_FLIP(sTileNum + 4),
|
||||
tilemapLeft,
|
||||
tilemapTop + height,
|
||||
width - 1,
|
||||
1,
|
||||
gUnknown_0203CD9E);
|
||||
sPaletteNum);
|
||||
FillBgTilemapBufferRect(bg,
|
||||
BG_TILE_V_FLIP(gUnknown_0203CD9C + 5),
|
||||
BG_TILE_V_FLIP(sTileNum + 5),
|
||||
tilemapLeft + width - 1,
|
||||
tilemapTop + height,
|
||||
1,
|
||||
1,
|
||||
gUnknown_0203CD9E);
|
||||
sPaletteNum);
|
||||
FillBgTilemapBufferRect(bg,
|
||||
BG_TILE_V_FLIP(gUnknown_0203CD9C + 6),
|
||||
BG_TILE_V_FLIP(sTileNum + 6),
|
||||
tilemapLeft + width,
|
||||
tilemapTop + height,
|
||||
1,
|
||||
1,
|
||||
gUnknown_0203CD9E);
|
||||
sPaletteNum);
|
||||
}
|
||||
|
||||
void sub_8197DF8(u8 windowId, bool8 copyToVram)
|
||||
@@ -682,8 +682,8 @@ void sub_8197E30(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 p
|
||||
|
||||
void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 baseTileNum, u8 paletteNum)
|
||||
{
|
||||
gUnknown_0203CD9C = baseTileNum;
|
||||
gUnknown_0203CD9E = paletteNum;
|
||||
sTileNum = baseTileNum;
|
||||
sPaletteNum = paletteNum;
|
||||
CallWindowFunction(windowId, DrawWindowBorder);
|
||||
FillWindowPixelBuffer(windowId, 0x11);
|
||||
PutWindowTilemap(windowId);
|
||||
@@ -693,8 +693,8 @@ void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 baseTileNum, u8 pal
|
||||
|
||||
void sub_8197EC8(u8 windowId, bool8 copyToVram, u16 baseTileNum)
|
||||
{
|
||||
gUnknown_0203CD9C = baseTileNum;
|
||||
gUnknown_0203CD9E = GetWindowAttribute(windowId, WINDOW_PALETTE_NUM);
|
||||
sTileNum = baseTileNum;
|
||||
sPaletteNum = GetWindowAttribute(windowId, WINDOW_PALETTE_NUM);
|
||||
CallWindowFunction(windowId, DrawWindowBorder);
|
||||
FillWindowPixelBuffer(windowId, 0x11);
|
||||
PutWindowTilemap(windowId);
|
||||
@@ -705,61 +705,61 @@ void sub_8197EC8(u8 windowId, bool8 copyToVram, u16 baseTileNum)
|
||||
void DrawWindowBorder(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
|
||||
{
|
||||
FillBgTilemapBufferRect(bg,
|
||||
gUnknown_0203CD9C + 0,
|
||||
sTileNum + 0,
|
||||
tilemapLeft - 1,
|
||||
tilemapTop - 1,
|
||||
1,
|
||||
1,
|
||||
gUnknown_0203CD9E);
|
||||
sPaletteNum);
|
||||
FillBgTilemapBufferRect(bg,
|
||||
gUnknown_0203CD9C + 1,
|
||||
sTileNum + 1,
|
||||
tilemapLeft,
|
||||
tilemapTop - 1,
|
||||
width,
|
||||
1,
|
||||
gUnknown_0203CD9E);
|
||||
sPaletteNum);
|
||||
FillBgTilemapBufferRect(bg,
|
||||
gUnknown_0203CD9C + 2,
|
||||
sTileNum + 2,
|
||||
tilemapLeft + width,
|
||||
tilemapTop - 1,
|
||||
1,
|
||||
1,
|
||||
gUnknown_0203CD9E);
|
||||
sPaletteNum);
|
||||
FillBgTilemapBufferRect(bg,
|
||||
gUnknown_0203CD9C + 3,
|
||||
sTileNum + 3,
|
||||
tilemapLeft - 1,
|
||||
tilemapTop,
|
||||
1,
|
||||
height,
|
||||
gUnknown_0203CD9E);
|
||||
sPaletteNum);
|
||||
FillBgTilemapBufferRect(bg,
|
||||
gUnknown_0203CD9C + 5,
|
||||
sTileNum + 5,
|
||||
tilemapLeft + width,
|
||||
tilemapTop,
|
||||
1,
|
||||
height,
|
||||
gUnknown_0203CD9E);
|
||||
sPaletteNum);
|
||||
FillBgTilemapBufferRect(bg,
|
||||
gUnknown_0203CD9C + 6,
|
||||
sTileNum + 6,
|
||||
tilemapLeft - 1,
|
||||
tilemapTop + height,
|
||||
1,
|
||||
1,
|
||||
gUnknown_0203CD9E);
|
||||
sPaletteNum);
|
||||
FillBgTilemapBufferRect(bg,
|
||||
gUnknown_0203CD9C + 7,
|
||||
sTileNum + 7,
|
||||
tilemapLeft,
|
||||
tilemapTop + height,
|
||||
width,
|
||||
1,
|
||||
gUnknown_0203CD9E);
|
||||
sPaletteNum);
|
||||
FillBgTilemapBufferRect(bg,
|
||||
gUnknown_0203CD9C + 8,
|
||||
sTileNum + 8,
|
||||
tilemapLeft + width,
|
||||
tilemapTop + height,
|
||||
1,
|
||||
1,
|
||||
gUnknown_0203CD9E);
|
||||
sPaletteNum);
|
||||
}
|
||||
|
||||
void sub_8198070(u8 windowId, bool8 copyToVram)
|
||||
@@ -793,7 +793,7 @@ u8 sub_81980F0(u8 bg, u8 xPos, u8 yPos, u8 palette, u16 baseTile)
|
||||
window.paletteNum = palette;
|
||||
window.baseBlock = baseTile;
|
||||
|
||||
gUnknown_0203CDA0 = AddWindow(&window);
|
||||
sWindowId = AddWindow(&window);
|
||||
|
||||
if (palette > 15)
|
||||
palette = 15 * 16;
|
||||
@@ -801,27 +801,27 @@ u8 sub_81980F0(u8 bg, u8 xPos, u8 yPos, u8 palette, u16 baseTile)
|
||||
palette *= 16;
|
||||
|
||||
LoadPalette(gUnknown_0860F0B0, palette, sizeof(gUnknown_0860F0B0));
|
||||
return gUnknown_0203CDA0;
|
||||
return sWindowId;
|
||||
}
|
||||
|
||||
void sub_8198180(const u8 *string, u8 a2, bool8 copyToVram)
|
||||
{
|
||||
u16 width = 0;
|
||||
|
||||
if (gUnknown_0203CDA0 != 0xFF)
|
||||
if (sWindowId != 0xFF)
|
||||
{
|
||||
PutWindowTilemap(gUnknown_0203CDA0);
|
||||
FillWindowPixelBuffer(gUnknown_0203CDA0, 0xFF);
|
||||
PutWindowTilemap(sWindowId);
|
||||
FillWindowPixelBuffer(sWindowId, 0xFF);
|
||||
width = GetStringWidth(0, string, 0);
|
||||
AddTextPrinterParameterized3(gUnknown_0203CDA0,
|
||||
AddTextPrinterParameterized3(sWindowId,
|
||||
0,
|
||||
0xEC - (GetWindowAttribute(gUnknown_0203CDA0, WINDOW_TILEMAP_LEFT) * 8) - a2 - width,
|
||||
0xEC - (GetWindowAttribute(sWindowId, WINDOW_TILEMAP_LEFT) * 8) - a2 - width,
|
||||
1,
|
||||
gUnknown_0860F0D0,
|
||||
0,
|
||||
string);
|
||||
if (copyToVram)
|
||||
CopyWindowToVram(gUnknown_0203CDA0, 3);
|
||||
CopyWindowToVram(sWindowId, 3);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -830,7 +830,7 @@ void sub_8198204(const u8 *string, const u8 *string2, u8 a3, u8 a4, bool8 copyTo
|
||||
u8 color[3];
|
||||
u16 width = 0;
|
||||
|
||||
if (gUnknown_0203CDA0 != 0xFF)
|
||||
if (sWindowId != 0xFF)
|
||||
{
|
||||
if (a3 != 0)
|
||||
{
|
||||
@@ -844,49 +844,49 @@ void sub_8198204(const u8 *string, const u8 *string2, u8 a3, u8 a4, bool8 copyTo
|
||||
color[1] = 1;
|
||||
color[2] = 2;
|
||||
}
|
||||
PutWindowTilemap(gUnknown_0203CDA0);
|
||||
FillWindowPixelBuffer(gUnknown_0203CDA0, 0xFF);
|
||||
PutWindowTilemap(sWindowId);
|
||||
FillWindowPixelBuffer(sWindowId, 0xFF);
|
||||
if (string2 != NULL)
|
||||
{
|
||||
width = GetStringWidth(0, string2, 0);
|
||||
AddTextPrinterParameterized3(gUnknown_0203CDA0,
|
||||
AddTextPrinterParameterized3(sWindowId,
|
||||
0,
|
||||
0xEC - (GetWindowAttribute(gUnknown_0203CDA0, WINDOW_TILEMAP_LEFT) * 8) - a4 - width,
|
||||
0xEC - (GetWindowAttribute(sWindowId, WINDOW_TILEMAP_LEFT) * 8) - a4 - width,
|
||||
1,
|
||||
color,
|
||||
0,
|
||||
string2);
|
||||
}
|
||||
AddTextPrinterParameterized4(gUnknown_0203CDA0, 1, 4, 1, 0, 0, color, 0, string);
|
||||
AddTextPrinterParameterized4(sWindowId, 1, 4, 1, 0, 0, color, 0, string);
|
||||
if (copyToVram)
|
||||
CopyWindowToVram(gUnknown_0203CDA0, 3);
|
||||
CopyWindowToVram(sWindowId, 3);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81982D8(void)
|
||||
{
|
||||
if (gUnknown_0203CDA0 != 0xFF)
|
||||
CopyWindowToVram(gUnknown_0203CDA0, 3);
|
||||
if (sWindowId != 0xFF)
|
||||
CopyWindowToVram(sWindowId, 3);
|
||||
}
|
||||
|
||||
void sub_81982F0(void)
|
||||
{
|
||||
if (gUnknown_0203CDA0 != 0xFF)
|
||||
if (sWindowId != 0xFF)
|
||||
{
|
||||
FillWindowPixelBuffer(gUnknown_0203CDA0, 0xFF);
|
||||
CopyWindowToVram(gUnknown_0203CDA0, 3);
|
||||
FillWindowPixelBuffer(sWindowId, 0xFF);
|
||||
CopyWindowToVram(sWindowId, 3);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8198314(void)
|
||||
{
|
||||
if (gUnknown_0203CDA0 != 0xFF)
|
||||
if (sWindowId != 0xFF)
|
||||
{
|
||||
FillWindowPixelBuffer(gUnknown_0203CDA0, 0);
|
||||
ClearWindowTilemap(gUnknown_0203CDA0);
|
||||
CopyWindowToVram(gUnknown_0203CDA0, 3);
|
||||
RemoveWindow(gUnknown_0203CDA0);
|
||||
gUnknown_0203CDA0 = 0xFF;
|
||||
FillWindowPixelBuffer(sWindowId, 0);
|
||||
ClearWindowTilemap(sWindowId);
|
||||
CopyWindowToVram(sWindowId, 3);
|
||||
RemoveWindow(sWindowId);
|
||||
sWindowId = 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -894,24 +894,24 @@ u8 sub_8198348(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numC
|
||||
{
|
||||
s32 pos;
|
||||
|
||||
gUnknown_0203CD90.left = left;
|
||||
gUnknown_0203CD90.top = top;
|
||||
gUnknown_0203CD90.minCursorPos = 0;
|
||||
gUnknown_0203CD90.maxCursorPos = numChoices - 1;
|
||||
gUnknown_0203CD90.windowId = windowId;
|
||||
gUnknown_0203CD90.fontId = fontId;
|
||||
gUnknown_0203CD90.optionHeight = cursorHeight;
|
||||
gUnknown_0203CD90.APressMuted = a7;
|
||||
sMenu.left = left;
|
||||
sMenu.top = top;
|
||||
sMenu.minCursorPos = 0;
|
||||
sMenu.maxCursorPos = numChoices - 1;
|
||||
sMenu.windowId = windowId;
|
||||
sMenu.fontId = fontId;
|
||||
sMenu.optionHeight = cursorHeight;
|
||||
sMenu.APressMuted = a7;
|
||||
|
||||
pos = initialCursorPos;
|
||||
|
||||
if (pos < 0 || pos > gUnknown_0203CD90.maxCursorPos)
|
||||
gUnknown_0203CD90.cursorPos = 0;
|
||||
if (pos < 0 || pos > sMenu.maxCursorPos)
|
||||
sMenu.cursorPos = 0;
|
||||
else
|
||||
gUnknown_0203CD90.cursorPos = pos;
|
||||
sMenu.cursorPos = pos;
|
||||
|
||||
Menu_MoveCursor(0);
|
||||
return gUnknown_0203CD90.cursorPos;
|
||||
return sMenu.cursorPos;
|
||||
}
|
||||
|
||||
u8 sub_81983AC(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos)
|
||||
@@ -929,56 +929,56 @@ void RedrawMenuCursor(u8 oldPos, u8 newPos)
|
||||
{
|
||||
u8 width, height;
|
||||
|
||||
width = GetMenuCursorDimensionByFont(gUnknown_0203CD90.fontId, 0);
|
||||
height = GetMenuCursorDimensionByFont(gUnknown_0203CD90.fontId, 1);
|
||||
FillWindowPixelRect(gUnknown_0203CD90.windowId, 0x11, gUnknown_0203CD90.left, gUnknown_0203CD90.optionHeight * oldPos + gUnknown_0203CD90.top, width, height);
|
||||
AddTextPrinterParameterized(gUnknown_0203CD90.windowId, gUnknown_0203CD90.fontId, gText_SelectorArrow3, gUnknown_0203CD90.left, gUnknown_0203CD90.optionHeight * newPos + gUnknown_0203CD90.top, 0, 0);
|
||||
width = GetMenuCursorDimensionByFont(sMenu.fontId, 0);
|
||||
height = GetMenuCursorDimensionByFont(sMenu.fontId, 1);
|
||||
FillWindowPixelRect(sMenu.windowId, 0x11, sMenu.left, sMenu.optionHeight * oldPos + sMenu.top, width, height);
|
||||
AddTextPrinterParameterized(sMenu.windowId, sMenu.fontId, gText_SelectorArrow3, sMenu.left, sMenu.optionHeight * newPos + sMenu.top, 0, 0);
|
||||
}
|
||||
|
||||
u8 Menu_MoveCursor(s8 cursorDelta)
|
||||
{
|
||||
u8 oldPos = gUnknown_0203CD90.cursorPos;
|
||||
int newPos = gUnknown_0203CD90.cursorPos + cursorDelta;
|
||||
u8 oldPos = sMenu.cursorPos;
|
||||
int newPos = sMenu.cursorPos + cursorDelta;
|
||||
|
||||
if (newPos < gUnknown_0203CD90.minCursorPos)
|
||||
gUnknown_0203CD90.cursorPos = gUnknown_0203CD90.maxCursorPos;
|
||||
else if (newPos > gUnknown_0203CD90.maxCursorPos)
|
||||
gUnknown_0203CD90.cursorPos = gUnknown_0203CD90.minCursorPos;
|
||||
if (newPos < sMenu.minCursorPos)
|
||||
sMenu.cursorPos = sMenu.maxCursorPos;
|
||||
else if (newPos > sMenu.maxCursorPos)
|
||||
sMenu.cursorPos = sMenu.minCursorPos;
|
||||
else
|
||||
gUnknown_0203CD90.cursorPos += cursorDelta;
|
||||
sMenu.cursorPos += cursorDelta;
|
||||
|
||||
RedrawMenuCursor(oldPos, gUnknown_0203CD90.cursorPos);
|
||||
return gUnknown_0203CD90.cursorPos;
|
||||
RedrawMenuCursor(oldPos, sMenu.cursorPos);
|
||||
return sMenu.cursorPos;
|
||||
}
|
||||
|
||||
u8 Menu_MoveCursorNoWrapAround(s8 cursorDelta)
|
||||
{
|
||||
u8 oldPos = gUnknown_0203CD90.cursorPos;
|
||||
int newPos = gUnknown_0203CD90.cursorPos + cursorDelta;
|
||||
u8 oldPos = sMenu.cursorPos;
|
||||
int newPos = sMenu.cursorPos + cursorDelta;
|
||||
|
||||
if (newPos < gUnknown_0203CD90.minCursorPos)
|
||||
gUnknown_0203CD90.cursorPos = gUnknown_0203CD90.minCursorPos;
|
||||
else if (newPos > gUnknown_0203CD90.maxCursorPos)
|
||||
gUnknown_0203CD90.cursorPos = gUnknown_0203CD90.maxCursorPos;
|
||||
if (newPos < sMenu.minCursorPos)
|
||||
sMenu.cursorPos = sMenu.minCursorPos;
|
||||
else if (newPos > sMenu.maxCursorPos)
|
||||
sMenu.cursorPos = sMenu.maxCursorPos;
|
||||
else
|
||||
gUnknown_0203CD90.cursorPos += cursorDelta;
|
||||
sMenu.cursorPos += cursorDelta;
|
||||
|
||||
RedrawMenuCursor(oldPos, gUnknown_0203CD90.cursorPos);
|
||||
return gUnknown_0203CD90.cursorPos;
|
||||
RedrawMenuCursor(oldPos, sMenu.cursorPos);
|
||||
return sMenu.cursorPos;
|
||||
}
|
||||
|
||||
u8 Menu_GetCursorPos(void)
|
||||
{
|
||||
return gUnknown_0203CD90.cursorPos;
|
||||
return sMenu.cursorPos;
|
||||
}
|
||||
|
||||
s8 Menu_ProcessInput(void)
|
||||
{
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
if (!gUnknown_0203CD90.APressMuted)
|
||||
if (!sMenu.APressMuted)
|
||||
PlaySE(SE_SELECT);
|
||||
return gUnknown_0203CD90.cursorPos;
|
||||
return sMenu.cursorPos;
|
||||
}
|
||||
else if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
@@ -1002,13 +1002,13 @@ s8 Menu_ProcessInput(void)
|
||||
|
||||
s8 Menu_ProcessInputNoWrap(void)
|
||||
{
|
||||
u8 oldPos = gUnknown_0203CD90.cursorPos;
|
||||
u8 oldPos = sMenu.cursorPos;
|
||||
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
if (!gUnknown_0203CD90.APressMuted)
|
||||
if (!sMenu.APressMuted)
|
||||
PlaySE(SE_SELECT);
|
||||
return gUnknown_0203CD90.cursorPos;
|
||||
return sMenu.cursorPos;
|
||||
}
|
||||
else if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
@@ -1034,9 +1034,9 @@ s8 ProcessMenuInput_other(void)
|
||||
{
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
if (!gUnknown_0203CD90.APressMuted)
|
||||
if (!sMenu.APressMuted)
|
||||
PlaySE(SE_SELECT);
|
||||
return gUnknown_0203CD90.cursorPos;
|
||||
return sMenu.cursorPos;
|
||||
}
|
||||
else if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
@@ -1060,13 +1060,13 @@ s8 ProcessMenuInput_other(void)
|
||||
|
||||
s8 Menu_ProcessInputNoWrapAround_other(void)
|
||||
{
|
||||
u8 oldPos = gUnknown_0203CD90.cursorPos;
|
||||
u8 oldPos = sMenu.cursorPos;
|
||||
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
if (!gUnknown_0203CD90.APressMuted)
|
||||
if (!sMenu.APressMuted)
|
||||
PlaySE(SE_SELECT);
|
||||
return gUnknown_0203CD90.cursorPos;
|
||||
return sMenu.cursorPos;
|
||||
}
|
||||
else if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
@@ -1174,11 +1174,11 @@ void sub_8198AF8(const struct WindowTemplate *window, u8 fontId, u8 left, u8 top
|
||||
{
|
||||
struct TextPrinterTemplate printer;
|
||||
|
||||
gUnknown_0203CD9F = AddWindow(window);
|
||||
SetWindowBorderStyle(gUnknown_0203CD9F, TRUE, baseTileNum, paletteNum);
|
||||
sYesNoWindowId = AddWindow(window);
|
||||
SetWindowBorderStyle(sYesNoWindowId, TRUE, baseTileNum, paletteNum);
|
||||
|
||||
printer.currentChar = gText_YesNo;
|
||||
printer.windowId = gUnknown_0203CD9F;
|
||||
printer.windowId = sYesNoWindowId;
|
||||
printer.fontId = fontId;
|
||||
printer.x = GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH) + left;
|
||||
printer.y = top;
|
||||
@@ -1193,7 +1193,7 @@ void sub_8198AF8(const struct WindowTemplate *window, u8 fontId, u8 left, u8 top
|
||||
|
||||
AddTextPrinter(&printer, 0xFF, NULL);
|
||||
|
||||
sub_81983AC(gUnknown_0203CD9F, fontId, left, top, GetFontAttribute(fontId, FONTATTR_MAX_LETTER_HEIGHT), 2, initialCursorPos);
|
||||
sub_81983AC(sYesNoWindowId, fontId, left, top, GetFontAttribute(fontId, FONTATTR_MAX_LETTER_HEIGHT), 2, initialCursorPos);
|
||||
}
|
||||
|
||||
void sub_8198C34(const struct WindowTemplate *window, u8 fontId, u16 baseTileNum, u8 paletteNum)
|
||||
@@ -1211,8 +1211,8 @@ s8 Menu_ProcessInputNoWrapClearOnChoose(void)
|
||||
|
||||
void sub_8198C78(void)
|
||||
{
|
||||
sub_8198070(gUnknown_0203CD9F, TRUE);
|
||||
RemoveWindow(gUnknown_0203CD9F);
|
||||
sub_8198070(sYesNoWindowId, TRUE);
|
||||
RemoveWindow(sYesNoWindowId);
|
||||
}
|
||||
|
||||
void sub_8198C94(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 a5, u8 a6, u8 a7, const struct MenuAction *strs)
|
||||
@@ -1274,26 +1274,26 @@ u8 sub_8198F58(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 cursorHeight,
|
||||
{
|
||||
s32 pos;
|
||||
|
||||
gUnknown_0203CD90.left = left;
|
||||
gUnknown_0203CD90.top = top;
|
||||
gUnknown_0203CD90.minCursorPos = 0;
|
||||
gUnknown_0203CD90.maxCursorPos = numChoices - 1;
|
||||
gUnknown_0203CD90.windowId = windowId;
|
||||
gUnknown_0203CD90.fontId = fontId;
|
||||
gUnknown_0203CD90.optionWidth = a4;
|
||||
gUnknown_0203CD90.optionHeight = cursorHeight;
|
||||
gUnknown_0203CD90.horizontalCount = a6;
|
||||
gUnknown_0203CD90.verticalCount = a7;
|
||||
sMenu.left = left;
|
||||
sMenu.top = top;
|
||||
sMenu.minCursorPos = 0;
|
||||
sMenu.maxCursorPos = numChoices - 1;
|
||||
sMenu.windowId = windowId;
|
||||
sMenu.fontId = fontId;
|
||||
sMenu.optionWidth = a4;
|
||||
sMenu.optionHeight = cursorHeight;
|
||||
sMenu.horizontalCount = a6;
|
||||
sMenu.verticalCount = a7;
|
||||
|
||||
pos = a9;
|
||||
|
||||
if (pos < 0 || pos > gUnknown_0203CD90.maxCursorPos)
|
||||
gUnknown_0203CD90.cursorPos = 0;
|
||||
if (pos < 0 || pos > sMenu.maxCursorPos)
|
||||
sMenu.cursorPos = 0;
|
||||
else
|
||||
gUnknown_0203CD90.cursorPos = pos;
|
||||
sMenu.cursorPos = pos;
|
||||
|
||||
sub_8199134(0, 0);
|
||||
return gUnknown_0203CD90.cursorPos;
|
||||
return sMenu.cursorPos;
|
||||
}
|
||||
|
||||
u8 sub_8198FD4(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 a5, u8 a6, u8 a7)
|
||||
@@ -1305,20 +1305,20 @@ u8 sub_8198FD4(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 a5, u8 a6, u8
|
||||
|
||||
void sub_8199060(u8 oldCursorPos, u8 newCursorPos)
|
||||
{
|
||||
u8 cursorWidth = GetMenuCursorDimensionByFont(gUnknown_0203CD90.fontId, 0);
|
||||
u8 cursorHeight = GetMenuCursorDimensionByFont(gUnknown_0203CD90.fontId, 1);
|
||||
u8 xPos = (oldCursorPos % gUnknown_0203CD90.horizontalCount) * gUnknown_0203CD90.optionWidth + gUnknown_0203CD90.left;
|
||||
u8 yPos = (oldCursorPos / gUnknown_0203CD90.horizontalCount) * gUnknown_0203CD90.optionHeight + gUnknown_0203CD90.top;
|
||||
FillWindowPixelRect(gUnknown_0203CD90.windowId,
|
||||
u8 cursorWidth = GetMenuCursorDimensionByFont(sMenu.fontId, 0);
|
||||
u8 cursorHeight = GetMenuCursorDimensionByFont(sMenu.fontId, 1);
|
||||
u8 xPos = (oldCursorPos % sMenu.horizontalCount) * sMenu.optionWidth + sMenu.left;
|
||||
u8 yPos = (oldCursorPos / sMenu.horizontalCount) * sMenu.optionHeight + sMenu.top;
|
||||
FillWindowPixelRect(sMenu.windowId,
|
||||
0x11,
|
||||
xPos,
|
||||
yPos,
|
||||
cursorWidth,
|
||||
cursorHeight);
|
||||
xPos = (newCursorPos % gUnknown_0203CD90.horizontalCount) * gUnknown_0203CD90.optionWidth + gUnknown_0203CD90.left;
|
||||
yPos = (newCursorPos / gUnknown_0203CD90.horizontalCount) * gUnknown_0203CD90.optionHeight + gUnknown_0203CD90.top;
|
||||
AddTextPrinterParameterized(gUnknown_0203CD90.windowId,
|
||||
gUnknown_0203CD90.fontId,
|
||||
xPos = (newCursorPos % sMenu.horizontalCount) * sMenu.optionWidth + sMenu.left;
|
||||
yPos = (newCursorPos / sMenu.horizontalCount) * sMenu.optionHeight + sMenu.top;
|
||||
AddTextPrinterParameterized(sMenu.windowId,
|
||||
sMenu.fontId,
|
||||
gText_SelectorArrow3,
|
||||
xPos,
|
||||
yPos,
|
||||
@@ -1328,83 +1328,83 @@ void sub_8199060(u8 oldCursorPos, u8 newCursorPos)
|
||||
|
||||
u8 sub_8199134(s8 deltaX, s8 deltaY)
|
||||
{
|
||||
u8 oldPos = gUnknown_0203CD90.cursorPos;
|
||||
u8 oldPos = sMenu.cursorPos;
|
||||
|
||||
if (deltaX != 0)
|
||||
{
|
||||
if ((gUnknown_0203CD90.cursorPos % gUnknown_0203CD90.horizontalCount) + deltaX < 0)
|
||||
if ((sMenu.cursorPos % sMenu.horizontalCount) + deltaX < 0)
|
||||
{
|
||||
gUnknown_0203CD90.cursorPos += gUnknown_0203CD90.horizontalCount - 1;
|
||||
sMenu.cursorPos += sMenu.horizontalCount - 1;
|
||||
}
|
||||
else if ((gUnknown_0203CD90.cursorPos % gUnknown_0203CD90.horizontalCount) + deltaX >= gUnknown_0203CD90.horizontalCount)
|
||||
else if ((sMenu.cursorPos % sMenu.horizontalCount) + deltaX >= sMenu.horizontalCount)
|
||||
{
|
||||
gUnknown_0203CD90.cursorPos = (gUnknown_0203CD90.cursorPos / gUnknown_0203CD90.horizontalCount) * gUnknown_0203CD90.horizontalCount;
|
||||
sMenu.cursorPos = (sMenu.cursorPos / sMenu.horizontalCount) * sMenu.horizontalCount;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_0203CD90.cursorPos += deltaX;
|
||||
sMenu.cursorPos += deltaX;
|
||||
}
|
||||
}
|
||||
|
||||
if (deltaY != 0)
|
||||
{
|
||||
if ((gUnknown_0203CD90.cursorPos / gUnknown_0203CD90.horizontalCount) + deltaY < 0)
|
||||
if ((sMenu.cursorPos / sMenu.horizontalCount) + deltaY < 0)
|
||||
{
|
||||
gUnknown_0203CD90.cursorPos += gUnknown_0203CD90.horizontalCount * (gUnknown_0203CD90.verticalCount - 1);
|
||||
sMenu.cursorPos += sMenu.horizontalCount * (sMenu.verticalCount - 1);
|
||||
}
|
||||
else if ((gUnknown_0203CD90.cursorPos / gUnknown_0203CD90.horizontalCount) + deltaY >= gUnknown_0203CD90.verticalCount)
|
||||
else if ((sMenu.cursorPos / sMenu.horizontalCount) + deltaY >= sMenu.verticalCount)
|
||||
{
|
||||
gUnknown_0203CD90.cursorPos -= gUnknown_0203CD90.horizontalCount * (gUnknown_0203CD90.verticalCount - 1);
|
||||
sMenu.cursorPos -= sMenu.horizontalCount * (sMenu.verticalCount - 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_0203CD90.cursorPos += (gUnknown_0203CD90.horizontalCount * deltaY);
|
||||
sMenu.cursorPos += (sMenu.horizontalCount * deltaY);
|
||||
}
|
||||
}
|
||||
|
||||
if (gUnknown_0203CD90.cursorPos > gUnknown_0203CD90.maxCursorPos)
|
||||
if (sMenu.cursorPos > sMenu.maxCursorPos)
|
||||
{
|
||||
gUnknown_0203CD90.cursorPos = oldPos;
|
||||
return gUnknown_0203CD90.cursorPos;
|
||||
sMenu.cursorPos = oldPos;
|
||||
return sMenu.cursorPos;
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_8199060(oldPos, gUnknown_0203CD90.cursorPos);
|
||||
return gUnknown_0203CD90.cursorPos;
|
||||
sub_8199060(oldPos, sMenu.cursorPos);
|
||||
return sMenu.cursorPos;
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_81991F8(s8 deltaX, s8 deltaY)
|
||||
{
|
||||
u8 oldPos = gUnknown_0203CD90.cursorPos;
|
||||
u8 oldPos = sMenu.cursorPos;
|
||||
|
||||
if (deltaX != 0)
|
||||
{
|
||||
if (((gUnknown_0203CD90.cursorPos % gUnknown_0203CD90.horizontalCount) + deltaX >= 0) &&
|
||||
((gUnknown_0203CD90.cursorPos % gUnknown_0203CD90.horizontalCount) + deltaX < gUnknown_0203CD90.horizontalCount))
|
||||
if (((sMenu.cursorPos % sMenu.horizontalCount) + deltaX >= 0) &&
|
||||
((sMenu.cursorPos % sMenu.horizontalCount) + deltaX < sMenu.horizontalCount))
|
||||
{
|
||||
gUnknown_0203CD90.cursorPos += deltaX;
|
||||
sMenu.cursorPos += deltaX;
|
||||
}
|
||||
}
|
||||
|
||||
if (deltaY != 0)
|
||||
{
|
||||
if (((gUnknown_0203CD90.cursorPos / gUnknown_0203CD90.horizontalCount) + deltaY >= 0) &&
|
||||
((gUnknown_0203CD90.cursorPos / gUnknown_0203CD90.horizontalCount) + deltaY < gUnknown_0203CD90.verticalCount))
|
||||
if (((sMenu.cursorPos / sMenu.horizontalCount) + deltaY >= 0) &&
|
||||
((sMenu.cursorPos / sMenu.horizontalCount) + deltaY < sMenu.verticalCount))
|
||||
{
|
||||
gUnknown_0203CD90.cursorPos += (gUnknown_0203CD90.horizontalCount * deltaY);
|
||||
sMenu.cursorPos += (sMenu.horizontalCount * deltaY);
|
||||
}
|
||||
}
|
||||
|
||||
if (gUnknown_0203CD90.cursorPos > gUnknown_0203CD90.maxCursorPos)
|
||||
if (sMenu.cursorPos > sMenu.maxCursorPos)
|
||||
{
|
||||
gUnknown_0203CD90.cursorPos = oldPos;
|
||||
return gUnknown_0203CD90.cursorPos;
|
||||
sMenu.cursorPos = oldPos;
|
||||
return sMenu.cursorPos;
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_8199060(oldPos, gUnknown_0203CD90.cursorPos);
|
||||
return gUnknown_0203CD90.cursorPos;
|
||||
sub_8199060(oldPos, sMenu.cursorPos);
|
||||
return sMenu.cursorPos;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1413,7 +1413,7 @@ s8 sub_8199284(void)
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
return gUnknown_0203CD90.cursorPos;
|
||||
return sMenu.cursorPos;
|
||||
}
|
||||
else if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
@@ -1449,12 +1449,12 @@ s8 sub_8199284(void)
|
||||
|
||||
s8 Menu_ProcessInputGridLayout(void)
|
||||
{
|
||||
u8 oldPos = gUnknown_0203CD90.cursorPos;
|
||||
u8 oldPos = sMenu.cursorPos;
|
||||
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
return gUnknown_0203CD90.cursorPos;
|
||||
return sMenu.cursorPos;
|
||||
}
|
||||
else if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
@@ -1493,7 +1493,7 @@ s8 sub_81993D8(void)
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
return gUnknown_0203CD90.cursorPos;
|
||||
return sMenu.cursorPos;
|
||||
}
|
||||
else if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
@@ -1529,12 +1529,12 @@ s8 sub_81993D8(void)
|
||||
|
||||
s8 sub_8199484(void)
|
||||
{
|
||||
u8 oldPos = gUnknown_0203CD90.cursorPos;
|
||||
u8 oldPos = sMenu.cursorPos;
|
||||
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
return gUnknown_0203CD90.cursorPos;
|
||||
return sMenu.cursorPos;
|
||||
}
|
||||
else if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
@@ -1572,21 +1572,21 @@ u8 InitMenuInUpperLeftCorner(u8 windowId, u8 itemCount, u8 initialCursorPos, boo
|
||||
{
|
||||
s32 pos;
|
||||
|
||||
gUnknown_0203CD90.left = 0;
|
||||
gUnknown_0203CD90.top = 1;
|
||||
gUnknown_0203CD90.minCursorPos = 0;
|
||||
gUnknown_0203CD90.maxCursorPos = itemCount - 1;
|
||||
gUnknown_0203CD90.windowId = windowId;
|
||||
gUnknown_0203CD90.fontId = 1;
|
||||
gUnknown_0203CD90.optionHeight = 16;
|
||||
gUnknown_0203CD90.APressMuted = APressMuted;
|
||||
sMenu.left = 0;
|
||||
sMenu.top = 1;
|
||||
sMenu.minCursorPos = 0;
|
||||
sMenu.maxCursorPos = itemCount - 1;
|
||||
sMenu.windowId = windowId;
|
||||
sMenu.fontId = 1;
|
||||
sMenu.optionHeight = 16;
|
||||
sMenu.APressMuted = APressMuted;
|
||||
|
||||
pos = initialCursorPos;
|
||||
|
||||
if (pos < 0 || pos > gUnknown_0203CD90.maxCursorPos)
|
||||
gUnknown_0203CD90.cursorPos = 0;
|
||||
if (pos < 0 || pos > sMenu.maxCursorPos)
|
||||
sMenu.cursorPos = 0;
|
||||
else
|
||||
gUnknown_0203CD90.cursorPos = pos;
|
||||
sMenu.cursorPos = pos;
|
||||
|
||||
return Menu_MoveCursor(0);
|
||||
}
|
||||
@@ -1639,11 +1639,11 @@ void CreateYesNoMenu(const struct WindowTemplate *window, u16 baseTileNum, u8 pa
|
||||
{
|
||||
struct TextPrinterTemplate printer;
|
||||
|
||||
gUnknown_0203CD9F = AddWindow(window);
|
||||
SetWindowBorderStyle(gUnknown_0203CD9F, TRUE, baseTileNum, paletteNum);
|
||||
sYesNoWindowId = AddWindow(window);
|
||||
SetWindowBorderStyle(sYesNoWindowId, TRUE, baseTileNum, paletteNum);
|
||||
|
||||
printer.currentChar = gText_YesNo;
|
||||
printer.windowId = gUnknown_0203CD9F;
|
||||
printer.windowId = sYesNoWindowId;
|
||||
printer.fontId = 1;
|
||||
printer.x = 8;
|
||||
printer.y = 1;
|
||||
@@ -1657,7 +1657,7 @@ void CreateYesNoMenu(const struct WindowTemplate *window, u16 baseTileNum, u8 pa
|
||||
printer.lineSpacing = 0;
|
||||
|
||||
AddTextPrinter(&printer, 0xFF, NULL);
|
||||
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(gUnknown_0203CD9F, 2, initialCursorPos);
|
||||
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(sYesNoWindowId, 2, initialCursorPos);
|
||||
}
|
||||
|
||||
void sub_81997AC(u8 windowId, u8 a4, u8 a6, u8 a7, const struct MenuAction *strs)
|
||||
@@ -1709,26 +1709,26 @@ u8 sub_8199944(u8 windowId, u8 optionWidth, u8 horizontalCount, u8 verticalCount
|
||||
{
|
||||
s32 pos;
|
||||
|
||||
gUnknown_0203CD90.left = 0;
|
||||
gUnknown_0203CD90.top = 1;
|
||||
gUnknown_0203CD90.minCursorPos = 0;
|
||||
gUnknown_0203CD90.maxCursorPos = (horizontalCount * verticalCount) - 1;
|
||||
gUnknown_0203CD90.windowId = windowId;
|
||||
gUnknown_0203CD90.fontId = 1;
|
||||
gUnknown_0203CD90.optionWidth = optionWidth;
|
||||
gUnknown_0203CD90.optionHeight = 16;
|
||||
gUnknown_0203CD90.horizontalCount = horizontalCount;
|
||||
gUnknown_0203CD90.verticalCount = verticalCount;
|
||||
sMenu.left = 0;
|
||||
sMenu.top = 1;
|
||||
sMenu.minCursorPos = 0;
|
||||
sMenu.maxCursorPos = (horizontalCount * verticalCount) - 1;
|
||||
sMenu.windowId = windowId;
|
||||
sMenu.fontId = 1;
|
||||
sMenu.optionWidth = optionWidth;
|
||||
sMenu.optionHeight = 16;
|
||||
sMenu.horizontalCount = horizontalCount;
|
||||
sMenu.verticalCount = verticalCount;
|
||||
|
||||
pos = initialCursorPos;
|
||||
|
||||
if (pos < 0 || pos > gUnknown_0203CD90.maxCursorPos)
|
||||
gUnknown_0203CD90.cursorPos = 0;
|
||||
if (pos < 0 || pos > sMenu.maxCursorPos)
|
||||
sMenu.cursorPos = 0;
|
||||
else
|
||||
gUnknown_0203CD90.cursorPos = pos;
|
||||
sMenu.cursorPos = pos;
|
||||
|
||||
sub_8199134(0, 0);
|
||||
return gUnknown_0203CD90.cursorPos;
|
||||
return sMenu.cursorPos;
|
||||
}
|
||||
|
||||
void clear_scheduled_bg_copies_to_vram(void)
|
||||
|
||||
+1
-1
@@ -152,7 +152,7 @@ static void Task_ContinueTaskAfterMessagePrints(u8 taskId)
|
||||
gUnknown_0300117C(taskId);
|
||||
}
|
||||
|
||||
void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data)
|
||||
void DoYesNoFuncWithChoice(u8 taskId, const struct YesNoFuncTable *data)
|
||||
{
|
||||
gUnknown_0203A138 = *data;
|
||||
gTasks[taskId].func = Task_CallYesOrNoCallback;
|
||||
|
||||
+2
-2
@@ -46,7 +46,7 @@ extern void NewGameInitPCItems(void);
|
||||
extern void ClearDecorationInventories(void);
|
||||
extern void ResetFanClub(void);
|
||||
extern void copy_strings_to_sav1(void);
|
||||
extern void sub_8195E10(void);
|
||||
extern void InitMatchCallCounters(void);
|
||||
extern void sub_801AFD8(void);
|
||||
extern void sub_800E5AC(void);
|
||||
extern void sub_81D54BC(void);
|
||||
@@ -209,7 +209,7 @@ void NewGameInitData(void)
|
||||
SetLilycoveLady();
|
||||
ResetAllApprenticeData();
|
||||
ClearRankingHallRecords();
|
||||
sub_8195E10();
|
||||
InitMatchCallCounters();
|
||||
sub_801AFD8();
|
||||
sub_800E5AC();
|
||||
sub_81D54BC();
|
||||
|
||||
+2
-2
@@ -127,7 +127,7 @@ extern void ExecuteTruckSequence(void);
|
||||
extern void sub_80A0A38(void);
|
||||
extern void WriteFlashScanlineEffectBuffer(u8);
|
||||
extern void sub_81AA2F8(void);
|
||||
extern void sub_8195E10(void);
|
||||
extern void InitMatchCallCounters(void);
|
||||
extern void sub_80EDB44(void);
|
||||
extern void sub_81D64C0(void);
|
||||
extern void InitFieldMessageBox(void);
|
||||
@@ -1777,7 +1777,7 @@ void CB2_ContinueSavedGame(void)
|
||||
PlayTimeCounter_Start();
|
||||
ScriptContext1_Init();
|
||||
ScriptContext2_Disable();
|
||||
sub_8195E10();
|
||||
InitMatchCallCounters();
|
||||
if (UseContinueGameWarp() == TRUE)
|
||||
{
|
||||
ClearContinueGameWarpStatus();
|
||||
|
||||
+5
-5
@@ -2799,7 +2799,7 @@ static void sub_81B1CD0(struct Pokemon *mon, u16 item, u8 c)
|
||||
{
|
||||
GetMonNickname(mon, gStringVar1);
|
||||
CopyItemName(item, gStringVar2);
|
||||
StringExpandPlaceholders(gStringVar4, gText_RecievedItemFromPkmn);
|
||||
StringExpandPlaceholders(gStringVar4, gText_ReceivedItemFromPkmn);
|
||||
sub_81B1B5C(gStringVar4, c);
|
||||
schedule_bg_copy_tilemap_to_vram(2);
|
||||
}
|
||||
@@ -7257,10 +7257,10 @@ static void sub_81B9424(u8 taskId)
|
||||
|
||||
static void sub_81B9470(void)
|
||||
{
|
||||
gUnknown_02039F24 = GetCursorSelectionMonId();
|
||||
if (gUnknown_02039F24 >= PARTY_SIZE)
|
||||
gUnknown_02039F24 = 0xFF;
|
||||
gSpecialVar_0x8004 = gUnknown_02039F24;
|
||||
gContestMonPartyIndex = GetCursorSelectionMonId();
|
||||
if (gContestMonPartyIndex >= PARTY_SIZE)
|
||||
gContestMonPartyIndex = 0xFF;
|
||||
gSpecialVar_0x8004 = gContestMonPartyIndex;
|
||||
gFieldCallback2 = hm_add_c3_without_phase_2;
|
||||
SetMainCallback2(CB2_ReturnToField);
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ static const u16 sLandmarkData[][2] = {
|
||||
{MAPSEC_ALTERING_CAVE_2, FLAG_LANDMARK_ALTERING_CAVE},
|
||||
{MAPSEC_MIRAGE_TOWER, FLAG_LANDMARK_MIRAGE_TOWER},
|
||||
{MAPSEC_DESERT_UNDERPASS, FLAG_LANDMARK_DESERT_UNDERPASS},
|
||||
{MAPSEC_ARTISAN_CAVE, FLAG_0x8DF},
|
||||
{MAPSEC_ARTISAN_CAVE, FLAG_LANDMARK_ARTISAN_CAVE},
|
||||
{MAPSEC_NONE}
|
||||
};
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -240,7 +240,7 @@ static void CreateBattlerSprite(u8 battler)
|
||||
{
|
||||
SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(B_POSITION_PLAYER_LEFT));
|
||||
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 0x50,
|
||||
(8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].coords) * 4 + 80,
|
||||
(8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80,
|
||||
GetBattlerSpriteSubpriority(0));
|
||||
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
|
||||
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
|
||||
@@ -250,7 +250,7 @@ static void CreateBattlerSprite(u8 battler)
|
||||
{
|
||||
SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_WALLY, GetBattlerPosition(0));
|
||||
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 0x50,
|
||||
(8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_WALLY].coords) * 4 + 80,
|
||||
(8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_WALLY].size) * 4 + 80,
|
||||
GetBattlerSpriteSubpriority(0));
|
||||
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
|
||||
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
|
||||
|
||||
+4929
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -11,7 +11,7 @@ void sub_8151678(struct UnkStruct0 *r0)
|
||||
memset(&r0->var04, 0, sizeof(r0->var04));
|
||||
}
|
||||
|
||||
u8 sub_815168C(struct UnkStruct0 *r0, u8 r1, struct UnkStruct1 *r2)
|
||||
u8 sub_815168C(struct UnkStruct0 *r0, u8 r1, const struct UnkStruct1 *r2)
|
||||
{
|
||||
if (!(r1 < 16) || (r0->var04[r1].var00_7))
|
||||
return 0xFF;
|
||||
|
||||
@@ -340,7 +340,7 @@ u32 RtcGetMinuteCount(void)
|
||||
return (24 * 60) * RtcGetDayCount(&sRtc) + 60 * sRtc.hour + sRtc.minute;
|
||||
}
|
||||
|
||||
u16 RtcGetLocalDayCount(void)
|
||||
u32 RtcGetLocalDayCount(void)
|
||||
{
|
||||
return RtcGetDayCount(&sRtc);
|
||||
}
|
||||
|
||||
+13
-13
@@ -1416,7 +1416,7 @@ static void sub_80E2578(void)
|
||||
{
|
||||
gUnknown_03001124[temp] = 0;
|
||||
temp++;
|
||||
if (FlagGet(FLAG_0x1D0) == TRUE)
|
||||
if (FlagGet(FLAG_MET_SCOTT_ON_SS_TIDAL) == TRUE)
|
||||
{
|
||||
gUnknown_03001124[temp] = 1;
|
||||
temp++;
|
||||
@@ -1431,15 +1431,15 @@ static void sub_80E2578(void)
|
||||
temp++;
|
||||
}
|
||||
|
||||
if (gSpecialVar_0x8004 == 1 && FlagGet(FLAG_0x1AE) == FALSE)
|
||||
if (gSpecialVar_0x8004 == 1 && FlagGet(FLAG_HAS_EON_TICKET) == FALSE)
|
||||
{
|
||||
gUnknown_03001124[temp] = 2;
|
||||
temp++;
|
||||
FlagSet(FLAG_0x1AE);
|
||||
FlagSet(FLAG_HAS_EON_TICKET);
|
||||
}
|
||||
}
|
||||
|
||||
if (CheckBagHasItem(ITEM_MYSTIC_TICKET, 1) == TRUE && FlagGet(FLAG_0x8E0) == TRUE)
|
||||
if (CheckBagHasItem(ITEM_MYSTIC_TICKET, 1) == TRUE && FlagGet(FLAG_ENABLE_SHIP_NAVEL_ROCK) == TRUE)
|
||||
{
|
||||
if (gSpecialVar_0x8004 == 0)
|
||||
{
|
||||
@@ -1447,15 +1447,15 @@ static void sub_80E2578(void)
|
||||
temp++;
|
||||
}
|
||||
|
||||
if (gSpecialVar_0x8004 == 1 && FlagGet(FLAG_0x1DB) == FALSE)
|
||||
if (gSpecialVar_0x8004 == 1 && FlagGet(FLAG_HAS_MYSTIC_TICKET) == FALSE)
|
||||
{
|
||||
gUnknown_03001124[temp] = 3;
|
||||
temp++;
|
||||
FlagSet(FLAG_0x1DB);
|
||||
FlagSet(FLAG_HAS_MYSTIC_TICKET);
|
||||
}
|
||||
}
|
||||
|
||||
if (CheckBagHasItem(ITEM_AURORA_TICKET, 1) == TRUE && FlagGet(FLAG_0x8D5) == TRUE)
|
||||
if (CheckBagHasItem(ITEM_AURORA_TICKET, 1) == TRUE && FlagGet(FLAG_ENABLE_SHIP_BIRTH_ISLAND) == TRUE)
|
||||
{
|
||||
if (gSpecialVar_0x8004 == 0)
|
||||
{
|
||||
@@ -1463,15 +1463,15 @@ static void sub_80E2578(void)
|
||||
temp++;
|
||||
}
|
||||
|
||||
if (gSpecialVar_0x8004 == 1 && FlagGet(FLAG_0x1AF) == FALSE)
|
||||
if (gSpecialVar_0x8004 == 1 && FlagGet(FLAG_HAS_AURORA_TICKET) == FALSE)
|
||||
{
|
||||
gUnknown_03001124[temp] = 4;
|
||||
temp++;
|
||||
FlagSet(FLAG_0x1AF);
|
||||
FlagSet(FLAG_HAS_AURORA_TICKET);
|
||||
}
|
||||
}
|
||||
|
||||
if (CheckBagHasItem(ITEM_OLD_SEA_MAP, 1) == TRUE && FlagGet(FLAG_0x8D6) == TRUE)
|
||||
if (CheckBagHasItem(ITEM_OLD_SEA_MAP, 1) == TRUE && FlagGet(FLAG_ENABLE_SHIP_FARAWAY_ISLAND) == TRUE)
|
||||
{
|
||||
if (gSpecialVar_0x8004 == 0)
|
||||
{
|
||||
@@ -1479,18 +1479,18 @@ static void sub_80E2578(void)
|
||||
temp++;
|
||||
}
|
||||
|
||||
if (gSpecialVar_0x8004 == 1 && FlagGet(FLAG_0x1B0) == FALSE)
|
||||
if (gSpecialVar_0x8004 == 1 && FlagGet(FLAG_HAS_OLD_SEA_MAP) == FALSE)
|
||||
{
|
||||
gUnknown_03001124[temp] = 5;
|
||||
temp++;
|
||||
FlagSet(FLAG_0x1B0);
|
||||
FlagSet(FLAG_HAS_OLD_SEA_MAP);
|
||||
}
|
||||
}
|
||||
|
||||
gUnknown_03001124[temp] = 6;
|
||||
temp++;
|
||||
|
||||
if (gSpecialVar_0x8004 == 0 && FlagGet(FLAG_0x1D0) == TRUE)
|
||||
if (gSpecialVar_0x8004 == 0 && FlagGet(FLAG_MET_SCOTT_ON_SS_TIDAL) == TRUE)
|
||||
{
|
||||
count = temp;
|
||||
}
|
||||
|
||||
@@ -228,7 +228,7 @@ void sub_80F8AFC(void)
|
||||
|
||||
if (gIsLinkContest & 1)
|
||||
{
|
||||
for (i = 0; i < gUnknown_02039F30; i++)
|
||||
for (i = 0; i < gNumLinkContestPlayers; i++)
|
||||
{
|
||||
int version = (u8)gLinkPlayers[i].version;
|
||||
if (version == VERSION_RUBY || version == VERSION_SAPPHIRE)
|
||||
@@ -257,7 +257,7 @@ void sub_80F8B94(void)
|
||||
gReservedSpritePaletteCount = 12;
|
||||
if (gIsLinkContest & 1)
|
||||
{
|
||||
for (i = 0; i < gUnknown_02039F30; i++)
|
||||
for (i = 0; i < gNumLinkContestPlayers; i++)
|
||||
{
|
||||
eventObjectId = GetEventObjectIdByLocalIdAndMap(gUnknown_0858D8EC[i], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
|
||||
sprite = &gSprites[gEventObjects[eventObjectId].spriteId];
|
||||
@@ -285,14 +285,14 @@ u8 GiveMonArtistRibbon(void)
|
||||
{
|
||||
u8 hasArtistRibbon;
|
||||
|
||||
hasArtistRibbon = GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_ARTIST_RIBBON);
|
||||
hasArtistRibbon = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_ARTIST_RIBBON);
|
||||
if (!hasArtistRibbon && gContestFinalStandings[gContestPlayerMonIndex] == 0 && gSpecialVar_ContestRank == 3
|
||||
&& gUnknown_02039F08[gContestPlayerMonIndex] >= 800)
|
||||
{
|
||||
hasArtistRibbon = 1;
|
||||
SetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_ARTIST_RIBBON, &hasArtistRibbon);
|
||||
if (GetRibbonCount(&gPlayerParty[gUnknown_02039F24]) > 4)
|
||||
sub_80EE4DC(&gPlayerParty[gUnknown_02039F24], MON_DATA_ARTIST_RIBBON);
|
||||
SetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_ARTIST_RIBBON, &hasArtistRibbon);
|
||||
if (GetRibbonCount(&gPlayerParty[gContestMonPartyIndex]) > 4)
|
||||
sub_80EE4DC(&gPlayerParty[gContestMonPartyIndex], MON_DATA_ARTIST_RIBBON);
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -402,7 +402,7 @@ static void sub_80F8EE8(u8 taskId)
|
||||
|
||||
void ScriptGetMultiplayerId(void)
|
||||
{
|
||||
if ((gIsLinkContest & 1) && gUnknown_02039F30 == 4 && !(gIsLinkContest & 2))
|
||||
if ((gIsLinkContest & 1) && gNumLinkContestPlayers == 4 && !(gIsLinkContest & 2))
|
||||
gSpecialVar_Result = GetMultiplayerId();
|
||||
else
|
||||
gSpecialVar_Result = 4;
|
||||
|
||||
+1
-1
@@ -1033,7 +1033,7 @@ void sub_80E9FFC(u8 taskId)
|
||||
void sub_80EA06C(u8 taskId)
|
||||
{
|
||||
DisplayYesNoMenu();
|
||||
sub_8121F68(taskId, &gUnknown_0858D058);
|
||||
DoYesNoFuncWithChoice(taskId, &gUnknown_0858D058);
|
||||
}
|
||||
|
||||
void sub_80EA08C(u8 taskId)
|
||||
|
||||
+1
-1
@@ -390,7 +390,7 @@ const u8 gText_RemoveMailBeforeItem[] = _("MAIL must be removed before\nholding
|
||||
const u8 gText_PkmnWasGivenItem[] = _("{STR_VAR_1} was given the\n{STR_VAR_2} to hold.{PAUSE_UNTIL_PRESS}");
|
||||
const u8 gText_SwitchPkmnItem[] = _("{STR_VAR_1} is already holding\none {STR_VAR_2}.\pWould you like to switch the\ntwo items?");
|
||||
const u8 gText_PkmnNotHolding[] = _("{STR_VAR_1} isn't holding\nanything.{PAUSE_UNTIL_PRESS}");
|
||||
const u8 gText_RecievedItemFromPkmn[] = _("Received the {STR_VAR_2}\nfrom {STR_VAR_1}.{PAUSE_UNTIL_PRESS}");
|
||||
const u8 gText_ReceivedItemFromPkmn[] = _("Received the {STR_VAR_2}\nfrom {STR_VAR_1}.{PAUSE_UNTIL_PRESS}");
|
||||
const u8 gText_MailTakenFromPkmn[] = _("MAIL was taken from the\nPOKéMON.{PAUSE_UNTIL_PRESS}");
|
||||
const u8 gText_SwitchedPkmnItem[] = _("The {STR_VAR_2} was taken and\nreplaced with the {STR_VAR_1}.{PAUSE_UNTIL_PRESS}");
|
||||
const u8 gText_PkmnHoldingItemCantHoldMail[] = _("This POKéMON is holding an\nitem. It cannot hold MAIL.{PAUSE_UNTIL_PRESS}");
|
||||
|
||||
+10
-88
@@ -3491,13 +3491,12 @@ static u32 sub_807A5F4(struct Pokemon *monList, int a1, int monIdx)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
s32 sub_807A728(void)
|
||||
{
|
||||
s32 val;
|
||||
u16 version;
|
||||
|
||||
if (gReceivedRemoteLinkPlayers)
|
||||
if (gReceivedRemoteLinkPlayers != 0)
|
||||
{
|
||||
val = 0;
|
||||
version = (gLinkPlayers[GetMultiplayerId() ^ 1].version & 0xFF);
|
||||
@@ -3536,83 +3535,6 @@ s32 sub_807A728(void)
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
s32 sub_807A728(void)
|
||||
{
|
||||
asm_unified("push {r4-r7,lr}\n\
|
||||
ldr r0, =gReceivedRemoteLinkPlayers\n\
|
||||
ldrb r0, [r0]\n\
|
||||
cmp r0, 0\n\
|
||||
beq _0807A7B4\n\
|
||||
movs r4, 0\n\
|
||||
bl GetMultiplayerId\n\
|
||||
ldr r5, =gLinkPlayers\n\
|
||||
movs r7, 0x1\n\
|
||||
eors r0, r7\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r0, 24\n\
|
||||
lsls r1, r0, 3\n\
|
||||
subs r1, r0\n\
|
||||
lsls r1, 2\n\
|
||||
adds r1, r5\n\
|
||||
ldrb r1, [r1]\n\
|
||||
subs r0, r1, 0x1\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r0, 16\n\
|
||||
cmp r0, 0x2\n\
|
||||
bls _0807A7B4\n\
|
||||
subs r0, r1, 0x4\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r0, 16\n\
|
||||
cmp r0, 0x1\n\
|
||||
bhi _0807A762\n\
|
||||
movs r4, 0x2\n\
|
||||
_0807A762:\n\
|
||||
cmp r4, 0\n\
|
||||
ble _0807A7B4\n\
|
||||
bl GetMultiplayerId\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r0, 24\n\
|
||||
lsls r1, r0, 3\n\
|
||||
subs r1, r0\n\
|
||||
lsls r1, 2\n\
|
||||
adds r1, r5\n\
|
||||
ldrb r1, [r1, 0x12]\n\
|
||||
movs r6, 0xF0\n\
|
||||
adds r0, r6, 0\n\
|
||||
ands r0, r1\n\
|
||||
cmp r0, 0\n\
|
||||
beq _0807A7B0\n\
|
||||
cmp r4, 0x2\n\
|
||||
bne _0807A7B4\n\
|
||||
bl GetMultiplayerId\n\
|
||||
eors r0, r7\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r0, 24\n\
|
||||
lsls r1, r0, 3\n\
|
||||
subs r1, r0\n\
|
||||
lsls r1, 2\n\
|
||||
adds r1, r5\n\
|
||||
ldrb r1, [r1, 0x12]\n\
|
||||
adds r0, r6, 0\n\
|
||||
ands r0, r1\n\
|
||||
cmp r0, 0\n\
|
||||
bne _0807A7B4\n\
|
||||
movs r0, 0x2\n\
|
||||
b _0807A7B6\n\
|
||||
.pool\n\
|
||||
_0807A7B0:\n\
|
||||
movs r0, 0x1\n\
|
||||
b _0807A7B6\n\
|
||||
_0807A7B4:\n\
|
||||
movs r0, 0\n\
|
||||
_0807A7B6:\n\
|
||||
pop {r4-r7}\n\
|
||||
pop {r1}\n\
|
||||
bx r1");
|
||||
}
|
||||
#endif // NONMATCHING
|
||||
|
||||
static bool32 IsDeoxysOrMewUntradable(u16 species, bool8 isObedientBitSet)
|
||||
{
|
||||
@@ -3675,7 +3597,7 @@ int sub_807A7E0(struct UnkLinkRfuStruct_02022B14Substruct a0, struct UnkLinkRfuS
|
||||
{
|
||||
return 6;
|
||||
}
|
||||
|
||||
|
||||
if (!IsSpeciesInHoennDex(species1))
|
||||
{
|
||||
return 4;
|
||||
@@ -3745,7 +3667,7 @@ int sub_807A918(struct Pokemon *mon, u16 monIdx)
|
||||
version = gLinkPlayers[i].version & 0xFF;
|
||||
if (version == VERSION_FIRE_RED ||
|
||||
version == VERSION_LEAF_GREEN)
|
||||
{
|
||||
{
|
||||
versions = 0;
|
||||
}
|
||||
else
|
||||
@@ -3761,7 +3683,7 @@ int sub_807A918(struct Pokemon *mon, u16 monIdx)
|
||||
{
|
||||
unk = 0;
|
||||
}
|
||||
|
||||
|
||||
if (versions && (player->name[8] / 16))
|
||||
{
|
||||
unk = 0;
|
||||
@@ -3774,7 +3696,7 @@ int sub_807A918(struct Pokemon *mon, u16 monIdx)
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
|
||||
if (speciesArray[monIdx] == SPECIES_NONE)
|
||||
{
|
||||
return 3;
|
||||
@@ -4487,7 +4409,7 @@ static void sub_807B62C(u8 a0)
|
||||
BGCNT_16COLOR |
|
||||
BGCNT_SCREENBASE(18) |
|
||||
BGCNT_TXT256x512);
|
||||
|
||||
|
||||
if (gUnknown_020322A0->unk_FA)
|
||||
{
|
||||
DmaCopy16Defvars(3, gUnknown_083369A0, (void *) BG_SCREEN_ADDR(5), 0x1000);
|
||||
@@ -4553,7 +4475,7 @@ static void sub_807B62C(u8 a0)
|
||||
gUnknown_020322A0->unk_EC = 0;
|
||||
|
||||
DmaCopyLarge16(3, gUnknown_08332F60, (void *) BG_CHAR_ADDR(1), 0x2840, 0x1000);
|
||||
|
||||
|
||||
if (gUnknown_020322A0->unk_FA)
|
||||
{
|
||||
DmaCopy16Defvars(3, gUnknown_083357A0, (void *) BG_SCREEN_ADDR(18), 0x100);
|
||||
@@ -4586,7 +4508,7 @@ static void sub_807B62C(u8 a0)
|
||||
gUnknown_020322A0->unk_EC = 0;
|
||||
|
||||
DmaCopyLarge16(3, gUnknown_08332F60, (void *) BG_CHAR_ADDR(1), 0x2840, 0x1000);
|
||||
|
||||
|
||||
if (gUnknown_020322A0->unk_FA)
|
||||
{
|
||||
DmaCopy16Defvars(3, gUnknown_083357A0, (void *) BG_SCREEN_ADDR(18), 0x100);
|
||||
@@ -6227,7 +6149,7 @@ static void c3_0805465C(u8 taskId)
|
||||
|
||||
SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE2(gUnknown_020322A0->unk_FB, gUnknown_020322A0->unk_FD));
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE2(gUnknown_020322A0->unk_FC, gUnknown_020322A0->unk_FE));
|
||||
|
||||
|
||||
data[0]++;
|
||||
gUnknown_020322A0->unk_FB -= 5;
|
||||
gUnknown_020322A0->unk_FD += 5;
|
||||
@@ -6254,7 +6176,7 @@ static void sub_807F39C(u8 taskId)
|
||||
|
||||
SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE2(gUnknown_020322A0->unk_FB, gUnknown_020322A0->unk_FD));
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE2(gUnknown_020322A0->unk_FC, gUnknown_020322A0->unk_FE));
|
||||
|
||||
|
||||
if (gUnknown_020322A0->unk_FB != 120)
|
||||
{
|
||||
data[0]++;
|
||||
|
||||
@@ -1262,7 +1262,7 @@ static void InterviewAfter_ContestLiveUpdates(void)
|
||||
show2->contestLiveUpdates.active = TRUE;
|
||||
StringCopy(show2->contestLiveUpdates.playerName, gSaveBlock2Ptr->playerName);
|
||||
show2->contestLiveUpdates.category = gSpecialVar_ContestCategory;
|
||||
show2->contestLiveUpdates.species = GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_SPECIES, NULL);
|
||||
show2->contestLiveUpdates.species = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_SPECIES, NULL);
|
||||
show2->contestLiveUpdates.winningSpecies = show->contestLiveUpdates.winningSpecies;
|
||||
show2->contestLiveUpdates.appealFlags2 = show->contestLiveUpdates.appealFlags2;
|
||||
show2->contestLiveUpdates.round1Rank = show->contestLiveUpdates.round1Rank;
|
||||
@@ -1453,7 +1453,7 @@ void ContestLiveUpdates_BeforeInterview_5(u8 a0, u8 a1)
|
||||
StringCopy(show->contestLiveUpdates.winningTrainerName, gContestMons[a1].trainerName);
|
||||
StripExtCtrlCodes(show->contestLiveUpdates.winningTrainerName);
|
||||
show->contestLiveUpdates.appealFlags2 = a0;
|
||||
if (a1 + 1 > gUnknown_02039F30)
|
||||
if (a1 + 1 > gNumLinkContestPlayers)
|
||||
{
|
||||
show->contestLiveUpdates.winningTrainerLanguage = gLinkPlayers[0].language;
|
||||
}
|
||||
@@ -1516,7 +1516,7 @@ void BravoTrainerPokemonProfile_BeforeInterview1(u16 a0)
|
||||
}
|
||||
}
|
||||
|
||||
void BravoTrainerPokemonProfile_BeforeInterview2(u8 a0)
|
||||
void BravoTrainerPokemonProfile_BeforeInterview2(u8 contestStandingPlace)
|
||||
{
|
||||
TVShow *show;
|
||||
|
||||
@@ -1524,13 +1524,13 @@ void BravoTrainerPokemonProfile_BeforeInterview2(u8 a0)
|
||||
sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
|
||||
if (sCurTVShowSlot != -1)
|
||||
{
|
||||
show->bravoTrainer.contestResult = a0;
|
||||
show->bravoTrainer.contestResult = contestStandingPlace;
|
||||
show->bravoTrainer.contestCategory = gSpecialVar_ContestCategory;
|
||||
show->bravoTrainer.contestRank = gSpecialVar_ContestRank;
|
||||
show->bravoTrainer.species = GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_SPECIES, NULL);
|
||||
GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_NICKNAME, show->bravoTrainer.pokemonNickname);
|
||||
show->bravoTrainer.species = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_SPECIES, NULL);
|
||||
GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_NICKNAME, show->bravoTrainer.pokemonNickname);
|
||||
StripExtCtrlCodes(show->bravoTrainer.pokemonNickname);
|
||||
show->bravoTrainer.pokemonNameLanguage = GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_LANGUAGE);
|
||||
show->bravoTrainer.pokemonNameLanguage = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_LANGUAGE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3538,7 +3538,7 @@ u8 CheckForBigMovieOrEmergencyNewsOnTV(void)
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
if (FlagGet(FLAG_SYS_TV_LATI) == TRUE)
|
||||
if (FlagGet(FLAG_SYS_TV_LATIAS_LATIOS) == TRUE)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user