pmd-red/src/debug_menu.c

151 lines
3.9 KiB
C

#include "global.h"
#include "debug_menu.h"
#include "input.h"
#include "main_menu.h"
#include "menu.h"
#include "memory.h"
extern struct DebugMenu *gUnknown_203B3EC;
const struct UnkTextStruct2 gUnknown_80E7D40 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
NULL
};
const struct UnkTextStruct2 gUnknown_80E7D58 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x02, 0x00, 0x02, 0x00,
0x09, 0x0b,
0x0b, 0x00,
NULL
};
const struct MenuItem gDebugMenuItems[8] =
{
{"Dungeons", MENU_DEBUG_MENU_DUNGEONS},
{"Field", MENU_DEBUG_MENU_FIELD},
{"Field Map", MENU_DEBUG_MENU_FIELD_MAP},
{"Field Script", MENU_DEBUG_MENU_FIELD_SCRIPT},
{"Debug Menu", MENU_DEBUG_MENU_DEBUG_MENU},
{"Storage", MENU_DEBUG_MENU_STORAGE},
{"h-open", MENU_DEBUG_MENU_H_OPEN},
{NULL, 10},
};
ALIGNED(4) static const char debug_menu_fill0[] = "pksdir0";
ALIGNED(4) static const char debug_menu_fill1[] = "pksdir0";
ALIGNED(4) static const char debug_menu_fill2[] = "pksdir0";
ALIGNED(4) static const char debug_menu_fill3[] = "pksdir0";
ALIGNED(4) static const char debug_menu_fill4[] = "pksdir0";
ALIGNED(4) static const char debug_menu_fill5[] = "pksdir0";
ALIGNED(4) static const char debug_menu_fill6[] = "pksdir0";
extern u8 sub_8012FD8(struct DebugMenu *);
extern void sub_8013114(struct DebugMenu *, s32 *);
extern void sub_80976F8(u8);
extern void sub_803A3BC(void);
extern void sub_803A3A0(void);
extern void SetMenuItems(void *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32);
extern void sub_8035CF4(struct DebugMenu *, u32, u32);
extern void sub_8035CC0(struct UnkTextStruct2 *, u32);
void CreateDebugMenu(void)
{
int iVar2;
if (gUnknown_203B3EC == NULL) {
gUnknown_203B3EC = MemoryAlloc(sizeof(struct DebugMenu), 8);
MemoryFill8((u8 *)gUnknown_203B3EC, 0, sizeof(struct DebugMenu));
}
for(iVar2 = 0; iVar2 < 4; iVar2++){
gUnknown_203B3EC->unk140[iVar2] = gUnknown_80E7D40;
}
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B3EC->unk140, 1, 1);
SetDebugMenuItems();
}
void DeleteDebugMenu(void)
{
ResetUnusedInputStruct();
sub_800641C(NULL, 1, 1);
if(gUnknown_203B3EC != NULL)
{
MemoryFree(gUnknown_203B3EC);
gUnknown_203B3EC = NULL;
}
}
u32 UpdateDebugMenu(void)
{
u32 nextMenu;
s32 counter;
s32 debugMenuAction;
nextMenu = MENU_NO_SCREEN_CHANGE;
debugMenuAction = 11;
if (sub_8012FD8(gUnknown_203B3EC) == 0) {
sub_8013114(gUnknown_203B3EC, &debugMenuAction);
}
switch(debugMenuAction) {
case MENU_DEBUG_MENU_DUNGEONS:
nextMenu = MENU_DEBUG_DUNGEON;
break;
case MENU_DEBUG_MENU_FIELD:
nextMenu = MENU_DEBUG_FIELD;
break;
case MENU_DEBUG_MENU_FIELD_MAP:
nextMenu = MENU_DEBUG_FIELD_MAP;
break;
case MENU_DEBUG_MENU_FIELD_SCRIPT:
nextMenu = MENU_DEBUG_FIELD_SCRIPT;
break;
case MENU_DEBUG_MENU_DEBUG_MENU:
nextMenu = MENU_DEBUG_DEBUG_MENU;
break;
case MENU_DEBUG_MENU_UNKNOWN_1: // No option that correponds to this one
nextMenu = MENU_DEBUG_UNKNOWN_1;
break;
case MENU_DEBUG_MENU_STORAGE:
sub_803A3BC();
nextMenu = MENU_MAIN_SCREEN;
break;
case MENU_DEBUG_MENU_H_OPEN:
for(counter = 0; counter < 0x20; counter++){
sub_80976F8(counter);
}
nextMenu = MENU_MAIN_SCREEN;
break;
case 10:
sub_803A3A0();
nextMenu = MENU_MAIN_SCREEN;
break;
case 11:
nextMenu = MENU_NO_SCREEN_CHANGE;
}
return nextMenu;
}
void SetDebugMenuItems(void)
{
SetMenuItems(gUnknown_203B3EC, gUnknown_203B3EC->unk140, 0, &gUnknown_80E7D58, gDebugMenuItems, 1, 0xd, 0);
sub_8035CF4(gUnknown_203B3EC,0,1);
}
void sub_803A3A0(void)
{
sub_8035CC0(gUnknown_203B3EC->unk140, 0);
}