Split credits

This commit is contained in:
Kermalis
2023-09-14 21:38:05 -04:00
parent 2b74ea0c1a
commit 805fa045a7
23 changed files with 560 additions and 520 deletions

View File

@@ -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}

View File

@@ -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

View File

@@ -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
@ END code_80130A8

View File

@@ -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

View File

@@ -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

29
include/credits1.h Normal file
View File

@@ -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

15
include/credits2.h Normal file
View File

@@ -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

View File

@@ -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

View File

@@ -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
{

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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;
}
}

141
src/credits1.c Normal file
View File

@@ -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;
}
}

78
src/credits2.c Normal file
View File

@@ -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;
}
}

14
src/data/credits2.h Normal file
View File

@@ -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
};

View File

@@ -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();

View File

@@ -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 *);

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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"