mirror of https://github.com/zeldaret/tmc.git
Decompile more chooseFile.c
This commit is contained in:
parent
bbf4c44bba
commit
eed9d1fe6b
292
asm/chooseFile.s
292
asm/chooseFile.s
|
@ -5,298 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_0805070C
|
||||
sub_0805070C: @ 0x0805070C
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
bl sub_0805F2C8
|
||||
adds r5, r0, #0
|
||||
cmp r5, #0
|
||||
beq _0805077A
|
||||
movs r0, #0
|
||||
strb r0, [r5, #2]
|
||||
movs r0, #5
|
||||
strb r0, [r5, #3]
|
||||
movs r0, #1
|
||||
strb r0, [r5, #1]
|
||||
movs r0, #0x30
|
||||
strh r0, [r5, #4]
|
||||
ldr r0, _08050780 @ =gUnk_02000D00
|
||||
str r0, [r5, #8]
|
||||
movs r6, #0
|
||||
_08050732:
|
||||
movs r0, #0
|
||||
strh r0, [r5, #6]
|
||||
ldr r0, [r5, #8]
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #2
|
||||
bl _DmaZero
|
||||
ldr r0, _08050784 @ =0x000004B4
|
||||
adds r1, r6, #0
|
||||
muls r1, r0, r1
|
||||
ldr r0, _08050788 @ =gUnk_02019F6C
|
||||
adds r7, r1, r0
|
||||
movs r4, #0
|
||||
lsls r0, r6, #9
|
||||
mov r8, r0
|
||||
adds r6, #1
|
||||
_08050752:
|
||||
adds r0, r7, r4
|
||||
ldrb r0, [r0]
|
||||
adds r1, r5, #0
|
||||
bl sub_0805F7DC
|
||||
adds r4, #1
|
||||
cmp r4, #5
|
||||
ble _08050752
|
||||
ldr r0, [r5, #8]
|
||||
ldr r1, _0805078C @ =0x06014000
|
||||
add r1, r8
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #2
|
||||
bl sub_0801D66C
|
||||
cmp r6, #2
|
||||
bls _08050732
|
||||
adds r0, r5, #0
|
||||
bl sub_0805F300
|
||||
_0805077A:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_08050780: .4byte gUnk_02000D00
|
||||
_08050784: .4byte 0x000004B4
|
||||
_08050788: .4byte gUnk_02019F6C
|
||||
_0805078C: .4byte 0x06014000
|
||||
|
||||
thumb_func_start sub_08050790
|
||||
sub_08050790: @ 0x08050790
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
bl sub_0805F2C8
|
||||
adds r6, r0, #0
|
||||
cmp r6, #0
|
||||
beq _080507F0
|
||||
movs r0, #0
|
||||
strb r0, [r6, #2]
|
||||
movs r0, #5
|
||||
strb r0, [r6, #3]
|
||||
movs r0, #1
|
||||
strb r0, [r6, #1]
|
||||
movs r0, #0x80
|
||||
strh r0, [r6, #4]
|
||||
ldr r0, _080507F8 @ =gUnk_02000D00
|
||||
str r0, [r6, #8]
|
||||
movs r1, #0
|
||||
_080507B6:
|
||||
movs r0, #0
|
||||
strh r0, [r6, #6]
|
||||
lsls r4, r1, #4
|
||||
movs r5, #0
|
||||
lsls r7, r1, #0xa
|
||||
adds r1, #1
|
||||
mov r8, r1
|
||||
_080507C4:
|
||||
adds r0, r4, #0
|
||||
adds r1, r6, #0
|
||||
bl sub_0805F7DC
|
||||
adds r4, #1
|
||||
adds r5, #1
|
||||
cmp r5, #0xf
|
||||
bls _080507C4
|
||||
movs r0, #0xc0
|
||||
lsls r0, r0, #0x13
|
||||
adds r1, r7, r0
|
||||
ldr r0, _080507F8 @ =gUnk_02000D00
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #3
|
||||
bl sub_0801D66C
|
||||
mov r1, r8
|
||||
cmp r1, #0xf
|
||||
bls _080507B6
|
||||
adds r0, r6, #0
|
||||
bl sub_0805F300
|
||||
_080507F0:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_080507F8: .4byte gUnk_02000D00
|
||||
|
||||
thumb_func_start sub_080507FC
|
||||
sub_080507FC: @ 0x080507FC
|
||||
ldr r0, _0805080C @ =gUnk_0200AF00
|
||||
movs r1, #0xa0
|
||||
lsls r1, r1, #1
|
||||
strh r1, [r0, #0x1a]
|
||||
movs r1, #0x24
|
||||
strh r1, [r0, #0x20]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0805080C: .4byte gUnk_0200AF00
|
||||
|
||||
thumb_func_start sub_08050810
|
||||
sub_08050810: @ 0x08050810
|
||||
ldr r0, _0805081C @ =gUnk_0200AF00
|
||||
movs r1, #0xd0
|
||||
strh r1, [r0, #0x1a]
|
||||
movs r1, #0x24
|
||||
strh r1, [r0, #0x20]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0805081C: .4byte gUnk_0200AF00
|
||||
|
||||
thumb_func_start sub_08050820
|
||||
sub_08050820: @ 0x08050820
|
||||
push {lr}
|
||||
ldr r1, _0805083C @ =gUnk_080FC8FC
|
||||
ldr r0, _08050840 @ =gMenu
|
||||
ldrb r0, [r0, #5]
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
bl _call_via_r0
|
||||
ldr r0, _08050844 @ =gUnk_02019EE0
|
||||
ldrb r0, [r0, #6]
|
||||
bl sub_08050A64
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0805083C: .4byte gUnk_080FC8FC
|
||||
_08050840: .4byte gMenu
|
||||
_08050844: .4byte gUnk_02019EE0
|
||||
|
||||
thumb_func_start sub_08050848
|
||||
sub_08050848: @ 0x08050848
|
||||
push {lr}
|
||||
movs r0, #7
|
||||
bl sub_080503A8
|
||||
bl sub_0805070C
|
||||
ldr r0, _08050868 @ =gUnk_02019EE0
|
||||
movs r1, #0
|
||||
strb r1, [r0, #7]
|
||||
ldrb r0, [r0, #6]
|
||||
bl sub_08050AFC
|
||||
movs r0, #1
|
||||
bl sub_080A7114
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08050868: .4byte gUnk_02019EE0
|
||||
|
||||
thumb_func_start sub_0805086C
|
||||
sub_0805086C: @ 0x0805086C
|
||||
push {lr}
|
||||
ldr r1, _08050880 @ =gUnk_080FC908
|
||||
ldr r0, _08050884 @ =gMenu
|
||||
ldrb r0, [r0, #6]
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
bl _call_via_r0
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08050880: .4byte gUnk_080FC908
|
||||
_08050884: .4byte gMenu
|
||||
|
||||
thumb_func_start sub_08050888
|
||||
sub_08050888: @ 0x08050888
|
||||
push {r4, lr}
|
||||
ldr r0, _080508C4 @ =gFadeControl
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _080508DC
|
||||
ldr r4, _080508C8 @ =gUnk_02019EE0
|
||||
ldrb r1, [r4, #7]
|
||||
adds r0, r4, #0
|
||||
adds r0, #8
|
||||
adds r0, r1, r0
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
beq _080508D0
|
||||
cmp r0, #1
|
||||
beq _080508D6
|
||||
adds r0, r1, #0
|
||||
bl sub_0805194C
|
||||
ldrb r1, [r4, #7]
|
||||
adds r1, #1
|
||||
movs r0, #0
|
||||
bl sub_08050318
|
||||
ldr r1, _080508CC @ =gMenu
|
||||
movs r0, #0x1e
|
||||
strh r0, [r1, #8]
|
||||
movs r0, #1
|
||||
b _080508DA
|
||||
.align 2, 0
|
||||
_080508C4: .4byte gFadeControl
|
||||
_080508C8: .4byte gUnk_02019EE0
|
||||
_080508CC: .4byte gMenu
|
||||
_080508D0:
|
||||
adds r0, r1, #0
|
||||
bl sub_0805194C
|
||||
_080508D6:
|
||||
ldr r1, _080508E0 @ =gMenu
|
||||
movs r0, #2
|
||||
_080508DA:
|
||||
strb r0, [r1, #6]
|
||||
_080508DC:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_080508E0: .4byte gMenu
|
||||
|
||||
thumb_func_start sub_080508E4
|
||||
sub_080508E4: @ 0x080508E4
|
||||
push {lr}
|
||||
ldr r2, _08050900 @ =gMenu
|
||||
ldrh r0, [r2, #8]
|
||||
cmp r0, #0
|
||||
bne _08050908
|
||||
ldr r0, _08050904 @ =gUnk_03000FF0
|
||||
ldrh r1, [r0, #2]
|
||||
movs r0, #9
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0805090C
|
||||
movs r0, #2
|
||||
strb r0, [r2, #6]
|
||||
b _0805090C
|
||||
.align 2, 0
|
||||
_08050900: .4byte gMenu
|
||||
_08050904: .4byte gUnk_03000FF0
|
||||
_08050908:
|
||||
subs r0, #1
|
||||
strh r0, [r2, #8]
|
||||
_0805090C:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08050910
|
||||
sub_08050910: @ 0x08050910
|
||||
push {lr}
|
||||
bl sub_08050384
|
||||
ldr r1, _08050930 @ =gUnk_02019EE0
|
||||
ldrb r0, [r1, #7]
|
||||
adds r0, #1
|
||||
strb r0, [r1, #7]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #2
|
||||
bls _08050934
|
||||
movs r0, #2
|
||||
bl sub_080A7114
|
||||
b _0805093A
|
||||
.align 2, 0
|
||||
_08050930: .4byte gUnk_02019EE0
|
||||
_08050934:
|
||||
ldr r1, _0805093C @ =gMenu
|
||||
movs r0, #0
|
||||
strb r0, [r1, #6]
|
||||
_0805093A:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0805093C: .4byte gMenu
|
||||
|
||||
thumb_func_start sub_08050940
|
||||
sub_08050940: @ 0x08050940
|
||||
push {r4, r5, r6, lr}
|
||||
|
|
|
@ -45,7 +45,9 @@ typedef struct {
|
|||
/*0x040*/ u32 windcrests;
|
||||
/*0x044*/ u8 filler44[0xC];
|
||||
/*0x050*/ u32 unk50;
|
||||
/*0x054*/ u8 filler54[0x54];
|
||||
/*0x054*/ u8 filler54[0x2C];
|
||||
/*0x080*/ u8 playerName[6];
|
||||
/*0x086*/ u8 filler86[0x22];
|
||||
/*0x0A8*/ Stats stats;
|
||||
/*0x0D0*/ u8 fillerD0[0x3c0];
|
||||
/*0x490*/ u32 unk490;
|
||||
|
@ -134,7 +136,11 @@ typedef struct {
|
|||
extern struct_03000FD0 gFadeControl;
|
||||
|
||||
typedef struct {
|
||||
u8 unk0[0x24];
|
||||
u8 filler0[0x1A];
|
||||
u16 unk1A;
|
||||
u8 filler1C[0x4];
|
||||
u16 unk20;
|
||||
u8 filler22[0x2];
|
||||
u8 ezloNagFuncIndex;
|
||||
u8 filler25[0x30F];
|
||||
} struct_0200AF00;
|
||||
|
|
146
src/chooseFile.c
146
src/chooseFile.c
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue