Merge pull request #232 from HrPeanut/start_menu

Start menu
This commit is contained in:
Marcus Huderle 2018-03-28 21:03:06 -07:00 committed by GitHub
commit c3572de5bb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 1352 additions and 2279 deletions

View File

@ -1729,7 +1729,7 @@ _080B3248:
thumb_func_start sub_80B3254
sub_80B3254: @ 80B3254
push {lr}
bl sub_809FF80
bl SaveGame
pop {r0}
bx r0
thumb_func_end sub_80B3254

View File

@ -326,7 +326,7 @@ _0809C13A:
beq _0809C15C
movs r0, 0x6
bl PlaySE
bl sub_809FA9C
bl ShowStartMenu
_0809C14E:
movs r0, 0x1
b _0809C172

View File

@ -8,7 +8,7 @@
thumb_func_start sub_80D47D4
sub_80D47D4: @ 80D47D4
push {lr}
bl sub_80A0934
bl HideStartMenu
bl ShowMapNamePopup
movs r0, 0x1
pop {r1}

View File

@ -836,7 +836,7 @@ _080E24C6:
adds r1, r4, 0
adds r2, r7, 0
movs r3, 0x11
bl sub_819A024
bl PrintPlayerNameOnWindow
adds r0, r6, 0
mov r1, r8
movs r2, 0

File diff suppressed because it is too large Load Diff

View File

@ -835,7 +835,7 @@ SlateportCity_BattleTentLobby_EventScript_27134F:: @ 827134F
SootopolisCity_MysteryEventsHouse_1F_EventScript_27134F:: @ 827134F
TrainerHill_Entrance_EventScript_27134F:: @ 827134F
VerdanturfTown_BattleTentLobby_EventScript_27134F:: @ 827134F
special sub_809FF80
special SaveGame
waitstate
return

View File

@ -2506,13 +2506,13 @@ gUnknown_082F2D40:: @ 82F2D40
.4byte gText_RegisteredTextChanged
.byte 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00
.4byte gText_AlreadySavedFile
.4byte gText_AlreadySavedFile_Unused
.byte 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00
.4byte gText_SavingDontTurnOff
.4byte gText_SavingDontTurnOff_Unused
.byte 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00
.4byte gText_PlayerSavedGame
.4byte gText_PlayerSavedGame_Unused
.byte 0x02, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00
.4byte gText_IfLeaderLeavesChatEnds

View File

@ -180,12 +180,12 @@ BattleFrontier_BattlePyramidEmptySquare_EventScript_252C88:: @ 8252C88
BattleFrontier_BattlePyramidEmptySquare_Text_252C8D: @ 8252C8D
.string "This is a sample message.$"
BattleFrontier_BattlePyramidEmptySquare_Text_252CA7:: @ 8252CA7
gText_BattlePyramidConfirmRest:: @ 8252CA7
.string "Your BATTLE PYRAMID quest will be\n"
.string "saved so that you may quit for now.\l"
.string "Is that okay?$"
BattleFrontier_BattlePyramidEmptySquare_Text_252CFB:: @ 8252CFB
gText_BattlePyramidConfirmRetire:: @ 8252CFB
.string "Are you sure you want to quit your\n"
.string "PYRAMID quest?$"

View File

@ -104,7 +104,7 @@ gSpecials:: @ 81DBA64
def_special sub_80F8D24
def_special sub_80F8C7C
def_special sub_80B3000
def_special sub_809FF80
def_special SaveGame
def_special sub_80FAFF8
def_special easy_chat_input_maybe
def_special sub_811EECC

View File

@ -3704,13 +3704,13 @@ gText_LeaderLeftEndingChat:: @ 85ED2FA
gText_RegisteredTextChanged:: @ 85ED325
.string "The registered text has been changed.\nIs it okay to save the game?$"
gText_AlreadySavedFile:: @ 85ED368
gText_AlreadySavedFile_Unused:: @ 85ED368
.string "There is already a saved file.\nIs it okay to overwrite it?$"
gText_SavingDontTurnOff:: @ 85ED3A3
gText_SavingDontTurnOff_Unused:: @ 85ED3A3
.string "SAVING\nDONT TURN OFF THE POWER.$"
gText_PlayerSavedGame:: @ 85ED3C5
gText_PlayerSavedGame_Unused:: @ 85ED3C5
.string "{SPECIAL_F7 0x00} saved the game.$"
gText_IfLeaderLeavesChatEnds:: @ 85ED3D8

View File

@ -1,18 +1,18 @@
gUnknown_082C87B4:: @ 82C87B4
gText_ConfirmSave:: @ 82C87B4
.string "Would you like to save the game?$"
gUnknown_082C87D5:: @ 82C87D5
gText_AlreadySavedFile:: @ 82C87D5
.string "There is already a saved file.\n"
.string "Is it okay to overwrite it?$"
gUnknown_082C8810:: @ 82C8810
gText_SavingDontTurnOff:: @ 82C8810
.string "SAVING…\n"
.string "DONT TURN OFF THE POWER.$"
gUnknown_082C8832:: @ 82C8832
gText_PlayerSavedGame:: @ 82C8832
.string "{PLAYER} saved the game.$"
gUnknown_082C8845:: @ 82C8845
gText_DifferentSaveFile:: @ 82C8845
.string "WARNING!\p"
.string "There is a different game file that\n"
.string "is already saved.\p"
@ -22,7 +22,7 @@ gUnknown_082C8845:: @ 82C8845
.string "Are you sure you want to save now\n"
.string "and overwrite the other save file?$"
gUnknown_082C892A:: @ 82C892A
gText_SaveError:: @ 82C892A
.string "Save error.\p"
.string "Please exchange the\n"
.string "backup memory.$"

View File

@ -382,6 +382,8 @@ extern const u8 SecretBase_RedCave1_Text_2751E1[];
extern const u8 SecretBase_RedCave1_Text_2754F6[];
extern const u8 SecretBase_RedCave1_Text_2758CC[];
extern const u8 BattleFrontier_BattlePyramidEmptySquare_EventScript_252C88[];
//field effects
extern const u8 FieryPath_EventScript_2908FD[];
extern const u8 EventScript_290CAE[];

View File

@ -55,4 +55,6 @@ void sub_81AAC50(void);
void sub_81AAC70(void);
void bag_menu_mail_related(void);
void CB2_BagMenuFromStartMenu(void);
#endif //GUARD_item_menu_H

View File

@ -257,6 +257,7 @@ void sub_800AAF4(void);
void sub_800AF18(u32 status, u8 lastSendQueueCount, u8 lastRecvQueueCount, u8 unk_06);
void sub_800B348(void);
void sub_800B3A4(u32 who);
bool32 sub_800A07C(void);
extern u16 gLinkPartnersHeldKeys[6];
extern u32 gLinkDebugSeed;

View File

@ -21,5 +21,7 @@ void LoadSerializedGame(void);
void LoadPlayerBag(void);
void SavePlayerBag(void);
void SetSaveBlocksPointers(u16);
void sub_8076D5C(void);
void sav2_gender2_inplace_and_xFE(void);
#endif // GUARD_LOAD_SAVE_H

View File

@ -1,3 +1,4 @@
#ifndef GUARD_MENU_H
#define GUARD_MENU_H
@ -27,8 +28,9 @@ void NewMenuHelpers_DrawDialogueFrame(u8, u8);
void sub_819746C(u8 windowId, bool8 copyToVram);
void NewMenuHelpers_DrawStdWindowFrame(u8, u8);
u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextSubPrinter *, u16), u8 fgColor, u8 bgColor, u8 shadowColor);
void PrintPlayerNameOnWindow(u8, const u8*, u16, u16);
void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback);
void sub_8197434(u8 a0, u8 a1);
void sub_8197434(u8 windowId, bool8 copyToVram);
void SetStandardWindowBorderStyle(u8 a0, u8 a1);
void sub_8197930(void);
u8 GetPlayerTextSpeed(void);
@ -67,6 +69,16 @@ void AddItemMenuActionTextPrinters (u8, u8, u8, u8, u8, u8, u8, const struct Men
void sub_8198DBC(u8, u8, u8, u8, u8, u8, u8, const struct MenuAction*, const u8*);
u8 sub_8199944(u8, u8, u8, u8, u8);
u8 sub_8199134(s8, s8);
u8 GetStartMenuWindowId(void);
void sub_819A2BC(u8, u8);
u8 MoveMenuCursor(s8 cursorDelta);
void NewMenuHelpers_DrawStdWindowFrame(u8 windowId, bool8 CopyToVram);
u8 sub_81979C4(u8 a1);
u8 sub_81983AC(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos);
void sub_819786C(u8 windowId, bool8 copyToVram);
void AddTextPrinterForMessage_2(bool8 allowSkippingDelayWithButtonPress);
void RemoveStartMenuWindow(void);
void sub_8197948(u8 initialCursorPos);
void sub_819A344(u8 a0, u8 *dest, u8 color);
#endif // GUARD_MENU_H

View File

@ -1,6 +1,16 @@
#ifndef GUARD_START_MENU_H
#define GUARD_START_MENU_H
extern bool8 (*gMenuCallback)(void); // Defined in sym_common.txt
void sub_809FA18(void);
void sub_809FA34(u8 taskId);
void ShowStartMenu(void);
void sub_809FDD4(void);
void SaveGame(void);
void sub_80A0514(void);
void sub_80A08CC(void);
void HideStartMenu(void);
void AppendToList(u8* list, u8* pos, u8 newEntry);
#endif // GUARD_START_MENU_H

View File

@ -197,6 +197,23 @@ extern const u8 gText_Peak[];
extern const u8 gText_SafariBallStock[];
extern const u8 gText_BattlePyramidFloor[];
// save menu texts
extern const u8 gText_ConfirmSave[];
extern const u8 gText_DifferentSaveFile[];
extern const u8 gText_AlreadySavedFile[];
extern const u8 gText_SavingDontTurnOff[];
extern const u8 gText_PlayerSavedGame[];
extern const u8 gText_SaveError[];
extern const u8 gText_SavingDontTurnOffPower[];
extern const u8 gText_SavingPlayer[];
extern const u8 gText_SavingBadges[];
extern const u8 gText_SavingPokedex[];
extern const u8 gText_SavingTime[];
// Battle pyramid menu texts
extern const u8 gText_BattlePyramidConfirmRest[];
extern const u8 gText_BattlePyramidConfirmRetire[];
// option menu texts
extern const u8 gText_TextSpeedSlow[];
extern const u8 gText_TextSpeedMid[];

View File

@ -82,6 +82,12 @@
#define TEXT_COLOR_TRANSPARENT 0x0
#define TEXT_COLOR_WHITE 0x1
#define TEXT_COLOR_DARK_GREY 0x2
// 0x3
#define TEXT_COLOR_RED 0x4
// 0x5
#define TEXT_COLOR_GREEN 0x6
// 0x7
#define TEXT_COLOR_BLUE 0x8
// battle placeholders are located in battle_message.h

View File

@ -107,7 +107,6 @@ SECTIONS {
src/clock.o(.text);
src/reset_rtc_screen.o(.text);
src/start_menu.o(.text);
asm/start_menu.o(.text);
src/tileset_anims.o(.text);
src/palette.o(.text);
src/sound.o(.text);

View File

@ -25,11 +25,11 @@
#define STD_WINDOW_PALETTE_NUM 14
#define STD_WINDOW_BASE_TILE_NUM 0x214
struct SomeUnkStruct_60F0D4
struct MoveMenuInfoIcon
{
u8 unk1;
u8 unk2;
u16 unk3;
u8 width;
u8 height;
u16 offset;
};
struct Menu
@ -48,7 +48,7 @@ struct Menu
bool8 APressMuted;
};
static EWRAM_DATA u8 gUnknown_0203CD8C = 0;
static EWRAM_DATA u8 gStartMenuWindowId = 0;
static EWRAM_DATA u8 gUnknown_0203CD8D = 0;
static EWRAM_DATA struct Menu gUnknown_0203CD90 = {0};
static EWRAM_DATA u16 gUnknown_0203CD9C = 0;
@ -76,34 +76,36 @@ static const struct WindowTemplate gUnknown_0860F0A8 =
const u16 gUnknown_0860F0B0[] = INCBIN_U16("graphics/interface/860F0B0.gbapal");
const u8 gUnknown_0860F0D0[] = { 15, 1, 2 };
const struct SomeUnkStruct_60F0D4 gUnknown_0860F0D4[] =
{
{ 12, 12, 0x00 },
{ 32, 12, 0x20 },
{ 32, 12, 0x64 },
{ 32, 12, 0x60 },
{ 32, 12, 0x80 },
{ 32, 12, 0x48 },
{ 32, 12, 0x44 },
{ 32, 12, 0x6C },
{ 32, 12, 0x68 },
{ 32, 12, 0x88 },
{ 32, 12, 0xA4 },
{ 32, 12, 0x24 },
{ 32, 12, 0x28 },
{ 32, 12, 0x2C },
{ 32, 12, 0x40 },
{ 32, 12, 0x84 },
{ 32, 12, 0x4C },
{ 32, 12, 0xA0 },
{ 32, 12, 0x8C },
{ 42, 12, 0xA8 },
{ 42, 12, 0xC0 },
{ 42, 12, 0xC8 },
{ 42, 12, 0xE0 },
{ 42, 12, 0xE8 },
{ 8, 8, 0xAE },
{ 8, 8, 0xAF },
// Table of move info icon offsets in graphics/interface_fr/menu.png
const struct MoveMenuInfoIcon gMoveMenuInfoIcons[] =
{ // { width, height, offset }
{ 12, 12, 0x00 }, // Unused
{ 32, 12, 0x20 }, // Normal icon
{ 32, 12, 0x64 }, // Fight icon
{ 32, 12, 0x60 }, // Flying icon
{ 32, 12, 0x80 }, // Poison icon
{ 32, 12, 0x48 }, // Ground icon
{ 32, 12, 0x44 }, // Rock icon
{ 32, 12, 0x6C }, // Bug icon
{ 32, 12, 0x68 }, // Ghost icon
{ 32, 12, 0x88 }, // Steel icon
{ 32, 12, 0xA4 }, // ??? (Mystery) icon
{ 32, 12, 0x24 }, // Fire icon
{ 32, 12, 0x28 }, // Water icon
{ 32, 12, 0x2C }, // Grass icon
{ 32, 12, 0x40 }, // Electric icon
{ 32, 12, 0x84 }, // Psychic icon
{ 32, 12, 0x4C }, // Ice icon
{ 32, 12, 0xA0 }, // Dragon icon
{ 32, 12, 0x8C }, // Dark icon
{ 42, 12, 0xA8 }, // -Type- icon
{ 42, 12, 0xC0 }, // -Power- icon
{ 42, 12, 0xC8 }, // -Accuracy- icon
{ 42, 12, 0xE0 }, // -PP- icon
{ 42, 12, 0xE8 }, // -Effect- icon
{ 8, 8, 0xAE }, // Unused (Small white pokeball)
{ 8, 8, 0xAF }, // Unused (Small dark pokeball)
};
// Forward declarations
@ -125,7 +127,7 @@ extern void task_free_buf_after_copying_tile_data_to_vram(u8 taskId);
void sub_81971D0(void)
{
InitWindows(gUnknown_0860F098);
gUnknown_0203CD8C = 0xFF;
gStartMenuWindowId = 0xFF;
gUnknown_0203CD8D = 0xFF;
}
@ -471,22 +473,22 @@ u8 GetPlayerTextSpeed(void)
u8 sub_81979C4(u8 a1)
{
if (gUnknown_0203CD8C == 0xFF)
gUnknown_0203CD8C = sub_8198AA4(0, 0x16, 1, 7, (a1 * 2) + 2, 0xF, 0x139);
return gUnknown_0203CD8C;
if (gStartMenuWindowId == 0xFF)
gStartMenuWindowId = sub_8198AA4(0, 0x16, 1, 7, (a1 * 2) + 2, 0xF, 0x139);
return gStartMenuWindowId;
}
u8 GetStartMenuWindowId(void)
{
return gUnknown_0203CD8C;
return gStartMenuWindowId;
}
void remove_start_menu_window_maybe(void)
void RemoveStartMenuWindow(void)
{
if (gUnknown_0203CD8C != 0xFF)
if (gStartMenuWindowId != 0xFF)
{
RemoveWindow(gUnknown_0203CD8C);
gUnknown_0203CD8C = 0xFF;
RemoveWindow(gStartMenuWindowId);
gStartMenuWindowId = 0xFF;
}
}
@ -1988,7 +1990,7 @@ void sub_8199F74(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 spee
AddTextPrinter(&printer, speed, callback);
}
void sub_819A024(u8 windowId, const u8 *src, u16 a2, u16 a3)
void PrintPlayerNameOnWindow(u8 windowId, const u8 *src, u16 x, u16 y)
{
int count = 0;
while (gSaveBlock2Ptr->playerName[count] != EOS)
@ -1996,7 +1998,7 @@ void sub_819A024(u8 windowId, const u8 *src, u16 a2, u16 a3)
StringExpandPlaceholders(gStringVar4, src);
PrintTextOnWindow(windowId, 1, gStringVar4, a2, a3, 0xFF, 0);
PrintTextOnWindow(windowId, 1, gStringVar4, x, y, 0xFF, 0);
}
//Screw this function, it's long and unreferenced and ugh
@ -2364,22 +2366,22 @@ void sub_819A2BC(u8 palOffset, u8 palId)
void blit_move_info_icon(u8 windowId, u8 iconId, u16 x, u16 y)
{
BlitBitmapRectToWindow(windowId, gFireRedMenuElements_Gfx + gUnknown_0860F0D4[iconId].unk3 * 32, 0, 0, 128, 128, x, y, gUnknown_0860F0D4[iconId].unk1, gUnknown_0860F0D4[iconId].unk2);
BlitBitmapRectToWindow(windowId, gFireRedMenuElements_Gfx + gMoveMenuInfoIcons[iconId].offset * 32, 0, 0, 128, 128, x, y, gMoveMenuInfoIcons[iconId].width, gMoveMenuInfoIcons[iconId].height);
}
void sub_819A344(u8 a0, u8 *a1, u8 a2)
void sub_819A344(u8 a0, u8 *dest, u8 color)
{
s32 curFlag;
s32 flagCount;
u8 *endOfString;
u8 *string = a1;
u8 *string = dest;
*(string++) = EXT_CTRL_CODE_BEGIN;
*(string++) = EXT_CTRL_CODE_COLOR;
*(string++) = a2;
*(string++) = color;
*(string++) = EXT_CTRL_CODE_BEGIN;
*(string++) = EXT_CTRL_CODE_SHADOW;
*(string++) = a2 + 1;
*(string++) = color + 1;
switch (a0)
{

View File

@ -161,7 +161,7 @@ extern void FieldEffectActiveListClear(void);
extern void SetUpFieldTasks(void);
extern void sub_81BE6B8(void);
extern void sub_80AAFA4(void);
extern void sub_809FA9C(void);
extern void ShowStartMenu(void);
extern void sub_80AEE84(void);
extern void mapldr_default(void);
extern void npc_paltag_set_load(u8);
@ -2795,7 +2795,7 @@ static void sub_8087510(void)
static void sub_808751C(void)
{
PlaySE(SE_WIN_OPEN);
sub_809FA9C();
ShowStartMenu();
ScriptContext2_Enable();
}

File diff suppressed because it is too large Load Diff

View File

@ -70,7 +70,7 @@ gUnknown_03005DEC: @ 3005DEC
gSelectedMapObject: @ 3005DF0
.space 0x4
gUnknown_03005DF4: @ 3005DF4
gMenuCallback: @ 3005DF4
.space 0x4
.include "sound.o"