Merge branch 'master' into doc-link

This commit is contained in:
GriffinR 2020-06-10 17:36:43 -04:00 committed by GitHub
commit a9a427c6f2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 520 additions and 914 deletions

View File

Before

Width:  |  Height:  |  Size: 231 B

After

Width:  |  Height:  |  Size: 231 B

View File

@ -489,7 +489,7 @@ $(ROULETTEGFXDIR)/poke_icons2.4bpp: $(ROULETTEGFXDIR)/wynaut.4bpp \
$(ROULETTEGFXDIR)/makuhita.4bpp
@cat $^ >$@
$(BATTRANSGFXDIR)/85BBC14.4bpp: %.4bpp: %.png
$(BATTRANSGFXDIR)/regis.4bpp: %.4bpp: %.png
$(GFX) $< $@ -num_tiles 53
$(BATTRANSGFXDIR)/rayquaza.4bpp: %.4bpp: %.png

View File

@ -7,7 +7,7 @@ void BattleTransition_Start(u8 transitionId);
bool8 IsBattleTransitionDone(void);
bool8 FldEff_Pokeball(void);
void TransitionPhase1_Task_RunFuncs(u8 taskId);
void sub_8149F58(u16 **a0, u16 **a1);
void GetBg0TilesDst(u16 **tilemap, u16 **tileset);
extern const struct SpritePalette gFieldEffectObjectPaletteInfo10;

View File

@ -10,8 +10,8 @@ enum
};
bool8 ShowFieldMessage(const u8 *message);
bool8 sub_8098238(const u8 *message);
bool8 sub_80982B8(void);
bool8 ShowPokenavFieldMessage(const u8 *message);
bool8 ShowFieldMessageFromBuffer(void);
bool8 ShowFieldAutoScrollMessage(const u8 *message);
void HideFieldMessageBox(void);
bool8 IsFieldMessageBoxHidden(void);

View File

@ -14,7 +14,7 @@ s32 GetRematchIdxByTrainerIdx(s32 trainerIdx);
void InitMatchCallCounters(void);
bool32 TryStartMatchCall(void);
bool32 IsMatchCallTaskActive(void);
void StartMatchCallFromScript(u8 *message);
void StartMatchCallFromScript(const u8 *message);
void BufferPokedexRatingForMatchCall(u8 *destStr);
bool32 SelectMatchCallMessage(int, u8 *);
void sub_8197184(u32 windowId, u32 destOffset, u32 paletteId);

View File

@ -41,7 +41,7 @@ struct ShopData
/*0x200B*/ u8 scrollIndicatorsTaskId;
/*0x200C*/ u8 iconSlot;
/*0x200D*/ u8 itemSpriteIds[2];
/*0x2010*/ s16 viewportObjects[16][5];
/*0x2010*/ s16 viewportObjects[OBJECT_EVENTS_COUNT][5];
};
void CreatePokemartMenu(const u16 *);

View File

@ -1360,7 +1360,7 @@ void ShowTrainerIntroSpeech(void)
else
CopyPyramidTrainerSpeechBefore(LocalIdToPyramidTrainerId(gObjectEvents[gApproachingTrainers[gApproachingTrainerId].objectEventId].localId));
sub_80982B8();
ShowFieldMessageFromBuffer();
}
else if (InTrainerHillChallenge())
{
@ -1369,7 +1369,7 @@ void ShowTrainerIntroSpeech(void)
else
CopyTrainerHillTrainerText(TRAINER_HILL_TEXT_INTRO, LocalIdToHillTrainerId(gObjectEvents[gApproachingTrainers[gApproachingTrainerId].objectEventId].localId));
sub_80982B8();
ShowFieldMessageFromBuffer();
}
else
{

File diff suppressed because it is too large Load Diff

View File

@ -5,128 +5,136 @@
#include "task.h"
#include "text.h"
#include "match_call.h"
#include "field_message_box.h"
static EWRAM_DATA u8 sFieldMessageBoxMode = 0;
static void textbox_fdecode_auto_and_task_add(u8*, bool32);
static void textbox_auto_and_task_add(void);
static void ExpandStringAndStartDrawFieldMessage(const u8*, bool32);
static void StartDrawFieldMessage(void);
void InitFieldMessageBox(void)
{
sFieldMessageBoxMode = 0;
gTextFlags.canABSpeedUpPrint = 0;
gTextFlags.useAlternateDownArrow = 0;
gTextFlags.autoScroll = 0;
gTextFlags.forceMidTextSpeed = 0;
sFieldMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN;
gTextFlags.canABSpeedUpPrint = FALSE;
gTextFlags.useAlternateDownArrow = FALSE;
gTextFlags.autoScroll = FALSE;
gTextFlags.forceMidTextSpeed = FALSE;
}
static void sub_8098154(u8 taskId)
#define tState data[0]
static void Task_DrawFieldMessage(u8 taskId)
{
struct Task *task = &gTasks[taskId];
switch (task->data[0])
switch (task->tState)
{
case 0:
LoadMessageBoxAndBorderGfx();
task->data[0]++;
task->tState++;
break;
case 1:
DrawDialogueFrame(0, 1);
task->data[0]++;
task->tState++;
break;
case 2:
if (RunTextPrintersAndIsPrinter0Active() != 1)
if (RunTextPrintersAndIsPrinter0Active() != TRUE)
{
sFieldMessageBoxMode = 0;
sFieldMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN;
DestroyTask(taskId);
}
}
}
static void task_add_textbox(void)
#undef tState
static void CreateTask_DrawFieldMessage(void)
{
CreateTask(sub_8098154, 0x50);
CreateTask(Task_DrawFieldMessage, 0x50);
}
static void task_del_textbox(void)
static void DestroyTask_DrawFieldMessage(void)
{
u8 taskId = FindTaskIdByFunc(sub_8098154);
u8 taskId = FindTaskIdByFunc(Task_DrawFieldMessage);
if (taskId != 0xFF)
DestroyTask(taskId);
}
bool8 ShowFieldMessage(u8 *str)
bool8 ShowFieldMessage(const u8 *str)
{
if (sFieldMessageBoxMode != 0)
if (sFieldMessageBoxMode != FIELD_MESSAGE_BOX_HIDDEN)
return FALSE;
textbox_fdecode_auto_and_task_add(str, 1);
sFieldMessageBoxMode = 2;
ExpandStringAndStartDrawFieldMessage(str, TRUE);
sFieldMessageBoxMode = FIELD_MESSAGE_BOX_NORMAL;
return TRUE;
}
void sub_8098214(u8 taskId)
static void Task_HidePokenavMessageWhenDone(u8 taskId)
{
if (!IsMatchCallTaskActive())
{
sFieldMessageBoxMode = 0;
sFieldMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN;
DestroyTask(taskId);
}
}
bool8 sub_8098238(u8 *str)
bool8 ShowPokenavFieldMessage(const u8 *str)
{
if (sFieldMessageBoxMode != 0)
if (sFieldMessageBoxMode != FIELD_MESSAGE_BOX_HIDDEN)
return FALSE;
StringExpandPlaceholders(gStringVar4, str);
CreateTask(sub_8098214, 0);
CreateTask(Task_HidePokenavMessageWhenDone, 0);
StartMatchCallFromScript(str);
sFieldMessageBoxMode = 2;
return TRUE;
}
bool8 ShowFieldAutoScrollMessage(u8 *str)
bool8 ShowFieldAutoScrollMessage(const u8 *str)
{
if (sFieldMessageBoxMode != 0)
if (sFieldMessageBoxMode != FIELD_MESSAGE_BOX_HIDDEN)
return FALSE;
sFieldMessageBoxMode = 3;
textbox_fdecode_auto_and_task_add(str, 0);
sFieldMessageBoxMode = FIELD_MESSAGE_BOX_AUTO_SCROLL;
ExpandStringAndStartDrawFieldMessage(str, FALSE);
return TRUE;
}
bool8 sub_80982A0(u8 *str)
// Unused
static bool8 ForceShowFieldAutoScrollMessage(const u8 *str)
{
sFieldMessageBoxMode = 3;
textbox_fdecode_auto_and_task_add(str, 1);
sFieldMessageBoxMode = FIELD_MESSAGE_BOX_AUTO_SCROLL;
ExpandStringAndStartDrawFieldMessage(str, TRUE);
return TRUE;
}
bool8 sub_80982B8(void)
// Same as ShowFieldMessage, but instead of accepting a
// string arg it just prints whats already in gStringVar4
bool8 ShowFieldMessageFromBuffer(void)
{
if (sFieldMessageBoxMode != 0)
if (sFieldMessageBoxMode != FIELD_MESSAGE_BOX_HIDDEN)
return FALSE;
sFieldMessageBoxMode = 2;
textbox_auto_and_task_add();
sFieldMessageBoxMode = FIELD_MESSAGE_BOX_NORMAL;
StartDrawFieldMessage();
return TRUE;
}
static void textbox_fdecode_auto_and_task_add(u8* str, bool32 allowSkippingDelayWithButtonPress)
static void ExpandStringAndStartDrawFieldMessage(const u8* str, bool32 allowSkippingDelayWithButtonPress)
{
StringExpandPlaceholders(gStringVar4, str);
AddTextPrinterForMessage(allowSkippingDelayWithButtonPress);
task_add_textbox();
CreateTask_DrawFieldMessage();
}
static void textbox_auto_and_task_add(void)
static void StartDrawFieldMessage(void)
{
AddTextPrinterForMessage(TRUE);
task_add_textbox();
CreateTask_DrawFieldMessage();
}
void HideFieldMessageBox(void)
{
task_del_textbox();
DestroyTask_DrawFieldMessage();
ClearDialogWindowAndFrame(0, 1);
sFieldMessageBoxMode = 0;
sFieldMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN;
}
u8 GetFieldMessageBoxMode(void)
@ -136,20 +144,21 @@ u8 GetFieldMessageBoxMode(void)
bool8 IsFieldMessageBoxHidden(void)
{
if (sFieldMessageBoxMode == 0)
if (sFieldMessageBoxMode == FIELD_MESSAGE_BOX_HIDDEN)
return TRUE;
return FALSE;
}
void sub_8098358(void)
// Unused
static void ReplaceFieldMessageWithFrame(void)
{
task_del_textbox();
DestroyTask_DrawFieldMessage();
DrawStdWindowFrame(0, 1);
sFieldMessageBoxMode = 0;
sFieldMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN;
}
void StopFieldMessage(void)
{
task_del_textbox();
sFieldMessageBoxMode = 0;
DestroyTask_DrawFieldMessage();
sFieldMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN;
}

View File

@ -1098,7 +1098,7 @@ bool32 TryStartMatchCall(void)
return FALSE;
}
void StartMatchCallFromScript(u8 *message)
void StartMatchCallFromScript(const u8 *message)
{
gMatchCallState.triggeredFromScript = 1;
StartMatchCall();

View File

@ -35,31 +35,31 @@ void PlayTimeCounter_Stop(void)
void PlayTimeCounter_Update(void)
{
if (sPlayTimeCounterState == RUNNING)
{
gSaveBlock2Ptr->playTimeVBlanks++;
if (sPlayTimeCounterState != RUNNING)
return;
if (gSaveBlock2Ptr->playTimeVBlanks > 59)
{
gSaveBlock2Ptr->playTimeVBlanks = 0;
gSaveBlock2Ptr->playTimeSeconds++;
gSaveBlock2Ptr->playTimeVBlanks++;
if (gSaveBlock2Ptr->playTimeSeconds > 59)
{
gSaveBlock2Ptr->playTimeSeconds = 0;
gSaveBlock2Ptr->playTimeMinutes++;
if (gSaveBlock2Ptr->playTimeVBlanks < 60)
return;
if (gSaveBlock2Ptr->playTimeMinutes > 59)
{
gSaveBlock2Ptr->playTimeMinutes = 0;
gSaveBlock2Ptr->playTimeHours++;
gSaveBlock2Ptr->playTimeVBlanks = 0;
gSaveBlock2Ptr->playTimeSeconds++;
if (gSaveBlock2Ptr->playTimeHours > 999)
PlayTimeCounter_SetToMax();
}
}
}
}
if (gSaveBlock2Ptr->playTimeSeconds < 60)
return;
gSaveBlock2Ptr->playTimeSeconds = 0;
gSaveBlock2Ptr->playTimeMinutes++;
if (gSaveBlock2Ptr->playTimeMinutes < 60)
return;
gSaveBlock2Ptr->playTimeMinutes = 0;
gSaveBlock2Ptr->playTimeHours++;
if (gSaveBlock2Ptr->playTimeHours > 999)
PlayTimeCounter_SetToMax();
}
void PlayTimeCounter_SetToMax(void)

View File

@ -1282,7 +1282,7 @@ bool8 ScrCmd_pokenavcall(struct ScriptContext *ctx)
if (msg == NULL)
msg = (const u8 *)ctx->data[0];
sub_8098238(msg);
ShowPokenavFieldMessage(msg);
return FALSE;
}

View File

@ -796,15 +796,15 @@ static void BuyMenuCollectObjectEventData(void)
u8 r8 = 0;
GetXYCoordsOneStepInFrontOfPlayer(&facingX, &facingY);
for (y = 0; y < 16; y++)
gShopDataPtr->viewportObjects[y][OBJ_EVENT_ID] = 16;
for (y = 0; y < OBJECT_EVENTS_COUNT; y++)
gShopDataPtr->viewportObjects[y][OBJ_EVENT_ID] = OBJECT_EVENTS_COUNT;
for (y = 0; y < 5; y++)
{
for (x = 0; x < 7; x++)
{
u8 objEventId = GetObjectEventIdByXY(facingX - 4 + x, facingY - 2 + y);
if (objEventId != 16)
if (objEventId != OBJECT_EVENTS_COUNT)
{
gShopDataPtr->viewportObjects[r8][OBJ_EVENT_ID] = objEventId;
gShopDataPtr->viewportObjects[r8][X_COORD] = x;
@ -839,9 +839,9 @@ static void BuyMenuDrawObjectEvents(void)
u8 spriteId;
const struct ObjectEventGraphicsInfo *graphicsInfo;
for (i = 0; i < 16; i++) // max objects?
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
{
if (gShopDataPtr->viewportObjects[i][OBJ_EVENT_ID] == 16)
if (gShopDataPtr->viewportObjects[i][OBJ_EVENT_ID] == OBJECT_EVENTS_COUNT)
continue;
graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[gShopDataPtr->viewportObjects[i][OBJ_EVENT_ID]].graphicsId);

View File

@ -904,7 +904,7 @@ const u8 *GetTrainerHillTrainerScript(void)
static void ShowTrainerHillPostBattleText(void)
{
CopyTrainerHillTrainerText(TRAINER_HILL_TEXT_AFTER, gSpecialVar_LastTalked);
sub_80982B8();
ShowFieldMessageFromBuffer();
}
static void CreateNPCTrainerHillParty(u16 trainerId, u8 firstMonId)

528
src/tv.c
View File

@ -3800,25 +3800,28 @@ static s8 sub_80F06D0(TVShow *tvShows)
return -1;
}
#ifdef NONMATCHING
static void sub_80F0708(void) // FIXME: register allocation shenanigans
{
u16 i;
TVShow *show;
u16 j;
for (i = 0; i < LAST_TVSHOW_IDX; i ++)
{
switch (gSaveBlock1Ptr->tvShows[i].common.kind)
{
case TVSHOW_CONTEST_LIVE_UPDATES:
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->contestLiveUpdates.species, i);
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->contestLiveUpdates.winningSpecies, i);
j = (&gSaveBlock1Ptr->tvShows[i])->contestLiveUpdates.species;
sub_80F0B24(j, i);
j = (&gSaveBlock1Ptr->tvShows[i])->contestLiveUpdates.winningSpecies;
sub_80F0B24(j, i);
break;
case TVSHOW_3_CHEERS_FOR_POKEBLOCKS:
break;
case TVSHOW_BATTLE_UPDATE:
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleUpdate.speciesPlayer, i);
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleUpdate.speciesOpponent, i);
j = (&gSaveBlock1Ptr->tvShows[i])->battleUpdate.speciesPlayer;
sub_80F0B24(j, i);
j = (&gSaveBlock1Ptr->tvShows[i])->battleUpdate.speciesOpponent;
sub_80F0B24(j, i);
break;
case TVSHOW_FAN_CLUB_SPECIAL:
break;
@ -3828,43 +3831,57 @@ static void sub_80F0708(void) // FIXME: register allocation shenanigans
case TVSHOW_OFF_AIR:
break;
case TVSHOW_FAN_CLUB_LETTER:
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->fanclubLetter.species, i);
j = (&gSaveBlock1Ptr->tvShows[i])->fanclubLetter.species;
sub_80F0B24(j, i);
break;
case TVSHOW_RECENT_HAPPENINGS:
break;
case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->fanclubOpinions.species, i);
j = (&gSaveBlock1Ptr->tvShows[i])->fanclubOpinions.species;
sub_80F0B24(j, i);
break;
case TVSHOW_UNKN_SHOWTYPE_04:
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->unkShow04.var06, i);
j = (&gSaveBlock1Ptr->tvShows[i])->unkShow04.var06;
sub_80F0B24(j, i);
break;
case TVSHOW_NAME_RATER_SHOW:
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->nameRaterShow.species, i);
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->nameRaterShow.randomSpecies, i);
j = (&gSaveBlock1Ptr->tvShows[i])->nameRaterShow.species;
sub_80F0B24(j, i);
j = (&gSaveBlock1Ptr->tvShows[i])->nameRaterShow.randomSpecies;
sub_80F0B24(j, i);
break;
case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->bravoTrainer.species, i);
j = (&gSaveBlock1Ptr->tvShows[i])->bravoTrainer.species;
sub_80F0B24(j, i);
break;
case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->bravoTrainerTower.species, i);
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->bravoTrainerTower.defeatedSpecies, i);
j = (&gSaveBlock1Ptr->tvShows[i])->bravoTrainerTower.species;
sub_80F0B24(j, i);
j = (&gSaveBlock1Ptr->tvShows[i])->bravoTrainerTower.defeatedSpecies;
sub_80F0B24(j, i);
break;
case TVSHOW_POKEMON_TODAY_CAUGHT:
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->pokemonToday.species, i);
j = (&gSaveBlock1Ptr->tvShows[i])->pokemonToday.species;
sub_80F0B24(j, i);
break;
case TVSHOW_SMART_SHOPPER:
break;
case TVSHOW_POKEMON_TODAY_FAILED:
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->pokemonTodayFailed.species, i);
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->pokemonTodayFailed.species2, i);
j = (&gSaveBlock1Ptr->tvShows[i])->pokemonTodayFailed.species;
sub_80F0B24(j, i);
j = (&gSaveBlock1Ptr->tvShows[i])->pokemonTodayFailed.species2;
sub_80F0B24(j, i);
break;
case TVSHOW_FISHING_ADVICE:
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->pokemonAngler.species, i);
j = (&gSaveBlock1Ptr->tvShows[i])->pokemonAngler.species;
sub_80F0B24(j, i);
break;
case TVSHOW_WORLD_OF_MASTERS:
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->worldOfMasters.species, i);
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->worldOfMasters.caughtPoke, i);
j = (&gSaveBlock1Ptr->tvShows[i])->worldOfMasters.species;
sub_80F0B24(j, i);
j = (&gSaveBlock1Ptr->tvShows[i])->worldOfMasters.caughtPoke;
sub_80F0B24(j, i);
break;
case TVSHOW_TODAYS_RIVAL_TRAINER:
@ -3876,37 +3893,48 @@ static void sub_80F0708(void) // FIXME: register allocation shenanigans
case TVSHOW_FIND_THAT_GAMER:
break;
case TVSHOW_BREAKING_NEWS:
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->breakingNews.lastOpponentSpecies, i);
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->breakingNews.poke1Species, i);
j = (&gSaveBlock1Ptr->tvShows[i])->breakingNews.lastOpponentSpecies;
sub_80F0B24(j, i);
j = (&gSaveBlock1Ptr->tvShows[i])->breakingNews.poke1Species;
sub_80F0B24(j, i);
break;
case TVSHOW_SECRET_BASE_VISIT:
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->secretBaseVisit.species, i);
j = (&gSaveBlock1Ptr->tvShows[i])->secretBaseVisit.species;
sub_80F0B24(j, i);
break;
case TVSHOW_LOTTO_WINNER:
break;
case TVSHOW_BATTLE_SEMINAR:
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleSeminar.species, i);
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleSeminar.foeSpecies, i);
j = (&gSaveBlock1Ptr->tvShows[i])->battleSeminar.species;
sub_80F0B24(j, i);
j = (&gSaveBlock1Ptr->tvShows[i])->battleSeminar.foeSpecies;
sub_80F0B24(j, i);
break;
case TVSHOW_TRAINER_FAN_CLUB:
break;
case TVSHOW_CUTIES:
break;
case TVSHOW_FRONTIER:
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species1, i);
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species2, i);
switch ((&gSaveBlock1Ptr->tvShows[i])->frontier.facility)
j = (&gSaveBlock1Ptr->tvShows[i])->frontier.species1;
sub_80F0B24(j, i);
j = (&gSaveBlock1Ptr->tvShows[i])->frontier.species2;
sub_80F0B24(j, i);
j = (&gSaveBlock1Ptr->tvShows[i])->frontier.facility;
switch (j)
{
case 3:
case 4:
break;
case 1:
case 5 ... 13:
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species3, i);
j = (&gSaveBlock1Ptr->tvShows[i])->frontier.species3;
sub_80F0B24(j, i);
break;
case 2:
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species3, i);
sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species4, i);
j = (&gSaveBlock1Ptr->tvShows[i])->frontier.species3;
sub_80F0B24(j, i);
j = (&gSaveBlock1Ptr->tvShows[i])->frontier.species4;
sub_80F0B24(j, i);
break;
}
break;
@ -3926,444 +3954,6 @@ static void sub_80F0708(void) // FIXME: register allocation shenanigans
}
}
}
#else
NAKED static void sub_80F0708(void)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tmov r7, r9\n"
"\tmov r6, r8\n"
"\tpush {r6,r7}\n"
"\tsub sp, 0x8\n"
"\tmovs r0, 0\n"
"\tmov r9, r0\n"
"_080F0716:\n"
"\tldr r3, =gSaveBlock1Ptr\n"
"\tldr r1, [r3]\n"
"\tmov r4, r9\n"
"\tlsls r2, r4, 3\n"
"\tadds r0, r2, r4\n"
"\tlsls r0, 2\n"
"\tadds r1, r0\n"
"\tldr r0, =0x000027cc\n"
"\tadds r1, r0\n"
"\tldrb r0, [r1]\n"
"\tadds r7, r2, 0\n"
"\tcmp r0, 0x29\n"
"\tbls _080F0732\n"
"\tb _080F0AD8\n"
"_080F0732:\n"
"\tlsls r0, 2\n"
"\tldr r1, =_080F0748\n"
"\tadds r0, r1\n"
"\tldr r0, [r0]\n"
"\tmov pc, r0\n"
"\t.pool\n"
"\t.align 2, 0\n"
"_080F0748:\n"
"\t.4byte _080F0AE2_break @ TVSHOW_OFF_AIR\n"
"\t.4byte _080F0848 @ TVSHOW_FAN_CLUB_LETTER\n"
"\t.4byte _080F0AE2_break @ TVSHOW_RECENT_HAPPENINGS\n"
"\t.4byte _080F0860 @ TVSHOW_PKMN_FAN_CLUB_OPINIONS\n"
"\t.4byte _080F0878 @ TVSHOW_UNKN_SHOWTYPE_04\n"
"\t.4byte _080F0890 @ TVSHOW_NAME_RATER_SHOW\n"
"\t.4byte _080F08BC @ TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE\n"
"\t.4byte _080F08D4 @ TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE\n"
"\t.4byte _080F07F0 @ TVSHOW_CONTEST_LIVE_UPDATES\n"
"\t.4byte _080F0AE2_break @ TVSHOW_3_CHEERS_FOR_POKEBLOCKS\n"
"\t.4byte _080F081C @ TVSHOW_BATTLE_UPDATE\n"
"\t.4byte _080F0AE2_break @ TVSHOW_FAN_CLUB_SPECIAL\n"
"\t.4byte _080F0AE2_break @ TVSHOW_CONTEST_LIVE_UPDATES_2\n"
"\t.4byte _080F0AD8 @ \n"
"\t.4byte _080F0AD8 @ \n"
"\t.4byte _080F0AD8 @ \n"
"\t.4byte _080F0AD8 @ \n"
"\t.4byte _080F0AD8 @ \n"
"\t.4byte _080F0AD8 @ \n"
"\t.4byte _080F0AD8 @ \n"
"\t.4byte _080F0AD8 @ \n"
"\t.4byte _080F0900 @ TVSHOW_POKEMON_TODAY_CAUGHT\n"
"\t.4byte _080F0AE2_break @ TVSHOW_SMART_SHOPPER\n"
"\t.4byte _080F0918 @ TVSHOW_POKEMON_TODAY_FAILED\n"
"\t.4byte _080F0944 @ TVSHOW_FISHING_ADVICE\n"
"\t.4byte _080F095C @ TVSHOW_WORLD_OF_MASTERS\n"
"\t.4byte _080F0AE2_break @ TVSHOW_TODAYS_RIVAL_TRAINER\n"
"\t.4byte _080F0AE2_break @ TVSHOW_TREND_WATCHER\n"
"\t.4byte _080F0AE2_break @ TVSHOW_TREASURE_INVESTIGATORS\n"
"\t.4byte _080F0AE2_break @ TVSHOW_FIND_THAT_GAMER\n"
"\t.4byte _080F0974 @ TVSHOW_BREAKING_NEWS\n"
"\t.4byte _080F09A0 @ TVSHOW_SECRET_BASE_VISIT\n"
"\t.4byte _080F0AE2_break @ TVSHOW_LOTTO_WINNER\n"
"\t.4byte _080F09C0 @ TVSHOW_BATTLE_SEMINAR\n"
"\t.4byte _080F0AE2_break @ TVSHOW_TRAINER_FAN_CLUB\n"
"\t.4byte _080F0AE2_break @ TVSHOW_CUTIES\n"
"\t.4byte _080F09F4 @ TVSHOW_FRONTIER\n"
"\t.4byte _080F0AE2_break @ TVSHOW_NUMBER_ONE\n"
"\t.4byte _080F0AE2_break @ TVSHOW_SECRET_BASE_SECRETS\n"
"\t.4byte _080F0AE2_break @ TVSHOW_SAFARI_FAN_CLUB\n"
"\t.4byte _080F0AD8 @ \n"
"\t.4byte _080F0AE2_break @ TVSHOW_MASS_OUTBREAK\n"
"_080F07F0:\n"
"\tldr r0, [r3]\n"
"\tmov r1, r9\n"
"\tadds r4, r7, r1\n"
"\tlsls r4, 2\n"
"\tadds r0, r4, r0\n"
"\tldr r6, =0x000027cc\n"
"\tadds r0, r6\n"
"\tldrh r0, [r0, 0x12]\n"
"\tlsls r5, r1, 24\n"
"\tlsrs r5, 24\n"
"\tadds r1, r5, 0\n"
"\tstr r3, [sp, 0x4]\n"
"\tbl sub_80F0B24\n"
"\tldr r3, [sp, 0x4]\n"
"\tldr r0, [r3]\n"
"\tadds r4, r0\n"
"\tadds r4, r6\n"
"\tldrh r0, [r4, 0x2]\n"
"\tb _080F09E6\n"
"\t.pool\n"
"_080F081C:\n"
"\tldr r0, [r3]\n"
"\tmov r2, r9\n"
"\tadds r4, r7, r2\n"
"\tlsls r4, 2\n"
"\tadds r0, r4, r0\n"
"\tldr r6, =0x000027cc\n"
"\tadds r0, r6\n"
"\tldrh r0, [r0, 0x16]\n"
"\tlsls r5, r2, 24\n"
"\tlsrs r5, 24\n"
"\tadds r1, r5, 0\n"
"\tstr r3, [sp, 0x4]\n"
"\tbl sub_80F0B24\n"
"\tldr r3, [sp, 0x4]\n"
"\tldr r0, [r3]\n"
"\tadds r4, r0\n"
"\tadds r4, r6\n"
"\tldrh r0, [r4, 0x2]\n"
"\tb _080F09E6\n"
"\t.pool\n"
"_080F0848:\n"
"\tldr r0, [r3]\n"
"\tmov r4, r9\n"
"\tadds r1, r7, r4\n"
"\tlsls r1, 2\n"
"\tadds r1, r0\n"
"\tldr r0, =0x000027cc\n"
"\tadds r1, r0\n"
"\tldrh r0, [r1, 0x2]\n"
"\tb _080F09B0\n"
"\t.pool\n"
"_080F0860:\n"
"\tldr r0, [r3]\n"
"\tmov r2, r9\n"
"\tadds r1, r7, r2\n"
"\tlsls r1, 2\n"
"\tadds r1, r0\n"
"\tldr r4, =0x000027cc\n"
"\tadds r1, r4\n"
"\tldrh r0, [r1, 0x2]\n"
"\tlsls r1, r2, 24\n"
"\tb _080F09B2\n"
"\t.pool\n"
"_080F0878:\n"
"\tldr r0, [r3]\n"
"\tmov r2, r9\n"
"\tadds r1, r7, r2\n"
"\tlsls r1, 2\n"
"\tadds r1, r0\n"
"\tldr r4, =0x000027cc\n"
"\tadds r1, r4\n"
"\tldrh r0, [r1, 0x6]\n"
"\tlsls r1, r2, 24\n"
"\tb _080F09B2\n"
"\t.pool\n"
"_080F0890:\n"
"\tldr r0, [r3]\n"
"\tmov r1, r9\n"
"\tadds r4, r7, r1\n"
"\tlsls r4, 2\n"
"\tadds r0, r4, r0\n"
"\tldr r6, =0x000027cc\n"
"\tadds r0, r6\n"
"\tldrh r0, [r0, 0x2]\n"
"\tlsls r5, r1, 24\n"
"\tlsrs r5, 24\n"
"\tadds r1, r5, 0\n"
"\tstr r3, [sp, 0x4]\n"
"\tbl sub_80F0B24\n"
"\tldr r3, [sp, 0x4]\n"
"\tldr r0, [r3]\n"
"\tadds r4, r0\n"
"\tadds r4, r6\n"
"\tldrh r0, [r4, 0x1C]\n"
"\tb _080F09E6\n"
"\t.pool\n"
"_080F08BC:\n"
"\tldr r0, [r3]\n"
"\tmov r2, r9\n"
"\tadds r1, r7, r2\n"
"\tlsls r1, 2\n"
"\tadds r1, r0\n"
"\tldr r4, =0x000027cc\n"
"\tadds r1, r4\n"
"\tldrh r0, [r1, 0x2]\n"
"\tlsls r1, r2, 24\n"
"\tb _080F09B2\n"
"\t.pool\n"
"_080F08D4:\n"
"\tldr r0, [r3]\n"
"\tmov r1, r9\n"
"\tadds r4, r7, r1\n"
"\tlsls r4, 2\n"
"\tadds r0, r4, r0\n"
"\tldr r6, =0x000027cc\n"
"\tadds r0, r6\n"
"\tldrh r0, [r0, 0xA]\n"
"\tlsls r5, r1, 24\n"
"\tlsrs r5, 24\n"
"\tadds r1, r5, 0\n"
"\tstr r3, [sp, 0x4]\n"
"\tbl sub_80F0B24\n"
"\tldr r3, [sp, 0x4]\n"
"\tldr r0, [r3]\n"
"\tadds r4, r0\n"
"\tadds r4, r6\n"
"\tldrh r0, [r4, 0x14]\n"
"\tb _080F09E6\n"
"\t.pool\n"
"_080F0900:\n"
"\tldr r0, [r3]\n"
"\tmov r2, r9\n"
"\tadds r1, r7, r2\n"
"\tlsls r1, 2\n"
"\tadds r1, r0\n"
"\tldr r4, =0x000027cc\n"
"\tadds r1, r4\n"
"\tldrh r0, [r1, 0x10]\n"
"\tlsls r1, r2, 24\n"
"\tb _080F09B2\n"
"\t.pool\n"
"_080F0918:\n"
"\tldr r0, [r3]\n"
"\tmov r1, r9\n"
"\tadds r4, r7, r1\n"
"\tlsls r4, 2\n"
"\tadds r0, r4, r0\n"
"\tldr r6, =0x000027cc\n"
"\tadds r0, r6\n"
"\tldrh r0, [r0, 0xC]\n"
"\tlsls r5, r1, 24\n"
"\tlsrs r5, 24\n"
"\tadds r1, r5, 0\n"
"\tstr r3, [sp, 0x4]\n"
"\tbl sub_80F0B24\n"
"\tldr r3, [sp, 0x4]\n"
"\tldr r0, [r3]\n"
"\tadds r4, r0\n"
"\tadds r4, r6\n"
"\tldrh r0, [r4, 0xE]\n"
"\tb _080F09E6\n"
"\t.pool\n"
"_080F0944:\n"
"\tldr r0, [r3]\n"
"\tmov r2, r9\n"
"\tadds r1, r7, r2\n"
"\tlsls r1, 2\n"
"\tadds r1, r0\n"
"\tldr r4, =0x000027cc\n"
"\tadds r1, r4\n"
"\tldrh r0, [r1, 0x4]\n"
"\tlsls r1, r2, 24\n"
"\tb _080F09B2\n"
"\t.pool\n"
"_080F095C:\n"
"\tldr r0, [r3]\n"
"\tmov r1, r9\n"
"\tadds r4, r7, r1\n"
"\tlsls r4, 2\n"
"\tadds r0, r4, r0\n"
"\tldr r6, =0x000027cc\n"
"\tadds r0, r6\n"
"\tldrh r0, [r0, 0x8]\n"
"\tb _080F09D0\n"
"\t.pool\n"
"_080F0974:\n"
"\tldr r0, [r3]\n"
"\tmov r2, r9\n"
"\tadds r4, r7, r2\n"
"\tlsls r4, 2\n"
"\tadds r0, r4, r0\n"
"\tldr r6, =0x000027cc\n"
"\tadds r0, r6\n"
"\tldrh r0, [r0, 0x2]\n"
"\tlsls r5, r2, 24\n"
"\tlsrs r5, 24\n"
"\tadds r1, r5, 0\n"
"\tstr r3, [sp, 0x4]\n"
"\tbl sub_80F0B24\n"
"\tldr r3, [sp, 0x4]\n"
"\tldr r0, [r3]\n"
"\tadds r4, r0\n"
"\tadds r4, r6\n"
"\tldrh r0, [r4, 0xA]\n"
"\tb _080F09E6\n"
"\t.pool\n"
"_080F09A0:\n"
"\tldr r0, [r3]\n"
"\tmov r4, r9\n"
"\tadds r1, r7, r4\n"
"\tlsls r1, 2\n"
"\tadds r1, r0\n"
"\tldr r0, =0x000027cc\n"
"\tadds r1, r0\n"
"\tldrh r0, [r1, 0x8]\n"
"_080F09B0:\n"
"\tlsls r1, r4, 24\n"
"_080F09B2:\n"
"\tlsrs r1, 24\n"
"\tbl sub_80F0B24\n"
"\tb _080F0AE2_break\n"
"\t.pool\n"
"_080F09C0:\n"
"\tldr r0, [r3]\n"
"\tmov r1, r9\n"
"\tadds r4, r7, r1\n"
"\tlsls r4, 2\n"
"\tadds r0, r4, r0\n"
"\tldr r6, =0x000027cc\n"
"\tadds r0, r6\n"
"\tldrh r0, [r0, 0x6]\n"
"_080F09D0:\n"
"\tlsls r5, r1, 24\n"
"\tlsrs r5, 24\n"
"\tadds r1, r5, 0\n"
"\tstr r3, [sp, 0x4]\n"
"\tbl sub_80F0B24\n"
"\tldr r3, [sp, 0x4]\n"
"\tldr r0, [r3]\n"
"\tadds r4, r0\n"
"\tadds r4, r6\n"
"\tldrh r0, [r4, 0x4]\n"
"_080F09E6:\n"
"\tadds r1, r5, 0\n"
"\tbl sub_80F0B24\n"
"\tb _080F0AE2_break\n"
"\t.pool\n"
"_080F09F4:\n"
"\tldr r0, [r3]\n"
"\tmov r2, r9\n"
"\tadds r4, r7, r2\n"
"\tlsls r4, 2\n"
"\tadds r0, r4, r0\n"
"\tldr r5, =0x000027cc\n"
"\tadds r0, r5\n"
"\tldrh r0, [r0, 0x4]\n"
"\tlsls r2, 24\n"
"\tmov r8, r2\n"
"\tlsrs r6, r2, 24\n"
"\tadds r1, r6, 0\n"
"\tstr r3, [sp, 0x4]\n"
"\tbl sub_80F0B24\n"
"\tldr r3, [sp, 0x4]\n"
"\tldr r0, [r3]\n"
"\tadds r0, r4, r0\n"
"\tadds r0, r5\n"
"\tldrh r0, [r0, 0x6]\n"
"\tadds r1, r6, 0\n"
"\tbl sub_80F0B24\n"
"\tldr r3, [sp, 0x4]\n"
"\tldr r0, [r3]\n"
"\tadds r4, r0\n"
"\tadds r4, r5\n"
"\tldrb r0, [r4, 0xD]\n"
"\tsubs r0, 0x1\n"
"\tmov r6, r8\n"
"\tcmp r0, 0xC\n"
"\tbhi _080F0AE2_break\n"
"\tlsls r0, 2\n"
"\tldr r1, =_080F0A48\n"
"\tadds r0, r1\n"
"\tldr r0, [r0]\n"
"\tmov pc, r0\n"
"\t.pool\n"
"\t.align 2, 0\n"
"_080F0A48:\n"
"\t.4byte _080F0A7C\n"
"\t.4byte _080F0AA0\n"
"\t.4byte _080F0AE2_break\n"
"\t.4byte _080F0AE2_break\n"
"\t.4byte _080F0A7C\n"
"\t.4byte _080F0A7C\n"
"\t.4byte _080F0A7C\n"
"\t.4byte _080F0A7C\n"
"\t.4byte _080F0A7C\n"
"\t.4byte _080F0A7C\n"
"\t.4byte _080F0A7C\n"
"\t.4byte _080F0A7C\n"
"\t.4byte _080F0A7C\n"
"_080F0A7C:\n"
"\tldr r0, =gSaveBlock1Ptr\n"
"\tldr r1, [r0]\n"
"\tmov r4, r9\n"
"\tadds r0, r7, r4\n"
"\tlsls r0, 2\n"
"\tadds r0, r1\n"
"\tldr r1, =0x000027cc\n"
"\tadds r0, r1\n"
"\tldrh r0, [r0, 0x8]\n"
"\tlsrs r1, r6, 24\n"
"\tbl sub_80F0B24\n"
"\tb _080F0AE2_break\n"
"\t.pool\n"
"_080F0AA0:\n"
"\tldr r2, =gSaveBlock1Ptr\n"
"\tldr r0, [r2]\n"
"\tmov r1, r9\n"
"\tadds r4, r7, r1\n"
"\tlsls r4, 2\n"
"\tadds r0, r4, r0\n"
"\tldr r5, =0x000027cc\n"
"\tadds r0, r5\n"
"\tldrh r0, [r0, 0x8]\n"
"\tlsrs r6, 24\n"
"\tadds r1, r6, 0\n"
"\tstr r2, [sp]\n"
"\tbl sub_80F0B24\n"
"\tldr r2, [sp]\n"
"\tldr r0, [r2]\n"
"\tadds r4, r0\n"
"\tadds r4, r5\n"
"\tldrh r0, [r4, 0xA]\n"
"\tadds r1, r6, 0\n"
"\tbl sub_80F0B24\n"
"\tb _080F0AE2_break\n"
"\t.pool\n"
"_080F0AD8:\n"
"\tmov r2, r9\n"
"\tlsls r0, r2, 24\n"
"\tlsrs r0, 24\n"
"\tbl SetTvShowInactive\n"
"_080F0AE2_break:\n"
"\tmov r0, r9\n"
"\tadds r0, 0x1\n"
"\tlsls r0, 16\n"
"\tlsrs r0, 16\n"
"\tmov r9, r0\n"
"\tcmp r0, 0x17\n"
"\tbhi _080F0AF2\n"
"\tb _080F0716\n"
"_080F0AF2:\n"
"\tadd sp, 0x8\n"
"\tpop {r3,r4}\n"
"\tmov r8, r3\n"
"\tmov r9, r4\n"
"\tpop {r4-r7}\n"
"\tpop {r0}\n"
"\tbx r0");
}
#endif
void SetTvShowInactive(u8 showIdx)
{

View File

@ -187,7 +187,7 @@ static void sub_81DA700(void)
{
u16 *dst1, *dst2;
sub_8149F58(&dst1, &dst2);
GetBg0TilesDst(&dst1, &dst2);
LZ77UnCompVram(gUnknown_0862AD54, dst2);
LZ77UnCompVram(gUnknown_0862AF30, dst1);
LoadPalette(gUnknown_0862B53C, 0xF0, 0x20);