mirror of
https://github.com/pret/pmd-red.git
synced 2026-07-10 06:11:39 -05:00
255 lines
6.0 KiB
C
255 lines
6.0 KiB
C
#include "global.h"
|
|
#include "globaldata.h"
|
|
#include "code_80130A8.h"
|
|
#include "code_801602C.h"
|
|
#include "code_8023868.h"
|
|
#include "debug_menu4.h"
|
|
#include "input.h"
|
|
#include "memory.h"
|
|
#include "menu_input.h"
|
|
#include "text1.h"
|
|
#include "text2.h"
|
|
|
|
static EWRAM_DATA_2 unkStruct_203B3F8 *sUnknown_203B3F8 = {0};
|
|
|
|
#include "data/debug_menu4.h"
|
|
|
|
enum menuActions {
|
|
CANCEL_ACTION = 1,
|
|
LEVEL_ACTION = 4,
|
|
NAME_ACTION
|
|
};
|
|
|
|
static void sub_803ACD0(u32 newState);
|
|
static void sub_803ACE8(void);
|
|
static void sub_803AD88(void);
|
|
static void sub_803AE58(void);
|
|
static void sub_803AEB0(void);
|
|
static void sub_803AF38(void);
|
|
static void sub_803AF88(void);
|
|
static void sub_803AFE8(void);
|
|
static void sub_803B034(void);
|
|
|
|
UNUSED static bool8 sub_803AC24(void)
|
|
{
|
|
sUnknown_203B3F8 = MemoryAlloc(sizeof(unkStruct_203B3F8), 8);
|
|
sub_803ACD0(0);
|
|
return TRUE;
|
|
}
|
|
|
|
UNUSED static u32 sub_803AC48(void)
|
|
{
|
|
switch (sUnknown_203B3F8->state) {
|
|
case 0:
|
|
sub_803ACD0(1);
|
|
break;
|
|
case 1:
|
|
case 2:
|
|
sub_803AF38();
|
|
break;
|
|
case 3:
|
|
sub_803AF88();
|
|
break;
|
|
case 5:
|
|
sub_803AFE8();
|
|
break;
|
|
case 6:
|
|
sub_803B034();
|
|
break;
|
|
case 4:
|
|
case 7:
|
|
default:
|
|
return 3;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
UNUSED static void sub_803ACB4(void)
|
|
{
|
|
if (sUnknown_203B3F8 != NULL) {
|
|
MemoryFree(sUnknown_203B3F8);
|
|
sUnknown_203B3F8 = NULL;
|
|
}
|
|
}
|
|
|
|
static void sub_803ACD0(u32 newState)
|
|
{
|
|
sUnknown_203B3F8->state = newState;
|
|
sub_803ACE8();
|
|
sub_803AD88();
|
|
}
|
|
|
|
static void sub_803ACE8(void)
|
|
{
|
|
s32 i;
|
|
|
|
RestoreUnkTextStruct_8006518(sUnknown_203B3F8->unkE0);
|
|
|
|
switch (sUnknown_203B3F8->state) {
|
|
case 3:
|
|
sub_803AEB0();
|
|
sUnknown_203B3F8->unkE0[2] = sUnknown_80E7EEC;
|
|
sub_8012CAC(&sUnknown_203B3F8->unkE0[2], sUnknown_203B3F8->unk90);
|
|
break;
|
|
case 5:
|
|
sUnknown_203B3F8->unkE0[3] = sUnknown_80E7F04;
|
|
break;
|
|
default:
|
|
for (i = 0; i < 4; i++)
|
|
sUnknown_203B3F8->unkE0[i] = sUnknown_80E7ED4;
|
|
break;
|
|
}
|
|
|
|
ResetUnusedInputStruct();
|
|
xxx_call_save_unk_text_struct_800641C(sUnknown_203B3F8->unkE0, TRUE, TRUE);
|
|
}
|
|
|
|
static void sub_803AD88(void)
|
|
{
|
|
switch (sUnknown_203B3F8->state) {
|
|
case 1:
|
|
sub_8023868(1, 0, 0, 10);
|
|
break;
|
|
case 2:
|
|
sub_8023B7C(1);
|
|
break;
|
|
case 3:
|
|
sub_8023DA4();
|
|
sub_8012D60(&sUnknown_203B3F8->unk10, sUnknown_203B3F8->unk90, 0, sUnknown_203B3F8->unkD0, sUnknown_203B3F8->menuAction, 2);
|
|
break;
|
|
case 5:
|
|
sUnknown_203B3F8->unk60.unk10 = 3;
|
|
sUnknown_203B3F8->unk60.unk8 = 1;
|
|
sUnknown_203B3F8->unk60.unkC = 100;
|
|
sUnknown_203B3F8->unk60.unk4 = sUnknown_203B3F8->pokemon->level;
|
|
sUnknown_203B3F8->unk60.unk14 = 3;
|
|
sUnknown_203B3F8->unk60.unk18 = &sUnknown_203B3F8->unkE0[3];
|
|
sUnknown_203B3F8->unk60.unk1C = 44;
|
|
sUnknown_203B3F8->unk60.unk20 = 18;
|
|
sub_8013AA0(&sUnknown_203B3F8->unk60);
|
|
sub_803AE58();
|
|
break;
|
|
case 6:
|
|
CreateConfirmNameMenu(2, sUnknown_203B3F8->pokemon->name);
|
|
case 0:
|
|
case 4:
|
|
case 7:
|
|
default:
|
|
break;
|
|
|
|
}
|
|
}
|
|
|
|
static void sub_803AE58(void)
|
|
{
|
|
CallPrepareTextbox_8008C54(sUnknown_203B3F8->unk60.unk14);
|
|
sub_80073B8(sUnknown_203B3F8->unk60.unk14);
|
|
PrintStringOnWindow(4, 0, sNumberPrompt, sUnknown_203B3F8->unk60.unk14, 0);
|
|
sub_8013C68(&sUnknown_203B3F8->unk60);
|
|
sub_80073E0(sUnknown_203B3F8->unk60.unk14);
|
|
sub_8023DA4();
|
|
sub_8012EA4(&sUnknown_203B3F8->unk10, 0);
|
|
}
|
|
|
|
static void sub_803AEB0(void)
|
|
{
|
|
s32 i;
|
|
s32 loopMax;
|
|
|
|
MemoryFill16(sUnknown_203B3F8->unkD0, 0, sizeof(sUnknown_203B3F8->unkD0));
|
|
|
|
loopMax = 0;
|
|
sUnknown_203B3F8->unk90[loopMax].text = sLevel;
|
|
sUnknown_203B3F8->unk90[loopMax].menuAction = LEVEL_ACTION;
|
|
|
|
loopMax++;
|
|
sUnknown_203B3F8->unk90[loopMax].text = sName;
|
|
sUnknown_203B3F8->unk90[loopMax].menuAction = NAME_ACTION;
|
|
|
|
loopMax++;
|
|
sUnknown_203B3F8->unk90[loopMax].text = NULL;
|
|
sUnknown_203B3F8->unk90[loopMax].menuAction = CANCEL_ACTION;
|
|
|
|
for (i = 0; i < loopMax; i++) {
|
|
if (sUnknown_203B3F8->unkD0[i] == 0) {
|
|
sUnknown_203B3F8->menuAction = sUnknown_203B3F8->unk90[i].menuAction;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
static void sub_803AF38(void)
|
|
{
|
|
switch (sub_8023A94(TRUE)) {
|
|
case 3:
|
|
sUnknown_203B3F8->unk4 = sub_8023B44();
|
|
sUnknown_203B3F8->pokemon = &gRecruitedPokemonRef->pokemon[sUnknown_203B3F8->unk4];
|
|
sub_803ACD0(3);
|
|
break;
|
|
case 2:
|
|
sub_8023C60();
|
|
sub_803ACD0(7);
|
|
break;
|
|
case 1:
|
|
case 0:
|
|
break;
|
|
}
|
|
}
|
|
|
|
static void sub_803AF88(void)
|
|
{
|
|
s32 menuAction;
|
|
|
|
menuAction = 0;
|
|
|
|
sub_8023A94(FALSE);
|
|
|
|
if (sub_8012FD8(&sUnknown_203B3F8->unk10) == 0)
|
|
sub_8013114(&sUnknown_203B3F8->unk10, &menuAction);
|
|
|
|
switch (menuAction) {
|
|
case LEVEL_ACTION:
|
|
sub_803ACD0(5);
|
|
break;
|
|
case NAME_ACTION:
|
|
sub_803ACD0(6);
|
|
break;
|
|
case CANCEL_ACTION:
|
|
sub_803ACD0(2);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
static void sub_803AFE8(void)
|
|
{
|
|
sub_8023A94(FALSE);
|
|
sub_8012FD8(&sUnknown_203B3F8->unk10);
|
|
|
|
switch (sub_8013BBC(&sUnknown_203B3F8->unk60)) {
|
|
default:
|
|
break;
|
|
case 3:
|
|
sUnknown_203B3F8->pokemon->level = sUnknown_203B3F8->unk60.unk0;
|
|
// Fallthrough is needed to match
|
|
case 2:
|
|
sub_803ACD0(2);
|
|
break;
|
|
case 1:
|
|
sub_803AE58();
|
|
break;
|
|
}
|
|
}
|
|
|
|
static void sub_803B034(void)
|
|
{
|
|
switch (sub_8016080()) {
|
|
case 2:
|
|
case 3:
|
|
CleanConfirmNameMenu();
|
|
sub_803ACD0(2);
|
|
break;
|
|
}
|
|
}
|