From 805fa045a797d7daddb7b03c29211b4c36f4035b Mon Sep 17 00:00:00 2001 From: Kermalis <29823718+Kermalis@users.noreply.github.com> Date: Thu, 14 Sep 2023 21:38:05 -0400 Subject: [PATCH] Split credits --- asm/code_80130A8.s | 5 + data/{text/credits.inc => credits1.s} | 96 ++++++++- data/data_80D47B8.s | 8 +- data/{data_80E2068.s => friend_rescue.s} | 108 +--------- include/code_8098BDC.h | 3 + include/credits1.h | 29 +++ include/credits2.h | 15 ++ include/event_flag.h | 1 + include/main_menu.h | 9 + include/menu_input.h | 9 - ld_script.txt | 7 +- src/code.c | 1 - src/code_2.c | 1 - src/code_80972F4.c | 1 - src/credits.c | 246 --------------------- src/credits1.c | 141 ++++++++++++ src/credits2.c | 78 +++++++ src/data/credits2.h | 14 ++ src/ground_main.c | 1 - src/ground_map.c | 2 +- src/main_menu.c | 264 ++++++++++++----------- src/wigglytuff_shop.c | 38 ++-- sym_ewram2.txt | 3 +- 23 files changed, 560 insertions(+), 520 deletions(-) rename data/{text/credits.inc => credits1.s} (92%) rename data/{data_80E2068.s => friend_rescue.s} (93%) create mode 100644 include/credits1.h create mode 100644 include/credits2.h delete mode 100644 src/credits.c create mode 100644 src/credits1.c create mode 100644 src/credits2.c create mode 100644 src/data/credits2.h diff --git a/asm/code_80130A8.s b/asm/code_80130A8.s index 0b058ce9e..b6212f12d 100644 --- a/asm/code_80130A8.s +++ b/asm/code_80130A8.s @@ -324,6 +324,11 @@ _080140BC: _080140D8: .4byte gUnknown_80D47C8 thumb_func_end sub_80140B4 + +@ May be the start of a new file, since menu_input data has been used already + + + thumb_func_start sub_80140DC sub_80140DC: push {lr} diff --git a/data/text/credits.inc b/data/credits1.s similarity index 92% rename from data/text/credits.inc rename to data/credits1.s index 0e6ea9f6f..9133b7063 100644 --- a/data/text/credits.inc +++ b/data/credits1.s @@ -1,3 +1,95 @@ + .section .rodata + +@ credits1.c +.string "pksdir0\0" +.align 2,0 + + + .global gUnknown_80E4A10 +gUnknown_80E4A10: @ 80E4A10 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + + .global gUnknown_80E4A28 +gUnknown_80E4A28: @ 80E4A28 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x02, 0x00, 0x00, 0x00 + .byte 0x02, 0x00, 0x02, 0x00 + .byte 0x1a, 0x00, 0x10, 0x00 + .byte 0x10, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + + .global gUnknown_80E4A40 +gUnknown_80E4A40: @ 80E4A40 + .byte 0x18, 0x18 + .byte 0x38, 0x00 + .byte 0x21, 0xff + .byte 0x22, 0xff + .byte 0x23, 0xff + .byte 0x24, 0xff + .byte 0x25, 0xff + .byte 0x26, 0xff + .byte 0x27, 0xff + .byte 0x28, 0xff + .byte 0x29, 0xff + .byte 0x2a, 0xff + .byte 0x2b, 0xff + .byte 0x2c, 0xff + .byte 0x2d, 0xff + .byte 0x2e, 0xff + .byte 0x2f, 0xff + .byte 0x30, 0xff + .byte 0x31, 0xff + .byte 0x32, 0xff + .byte 0x33, 0xff + .byte 0x34, 0xff + .byte 0x35, 0xff + .byte 0x36, 0xff + .byte 0x37, 0xff + .byte 0x38, 0xff + .byte 0x39, 0xff + .byte 0x3a, 0xff + .byte 0x41, 0xff + .byte 0x42, 0xff + .byte 0x43, 0xff + .byte 0x44, 0xff + .byte 0x45, 0xff + .byte 0x46, 0xff + .byte 0x47, 0xff + .byte 0x48, 0xff + .byte 0x49, 0xff + .byte 0x4a, 0xff + .byte 0x4b, 0xff + .byte 0x4c, 0xff + .byte 0x4d, 0xff + .byte 0x4e, 0xff + .byte 0x4f, 0xff + .byte 0x50, 0xff + .byte 0x51, 0xff + .byte 0x52, 0xff + .byte 0x53, 0xff + .byte 0x54, 0xff + .byte 0x55, 0xff + .byte 0x56, 0xff + .byte 0x57, 0xff + .byte 0x58, 0xff + .byte 0x59, 0xff + .byte 0x5a, 0xff + .byte 0x10, 0xff + .byte 0x11, 0xff + .byte 0x12, 0xff + .byte 0x13, 0xff + .byte 0x14, 0xff + .byte 0x15, 0xff + .byte 0x16, 0xff + .byte 0x17, 0xff + .byte 0x18, 0xff + .byte 0x19, 0xff + @ Actual Start of Credits .global Credits_StaffCredits Credits_StaffCredits: @@ -915,6 +1007,4 @@ gCreditsTable: @ 80E591C .4byte Credits_OriginalDirector .4byte Credits_Producers .4byte Credits_ExecutiveProducer - .4byte Credits_ExecutiveProducer2 - .string "pksdir0\0" - .align 2,0 + .4byte Credits_ExecutiveProducer2 \ No newline at end of file diff --git a/data/data_80D47B8.s b/data/data_80D47B8.s index 9ccab5220..81388dc98 100644 --- a/data/data_80D47B8.s +++ b/data/data_80D47B8.s @@ -1,6 +1,6 @@ .section .rodata -@ START code_80130A8 #1 (probably part of menu_input because the "pksdir0" is in there) +@ START menu_input .align 2, 0 .global UnkData_80D47C4 @@ -54,9 +54,9 @@ gUnknown_80D4830: @ 80D4830 .4byte 10000000 .4byte 100000000 -@ END code_80130A8 #1 +@ END menu_input -@ START code_80130A8 #2 +@ START code_80130A8 .asciz "pksdir0" .global gUnknown_80D485C @@ -155,4 +155,4 @@ gUnknown_80D4908: @ 80D4908 gUnknown_80D4910: @ 80D4910 .string "$\0" -@ END code_80130A8 #2 \ No newline at end of file +@ END code_80130A8 \ No newline at end of file diff --git a/data/data_80E2068.s b/data/friend_rescue.s similarity index 93% rename from data/data_80E2068.s rename to data/friend_rescue.s index cd14806ab..d42b65fb0 100644 --- a/data/data_80E2068.s +++ b/data/friend_rescue.s @@ -1,5 +1,7 @@ .section .rodata +@ friend_rescue.c + .global gUnknown_80E2068 gUnknown_80E2068: @ 80E2068 .4byte GoRescue_80E20AC @@ -1129,108 +1131,4 @@ gUnknown_80E499C: @ 80E499C gUnknown_80E49C4: @ 80E49C4 .string "This password does not appear to be\n" .string "that of a {COLOR_1 LIGHT_BLUE}Thank-You Mail{END_COLOR_TEXT_1}.\0" -.align 2,0 -.string "pksdir0\0" -.align 2,0 - - - .global gUnknown_80E4A10 -gUnknown_80E4A10: @ 80E4A10 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E4A28 -gUnknown_80E4A28: @ 80E4A28 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x02, 0x00 - .byte 0x1a, 0x00, 0x10, 0x00 - .byte 0x10, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E4A40 -gUnknown_80E4A40: @ 80E4A40 - .byte 0x18, 0x18 - .byte 0x38, 0x00 - .byte 0x21, 0xff - .byte 0x22, 0xff - .byte 0x23, 0xff - .byte 0x24, 0xff - .byte 0x25, 0xff - .byte 0x26, 0xff - .byte 0x27, 0xff - .byte 0x28, 0xff - .byte 0x29, 0xff - .byte 0x2a, 0xff - .byte 0x2b, 0xff - .byte 0x2c, 0xff - .byte 0x2d, 0xff - .byte 0x2e, 0xff - .byte 0x2f, 0xff - .byte 0x30, 0xff - .byte 0x31, 0xff - .byte 0x32, 0xff - .byte 0x33, 0xff - .byte 0x34, 0xff - .byte 0x35, 0xff - .byte 0x36, 0xff - .byte 0x37, 0xff - .byte 0x38, 0xff - .byte 0x39, 0xff - .byte 0x3a, 0xff - .byte 0x41, 0xff - .byte 0x42, 0xff - .byte 0x43, 0xff - .byte 0x44, 0xff - .byte 0x45, 0xff - .byte 0x46, 0xff - .byte 0x47, 0xff - .byte 0x48, 0xff - .byte 0x49, 0xff - .byte 0x4a, 0xff - .byte 0x4b, 0xff - .byte 0x4c, 0xff - .byte 0x4d, 0xff - .byte 0x4e, 0xff - .byte 0x4f, 0xff - .byte 0x50, 0xff - .byte 0x51, 0xff - .byte 0x52, 0xff - .byte 0x53, 0xff - .byte 0x54, 0xff - .byte 0x55, 0xff - .byte 0x56, 0xff - .byte 0x57, 0xff - .byte 0x58, 0xff - .byte 0x59, 0xff - .byte 0x5a, 0xff - .byte 0x10, 0xff - .byte 0x11, 0xff - .byte 0x12, 0xff - .byte 0x13, 0xff - .byte 0x14, 0xff - .byte 0x15, 0xff - .byte 0x16, 0xff - .byte 0x17, 0xff - .byte 0x18, 0xff - .byte 0x19, 0xff - - #include "text/credits.inc" - - .global gUnknown_80E5990 -gUnknown_80E5990: @ 80E5990 - .byte 0x06, 0x02 - .byte 0x40, 0x00 - .byte 0x80, 0x00 - .byte 0x10, 0x00 - .byte 0x20, 0x00 - .byte 0x01, 0x00 - .byte 0x02, 0x00 - .byte 0x00, 0x00 - .string "pksdir0\0" - .align 2,0 - +.align 2,0 \ No newline at end of file diff --git a/include/code_8098BDC.h b/include/code_8098BDC.h index 1567849af..49bfdc684 100644 --- a/include/code_8098BDC.h +++ b/include/code_8098BDC.h @@ -5,5 +5,8 @@ extern void sub_80993D8(void); extern void sub_80993E4(void); extern void sub_8099690(u32); +extern void sub_8099A5C(u32, u32, u32); +extern void sub_8099AFC(u32, u32, u32); +extern u8 sub_8099B94(void); #endif // GUARD_CODE_8098BDC_H \ No newline at end of file diff --git a/include/credits1.h b/include/credits1.h new file mode 100644 index 000000000..eecd55d44 --- /dev/null +++ b/include/credits1.h @@ -0,0 +1,29 @@ +#ifndef GUARD_CREDITS1_H +#define GUARD_CREDITS1_H + +#include "text.h" + +// size: 0x6C +typedef struct Credits1Work +{ + UnkTextStruct2 unk0[4]; + s32 unk60; + s32 unk64; + /* 0x68 */ s32 creditsCategoryIndex; +} Credits1Work; + +// size: 0xC +typedef struct CreditsData +{ + /* 0x0 */ s16 type; + /* 0x2 */ s16 x; + /* 0x4 */ s16 y; + /* 0x8 */ u8 *text; +} CreditsData; + +bool8 DrawCredits(s32 creditsCategoryIndex, s32); + +s32 sub_8035574(void); +void sub_803565C(void); + +#endif // GUARD_CREDITS1_H \ No newline at end of file diff --git a/include/credits2.h b/include/credits2.h new file mode 100644 index 000000000..3e57f03b5 --- /dev/null +++ b/include/credits2.h @@ -0,0 +1,15 @@ +#ifndef GUARD_CREDITS2_H +#define GUARD_CREDITS2_H + +// size: 0x8 +typedef struct Credits2Work +{ + /* 0x0 */ u32 state; + u32 unk4; // timer for not holding any inputs +} Credits2Work; + +bool8 sub_8035678(void); +u32 sub_80356A0(void); +void sub_8035758(void); + +#endif // GUARD_CREDITS2_H \ No newline at end of file diff --git a/include/event_flag.h b/include/event_flag.h index 8bda1139d..03e6f0af0 100644 --- a/include/event_flag.h +++ b/include/event_flag.h @@ -33,6 +33,7 @@ void sub_8002758(s32 r0); u8 sub_800276C(void); // event_flag.s +extern void sub_80015C0(u32, u32); extern u32 sub_8001658(u32, u32); #endif // GUARD_EVENT_FLAG_H diff --git a/include/main_menu.h b/include/main_menu.h index 6bb68c7f2..b1b5455db 100644 --- a/include/main_menu.h +++ b/include/main_menu.h @@ -36,6 +36,15 @@ enum MainMenuScreens 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 { diff --git a/include/menu_input.h b/include/menu_input.h index 9a8993999..8dcb2919a 100644 --- a/include/menu_input.h +++ b/include/menu_input.h @@ -4,15 +4,6 @@ #include "menu.h" #include "text.h" -// size: 0x1A8 -struct unkStruct_203B34C -{ - u32 unk0; - MenuStruct unk4[4]; - UnkTextStruct2 unk144[4]; - /* 0x1A4 */ u32 currMenuChoice; -}; - u32 sub_8012A64(MenuInputStructSub *r0, s32 r1); s32 GetKeyPress(MenuInputStruct *r0); s32 sub_8012AE8(void); diff --git a/ld_script.txt b/ld_script.txt index d0ba2d31a..fb47e7477 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -147,7 +147,8 @@ SECTIONS { src/code_8031D70.o(.text); src/adventure_log.o(.text); src/friend_rescue.o(.text); - src/credits.o(.text); + src/credits1.o(.text); + src/credits2.o(.text); src/main_menu.o(.text); src/trade_items_menu.o(.text); src/other_menus1.o(.text); @@ -442,7 +443,9 @@ SECTIONS { src/post_office_guide2.o(.rodata); src/code_8031D70.o(.rodata); src/adventure_log.o(.rodata); - data/data_80E2068.o(.rodata); + data/friend_rescue.o(.rodata); + data/credits1.o(.rodata); + src/credits2.o(.rodata); src/main_menu.o(.rodata); src/trade_items_menu.o(.rodata); src/other_menus1.o(.rodata); diff --git a/src/code.c b/src/code.c index 936db6fe4..35602e813 100644 --- a/src/code.c +++ b/src/code.c @@ -50,7 +50,6 @@ struct unkStruct_80B7394 }; extern struct unkStruct_80B7394 gUnknown_80B7394[]; -extern void sub_80015C0(u32, u32); extern void sub_800199C(u32, s32, u32, s32); extern void sub_80018D8(u32, u32, u32); extern void sub_80972F4(void); diff --git a/src/code_2.c b/src/code_2.c index 755cf17b0..480086be1 100644 --- a/src/code_2.c +++ b/src/code_2.c @@ -39,7 +39,6 @@ extern void LoadMailInfo(void); extern void sub_800DAAC(void); extern void sub_800135C(void); extern void xxx_script_related_8001334(u32); -extern void sub_80015C0(u32, u32); extern void LoadTitleScreen(void); extern void sub_80095CC(u32, u32); extern s32 GetFirstIndexofMailType(u8); diff --git a/src/code_80972F4.c b/src/code_80972F4.c index d9d83e2d1..0fe55f8f0 100644 --- a/src/code_80972F4.c +++ b/src/code_80972F4.c @@ -23,7 +23,6 @@ void RestoreWonderMail(struct unkStruct_8094924 *a, WonderMail *b); extern s32 sub_8096EB0(WonderMail *); extern void SaveDungeonLocation(struct unkStruct_8094924*, DungeonLocation*); extern void RestoreDungeonLocation(struct unkStruct_8094924*, DungeonLocation*); -extern void sub_80015C0(u8, u8); extern u32 sub_8001784(u32, u32, u16); extern void GeneratePelipperJobs(void); extern void sub_80018D8(u8, u8, u32); diff --git a/src/credits.c b/src/credits.c deleted file mode 100644 index 91cb9a8a6..000000000 --- a/src/credits.c +++ /dev/null @@ -1,246 +0,0 @@ -#include "global.h" -#include "code_8098BDC.h" -#include "event_flag.h" -#include "input.h" -#include "memory.h" -#include "text1.h" -#include "text2.h" - -// size: 0x6C -struct unkCreditsStruct_203B340 -{ - UnkTextStruct2 unk0[4]; - s32 unk60; // Unsure if s32/u32/ptr - s32 unk64; - /* 0x68 */ s32 creditsCategoryIndex; -}; - -// size: 0x8 -struct unkCreditsStruct_203B344 -{ - /* 0x0 */ u32 state; // state variable - u32 unk4; // timer? -}; - -// size: 0xC -struct CreditsData -{ - /* 0x0 */ s16 type; - s16 x; - s16 y; - /* 0x8 */ u8 *text; -}; - -EWRAM_DATA_2 struct unkCreditsStruct_203B340 *gUnknown_203B340 = {0}; -EWRAM_DATA_2 struct unkCreditsStruct_203B344 *gUnknown_203B344 = {0}; - -extern UnkTextStruct2 gUnknown_80E4A10; -extern UnkTextStruct2 gUnknown_80E4A28; -extern const u32 gUnknown_80E4A40[]; -extern struct CreditsData* gCreditsTable[27]; -extern u16 gUnknown_80E5990[]; - -extern void sub_80015C0(u32, u32); -extern void sub_8099A5C(u32, u32, u32); -extern void sub_8099AFC(u32, u32, u32); -extern u8 sub_8099B94(); - -// Unsure if param_2 is a s32/u32/ptr -s32 DrawCredits(s32 creditsCategoryIndex, s32 param_2) -{ - s32 i; - s32 x; - s32 y; - struct CreditsData *cred; - u8 *srcText; - u8 *destText1; - u8 *destText2; - u8 curChar; - u8 buffer[128]; - - gUnknown_203B340 = MemoryAlloc(sizeof(struct unkCreditsStruct_203B340), 8); - gUnknown_203B340->unk60 = 0; - gUnknown_203B340->unk64 = param_2; - gUnknown_203B340->creditsCategoryIndex = creditsCategoryIndex; - - for (i = 0; i < 4; i++) - gUnknown_203B340->unk0[i] = gUnknown_80E4A10; - gUnknown_203B340->unk0[0] = gUnknown_80E4A28; - - ResetUnusedInputStruct(); - sub_800641C(&gUnknown_203B340->unk0[0], TRUE, TRUE); - sub_8099690(2); - sub_80073B8(0); - - cred = creditsCategoryIndex[gCreditsTable]; // WTF - y = 0; - while (cred->text != NULL) { - srcText = cred->text; - if (cred->y >= 0) - y = cred->y; - else - y -= cred->y; - x = cred->x; - - switch (cred->type) { - case 1: - destText1 = buffer; - while ((curChar = *srcText) != 0) { - *destText1 = curChar; - srcText++; - destText1++; - } - *destText1 = 0; - srcText = buffer; - break; - case 2: - destText2 = buffer; - while ((curChar = *srcText) != 0) { - *destText2 = curChar; - srcText++; - destText2++; - } - *destText2 = 0; - srcText = buffer; - break; - } - - xxx_call_draw_string(x, y, srcText, 0, 0); - cred++; - } - - sub_80073E0(0); - SelectCharmap(0); - do { - const u32 *a = gUnknown_80E4A40; - int b = 9; - unsigned long long c = b; - sub_8099AFC(c, 0, a[0]); - } while(0); - return 1; -} - -s32 sub_8035574(void) -{ - #ifdef NONMATCHING - u32 const *p; - #else - register u32 const *p asm("r2"); - #endif - - switch (gUnknown_203B340->unk60) { - case 0: - if (sub_8099B94() == 0) { - gUnknown_203B340->unk60 = 1; - p = gUnknown_80E4A40; - sub_8099A5C(9, 30, p[0]); // Probably same/similar macro from the above func - Kermalis - } - break; - case 1: - if (sub_8099B94() == 0) - gUnknown_203B340->unk60 = 2; - break; - case 2: - if (gUnknown_203B340->unk64 < 1) { - gUnknown_203B340->unk60 = 3; - p = gUnknown_80E4A40; - sub_8099AFC(9, 30, p[0]); - } - gUnknown_203B340->unk64--; - break; - case 3: - if (sub_8099B94() == 0) { - ResetUnusedInputStruct(); - sub_800641C(NULL, TRUE, TRUE); - gUnknown_203B340->unk60 = 4; - } - break; - case 4: - sub_8099690(0); - p = gUnknown_80E4A40; - sub_8099A5C(1, 0, p[0]); - return 3; - } - return 0; -} - -// Frees gUnknown_203B340 -void sub_803565C(void) -{ - if (gUnknown_203B340 != NULL) { - MemoryFree(gUnknown_203B340); - gUnknown_203B340 = NULL; - } -} - -u32 sub_8035678(void) -{ - gUnknown_203B344 = MemoryAlloc(sizeof(struct unkCreditsStruct_203B344), 8); - gUnknown_203B344->state = 0; - gUnknown_203B344->unk4 = 0; - sub_80015C0(0, 0x39); - return 1; -} - -u32 sub_80356A0(void) -{ - u16 uVar1; - u16 held_input; - - held_input = gRealInputs.held; - uVar1 = gUnknown_80E5990[gUnknown_203B344->unk4]; - - switch (gUnknown_203B344->state) { - case 0: - gUnknown_203B344->state = 3; - break; - case 1: - if (uVar1 == 0) - gUnknown_203B344->state = 4; - else { - if (held_input == uVar1) - gUnknown_203B344->state = 2; - else { - // NOTE: couldn't match with OR'd condition so split up to match - if ((uVar1 & held_input) != held_input) - gUnknown_203B344->state = 3; - else - { - if (gUnknown_203B344->unk4 == 0) - gUnknown_203B344->state = 3; - } - } - } - break; - case 2: - if (held_input == 0) { - gUnknown_203B344->state = 1; - gUnknown_203B344->unk4++; - } - else { - if ((uVar1 & held_input) != held_input) - gUnknown_203B344->state = 3; - } - break; - case 3: - return 2; - case 4: - return 3; // sub_809C478 clears the flash data when this is returned - } - - if (sub_8001658(0, 0x39) != 0) { - gUnknown_203B344->state = 3; - return 2; - } - else - return 0; -} - -// Frees gUnknown_203B344 -void sub_8035758(void) -{ - if (gUnknown_203B344 != NULL) { - MemoryFree(gUnknown_203B344); - gUnknown_203B344 = NULL; - } -} diff --git a/src/credits1.c b/src/credits1.c new file mode 100644 index 000000000..321bfb284 --- /dev/null +++ b/src/credits1.c @@ -0,0 +1,141 @@ +#include "global.h" +#include "code_8098BDC.h" +#include "credits1.h" +#include "event_flag.h" +#include "input.h" +#include "memory.h" +#include "text1.h" +#include "text2.h" + +static EWRAM_DATA_2 Credits1Work *sCredits1Work = {0}; + +extern const UnkTextStruct2 gUnknown_80E4A10; +extern const UnkTextStruct2 gUnknown_80E4A28; +extern const u32 gUnknown_80E4A40[]; +extern const CreditsData* gCreditsTable[27]; + +bool8 DrawCredits(s32 creditsCategoryIndex, s32 param_2) +{ + s32 i; + s32 x; + s32 y; + const CreditsData *cred; + u8 *srcText; + u8 *destText1; + u8 *destText2; + u8 curChar; + u8 buffer[128]; + + sCredits1Work = MemoryAlloc(sizeof(Credits1Work), 8); + sCredits1Work->unk60 = 0; + sCredits1Work->unk64 = param_2; + sCredits1Work->creditsCategoryIndex = creditsCategoryIndex; + + for (i = 0; i < 4; i++) + sCredits1Work->unk0[i] = gUnknown_80E4A10; + sCredits1Work->unk0[0] = gUnknown_80E4A28; + + ResetUnusedInputStruct(); + sub_800641C(&sCredits1Work->unk0[0], TRUE, TRUE); + sub_8099690(2); + sub_80073B8(0); + + cred = creditsCategoryIndex[gCreditsTable]; // WTF + y = 0; + while (cred->text != NULL) { + srcText = cred->text; + if (cred->y >= 0) + y = cred->y; + else + y -= cred->y; + x = cred->x; + + switch (cred->type) { + case 1: + destText1 = buffer; + while ((curChar = *srcText) != 0) { + *destText1 = curChar; + srcText++; + destText1++; + } + *destText1 = 0; + srcText = buffer; + break; + case 2: + destText2 = buffer; + while ((curChar = *srcText) != 0) { + *destText2 = curChar; + srcText++; + destText2++; + } + *destText2 = 0; + srcText = buffer; + break; + } + + xxx_call_draw_string(x, y, srcText, 0, 0); + cred++; + } + + sub_80073E0(0); + SelectCharmap(0); + do { + const u32 *a = gUnknown_80E4A40; + int b = 9; + unsigned long long c = b; + sub_8099AFC(c, 0, a[0]); + } while(0); + return TRUE; +} + +s32 sub_8035574(void) +{ + #ifdef NONMATCHING + u32 const *p; + #else + register u32 const *p asm("r2"); + #endif + + switch (sCredits1Work->unk60) { + case 0: + if (sub_8099B94() == 0) { + sCredits1Work->unk60 = 1; + p = gUnknown_80E4A40; + sub_8099A5C(9, 30, p[0]); // Probably same/similar macro from the above func - Kermalis + } + break; + case 1: + if (sub_8099B94() == 0) + sCredits1Work->unk60 = 2; + break; + case 2: + if (sCredits1Work->unk64 < 1) { + sCredits1Work->unk60 = 3; + p = gUnknown_80E4A40; + sub_8099AFC(9, 30, p[0]); + } + sCredits1Work->unk64--; + break; + case 3: + if (sub_8099B94() == 0) { + ResetUnusedInputStruct(); + sub_800641C(NULL, TRUE, TRUE); + sCredits1Work->unk60 = 4; + } + break; + case 4: + sub_8099690(0); + p = gUnknown_80E4A40; + sub_8099A5C(1, 0, p[0]); + return 3; + } + return 0; +} + +void sub_803565C(void) +{ + if (sCredits1Work != NULL) { + MemoryFree(sCredits1Work); + sCredits1Work = NULL; + } +} \ No newline at end of file diff --git a/src/credits2.c b/src/credits2.c new file mode 100644 index 000000000..903402818 --- /dev/null +++ b/src/credits2.c @@ -0,0 +1,78 @@ +#include "global.h" +#include "credits2.h" +#include "event_flag.h" +#include "input.h" +#include "memory.h" + +static EWRAM_DATA_2 Credits2Work *sCredits2Work = {0}; + +#include "data/credits2.h" + +bool8 sub_8035678(void) +{ + sCredits2Work = MemoryAlloc(sizeof(Credits2Work), 8); + sCredits2Work->state = 0; + sCredits2Work->unk4 = 0; + sub_80015C0(0, 57); + return TRUE; +} + +u32 sub_80356A0(void) +{ + u16 uVar1; + u16 held_input; + + held_input = gRealInputs.held; + uVar1 = sUnknown_80E5990[sCredits2Work->unk4]; + + switch (sCredits2Work->state) { + case 0: + sCredits2Work->state = 3; + break; + case 1: + if (uVar1 == 0) + sCredits2Work->state = 4; + else { + if (held_input == uVar1) + sCredits2Work->state = 2; + else { + if ((uVar1 & held_input) != held_input) + sCredits2Work->state = 3; + else { + if (sCredits2Work->unk4 == 0) + sCredits2Work->state = 3; + } + } + } + break; + case 2: + if (held_input == 0) { + sCredits2Work->state = 1; + sCredits2Work->unk4++; + } + else { + if ((uVar1 & held_input) != held_input) + sCredits2Work->state = 3; + } + break; + case 3: + return 2; + case 4: + return 3; // sub_809C478 clears the flash data when this is returned + } + + if (sub_8001658(0, 57) != 0) { + sCredits2Work->state = 3; + return 2; + } + + return 0; +} + +void sub_8035758(void) +{ + if (sCredits2Work != NULL) { + MemoryFree(sCredits2Work); + sCredits2Work = NULL; + } +} \ No newline at end of file diff --git a/src/data/credits2.h b/src/data/credits2.h new file mode 100644 index 000000000..1c92393b0 --- /dev/null +++ b/src/data/credits2.h @@ -0,0 +1,14 @@ +ALIGNED(4) static const u8 sFill[] = _("pksdir0"); + +// Inputs related. These are probably buttons OR'd together +static const u16 sUnknown_80E5990[8] = +{ + 518, + 64, + 128, + 16, + 32, + 1, + 2, + 0 +}; \ No newline at end of file diff --git a/src/ground_main.c b/src/ground_main.c index 9476cffe5..b71087c51 100644 --- a/src/ground_main.c +++ b/src/ground_main.c @@ -53,7 +53,6 @@ extern void GroundEffect_Action(); extern s32 sub_8001784(u8, u8, u8); extern void sub_809CB8C(); -extern void sub_80015C0(u8, u8); extern void sub_80018D8(u8, u8, u32); extern void sub_800199C(u8, u8, u8, s32); extern void sub_8098CC8(); diff --git a/src/ground_map.c b/src/ground_map.c index 54fb3c78a..2c029a7c8 100644 --- a/src/ground_map.c +++ b/src/ground_map.c @@ -1,5 +1,6 @@ #include "global.h" #include "debug.h" +#include "event_flag.h" #include "ground_map.h" #include "ground_map_2.h" #include "ground_script.h" @@ -14,7 +15,6 @@ extern const DebugLocation gUnknown_8117538[]; extern void sub_809D600(void *, const u8 *, u32, u32, u32); extern void sub_809D648(void *); extern void sub_80A2D00(unkStruct_3001B70 *); -extern void sub_80015C0(u32, u32); extern void sub_809D754(GroundScript_ExecutePP_1 *, const DebugLocation *); extern void sub_80A2D68(unkStruct_3001B70 *); extern void sub_80A2D88(unkStruct_3001B70 *); diff --git a/src/main_menu.c b/src/main_menu.c index cbf4382ea..deee9c0d8 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -31,10 +31,12 @@ // NOTE: 0x2E // Deletes the Save -EWRAM_DATA_2 MainMenu *gMainMenu = {0}; -EWRAM_DATA_2 struct unkStruct_203B34C *gUnknown_203B34C = {0}; -EWRAM_DATA_2 u32 gUnknown_203B350 = {0}; -EWRAM_DATA_2 u32 gUnknown_203B354 = {0}; // unused everywhere else except here.. +// split 1/2 +static EWRAM_DATA_2 MainMenu *sMainMenu = {0}; +// split 2/2 +static EWRAM_DATA_2 unkStruct_203B34C *sUnknown_203B34C = {0}; +static EWRAM_DATA_2 u32 sUnknown_203B350 = {0}; +static EWRAM_DATA_2 u32 sUnknown_203B354 = {0}; extern void SetWindowBGColor(void); extern void CreateWonderMailMenu(void); @@ -73,8 +75,9 @@ static const u8 sUnknown_80E5FB0[]; static const u8 sUnknown_80E5F98[]; static const u8 sUnknown_80E5FE4[]; static const u8 sUnknown_80E6008[]; -static const u8 sUnknown_80E6048[]; -static const u8 sUnknown_80E6070[]; + +// split 1/2 +static const u8 sFillllllllllllllllllllllllllllll[] = "pksdir0"; const UnkTextStruct2 gUnknown_80E59A8 = { 0x00, 0x00, 0x00, 0x00, @@ -85,7 +88,8 @@ const UnkTextStruct2 gUnknown_80E59A8 = { NULL }; -static const char main_menu_fill[] = "pksdir0"; +// split 2/2 +static const u8 sFill[] = "pksdir0"; const UnkTextStruct2 gUnknown_80E59C8 = { 0x00, 0x00, 0x00, 0x00, @@ -351,6 +355,9 @@ const MenuItem gUnknown_80E5FCC[] = { 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[]; + const MenuItem gUnknown_80E6030[] = { {sUnknown_80E6070, 0xFFDE}, {sUnknown_80E6048, 0xFFDE}, @@ -361,36 +368,42 @@ 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"); + +// SPLIT 1/2 + + + + void InitMainMenu(void) { - if (gMainMenu == NULL) { - gMainMenu = MemoryAlloc(sizeof(MainMenu),8); - MemoryFill8((u8 *)gMainMenu, 0, sizeof(MainMenu)); + if (sMainMenu == NULL) { + sMainMenu = MemoryAlloc(sizeof(MainMenu),8); + MemoryFill8((u8 *)sMainMenu, 0, sizeof(MainMenu)); } - gMainMenu->currMenu = MENU_NO_SCREEN_CHANGE; - gMainMenu->nextMenu = MENU_MAIN_SCREEN; - gMainMenu->lastMenu = MENU_MAIN_SCREEN; - gMainMenu->unk38 = -1; - gMainMenu->unk3C = -1; - gMainMenu->sub.unk2E = 0; - gMainMenu->sub.unk2C = 1; - gMainMenu->sub.unk2D = 0; + 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(); - gMainMenu->unk3A = 0; + sMainMenu->unk3A = 0; } void DeleteMainMenu(void) { - if(gMainMenu){ - MemoryFree(gMainMenu); - gMainMenu = NULL; + if(sMainMenu){ + MemoryFree(sMainMenu); + sMainMenu = NULL; } } void SetUpMenu(void) { - if (gMainMenu->currMenu != gMainMenu->nextMenu) { - switch(gMainMenu->nextMenu) { + if (sMainMenu->currMenu != sMainMenu->nextMenu) { + switch(sMainMenu->nextMenu) { case MENU_MAIN_SCREEN: SetWindowBGColor(); sub_8099690(0); @@ -400,14 +413,14 @@ void SetUpMenu(void) case MENU_CONTINUE: case MENU_DELETE_SAVE_PROMPT: case MENU_DELETE_SAVE_CONFIRM: - CreateLoadScreen(gMainMenu->nextMenu); + CreateLoadScreen(sMainMenu->nextMenu); break; case MENU_TRADE_ITEMS: CreateTradeItemsMenu(); break; case MENU_COMMUNICATION_1: case MENU_COMMUNICATION_2: - sub_8036FDC(sub_8035DB4(gMainMenu->nextMenu)); + sub_8036FDC(sub_8035DB4(sMainMenu->nextMenu)); break; case MENU_FRIEND_RESCUE: CreateFriendRescueMenu(); @@ -423,7 +436,7 @@ void SetUpMenu(void) break; case MENU_DISPLAY_RESCUE_PASSWORD: case MENU_RESCUE_PASSWORD_ENTRY: - CreateRescuePasswordMenu(gMainMenu->nextMenu); + CreateRescuePasswordMenu(sMainMenu->nextMenu); break; case MENU_ADVENTURE_LOG: CreateAdventureLogMenu(); @@ -434,13 +447,13 @@ void SetUpMenu(void) case 0x2c: case 0x2d: case MENU_DELETE_SAVE: - CreateSaveMenu(gMainMenu->nextMenu); + CreateSaveMenu(sMainMenu->nextMenu); break; case MENU_DEBUG: CreateDebugMenu(); break; } - gMainMenu->currMenu = gMainMenu->nextMenu; + sMainMenu->currMenu = sMainMenu->nextMenu; } } @@ -450,7 +463,7 @@ s32 UpdateMenu(void) s32 nextMenu; nextMenu = MENU_NO_SCREEN_CHANGE; - switch(gMainMenu->nextMenu) { + switch(sMainMenu->nextMenu) { case MENU_MAIN_SCREEN: nextMenu = UpdateMainMenu(); break; @@ -522,15 +535,15 @@ s32 UpdateMenu(void) break; } if (nextMenu != MENU_NO_SCREEN_CHANGE) { - gMainMenu->nextMenu = nextMenu; + sMainMenu->nextMenu = nextMenu; } return nextMenu; } void CleanUpMenu(void) { - if (gMainMenu->lastMenu != gMainMenu->nextMenu) { - switch(gMainMenu->lastMenu) { + if (sMainMenu->lastMenu != sMainMenu->nextMenu) { + switch(sMainMenu->lastMenu) { case MENU_MAIN_SCREEN: CleanMainMenu(); break; @@ -585,27 +598,25 @@ void CleanUpMenu(void) DeleteDebugMenu(); break; } - gMainMenu->lastMenu = gMainMenu->nextMenu; + sMainMenu->lastMenu = sMainMenu->nextMenu; } } -// Unused -void sub_8035C00(MainMenuSub *param) +UNUSED static void sub_8035C00(MainMenuSub *param) { - gMainMenu->sub = *param; + sMainMenu->sub = *param; } -// Unused -MainMenuSub *sub_8035C10(void) +UNUSED static MainMenuSub *sub_8035C10(void) { - return &gMainMenu->sub; + return &sMainMenu->sub; } void sub_8035C1C(void) { - gMainMenu->sub.unk2E = 0; - gMainMenu->sub.unk2C = 1; - gMainMenu->sub.unk2D = 0; + sMainMenu->sub.unk2E = 0; + sMainMenu->sub.unk2C = 1; + sMainMenu->sub.unk2D = 0; } void SetMenuItems(MenuStruct *param_1, UnkTextStruct2 *unkData, s32 index, @@ -631,8 +642,8 @@ void sub_8035CC0(UnkTextStruct2 *dataArray, u32 index) sub_800641C(dataArray, TRUE, TRUE); } -void sub_8035CF4(MenuStruct * Menu, u32 index, bool8 r2) - { +void sub_8035CF4(MenuStruct *Menu, u32 index, bool8 r2) +{ Menu[index].unk4C = r2; Menu[index].unk4D = 1; Menu[index].menuAction = -1; @@ -641,46 +652,41 @@ void sub_8035CF4(MenuStruct * Menu, u32 index, bool8 r2) void sub_8035D1C(void) { - gMainMenu->unk38 = -1; + sMainMenu->unk38 = -1; } -// Unused -void sub_8035D30(s32 r0) +UNUSED static void sub_8035D30(s32 r0) { - gMainMenu->unk38 = r0; + sMainMenu->unk38 = r0; } s16 sub_8035D3C(void) { - return gMainMenu->unk38; + return sMainMenu->unk38; } MainMenu *GetMainMenu(void) { - return gMainMenu; + return sMainMenu; } -// Unused -void sub_8035D58(void) +UNUSED static void sub_8035D58(void) { - gMainMenu->unk3C = -1; + sMainMenu->unk3C = -1; } -// Unused -void sub_8035D68(s32 r0) +UNUSED static void sub_8035D68(s32 r0) { - gMainMenu->unk3C = r0; + sMainMenu->unk3C = r0; } s32 sub_8035D74(void) { - return gMainMenu->unk3C; + return sMainMenu->unk3C; } -// Unused -void sub_8035D80(unkStruct_8035D94 *item) +UNUSED static void sub_8035D80(unkStruct_8035D94 *item) { - #ifndef NONMATCHING register u32 numItem asm("r1"); #else @@ -690,7 +696,7 @@ void sub_8035D80(unkStruct_8035D94 *item) u32 itemIndex; MainMenu *preload; - preload = gMainMenu; + preload = sMainMenu; numItem = item->numItems; itemIndex = item->itemIndex.itemIndex_u32; preload->unk30.itemIndex.itemIndex_u32 = itemIndex; @@ -699,13 +705,13 @@ void sub_8035D80(unkStruct_8035D94 *item) unkStruct_8035D94 *sub_8035D94(void) { - return &gMainMenu->unk30; + return &sMainMenu->unk30; } void sub_8035DA0(void) { - gMainMenu->unk30.itemIndex.itemIndex_u8 = ITEM_NOTHING; - gMainMenu->unk30.numItems = 0; + sMainMenu->unk30.itemIndex.itemIndex_u8 = ITEM_NOTHING; + sMainMenu->unk30.numItems = 0; } s32 sub_8035DB4(u32 currMenu) @@ -741,60 +747,72 @@ s32 sub_8035DB4(u32 currMenu) return returnVar; } + + + + + +// SPLIT 2/2 + + + + + + void DrawMainMenu(void) { s32 index; - if(gUnknown_203B34C == NULL) + if(sUnknown_203B34C == NULL) { - gUnknown_203B34C = MemoryAlloc(sizeof(struct unkStruct_203B34C), 8); - MemoryFill8((u8 *)gUnknown_203B34C, 0, sizeof(struct unkStruct_203B34C)); + sUnknown_203B34C = MemoryAlloc(sizeof(unkStruct_203B34C), 8); + MemoryFill8((u8 *)sUnknown_203B34C, 0, sizeof(unkStruct_203B34C)); } for(index = 0; index < 4; index++) { - gUnknown_203B34C->unk144[index] = gUnknown_80E59C8; + sUnknown_203B34C->unk144[index] = gUnknown_80E59C8; } ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B34C->unk144, TRUE, TRUE); + sub_800641C(sUnknown_203B34C->unk144, TRUE, TRUE); SetMainMenuItems(); - gUnknown_203B34C->currMenuChoice = -1; + sUnknown_203B34C->currMenuChoice = -1; if(SetMainMenuText()) { - sub_8035CF4(gUnknown_203B34C->unk4,2,FALSE); + sub_8035CF4(sUnknown_203B34C->unk4,2,FALSE); } - sub_8035CF4(gUnknown_203B34C->unk4,0,TRUE); - gUnknown_203B34C->unk0 = 1; + sub_8035CF4(sUnknown_203B34C->unk4,0,TRUE); + sUnknown_203B34C->unk0 = 1; } void CleanMainMenu(void) { ResetUnusedInputStruct(); sub_800641C(NULL, TRUE, TRUE); - if(gUnknown_203B34C != NULL) + if(sUnknown_203B34C != NULL) { - MemoryFree(gUnknown_203B34C); - gUnknown_203B34C = NULL; + MemoryFree(sUnknown_203B34C); + sUnknown_203B34C = NULL; } } u32 UpdateMainMenu(void) { u32 nextMenu = MENU_NO_SCREEN_CHANGE; - switch(gUnknown_203B34C->unk0) + switch(sUnknown_203B34C->unk0) { case 1: - sub_8012FD8(&gUnknown_203B34C->unk4[2]); - if(!sub_8012FD8(gUnknown_203B34C->unk4)) - sub_8013114(gUnknown_203B34C->unk4, &nextMenu); + sub_8012FD8(&sUnknown_203B34C->unk4[2]); + if(!sub_8012FD8(sUnknown_203B34C->unk4)) + sub_8013114(sUnknown_203B34C->unk4, &nextMenu); if(SetMainMenuText()) { - sub_8035CF4(gUnknown_203B34C->unk4, 0, TRUE); - sub_8035CF4(gUnknown_203B34C->unk4, 2, FALSE); + sub_8035CF4(sUnknown_203B34C->unk4, 0, TRUE); + sub_8035CF4(sUnknown_203B34C->unk4, 2, FALSE); } switch(nextMenu) { @@ -802,15 +820,15 @@ u32 UpdateMainMenu(void) nextMenu = MENU_NO_SCREEN_CHANGE; break; case 0xffdd: - gUnknown_203B34C->unk0 = 1; + sUnknown_203B34C->unk0 = 1; nextMenu = MENU_NO_SCREEN_CHANGE; ResetUnusedInputStruct(); - sub_8035CF4(gUnknown_203B34C->unk4, 0, TRUE); - sub_8035CF4(gUnknown_203B34C->unk4, 2, FALSE); + sub_8035CF4(sUnknown_203B34C->unk4, 0, TRUE); + sub_8035CF4(sUnknown_203B34C->unk4, 2, FALSE); break; case MENU_TRADE_ITEMS: sub_8035DA0(); - gUnknown_203B350 = nextMenu; + sUnknown_203B350 = nextMenu; break; case MENU_NEW_GAME: case MENU_AWAITING_RESCUE: @@ -823,27 +841,27 @@ u32 UpdateMainMenu(void) case MENU_DUAL_SLOT: case MENU_WIRELESS_COMMS: case MENU_DEBUG: - gUnknown_203B350 = nextMenu; + sUnknown_203B350 = nextMenu; break; } break; case 0xC: - if(!sub_8012FD8(&gUnknown_203B34C->unk4[1])) - sub_8013114(&gUnknown_203B34C->unk4[1], &nextMenu); + if(!sub_8012FD8(&sUnknown_203B34C->unk4[1])) + sub_8013114(&sUnknown_203B34C->unk4[1], &nextMenu); switch(nextMenu) { case 0xffdd: sub_803623C(); - gUnknown_203B34C->unk0 = 1; + sUnknown_203B34C->unk0 = 1; nextMenu = MENU_NO_SCREEN_CHANGE; break; case MENU_SEND_ITEMS: - gUnknown_203B354 = nextMenu; + sUnknown_203B354 = nextMenu; nextMenu = MENU_TRADE_ITEMS; break; case MENU_RECEIVE_ITEMS: - gUnknown_203B354 = nextMenu; + sUnknown_203B354 = nextMenu; nextMenu = MENU_COMMUNICATION_2; break; case MENU_NO_SCREEN_CHANGE: @@ -866,62 +884,62 @@ bool8 SetMainMenuText(void) const MenuItem *preload; // Have to load the pointer before the index - preload = gUnknown_203B34C->unk4[0].menuItems; - menuChoice = preload[gUnknown_203B34C->unk4[0].input.menuIndex].menuAction; // chosen menu action? - if (gUnknown_203B34C->currMenuChoice == menuChoice) { + 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; } - gUnknown_203B34C->currMenuChoice = menuChoice; - sub_8035CC0(gUnknown_203B34C->unk144,2); - sub_8035CC0(gUnknown_203B34C->unk144,3); + 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(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E6030,0,0,0); + SetMenuItems(sUnknown_203B34C->unk4,sUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E6030,0,0,0); break; case MENU_WONDER_MAIL: // Using passwords, you can receive Wonder Mail - SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5F80,0,0,0); + SetMenuItems(sUnknown_203B34C->unk4,sUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5F80,0,0,0); break; case MENU_AWAITING_RESCUE: // You are awaiting resuce by a friend // You can give up waiting for rescue - SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5F1C,0,0,0); + SetMenuItems(sUnknown_203B34C->unk4,sUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5F1C,0,0,0); break; case MENU_NEW_GAME: // Start an entirely new adventure - SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5CCC,0,0,0); + SetMenuItems(sUnknown_203B34C->unk4,sUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5CCC,0,0,0); break; case MENU_CONTINUE: // Resume your adventure from where you last saved - SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5DA0,0,0,0); + SetMenuItems(sUnknown_203B34C->unk4,sUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5DA0,0,0,0); break; case MENU_DELETE_SAVE_PROMPT: // This will delete your saved game data. // Beware! This will delete it forever - SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5DF0,0,0,0); + SetMenuItems(sUnknown_203B34C->unk4,sUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5DF0,0,0,0); break; case MENU_ADVENTURE_LOG: // Check your career as an adventurer - SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5D0C,0,0,0); + SetMenuItems(sUnknown_203B34C->unk4,sUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5D0C,0,0,0); break; case MENU_FRIEND_RESCUE: // Using a Game Link cable or passwords, friends may rescue each other - SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5E5C,0,0,0); + SetMenuItems(sUnknown_203B34C->unk4,sUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5E5C,0,0,0); break; case MENU_TRADE_ITEMS: // Using a Game Link cable you can trade stored items with a friend - SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5EBC,0,0,0); + SetMenuItems(sUnknown_203B34C->unk4,sUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5EBC,0,0,0); break; case MENU_DUAL_SLOT: // Using Dual Slot function, you can receive teams from your friends - SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5FCC,0,0,0); + SetMenuItems(sUnknown_203B34C->unk4,sUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5FCC,0,0,0); break; case MENU_DEBUG: // This is the Debug Mode. // It won't be in the release version - SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5D48,0,0,0); + SetMenuItems(sUnknown_203B34C->unk4,sUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5D48,0,0,0); break; default: break; @@ -931,13 +949,13 @@ bool8 SetMainMenuText(void) void sub_803623C(void) { - sub_8035CC0(gUnknown_203B34C->unk144,1); + sub_8035CC0(sUnknown_203B34C->unk144,1); SetMainMenuItems(); - gUnknown_203B34C->currMenuChoice = -1; + sUnknown_203B34C->currMenuChoice = -1; if (SetMainMenuText()) { - sub_8035CF4(gUnknown_203B34C->unk4,2,FALSE); + sub_8035CF4(sUnknown_203B34C->unk4,2,FALSE); } - sub_8035CF4(gUnknown_203B34C->unk4,0,TRUE); + sub_8035CF4(sUnknown_203B34C->unk4,0,TRUE); } void SetMainMenuItems(void) @@ -952,7 +970,7 @@ void SetMainMenuItems(void) // Friend Rescue // Trade Items // Wonder Mail - SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5C18,1,gUnknown_203B350,1); + SetMenuItems(sUnknown_203B34C->unk4,sUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5C18,1,sUnknown_203B350,1); } else { // Revive Team @@ -960,7 +978,7 @@ void SetMainMenuItems(void) // Adventure Log // Friend Rescue // Trade Items - SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5BC4,gUnknown_80E5BDC,1,gUnknown_203B350,1); + SetMenuItems(sUnknown_203B34C->unk4,sUnknown_203B34C->unk144,0,&gUnknown_80E5BC4,gUnknown_80E5BDC,1,sUnknown_203B350,1); } } else { @@ -971,7 +989,7 @@ void SetMainMenuItems(void) // Friend Rescue // Trade Items // Wonder Mail - SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5AFC,1,gUnknown_203B350,1); + SetMenuItems(sUnknown_203B34C->unk4,sUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5AFC,1,sUnknown_203B350,1); } else { // Continue @@ -979,7 +997,7 @@ void SetMainMenuItems(void) // Adventure Log // Friend Rescue // Trade Items - SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A60,gUnknown_80E5A90,1,gUnknown_203B350,1); + SetMenuItems(sUnknown_203B34C->unk4,sUnknown_203B34C->unk144,0,&gUnknown_80E5A60,gUnknown_80E5A90,1,sUnknown_203B350,1); } } } @@ -991,7 +1009,7 @@ void SetMainMenuItems(void) // Friend Rescue // Trade Items // Wonder Mail - SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5B8C,1,gUnknown_203B350,1); + SetMenuItems(sUnknown_203B34C->unk4,sUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5B8C,1,sUnknown_203B350,1); } else { // Awaiting Rescue @@ -999,7 +1017,7 @@ void SetMainMenuItems(void) // Adventure Log // Friend Rescue // Trade Items - SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5B34,gUnknown_80E5B4C,1,gUnknown_203B350,1); + SetMenuItems(sUnknown_203B34C->unk4,sUnknown_203B34C->unk144,0,&gUnknown_80E5B34,gUnknown_80E5B4C,1,sUnknown_203B350,1); } } } @@ -1007,15 +1025,15 @@ void SetMainMenuItems(void) { // New Game // Adventure Log - SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E59E0,gUnknown_80E59F8,1,gUnknown_203B350,1); + SetMenuItems(sUnknown_203B34C->unk4,sUnknown_203B34C->unk144,0,&gUnknown_80E59E0,gUnknown_80E59F8,1,sUnknown_203B350,1); } } bool8 sub_80363E0(void) { - if(gUnknown_203B34C == NULL) + if(sUnknown_203B34C == NULL) return FALSE; - if(gUnknown_203B34C->unk0 == 0xC) + if(sUnknown_203B34C->unk0 == 0xC) return FALSE; return TRUE; } diff --git a/src/wigglytuff_shop.c b/src/wigglytuff_shop.c index b42d8c8a2..2dfce8d2a 100644 --- a/src/wigglytuff_shop.c +++ b/src/wigglytuff_shop.c @@ -1,28 +1,25 @@ #include "global.h" -#include "constants/friend_area.h" -#include "pokemon.h" -#include "constants/input.h" -#include "file_system.h" -#include "menu.h" -#include "pokemon.h" -#include "pokemon_3.h" -#include "input.h" -#include "text1.h" -#include "text2.h" -#include "memory.h" -#include "menu_input.h" -#include "friend_area.h" -#include "wigglytuff_shop.h" -#include "felicity_bank.h" +#include "code_800D090.h" +#include "code_80118A4.h" #include "code_80130A8.h" #include "code_801EE10_mid.h" #include "code_8021774.h" -#include "code_80118A4.h" -#include "code_800D090.h" +#include "code_8098BDC.h" +#include "common_strings.h" +#include "constants/friend_area.h" +#include "constants/input.h" #include "event_flag.h" #include "exclusive_pokemon.h" -#include "common_strings.h" -#include "code_80118A4.h" +#include "felicity_bank.h" +#include "file_system.h" +#include "friend_area.h" +#include "menu_input.h" +#include "memory.h" +#include "pokemon.h" +#include "pokemon_3.h" +#include "text1.h" +#include "text2.h" +#include "wigglytuff_shop.h" // TODO: This file was originally 3 files. Split properly // 4 files if you count code_8023144.s @@ -100,9 +97,6 @@ extern void sub_8022380(void); bool8 sub_8023144(s32 param_1, s32 index, UnkTextStruct2_sub *sub, u32 param_4); void sub_8023354(u8 param_1); extern void CreateWigglytuffConfirmFriendAreaMenu(void); -extern u8 sub_8099B94(void); -extern void sub_8099AFC(u32, u32, u32); -extern void sub_8099A5C(u32, u32, u32); extern u32 sub_8023278(u32); void sub_80233A0(void); diff --git a/sym_ewram2.txt b/sym_ewram2.txt index 75c10e911..27c91c416 100644 --- a/sym_ewram2.txt +++ b/sym_ewram2.txt @@ -323,7 +323,8 @@ gUnknown_203B328: /* 203B328 (wonder_mail_6) */ .include "src/code_8031D70.o" .include "src/adventure_log.o" .include "src/friend_rescue.o" -.include "src/credits.o" +.include "src/credits1.o" +.include "src/credits2.o" .include "src/main_menu.o" .include "src/trade_items_menu.o" .include "src/other_menus1.o"