From d1edeb64f1aa8c77b3ea9c45d2eb154b1c066d22 Mon Sep 17 00:00:00 2001 From: Antonio Castelli Date: Sun, 6 Jun 2021 15:32:51 -0700 Subject: [PATCH] Started moving symbols in unknown_080500 to header file. --- .../unknown_080500/MenuBootInit.s | 32 +- .../unknown_080500/MenuTitleScreenInit.s | 32 +- .../unknown_080500/MenuTitleScreenLoop.s | 5 +- .../unknown_080500/func_80094D28.s | 5 +- .../unknown_080500/func_80095728.s | 5 +- include/unknown_080500.h | 550 ++++++++++++++++++ src/unknown_080500.c | 89 +-- undefined_syms.txt | 65 --- 8 files changed, 599 insertions(+), 184 deletions(-) create mode 100644 include/unknown_080500.h diff --git a/asm/non_matchings/unknown_080500/MenuBootInit.s b/asm/non_matchings/unknown_080500/MenuBootInit.s index a73a3427..29032a69 100644 --- a/asm/non_matchings/unknown_080500/MenuBootInit.s +++ b/asm/non_matchings/unknown_080500/MenuBootInit.s @@ -15,31 +15,37 @@ glabel menu_boot_init /* 089128 80088528 85CEF7C4 */ lh $t6, %lo(D_800DF7C4)($t6) /* 08912C 8008852C 3C048012 */ lui $a0, %hi(D_80126550) # $a0, 0x8012 /* 089130 80088530 24846550 */ addiu $a0, %lo(D_80126550) # addiu $a0, $a0, 0x6550 -/* 089134 80088534 3C08800E */ lui $t0, %hi(D_800DF7C6) # $t0, 0x800e +# Accessing D_800DF7C4[1]. +/* 089134 80088534 3C08800E */ lui $t0, %hi(D_800DF7C4) # $t0, 0x800e /* 089138 80088538 000E7880 */ sll $t7, $t6, 2 -/* 08913C 8008853C 8508F7C6 */ lh $t0, %lo(D_800DF7C6)($t0) +/* 08913C 8008853C 8508F7C6 */ lh $t0, -0x83a($t0) /* 089140 80088540 008FC021 */ addu $t8, $a0, $t7 /* 089144 80088544 8F190000 */ lw $t9, ($t8) /* 089148 80088548 3C01800E */ lui $at, %hi(D_800DF7DC) # $at, 0x800e -/* 08914C 8008854C 3C0C800E */ lui $t4, %hi(D_800DF7C8) # $t4, 0x800e +# Accessing D_800DF7C4[2]. +/* 08914C 8008854C 3C0C800E */ lui $t4, %hi(D_800DF7C4) # $t4, 0x800e /* 089150 80088550 00084880 */ sll $t1, $t0, 2 -/* 089154 80088554 858CF7C8 */ lh $t4, %lo(D_800DF7C8)($t4) +/* 089154 80088554 858CF7C8 */ lh $t4, -0x838($t4) /* 089158 80088558 00895021 */ addu $t2, $a0, $t1 /* 08915C 8008855C AC39F7DC */ sw $t9, %lo(D_800DF7DC)($at) /* 089160 80088560 8D4B0000 */ lw $t3, ($t2) -/* 089164 80088564 3C01800E */ lui $at, %hi(D_800DF7EC) # $at, 0x800e +# Accessing D_800DF7DC[1] (instr 089170) and D_800DF7DC[2] (instr 089190). +/* 089164 80088564 3C01800E */ lui $at, %hi(D_800DF7DC) # $at, 0x800e /* 089168 80088568 000C6880 */ sll $t5, $t4, 2 /* 08916C 8008856C 008D7021 */ addu $t6, $a0, $t5 -/* 089170 80088570 AC2BF7E4 */ sw $t3, %lo(D_800DF7E4)($at) +/* 089170 80088570 AC2BF7E4 */ sw $t3, -0x81c($at) /* 089174 80088574 8DCF0000 */ lw $t7, ($t6) # The extra lui is here. -/* 089178 80088578 3C03800E */ lui $v1, %hi(D_800DF7F4) # $v1, 0x800e -/* 08917C 8008857C 3C02800E */ lui $v0, %hi(D_800DF7CA) # $v0, 0x800e -/* 089180 80088580 3C05800E */ lui $a1, %hi(D_800DF7DA) # $a1, 0x800e -/* 089184 80088584 24A5F7DA */ addiu $a1, %lo(D_800DF7DA) # addiu $a1, $a1, -0x826 -/* 089188 80088588 2442F7CA */ addiu $v0, %lo(D_800DF7CA) # addiu $v0, $v0, -0x836 -/* 08918C 8008858C 2463F7F4 */ addiu $v1, %lo(D_800DF7F4) # addiu $v1, $v1, -0x80c -/* 089190 80088590 AC2FF7EC */ sw $t7, %lo(D_800DF7EC)($at) +# Accessing D_800DF7DC[3]. +/* 089178 80088578 3C03800E */ lui $v1, %hi(D_800DF7DC) # $v1, 0x800e +# Accessing D_800DF7C4[3]. +/* 08917C 8008857C 3C02800E */ lui $v0, %hi(D_800DF7C4) # $v0, 0x800e +# Accessing D_800DF7C4[11]. +/* 089180 80088580 3C05800E */ lui $a1, %hi(D_800DF7C4) # $a1, 0x800e +/* 089184 80088584 24A5F7DA */ addiu $a1, $a1, -0x826 +/* 089188 80088588 2442F7CA */ addiu $v0, $v0, -0x836 +/* 08918C 8008858C 2463F7F4 */ addiu $v1, $v1, -0x80c +/* 089190 80088590 AC2FF7EC */ sw $t7, -0x814($at) .L80088594: /* 089194 80088594 84580000 */ lh $t8, ($v0) /* 089198 80088598 844A0002 */ lh $t2, 2($v0) diff --git a/asm/non_matchings/unknown_080500/MenuTitleScreenInit.s b/asm/non_matchings/unknown_080500/MenuTitleScreenInit.s index adef7ec6..9bd40d84 100644 --- a/asm/non_matchings/unknown_080500/MenuTitleScreenInit.s +++ b/asm/non_matchings/unknown_080500/MenuTitleScreenInit.s @@ -49,30 +49,36 @@ glabel MenuTitleScreenInit /* 0841F0 800835F0 8508F7C4 */ lh $t0, %lo(D_800DF7C4)($t0) /* 0841F4 800835F4 3C048012 */ lui $a0, %hi(D_80126550) # $a0, 0x8012 /* 0841F8 800835F8 24846550 */ addiu $a0, %lo(D_80126550) # addiu $a0, $a0, 0x6550 -/* 0841FC 800835FC 3C0C800E */ lui $t4, %hi(D_800DF7C6) # $t4, 0x800e +# Accessing D_800DF7C4[1]. +/* 0841FC 800835FC 3C0C800E */ lui $t4, %hi(D_800DF7C4) # $t4, 0x800e /* 084200 80083600 00084880 */ sll $t1, $t0, 2 -/* 084204 80083604 858CF7C6 */ lh $t4, %lo(D_800DF7C6)($t4) +/* 084204 80083604 858CF7C6 */ lh $t4, -0x83a($t4) /* 084208 80083608 00895021 */ addu $t2, $a0, $t1 /* 08420C 8008360C 8D4B0000 */ lw $t3, ($t2) /* 084210 80083610 3C01800E */ lui $at, %hi(D_800DF7DC) # $at, 0x800e -/* 084214 80083614 3C18800E */ lui $t8, %hi(D_800DF7C8) # $t8, 0x800e +# Accessing D_800DF7C4[2]. +/* 084214 80083614 3C18800E */ lui $t8, %hi(D_800DF7C4) # $t8, 0x800e /* 084218 80083618 000C6880 */ sll $t5, $t4, 2 -/* 08421C 8008361C 8718F7C8 */ lh $t8, %lo(D_800DF7C8)($t8) +/* 08421C 8008361C 8718F7C8 */ lh $t8, -0x838($t8) /* 084220 80083620 008D7021 */ addu $t6, $a0, $t5 /* 084224 80083624 AC2BF7DC */ sw $t3, %lo(D_800DF7DC)($at) /* 084228 80083628 8DCF0000 */ lw $t7, ($t6) -/* 08422C 8008362C 3C01800E */ lui $at, %hi(D_800DF7EC) # $at, 0x800e +# Accessing D_800DF7DC[1] (instr 084238) and D_800DF7DC[2] (instr 084258). +/* 08422C 8008362C 3C01800E */ lui $at, %hi(D_800DF7DC) # $at, 0x800e /* 084230 80083630 0018C880 */ sll $t9, $t8, 2 /* 084234 80083634 00994021 */ addu $t0, $a0, $t9 -/* 084238 80083638 AC2FF7E4 */ sw $t7, %lo(D_800DF7E4)($at) +/* 084238 80083638 AC2FF7E4 */ sw $t7, -0x81c($at) /* 08423C 8008363C 8D090000 */ lw $t1, ($t0) -/* 084240 80083640 3C03800E */ lui $v1, %hi(D_800DF7F4) # $v1, 0x800e -/* 084244 80083644 3C02800E */ lui $v0, %hi(D_800DF7CA) # $v0, 0x800e -/* 084248 80083648 3C05800E */ lui $a1, %hi(D_800DF7DA) # $a1, 0x800e -/* 08424C 8008364C 24A5F7DA */ addiu $a1, %lo(D_800DF7DA) # addiu $a1, $a1, -0x826 -/* 084250 80083650 2442F7CA */ addiu $v0, %lo(D_800DF7CA) # addiu $v0, $v0, -0x836 -/* 084254 80083654 2463F7F4 */ addiu $v1, %lo(D_800DF7F4) # addiu $v1, $v1, -0x80c -/* 084258 80083658 AC29F7EC */ sw $t1, %lo(D_800DF7EC)($at) +# Accessing D_800DF7DC[3]. +/* 084240 80083640 3C03800E */ lui $v1, %hi(D_800DF7DC) # $v1, 0x800e +# Accessing D_800DF7C4[3]. +/* 084244 80083644 3C02800E */ lui $v0, %hi(D_800DF7C4) # $v0, 0x800e +# Accessing D_800DF7C4[11]. +/* 084248 80083648 3C05800E */ lui $a1, %hi(D_800DF7C4) # $a1, 0x800e +/* 08424C 8008364C 24A5F7DA */ addiu $a1, $a1, -0x826 +/* 084250 80083650 2442F7CA */ addiu $v0, $v0, -0x836 +/* 084254 80083654 2463F7F4 */ addiu $v1, $v1, -0x80c +/* 084258 80083658 AC29F7EC */ sw $t1, -0x814($at) .L8008365C: /* 08425C 8008365C 844A0000 */ lh $t2, ($v0) /* 084260 80083660 844E0002 */ lh $t6, 2($v0) diff --git a/asm/non_matchings/unknown_080500/MenuTitleScreenLoop.s b/asm/non_matchings/unknown_080500/MenuTitleScreenLoop.s index 45cb9352..23adb315 100644 --- a/asm/non_matchings/unknown_080500/MenuTitleScreenLoop.s +++ b/asm/non_matchings/unknown_080500/MenuTitleScreenLoop.s @@ -321,7 +321,8 @@ glabel MenuTitleScreenLoop /* 084A94 80083E94 4606003C */ c.lt.s $f0, $f6 /* 084A98 80083E98 3C0F800E */ lui $t7, %hi(D_800DF760) # $t7, 0x800e /* 084A9C 80083E9C 45000016 */ bc1f .L80083EF8 -/* 084AA0 80083EA0 3C04800E */ lui $a0, %hi(D_800DF763) # $a0, 0x800e +# Casting D_800DF760 to u8 (see instr 084AF8). +/* 084AA0 80083EA0 3C04800E */ lui $a0, %hi(D_800DF760) # $a0, 0x800e /* 084AA4 80083EA4 8DEFF760 */ lw $t7, %lo(D_800DF760)($t7) /* 084AA8 80083EA8 44815000 */ mtc1 $at, $f10 /* 084AAC 80083EAC 448F2000 */ mtc1 $t7, $f4 @@ -344,7 +345,7 @@ glabel MenuTitleScreenLoop /* 084AF0 80083EF0 10000006 */ b .L80083F0C /* 084AF4 80083EF4 2463686C */ addiu $v1, %lo(D_8012686C) # addiu $v1, $v1, 0x686c .L80083EF8: -/* 084AF8 80083EF8 9084F763 */ lbu $a0, %lo(D_800DF763)($a0) +/* 084AF8 80083EF8 9084F763 */ lbu $a0, -0x89d($a0) /* 084AFC 80083EFC 0C000664 */ jal musicSetRelativeVolume /* 084B00 80083F00 00000000 */ nop /* 084B04 80083F04 3C038012 */ lui $v1, %hi(D_8012686C) # $v1, 0x8012 diff --git a/asm/non_matchings/unknown_080500/func_80094D28.s b/asm/non_matchings/unknown_080500/func_80094D28.s index 8b065120..384ee533 100644 --- a/asm/non_matchings/unknown_080500/func_80094D28.s +++ b/asm/non_matchings/unknown_080500/func_80094D28.s @@ -166,9 +166,10 @@ glabel func_80094D28 /* 095B84 80094F84 3C014000 */ li $at, 0x40000000 # 2.000000 /* 095B88 80094F88 46803220 */ cvt.s.w $f8, $f6 /* 095B8C 80094F8C 44813000 */ mtc1 $at, $f6 -/* 095B90 80094F90 3C01800E */ lui $at, %hi(D_800DF598) # $at, 0x800e +# Accessing D_800DF510[4].unk8. +/* 095B90 80094F90 3C01800E */ lui $at, %hi(D_800DF510) # $at, 0x800e /* 095B94 80094F94 E5880090 */ swc1 $f8, 0x90($t4) -/* 095B98 80094F98 C42AF598 */ lwc1 $f10, %lo(D_800DF598)($at) +/* 095B98 80094F98 C42AF598 */ lwc1 $f10, -0xa68($at) /* 095B9C 80094F9C 46043201 */ sub.s $f8, $f6, $f4 /* 095BA0 80094FA0 8C4D0000 */ lw $t5, ($v0) /* 095BA4 80094FA4 46085402 */ mul.s $f16, $f10, $f8 diff --git a/asm/non_matchings/unknown_080500/func_80095728.s b/asm/non_matchings/unknown_080500/func_80095728.s index 3e826b7b..87a25787 100644 --- a/asm/non_matchings/unknown_080500/func_80095728.s +++ b/asm/non_matchings/unknown_080500/func_80095728.s @@ -207,10 +207,11 @@ glabel func_80095728 /* 096620 80095A20 E584008C */ swc1 $f4, 0x8c($t4) /* 096624 80095A24 8C4D0000 */ lw $t5, ($v0) /* 096628 80095A28 44813000 */ mtc1 $at, $f6 -/* 09662C 80095A2C 3C01800E */ lui $at, %hi(D_800DF598) # $at, 0x800e +# Accessing D_800DF510[4].unk8. +/* 09662C 80095A2C 3C01800E */ lui $at, %hi(D_800DF510) # $at, 0x800e /* 096630 80095A30 E5A60090 */ swc1 $f6, 0x90($t5) /* 096634 80095A34 8C4E0000 */ lw $t6, ($v0) -/* 096638 80095A38 C428F598 */ lwc1 $f8, %lo(D_800DF598)($at) +/* 096638 80095A38 C428F598 */ lwc1 $f8, -0xa68($at) /* 09663C 80095A3C 00000000 */ nop /* 096640 80095A40 E5C80088 */ swc1 $f8, 0x88($t6) /* 096644 80095A44 8FAF002C */ lw $t7, 0x2c($sp) diff --git a/include/unknown_080500.h b/include/unknown_080500.h new file mode 100644 index 00000000..cc5df6d6 --- /dev/null +++ b/include/unknown_080500.h @@ -0,0 +1,550 @@ +#ifndef _UNKNOWN_080500_H_ +#define _UNKNOWN_080500_H_ + +#include "types.h" +#include "structs.h" + +extern s8 D_800DF450; +extern f32 D_800DF454; +extern s32 D_800DF458; +extern s32 D_800DF45C; +extern s32 D_800DF460; +extern s32 D_800DF464; +extern s32 D_800DF468; +extern s32 D_800DF46C; +extern s32 D_800DF470; +extern s32 D_800DF474; +extern s32 D_800DF478; +extern s32 D_800DF47C; +extern s32 D_800DF480; +extern s32 D_800DF484; +extern s32 D_800DF488; +extern s32 D_800DF48C; +extern s32 D_800DF490; +extern s32 gIsInAdventureTwo; +extern s32 D_800DF498; +extern s32 D_800DF49C; + +typedef struct unk800DF4A0 { + u8 pad0[0x5C]; + s32 unk5C; + s32 unk60; + u8 unk64[0xC]; + s32 unk70; + u8 pad74[0x1C]; + s32 unk90; + u8 pad94[0x30]; + s32 unkC4; + s32 unkC8; + s32 unkCC; + u8 padD0[0x48]; + s32 unk118; + u8 pad11C[0x100]; + s32 unk21C; + u8 pad220[0x8]; + s32 unk228[4]; + u8 pad238[0x24]; + s32 unk25C; + u8 pad260[0x78]; + s32 unk2D8; + s32 unk2DC; +} unk800DF4A0; + +extern unk800DF4A0* D_800DF4A0; + +extern u8 D_800DF4A4; +extern u8 D_800DF4A8; +extern u8 D_800DF4AC; + +extern s32 D_800DF4B0; +extern s32 D_800DF4B4; +extern s32 D_800DF4B8; +extern s32 D_800DF4BC; +extern s32 gIsInTwoPlayerAdventure; +extern s32 D_800DF4C4; +extern s32 D_800DF4C8; +extern s32 gSaveFileIndex; + +extern s32 D_800DF4D0; +extern s32 D_800DF4D4; +extern s8 D_800DF4D8; +extern s8 D_800DF4DC; +extern s8 D_800DF4E0; +extern s8 D_800DF4E4[4]; +extern s32 D_800DF4E8; +extern s8 D_800DF4EC; + +// Unused? +extern s32 D_800DF4F0[]; + +/* Size: 0x20 bytes */ +typedef struct unk800DF510 { + s16 unk0; + s16 unk2; + s16 unk4; + s16 unk6; + f32 unk8; + f32 unkC; + f32 unk10; + f32 unk14; + s16 unk18; + s8 unk1A; + s8 unk1B; + s8 unk1C; + s8 unk1D; + u8 pad1E[2]; +} unk800DF510; + +extern unk800DF510 D_800DF510[18]; + +extern s16 *D_800DF750[1]; +extern s16 D_800DF754; +extern s16 D_800DF758; +extern unk800DF510 *D_800DF75C; + +extern s32 D_800DF760; +extern s32 D_800DF764; +extern s32 D_800DF768; + +// Not sure about typing with these arrays. +extern s16 D_800DF76C[4]; +extern s16 D_800DF774[4]; +extern u16 D_800DF77C[12]; + +extern s32 D_800DF794; +extern s32 D_800DF798; +extern s32 D_800DF79C; + +extern s32 D_800DF7A0; +extern s32 D_800DF7A4; +extern s32 D_800DF7A8; +extern s32 D_800DF7AC; + +// Version text shown on the title screen? See 1:15 in https://www.youtube.com/watch?v=OHSCLcA74ao. +extern char gVersionDisplayText[20]; + +// Probably not unqiue to the boot menu. +typedef struct MenuBootDrawTexture { + u32* texture; // Pointer to texture to draw. TODO: Make structure for texture header. + s16 xOffset; // Offset from the center of the screen. + s16 yOffset; // Offset from the center of the screen. +} MenuBootDrawTexture; + +extern s16 D_800DF7C4[12]; + +MenuBootDrawTexture D_800DF7DC[12]; + +/* Size: 0x30 bytes */ +typedef struct unk800DF83C { + s32* unk0; // Pointer to something. + f32 unk4; + f32 unk8; + f32 unkC; + f32 unk10; + f32 unk14; + f32 unk18; + f32 unk1C; + f32 unk20; + f32 unk24; + f32 unk28; +} unk800DF83C; + +extern unk800DF83C D_800DF83C[10]; + +extern s32 D_800DF9F4; + +extern u16 D_800DF9F8[12]; + +extern char *D_800DFA10[7]; + +extern s16 D_800DFA2C[8]; + +typedef struct unk800DFA3C { + s16 unk0; + s16 unk2; + u8 unk4; + u8 unk5; + u8 unk6; + u8 unk7; + u8 unk8; + u8 unk9; + u8 unkA; + u8 unkB; + u32* unkC; +} unk800DFA3C; + +extern unk800DFA3C D_800DFA3C[8]; + +extern s32 D_800DFABC; + +extern s32 D_800DFAC0; +extern s32 D_800DFAC4; +extern s32 D_800DFAC8; + +// Unsure about typing here. +extern u16 D_800DFACC[8]; + +extern s32 D_800DFADC; +extern s32 D_800DFAE0; + + +// Unsure about typing with these arrays. +extern s32 D_800DFAE4[6]; +extern s32 D_800DFAFC[6]; +extern s32 D_800DFB14[6]; +extern s32 D_800DFB2C[5]; +extern s32 D_800DFB40[7]; +extern s32 D_800DFB5C[6]; +extern s32 D_800DFB74[6]; +extern s32 D_800DFB8C[6]; +extern s32 D_800DFBA4[6]; +extern s32 D_800DFBBC[8]; +extern s32 D_800DFBDC; + +// Unused? +extern s32* D_800DFBE0[10]; + +extern s32 D_800DFC08; +extern s32 D_800DFC0C; + +typedef struct unk800DFC10 { + u32 *unk0; + s16 unk4; + s16 unk6; + u32 *unk8; + s32 unkC; +} unk800DFC10; + +extern unk800DFC10 D_800DFC10; +extern unk800DFC10 D_800DFC20; +extern unk800DFC10 D_800DFC30; +extern unk800DFC10 D_800DFC40; +extern unk800DFC10 D_800DFC50; +extern unk800DFC10 D_800DFC60; + +// Unused? +extern u8 D_800DFC70[8]; + +extern s16 D_800DFC78[26]; + +extern s16 D_800DFCAC[4]; + +extern u16 D_800DFCB4[112]; + +extern s32 D_800DFD94; + +extern s32 gActiveMagicCodes; +extern s32 gUnlockedMagicCodes; + +extern s32 D_800DFDA0[5]; + +extern u8 D_800DFDB4[10][2]; + +extern s16 D_800DFDC8[2]; +extern s16 D_800DFDCC[2]; + +// Not sure what this is +extern s32 D_800DFDD0[28]; + +// Not sure what this is +extern s32 D_800DFE40[32]; + +// Not sure what this is +extern s32 D_800DFEC0[32]; + +// Not sure what this is +extern s32 D_800DFF40[36]; + +extern s32 D_800DFFD0; +extern s32 D_800DFFD4; + +MenuElement D_800DFFD8[14]; + +MenuElement D_800E0198[7]; + +MenuElement D_800E0278[9]; + +extern s16 D_800E0398[6]; + +extern s16 D_800E03A4[6]; + +extern u16 D_800E03B0[14]; + +extern u16 D_800E03CC[24]; + +extern u16 D_800E03FC[10]; + +extern s32 D_800E0410; +extern s32 D_800E0414; +extern s32 D_800E0418; + +extern unk800DFC10 D_800E041C; +extern unk800DFC10 D_800E042C; +extern unk800DFC10 D_800E043C; +extern unk800DFC10 D_800E044C; + +extern unk800DFC10 D_800E045C; +extern s32 D_800E046C[2]; +extern unk800DFC10 D_800E0474; +extern s32 D_800E0484[2]; +extern unk800DFC10 D_800E048C; +extern s32 D_800E049C[2]; +extern unk800DFC10 D_800E04A4; +extern s32 D_800E04B4[2]; +extern unk800DFC10 D_800E04BC; +extern s32 D_800E04CC[2]; +extern unk800DFC10 D_800E04D4; +extern unk800DFC10 D_800E04E4; +extern unk800DFC10 D_800E04F4; +extern unk800DFC10 D_800E0504; +extern unk800DFC10 D_800E0514; +extern unk800DFC10 D_800E0524; +extern unk800DFC10 D_800E0534; +extern unk800DFC10 D_800E0544; +extern unk800DFC10 D_800E0554; +extern unk800DFC10 D_800E0564; +extern unk800DFC10 D_800E0574; +extern unk800DFC10 D_800E0584; +extern unk800DFC10 D_800E0594; +extern unk800DFC10 D_800E05A4; +extern unk800DFC10 D_800E05B4; +extern unk800DFC10 D_800E05C4; + +// These are probably structs +extern s32 D_800E05D4[8]; +extern s32 D_800E05F4[8]; + +extern unk800DFC10 D_800E0614; + +extern unk800DFC10 *D_800E0624[9]; + +extern unk800DFC10 *D_800E0648[6]; + +extern unk800DFC10 *D_800E0660[6]; + +extern unk800DFC10 *D_800E0678[4]; + +extern u16 D_800E0688[20]; + +extern u16 D_800E06B0[10]; + +extern s16 D_800E06C4[8]; + +extern s16 D_800E06D4[8]; + +extern u16 D_800E06E4[14]; + +extern u16 D_800E0700[8]; + +extern s16 D_800E0710[16]; + +extern s16 D_800E0730[18]; +extern s16 D_800E0758[56]; + +extern s16 D_800E07C4[14]; + +extern s16 D_800E07E0[4]; + +extern s16 D_800E07E8[36]; + +extern s16 D_800E0830[8]; + +extern s16 D_800E0840[148]; + +extern s32 D_800E0968; +extern s32 D_800E096C; +extern s32 D_800E0970; +extern s32 D_800E0974; +extern u32* D_800E0978; +extern s32 D_800E097C; +extern s32 D_800E0980; +extern s32 D_800E0984; +extern s32 D_800E0988; +extern s32 D_800E098C; + +extern s16 D_800E0990[8]; + +extern s16 D_800E09A0[8]; + +// Not sure about typing with these. +extern s32 D_800E09B0[5]; +extern s32 D_800E09C4[5]; +extern s32 D_800E09D8[5]; +extern s32 D_800E09EC[3]; +extern s32 D_800E09F8[3]; +extern s32 D_800E0A04[3]; +extern s32 D_800E0A10; +extern s32 D_800E0A14[4]; + +extern s16 D_800E0A24[14]; + +extern s16 D_800E0A40[8]; + +extern unk800DFC10 D_800E0A50; +extern unk800DFC10 D_800E0A60; +extern unk800DFC10 D_800E0A70; +extern unk800DFC10 D_800E0A90; +extern unk800DFC10 D_800E0A80; +extern unk800DFC10 D_800E0AA0; +extern unk800DFC10 D_800E0AB0; +extern unk800DFC10 D_800E0AC0; +extern unk800DFC10 D_800E0AD0; +extern unk800DFC10 D_800E0AE0; + +extern unk800DFC10* D_800E0AF0[10]; + +extern s16 D_800E0B18[74]; + +extern char gFirstPlace[4]; +extern char gSecondPlace[4]; +extern char gThirdPlace[4]; +extern char gFourthPlace[4]; +extern char gFifthPlace[4]; +extern char gSixthPlace[4]; +extern char gSeventhPlace[4]; +extern char gEighthPlace[4]; + +extern char *D_800E0BCC[8]; + +MenuElement D_800E0BEC[8]; + +MenuElement D_800E0CEC[11]; + +MenuElement D_800E0E4C[9]; + +// Valid characters for name input. Must be u8, not char. +extern u8 D_800E0F6C[32]; + +extern s32 D_800E0F8C; +extern s32 D_800E0F90; +extern s32 D_800E0F94; +extern s32 D_800E0F98; +extern s32 D_800E0F9C; +extern s32 D_800E0FA0; +extern s32 D_800E0FA4; +extern char D_800E0FA8[4]; +extern s32 D_800E0FAC; +extern s32 D_800E0FB0; + +extern s16 D_800E0FB4[18]; + +extern s16 D_800E0FD8[6]; + +extern s32 D_800E0FE4; +extern s32 gTrophyRaceWorldId; +extern s32 D_800E0FEC; +extern s32 D_800E0FF0; + +// Unused? Not sure what this is. +extern u32 D_800E0FF4[4]; + +// Number of points to award in trophy race for each place? +extern s32 D_800E1004[8]; + +extern s16 D_800E1024[14]; + +extern s32 D_800E1040; +extern s16 D_800E1044; + +MenuElement D_800E1048[9][3]; + +extern s16 D_800E13A8[138]; + +extern s16* D_800E14BC[32]; + +// Not sure what these arrays are supposed to be +extern s32 D_800E153C[10]; +extern s32 D_800E1564[12]; +extern s32 D_800E1594[10]; +extern s32 D_800E15BC[12]; +extern s32 D_800E15EC[10]; +extern s32 D_800E1614[12]; +extern s32 D_800E1644[10]; +extern s32 D_800E166C[12]; +extern s32 D_800E169C[10]; +extern s32 D_800E16C4[12]; + +extern s32 *D_800E16F4[5]; + +extern s16 D_800E1708[34]; + +extern s16 D_800E174C[4]; + +extern s16 D_800E1754[10]; + +extern s16 D_800E1768[12]; + +// Fast3D (F3DDKR) display list +extern u32 D_800E1780[22]; + +extern s16 D_800E17D8[12]; + +extern s16 D_800E17F0[2]; + +extern s16 D_800E17F4[130]; + +extern u16 D_800E18F8; + +// Unused? +extern u16 D_800E18FC[30]; + +// Credits text look-up table +extern char *D_800E1938[87]; + +// Credits text look-up table (time trials time sheet) +extern char *D_800E1A94[20]; + +// Another credits text look-up table +extern char *D_800E1AE4[5]; + +extern s32 D_800E1AF8[21]; + +extern s32 D_800E1B4C; + +MenuElement D_800E1B50[9]; + +// Fast3D (F3DDKR) display list +extern u32 D_800E1C70[24]; + +extern s8 D_800E1CD0[32]; + +extern s8 D_800E1CF0[60]; + +extern u16 D_800E1D2C[40]; + +extern s16 D_800E1D7C[20]; + +extern s32 *D_800E1DA4[2]; + +extern s32 *D_800E1DAC[2]; + +extern s32 D_800E1DB4; +extern s32 D_800E1DB8; +extern s32 D_800E1DBC; + +extern s32 D_800E1DC0; +extern s32 D_800E1DC4; + +extern s16 D_800E1DC8[16]; + +extern s16 D_800E1DE8[4]; + +extern char D_800E1DF0[24]; + +extern s16 D_800E1E08[4]; + +extern s32 *D_800E1E10; + +extern s32 D_800E1E14; +extern s32 D_800E1E18; +extern s32 D_800E1E1C; + +extern s8 D_800E1E20[8]; + +extern s8 D_800E1E28; + +extern s16 D_800E1E2C[10]; + +extern s16 D_800E1E40[10]; + +#endif diff --git a/src/unknown_080500.c b/src/unknown_080500.c index 777ff80c..bbbc3b90 100644 --- a/src/unknown_080500.c +++ b/src/unknown_080500.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x8007F900 */ +#include "unknown_080500.h" + #include "types.h" #include "macros.h" #include "structs.h" @@ -63,31 +65,6 @@ s32 gIsInAdventureTwo = 0; s32 D_800DF498 = 0; s32 D_800DF49C = 0; // Currently unknown, might be a different type. -typedef struct unk800DF4A0 { - u8 pad0[0x5C]; - s32 unk5C; - s32 unk60; - u8 unk64[0xC]; - s32 unk70; - u8 pad74[0x1C]; - s32 unk90; - u8 pad94[0x30]; - s32 unkC4; - s32 unkC8; - s32 unkCC; - u8 padD0[0x48]; - s32 unk118; - u8 pad11C[0x100]; - s32 unk21C; - u8 pad220[0x8]; - s32 unk228[4]; - u8 pad238[0x24]; - s32 unk25C; - u8 pad260[0x78]; - s32 unk2D8; - s32 unk2DC; -} unk800DF4A0; - unk800DF4A0* D_800DF4A0 = NULL; u8 D_800DF4A4 = 0xFF; @@ -120,24 +97,6 @@ s32 D_800DF4F0[] = { 0x8000, 0x10, 0x400, 0x00 }; -/* Size: 0x20 bytes */ -typedef struct unk800DF510 { - s16 unk0; - s16 unk2; - s16 unk4; - s16 unk6; - f32 unk8; - f32 unkC; - f32 unk10; - f32 unk14; - s16 unk18; - s8 unk1A; - s8 unk1B; - s8 unk1C; - s8 unk1D; - u8 pad1E[2]; -} unk800DF510; - unk800DF510 D_800DF510[18] = { { 0, 0, 0, 0x00, 1.0f, 0.0f, 0.0f, -32.0f, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0x01, 1.0f, 0.0f, 0.0f, -32.0f, 0, 0, 0, 0, 0 }, @@ -193,13 +152,6 @@ s32 D_800DF7AC = 0; // Currently unknown, might be a different type. // Version text shown on the title screen? See 1:15 in https://www.youtube.com/watch?v=OHSCLcA74ao. char gVersionDisplayText[20] = "VERSION XXXXXXXX"; -// Probably not unqiue to the boot menu. -typedef struct MenuBootDrawTexture { - u32* texture; // Pointer to texture to draw. TODO: Make structure for texture header. - s16 xOffset; // Offset from the center of the screen. - s16 yOffset; // Offset from the center of the screen. -} MenuBootDrawTexture; - s16 D_800DF7C4[12] = { 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, @@ -221,21 +173,6 @@ MenuBootDrawTexture D_800DF7DC[12] = { { NULL, 0, 0 } }; -/* Size: 0x30 bytes */ -typedef struct unk800DF83C { - s32* unk0; // Pointer to something. - f32 unk4; - f32 unk8; - f32 unkC; - f32 unk10; - f32 unk14; - f32 unk18; - f32 unk1C; - f32 unk20; - f32 unk24; - f32 unk28; -} unk800DF83C; - unk800DF83C D_800DF83C[10] = { { (s32*)0x800E7CB0, 14.0f, 14.5f, 16.5f, 17.0f, -80.0f, 208.0f, 160.0f, 208.0f, 400.0f, 208.0f }, { (s32*)0x800E7CB8, 19.0f, 19.5f, 21.5f, 22.0f, -80.0f, 208.0f, 160.0f, 208.0f, 400.0f, 208.0f }, @@ -265,20 +202,6 @@ s16 D_800DFA2C[8] = { 0x3D, 0x3C, 0x3F, 0x3E, 0x44, -1, -1, 0 }; -typedef struct unk800DFA3C { - s16 unk0; - s16 unk2; - u8 unk4; - u8 unk5; - u8 unk6; - u8 unk7; - u8 unk8; - u8 unk9; - u8 unkA; - u8 unkB; - u32* unkC; -} unk800DFA3C; - unk800DFA3C D_800DFA3C[8] = { { 160, 80, 0xFF, 0xFF, 0xFF, 0, 0xFF, 0, 0, 12, NULL }, { 160, 104, 0xFF, 0xFF, 0xFF, 0, 0xFF, 0, 0, 12, NULL }, @@ -329,14 +252,6 @@ s32* D_800DFBE0[10] = { s32 D_800DFC08 = 0; // Currently unknown, might be a different type. s32 D_800DFC0C = 0xFFFF; // Currently unknown, might be a different type. -typedef struct unk800DFC10 { - u32 *unk0; - s16 unk4; - s16 unk6; - u32 *unk8; - s32 unkC; -} unk800DFC10; - unk800DFC10 D_800DFC10 = { NULL, 0, 0, NULL, 0 }; unk800DFC10 D_800DFC20 = { NULL, 0, 0, NULL, 0 }; unk800DFC10 D_800DFC30 = { NULL, 0, 0, NULL, 0 }; diff --git a/undefined_syms.txt b/undefined_syms.txt index 0e903027..237e087a 100755 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -72,71 +72,6 @@ D_800DD434 = 0x800DD434; D_800DD438 = 0x800DD438; D_800DD43C = 0x800DD43C; D_800DDC3E = 0x800DDC3E; -D_800DF450 = 0x800DF450; -D_800DF454 = 0x800DF454; -D_800DF458 = 0x800DF458; -D_800DF45C = 0x800DF45C; -D_800DF460 = 0x800DF460; -D_800DF468 = 0x800DF468; -D_800DF46C = 0x800DF46C; -D_800DF470 = 0x800DF470; -D_800DF478 = 0x800DF478; -D_800DF47C = 0x800DF47C; -D_800DF480 = 0x800DF480; -D_800DF484 = 0x800DF484; -D_800DF488 = 0x800DF488; -gIsInAdventureTwo = 0x800DF494; -D_800DF498 = 0x800DF498; -D_800DF49C = 0x800DF49C; -D_800DF4A0 = 0x800DF4A0; -D_800DF4A4 = 0x800DF4A4; -D_800DF4A8 = 0x800DF4A8; -D_800DF4AC = 0x800DF4AC; -D_800DF4B0 = 0x800DF4B0; -D_800DF4B4 = 0x800DF4B4; -D_800DF4B8 = 0x800DF4B8; -D_800DF4BC = 0x800DF4BC; -gIsInTwoPlayerAdventure = 0x800DF4C0; -D_800DF4C4 = 0x800DF4C4; -D_800DF4C8 = 0x800DF4C8; -gSaveFileIndex = 0x800DF4CC; -D_800DF4D4 = 0x800DF4D4; -D_800DF4D8 = 0x800DF4D8; -D_800DF4DC = 0x800DF4DC; -D_800DF4E0 = 0x800DF4E0; -D_800DF4E4 = 0x800DF4E4; -D_800DF4E7 = 0x800DF4E7; -D_800DF4EC = 0x800DF4EC; -D_800DF510 = 0x800DF510; -D_800DF598 = 0x800DF598; -D_800DF750 = 0x800DF750; -D_800DF754 = 0x800DF754; -D_800DF758 = 0x800DF758; -D_800DF75C = 0x800DF75C; -D_800DF760 = 0x800DF760; -D_800DF763 = 0x800DF763; -D_800DF764 = 0x800DF764; -D_800DF76C = 0x800DF76C; -D_800DF774 = 0x800DF774; -D_800DF77C = 0x800DF77C; -D_800DF794 = 0x800DF794; -D_800DF798 = 0x800DF798; -D_800DF79C = 0x800DF79C; -D_800DF7A0 = 0x800DF7A0; -D_800DF7A4 = 0x800DF7A4; -D_800DF7C4 = 0x800DF7C4; -D_800DF7C6 = 0x800DF7C6; -D_800DF7C8 = 0x800DF7C8; -D_800DF7CA = 0x800DF7CA; -D_800DF7DA = 0x800DF7DA; -D_800DF7DC = 0x800DF7DC; -D_800DF7E4 = 0x800DF7E4; -D_800DF7EC = 0x800DF7EC; -D_800DF7F4 = 0x800DF7F4; -D_800DF83C = 0x800DF83C; -D_800DF9F4 = 0x800DF9F4; -D_800DF9F8 = 0x800DF9F8; -D_800DFA10 = 0x800DFA10; D_800DFA14 = 0x800DFA14; D_800DFA2C = 0x800DFA2C; D_800DFA38 = 0x800DFA38;