* SetDecorationInventoriesPointers * ClearDecorationInventories * CheckHasDecoration * DecorationAdd * DecorationCheckSpace * DecorationRemove * sub_8161A38 * CountDecorations; Funcion renaming * Disassemble decoration data structs, tilemaps, and descriptions * sub_8126968 * sub_81269D4 * through sub_8126A88 * through sub_8126B2C * sub_8126B80 * sub_8126C08 * sub_8126C48 * sub_8126CA4 * sub_8126D10 * sub_8126E44 * sub_8126E8C * sub_8126F68 * sub_8127058 * sub_8127088 * sub_81270E8 * through sub_8127208 * through sub_8127268 * sub_8127284 * through sub_81272F8 * sub_8127330 * through sub_8127480 * sub_81274A0 * sub_8127500; makefile now tells scaninc to scan headers * Actual real fix to mapfile being in build/emerald instead of wd * through sub_812759C * through sub_812764C * through sub_8127744 * through sub_81277BC * sub_81277E8 * sub_8127814 * through sub_81279C4 * through sub_8127ACC * sub_8127B04 * sub_8127B54 * sub_8127B90 * sub_8127D38 * sub_8127E18 * sub_8127F68 * sub_8128060 * ConfigureCameraObjectForPlacingDecoration * SetUpPlacingDecorationPlayerAvatar * sub_812826C * through sub_8128414 * through sub_81284F4 * sub_812853C * sub_8128950 * through sub_8128AAC * through sub_8128BBC * c1_overworld_prev_quest * sub_8128C64 * sub_8128CD4 * sub_8128D10 * sub_8128DB4 * through sub_8128E18 * through sub_8129068 * sub_8129088 * through sub_81291E8 * sub_812925C * sub_81292D0 * sub_81292E8 * gpu_pal_decompress_alloc_tag_and_upload * AddDecorationIconObjectFromIconTable * GetDecorationIconPicOrPalette * AddDecorationIconObjectFromFieldObject * AddDecorationIconObject * through sub_8129708 * sub_81297F8 * sub_81298EC * SetUpPuttingAwayDecorationPlayerAvatar * sub_8129ABC * sub_8129B34 * sub_8129BCC * through sub_8129C74 * through sub_8129D8C * sub_8129E0C * sub_8129E74 * sub_8129F20 * sub_8129FC8 * sub_812A040 * nonmatching sub_812A0E8 * through sub_812A22C * sub_812A25C * sub_812A2C4 * through sub_812A39C * Remaining fns in decoration.s * Decompile decoration headers * Decompile all remaining decoration data that had already been disassembled * Disassemble two data objects * Suggest structure of list menu template * decompile through decoration list menu template * Disassemble decoration icon graphics table * Rip icon gfx * Decompile deco icon table * Decompile more data related to drawing decorations * Decompile gUnknown_085A7250 structs * Decompile two sprite templates * Decompile remaining data in decoration.s * Decompile decoration ewram * deco -> decor
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.u8_void == StartMenu_PlayerName)
|
|
{
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
}
|
|
|
|
} while (++_index > sNumStartMenuActions);
|
|
|
|
if (--n == 0)
|
|
{
|
|
*index = _index;
|
|
return FALSE;
|
|
}
|
|
else
|
|
{
|
|
*index = _index;
|
|
return TRUE;
|
|
}
|
|
}*/
|