mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-02-26 06:05:30 +01:00
* ClearTVShowData * special_0x44 * DoTVShow (nonmatching because align) * DoTVShowBravoTrainerPokemonProfile * Update field names * DoTVShowBravoTrainerBattleTower * Renaming of struct fields * sub_80EBFF4 and UpdateTVScreensOnMap * SetTVMetatilesOnMap * Power buttons for the TV screens on the map * special_0x45 * sub_80EC18C * special_0x4a * ResetGabbyAndTy * GabbyAndTyBeforeInterview * GabbyAndTyAfterInterview * Through IsTVShowInSearchOfTrainersAiring * GabbyAndTyGetLastQuote * GabbyAndTyGetLastBattleTrivia * GabbyAndTySetScriptVarsToFieldObjectLocalIds * InterviewAfter; use TVShow as a precursor for making the individual show structs anonymous * Make TV structs anonymous within the union * Move the TV union to its own subheader * Move TV show enums to the global.tv.h subheader * Funcion renaming * Apply static attributes where able * PutPokemonTodayCaughtOnAir * sub_80EC8A4 * PutPokemonTodayFailedOnTheAir * sub_80EC9E8, sub_80ECA10 * sub_80ECA38 * sub_80ECB00 * Put3CheersForPokeblocksOnTheAir * PutFanClubSpecialOnTheAir * ContestLiveUpdates_BeforeInterview * Other before-interview Contest Live Updates functions * ContestLiveUpdates_BeforeInterview_5 * InterviewAfter_BravoTrainerPokemonProfile * BravoTrainerPokemonProfile_BeforeInterview1 * BravoTrainerPokemonProfile_BeforeInterview2 * Disassemble TV data * Decompile TV data * InterviewAfter_BravoTrainerBattleTowerProfile * SaveRecordedItemPurchasesForTVShow * PutNameRaterShowOnTheAir * StartMassOutbreak * PutLilycoveContestLadyShowOnTheAir * InterviewAfter_FanClubLetter * Rip TV strings * InterviewAfter_RecentHappenings * InterviewAfter_PkmnFanClubOpinions * sub_80ED718 * EndMassOutbreak * sub_80ED888 * sub_80ED8B4 * UpdateMassOutbreakTimeLeft * sub_80ED950 * PutFishingAdviceShowOnTheAir * through sub_80EDA80 * ewram and common syms are now fetched from the object files * BSS symbols are taken from the tv.o file * through sub_80EDC60 * sub_80EDCE8 * sub_80EDD78 * through sub_80EDE84 * nomatching sub_80EDE98 * sub_80EDFB4 * sub_80EE104 * sub_80EE104 * sub_80EE184 * sub_80EE2CC * sub_80EE35C * sub_80EE44C * sub_80EE4DC * sub_80EE5A4 * sub_80EE69C * sub_80EE72C * sub_80EE7C0 * sub_80EE818 * sub_80EE8C8 * sub_80EEA70 * sub_80EEB98 * sub_80EEBF4 * through sub_80EED60 * Functions relating to Pokemon News * sub_80EEF6C * GetPriceReduction * IsPriceDiscounted * sub_80EF120 * through sub_80EF370 * sub_80EF40C * HasMixableShowAlreadyBeenSpawnedWithPlayerID * TV_SortPurchasesByQuantity * FindActiveBroadcastByShowType_SetScriptResult * InterviewBefore * through sub_80EF88C * through sub_80EF93C * through sub_80EFA24 * through TV_BernoulliTrial * sub_80EFB58 * sub_80EFBA4 * sub_80EFBDC * through sub_80EFD98 * ChangePokemonNickname * ChangeBoxPokemonNickname * sub_80EFF9C * through player_id_to_dword * CheckForBigMovieOrEmergencyNewsOnTV * GetMomOrDadStringForTVMessage * sub_80F01E8 * sub_80F0358 * sub_80F049C * TV record mixing functions * sub_80F06D0 * sub_80F0708 nonmatching * through sub_80F0B24 * sub_80F0B64 * through sub_80F0C04 * sub_80F0C7C * sub_80F0D60 * sub_80F0E58 * sub_80F0E84 * through sub_80F0F24 * sub_80F0F64 * sub_80F1208 * sub_80F1254 * sub_80F1290 * sub_80F12A4 * sub_80F14F8 * DoTVShowTodaysSmartShopper * DoTVShowTheNameRaterShow * DoTVShowPokemonTodaySuccessfulCapture * DoTVShowPokemonTodayFailedCapture * DoTVShowPokemonFanClubLetter * DoTVShowRecentHappenings * DoTVShowPokemonFanClubOpinions * DoTVShowPokemonNewsMassOutbreak * DoTVShowPokemonContestLiveUpdates * DoTVShowPokemonBattleUpdate * DoTVShow3CheersForPokeblocks * DoTVShowInSearchOfTrainers * Label GabbyAndTyData fields; remove ddump comments from data/text/tv.inc * DoTVShowPokemonAngler * DoTVShowTheWorldOfMasters; update RAM symbols and field names * Decorate static functions * DoTVShowTodaysRivalTrainer; region map enums * TVDewfordTrendWatcherNetworkTextGroup * DoTVShowHoennTreasureInvestigators * DoTVShowFindThatGamer * DoTVShowBreakingNewsTV * DoTVShowSecretBaseVisit * DoTVShowPokemonLotterWinnerFlashReport * DoTVShowThePokemonBattleSeminar * DoTVShowTrainerFanClubSpecial, DoTVShowTrainerFanClub * DoTVShowSpotTheCuties * DoTVShowPokemonNewsBattleFrontier * DoTVShowWhatsNo1InHoennToday * Helpers for DoTVShowSecretBaseSecrets * DoTVShowSecretBaseSecrets * DoTVShowSafariFanClub * Finish decompilation of tv.s * Some renaming * Rename text group pointers * revoke statis; pokenews enums * Labels are number one * Label all TV struct fields * Make data/text/tv.inc more readable * Split data/text/tv.inc * Rename pokenews text pointers * Frontier Symbol constants; indicate static rodata objects with 's' prefix * Fix leading spaces/tabs F*** CLion sometimes * Fix inconsequential warning
232 lines
6.9 KiB
C
232 lines
6.9 KiB
C
#include "global.h"
|
|
#include "start_menu.h"
|
|
#include "menu.h"
|
|
#include "safari_zone.h"
|
|
#include "event_data.h"
|
|
#include "window.h"
|
|
#include "string_util.h"
|
|
#include "text.h"
|
|
|
|
// Menu actions
|
|
enum
|
|
{
|
|
MENU_ACTION_POKEDEX,
|
|
MENU_ACTION_POKEMON,
|
|
MENU_ACTION_BAG,
|
|
MENU_ACTION_POKENAV,
|
|
MENU_ACTION_PLAYER,
|
|
MENU_ACTION_SAVE,
|
|
MENU_ACTION_OPTION,
|
|
MENU_ACTION_EXIT,
|
|
MENU_ACTION_RETIRE_SAFARI,
|
|
MENU_ACTION_PLAYER_LINK,
|
|
MENU_ACTION_REST_FRONTIER,
|
|
MENU_ACTION_RETIRE_FRONTIER,
|
|
MENU_ACTION_PYRAMID_BAG
|
|
};
|
|
|
|
static void BuildStartMenuActions_LinkMode(void);
|
|
static void BuildStartMenuActions_UnionRoom(void);
|
|
static void BuildStartMenuActions_SafariZone(void);
|
|
static void BuildStartMenuActions_BattlePike(void);
|
|
static void BuildStartMenuActions_BattlePyramid(void);
|
|
static void BuildStartMenuActions_MultiBattleRoom(void);
|
|
static void BuildStartMenuActions_Normal(void);
|
|
u8 StartMenu_PlayerName(void);
|
|
|
|
extern bool32 is_c1_link_related_active(void);
|
|
extern bool32 InUnionRoom(void);
|
|
extern bool8 InBattlePike(void);
|
|
extern bool8 InBattlePyramid(void);
|
|
extern bool8 InMultiBattleRoom(void);
|
|
extern void sub_81973FC(u8 windowId, u8 a1);
|
|
extern void sub_8198070(u8 windowId, u8 a1);
|
|
|
|
EWRAM_DATA u8 sSafariBallsWindowId = 0;
|
|
EWRAM_DATA u8 sBattlePyramidFloorWindowId = 0;
|
|
EWRAM_DATA u8 sStartMenuCursorPos = 0;
|
|
EWRAM_DATA u8 sNumStartMenuActions = 0;
|
|
EWRAM_DATA u8 sCurrentStartMenuActions[9] = {0};
|
|
|
|
void BuildStartMenuActions(void)
|
|
{
|
|
sNumStartMenuActions = 0;
|
|
if (is_c1_link_related_active() == TRUE)
|
|
BuildStartMenuActions_LinkMode();
|
|
else if (InUnionRoom() == TRUE)
|
|
BuildStartMenuActions_UnionRoom();
|
|
else if (GetSafariZoneFlag() == TRUE)
|
|
BuildStartMenuActions_SafariZone();
|
|
else if (InBattlePike())
|
|
BuildStartMenuActions_BattlePike();
|
|
else if (InBattlePyramid())
|
|
BuildStartMenuActions_BattlePyramid();
|
|
else if (InMultiBattleRoom())
|
|
BuildStartMenuActions_MultiBattleRoom();
|
|
else
|
|
BuildStartMenuActions_Normal();
|
|
}
|
|
|
|
void AddStartMenuAction(u8 action)
|
|
{
|
|
AppendToList(sCurrentStartMenuActions, &sNumStartMenuActions, action);
|
|
}
|
|
|
|
static void BuildStartMenuActions_Normal(void)
|
|
{
|
|
if (FlagGet(SYS_POKEDEX_GET) == TRUE)
|
|
AddStartMenuAction(MENU_ACTION_POKEDEX);
|
|
if (FlagGet(SYS_POKEMON_GET) == TRUE)
|
|
AddStartMenuAction(MENU_ACTION_POKEMON);
|
|
AddStartMenuAction(MENU_ACTION_BAG);
|
|
if (FlagGet(SYS_POKENAV_GET) == TRUE)
|
|
AddStartMenuAction(MENU_ACTION_POKENAV);
|
|
AddStartMenuAction(MENU_ACTION_PLAYER);
|
|
AddStartMenuAction(MENU_ACTION_SAVE);
|
|
AddStartMenuAction(MENU_ACTION_OPTION);
|
|
AddStartMenuAction(MENU_ACTION_EXIT);
|
|
}
|
|
|
|
static void BuildStartMenuActions_SafariZone(void)
|
|
{
|
|
AddStartMenuAction(MENU_ACTION_RETIRE_SAFARI);
|
|
AddStartMenuAction(MENU_ACTION_POKEDEX);
|
|
AddStartMenuAction(MENU_ACTION_POKEMON);
|
|
AddStartMenuAction(MENU_ACTION_BAG);
|
|
AddStartMenuAction(MENU_ACTION_PLAYER);
|
|
AddStartMenuAction(MENU_ACTION_OPTION);
|
|
AddStartMenuAction(MENU_ACTION_EXIT);
|
|
}
|
|
|
|
static void BuildStartMenuActions_LinkMode(void)
|
|
{
|
|
AddStartMenuAction(MENU_ACTION_POKEMON);
|
|
AddStartMenuAction(MENU_ACTION_BAG);
|
|
if (FlagGet(SYS_POKENAV_GET) == TRUE)
|
|
AddStartMenuAction(MENU_ACTION_POKENAV);
|
|
AddStartMenuAction(MENU_ACTION_PLAYER_LINK);
|
|
AddStartMenuAction(MENU_ACTION_OPTION);
|
|
AddStartMenuAction(MENU_ACTION_EXIT);
|
|
}
|
|
|
|
static void BuildStartMenuActions_UnionRoom(void)
|
|
{
|
|
AddStartMenuAction(MENU_ACTION_POKEMON);
|
|
AddStartMenuAction(MENU_ACTION_BAG);
|
|
if (FlagGet(SYS_POKENAV_GET) == TRUE)
|
|
AddStartMenuAction(MENU_ACTION_POKENAV);
|
|
AddStartMenuAction(MENU_ACTION_PLAYER);
|
|
AddStartMenuAction(MENU_ACTION_OPTION);
|
|
AddStartMenuAction(MENU_ACTION_EXIT);
|
|
}
|
|
|
|
static void BuildStartMenuActions_BattlePike(void)
|
|
{
|
|
AddStartMenuAction(MENU_ACTION_POKEDEX);
|
|
AddStartMenuAction(MENU_ACTION_POKEMON);
|
|
AddStartMenuAction(MENU_ACTION_PLAYER);
|
|
AddStartMenuAction(MENU_ACTION_OPTION);
|
|
AddStartMenuAction(MENU_ACTION_EXIT);
|
|
}
|
|
|
|
static void BuildStartMenuActions_BattlePyramid(void)
|
|
{
|
|
AddStartMenuAction(MENU_ACTION_POKEMON);
|
|
AddStartMenuAction(MENU_ACTION_PYRAMID_BAG);
|
|
AddStartMenuAction(MENU_ACTION_PLAYER);
|
|
AddStartMenuAction(MENU_ACTION_REST_FRONTIER);
|
|
AddStartMenuAction(MENU_ACTION_RETIRE_FRONTIER);
|
|
AddStartMenuAction(MENU_ACTION_OPTION);
|
|
AddStartMenuAction(MENU_ACTION_EXIT);
|
|
}
|
|
|
|
static void BuildStartMenuActions_MultiBattleRoom(void)
|
|
{
|
|
AddStartMenuAction(MENU_ACTION_POKEMON);
|
|
AddStartMenuAction(MENU_ACTION_PLAYER);
|
|
AddStartMenuAction(MENU_ACTION_OPTION);
|
|
AddStartMenuAction(MENU_ACTION_EXIT);
|
|
}
|
|
|
|
extern const struct WindowTemplate gSafariBallsWindowTemplate;
|
|
extern const struct WindowTemplate gPyramidFloorWindowTemplate_1;
|
|
extern const struct WindowTemplate gPyramidFloorWindowTemplate_2;
|
|
extern const u8 gText_SafariBallStock[];
|
|
|
|
void DisplaySafariBallsWindow(void)
|
|
{
|
|
sSafariBallsWindowId = AddWindow(&gSafariBallsWindowTemplate);
|
|
PutWindowTilemap(sSafariBallsWindowId);
|
|
sub_81973FC(sSafariBallsWindowId, 0);
|
|
ConvertIntToDecimalStringN(gStringVar1, gNumSafariBalls, STR_CONV_MODE_RIGHT_ALIGN, 2);
|
|
StringExpandPlaceholders(gStringVar4, gText_SafariBallStock);
|
|
PrintTextOnWindow(sSafariBallsWindowId, 1, gStringVar4, 0, 1, 0xFF, NULL);
|
|
CopyWindowToVram(sSafariBallsWindowId, 2);
|
|
}
|
|
|
|
extern const u8* const gUnknown_08510510[];
|
|
extern const u8 gText_BattlePyramidFloor[];
|
|
|
|
void DisplayPyramidFloorWindow(void)
|
|
{
|
|
// TODO: fix location
|
|
if (gSaveBlock2Ptr->field_CAA[4] == 7)
|
|
sBattlePyramidFloorWindowId = AddWindow(&gPyramidFloorWindowTemplate_1);
|
|
else
|
|
sBattlePyramidFloorWindowId = AddWindow(&gPyramidFloorWindowTemplate_2);
|
|
PutWindowTilemap(sBattlePyramidFloorWindowId);
|
|
sub_81973FC(sBattlePyramidFloorWindowId, 0);
|
|
StringCopy(gStringVar1, gUnknown_08510510[gSaveBlock2Ptr->field_CAA[4]]);
|
|
StringExpandPlaceholders(gStringVar4, gText_BattlePyramidFloor);
|
|
PrintTextOnWindow(sBattlePyramidFloorWindowId, 1, gStringVar4, 0, 1, 0xFF, NULL);
|
|
CopyWindowToVram(sBattlePyramidFloorWindowId, 2);
|
|
}
|
|
|
|
void RemoveExtraStartMenuWindows(void)
|
|
{
|
|
if (GetSafariZoneFlag())
|
|
{
|
|
sub_8198070(sSafariBallsWindowId, 0);
|
|
CopyWindowToVram(sSafariBallsWindowId, 2);
|
|
RemoveWindow(sSafariBallsWindowId);
|
|
}
|
|
if (InBattlePyramid())
|
|
{
|
|
sub_8198070(sBattlePyramidFloorWindowId, 0);
|
|
RemoveWindow(sBattlePyramidFloorWindowId);
|
|
}
|
|
}
|
|
|
|
extern const struct MenuAction sStartMenuItems[];
|
|
|
|
/*
|
|
// Prints n menu items starting at *index
|
|
static bool32 PrintStartMenuItemsMultistep(s16 *index, u32 n)
|
|
{
|
|
s8 _index = *index;
|
|
|
|
do
|
|
{
|
|
if (sStartMenuItems[sCurrentStartMenuActions[_index]].func == StartMenu_PlayerName)
|
|
{
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
}
|
|
|
|
} while (++_index > sNumStartMenuActions);
|
|
|
|
if (--n == 0)
|
|
{
|
|
*index = _index;
|
|
return FALSE;
|
|
}
|
|
else
|
|
{
|
|
*index = _index;
|
|
return TRUE;
|
|
}
|
|
}*/
|