Split main_menu.c

This commit is contained in:
Kermalis
2023-09-14 23:26:58 -04:00
parent 805fa045a7
commit 7de83b9dc3
35 changed files with 1334 additions and 1307 deletions

View File

@@ -1,5 +1,5 @@
#ifndef GUARD_CONSTANTS_MAILBOX_H
#define GUARD_CONSTANTS_MAILBOX_H
#define GUARD_CONSTANTS_MAILBOX_H
#define MAX_ACCEPTED_JOBS 8
#define NUM_MAILBOX_SLOTS 4
@@ -18,4 +18,4 @@ enum JOB_LIST_MAIL_TYPES
MAIL_TYPE_UNK9,
};
#endif // GUARD_CONSTANTS_MAILBOX_H
#endif // GUARD_CONSTANTS_MAILBOX_H

View File

@@ -0,0 +1,40 @@
#ifndef GUARD_CONSTANTS_MAIN_MENU_H
#define GUARD_CONSTANTS_MAIN_MENU_H
enum MainMenuScreens
{
MENU_MAIN_SCREEN = 1,
//
MENU_NEW_GAME = 3,
//
MENU_AWAITING_RESCUE = 6,
MENU_CONTINUE, // used by Revive Team/Continue
MENU_DELETE_SAVE_PROMPT,
MENU_DELETE_SAVE_CONFIRM,
MENU_ADVENTURE_LOG,
MENU_FRIEND_RESCUE,
MENU_TRADE_ITEMS,
MENU_WONDER_MAIL,
MENU_DUAL_SLOT,
MENU_WIRELESS_COMMS,
MENU_DEBUG,
MENU_SEND_ITEMS,
MENU_RECEIVE_ITEMS,
MENU_COMMUNICATION_1,
MENU_COMMUNICATION_2,
// NOTE: 27 - 34 used by Rescue Password Menu
MENU_DISPLAY_RESCUE_PASSWORD = 33,
MENU_RESCUE_PASSWORD_ENTRY,
//
MENU_DELETE_SAVE = 46,
MENU_DEBUG_DUNGEON,
MENU_DEBUG_FIELD,
MENU_DEBUG_FIELD_MAP,
MENU_DEBUG_FIELD_SCRIPT,
MENU_DEBUG_DEBUG_MENU,
MENU_DEBUG_UNKNOWN_1,
//
MENU_NO_SCREEN_CHANGE = 65500 // (s16)-36
};
#endif // GUARD_CONSTANTS_MAIN_MENU_H

View File

@@ -59,9 +59,10 @@ typedef struct GameOptions
/* 0xC */ u8 unkC;
} GameOptions;
void LoadGameOptions(void);
GameOptions * GetGameOptions(void);
void InitializeGameOptions(bool8 initializeGender);
GameOptions *GetGameOptions(void);
bool8 GameOptionsNotChange(GameOptions *);
void InitializeGameOptions(bool8 initializeGender);
void LoadGameOptions(void);
void SetWindowBGColor(void);
#endif // GUARD_GAME_OPTIONS_H

View File

@@ -1,97 +0,0 @@
#ifndef GUARD_MAIN_MENU_H
#define GUARD_MAIN_MENU_H
#include "menu.h"
#include "text.h"
enum MainMenuScreens
{
MENU_MAIN_SCREEN = 1,
MENU_NEW_GAME = 3,
MENU_AWAITING_RESCUE = 6,
MENU_CONTINUE = 7, // used by Revive Team/Continue
MENU_DELETE_SAVE_PROMPT,
MENU_DELETE_SAVE_CONFIRM,
MENU_ADVENTURE_LOG = 10,
MENU_FRIEND_RESCUE,
MENU_TRADE_ITEMS,
MENU_WONDER_MAIL,
MENU_DUAL_SLOT,
MENU_WIRELESS_COMMS,
MENU_DEBUG = 16,
MENU_SEND_ITEMS,
MENU_RECEIVE_ITEMS,
MENU_COMMUNICATION_1 = 19,
MENU_COMMUNICATION_2,
// NOTE: 0x1B - 0x22 used by Rescue Password Menu
MENU_DISPLAY_RESCUE_PASSWORD = 33,
MENU_RESCUE_PASSWORD_ENTRY,
MENU_DELETE_SAVE = 46,
MENU_DEBUG_DUNGEON,
MENU_DEBUG_FIELD,
MENU_DEBUG_FIELD_MAP,
MENU_DEBUG_FIELD_SCRIPT,
MENU_DEBUG_DEBUG_MENU,
MENU_DEBUG_UNKNOWN_1,
MENU_NO_SCREEN_CHANGE = 65500
};
// size: 0x1A8
typedef struct unkStruct_203B34C
{
u32 unk0;
MenuStruct unk4[4];
UnkTextStruct2 unk144[4];
/* 0x1A4 */ u32 currMenuChoice;
} unkStruct_203B34C;
// size: 0x8
typedef struct unkStruct_8035D94
{
union {
u8 itemIndex_u8;
u32 itemIndex_u32;
} itemIndex;
s32 numItems;
} unkStruct_8035D94;
// size: 0x4
typedef struct MainMenuSub
{
u8 unk2C;
u8 unk2D;
u8 unk2E;
} MainMenuSub;
// size: 0x40
typedef struct MainMenu
{
/* 0x0 */ s32 currMenu;
/* 0x4 */ s32 nextMenu;
/* 0x8 */ s32 lastMenu;
u8 padding[0x20];
/* 0x2C */ MainMenuSub sub;
unkStruct_8035D94 unk30;
s16 unk38;
u8 unk3A;
u8 unk3B;
s32 unk3C;
} MainMenu;
void CleanUpMenu(void);
void DeleteMainMenu(void);
MainMenu *GetMainMenu(void);
void InitMainMenu(void);
void SetMenuItems(MenuStruct *, UnkTextStruct2 *, s32, const UnkTextStruct2 *, const MenuItem *, u8, u32, u32);
void SetUpMenu(void);
s32 UpdateMenu(void);
void sub_8035CC0(UnkTextStruct2 *, u32);
void sub_8035CF4(MenuStruct*, u32, bool8);
s16 sub_8035D3C(void);
s32 sub_8035D74(void);
unkStruct_8035D94 *sub_8035D94(void);
void sub_8035DA0(void);
bool8 sub_80363E0(void);
#endif // GUARD_MAIN_MENU_H

57
include/main_menu1.h Normal file
View File

@@ -0,0 +1,57 @@
#ifndef GUARD_MAIN_MENU1_H
#define GUARD_MAIN_MENU1_H
#include "menu.h"
#include "text.h"
// size: 0x8
typedef struct unkStruct_8035D94
{
union {
u8 itemIndex_u8;
u32 itemIndex_u32;
} itemIndex;
s32 numItems;
} unkStruct_8035D94;
// size: 0x4
typedef struct MainMenuSub
{
u8 unk2C;
u8 unk2D;
u8 unk2E;
} MainMenuSub;
// size: 0x40
typedef struct MainMenu1Work
{
/* 0x0 */ s32 currMenu;
/* 0x4 */ s32 nextMenu;
/* 0x8 */ s32 lastMenu;
u8 padding[0x20];
/* 0x2C */ MainMenuSub sub;
unkStruct_8035D94 unk30;
s16 unk38;
u8 unk3A;
u8 unk3B;
s32 unk3C;
} MainMenu1Work;
void CleanUpMenu(void);
void DeleteMainMenu(void);
MainMenu1Work *GetMainMenu(void);
void InitMainMenu(void);
void SetMenuItems(MenuStruct *, UnkTextStruct2 *, s32 index, const UnkTextStruct2 *, const MenuItem *menuItems, bool8, u32 menuAction, u32 unused);
void SetUpMenu(void);
s32 UpdateMenu(void);
void sub_8035C1C(void);
void sub_8035CC0(UnkTextStruct2 *dataArray, u32 index);
void sub_8035CF4(MenuStruct *menu, u32 index, bool8);
void sub_8035D1C(void);
s16 sub_8035D3C(void);
s32 sub_8035D74(void);
unkStruct_8035D94 *sub_8035D94(void);
void sub_8035DA0(void);
#endif // GUARD_MAIN_MENU1_H

22
include/main_menu2.h Normal file
View File

@@ -0,0 +1,22 @@
#ifndef GUARD_MAIN_MENU2_H
#define GUARD_MAIN_MENU2_H
#include "menu.h"
#include "text.h"
// size: 0x1A8
typedef struct MainMenu2Work
{
u32 unk0;
MenuStruct unk4[4];
UnkTextStruct2 unk144[4];
/* 0x1A4 */ u32 currMenuChoice;
} MainMenu2Work;
void CleanMainMenu(void);
void DrawMainMenu(void);
u32 UpdateMainMenu(void);
bool8 sub_80363E0(void);
#endif // GUARD_MAIN_MENU2_H

View File

@@ -2,7 +2,7 @@
#define GUARD_OTHER_MENUS1_H
#include "code_8094F88.h"
#include "main_menu.h"
#include "main_menu1.h"
#include "menu.h"
#include "pokemon.h"
#include "sprite_oam.h"

19
include/save_menu.h Normal file
View File

@@ -0,0 +1,19 @@
#ifndef GUARD_SAVE_MENU_H
#define GUARD_SAVE_MENU_H
// size: 0x1B4
typedef struct SaveMenuWork
{
/* 0x0 */ u32 currMenu;
u32 unk4;
MenuStruct unk8[4];
UnkTextStruct2 unk148[4];
SpriteOAM unk1A8;
u32 unk1B0; // Sprite count?
} SaveMenuWork;
void CleanSaveMenu(void);
void CreateSaveMenu(s32 currMenu);
s32 UpdateSaveMenu(void);
#endif // GUARD_SAVE_MENU_H

View File

@@ -0,0 +1,7 @@
#ifndef GUARD_UNK_MENU_203B360_H
#define GUARD_UNK_MENU_203B360_H
void sub_80383A8(void);
u32 sub_80383D4(void);
#endif // GUARD_UNK_MENU_203B360_H

View File

@@ -7,4 +7,4 @@ s32 ConvertFromDecimal(s32 *decimal, s32 sign, s32 len);
s32 ConvertFromBCD(s32 bcd);
s32 ConvertToBCD(s32 n);
#endif // GUARD_UTIL_H
#endif // GUARD_UTIL_H

View File

@@ -0,0 +1,8 @@
#ifndef GUARD_WONDER_MAIL_MAIN_MENU_H
#define GUARD_WONDER_MAIL_MAIN_MENU_H
void CleanWonderMailMenu(void);
bool8 CreateWonderMailMenu(void);
u32 UpdateWonderMailMenu(void);
#endif // GUARD_WONDER_MAIL_MAIN_MENU_H

View File

@@ -149,7 +149,8 @@ SECTIONS {
src/friend_rescue.o(.text);
src/credits1.o(.text);
src/credits2.o(.text);
src/main_menu.o(.text);
src/main_menu1.o(.text);
src/main_menu2.o(.text);
src/trade_items_menu.o(.text);
src/other_menus1.o(.text);
asm/other_menus1.o(.text);
@@ -446,7 +447,8 @@ SECTIONS {
data/friend_rescue.o(.rodata);
data/credits1.o(.rodata);
src/credits2.o(.rodata);
src/main_menu.o(.rodata);
src/main_menu1.o(.rodata);
src/main_menu2.o(.rodata);
src/trade_items_menu.o(.rodata);
src/other_menus1.o(.rodata);
src/other_menus2.o(.rodata);

View File

@@ -1,8 +1,8 @@
#include "global.h"
#include "adventure_log.h"
#include "adventure_log_menu.h"
#include "constants/main_menu.h"
#include "input.h"
#include "main_menu.h"
#include "text1.h"
void CreateAdventureLogMenu(void)

View File

@@ -9,6 +9,7 @@
#include "code_8094F88.h"
#include "code_8097670.h"
#include "constants/bg_music.h"
#include "constants/main_menu.h"
#include "cpu.h"
#include "debug.h"
#include "event_flag.h"
@@ -17,7 +18,8 @@
#include "friend_area.h"
#include "game_options.h"
#include "input.h"
#include "main_menu.h"
#include "main_menu1.h"
#include "main_menu2.h"
#include "memory.h"
#include "moves.h"
#include "music.h"
@@ -33,7 +35,6 @@
extern void NDS_LoadOverlay_GroundMain(void);
extern void sub_8014144(void);
extern void LoadGameOptions(void);
extern void SetWindowBGColor(void);
extern void LoadItemParameters(void);
extern void LoadMailInfo(void);
extern void sub_800DAAC(void);

View File

@@ -10,9 +10,9 @@ u8 sub_803D0D8()
return sUnknown_203B408;
}
UNUSED static void sub_803D0E4(u8 r0)
UNUSED static void sub_803D0E4(u8 a0)
{
sUnknown_203B408 = r0;
sUnknown_203B408 = a0;
}
u8 sub_803D0F0(u8 r0)

10
src/data/main_menu1.h Normal file
View File

@@ -0,0 +1,10 @@
static const u8 sFill[] = "pksdir0";
static const UnkTextStruct2 sUnknown_80E59A8 = {
0, 0, 0, 0,
3,
0, 0,
0, 0,
0, 0,
NULL
};

291
src/data/main_menu2.h Normal file
View File

@@ -0,0 +1,291 @@
static const u8 sFill[] = "pksdir0";
static const UnkTextStruct2 sUnknown_80E59C8 = {
0, 0, 0, 0,
3,
0, 0,
0, 0,
0, 0,
NULL
};
static const UnkTextStruct2 sUnknown_80E59E0 = {
0, 0, 0, 0,
3,
2, 2,
10, 3,
3, 0,
NULL
};
static const MenuItem sUnknown_80E59F8[] =
{
{"New Game", MENU_NEW_GAME},
{"Adventure Log", MENU_ADVENTURE_LOG},
{NULL, 0xffdd},
};
UNUSED static const UnkTextStruct2 sUnknown_80E5A29 = {
0, 0, 0, 0,
3,
2, 2,
10, 2,
2, 0,
NULL
};
UNUSED static const MenuItem sUnknown_80E5A44[] =
{
{"Wonder Mail", MENU_WONDER_MAIL},
{NULL, 0xffdd},
};
static const UnkTextStruct2 sUnknown_80E5A60 = {
0, 0, 0, 0,
3,
2, 2,
10, 8,
8, 0,
NULL
};
static const UnkTextStruct2 sUnknown_80E5A78 = {
0, 0, 0, 0,
3,
2, 2,
11, 9,
9, 0,
NULL
};
static const MenuItem sUnknown_80E5A90[] =
{
{"Continue", MENU_CONTINUE},
{"Delete Save Data", MENU_DELETE_SAVE_PROMPT},
{"Adventure Log", MENU_ADVENTURE_LOG},
{"Friend Rescue", MENU_FRIEND_RESCUE},
{"Trade Items", MENU_TRADE_ITEMS},
{NULL, 0xffdd},
};
static const MenuItem sUnknown_80E5AFC[] =
{
{"Continue", MENU_CONTINUE},
{"Delete Save Data", MENU_DELETE_SAVE_PROMPT},
{"Adventure Log", MENU_ADVENTURE_LOG},
{"Friend Rescue", MENU_FRIEND_RESCUE},
{"Trade Items", MENU_TRADE_ITEMS},
{"Wonder Mail", MENU_WONDER_MAIL},
{NULL, 0xffdd},
};
static const UnkTextStruct2 sUnknown_80E5B34 = {
0, 0, 0, 0,
3,
2, 2,
10, 8,
8, 0,
NULL
};
static const MenuItem sUnknown_80E5B4C[] =
{
{"Awaiting Rescue", MENU_AWAITING_RESCUE},
{"Delete Save Data", MENU_DELETE_SAVE_PROMPT},
{"Adventure Log", MENU_ADVENTURE_LOG},
{"Friend Rescue", MENU_FRIEND_RESCUE},
{"Trade Items", MENU_TRADE_ITEMS},
{NULL, 0xffdd},
};
static const MenuItem sUnknown_80E5B8C[] =
{
{"Awaiting Rescue", MENU_AWAITING_RESCUE},
{"Delete Save Data", MENU_DELETE_SAVE_PROMPT},
{"Adventure Log", MENU_ADVENTURE_LOG},
{"Friend Rescue", MENU_FRIEND_RESCUE},
{"Trade Items", MENU_TRADE_ITEMS},
{"Wonder Mail", MENU_WONDER_MAIL},
{NULL, 0xffdd},
};
static const UnkTextStruct2 sUnknown_80E5BC4 = {
0, 0, 0, 0,
3,
2, 2,
10, 8,
8, 0,
NULL
};
static const MenuItem sUnknown_80E5BDC[] =
{
{"Revive Team", MENU_CONTINUE},
{"Delete Save Data", MENU_DELETE_SAVE_PROMPT},
{"Adventure Log", MENU_ADVENTURE_LOG},
{"Friend Rescue", MENU_FRIEND_RESCUE},
{"Trade Items", MENU_TRADE_ITEMS},
{NULL, 0xffdd},
};
static const MenuItem sUnknown_80E5C18[] =
{
{"Revive Team", MENU_CONTINUE},
{"Delete Save Data", MENU_DELETE_SAVE_PROMPT},
{"Adventure Log", MENU_ADVENTURE_LOG},
{"Friend Rescue", MENU_FRIEND_RESCUE},
{"Trade Items", MENU_TRADE_ITEMS},
{"Wonder Mail", MENU_WONDER_MAIL},
{NULL, 0xffdd},
};
UNUSED static const UnkTextStruct2 sUnknown_80E5C50 = {
0, 0, 0, 0,
3,
2, 2,
10, 3,
3, 0,
NULL
};
UNUSED static const MenuItem sUnknown_80E5C68[] =
{
{"Send Items", MENU_SEND_ITEMS},
{"Receive Items", MENU_RECEIVE_ITEMS},
{NULL, 0xffdd},
};
UNUSED static const MenuItem sUnknown_80E5C9C[] =
{
{"Send Items", -1},
{"Receive Items", MENU_RECEIVE_ITEMS},
{NULL, 0xffdd},
};
static const UnkTextStruct2 sUnknown_80E5CB4 = {
0, 0, 0, 0,
3,
2, 15,
26, 3,
3, 0,
NULL
};
static const u8 sUnknown_80E5CE4[];
static const u8 sUnknown_80E5CE8[];
static const MenuItem sUnknown_80E5CCC[] =
{
{sUnknown_80E5CE8, 0xffde},
{sUnknown_80E5CE4, 0xffde},
{NULL, 0xffdd},
};
ALIGNED(4) static const u8 sUnknown_80E5CE4[] = _(" ");
ALIGNED(4) static const u8 sUnknown_80E5CE8[] = _("Start an entirely new adventure.");
static const u8 sUnknown_80E5D24[];
static const MenuItem sUnknown_80E5D0C[] =
{
{sUnknown_80E5D24, 0xffde},
{sUnknown_80E5CE4, 0xffde},
{NULL, 0xffdd},
};
ALIGNED(4) static const u8 sUnknown_80E5D24[] = _("Check your career as an adventurer.");
static const u8 sUnknown_80E5D60[];
static const u8 sUnknown_80E5D88[];
static const MenuItem sUnknown_80E5D48[] =
{
{sUnknown_80E5D88, 0xffde},
{sUnknown_80E5D60, 0xffde},
{NULL, 0xffdd},
};
ALIGNED(4) static const u8 sUnknown_80E5D60[] = _("It won{APOSTROPHE}t be in the release version.");
ALIGNED(4) static const u8 sUnknown_80E5D88[] = _("This is the Debug Mode.");
static const u8 sUnknown_80E5DB8[];
static const u8 sUnknown_80E5DCC[];
static const MenuItem sUnknown_80E5DA0[] =
{
{sUnknown_80E5DCC, 0xffde},
{sUnknown_80E5DB8, 0xffde},
{NULL, 0xffdd},
};
ALIGNED(4) static const u8 sUnknown_80E5DB8[] = _("you last saved. ");
ALIGNED(4) static const u8 sUnknown_80E5DCC[] = _("Resume your adventure from where");
static const u8 sUnknown_80E5E08[];
static const u8 sUnknown_80E5E34[];
static const MenuItem sUnknown_80E5DF0[] =
{
{sUnknown_80E5E34, 0xFFDE},
{sUnknown_80E5E08, 0xFFDE},
{0, 0xFFDD}
};
ALIGNED(4) static const u8 sUnknown_80E5E08[] = _("{COLOR_1 RED}Beware{END_COLOR_TEXT_1}! This will delete it forever!");
ALIGNED(4) static const u8 sUnknown_80E5E34[] = _("This will delete your saved game data.");
static const u8 sUnknown_80E5E74[];
static const u8 sUnknown_80E5EA0[];
static const MenuItem sUnknown_80E5E5C[] =
{
{sUnknown_80E5EA0, 0xFFDE},
{sUnknown_80E5E74, 0xFFDE},
{0, 0xFFDD}
};
ALIGNED(4) static const u8 sUnknown_80E5E74[] = _("passwords{COMMA} friends may rescue each other.");
ALIGNED(4) static const u8 sUnknown_80E5EA0[] = _("Using a Game Link cable or");
static const u8 sUnknown_80E5ED4[];
static const u8 sUnknown_80E5EF8[];
static const MenuItem sUnknown_80E5EBC[] =
{
{sUnknown_80E5EF8, 0xFFDE},
{sUnknown_80E5ED4, 0xFFDE},
{0, 0xFFDD}
};
ALIGNED(4) static const u8 sUnknown_80E5ED4[] = _("trade stored items with a friend.");
ALIGNED(4) static const u8 sUnknown_80E5EF8[] = _("Using a Game Link cable{COMMA} you can");
static const u8 sUnknown_80E5F34[];
static const u8 sUnknown_80E5F58[];
static const MenuItem sUnknown_80E5F1C[] =
{
{sUnknown_80E5F58, 0xFFDE},
{sUnknown_80E5F34, 0xFFDE},
{0, 0xFFDD}
};
ALIGNED(4) static const u8 sUnknown_80E5F34[] = _("You can give up waiting for rescue.");
ALIGNED(4) static const u8 sUnknown_80E5F58[] = _("You are awaiting rescue by a friend.");
static const u8 sUnknown_80E5F98[];
static const u8 sUnknown_80E5FB0[];
static const MenuItem sUnknown_80E5F80[] =
{
{sUnknown_80E5FB0, 0xFFDE},
{sUnknown_80E5F98, 0xFFDE},
{0, 0xFFDD}
};
ALIGNED(4) static const u8 sUnknown_80E5F98[] = _("receive Wonder Mail.");
ALIGNED(4) static const u8 sUnknown_80E5FB0[] = _("Using passwords{COMMA} you can");
static const u8 sUnknown_80E5FE4[];
static const u8 sUnknown_80E6008[];
static const MenuItem sUnknown_80E5FCC[] =
{
{sUnknown_80E6008, 0xFFDE},
{sUnknown_80E5FE4, 0xFFDE},
{NULL, 0xFFDD}
};
ALIGNED(4) static const u8 sUnknown_80E5FE4[] = _("receive teams from your friends.");
ALIGNED(4) static const u8 sUnknown_80E6008[] = _("Using the Dual Slot function{COMMA} you can");
static const u8 sUnknown_80E6048[];
static const u8 sUnknown_80E6070[];
static const MenuItem sUnknown_80E6030[] =
{
{sUnknown_80E6070, 0xFFDE},
{sUnknown_80E6048, 0xFFDE},
{NULL, 0xFFDD}
};
ALIGNED(4) static const u8 sUnknown_80E6048[] = _("go on an adventure to unknown worlds.");
ALIGNED(4) static const u8 sUnknown_80E6070[] = _("Using wireless communication{COMMA} you can");

View File

@@ -1,9 +1,10 @@
#include "global.h"
#include "code_8097670.h"
#include "constants/friend_area.h"
#include "constants/main_menu.h"
#include "debug_menu1.h"
#include "friend_area.h"
#include "main_menu.h"
#include "main_menu1.h"
#include "memory.h"
#include "menu_input.h"
#include "pokemon.h"
@@ -138,7 +139,7 @@ u32 UpdateDebugMenu(void)
void SetDebugMenuItems(void)
{
SetMenuItems(sDebugMenu->unk0, sDebugMenu->unk140, 0, &sUnknown_80E7D58, sDebugMenuItems, 1, 13, 0);
SetMenuItems(sDebugMenu->unk0, sDebugMenu->unk140, 0, &sUnknown_80E7D58, sDebugMenuItems, TRUE, 13, 0);
sub_8035CF4(sDebugMenu->unk0, 0, 1);
}

View File

@@ -11,7 +11,7 @@
#include "cpu.h"
#include "friend_rescue.h"
#include "items.h"
#include "main_menu.h"
#include "main_menu1.h"
#include "memory.h"
#include "menu_input.h"
#include "other_menus2.h"
@@ -269,7 +269,6 @@ extern void sub_8031E00(void);
extern u8 sub_8024108(u32);
extern void sub_802452C(void);
extern u32 sub_80244E4(void);
extern void sub_8035D1C(void);
extern u32 sub_8039068(u32, u8 *passwordBuffer, unkStruct_203B480 *r0);
extern void sub_803084C(void);
@@ -889,7 +888,7 @@ void sub_8032828(void)
break;
case 0x27:
sub_8006518(gUnknown_203B33C->unk35C);
SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E2334, &gUnknown_80E234C, 1, 0, 0);
SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E2334, &gUnknown_80E234C, TRUE, 0, 0);
sub_8023DA4();
sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1);
break;
@@ -1052,7 +1051,7 @@ void sub_8032828(void)
break;
case 0x5D:
sub_8006518(gUnknown_203B33C->unk35C);
SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E231C, &gUnknown_80E2408, 1, 0, 0);
SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E231C, &gUnknown_80E2408, TRUE, 0, 0);
sub_803092C();
sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1);
break;
@@ -1068,7 +1067,7 @@ void sub_8032828(void)
break;
case 0x60:
sub_8006518(gUnknown_203B33C->unk35C);
SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E23F0, &gUnknown_80E2408, 1, 0, 0);
SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E23F0, &gUnknown_80E2408, TRUE, 0, 0);
sub_801CCD8();
sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1);
break;
@@ -1231,7 +1230,7 @@ void sub_8032828(void)
case 0x1E:
case 0x33:
sub_8006518(gUnknown_203B33C->unk35C);
SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E231C, &gUnknown_80E234C, 1, 0, 0);
SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E231C, &gUnknown_80E234C, TRUE, 0, 0);
sub_803092C();
sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1);
break;

View File

@@ -19,7 +19,6 @@ extern struct WindowBG gWindowBGColors;
EWRAM_DATA_2 GameOptions *gGameOptionsRef = {0};
EWRAM_DATA GameOptions gGameOptions = {0};
extern void SetWindowBGColor(void);
void LoadGameOptions(void)
{

View File

@@ -3,11 +3,12 @@
#include "code_800D090.h"
#include "code_8094F88.h"
#include "code_8097670.h"
#include "constants/main_menu.h"
#include "constants/wonder_mail.h"
#include "event_flag.h"
#include "file_system.h"
#include "input.h"
#include "main_menu.h"
#include "main_menu1.h"
#include "memory.h"
#include "menu.h"
#include "menu_input.h"
@@ -164,25 +165,25 @@ void CreateLoadScreen(u32 currMenu)
}
ResetUnusedInputStruct();
sub_800641C(gLoadScreen->unk144, TRUE, TRUE);
SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,0,&gUnknown_80E7610,gUnknown_203B378,0,6,0);
SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,0,&gUnknown_80E7610,gUnknown_203B378,FALSE,6,0);
switch(gLoadScreen->currMenu){
case MENU_CONTINUE:
if (IsQuickSave())
SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeQuicksaveMenuItems,0,6,0);
SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeQuicksaveMenuItems,FALSE,6,0);
else
SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeAdventureMenuItems,0,6,0);
SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeAdventureMenuItems,FALSE,6,0);
break;
case MENU_AWAITING_RESCUE:
SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gQuitWaitingRescueMenuItems,0,6,0);
SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gQuitWaitingRescueMenuItems,FALSE,6,0);
break;
case MENU_DELETE_SAVE_PROMPT:
SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gDeleteSavePromptMenuItems,0,6,0);
SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gDeleteSavePromptMenuItems,FALSE,6,0);
break;
case MENU_DELETE_SAVE_CONFIRM:
SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C, gDeleteSaveConfirmMenuItems,0,6,0);
SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C, gDeleteSaveConfirmMenuItems,FALSE,6,0);
break;
}
SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,2,&gUnknown_80E7784,gLoadScreenYesNoMenu,1,2,0);
SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,2,&gUnknown_80E7784,gLoadScreenYesNoMenu,TRUE,2,0);
sub_8035CF4(gLoadScreen->unk4,0,0);
sub_8035CF4(gLoadScreen->unk4,1,0);
sub_8035CF4(gLoadScreen->unk4,2,1);

File diff suppressed because it is too large Load Diff

418
src/main_menu1.c Normal file
View File

@@ -0,0 +1,418 @@
#include "global.h"
#include "adventure_log_menu.h"
#include "code_8098BDC.h"
#include "constants/item.h"
#include "constants/main_menu.h"
#include "debug_menu1.h"
#include "ds_menus.h"
#include "friend_rescue.h"
#include "game_options.h"
#include "load_screen.h"
#include "main_menu1.h"
#include "main_menu2.h"
#include "memory.h"
#include "menu_input.h"
#include "other_menus1.h"
#include "rescue_password_menu.h"
#include "save_menu.h"
#include "text1.h"
#include "text2.h"
#include "trade_items_menu.h"
#include "unk_menu_203B360.h"
#include "wonder_mail_main_menu.h"
// NOTE: 0x13 and 0x14
// Communication Screen?
// Got Communication warning when I wrote them to the struct
// NOTE: 0x29, 0x2A, 0x2B, 0x2C
// Triggers a save
// NOTE: 0x2D
// Triggers a save and then goes to 0x13 (comms warning)
// NOTE: 0x2E
// Deletes the Save
static EWRAM_DATA_2 MainMenu1Work *sMainMenu = {0};
#include "data/main_menu1.h"
static s32 sub_8035DB4(u32 currMenu);
void InitMainMenu(void)
{
if (sMainMenu == NULL) {
sMainMenu = MemoryAlloc(sizeof(MainMenu1Work), 8);
MemoryFill8((u8 *)sMainMenu, 0, sizeof(MainMenu1Work));
}
sMainMenu->currMenu = MENU_NO_SCREEN_CHANGE;
sMainMenu->nextMenu = MENU_MAIN_SCREEN;
sMainMenu->lastMenu = MENU_MAIN_SCREEN;
sMainMenu->unk38 = -1;
sMainMenu->unk3C = -1;
sMainMenu->sub.unk2E = 0;
sMainMenu->sub.unk2C = 1;
sMainMenu->sub.unk2D = 0;
sub_8035DA0();
sMainMenu->unk3A = 0;
}
void DeleteMainMenu(void)
{
if (sMainMenu) {
MemoryFree(sMainMenu);
sMainMenu = NULL;
}
}
void SetUpMenu(void)
{
if (sMainMenu->currMenu == sMainMenu->nextMenu)
return;
switch (sMainMenu->nextMenu) {
case MENU_MAIN_SCREEN:
SetWindowBGColor();
sub_8099690(0);
DrawMainMenu();
break;
case MENU_AWAITING_RESCUE:
case MENU_CONTINUE:
case MENU_DELETE_SAVE_PROMPT:
case MENU_DELETE_SAVE_CONFIRM:
CreateLoadScreen(sMainMenu->nextMenu);
break;
case MENU_TRADE_ITEMS:
CreateTradeItemsMenu();
break;
case MENU_COMMUNICATION_1:
case MENU_COMMUNICATION_2:
sub_8036FDC(sub_8035DB4(sMainMenu->nextMenu));
break;
case MENU_FRIEND_RESCUE:
CreateFriendRescueMenu();
break;
case MENU_WONDER_MAIL:
CreateWonderMailMenu();
break;
case MENU_DUAL_SLOT:
CreateDualSlotMenu();
break;
case MENU_WIRELESS_COMMS:
CreateWirelessCommsMenu();
break;
case MENU_DISPLAY_RESCUE_PASSWORD:
case MENU_RESCUE_PASSWORD_ENTRY:
CreateRescuePasswordMenu(sMainMenu->nextMenu);
break;
case MENU_ADVENTURE_LOG:
CreateAdventureLogMenu();
break;
case 0x29:
case 0x2A:
case 0x2B:
case 0x2C:
case 0x2D:
case MENU_DELETE_SAVE:
CreateSaveMenu(sMainMenu->nextMenu);
break;
case MENU_DEBUG:
CreateDebugMenu();
break;
}
sMainMenu->currMenu = sMainMenu->nextMenu;
}
s32 UpdateMenu(void)
{
s32 nextMenu1;
s32 nextMenu;
nextMenu = MENU_NO_SCREEN_CHANGE;
switch (sMainMenu->nextMenu) {
case MENU_MAIN_SCREEN:
nextMenu = UpdateMainMenu();
break;
case MENU_AWAITING_RESCUE:
case MENU_CONTINUE:
case MENU_DELETE_SAVE_PROMPT:
case MENU_DELETE_SAVE_CONFIRM:
nextMenu = UpdateLoadScreenMenu();
break;
case MENU_TRADE_ITEMS:
nextMenu1 = UpdateTradeItemsMenu();
nextMenu = MENU_MAIN_SCREEN;
if (nextMenu1 != 3)
nextMenu = MENU_NO_SCREEN_CHANGE;
break;
case MENU_FRIEND_RESCUE:
nextMenu1 = UpdateFriendRescueMenu();
nextMenu = MENU_MAIN_SCREEN;
if (nextMenu1 != 3)
nextMenu = MENU_NO_SCREEN_CHANGE;
break;
case MENU_WONDER_MAIL:
nextMenu1 = UpdateWonderMailMenu();
nextMenu = MENU_MAIN_SCREEN;
if (nextMenu1 != 3)
nextMenu = MENU_NO_SCREEN_CHANGE;
break;
case MENU_DUAL_SLOT:
nextMenu1 = UpdateDualSlotMenu();
nextMenu = MENU_MAIN_SCREEN;
if (nextMenu1 != 3)
nextMenu = MENU_NO_SCREEN_CHANGE;
break;
case MENU_WIRELESS_COMMS:
nextMenu1 = UpdateWirelessCommsMenu();
nextMenu = 5;
if (nextMenu1 != 3) {
nextMenu = MENU_NO_SCREEN_CHANGE;
if (nextMenu1 == 2)
nextMenu = MENU_MAIN_SCREEN;
}
break;
case MENU_DISPLAY_RESCUE_PASSWORD:
case MENU_RESCUE_PASSWORD_ENTRY:
nextMenu = UpdateRescuePasswordMenu();
break;
case MENU_ADVENTURE_LOG:
nextMenu = UpdateAdventureLogMenu();
break;
case 0x24:
case 0x25:
case 0x26:
case 0x27:
case 0x28:
nextMenu = sub_80383D4();
break;
case 0x29:
case 0x2A:
case 0x2B:
case 0x2C:
case 0x2D:
case MENU_DELETE_SAVE:
nextMenu = UpdateSaveMenu();
break;
case MENU_DEBUG:
nextMenu = UpdateDebugMenu();
break;
}
if (nextMenu != MENU_NO_SCREEN_CHANGE)
sMainMenu->nextMenu = nextMenu;
return nextMenu;
}
void CleanUpMenu(void)
{
if (sMainMenu->lastMenu == sMainMenu->nextMenu)
return;
switch (sMainMenu->lastMenu) {
case MENU_MAIN_SCREEN:
CleanMainMenu();
break;
case MENU_AWAITING_RESCUE:
case MENU_CONTINUE:
case MENU_DELETE_SAVE_PROMPT:
case MENU_DELETE_SAVE_CONFIRM:
CleanLoadScreen();
break;
case MENU_TRADE_ITEMS:
CleanTradeItemsMenu();
break;
case MENU_COMMUNICATION_1:
case MENU_COMMUNICATION_2:
sub_80370D4();
break;
case MENU_FRIEND_RESCUE:
CleanFriendRescueMenu();
break;
case MENU_WONDER_MAIL:
CleanWonderMailMenu();
break;
case MENU_DUAL_SLOT:
CleanDualSlotMenu();
break;
case MENU_WIRELESS_COMMS:
CleanWirelessCommsMenu();
break;
case MENU_DISPLAY_RESCUE_PASSWORD:
case MENU_RESCUE_PASSWORD_ENTRY:
CleanRescuePasswordMenu();
break;
case MENU_ADVENTURE_LOG:
CleanAdventureLogMenu();
break;
case 0x24:
case 0x25:
case 0x26:
case 0x27:
case 0x28:
sub_80383A8();
break;
case 0x29:
case 0x2A:
case 0x2B:
case 0x2C:
case 0x2D:
case MENU_DELETE_SAVE:
CleanSaveMenu();
break;
case MENU_DEBUG:
DeleteDebugMenu();
break;
}
sMainMenu->lastMenu = sMainMenu->nextMenu;
}
UNUSED static void sub_8035C00(MainMenuSub *a0)
{
sMainMenu->sub = *a0;
}
UNUSED static MainMenuSub *sub_8035C10(void)
{
return &sMainMenu->sub;
}
void sub_8035C1C(void)
{
sMainMenu->sub.unk2E = 0;
sMainMenu->sub.unk2C = 1;
sMainMenu->sub.unk2D = 0;
}
void SetMenuItems(MenuStruct *a0, UnkTextStruct2 *a1, s32 index, const UnkTextStruct2 *a3, const MenuItem *menuItems, bool8 a5, u32 menuAction, u32 unused)
{
a1[index] = *a3;
ResetUnusedInputStruct();
sub_800641C(a1, TRUE, TRUE);
if (a5)
sub_8012D60(&a0[index], menuItems, 0, 0, menuAction, index);
else
sub_8012E04(&a0[index], menuItems, 0, 0, 0, index);
a0[index].unk4C = TRUE;
}
void sub_8035CC0(UnkTextStruct2 *dataArray, u32 index)
{
sub_8006518(dataArray);
dataArray[index] = sUnknown_80E59A8;
ResetUnusedInputStruct();
sub_800641C(dataArray, TRUE, TRUE);
}
void sub_8035CF4(MenuStruct *menu, u32 index, bool8 a2)
{
menu[index].unk4C = a2;
menu[index].unk4D = 1;
menu[index].menuAction = -1;
sub_8012EBC(&menu[index]);
}
void sub_8035D1C(void)
{
sMainMenu->unk38 = -1;
}
UNUSED static void sub_8035D30(s32 a0)
{
sMainMenu->unk38 = a0;
}
s16 sub_8035D3C(void)
{
return sMainMenu->unk38;
}
MainMenu1Work *GetMainMenu(void)
{
return sMainMenu;
}
UNUSED static void sub_8035D58(void)
{
sMainMenu->unk3C = -1;
}
UNUSED static void sub_8035D68(s32 a0)
{
sMainMenu->unk3C = a0;
}
s32 sub_8035D74(void)
{
return sMainMenu->unk3C;
}
UNUSED static void sub_8035D80(unkStruct_8035D94 *item)
{
#ifndef NONMATCHING
register u32 numItem asm("r1");
#else
u32 numItem;
#endif
u32 itemIndex;
MainMenu1Work *preload;
preload = sMainMenu;
numItem = item->numItems;
itemIndex = item->itemIndex.itemIndex_u32;
preload->unk30.itemIndex.itemIndex_u32 = itemIndex;
preload->unk30.numItems = numItem;
}
unkStruct_8035D94 *sub_8035D94(void)
{
return &sMainMenu->unk30;
}
void sub_8035DA0(void)
{
sMainMenu->unk30.itemIndex.itemIndex_u8 = ITEM_NOTHING;
sMainMenu->unk30.numItems = 0;
}
static s32 sub_8035DB4(u32 currMenu)
{
s32 returnVar = 8;
switch (currMenu) {
case MENU_COMMUNICATION_1:
returnVar = 0;
break;
case MENU_COMMUNICATION_2:
returnVar = 1;
break;
case 0x15:
returnVar = 2;
break;
case 0x16:
returnVar = 3;
break;
case 0x17:
returnVar = 4;
break;
case 0x18:
returnVar = 5;
break;
case 0x19:
returnVar = 6;
break;
case 0x1A:
returnVar = 7;
break;
}
return returnVar;
}

296
src/main_menu2.c Normal file
View File

@@ -0,0 +1,296 @@
#include "global.h"
#include "code_803D0D8.h"
#include "constants/main_menu.h"
#include "constants/wonder_mail.h"
#include "main_menu1.h"
#include "main_menu2.h"
#include "memory.h"
#include "menu_input.h"
#include "save.h"
#include "text1.h"
static EWRAM_DATA_2 MainMenu2Work *sUnknown_203B34C = {0};
static EWRAM_DATA_2 u32 sUnknown_203B350 = {0};
static EWRAM_DATA_2 u32 sUnknown_203B354 = {0};
#include "data/main_menu2.h"
static void SetMainMenuItems(void);
static bool8 SetMainMenuText(void);
static void sub_803623C(void);
void DrawMainMenu(void)
{
s32 i;
if (sUnknown_203B34C == NULL) {
sUnknown_203B34C = MemoryAlloc(sizeof(MainMenu2Work), 8);
MemoryFill8((u8 *)sUnknown_203B34C, 0, sizeof(MainMenu2Work));
}
for (i = 0; i < 4; i++)
sUnknown_203B34C->unk144[i] = sUnknown_80E59C8;
ResetUnusedInputStruct();
sub_800641C(sUnknown_203B34C->unk144, TRUE, TRUE);
SetMainMenuItems();
sUnknown_203B34C->currMenuChoice = -1;
if (SetMainMenuText())
sub_8035CF4(sUnknown_203B34C->unk4, 2, FALSE);
sub_8035CF4(sUnknown_203B34C->unk4, 0, TRUE);
sUnknown_203B34C->unk0 = 1;
}
void CleanMainMenu(void)
{
ResetUnusedInputStruct();
sub_800641C(NULL, TRUE, TRUE);
if (sUnknown_203B34C != NULL) {
MemoryFree(sUnknown_203B34C);
sUnknown_203B34C = NULL;
}
}
u32 UpdateMainMenu(void)
{
u32 nextMenu = MENU_NO_SCREEN_CHANGE;
switch (sUnknown_203B34C->unk0) {
case 1:
sub_8012FD8(&sUnknown_203B34C->unk4[2]);
if (!sub_8012FD8(sUnknown_203B34C->unk4))
sub_8013114(sUnknown_203B34C->unk4, &nextMenu);
if (SetMainMenuText()) {
sub_8035CF4(sUnknown_203B34C->unk4, 0, TRUE);
sub_8035CF4(sUnknown_203B34C->unk4, 2, FALSE);
}
switch (nextMenu) {
case MENU_NO_SCREEN_CHANGE:
nextMenu = MENU_NO_SCREEN_CHANGE;
break;
case 0xFFDD:
sUnknown_203B34C->unk0 = 1;
nextMenu = MENU_NO_SCREEN_CHANGE;
ResetUnusedInputStruct();
sub_8035CF4(sUnknown_203B34C->unk4, 0, TRUE);
sub_8035CF4(sUnknown_203B34C->unk4, 2, FALSE);
break;
case MENU_TRADE_ITEMS:
sub_8035DA0();
sUnknown_203B350 = nextMenu;
break;
case MENU_NEW_GAME:
case MENU_AWAITING_RESCUE:
case MENU_CONTINUE:
case MENU_DELETE_SAVE_PROMPT:
case MENU_DELETE_SAVE_CONFIRM:
case MENU_ADVENTURE_LOG:
case MENU_FRIEND_RESCUE:
case MENU_WONDER_MAIL:
case MENU_DUAL_SLOT:
case MENU_WIRELESS_COMMS:
case MENU_DEBUG:
sUnknown_203B350 = nextMenu;
break;
}
break;
case 12:
if (!sub_8012FD8(&sUnknown_203B34C->unk4[1]))
sub_8013114(&sUnknown_203B34C->unk4[1], &nextMenu);
switch (nextMenu) {
case 0xFFDD:
sub_803623C();
sUnknown_203B34C->unk0 = 1;
nextMenu = MENU_NO_SCREEN_CHANGE;
break;
case MENU_SEND_ITEMS:
sUnknown_203B354 = nextMenu;
nextMenu = MENU_TRADE_ITEMS;
break;
case MENU_RECEIVE_ITEMS:
sUnknown_203B354 = nextMenu;
nextMenu = MENU_COMMUNICATION_2;
break;
case MENU_NO_SCREEN_CHANGE:
nextMenu = MENU_NO_SCREEN_CHANGE;
break;
default:
break;
}
break;
default:
case 13: // forces the bls switch
break;
}
return nextMenu;
}
static bool8 SetMainMenuText(void)
{
u32 menuChoice;
const MenuItem *preload;
// Have to load the pointer before the index
preload = sUnknown_203B34C->unk4[0].menuItems;
menuChoice = preload[sUnknown_203B34C->unk4[0].input.menuIndex].menuAction; // chosen menu action?
if (sUnknown_203B34C->currMenuChoice == menuChoice)
return FALSE;
sUnknown_203B34C->currMenuChoice = menuChoice;
sub_8035CC0(sUnknown_203B34C->unk144, 2);
sub_8035CC0(sUnknown_203B34C->unk144, 3);
switch (menuChoice) {
case MENU_WIRELESS_COMMS:
// Using wireless communications, you can go on an adventure to unknown worlds.
SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E6030, FALSE, 0, 0);
break;
case MENU_WONDER_MAIL:
// Using passwords, you can receive Wonder Mail
SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5F80, FALSE, 0, 0);
break;
case MENU_AWAITING_RESCUE:
// You are awaiting resuce by a friend
// You can give up waiting for rescue
SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5F1C, FALSE, 0, 0);
break;
case MENU_NEW_GAME:
// Start an entirely new adventure
SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5CCC, FALSE, 0, 0);
break;
case MENU_CONTINUE:
// Resume your adventure from where you last saved
SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5DA0, FALSE, 0, 0);
break;
case MENU_DELETE_SAVE_PROMPT:
// This will delete your saved game data.
// Beware! This will delete it forever
SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5DF0, FALSE, 0, 0);
break;
case MENU_ADVENTURE_LOG:
// Check your career as an adventurer
SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5D0C, FALSE, 0, 0);
break;
case MENU_FRIEND_RESCUE:
// Using a Game Link cable or passwords, friends may rescue each other
SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5E5C, FALSE, 0, 0);
break;
case MENU_TRADE_ITEMS:
// Using a Game Link cable you can trade stored items with a friend
SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5EBC, FALSE, 0, 0);
break;
case MENU_DUAL_SLOT:
// Using Dual Slot function, you can receive teams from your friends
SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5FCC, FALSE, 0, 0);
break;
case MENU_DEBUG:
// This is the Debug Mode.
// It won't be in the release version
SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5D48, FALSE, 0, 0);
break;
default:
break;
}
return TRUE;
}
static void sub_803623C(void)
{
sub_8035CC0(sUnknown_203B34C->unk144, 1);
SetMainMenuItems();
sUnknown_203B34C->currMenuChoice = -1;
if (SetMainMenuText())
sub_8035CF4(sUnknown_203B34C->unk4, 2, FALSE);
sub_8035CF4(sUnknown_203B34C->unk4, 0, TRUE);
}
static void SetMainMenuItems(void)
{
if (sub_8011C34() != -1) {
if (CountMailType(WONDER_MAIL_TYPE_SOS) == 0) {
if (CountMailType(WONDER_MAIL_TYPE_OKD) != 0) {
if (sub_803D0D8()) {
// Revive Team
// Delete Save Data
// Adventure Log
// Friend Rescue
// Trade Items
// Wonder Mail
SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 0, &sUnknown_80E5A78, sUnknown_80E5C18, TRUE, sUnknown_203B350, 1);
}
else {
// Revive Team
// Delete Save Data
// Adventure Log
// Friend Rescue
// Trade Items
SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 0, &sUnknown_80E5BC4, sUnknown_80E5BDC, TRUE, sUnknown_203B350, 1);
}
}
else {
if (sub_803D0D8()) {
// Continue
// Delete Save Data
// Adventure Log
// Friend Rescue
// Trade Items
// Wonder Mail
SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 0, &sUnknown_80E5A78, sUnknown_80E5AFC, TRUE, sUnknown_203B350, 1);
}
else {
// Continue
// Delete Save Data
// Adventure Log
// Friend Rescue
// Trade Items
SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 0, &sUnknown_80E5A60, sUnknown_80E5A90, TRUE, sUnknown_203B350, 1);
}
}
}
else {
if (sub_803D0D8()) {
// Awaiting Rescue
// Delete Save Data
// Adventure Log
// Friend Rescue
// Trade Items
// Wonder Mail
SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 0, &sUnknown_80E5A78, sUnknown_80E5B8C, TRUE, sUnknown_203B350, 1);
}
else {
// Awaiting Rescue
// Delete Save Data
// Adventure Log
// Friend Rescue
// Trade Items
SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 0, &sUnknown_80E5B34, sUnknown_80E5B4C, TRUE, sUnknown_203B350, 1);
}
}
}
else {
// New Game
// Adventure Log
SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 0, &sUnknown_80E59E0, sUnknown_80E59F8, TRUE, sUnknown_203B350, 1);
}
}
bool8 sub_80363E0(void)
{
if (sUnknown_203B34C == NULL)
return FALSE;
if (sUnknown_203B34C->unk0 == 12)
return FALSE;
return TRUE;
}

View File

@@ -77,7 +77,6 @@ extern u32 HandleHintDisplayScreenInput(void);
extern void DestroyHintDisplayScreen(void);
extern u32 sub_801E218(void);
extern void sub_801E2C4(void);
extern void SetWindowBGColor(void);
enum
{

View File

@@ -6,6 +6,7 @@
#include "code_80118A4.h"
#include "code_80130A8.h"
#include "constants/communication_error_codes.h"
#include "constants/main_menu.h"
#include "dungeon_global_data.h"
#include "input.h"
#include "items.h"
@@ -63,7 +64,7 @@ void sub_8036FDC(s32 param_1)
ResetUnusedInputStruct();
sub_800641C(sUnknown_203B35C->unk15C, TRUE, TRUE);
SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, &sUnknown_80E6CD0, sUnknown_80E6CE8, 0, 6, 0);
SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, &sUnknown_80E6CD0, sUnknown_80E6CE8, FALSE, 6, 0);
sub_8035CF4(sUnknown_203B35C->unk1C, 0, TRUE);
sub_80376CC();
}
@@ -137,7 +138,7 @@ static void sub_80371B8(void)
// Success!
// The item exchange with your friend
// went through successfully
SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, &sUnknown_80E6C50, sUnknown_80E6C68, 0, 6, 0);
SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, &sUnknown_80E6C50, sUnknown_80E6C68, FALSE, 6, 0);
sub_8035CF4(sUnknown_203B35C->unk1C, 0, TRUE);
}
}
@@ -199,7 +200,7 @@ static void sub_80371B8(void)
break;
}
SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, puVar5, MenuItems, 0, 6, 0);
SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, puVar5, MenuItems, FALSE, 6, 0);
sub_8035CF4(sUnknown_203B35C->unk1C, 0, TRUE);
if (sUnknown_203B35C->linkStatus != COMMS_GOOD && sUnknown_203B35C->unk0 == 0) {
@@ -295,8 +296,7 @@ static void sub_8037400(void)
case 4:
mailIndex = sub_8035D74();
sUnknown_203B35C->unk28C = *GetMailatIndex(mailIndex);
// TODO: int16 memes?
if (sub_8035D3C() << 0x10 != 0xffff0000) {
if ((u16)sub_8035D3C() != 0xFFFF) {
species = sub_8035D3C();
sUnknown_203B35C->unk2BC = gRecruitedPokemonRef->pokemon[(s16)species];
}

View File

@@ -3,7 +3,7 @@
#include "constants/communication_error_codes.h"
#include "constants/dungeon.h"
#include "dungeon_global_data.h"
#include "main_menu.h"
#include "main_menu1.h"
#include "memory.h"
#include "other_menus1.h"
#include "other_menus2.h"
@@ -253,8 +253,8 @@ static void sub_8037EBC(WonderMailStruct_203B2C0_sub *param_1, WonderMailStruct
static void sub_8037F4C(unkStruct_203B480 *param_1, unkStruct_203B480 *param_2)
{
unkStruct_203B480 *mail;
MainMenu *mainMenu;
MainMenu1Work *mainMenu;
if(sub_800D588() == 0)
{
param_2 = param_1;

View File

@@ -1,10 +1,11 @@
#include "global.h"
#include "code_80130A8.h"
#include "code_8094F88.h"
#include "constants/main_menu.h"
#include "dungeon.h"
#include "input.h"
#include "items.h"
#include "main_menu.h"
#include "main_menu1.h"
#include "memory.h"
#include "menu_input.h"
#include "pokemon.h"
@@ -345,7 +346,7 @@ s32 UpdateRescuePasswordMenu(void)
unkStruct_203B480 *mailPtr1;
unkStruct_203B480 *mailPtr2;
u32 iVar7;
MainMenu *mainMenuPtr;
MainMenu1Work *mainMenuPtr;
s32 nextMenu;
unkStruct_203B480 mail;
u32 menuAction;
@@ -554,31 +555,31 @@ void DisplayRescuePasswordError(u32 passwordError)
sub_80155F0();
switch(passwordError) {
case PASSWORD_ENTRY_INCORRECT_PASSWORD:
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E71FC,gUnknown_80E7214,0,0xd,0);
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E71FC,gUnknown_80E7214,FALSE,0xd,0);
break;
case PASSWORD_ENTRY_NOT_SOS_MAIL:
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E72EC,gUnknown_80E7304,0,0xd,0);
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E72EC,gUnknown_80E7304,FALSE,0xd,0);
break;
case PASSWORD_ENTRY_DUPLICATE_SOS_MAIL:
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7344,gUnknown_80E735C,0,0xd,0);
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7344,gUnknown_80E735C,FALSE,0xd,0);
break;
case PASSWORD_ENTRY_NO_SPACE:
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7588,gUnknown_80E75A0,0,0xd,0);
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7588,gUnknown_80E75A0,FALSE,0xd,0);
break;
case PASSWORD_ENTRY_NOT_AOK_MAIL:
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E73AC,gUnknown_80E73C4,0,0xd,0);
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E73AC,gUnknown_80E73C4,FALSE,0xd,0);
break;
case PASSWORD_ENTRY_DUPLICATE_AOK_MAIL:
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7408,gUnknown_80E7420,0,0xd,0);
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7408,gUnknown_80E7420,FALSE,0xd,0);
break;
case PASSWORD_ENTRY_NOT_THANK_YOU_MAIL:
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7468,gUnknown_80E7480,0,0xd,0);
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7468,gUnknown_80E7480,FALSE,0xd,0);
break;
case PASSWORD_ENTRY_DUPLICATE_THANK_YOU_MAIL:
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E74C8,gUnknown_80E74E0,0,0xd,0);
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E74C8,gUnknown_80E74E0,FALSE,0xd,0);
break;
case PASSWORD_ENTRY_NOT_WONDER_MAIL:
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E752C,gUnknown_80E7544,0,0xd,0);
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E752C,gUnknown_80E7544,FALSE,0xd,0);
break;
default:
break;
@@ -592,7 +593,7 @@ void DisplayPasswordAcceptScreen(void)
ResetUnusedInputStruct();
sub_800641C(NULL, TRUE, TRUE);
sub_80155F0();
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7278,gUnknown_80E7290,0,0xd,0);
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7278,gUnknown_80E7290,FALSE,0xd,0);
sub_8035CF4(gRescuePasswordMenu->unk8,0,TRUE);
}

View File

@@ -1,24 +1,15 @@
#include "global.h"
#include "main_menu.h"
#include "memory.h"
#include "text1.h"
#include "save.h"
#include "menu_input.h"
#include "sprite.h"
#include "code_80130A8.h"
#include "constants/main_menu.h"
#include "main_menu1.h"
#include "memory.h"
#include "menu_input.h"
#include "save.h"
#include "save_menu.h"
#include "sprite.h"
#include "text1.h"
struct unkStruct_203B360
{
// size: 0x1b4
u32 currMenu;
u32 unk4;
MenuStruct unk8[4];
UnkTextStruct2 unk148[4];
SpriteOAM unk1A8;
u32 unk1B0; // Sprite count?
};
EWRAM_DATA_2 struct unkStruct_203B360 *gUnknown_203B364 = {0};
static EWRAM_DATA_2 SaveMenuWork *sUnknown_203B364 = {0};
const UnkTextStruct2 gUnknown_80E6F20 =
{
@@ -134,29 +125,29 @@ void CreateSaveMenu(s32 currMenu)
{
s32 index;
if (gUnknown_203B364 == NULL) {
gUnknown_203B364 = MemoryAlloc(sizeof(struct unkStruct_203B360),8);
MemoryFill8((u8 *)gUnknown_203B364,0,sizeof(struct unkStruct_203B360));
if (sUnknown_203B364 == NULL) {
sUnknown_203B364 = MemoryAlloc(sizeof(SaveMenuWork),8);
MemoryFill8((u8 *)sUnknown_203B364,0,sizeof(SaveMenuWork));
}
for(index = 0; index < 4; index++){
gUnknown_203B364->unk148[index] = gUnknown_80E6F20;
sUnknown_203B364->unk148[index] = gUnknown_80E6F20;
}
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B364->unk148, TRUE, TRUE);
sub_800641C(sUnknown_203B364->unk148, TRUE, TRUE);
if (currMenu == MENU_DELETE_SAVE) {
// Beware, Deleting your Adventure
SetMenuItems(gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,gDeletingYourAdventureMenuItems,
0,6,0);
SetMenuItems(sUnknown_203B364->unk8,sUnknown_203B364->unk148,0,&gUnknown_80E6F38,gDeletingYourAdventureMenuItems,
FALSE,6,0);
}
else {
// Saving your Adventure
SetMenuItems(gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,gSavingAdventureMenuItems,
0,6,0);
SetMenuItems(sUnknown_203B364->unk8,sUnknown_203B364->unk148,0,&gUnknown_80E6F38,gSavingAdventureMenuItems,
FALSE,6,0);
}
sub_8035CF4(gUnknown_203B364->unk8,0,TRUE);
gUnknown_203B364->unk4 = 0;
gUnknown_203B364->currMenu = currMenu;
sub_8035CF4(sUnknown_203B364->unk8,0,TRUE);
sUnknown_203B364->unk4 = 0;
sUnknown_203B364->currMenu = currMenu;
sub_8038830();
}
@@ -164,31 +155,31 @@ void CleanSaveMenu(void)
{
ResetUnusedInputStruct();
sub_800641C(NULL, TRUE, TRUE);
if (gUnknown_203B364 != NULL) {
MemoryFree(gUnknown_203B364);
gUnknown_203B364 = NULL;
if (sUnknown_203B364 != NULL) {
MemoryFree(sUnknown_203B364);
sUnknown_203B364 = NULL;
}
}
s32 UpdateSaveMenu(void)
{
int saveStatus;
MainMenu *mainMenu;
s32 saveStatus;
MainMenu1Work *mainMenu;
u32 menu;
u32 uStack_18;
u32 action;
menu = MENU_NO_SCREEN_CHANGE;
action = 3;
switch(gUnknown_203B364->unk4)
switch(sUnknown_203B364->unk4)
{
default:
case 2:
menu = MENU_NO_SCREEN_CHANGE;
break;
case 0:
sub_8012FD8(&gUnknown_203B364->unk8[0]);
sub_8012FD8(&sUnknown_203B364->unk8[0]);
uStack_18 = 0;
sub_80140F8();
saveStatus = WriteSavetoPak(&uStack_18,sub_8011C1C());
@@ -196,76 +187,76 @@ s32 UpdateSaveMenu(void)
switch(saveStatus)
{
case SAVE_COMPLETED:
sub_8035CC0(gUnknown_203B364->unk148,0);
if (gUnknown_203B364->currMenu == MENU_DELETE_SAVE) {
SetMenuItems(gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,
gDeletedSaveMenuItems,0,6,0);
sub_8035CC0(sUnknown_203B364->unk148,0);
if (sUnknown_203B364->currMenu == MENU_DELETE_SAVE) {
SetMenuItems(sUnknown_203B364->unk8,sUnknown_203B364->unk148,0,&gUnknown_80E6F38,
gDeletedSaveMenuItems,FALSE,6,0);
}
else {
SetMenuItems(gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,
gAdventureSavedMenuItems,0,6,0);
SetMenuItems(sUnknown_203B364->unk8,sUnknown_203B364->unk148,0,&gUnknown_80E6F38,
gAdventureSavedMenuItems,FALSE,6,0);
}
if (gUnknown_203B364->currMenu == 0x2d) {
gUnknown_203B364->unk4 = 1;
if (sUnknown_203B364->currMenu == 0x2d) {
sUnknown_203B364->unk4 = 1;
return MENU_COMMUNICATION_1;
}
sub_8035CF4(gUnknown_203B364->unk8,0,TRUE);
gUnknown_203B364->unk4 = 1;
sub_8035CF4(sUnknown_203B364->unk8,0,TRUE);
sUnknown_203B364->unk4 = 1;
break;
case SAVE_NOT_WRTTEN:
sub_80141B4(gUnknown_80E7178,0,0,0);
gUnknown_203B364->unk4 = 5;
sUnknown_203B364->unk4 = 5;
break;
default:
sub_8035CC0(gUnknown_203B364->unk148,0);
if (gUnknown_203B364->currMenu == MENU_DELETE_SAVE) {
SetMenuItems(gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,
gAdventureCouldNotBeDeletedMenuItems,0,6,0);
sub_8035CC0(sUnknown_203B364->unk148,0);
if (sUnknown_203B364->currMenu == MENU_DELETE_SAVE) {
SetMenuItems(sUnknown_203B364->unk8,sUnknown_203B364->unk148,0,&gUnknown_80E6F38,
gAdventureCouldNotBeDeletedMenuItems,FALSE,6,0);
}
else {
SetMenuItems(gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,
gAdventureCouldNotBeSavedMenuItems,0,6,0);
SetMenuItems(sUnknown_203B364->unk8,sUnknown_203B364->unk148,0,&gUnknown_80E6F38,
gAdventureCouldNotBeSavedMenuItems,FALSE,6,0);
}
sub_8035CF4(gUnknown_203B364->unk8,0,TRUE);
gUnknown_203B364->unk4 = 1;
sub_8035CF4(sUnknown_203B364->unk8,0,TRUE);
sUnknown_203B364->unk4 = 1;
break;
}
menu = MENU_NO_SCREEN_CHANGE;
break;
case 1:
if (sub_80130A8(&gUnknown_203B364->unk8[0]) == '\0') {
sub_8013114(&gUnknown_203B364->unk8[0],&action);
if (sub_80130A8(&sUnknown_203B364->unk8[0]) == '\0') {
sub_8013114(&sUnknown_203B364->unk8[0],&action);
}
switch(action)
{
case 2:
case 4:
if ((gUnknown_203B364->currMenu == 0x29) || (gUnknown_203B364->currMenu == MENU_DELETE_SAVE)) {
gUnknown_203B364->unk4 = 1;
if ((sUnknown_203B364->currMenu == 0x29) || (sUnknown_203B364->currMenu == MENU_DELETE_SAVE)) {
sUnknown_203B364->unk4 = 1;
menu = MENU_MAIN_SCREEN;
}
else if (gUnknown_203B364->currMenu == 0x2d) {
gUnknown_203B364->unk4 = 1;
else if (sUnknown_203B364->currMenu == 0x2d) {
sUnknown_203B364->unk4 = 1;
menu = MENU_COMMUNICATION_1;
}
else if (gUnknown_203B364->currMenu == 0x2c) {
gUnknown_203B364->unk4 = 1;
else if (sUnknown_203B364->currMenu == 0x2c) {
sUnknown_203B364->unk4 = 1;
menu = 0x1f;
}
else {
mainMenu = GetMainMenu();
if (mainMenu->unk3A != 0) {
gUnknown_203B364->unk4 = 1;
sUnknown_203B364->unk4 = 1;
menu = 0x35;
}
else {
gUnknown_203B364->unk4 = 1;
menu = gUnknown_203B364->currMenu == 0x2b ? MENU_WONDER_MAIL : MENU_FRIEND_RESCUE;
sUnknown_203B364->unk4 = 1;
menu = sUnknown_203B364->currMenu == 0x2b ? MENU_WONDER_MAIL : MENU_FRIEND_RESCUE;
}
}
break;
case 3:
gUnknown_203B364->unk4 = 1;
sUnknown_203B364->unk4 = 1;
break;
}
sub_80388C4();
@@ -288,7 +279,7 @@ void sub_8038830(void)
SpriteOAM *sprite;
r5 = 0;
sprite = &gUnknown_203B364->unk1A8;
sprite = &sUnknown_203B364->unk1A8;
r1 = sprite->attrib1;
r0 = (u16)~SPRITEOAM_MASK_AFFINEMODE1;
@@ -329,14 +320,14 @@ void sub_8038830(void)
r2 |= r1;
sprite->unk6 = r2;
gUnknown_203B364->unk1B0 = r5;
sUnknown_203B364->unk1B0 = r5;
ResetSprites(FALSE);
}
void sub_80388C4(void)
{
if (gUnknown_203B364->unk1B0 & 8)
AddSprite(&gUnknown_203B364->unk1A8, 0x100, NULL, NULL);
if (sUnknown_203B364->unk1B0 & 8)
AddSprite(&sUnknown_203B364->unk1A8, 0x100, NULL, NULL);
gUnknown_203B364->unk1B0++;
sUnknown_203B364->unk1B0++;
}

View File

@@ -8,7 +8,7 @@
#include "constants/communication_error_codes.h"
#include "cpu.h"
#include "items.h"
#include "main_menu.h"
#include "main_menu1.h"
#include "memory.h"
#include "menu_input.h"
#include "other_menus2.h"
@@ -1278,7 +1278,7 @@ void UpdateThankYouMailText(void)
break;
case 0x11:
sub_8006518(gUnknown_203B2C4->unk35C);
SetMenuItems(gUnknown_203B2C4->unk21C,gUnknown_203B2C4->unk35C,3,&gUnknown_80DED60,gUnknown_80DED78,1,0,0);
SetMenuItems(gUnknown_203B2C4->unk21C,gUnknown_203B2C4->unk35C,3,&gUnknown_80DED60,gUnknown_80DED78,TRUE,0,0);
sub_803092C();
sub_8035CF4(gUnknown_203B2C4->unk21C,3,TRUE);
break;
@@ -1294,7 +1294,7 @@ void UpdateThankYouMailText(void)
break;
case 0x14:
sub_8006518(gUnknown_203B2C4->unk35C);
SetMenuItems(gUnknown_203B2C4->unk21C,gUnknown_203B2C4->unk35C,3,&gUnknown_80DED48,gUnknown_80DED78,1,0,0);
SetMenuItems(gUnknown_203B2C4->unk21C,gUnknown_203B2C4->unk35C,3,&gUnknown_80DED48,gUnknown_80DED78,TRUE,0,0);
sub_801CCD8();
sub_8035CF4(gUnknown_203B2C4->unk21C,3,TRUE);
break;

View File

@@ -6,7 +6,7 @@
#include "constants/communication_error_codes.h"
#include "cpu.h"
#include "items.h"
#include "main_menu.h"
#include "main_menu1.h"
#include "memory.h"
#include "menu_input.h"
#include "other_menus2.h"
@@ -22,8 +22,6 @@ static EWRAM_DATA_2 struct TradeItemsMenu *sTradeItemsMenu = {0};
#include "data/trade_items_menu.h"
extern void sub_8035C1C();
extern u32 sub_801D008();
extern s32 sub_8037B28(u32);
@@ -522,7 +520,7 @@ void sub_8036B28(void)
case TRADE_ITEMS_SEND_ITEM_POPUP_MENU:
sub_8006518(sTradeItemsMenu->unk184);
SetMenuItems(sTradeItemsMenu->unk44,sTradeItemsMenu->unk184,3,&sUnknown_80E60EC,
sUnknown_80E6104,1,0,0);
sUnknown_80E6104,TRUE,0,0);
sub_801CCD8();
sub_8035CF4(sTradeItemsMenu->unk44,3,TRUE);
break;

View File

@@ -1,25 +1,25 @@
#include "global.h"
#include "input.h"
#include "main_menu.h"
#include "constants/main_menu.h"
#include "main_menu1.h"
#include "memory.h"
#include "menu.h"
#include "text1.h"
#include "menu_input.h"
#include "sprite.h"
#include "text1.h"
#include "unk_menu_203B360.h"
// Similar to RescuePasswordMenu
struct unkStruct_203B360
// Size: 0x1B4. Similar to SaveMenuWork
typedef struct unkStruct_203B360
{
// size: 0x1b4
u32 currMenu;
/* 0x0 */ u32 currMenu;
u32 unk4; // state
MenuStruct unk8[4];
UnkTextStruct2 unk148[4];
SpriteOAM unk1A8;
u32 unk1B0; // sprite count?
};
} unkStruct_203B360;
static EWRAM_DATA_2 unkStruct_203B360 *sUnknown_203B360 = {0};
EWRAM_DATA_2 struct unkStruct_203B360 *gUnknown_203B360 = {0};
const UnkTextStruct2 gUnknown_80E6E7C = {
0x00, 0x00, 0x00, 0x00,
0x03,
@@ -61,25 +61,25 @@ void sub_80382E4(s32 currMenu)
{
s32 index;
if (gUnknown_203B360 == NULL) {
gUnknown_203B360 = MemoryAlloc(sizeof(struct unkStruct_203B360), 8);
MemoryFill8((u8 *)gUnknown_203B360, 0, sizeof(struct unkStruct_203B360));
if (sUnknown_203B360 == NULL) {
sUnknown_203B360 = MemoryAlloc(sizeof(unkStruct_203B360), 8);
MemoryFill8((u8 *)sUnknown_203B360, 0, sizeof(unkStruct_203B360));
}
for(index = 0; index < 4; index++){
gUnknown_203B360->unk148[index] = gUnknown_80E6E7C;
sUnknown_203B360->unk148[index] = gUnknown_80E6E7C;
}
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B360->unk148, TRUE, TRUE);
sub_800641C(sUnknown_203B360->unk148, TRUE, TRUE);
if (currMenu == 0x25) {
// Caution!
// The storage space is empty!
// Please check again.
SetMenuItems(gUnknown_203B360->unk8,gUnknown_203B360->unk148,0,&gUnknown_80E6E94,gUnknown_80E6EAC,
0,4,0);
SetMenuItems(sUnknown_203B360->unk8,sUnknown_203B360->unk148,0,&gUnknown_80E6E94,gUnknown_80E6EAC,
FALSE,4,0);
}
sub_8035CF4(gUnknown_203B360->unk8,0,TRUE);
gUnknown_203B360->currMenu = currMenu;
gUnknown_203B360->unk4 = 0;
sub_8035CF4(sUnknown_203B360->unk8,0,TRUE);
sUnknown_203B360->currMenu = currMenu;
sUnknown_203B360->unk4 = 0;
sub_8038440();
}
@@ -87,9 +87,9 @@ void sub_80383A8(void)
{
ResetUnusedInputStruct();
sub_800641C(NULL, TRUE, TRUE);
if (gUnknown_203B360 != 0) {
MemoryFree(gUnknown_203B360);
gUnknown_203B360 = 0;
if (sUnknown_203B360 != 0) {
MemoryFree(sUnknown_203B360);
sUnknown_203B360 = 0;
}
}
@@ -101,19 +101,19 @@ u32 sub_80383D4(void)
menuAction = 2;
nextMenu = MENU_NO_SCREEN_CHANGE;
if (gUnknown_203B360->unk4 == 0){
if (sub_80130A8(&gUnknown_203B360->unk8[0]) == '\0') {
sub_8013114(&gUnknown_203B360->unk8[0], &menuAction);
if (sUnknown_203B360->unk4 == 0){
if (sub_80130A8(&sUnknown_203B360->unk8[0]) == '\0') {
sub_8013114(&sUnknown_203B360->unk8[0], &menuAction);
}
switch(menuAction)
{
case 3:
case 1:
gUnknown_203B360->unk4 = 0;
sUnknown_203B360->unk4 = 0;
nextMenu = MENU_MAIN_SCREEN;
break;
case 2:
gUnknown_203B360->unk4 = 0;
sUnknown_203B360->unk4 = 0;
default:
break;
}
@@ -138,7 +138,7 @@ void sub_8038440(void)
SpriteOAM *sprite;
r5 = 0;
sprite = &gUnknown_203B360->unk1A8;
sprite = &sUnknown_203B360->unk1A8;
r1 = sprite->attrib1;
r0 = (u16)~SPRITEOAM_MASK_AFFINEMODE1;
@@ -181,15 +181,15 @@ void sub_8038440(void)
r2 |= r1;
sprite->unk6 = r2;
gUnknown_203B360->unk1B0 = r5;
sUnknown_203B360->unk1B0 = r5;
}
void sub_80384D0(void)
{
if ((gUnknown_203B360->unk1B0 & 8) != 0) {
AddSprite(&gUnknown_203B360->unk1A8, 0x100, NULL, NULL);
if ((sUnknown_203B360->unk1B0 & 8) != 0) {
AddSprite(&sUnknown_203B360->unk1A8, 0x100, NULL, NULL);
}
gUnknown_203B360->unk1B0++;
sUnknown_203B360->unk1B0++;
}

View File

@@ -7,7 +7,7 @@
#include "constants/communication_error_codes.h"
#include "cpu.h"
#include "items.h"
#include "main_menu.h"
#include "main_menu1.h"
#include "memory.h"
#include "menu_input.h"
#include "other_menus2.h"
@@ -542,7 +542,7 @@ void sub_8028348(void)
break;
case 0x34:
sub_8006518(gUnknown_203B2C0->unk35C);
SetMenuItems(gUnknown_203B2C0->unk21C, gUnknown_203B2C0->unk35C, 3, &gUnknown_80DDAE4, gUnknown_80DDAFC, 1, 0, 0);
SetMenuItems(gUnknown_203B2C0->unk21C, gUnknown_203B2C0->unk35C, 3, &gUnknown_80DDAE4, gUnknown_80DDAFC, TRUE, 0, 0);
sub_8023DA4();
sub_8035CF4(gUnknown_203B2C0->unk21C, 3, TRUE);
break;
@@ -697,7 +697,7 @@ void sub_8028348(void)
case 0x20:
case 0x2B:
sub_8006518(gUnknown_203B2C0->unk35C);
SetMenuItems(gUnknown_203B2C0->unk21C, gUnknown_203B2C0->unk35C, 3, &gUnknown_80DDACC, gUnknown_80DDAFC, 1, 0, 0);
SetMenuItems(gUnknown_203B2C0->unk21C, gUnknown_203B2C0->unk35C, 3, &gUnknown_80DDACC, gUnknown_80DDAFC, TRUE, 0, 0);
sub_803092C();
sub_8035CF4(gUnknown_203B2C0->unk21C, 3, TRUE);
break;

View File

@@ -15,6 +15,7 @@
#include "text2.h"
#include "wonder_mail.h"
#include "wonder_mail_3.h"
#include "wonder_mail_main_menu.h"
#define SELECT_WONDER_MAIL_MODE_MAIN_SCREEN 0
#define SEND_WONDER_MAIL_MAIN_SCREEN 1
@@ -186,7 +187,7 @@ bool8 CreateWonderMailMenu(void)
return 1;
}
u8 UpdateWonderMailMenu(void)
u32 UpdateWonderMailMenu(void)
{
switch(gUnknown_203B3E8->state) {
case RECEIVE_WONDER_MAIL_MAIN_SCREEN:

View File

@@ -325,7 +325,8 @@ gUnknown_203B328: /* 203B328 (wonder_mail_6) */
.include "src/friend_rescue.o"
.include "src/credits1.o"
.include "src/credits2.o"
.include "src/main_menu.o"
.include "src/main_menu1.o"
.include "src/main_menu2.o"
.include "src/trade_items_menu.o"
.include "src/other_menus1.o"
.include "src/unk_menu_203B360.o"