Decompile more chooseFile.c

This commit is contained in:
Marcus Huderle
2020-08-17 18:55:37 -05:00
parent bbf4c44bba
commit eed9d1fe6b
3 changed files with 151 additions and 297 deletions
+143 -3
View File
@@ -1,15 +1,30 @@
#include "global.h"
#include "functions.h"
#include "main.h"
#include "readKeyInput.h"
#include "screen.h"
typedef struct {
u8 filler0[0x30];
u8 filler0[0x5];
u8 state;
u8 subState;
u16 timer;
u8 fillerA[0x26];
} ChooseFileState;
// TODO: This occupies the same memory region as gMenu
extern ChooseFileState gChooseFileState;
typedef struct {
u8 filler0[0x1];
u8 unk1;
u8 unk2;
u8 unk3;
u16 unk4;
u16 unk6;
u8* unk8;
} struct_02036540;
typedef struct {
u8 filler0[0x10];
u16 unk10;
@@ -30,24 +45,31 @@ extern struct_02034CB0 gUnk_02034CB0;
extern struct_02034CB0 gUnk_02021F30;
extern SaveFile gSaveFiles[];
extern u32 gUsedPalettes;
extern u8 gUnk_02000D00[];
static void sub_08050624(u32);
static void sub_0805066C(void);
static void sub_080507FC(void);
extern void sub_0801D66C(const void* src, void* dest, u32 size);
extern void sub_08056FEC(u32, struct_020227E8*);
extern void sub_0805F46C(u32, struct_080FC844*);
extern void sub_0801C4A0(u32, u32);
extern void sub_0801D66C(const void* src, void* dest, u32 size);
extern void sub_080507FC(void);
extern void sub_08080668(void);
extern void sub_0805194C(u32);
extern void LoadPalettes(const u8*, int, int);
extern struct_02036540* sub_0805F2C8(void);
extern void sub_0805F7DC(u32, struct_02036540*);
extern void sub_0805F300(struct_02036540*);
extern void sub_08050A64(u32);
extern void sub_08050AFC(u32);
extern const struct_080FC844 gUnk_080FC844;
extern const u16 gUnk_080FC85C[][3];
extern void (*const gUnk_080FC8A4[])(void);
extern void (*const gUnk_080FC8B0[])(void);
extern void (*const gUnk_080FC8FC[])(void);
extern void (*const gUnk_080FC908[])(void);
extern const u8 gUnk_080FC8D0[];
extern const u16 gUnk_080FC8DE[];
extern const u8 gGlobalGfxAndPalettes[];
@@ -234,3 +256,121 @@ static void sub_0805066C(void) {
LoadPalettes(&paletteOffset[0x11DA0], 14, 1);
}
}
void sub_0805070C(void) {
u32 i;
int j;
struct_02036540* var0;
u8* playerName;
var0 = sub_0805F2C8();
if (var0) {
var0->unk2 = 0;
var0->unk3 = 5;
var0->unk1 = 1;
var0->unk4 = 0x30;
var0->unk8 = gUnk_02000D00;
for (i = 0; i < 3; i++) {
var0->unk6 = 0;
_DmaZero(var0->unk8, 0x200);
playerName = gSaveFiles[i].playerName;
for (j = 0; j < 6; j++) {
sub_0805F7DC(playerName[j], var0);
}
sub_0801D66C(var0->unk8, (void*)(OBJ_VRAM0 + 0x4000 + i * 0x200), 0x200);
}
sub_0805F300(var0);
}
}
void sub_08050790(void) {
u32 i, j;
struct_02036540* var0;
u32 var1;
var0 = sub_0805F2C8();
if (var0) {
var0->unk2 = 0;
var0->unk3 = 5;
var0->unk1 = 1;
var0->unk4 = 0x80;
var0->unk8 = gUnk_02000D00;
for (i = 0; i < 16; i++) {
var0->unk6 = 0;
var1 = i * 16;
for (j = 0; j < 16; j++) {
sub_0805F7DC(var1, var0);
var1++;
}
sub_0801D66C(gUnk_02000D00, (void*)(BG_VRAM + i * 0x400), 0x400);
}
sub_0805F300(var0);
}
}
static void sub_080507FC(void) {
gUnk_0200AF00.unk1A = 0x140;
gUnk_0200AF00.unk20 = 0x24;
}
void sub_08050810(void) {
gUnk_0200AF00.unk1A = 0xD0;
gUnk_0200AF00.unk20 = 0x24;
}
void sub_08050820(void) {
gUnk_080FC8FC[gChooseFileState.state]();
sub_08050A64(gUnk_02019EE0.unk6);
}
void sub_08050848(void) {
sub_080503A8(0x7);
sub_0805070C();
gUnk_02019EE0.unk7 = 0;
sub_08050AFC(gUnk_02019EE0.unk6);
sub_080A7114(1);
}
void sub_0805086C(void) {
gUnk_080FC908[gChooseFileState.subState]();
}
void sub_08050888(void) {
if (!gFadeControl.active) {
switch (gUnk_02019EE0.unk8[gUnk_02019EE0.unk7]) {
case 0:
sub_0805194C(gUnk_02019EE0.unk7);
gChooseFileState.subState = 2;
break;
case 1:
gChooseFileState.subState = 2;
break;
default:
sub_0805194C(gUnk_02019EE0.unk7);
sub_08050318(0, gUnk_02019EE0.unk7 + 1);
gChooseFileState.timer = 30;
gChooseFileState.subState = 1;
break;
}
}
}
void sub_080508E4(void) {
if (gChooseFileState.timer == 0) {
if (gUnk_03000FF0.newKeys & (A_BUTTON | START_BUTTON)) {
gChooseFileState.subState = 2;
}
} else {
gChooseFileState.timer--;
}
}
void sub_08050910(void) {
sub_08050384();
if (++gUnk_02019EE0.unk7 > 2) {
sub_080A7114(2);
} else {
gChooseFileState.subState = 0;
}
}