mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-26 13:32:55 -04:00
294 lines
6.7 KiB
C
294 lines
6.7 KiB
C
#include "global.h"
|
|
#include "pokemon.h"
|
|
#include "debug_menu.h"
|
|
#include "memory.h"
|
|
#include "text.h"
|
|
#include "input.h"
|
|
#include "menu.h"
|
|
#include "menu_input.h"
|
|
|
|
extern struct unkStruct_203B3F8 *gUnknown_203B3F8;
|
|
|
|
const struct UnkTextStruct2 gUnknown_80E7ED4 = {
|
|
0x00, 0x00, 0x00, 0x00,
|
|
0x03,
|
|
0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00,
|
|
0x00, 0x00,
|
|
NULL
|
|
};
|
|
const struct UnkTextStruct2 gUnknown_80E7EEC = {
|
|
0x00, 0x00, 0x00, 0x00,
|
|
0x03,
|
|
0x13, 0x00, 0x04, 0x00,
|
|
0x09, 0x03,
|
|
0x03, 0x00,
|
|
NULL
|
|
|
|
};
|
|
const struct UnkTextStruct2 gUnknown_80E7F04 = {
|
|
0x00, 0x00, 0x00, 0x00,
|
|
0x03,
|
|
0x13, 0x00, 0x0e, 0x00,
|
|
0x06, 0x04,
|
|
0x04, 0x00,
|
|
NULL
|
|
|
|
};
|
|
ALIGNED(4) const u8 gDebug_NumberText2[] = "Number?";
|
|
ALIGNED(4) const u8 gDebug_LevelText[] = "LEVEL";
|
|
ALIGNED(4) const u8 gDebug_Name[] = "Name";
|
|
static const u8 fill0[] = "pksdir0";
|
|
|
|
extern u32 sub_8013BBC(u32 *);
|
|
extern void sub_803AE58(void);
|
|
extern u32 sub_8016080(void);
|
|
extern void sub_803ACD0(u32);
|
|
extern void sub_80160D8(void);
|
|
extern u32 sub_8023A94(u32);
|
|
extern s16 sub_8023B44(void);
|
|
extern void sub_8023C60(void);
|
|
extern void sub_8008C54(u32);
|
|
extern void sub_80073B8(u32);
|
|
extern void sub_8013C68(u32 *);
|
|
extern void sub_80073E0(u32);
|
|
extern void sub_8023DA4(void);
|
|
extern void sub_803ACE8();
|
|
extern void sub_803AD88();
|
|
extern void sub_803AF38();
|
|
extern void sub_803AF88();
|
|
extern void sub_803AFE8();
|
|
extern void sub_803B034();
|
|
extern void sub_8023868(u32, u32, u32, u32);
|
|
extern void sub_8023B7C(u32);
|
|
extern void sub_8013AA0(u32 *);
|
|
extern void sub_801602C(u32, u8 *);
|
|
extern void sub_803AEB0();
|
|
|
|
u32 sub_803AC24(void)
|
|
{
|
|
gUnknown_203B3F8 = MemoryAlloc(sizeof(struct unkStruct_203B3F8), 8);
|
|
sub_803ACD0(0);
|
|
return 1;
|
|
}
|
|
|
|
u32 sub_803AC48(void)
|
|
{
|
|
switch(gUnknown_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;
|
|
}
|
|
|
|
void sub_803ACB4(void)
|
|
{
|
|
if(gUnknown_203B3F8 != NULL)
|
|
{
|
|
MemoryFree(gUnknown_203B3F8);
|
|
gUnknown_203B3F8 = NULL;
|
|
}
|
|
}
|
|
|
|
void sub_803ACD0(u32 newState)
|
|
{
|
|
gUnknown_203B3F8->state = newState;
|
|
sub_803ACE8();
|
|
sub_803AD88();
|
|
}
|
|
|
|
void sub_803ACE8(void)
|
|
{
|
|
s32 index;
|
|
sub_8006518(gUnknown_203B3F8->unkE0);
|
|
switch(gUnknown_203B3F8->state)
|
|
{
|
|
case 3:
|
|
sub_803AEB0();
|
|
gUnknown_203B3F8->unkE0[2] = gUnknown_80E7EEC;
|
|
sub_8012CAC(&gUnknown_203B3F8->unkE0[2], gUnknown_203B3F8->unk90);
|
|
break;
|
|
case 5:
|
|
gUnknown_203B3F8->unkE0[3] = gUnknown_80E7F04;
|
|
break;
|
|
default:
|
|
for(index = 0; index < 4; index++)
|
|
{
|
|
gUnknown_203B3F8->unkE0[index] = gUnknown_80E7ED4;
|
|
}
|
|
break;
|
|
}
|
|
ResetUnusedInputStruct();
|
|
sub_800641C(gUnknown_203B3F8->unkE0, 1, 1);
|
|
}
|
|
|
|
void sub_803AD88(void)
|
|
{
|
|
switch(gUnknown_203B3F8->state)
|
|
{
|
|
case 1:
|
|
sub_8023868(1, 0, 0, 10);
|
|
break;
|
|
case 2:
|
|
sub_8023B7C(1);
|
|
break;
|
|
case 3:
|
|
sub_8023DA4();
|
|
sub_8012D60(&gUnknown_203B3F8->unk10, gUnknown_203B3F8->unk90, 0, gUnknown_203B3F8->unkD0, gUnknown_203B3F8->menuAction, 2);
|
|
break;
|
|
case 5:
|
|
gUnknown_203B3F8->unk70 = 3;
|
|
gUnknown_203B3F8->unk68 = 1;
|
|
gUnknown_203B3F8->unk6C = 0x64;
|
|
gUnknown_203B3F8->unk64 = gUnknown_203B3F8->pokemon->unkHasNextStage;
|
|
gUnknown_203B3F8->unk74 = 3;
|
|
gUnknown_203B3F8->unk78 = &gUnknown_203B3F8->unkE0[3];
|
|
gUnknown_203B3F8->unk7C = 0x2C;
|
|
gUnknown_203B3F8->unk80 = 0x12;
|
|
sub_8013AA0(&gUnknown_203B3F8->unk60);
|
|
sub_803AE58();
|
|
break;
|
|
case 6:
|
|
sub_801602C(2, gUnknown_203B3F8->pokemon->name);
|
|
case 0:
|
|
case 4:
|
|
case 7:
|
|
default:
|
|
break;
|
|
|
|
}
|
|
}
|
|
|
|
void sub_803AE58(void)
|
|
{
|
|
sub_8008C54(gUnknown_203B3F8->unk74);
|
|
sub_80073B8(gUnknown_203B3F8->unk74);
|
|
xxx_call_draw_string(4, 0, gDebug_NumberText2, gUnknown_203B3F8->unk74, 0);
|
|
sub_8013C68(&gUnknown_203B3F8->unk60);
|
|
sub_80073E0(gUnknown_203B3F8->unk74);
|
|
sub_8023DA4();
|
|
sub_8012EA4(&gUnknown_203B3F8->unk10, 0);
|
|
}
|
|
|
|
void sub_803AEB0(void)
|
|
{
|
|
s32 index;
|
|
s32 loopMax;
|
|
|
|
MemoryFill16(gUnknown_203B3F8->unkD0,0,sizeof(gUnknown_203B3F8->unkD0));
|
|
loopMax = 0;
|
|
|
|
gUnknown_203B3F8->unk90[loopMax].text = gDebug_LevelText;
|
|
gUnknown_203B3F8->unk90[loopMax].menuAction = 4;
|
|
loopMax += 1;
|
|
gUnknown_203B3F8->unk90[loopMax].text = gDebug_Name;
|
|
gUnknown_203B3F8->unk90[loopMax].menuAction = 5;
|
|
loopMax += 1;
|
|
gUnknown_203B3F8->unk90[loopMax].text = NULL;
|
|
gUnknown_203B3F8->unk90[loopMax].menuAction = 1;
|
|
|
|
for(index = 0; index < loopMax; index++)
|
|
{
|
|
if (gUnknown_203B3F8->unkD0[index] == 0)
|
|
{
|
|
gUnknown_203B3F8->menuAction = gUnknown_203B3F8->unk90[index].menuAction;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void sub_803AF38(void)
|
|
{
|
|
switch(sub_8023A94(1))
|
|
{
|
|
case 3:
|
|
gUnknown_203B3F8->unk4 = sub_8023B44();
|
|
gUnknown_203B3F8->pokemon = &gRecruitedPokemonRef->pokemon[gUnknown_203B3F8->unk4];
|
|
sub_803ACD0(3);
|
|
break;
|
|
case 2:
|
|
sub_8023C60();
|
|
sub_803ACD0(7);
|
|
break;
|
|
case 1:
|
|
case 0:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void sub_803AF88(void)
|
|
{
|
|
s32 menuAction;
|
|
|
|
menuAction = 0;
|
|
sub_8023A94(0);
|
|
if (sub_8012FD8(&gUnknown_203B3F8->unk10) == 0) {
|
|
sub_8013114(&gUnknown_203B3F8->unk10, &menuAction);
|
|
}
|
|
switch(menuAction)
|
|
{
|
|
case 4:
|
|
sub_803ACD0(5);
|
|
break;
|
|
case 5:
|
|
sub_803ACD0(6);
|
|
break;
|
|
case 1:
|
|
sub_803ACD0(2);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void sub_803AFE8(void)
|
|
{
|
|
sub_8023A94(0);
|
|
sub_8012FD8(&gUnknown_203B3F8->unk10);
|
|
switch(sub_8013BBC(&gUnknown_203B3F8->unk60))
|
|
{
|
|
default:
|
|
break;
|
|
case 3:
|
|
gUnknown_203B3F8->pokemon->unkHasNextStage = gUnknown_203B3F8->unk60;
|
|
// Fallthrough is needed to match
|
|
case 2:
|
|
sub_803ACD0(2);
|
|
break;
|
|
case 1:
|
|
sub_803AE58();
|
|
break;
|
|
}
|
|
}
|
|
|
|
void sub_803B034(void)
|
|
{
|
|
switch(sub_8016080())
|
|
{
|
|
case 2:
|
|
case 3:
|
|
sub_80160D8();
|
|
sub_803ACD0(2);
|
|
break;
|
|
}
|
|
}
|