diff --git a/asm/non_matchings/unknown_066AA0/func_80068158.s b/asm/non_matchings/unknown_066AA0/func_80068158.s index 504b091c..592326a1 100644 --- a/asm/non_matchings/unknown_066AA0/func_80068158.s +++ b/asm/non_matchings/unknown_066AA0/func_80068158.s @@ -25,14 +25,14 @@ glabel func_80068158 /* 068DAC 800681AC 00053023 */ negu $a2, $a1 .L800681B0: /* 068DB0 800681B0 8CE50000 */ lw $a1, ($a3) -/* 068DB4 800681B4 3C19800E */ lui $t9, %hi(D_800DD094) # $t9, 0x800e +/* 068DB4 800681B4 3C19800E */ lui $t9, %hi(D_800DD064+0x30) # $t9, 0x800e /* 068DB8 800681B8 0005C080 */ sll $t8, $a1, 2 /* 068DBC 800681BC 0305C023 */ subu $t8, $t8, $a1 /* 068DC0 800681C0 0018C080 */ sll $t8, $t8, 2 /* 068DC4 800681C4 0305C021 */ addu $t8, $t8, $a1 /* 068DC8 800681C8 0018C080 */ sll $t8, $t8, 2 /* 068DCC 800681CC 0338C821 */ addu $t9, $t9, $t8 -/* 068DD0 800681D0 8F39D094 */ lw $t9, %lo(D_800DD094)($t9) +/* 068DD0 800681D0 8F39D094 */ lw $t9, %lo(D_800DD064+0x30)($t9) /* 068DD4 800681D4 3C0A800E */ lui $t2, %hi(D_800DD148) # $t2, 0x800e /* 068DD8 800681D8 332B0001 */ andi $t3, $t9, 1 /* 068DDC 800681DC 1560001A */ bnez $t3, .L80068248 diff --git a/asm/non_matchings/unknown_066AA0/func_800682AC.s b/asm/non_matchings/unknown_066AA0/func_800682AC.s index 40eb5197..ff85466f 100644 --- a/asm/non_matchings/unknown_066AA0/func_800682AC.s +++ b/asm/non_matchings/unknown_066AA0/func_800682AC.s @@ -8,14 +8,14 @@ glabel func_800682AC /* 068EC4 800682C4 AFA40020 */ sw $a0, 0x20($sp) /* 068EC8 800682C8 3C0F8012 */ lui $t7, %hi(D_80120CE4) # $t7, 0x8012 /* 068ECC 800682CC 8DEF0CE4 */ lw $t7, %lo(D_80120CE4)($t7) -/* 068ED0 800682D0 3C19800E */ lui $t9, %hi(D_800DD094) # $t9, 0x800e +/* 068ED0 800682D0 3C19800E */ lui $t9, %hi(D_800DD064+0x30) # $t9, 0x800e /* 068ED4 800682D4 000FC080 */ sll $t8, $t7, 2 /* 068ED8 800682D8 030FC023 */ subu $t8, $t8, $t7 /* 068EDC 800682DC 0018C080 */ sll $t8, $t8, 2 /* 068EE0 800682E0 030FC021 */ addu $t8, $t8, $t7 /* 068EE4 800682E4 0018C080 */ sll $t8, $t8, 2 /* 068EE8 800682E8 0338C821 */ addu $t9, $t9, $t8 -/* 068EEC 800682EC 8F39D094 */ lw $t9, %lo(D_800DD094)($t9) +/* 068EEC 800682EC 8F39D094 */ lw $t9, %lo(D_800DD064+0x30)($t9) /* 068EF0 800682F0 8FA40020 */ lw $a0, 0x20($sp) /* 068EF4 800682F4 332A0001 */ andi $t2, $t9, 1 /* 068EF8 800682F8 00024402 */ srl $t0, $v0, 0x10 diff --git a/asm/non_matchings/unknown_066AA0/func_8006C60C.s b/asm/non_matchings/unknown_066AA0/func_8006C60C.s index b64f9a41..80292d59 100644 --- a/asm/non_matchings/unknown_066AA0/func_8006C60C.s +++ b/asm/non_matchings/unknown_066AA0/func_8006C60C.s @@ -202,8 +202,9 @@ glabel func_8006C60C /* 06D504 8006C904 0C02DDF5 */ jal func_800B77D4 /* 06D508 8006C908 00000000 */ nop .L8006C90C: -/* 06D50C 8006C90C 3C04800E */ lui $a0, %hi(D_800DD407) # $a0, 0x800e -/* 06D510 8006C910 9084D407 */ lbu $a0, %lo(D_800DD407)($a0) +# Casting D_800DD404 to u8. +/* 06D50C 8006C90C 3C04800E */ lui $a0, %hi(D_800DD404) # $a0, 0x800e +/* 06D510 8006C910 9084D407 */ lbu $a0, -0x2bf9($a0) /* 06D514 8006C914 0C000340 */ jal func_80000D00 /* 06D518 8006C918 00000000 */ nop /* 06D51C 8006C91C 3C048012 */ lui $a0, %hi(D_801211F8) # $a0, 0x8012 diff --git a/asm/non_matchings/unknown_080500/MenuBootInit.s b/asm/non_matchings/unknown_080500/MenuBootInit.s index a73a3427..5e5d3af9 100644 --- a/asm/non_matchings/unknown_080500/MenuBootInit.s +++ b/asm/non_matchings/unknown_080500/MenuBootInit.s @@ -15,31 +15,32 @@ 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 +/* 089134 80088534 3C08800E */ lui $t0, %hi(D_800DF7C4+2) # $t0, 0x800e /* 089138 80088538 000E7880 */ sll $t7, $t6, 2 -/* 08913C 8008853C 8508F7C6 */ lh $t0, %lo(D_800DF7C6)($t0) +/* 08913C 8008853C 8508F7C6 */ lh $t0, %lo(D_800DF7C4+2)($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 +/* 08914C 8008854C 3C0C800E */ lui $t4, %hi(D_800DF7C4+4) # $t4, 0x800e /* 089150 80088550 00084880 */ sll $t1, $t0, 2 -/* 089154 80088554 858CF7C8 */ lh $t4, %lo(D_800DF7C8)($t4) +/* 089154 80088554 858CF7C8 */ lh $t4, %lo(D_800DF7C4+4)($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] and D_800DF7DC[2]. +/* 089164 80088564 3C01800E */ lui $at, %hi(D_800DF7DC+8) # $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, %lo(D_800DF7DC+8)($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) +/* 089178 80088578 3C03800E */ lui $v1, %hi(D_800DF7DC+0x18) # $v1, 0x800e +/* 08917C 8008857C 3C02800E */ lui $v0, %hi(D_800DF7C4+6) # $v0, 0x800e +/* 089180 80088580 3C05800E */ lui $a1, %hi(D_800DF7C4+22) # $a1, 0x800e +/* 089184 80088584 24A5F7DA */ addiu $a1, %lo(D_800DF7C4+22) # addiu $a1, $a1, -0x826 +/* 089188 80088588 2442F7CA */ addiu $v0, %lo(D_800DF7C4+6) # addiu $v0, $v0, -0x836 +/* 08918C 8008858C 2463F7F4 */ addiu $v1, %lo(D_800DF7DC+0x18) # addiu $v1, $v1, -0x80c +/* 089190 80088590 AC2FF7EC */ sw $t7, %lo(D_800DF7DC+0x10)($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..6bacda95 100644 --- a/asm/non_matchings/unknown_080500/MenuTitleScreenInit.s +++ b/asm/non_matchings/unknown_080500/MenuTitleScreenInit.s @@ -49,30 +49,31 @@ 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 +/* 0841FC 800835FC 3C0C800E */ lui $t4, %hi(D_800DF7C4+2) # $t4, 0x800e /* 084200 80083600 00084880 */ sll $t1, $t0, 2 -/* 084204 80083604 858CF7C6 */ lh $t4, %lo(D_800DF7C6)($t4) +/* 084204 80083604 858CF7C6 */ lh $t4, %lo(D_800DF7C4+2)($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 +/* 084214 80083614 3C18800E */ lui $t8, %hi(D_800DF7C4+4) # $t8, 0x800e /* 084218 80083618 000C6880 */ sll $t5, $t4, 2 -/* 08421C 8008361C 8718F7C8 */ lh $t8, %lo(D_800DF7C8)($t8) +/* 08421C 8008361C 8718F7C8 */ lh $t8, %lo(D_800DF7C4+4)($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] and D_800DF7DC[2]. +/* 08422C 8008362C 3C01800E */ lui $at, %hi(D_800DF7DC+8) # $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, %lo(D_800DF7DC+8)($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) +/* 084240 80083640 3C03800E */ lui $v1, %hi(D_800DF7DC+0x18) # $v1, 0x800e +/* 084244 80083644 3C02800E */ lui $v0, %hi(D_800DF7C4+6) # $v0, 0x800e +/* 084248 80083648 3C05800E */ lui $a1, %hi(D_800DF7C4+22) # $a1, 0x800e +/* 08424C 8008364C 24A5F7DA */ addiu $a1, %lo(D_800DF7C4+22) # addiu $a1, $a1, -0x826 +/* 084250 80083650 2442F7CA */ addiu $v0, %lo(D_800DF7C4+6) # addiu $v0, $v0, -0x836 +/* 084254 80083654 2463F7F4 */ addiu $v1, %lo(D_800DF7DC+0x18) # addiu $v1, $v1, -0x80c +/* 084258 80083658 AC29F7EC */ sw $t1, %lo(D_800DF7DC+0x10)($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 233209cf..4e9fbf01 100644 --- a/asm/non_matchings/unknown_080500/MenuTitleScreenLoop.s +++ b/asm/non_matchings/unknown_080500/MenuTitleScreenLoop.s @@ -328,7 +328,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 @@ -351,7 +352,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_8008DC7C.s b/asm/non_matchings/unknown_080500/func_8008DC7C.s index 16aa02c3..d3330b66 100644 --- a/asm/non_matchings/unknown_080500/func_8008DC7C.s +++ b/asm/non_matchings/unknown_080500/func_8008DC7C.s @@ -41,13 +41,12 @@ glabel func_8008DC7C /* 08E910 8008DD10 3C068012 */ lui $a2, %hi(D_8012648C) # $a2, 0x8012 /* 08E914 8008DD14 24C6648C */ addiu $a2, %lo(D_8012648C) # addiu $a2, $a2, 0x648c /* 08E918 8008DD18 8CC90000 */ lw $t1, ($a2) -# This is accessing unk801264A0->unk1 -/* 08E91C 8008DD1C 3C0B8012 */ lui $t3, 0x8012 +/* 08E91C 8008DD1C 3C0B8012 */ lui $t3, %hi(D_801264A0+1) # $t3, 0x8012 /* 08E920 8008DD20 00095080 */ sll $t2, $t1, 2 /* 08E924 8008DD24 01495023 */ subu $t2, $t2, $t1 /* 08E928 8008DD28 000A5080 */ sll $t2, $t2, 2 /* 08E92C 8008DD2C 016A5821 */ addu $t3, $t3, $t2 -/* 08E930 8008DD30 916B64A1 */ lbu $t3, 0x64a1($t3) +/* 08E930 8008DD30 916B64A1 */ lbu $t3, %lo(D_801264A0+1)($t3) /* 08E934 8008DD34 00002825 */ move $a1, $zero /* 08E938 8008DD38 11600007 */ beqz $t3, .L8008DD58 /* 08E93C 8008DD3C 24040241 */ li $a0, 577 diff --git a/asm/non_matchings/unknown_080500/func_80094D28.s b/asm/non_matchings/unknown_080500/func_80094D28.s index 85f893c9..4ca535bf 100644 --- a/asm/non_matchings/unknown_080500/func_80094D28.s +++ b/asm/non_matchings/unknown_080500/func_80094D28.s @@ -174,9 +174,9 @@ glabel L80094DD0 /* 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 +/* 095B90 80094F90 3C01800E */ lui $at, %hi(D_800DF510+4*0x20+8) # $at, 0x800e /* 095B94 80094F94 E5880090 */ swc1 $f8, 0x90($t4) -/* 095B98 80094F98 C42AF598 */ lwc1 $f10, %lo(D_800DF598)($at) +/* 095B98 80094F98 C42AF598 */ lwc1 $f10, %lo(D_800DF510+4*0x20+8)($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 cf192211..01cd3e3a 100644 --- a/asm/non_matchings/unknown_080500/func_80095728.s +++ b/asm/non_matchings/unknown_080500/func_80095728.s @@ -214,10 +214,10 @@ glabel L80095964 /* 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 +/* 09662C 80095A2C 3C01800E */ lui $at, %hi(D_800DF510+4*0x20+8) # $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, %lo(D_800DF510+4*0x20+8)($at) /* 09663C 80095A3C 00000000 */ nop /* 096640 80095A40 E5C80088 */ swc1 $f8, 0x88($t6) /* 096644 80095A44 8FAF002C */ lw $t7, 0x2c($sp) diff --git a/include/unknown_001050.h b/include/unknown_001050.h new file mode 100644 index 00000000..87af4f37 --- /dev/null +++ b/include/unknown_001050.h @@ -0,0 +1,25 @@ +#ifndef _UNKNOWN_001050_H_ +#define _UNKNOWN_001050_H_ + +#include "types.h" +#include "audio_internal.h" + +extern ALCSPlayer* gMusicPlayer; +extern ALCSPlayer* gSndFxPlayer; +extern u8 musicRelativeVolume; +extern u8 sfxRelativeVolume; +extern u8 D_800DC640; +extern u8 D_800DC644; +extern s32 D_800DC648; +extern s32 audioPrevCount; +extern f32 D_800DC650; +extern s32 musicVolumeSliderPercentage; +extern s32 D_800DC658; +extern u8 D_800DC65C; +extern u8 D_800DC660; +extern s32 D_800DC664; +extern s32 D_800DC668; +extern s32 D_800DC66C; +extern u8 D_800DC670; + +#endif \ No newline at end of file diff --git a/include/unknown_003260.h b/include/unknown_003260.h new file mode 100644 index 00000000..c322fff9 --- /dev/null +++ b/include/unknown_003260.h @@ -0,0 +1,48 @@ +#ifndef _UNKNOWN_003260_H_ +#define _UNKNOWN_003260_H_ + +#include "types.h" +#include "audio_internal.h" + +typedef struct unk800DC6BC_40 { + ALLink node; + u8 pad0C[0x38]; +} unk800DC6BC_40; //ALSoundState + +/* Unknown Size */ +typedef struct unk800DC6BC { + ALPlayer node; + ALEventQueue evtq; + ALEvent nextEvent; + ALSynth *drvr; + u32 unk3C; + unk800DC6BC_40 *unk40; + s32 unk44; + s32 unk48; + s32 frameTime; + ALMicroTime nextDelta; + ALMicroTime curTime; +} unk800DC6BC; //ALSndPlayer + +extern s32 D_800DC680; +extern s32 D_800DC684; +extern s32 D_800DC688; +extern s32 D_800DC68C; +extern s32 D_800DC690; +extern s32 D_800DC694; +extern s32 D_800DC698; +extern s32 D_800DC69C; +extern s32 D_800DC6A0; +extern s32 D_800DC6A4; +extern s32 D_800DC6A8; +extern s32 D_800DC6AC; + +extern s32 D_800DC6B0; +extern s32 D_800DC6B4; +extern unk800DC6BC_40* D_800DC6B8; +extern unk800DC6BC* gAlSndPlayer; + +extern s32 sfxVolumeSlider; +extern s32 D_800DC6C4; + +#endif \ No newline at end of file diff --git a/include/unknown_005740.h b/include/unknown_005740.h new file mode 100644 index 00000000..98edf833 --- /dev/null +++ b/include/unknown_005740.h @@ -0,0 +1,12 @@ +#ifndef _UNKNOWN_005740_H_ +#define _UNKNOWN_005740_H_ + +#include "types.h" + +extern s8 D_800DC6D0; +extern s32 D_800DC6D4; +extern s32 D_800DC6D8; +extern s32 D_800DC6DC; +extern s32 D_800DC6E0; + +#endif \ No newline at end of file diff --git a/include/unknown_00BC20.h b/include/unknown_00BC20.h new file mode 100644 index 00000000..8c450d30 --- /dev/null +++ b/include/unknown_00BC20.h @@ -0,0 +1,65 @@ +#ifndef _UNKNOWN_00BC20_H_ +#define _UNKNOWN_00BC20_H_ + +#include "types.h" + +/* Size: 0x8 bytes */ +typedef struct unknown800DC6F0 { + union { + s8 unk00; + s32 dummy_force_alignment; // Not sure of a better way to do this. + }; + u16 unk04; + u16 unk06; +} unknown800DC6F0; + +extern unknown800DC6F0 D_800DC6F0; +extern unknown800DC6F0 D_800DC6F8; + +extern s32 D_800DC700; +extern s32 D_800DC704; +extern s16 D_800DC708; +extern s32 D_800DC70C; +extern s16 D_800DC710; +extern s32 D_800DC714; +extern s32 D_800DC718; +extern s8 D_800DC71C; +extern s32 D_800DC720; +extern s16 D_800DC724; +extern s16 D_800DC728; +extern s16 D_800DC72C; +extern u8 D_800DC730; +extern s32 D_800DC734; +extern u8 D_800DC738; +extern s8 D_800DC73C; +extern s8 D_800DC740; +extern s8 D_800DC744; +extern s8 D_800DC748; +extern s32 D_800DC74C; +extern s32 D_800DC750; +extern s32 D_800DC754; +extern s32 D_800DC758; +extern s32 D_800DC75C; +extern s32 D_800DC760; +extern s32 D_800DC764; +extern s32 D_800DC768; + +extern f32 D_800DC76C[15]; + +extern u16 D_800DC7A8[8]; + +extern s16 D_800DC7B8[52]; + +extern s16 D_800DC820[16]; + +extern s8 D_800DC840[8]; + +extern s8 D_800DC848; +extern s32 D_800DC84C[3]; +extern s32 D_800DC858; +extern s32 D_800DC85C; + +extern u8 D_800DC860; +extern u16 D_800DC864; + +#endif \ No newline at end of file diff --git a/include/unknown_0255E0.h b/include/unknown_0255E0.h new file mode 100644 index 00000000..21d9402c --- /dev/null +++ b/include/unknown_0255E0.h @@ -0,0 +1,82 @@ +#ifndef _UNKNOWN_0255E0_H_ +#define _UNKNOWN_0255E0_H_ + +#include "types.h" +#include "structs.h" + +/* Size: 0x8 bytes */ +typedef struct unknown800DC874 { + union { + s8 unk00; + s32 dummy_force_alignment; // Not sure of a better way to do this. + }; + u16 unk04; + s16 unk06; +} unknown800DC874; + +extern s32 D_800DC870; +extern unknown800DC874 D_800DC874; +extern unknown800DC874 D_800DC87C; + +extern f32 D_800DC884[10]; + +extern f32 D_800DC8AC[27]; + +typedef struct{ + u8 pad00[0x12]; + u16 unk12; + u16 unk14; +} unk800DC918_00_00; + +typedef struct{ + unk800DC918_00_00 *unk00; + u8 pad00[0x04]; +} unk800DC918_00; + +typedef struct{ + u8 unk00; + u8 pad01[0x05]; + u8 unk06; + u8 unk07; + u32 unk08; +} unk800DC918_04_0C; + +typedef struct{ + u8 pad00[0x0C]; + unk800DC918_04_0C* unk0C; + u8 pad0C[0x10]; + s16 unk20; + u8 pad22[0x09]; + s8 unk2B; + u8 pad2C[0x14]; + u8 unk40; + u8 pad41[0x3]; +} unk800DC918_04; + +typedef struct{ + s16 unk00; //sx + s16 unk02; //sy + s16 unk04; //sz + s16 unk06; //lx + s16 unk08; //ly + s16 unk0A; //lz +} unk800DC918_08; //bounding box + +typedef struct{ + unk800DC918_00 *unk00; + unk800DC918_04 *unk04; + unk800DC918_08 *unk08; + u8 pad0C[0x0E]; + s16 count; +} unk800DC918; + +extern unk800DC918* D_800DC918; +extern LevelHeader *D_800DC91C; + +extern s32 D_800DC920; +extern s32 D_800DC924; +extern s32 D_800DC928; + +extern s8 D_800DC92C[24]; + +#endif \ No newline at end of file diff --git a/include/unknown_032760.h b/include/unknown_032760.h new file mode 100644 index 00000000..71786036 --- /dev/null +++ b/include/unknown_032760.h @@ -0,0 +1,14 @@ +#ifndef _UNKNOWN_032760_H_ +#define _UNKNOWN_032760_H_ + +#include "types.h" + +extern s32 D_800DC950; +extern s32 D_800DC954; +extern s32 D_800DC958; +extern s32 D_800DC95C; +extern s32 D_800DC960; +extern s32 D_800DC964; +extern s32 D_800DC968; + +#endif \ No newline at end of file diff --git a/include/unknown_0348C0.h b/include/unknown_0348C0.h new file mode 100644 index 00000000..8851df86 --- /dev/null +++ b/include/unknown_0348C0.h @@ -0,0 +1,23 @@ +#ifndef _UNKNOWN_0348C0_H_ +#define _UNKNOWN_0348C0_H_ + +#include "types.h" + +// Unsure about the signed/unsigned with these arrays. +extern u16 D_800DC970[4]; +extern u16 D_800DC978[4]; +extern u16 D_800DC980[20]; +extern u16 D_800DC9A8[20]; +extern u16 D_800DC9D0[64]; +extern s8 D_800DCA50[8]; +extern u8 D_800DCA58[9]; +extern s8 D_800DCA64[9]; +extern s8 D_800DCA70[10]; +extern s32 D_800DCA7C[3]; +extern s32 D_800DCA88[3]; +extern s8 D_800DCA94[8]; +extern s8 D_800DCA9C[12]; +extern u16 D_800DCAA8[64]; +extern u16 D_800DCB28[20]; + +#endif \ No newline at end of file diff --git a/include/unknown_043920.h b/include/unknown_043920.h new file mode 100644 index 00000000..a6f5bc06 --- /dev/null +++ b/include/unknown_043920.h @@ -0,0 +1,46 @@ +#ifndef _UNKNOWN_043920_H_ +#define _UNKNOWN_043920_H_ + +#include "types.h" + +extern s32 D_800DCB50; +extern s16 D_800DCB54; +extern s32 D_800DCB58; +extern s32 D_800DCB5C; + +// Not sure if D_800DCB58 & D_800DCB5C are actually a part of this array. +extern f32 D_800DCB60[14]; + +extern s32 D_800DCB98; +extern f32 D_800DCB9C[19]; + +extern f32 D_800DCBE8[19]; + +// Unused? Not sure if this is actually an array or just some random data. +extern s32 D_800DCC34[19]; + +extern s32 D_800DCC80[19]; + +extern u16 D_800DCCCC[20]; + +// Used for some sort of bit mask +extern s32 D_800DCCF4[19]; + +// Used for some sort of bit mask +extern s32 D_800DCD40[20]; + +extern s8 D_800DCD90[15]; + +// Unused? +extern s8 D_800DCDA0[8]; + +extern s8 D_800DCDA8[8]; + +// Unused? +extern s16 D_800DCDB0[16]; + +extern s32 D_800DCDD0; + +extern s16 D_800DCDD4[4]; + +#endif \ No newline at end of file diff --git a/include/unknown_05CEF0.h b/include/unknown_05CEF0.h new file mode 100644 index 00000000..5588c183 --- /dev/null +++ b/include/unknown_05CEF0.h @@ -0,0 +1,8 @@ +#ifndef _UNKNOWN_05CEF0_H_ +#define _UNKNOWN_05CEF0_H_ + +#include "types.h" + +extern s16 D_800DCDE0[16]; + +#endif \ No newline at end of file diff --git a/include/unknown_05DCD0.h b/include/unknown_05DCD0.h new file mode 100644 index 00000000..faa71f5f --- /dev/null +++ b/include/unknown_05DCD0.h @@ -0,0 +1,9 @@ +#ifndef _UNKNOWN_05DCD0_H_ +#define _UNKNOWN_05DCD0_H_ + +#include "types.h" + +extern s16 D_800DCE00[16]; +extern s16 D_800DCE20[16]; + +#endif \ No newline at end of file diff --git a/include/unknown_05F0C0.h b/include/unknown_05F0C0.h new file mode 100644 index 00000000..c1913d7c --- /dev/null +++ b/include/unknown_05F0C0.h @@ -0,0 +1,8 @@ +#ifndef _UNKNOWN_05F0C0_H_ +#define _UNKNOWN_05F0C0_H_ + +#include "types.h" + +extern s16 D_800DCE40[16]; + +#endif \ No newline at end of file diff --git a/include/unknown_05F690.h b/include/unknown_05F690.h new file mode 100644 index 00000000..9b0d4e8c --- /dev/null +++ b/include/unknown_05F690.h @@ -0,0 +1,8 @@ +#ifndef _UNKNOWN_05F690_H_ +#define _UNKNOWN_05F690_H_ + +#include "types.h" + +extern s16 D_800DCE60[14]; + +#endif \ No newline at end of file diff --git a/include/unknown_05FF10.h b/include/unknown_05FF10.h new file mode 100644 index 00000000..3b36db7c --- /dev/null +++ b/include/unknown_05FF10.h @@ -0,0 +1,8 @@ +#ifndef _UNKNOWN_05FF10_H_ +#define _UNKNOWN_05FF10_H_ + +#include "types.h" + +extern s16 D_800DCE80[14]; + +#endif \ No newline at end of file diff --git a/include/unknown_060450.h b/include/unknown_060450.h new file mode 100644 index 00000000..f3f9f294 --- /dev/null +++ b/include/unknown_060450.h @@ -0,0 +1,9 @@ +#ifndef _UNKNOWN_060450_H_ +#define _UNKNOWN_060450_H_ + +#include "types.h" + +extern s32 D_800DCEA0; +extern s32 D_800DCEA4; + +#endif \ No newline at end of file diff --git a/include/unknown_061D30.h b/include/unknown_061D30.h new file mode 100644 index 00000000..935df3f2 --- /dev/null +++ b/include/unknown_061D30.h @@ -0,0 +1,4 @@ +#ifndef _UNKNOWN_061D30_H_ +#define _UNKNOWN_061D30_H_ + +#endif \ No newline at end of file diff --git a/include/unknown_064690.h b/include/unknown_064690.h new file mode 100644 index 00000000..0477abc7 --- /dev/null +++ b/include/unknown_064690.h @@ -0,0 +1,4 @@ +#ifndef _UNKNOWN_064690_H_ +#define _UNKNOWN_064690_H_ + +#endif \ No newline at end of file diff --git a/include/unknown_0646F0.h b/include/unknown_0646F0.h new file mode 100644 index 00000000..98b804d7 --- /dev/null +++ b/include/unknown_0646F0.h @@ -0,0 +1,4 @@ +#ifndef _UNKNOWN_0646F0_H_ +#define _UNKNOWN_0646F0_H_ + +#endif \ No newline at end of file diff --git a/include/unknown_0647A0.h b/include/unknown_0647A0.h new file mode 100644 index 00000000..612b7f25 --- /dev/null +++ b/include/unknown_0647A0.h @@ -0,0 +1,4 @@ +#ifndef _UNKNOWN_0647A0_H_ +#define _UNKNOWN_0647A0_H_ + +#endif \ No newline at end of file diff --git a/include/unknown_064800.h b/include/unknown_064800.h new file mode 100644 index 00000000..96e628b1 --- /dev/null +++ b/include/unknown_064800.h @@ -0,0 +1,4 @@ +#ifndef _UNKNOWN_064800_H_ +#define _UNKNOWN_064800_H_ + +#endif \ No newline at end of file diff --git a/include/unknown_064830.h b/include/unknown_064830.h new file mode 100644 index 00000000..8fc2ba1d --- /dev/null +++ b/include/unknown_064830.h @@ -0,0 +1,29 @@ +#ifndef _UNKNOWN_064830_H_ +#define _UNKNOWN_064830_H_ + +#include "types.h" + +extern s8 D_800DCEB0; +extern s32 D_800DCEB4; +extern s32 D_800DCEB8; +extern s32 D_800DCEBC; + +// TODO: Figure out what this actually is. +extern s32 D_800DCEC0[26]; + +// TODO: Figure out what this actually is. +extern s32 D_800DCF28[34]; + +// TODO: Figure out what this actually is. +extern s32 D_800DCFB0[10]; + +// TODO: Figure out what this actually is. +extern s32 D_800DCFD8[10]; + +// TODO: Figure out what this actually is. +extern s32 D_800DD000[10]; + +// TODO: Figure out what this actually is. +extern s32 D_800DD028[10]; + +#endif \ No newline at end of file diff --git a/include/unknown_065D30.h b/include/unknown_065D30.h new file mode 100644 index 00000000..727dccc7 --- /dev/null +++ b/include/unknown_065D30.h @@ -0,0 +1,4 @@ +#ifndef _UNKNOWN_065D30_H_ +#define _UNKNOWN_065D30_H_ + +#endif \ No newline at end of file diff --git a/include/unknown_066460.h b/include/unknown_066460.h new file mode 100644 index 00000000..582be8b7 --- /dev/null +++ b/include/unknown_066460.h @@ -0,0 +1,4 @@ +#ifndef _UNKNOWN_066460_H_ +#define _UNKNOWN_066460_H_ + +#endif \ No newline at end of file diff --git a/include/unknown_066500.h b/include/unknown_066500.h new file mode 100644 index 00000000..1110dd65 --- /dev/null +++ b/include/unknown_066500.h @@ -0,0 +1,4 @@ +#ifndef _UNKNOWN_066500_H_ +#define _UNKNOWN_066500_H_ + +#endif \ No newline at end of file diff --git a/include/unknown_0667D0.h b/include/unknown_0667D0.h new file mode 100644 index 00000000..0eb70020 --- /dev/null +++ b/include/unknown_0667D0.h @@ -0,0 +1,8 @@ +#ifndef _UNKNOWN_066500_H_ +#define _UNKNOWN_066500_H_ + +#include "types.h" + +extern s16 D_800DD050; + +#endif \ No newline at end of file diff --git a/include/unknown_066AA0.h b/include/unknown_066AA0.h new file mode 100644 index 00000000..af6b0e74 --- /dev/null +++ b/include/unknown_066AA0.h @@ -0,0 +1,47 @@ +#ifndef _UNKNOWN_066AA0_H_ +#define _UNKNOWN_066AA0_H_ + +#include "types.h" + +extern s32 D_800DD060; + +/* Size: 0x34 bytes. */ +typedef struct unk800DD064 { + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + s32 unk10; + s32 unk14; + s32 unk18; + s32 unk1C; + s32 unk20; + s32 unk24; + s32 unk28; + s32 unk2C; + s32 unk30; +} unk800DD064; + +extern unk800DD064 D_800DD064[4]; + +// Not sure about the typing here +extern s16 D_800DD134[10]; + +// Not sure about the typing here +extern u16 D_800DD148[160]; + +extern f32 D_800DD288[6]; + +extern f32 D_800DD2A0[6]; + +extern f32 D_800DD2B8[5]; + +extern f32 D_800DD2CC[11]; + +extern u8 D_800DD2F8[8]; + +extern s32 D_800DD300; + +extern s16 D_800DD304; + +#endif \ No newline at end of file diff --git a/include/unknown_06B2B0.h b/include/unknown_06B2B0.h new file mode 100644 index 00000000..3f9e3881 --- /dev/null +++ b/include/unknown_06B2B0.h @@ -0,0 +1,69 @@ +#ifndef _UNKNOWN_06B2B0_H_ +#define _UNKNOWN_06B2B0_H_ + +#include "types.h" + +extern s8 D_800DD310; +extern s8 D_800DD314; +extern s8 D_800DD318; +extern s32 D_800DD31C; +extern s32 D_800DD320; +extern s32 D_800DD324; +extern s16 D_800DD328; +extern s16 D_800DD32C; + +extern s8 D_800DD330; + +// Unused? +extern char *D_800DD334[6]; + +// Unused? +extern char gBuildString[40]; + +extern s8 D_800DD374; +extern s32 D_800DD378; +extern s32 D_800DD37C; +extern s32 D_800DD380; +extern s32 D_800DD384; +extern s32 D_800DD388; +extern s8 D_800DD38C; +extern u8 D_800DD390; +extern s16 D_800DD394; +extern u8 D_800DD398; +extern s32 D_800DD39C; +extern s8 D_800DD3A0; +extern s32 D_800DD3A4; +extern s32 D_800DD3A8; +extern s32 D_800DD3AC; +extern s32 D_800DD3B0; +extern s32 D_800DD3B4; +extern s32 D_800DD3B8; +extern s32 D_800DD3BC; +extern s32 D_800DD3C0; +extern s32 D_800DD3C4; +extern s32 D_800DD3C8; +extern s32 D_800DD3CC; +extern s32 D_800DD3D0; +extern s32 D_800DD3D4; +extern s32 D_800DD3D8; +extern s32 D_800DD3DC; +extern s32 D_800DD3E0; +extern s32 D_800DD3E4; +extern s32 D_800DD3E8; +extern s32 D_800DD3EC; + +extern s8 D_800DD3F0; +extern s16 D_800DD3F4[8]; +extern s32 D_800DD404; +extern s32 D_800DD408; +extern s32 D_800DD40C; + +// Unused? +extern char *D_800DD410[3]; + +// Not sure if this is an array or a struct. +extern s32 D_800DD41C[2]; + +extern s32 D_800DD424[2]; + +#endif \ No newline at end of file diff --git a/include/unknown_071730.h b/include/unknown_071730.h new file mode 100644 index 00000000..876ec5d4 --- /dev/null +++ b/include/unknown_071730.h @@ -0,0 +1,4 @@ +#ifndef _UNKNOWN_071730_H_ +#define _UNKNOWN_071730_H_ + +#endif \ No newline at end of file diff --git a/include/unknown_072E50.h b/include/unknown_072E50.h new file mode 100644 index 00000000..d0115848 --- /dev/null +++ b/include/unknown_072E50.h @@ -0,0 +1,11 @@ +#ifndef _UNKNOWN_072E50_H_ +#define _UNKNOWN_072E50_H_ + +#include "types.h" + +extern s32 D_800DE440; +extern char D_800DE444[68]; +extern s32 D_800DE488; +extern s32 D_800DE48C; + +#endif diff --git a/include/unknown_0777A0.h b/include/unknown_0777A0.h new file mode 100644 index 00000000..142c49f5 --- /dev/null +++ b/include/unknown_0777A0.h @@ -0,0 +1,4 @@ +#ifndef _UNKNOWN_0777A0_H_ +#define _UNKNOWN_0777A0_H_ + +#endif diff --git a/include/unknown_077C50.h b/include/unknown_077C50.h new file mode 100644 index 00000000..1bde59c4 --- /dev/null +++ b/include/unknown_077C50.h @@ -0,0 +1,4 @@ +#ifndef _UNKNOWN_077C50_H_ +#define _UNKNOWN_077C50_H_ + +#endif diff --git a/include/unknown_078050.h b/include/unknown_078050.h new file mode 100644 index 00000000..f7849ae9 --- /dev/null +++ b/include/unknown_078050.h @@ -0,0 +1,47 @@ +#ifndef _UNKNOWN_078050_H_ +#define _UNKNOWN_078050_H_ + +#include "types.h" + +extern s16 D_800DE490[16]; + +extern u8 D_800DE4B0; +extern u8 D_800DE4B4; +extern u8 D_800DE4B8; +extern s32 D_800DE4BC; + +extern u32 D_800DE4C0; +extern u32 D_800DE4C4; +extern u32 D_800DE4C8; +extern s32 D_800DE4CC; + +extern u32 D_800DE4D0; +extern s32 D_800DE4D4; +extern s32 D_800DE4D8; +extern s32 D_800DE4DC; + +// Fast3D (F3DDKR) display list +extern u32 D_800DE4E0[]; + +// Fast3D (F3DDKR) display list +extern u32 D_800DE520[]; + +// Fast3D (F3DDKR) display list +extern u32 D_800DE598[]; + +// Fast3D (F3DDKR) display list +extern u32 D_800DE5E0[]; + +// Fast3D (F3DDKR) display list +extern u32 D_800DE628[]; + +// Fast3D (F3DDKR) display list +extern u32 D_800DE670[]; + +// Fast3D (F3DDKR) display list +extern u32 D_800DE6A8[]; + +// Fast3D (F3DDKR) display list +extern u32 D_800DE6E8[]; + +#endif diff --git a/include/unknown_079F50.h b/include/unknown_079F50.h new file mode 100644 index 00000000..32ed2261 --- /dev/null +++ b/include/unknown_079F50.h @@ -0,0 +1,23 @@ +#ifndef _UNKNOWN_079F50_H_ +#define _UNKNOWN_079F50_H_ + +#include "types.h" + +// Unsure about if this is an array or struct. +extern s32 D_800DE730[]; +extern s32 D_800DE738[]; + +extern s32 D_800DE740; +extern s32 D_800DE744; +extern s32 D_800DE748; +extern s32 D_800DE74C; + +extern s32 D_800DE750; +extern u32 D_800DE754; +extern u32 D_800DE758; +extern s32 D_800DE75C; + +extern s32 D_800DE760; +extern s32 D_800DE764; + +#endif diff --git a/include/unknown_07AF10.h b/include/unknown_07AF10.h new file mode 100644 index 00000000..3f8d3e56 --- /dev/null +++ b/include/unknown_07AF10.h @@ -0,0 +1,20 @@ +#ifndef _UNKNOWN_07AF10_H_ +#define _UNKNOWN_07AF10_H_ + +#include "types.h" + +extern s32 D_800DE770; +extern s32 D_800DE774; +extern s8 D_800DE778; + +/* Size: 0x08 bytes */ +typedef struct unk800DE77C { + /* 0x00 */ s32 width; + /* 0x04 */ s32 height; +} unk800DE77C; + +extern unk800DE77C D_800DE77C[8]; + +extern s32 D_800DE7BC; + +#endif diff --git a/include/unknown_07B870.h b/include/unknown_07B870.h new file mode 100644 index 00000000..cfb641ba --- /dev/null +++ b/include/unknown_07B870.h @@ -0,0 +1,51 @@ +#ifndef _UNKNOWN_07B870_H_ +#define _UNKNOWN_07B870_H_ + +#include "types.h" + +extern u32 D_800DE7C0; +extern s32 D_800DE7C4; + +// Fast3D (F3DDKR) display list +extern u32 D_800DE7C8[]; + +// Fast3D (F3DDKR) display list +extern u32 D_800DE848[]; + +// Fast3D (F3DDKR) display list +extern u32 D_800DE868[]; + +// Fast3D (F3DDKR) display list +extern u32 D_800DE8E8[]; + +// Fast3D (F3DDKR) display list +extern u32 D_800DECE8[]; + +// Fast3D (F3DDKR) display list +extern u32 D_800DEDE8[]; + +// Fast3D (F3DDKR) display list +extern u32 D_800DEEE8[]; + +// Fast3D (F3DDKR) display list +extern u32 D_800DEF28[]; + +// Fast3D (F3DDKR) display list +extern u32 D_800DF028[]; + +// Fast3D (F3DDKR) display list +extern u32 D_800DF0A8[]; + +// Fast3D (F3DDKR) display list +extern u32 D_800DF1A8[]; + +// Fast3D (F3DDKR) display list +extern u32 D_800DF3A8[]; + +// Fast3D (F3DDKR) display list +extern u32 D_800DF3D8[]; + +// Fast3D (F3DDKR) display list +extern u32 D_800DF410[]; + +#endif diff --git a/include/unknown_080240.h b/include/unknown_080240.h new file mode 100644 index 00000000..a3e0cfe4 --- /dev/null +++ b/include/unknown_080240.h @@ -0,0 +1,9 @@ +#ifndef _UNKNOWN_080240_H_ +#define _UNKNOWN_080240_H_ + +#include "fast3d.h" + +// Fast3D (F3DDKR) display list +Gfx D_800DF440[]; + +#endif diff --git a/include/unknown_080500.h b/include/unknown_080500.h new file mode 100644 index 00000000..3b759e76 --- /dev/null +++ b/include/unknown_080500.h @@ -0,0 +1,551 @@ +#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 { + char* unk0; // Pointer to ascii text. + f32 unk4; + f32 unk8; + f32 unkC; + f32 unk10; + f32 unk14; + f32 unk18; + f32 unk1C; + f32 unk20; + f32 unk24; + f32 unk28; +} unk800DF83C; + +// Title screen cinematic text +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 f32* 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_001050.c b/src/unknown_001050.c index 6c4e397e..87fffbdb 100644 --- a/src/unknown_001050.c +++ b/src/unknown_001050.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80000450 */ +#include "unknown_001050.h" + #include "types.h" #include "macros.h" diff --git a/src/unknown_003260.c b/src/unknown_003260.c index 9df9b310..8237bcb2 100644 --- a/src/unknown_003260.c +++ b/src/unknown_003260.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80002660 */ +#include "unknown_003260.h" + #include "types.h" #include "macros.h" #include "audio_internal.h" @@ -19,11 +21,6 @@ extern void func_80002A98(void*); extern u32 D_80003008; -typedef struct unk800DC6BC_40 { - ALLink node; - u8 pad0C[0x38]; -} unk800DC6BC_40; //ALSoundState - typedef union { ALEvent msg; @@ -35,21 +32,6 @@ typedef union { }ALSndpEvent; -/* Unknown Size */ -typedef struct unk800DC6BC { - ALPlayer node; - ALEventQueue evtq; - ALEvent nextEvent; - ALSynth *drvr; - u32 unk3C; - unk800DC6BC_40 *unk40; - s32 unk44; - s32 unk48; - s32 frameTime; - ALMicroTime nextDelta; - ALMicroTime curTime; -} unk800DC6BC; //ALSndPlayer - typedef struct unk80119240 { ALLink node; diff --git a/src/unknown_005740.c b/src/unknown_005740.c index 822e6f36..39c65d26 100644 --- a/src/unknown_005740.c +++ b/src/unknown_005740.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80004B40 */ +#include "unknown_005740.h" + #include "types.h" #include "macros.h" diff --git a/src/unknown_00BC20.c b/src/unknown_00BC20.c index 8546900e..9d97311e 100644 --- a/src/unknown_00BC20.c +++ b/src/unknown_00BC20.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x8000B020 */ +#include "unknown_00BC20.h" + #include "types.h" #include "macros.h" #include "structs.h" @@ -9,16 +11,6 @@ /************ .data ************/ -/* Size: 0x8 bytes */ -typedef struct unknown800DC6F0 { - union { - s8 unk00; - s32 dummy_force_alignment; // Not sure of a better way to do this. - }; - u16 unk04; - u16 unk06; -} unknown800DC6F0; - unknown800DC6F0 D_800DC6F0 = { -128, 0x1E, 0x0F }; unknown800DC6F0 D_800DC6F8 = { 3, 0x1E, 0x0F }; diff --git a/src/unknown_0255E0.c b/src/unknown_0255E0.c index efbade6a..da9989e8 100644 --- a/src/unknown_0255E0.c +++ b/src/unknown_0255E0.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x800249E0 */ +#include "unknown_0255E0.h" + #include "types.h" #include "macros.h" #include "structs.h" @@ -31,16 +33,6 @@ typedef struct unk80120AC0 { /************ .data ************/ -/* Size: 0x8 bytes */ -typedef struct unknown800DC874 { - union { - s8 unk00; - s32 dummy_force_alignment; // Not sure of a better way to do this. - }; - u16 unk04; - s16 unk06; -} unknown800DC874; - s32 D_800DC870 = 0; // Currently unknown, might be a different type. unknown800DC874 D_800DC874 = { -128, 40, -1 }; unknown800DC874 D_800DC87C = { -125, 70, -1 }; @@ -60,54 +52,6 @@ f32 D_800DC8AC[27] = { -130.0f, 60.0f, -68.0f }; -typedef struct{ - u8 pad00[0x12]; - u16 unk12; - u16 unk14; -} unk800DC918_00_00; - -typedef struct{ - unk800DC918_00_00 *unk00; - u8 pad00[0x04]; -} unk800DC918_00; - -typedef struct{ - u8 unk00; - u8 pad01[0x05]; - u8 unk06; - u8 unk07; - u32 unk08; -} unk800DC918_04_0C; - -typedef struct{ - u8 pad00[0x0C]; - unk800DC918_04_0C* unk0C; - u8 pad0C[0x10]; - s16 unk20; - u8 pad22[0x09]; - s8 unk2B; - u8 pad2C[0x14]; - u8 unk40; - u8 pad41[0x3]; -} unk800DC918_04; - -typedef struct{ - s16 unk00; //sx - s16 unk02; //sy - s16 unk04; //sz - s16 unk06; //lx - s16 unk08; //ly - s16 unk0A; //lz -} unk800DC918_08; //bounding box - -typedef struct{ - unk800DC918_00 *unk00; - unk800DC918_04 *unk04; - unk800DC918_08 *unk08; - u8 pad0C[0x0E]; - s16 count; -} unk800DC918; - unk800DC918* D_800DC918 = NULL; LevelHeader *D_800DC91C = NULL; diff --git a/src/unknown_032760.c b/src/unknown_032760.c index 41d60444..d08659d5 100644 --- a/src/unknown_032760.c +++ b/src/unknown_032760.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80031B60 */ +#include "unknown_032760.h" + #include "types.h" #include "macros.h" #include "structs.h" diff --git a/src/unknown_0348C0.c b/src/unknown_0348C0.c index 198edacc..4bc02caa 100644 --- a/src/unknown_0348C0.c +++ b/src/unknown_0348C0.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80033CC0 */ +#include "unknown_0348C0.h" + #include "types.h" #include "macros.h" #include "structs.h" @@ -64,11 +66,11 @@ s32 D_800DCA7C[3] = { // Not sure about typing s32 D_800DCA88[3] = { // Not sure about typing 0, 0, 0 }; -s8 D_800DCA94[16] = { - 0x00, 0x00, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00 +s8 D_800DCA94[8] = { + 0x00, 0x00, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00 }; -s8 D_800DCA9C[4] = { +s8 D_800DCA9C[12] = { + 0x00, 0x01, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; u16 D_800DCAA8[64] = { diff --git a/src/unknown_043920.c b/src/unknown_043920.c index f7f6559e..181e6a64 100644 --- a/src/unknown_043920.c +++ b/src/unknown_043920.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80042D20 */ +#include "unknown_043920.h" + #include "types.h" #include "macros.h" #include "structs.h" @@ -51,36 +53,26 @@ s32 D_800DCC80[19] = { 0, 0, 0 }; -// Unused? -s16 D_800DCCB4[6] = { +u16 D_800DCCCC[20] = { 0x010C, 0x010B, 0x0009, 0x010C, - 0x010C, 0x010C -}; - -u16 D_800DCCCC[14] = { 0x010C, 0x010C, 0x010C, 0x010C, - 0x010C, 0x0005, 0x010C, 0x010C, + 0x010C, 0x010C, 0x010C, 0x0005, 0x010C, 0x010C, 0x010C, 0x010C, - 0x010C, 0x0000 -}; - -// Unused? Not sure if this is actually an array or just some random data. -s32 D_800DCCDC[2] = { - 1, 4 + 0x010C, 0x010C, 0x010C, 0x0000 }; // Used for some sort of bit mask s32 D_800DCCF4[19] = { - 16, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0x100, 1, 1, 1, 1, - 1, 0, 4 + 1, 4, 16, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0x100, 1, 1, + 1, 1, 1 }; // Used for some sort of bit mask -s32 D_800DCD40[18] = { - 16, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0x100, 0, 0, 0, 0, - 0, 0 +s32 D_800DCD40[20] = { + 0, 4, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0x100, 0, 0, + 0, 0, 0, 0 }; s8 D_800DCD90[15] = { diff --git a/src/unknown_05CEF0.c b/src/unknown_05CEF0.c index d9f998b9..35d56ac7 100644 --- a/src/unknown_05CEF0.c +++ b/src/unknown_05CEF0.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x8005C2F0 */ +#include "unknown_05CEF0.h" + #include "types.h" #include "macros.h" diff --git a/src/unknown_05DCD0.c b/src/unknown_05DCD0.c index 64c60118..8a9bc51d 100644 --- a/src/unknown_05DCD0.c +++ b/src/unknown_05DCD0.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x8005D0D0 */ +#include "unknown_05DCD0.h" + #include "types.h" #include "macros.h" diff --git a/src/unknown_05F0C0.c b/src/unknown_05F0C0.c index 09ce122c..65b25ea5 100644 --- a/src/unknown_05F0C0.c +++ b/src/unknown_05F0C0.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x8005E4C0 */ +#include "unknown_05F0C0.h" + #include "types.h" #include "macros.h" diff --git a/src/unknown_05F690.c b/src/unknown_05F690.c index 89ef6864..91dfbb81 100644 --- a/src/unknown_05F690.c +++ b/src/unknown_05F690.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x8005EA90 */ +#include "unknown_05F690.h" + #include "types.h" #include "macros.h" diff --git a/src/unknown_05FF10.c b/src/unknown_05FF10.c index 27129541..679bd6d1 100644 --- a/src/unknown_05FF10.c +++ b/src/unknown_05FF10.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x8005F310 */ +#include "unknown_05FF10.h" + #include "types.h" #include "macros.h" diff --git a/src/unknown_061D30.c b/src/unknown_061D30.c index c4cf8bdc..eb172ba6 100644 --- a/src/unknown_061D30.c +++ b/src/unknown_061D30.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80062290 */ +#include "unknown_061D30.h" + #include "types.h" #include "macros.h" diff --git a/src/unknown_064690.c b/src/unknown_064690.c index f7fcb336..b5e3a0f9 100644 --- a/src/unknown_064690.c +++ b/src/unknown_064690.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80063A90 */ +#include "unknown_064690.h" + #include "types.h" #include "macros.h" diff --git a/src/unknown_0646F0.c b/src/unknown_0646F0.c index f3a41dc8..cc9fe5a1 100644 --- a/src/unknown_0646F0.c +++ b/src/unknown_0646F0.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80063AF0 */ +#include "unknown_0646F0.h" + #include "types.h" #include "macros.h" diff --git a/src/unknown_0647A0.c b/src/unknown_0647A0.c index 6fc01d22..76c8aa95 100644 --- a/src/unknown_0647A0.c +++ b/src/unknown_0647A0.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80063BA0 */ +#include "unknown_0647A0.h" + #include "types.h" #include "macros.h" diff --git a/src/unknown_064800.c b/src/unknown_064800.c index 45a5a1ab..78a630af 100644 --- a/src/unknown_064800.c +++ b/src/unknown_064800.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80063C00 */ +#include "unknown_064800.h" + #include "types.h" #include "macros.h" #include "audio_internal.h" diff --git a/src/unknown_064830.c b/src/unknown_064830.c index 42821e13..9ac418ef 100644 --- a/src/unknown_064830.c +++ b/src/unknown_064830.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80063C30 */ +#include "unknown_064830.h" + #include "types.h" #include "macros.h" #include "libultra_internal.h" diff --git a/src/unknown_065D30.c b/src/unknown_065D30.c index 7d56eca1..1dae06ef 100644 --- a/src/unknown_065D30.c +++ b/src/unknown_065D30.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80065130 */ +#include "unknown_065D30.h" + #include "types.h" #include "macros.h" diff --git a/src/unknown_066460.c b/src/unknown_066460.c index 36791087..d072d9cf 100644 --- a/src/unknown_066460.c +++ b/src/unknown_066460.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80065860 */ +#include "unknown_066460.h" + #include "types.h" #include "macros.h" #include "audio_internal.h" diff --git a/src/unknown_066500.c b/src/unknown_066500.c index a604123d..b111b92a 100644 --- a/src/unknown_066500.c +++ b/src/unknown_066500.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80065900 */ +#include "unknown_066500.h" + #include "types.h" #include "macros.h" diff --git a/src/unknown_0667D0.c b/src/unknown_0667D0.c index 799b38e4..88553fa0 100644 --- a/src/unknown_0667D0.c +++ b/src/unknown_0667D0.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80065BD0 */ +#include "unknown_0667D0.h" + #include "types.h" #include "macros.h" diff --git a/src/unknown_066AA0.c b/src/unknown_066AA0.c index efec9482..9e6845bb 100644 --- a/src/unknown_066AA0.c +++ b/src/unknown_066AA0.c @@ -1,956 +1,956 @@ -/* The comment below is needed for this file to be picked up by generate_ld */ -/* RAM_POS: 0x80065EA0 */ - -#include "types.h" -#include "macros.h" -#include "structs.h" -#include "fast3d.h" - -extern u32 osTvType; - -/************ .rodata ************/ - -const char D_800E6F00[] = "Camera Error: Illegal mode!\n"; -const char D_800E6F20[] = "Camera Error: Illegal player no!\n"; -const char D_800E6F34[] = "cameraPushSprMtx: model stack overflow!!\n"; -const char D_800E6F70[] = "\nCam do 2D sprite called with NULL pointer!"; -const char D_800E6F9C[] = "CamDo2DSprite FrameNo Overflow !!!\n"; -const char D_800E6FC0[] = "cameraPushModelMtx: model stack overflow!!\n"; -const char D_800E6FEC[] = "camPushModelMtx: bsp stack overflow!!\n"; -const char D_800E7010[] = "camPopModelMtx: model stack negative overflow!!\n"; -const char D_800E7048[] = "camPopModelMtx: bsp stack negative overflow!!\n"; - -/*********************************/ - -/************ .data ************/ - -s32 D_800DD060 = 0; // Currently unknown, might be a different type. - -/* Size: 0x34 bytes. */ -typedef struct unk800DD064 { - s32 unk0; - s32 unk4; - s32 unk8; - s32 unkC; - s32 unk10; - s32 unk14; - s32 unk18; - s32 unk1C; - s32 unk20; - s32 unk24; - s32 unk28; - s32 unk2C; - s32 unk30; -} unk800DD064; - -unk800DD064 D_800DD064[4] = { - { - 0x00, 0x00, 0x140, 0xF0, - 0xA0, 0x78, 0x140, 0xF0, - 0x00, 0x00, 0x13F, 0xEF, 0x00 - }, - { - 0x00, 0x00, 0x140, 0xF0, - 0xA0, 0x78, 0x140, 0xF0, - 0x00, 0x00, 0x13F, 0xEF, 0x00 - }, - { - 0x00, 0x00, 0x140, 0xF0, - 0xA0, 0x78, 0x140, 0xF0, - 0x00, 0x00, 0x13F, 0xEF, 0x00 - }, - { - 0x00, 0x00, 0x140, 0xF0, - 0xA0, 0x78, 0x140, 0xF0, - 0x00, 0x00, 0x13F, 0xEF, 0x00 - } -}; - -// Not sure about the typing here -s16 D_800DD134[10] = { - 0, 0, 0, 0, - 0, -1, -1, 0, - 0, 0 -}; - -// Not sure about the typing here -u16 D_800DD148[160] = { - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0, - 0, 0, 0x01FF, 0 -}; - -f32 D_800DD288[6] = { - 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, -281.0f -}; - -f32 D_800DD2A0[6] = { - 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f -}; - -f32 D_800DD2B8[5] = { - 1.0f, 0.0f, 0.0f, 0.0f, 0.0f -}; - -f32 D_800DD2CC[11] = { - 1.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 160.0f -}; - -u8 D_800DD2F8[8] = { - 0, 0, 0, 0, 0, 0, 0, 0 -}; - -s32 D_800DD300 = 0; // Currently unknown, might be a different type. - -s16 D_800DD304 = -1; - -/*******************************/ - -/* Size: 0x44 bytes */ -typedef struct unk80120AC0 { - s16 unk0; - s16 unk2; - s16 unk4; - u8 pad6[6]; - f32 x_position; - f32 y_position; - f32 z_position; - f32 pad18; - f32 unk1C; - f32 pad20; - f32 unk24; - f32 unk28; - f32 unk2C; - f32 unk30; - s16 unk34; - s16 pad36; - s16 unk38; - s8 pad3A; - s8 unk3B; - u8 pad3C[8]; -} unk80120AC0; - -extern unk80120AC0 D_80120AC0[4]; // Unknown number of entries. -extern unk80120AC0 D_80120AFB[4]; // Unknown number of entries. -extern unk80120AC0 D_80120BD0[4]; // Unknown number of entries. -extern s32 D_80120CE0; -extern s32 D_80120CE4; -extern s32 D_80120CE8; -extern s32 D_80120D08; -extern s32 D_80120D0C; -extern f32 D_80120D10; -extern s8 D_80120D14; -extern u8 D_80120D15; -extern s32 D_80120D18; -extern s32 D_80120D1C; -extern s32 D_80120D6C; -extern s32 D_80120D70[6]; -extern s32 D_80120D88[6]; // Unknown number of entries. -extern s32 D_80120EE0; -extern s32 D_80120F20; -extern s32 D_80120F60; -extern s32 D_80120FE0; -extern s32 D_80120FA0; -extern s32 D_80121060; -extern s32 D_801210A0; -extern s32 D_801210E0; - -/* Size: 5 bytes */ -typedef struct unk80121110 { - u16 unk0; - s8 unk2; - s8 unk3; - s8 unk4; -} unk80121110; -extern unk80121110 D_80121110[2]; // Unknown number of entries -extern u16 D_80121140[2]; // Unknown number of entries. -extern u16 D_80121148[2]; // Unknown number of entries. -extern u8 D_80121150[8]; // Unknown number of entries. - -extern s32 D_A4000000; -extern s32 SP_IMEM; - -unk80120AC0 *func_80069D20(void); -void func_800014BC(f32 arg0); -s8* func_8001E29C(s32 arg0); -s32 func_8006A624(s8 arg0); -void func_8006F64C(s32*, f32, f32, f32, f32*, f32*, f32*); -void guPerspectiveF(s32*, s32*, f32, f32, f32, f32, f32); -void func_8006F870(s32*, s32*); -s16 func_80029F18(f32, f32, f32); -void func_8006A50C(void); -void func_800665E8(s32 arg0); -void func_8006CB58(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -void func_8006C164(void); -void func_8000E194(void); -f32 sqrtf(f32); -void osSetTime(u64); -void func_8001D5E0(f32 arg0, f32 arg1, f32 arg2); -void func_800705F8(s32, f32, f32, f32); -void func_8006ECFC(s32 arg0); - - -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80065EA0.s") - -void func_80066060(s32 arg0, s32 arg1) { - if (arg0 >= 0 && arg0 < 4) { - D_800DD2F8[arg0] = arg1; - D_80120AC0[arg0].unk3B = arg1; - } -} - -void func_80066098(s8 arg0) { - s8 temp = (arg0 << 24) >> 24; - if (!osTvType) { - D_80120D15 = temp; - } -} -void func_800660C0(void) { - D_80120D18 = 1; -} -void func_800660D0(void) { - D_80120D18 = 0; -} -/* Unused? */ -f32 func_800660DC(void) { - return D_80120D10; -} - -void func_800660EC(f32 arg0) { - if (0.0f < arg0 && arg0 < 90.0f && arg0 != D_80120D10) { - D_80120D10 = arg0; - guPerspectiveF(&D_80120EE0, &D_80120D6C, arg0, 1.33333333f, 10.0f, 15000.0f, 1.0f); - func_8006F870(&D_80120EE0, &D_80120FE0); - } -} - -void func_80066194(void) { - guPerspectiveF(&D_80120EE0, &D_80120D6C, 60.0f, 1.33333333f, 10.0f, 15000.0f, 1.0f); - func_8006F870(&D_80120EE0, &D_80120FE0); -} - -/* Unused? */ -s32* func_80066204(void) { - return &D_801210A0; -} - -s32 func_80066210(void) { - return D_80120CE0; -} - -s32 func_80066220(void) { - return D_80120CE4; -} - -void func_80066230(s32 arg0, s32 arg1) { - unk80120AC0 *someStruct; - s16 sp2A; - s16 sp28; - s16 sp26; - s16 sp24; - f32 sp20; - f32 sp1C; - f32 sp18; - - func_8006652C(0); - func_800665E8(0); - someStruct = func_80069D20(); - sp2A = someStruct->unk0; - sp28 = someStruct->unk2; - sp26 = someStruct->unk4; - sp20 = someStruct->x_position; - sp1C = someStruct->y_position; - sp18 = someStruct->z_position; - sp24 = someStruct->unk38; - someStruct->unk4 = 0; - someStruct->unk2 = 0; - someStruct->unk0 = -0x8000; - someStruct->unk38 = 0; - someStruct->x_position = 0.0f; - someStruct->y_position = 0.0f; - someStruct->z_position = 0.0f; - func_8001D5E0(0.0f, 0.0f, -1.0f); - func_80066CDC(arg0, arg1); - someStruct->unk38 = sp24; - someStruct->unk0 = sp2A; - someStruct->unk2 = sp28; - someStruct->unk4 = sp26; - someStruct->x_position = sp20; - someStruct->y_position = sp1C; - someStruct->z_position = sp18; -} - -f32 func_80066348(f32 arg0, f32 arg1, f32 arg2) { - s32 phi_v1; - f32 temp_f2, temp_f0, temp_f14; - - phi_v1 = D_80120CE4; - - if (D_80120D14 != 0) { - phi_v1 += 4; - } - - temp_f0 = arg2 - D_80120AC0[phi_v1].z_position; - temp_f2 = arg0 - D_80120AC0[phi_v1].x_position; - temp_f14 = arg1 - D_80120AC0[phi_v1].y_position; - return sqrtf((temp_f0 * temp_f0) + ((temp_f2 * temp_f2) + (temp_f14 * temp_f14))); -} - -void func_800663DC(s32 x_pos, s32 y_pos, s32 z_pos, s32 arg3, s32 arg4, s32 arg5) { - D_80120AC0[D_80120CE4].unk4 = (s16) (arg3 * 0xB6); - D_80120AC0[D_80120CE4].x_position = (f32) x_pos; - D_80120AC0[D_80120CE4].y_position = (f32) y_pos; - D_80120AC0[D_80120CE4].z_position = (f32) z_pos; - D_80120AC0[D_80120CE4].unk2 = (s16) (arg4 * 0xB6); - D_80120AC0[D_80120CE4].unk38 = (u16)0; - D_80120AC0[D_80120CE4].unk24 = 0.0f; - D_80120AC0[D_80120CE4].unk28 = 0.0f; - D_80120AC0[D_80120CE4].unk2C = 0.0f; - D_80120AC0[D_80120CE4].unk30 = 0.0f; - D_80120AC0[D_80120CE4].unk1C = 160.0f; - D_80120AC0[D_80120CE4].unk0 = (s16) (arg5 * 0xB6); - D_80120AC0[D_80120CE4].unk3B = D_800DD2F8[D_80120CE4]; -} - -void func_80066488(s32 arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4, s16 arg5, s16 arg6) { - arg0 += 4; - D_80120AC0[arg0].unk38 = 0; - D_80120AC0[arg0].x_position = arg1; - D_80120AC0[arg0].y_position = arg2; - D_80120AC0[arg0].z_position = arg3; - D_80120AC0[arg0].unk0 = arg4; - D_80120AC0[arg0].unk2 = arg5; - D_80120AC0[arg0].unk4 = arg6; - D_80120AC0[arg0].unk34 = func_80029F18(arg1, arg2, arg3); - D_80120D14 = 1; -} - -s8 func_80066510(void) { - return D_80120D14; -} - -void func_80066520(void) { - D_80120D14 = 0; -} - -s32 func_8006652C(s32 arg0) { - if ((arg0 >= 0) && (arg0 < 4)) { - D_80120CE0 = arg0; - } else { - D_80120CE0 = 0; - } - switch(D_80120CE0) { - case 0: - D_80120CE8 = 1; - break; - case 1: - D_80120CE8 = 2; - break; - case 2: - D_80120CE8 = 3; - break; - case 3: - D_80120CE8 = 4; - break; - } - if (D_80120CE4 >= D_80120CE8) { - D_80120CE4 = 0; - } - return D_80120CE8; -} - -void func_800665E8(s32 arg0) { - if (arg0 >= 0 && arg0 < 4) { - D_80120CE4 = arg0; - } else { - D_80120CE4 = 0; - } -} - -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066610.s") - -void func_80066818(s32 arg0, s32 arg1) { - if (arg1 != 0) { - D_800DD064[arg0].unk30 |= 1; - } else { - D_800DD064[arg0].unk30 |= 2; - } - D_800DD064[arg0].unk30 &= -5; -} - -void func_80066894(s32 arg0, s32 arg1) { - if (arg1 != 0) { - D_800DD064[arg0].unk30 &= -2; - } else { - D_800DD064[arg0].unk30 |= 4; - } - D_800DD064[arg0].unk30 &= -3; -} - -s32 func_80066910(s32 arg0) { - return D_800DD064[arg0].unk30 & 0x1; -} - -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066940.s") - -void func_80066AA8(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { - if (arg1 != 0x8000) { - D_800DD064[arg0].unk10 = arg1; - D_800DD064[arg0].unk30 |= 8; - } else { - D_800DD064[arg0].unk30 &= 0xFFFFFFF7; - } - if (arg2 != 0x8000) { - D_800DD064[arg0].unk10 = arg2; - D_800DD064[arg0].unk30 |= 0x10; - } else { - D_800DD064[arg0].unk30 &= 0xFFFFFFEF; - } - if (arg3 != 0x8000) { - D_800DD064[arg0].unk18 = arg3; - D_800DD064[arg0].unk30 |= 0x20; - } else { - D_800DD064[arg0].unk30 &= 0xFFFFFFDF; - } - if (arg4 != 0x8000) { - D_800DD064[arg0].unk1C = arg4; - D_800DD064[arg0].unk30 |= 0x40; - return; - } - D_800DD064[arg0].unk30 &= 0xFFFFFFBF; -} - -s32 func_80066BA8(s32 arg0, s32 *arg1, s32 *arg2, s32 *arg3, s32 *arg4) { - *arg1 = D_800DD064[arg0].unk20; - *arg3 = D_800DD064[arg0].unk28; - *arg2 = D_800DD064[arg0].unk24; - *arg4 = D_800DD064[arg0].unk2C; - if ((*arg1 | *arg3 | *arg2 | *arg4) == 0) { - return 0; - } - return 1; -} - -void func_80066C2C(s32 arg0, s32 *arg1, s32 *arg2, s32 *arg3, s32 *arg4) { - *arg1 = D_800DD064[arg0].unk0; - *arg2 = D_800DD064[arg0].unk4; - *arg3 = D_800DD064[arg0].unk8; - *arg4 = D_800DD064[arg0].unkC; -} - -// Unused? -void func_80066C80(s32 *arg0, s32 *arg1, s32 *arg2, s32 *arg3) { - u32 temp_v0 = func_8007A520(); - *arg0 = 0; - *arg1 = 0; - *arg2 = temp_v0 & 0xFFFF; - *arg3 = (u32) (temp_v0 >> 0x10); -} - - -#if 1 -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066CDC.s") -#else -// Work in progress! - -void func_80066CDC(Gfx **dlist, s32 *arg1) { - u32 sp58; - u32 sp54; - u32 sp50; - u32 sp4C; - s32 sp34; - s32 sp2C; - u32 temp_a0; - u32 temp_a0_3; - u32 temp_a0_4; - u32 temp_a2; - u32 temp_a3; - u32 temp_a3_2; - u32 temp_t0; - u32 temp_t1_2; - u32 temp_v0; - u32 temp_v0_3; - u32 temp_v0_4; - u32 temp_v1_10; - u32 temp_v1_3; - u32 temp_v1_4; - s32 phi_t1; - s32 phi_v1; - f32 phi_f6; - f32 phi_f18; - f32 phi_f16; - f32 phi_f8; - f32 phi_f6_2; - f32 phi_f18_2; - f32 phi_f8_2; - f32 phi_f16_2; - u32 phi_a1; - f32 phi_f8_3; - f32 phi_f16_3; - f32 phi_f16_4; - u32 phi_t3; - u32 phi_a3_2; - u32 phi_t5; - u32 phi_t4; - - sp34 = D_80120CE4; - phi_t1 = D_80120CE4; - if (func_8000E184() && D_80120CE0 == 0) { - D_80120CE4 = 1; - phi_t1 = 0; - } - temp_v0 = func_8007A520(); - temp_t0 = temp_v0 >> 0x10; - temp_a3 = temp_t0 >> 1; - - if (D_800DD064[phi_t1].unk30 & 1) { - sp2C = D_80120CE4; - D_80120CE4 = phi_t1; - fast3d_cmd( - (*dlist)++, - ((((s32)(D_800DD064[D_80120CE4].unk24 * 4.0f)) & 0xFFF) | 0xED000000) | (((s32)(D_800DD064[D_80120CE4].unk20 * 4.0f)) & 0xFFF) << 0xC, - (((s32)(D_800DD064[D_80120CE4].unk2C * 4.0f)) & 0xFFF) | (((s32)(D_800DD064[D_80120CE4].unk28 * 4.0f)) & 0xFFF) << 0xC - ) - func_80068158(dlist, 0, 0, 0, 0); - D_80120CE4 = sp2C; - if (arg1 != 0) { - func_80067D3C(dlist, arg1); - } - D_80120CE4 = sp34; - return; - } - temp_t1_2 = temp_v0 & 0xFFFF; - phi_v1 = D_80120CE0; - if (D_80120CE0 == 2) { - phi_v1 = 3; - } - temp_a2 = temp_t1_2 >> 1; - sp54 = temp_a2; - sp58 = temp_a3; - if (osTvType == 0) { - sp58 = 0x91; - } - - switch(phi_v1) { - case 0: - phi_t3 = sp58; - if (osTvType == 0) { - phi_t3 = sp58 - 0x12; - } - phi_f16_4 = temp_t0; - if (temp_t0 < 0) { - phi_f16_4 = temp_t0 + 4294967296.0f; - } - fast3d_cmd( - (*dlist)++, - 0xED000000, - ((((s32)(temp_t1_2 * 4.0f)) & 0xFFF) << 0xC) | (((s32)(phi_f16_4 * 4.0f)) & 0xFFF) - ) - sp4C = temp_a2; - phi_a3_2 = temp_a2; - break; - case 1: - if (D_80120CE4 == 0) { - temp_v0_4 = temp_t0 >> 2; - phi_t3 = temp_v0_4; - if (osTvType == 0) { - phi_t3 = temp_v0_4 - 0xC; - } - phi_f8_3 = temp_a3 - (temp_t0 >> 7); - if (phi_f8_3 < 0) { - phi_f8_3 += 4294967296.0f; - } - fast3d_cmd( - (*dlist)++, - 0xED000000, - ((((s32)(temp_t1_2 * 4.0f)) & 0xFFF) << 0xC) | (((s32)(phi_f8_3 * 4.0f)) & 0xFFF) - ) - } else { - temp_v1_10 = temp_t0 >> 7; - phi_f16_3 = temp_t0 - temp_v1_10; - if (phi_f16_3 < 0) { - phi_f16_3 += 4294967296.0f; - } - fast3d_cmd( - (*dlist)++, - (((s32)((temp_a3 + temp_v1_10) * 4.0f)) & 0xFFF) | 0xED000000, - ((((s32)(temp_t1_2 * 4.0f)) & 0xFFF) << 0xC) | (((s32)(phi_f16_3 * 4.0f)) & 0xFFF) - ) - phi_t3 = temp_a3 + (temp_t0 >> 2); - } - sp4C = temp_a2; - phi_a3_2 = temp_a2; - break; - case 2: - if (D_80120CE4 == 0) { - phi_f8_2 = temp_t0; - if (temp_t0 < 0) { - phi_f8_2 = temp_t0 + 4294967296.0f; - } - fast3d_cmd( - (*dlist)++, - 0xED000000, - ((((s32)((temp_a2 - (temp_t1_2 >> 8)) * 4.0f)) & 0xFFF) << 0xC) | (((s32)(phi_f8_2 * 4.0f)) & 0xFFF) - ) - phi_a1 = temp_t1_2 >> 2; - } else { - temp_a0_4 = temp_t1_2 >> 8; - phi_f16_2 = temp_t0; - if (temp_t0 < 0) { - phi_f16_2 = temp_t0 + 4294967296.0f; - } - fast3d_cmd( - (*dlist)++, - (((s32)((temp_a2 + temp_a0_4) * 4.0f) & 0xFFF) << 0xC) | 0xED000000, - (((s32)((temp_t1_2 - temp_a0_4) * 4.0f) & 0xFFF) << 0xC) | (((s32)(phi_f16_2 * 4.0f)) & 0xFFF) - ) - phi_a1 = temp_a2 + (temp_t1_2 >> 2); - } - sp4C = phi_a1; - phi_t3 = sp58; - phi_a3_2 = phi_a1; - break; - case 3: - switch(D_80120CE4) { - case 0: - phi_f6_2 = temp_a2 - (temp_t1_2 >> 8); - if (phi_f6_2 < 0) { - phi_f6_2 += 4294967296.0f; - } - phi_f18_2 = temp_a3 - (temp_t0 >> 7); - if (phi_f18_2 < 0) { - phi_f18_2 += 4294967296.0f; - } - fast3d_cmd( - (*dlist)++, - ((((s32)(0U * 4.0f) & 0xFFF) << 0xC) | 0xED000000) | (((s32)(0U * 4.0f)) & 0xFFF), - (((s32)(phi_f6_2 * 4.0f) & 0xFFF) << 0xC) | (((s32)(phi_f18_2 * 4.0f)) & 0xFFF) - ) - phi_t5 = 0U; - phi_t4 = 0U; - break; - case 1: - temp_a0_3 = temp_t1_2 >> 8; - phi_f8 = temp_a3 - (temp_t0 >> 7); - if (phi_f8 < 0) { - phi_f8 += 4294967296.0f; - } - fast3d_cmd( - (*dlist)++, - ((((s32)((temp_a2 + temp_a0_3) * 4.0f)) & 0xFFF) << 0xC) | 0xED000000, - ((((s32)(((temp_a2 * 2) - temp_a0_3) * 4.0f)) & 0xFFF) << 0xC) | (((s32)(phi_f8 * 4.0f)) & 0xFFF) - ) - phi_t5 = 0U; - phi_t4 = temp_a2; - break; - case 2: - temp_v1_4 = temp_t0 >> 7; - phi_f16 = (temp_a3 * 2) - temp_v1_4; - if (phi_f16 < 0) { - phi_f16 += 4294967296.0f; - } - fast3d_cmd( - (*dlist)++, - (((s32)((temp_a3 + temp_v1_4) * 4.0f)) & 0xFFF) | 0xED000000, - ((((s32)((temp_a2 - (temp_t1_2 >> 8)) * 4.0f)) & 0xFFF) << 0xC) | (((s32)(phi_f16 * 4.0f)) & 0xFFF) - ) - phi_t5 = temp_a3; - phi_t4 = 0U; - break; - case 3: - temp_a0 = temp_t1_2 >> 8; - temp_v1_3 = temp_t0 >> 7; - phi_f6 = (temp_a2 * 2) - temp_a0; - if (phi_f6 < 0) { - phi_f6 += 4294967296.0f; - } - phi_f18 = (temp_a3 * 2) - temp_v1_3; - if (phi_f18 < 0) { - phi_f18 += 4294967296.0f; - } - fast3d_cmd( - (*dlist)++, - (((((s32)((temp_a2 + temp_a0) * 4.0f)) & 0xFFF) << 0xC) | 0xED000000) | (((s32)((temp_a3 + temp_v1_3) * 4.0f)) & 0xFFF), - ((((s32)(phi_f6 * 4.0f) & 0xFFF)) << 0xC) | (((s32)(phi_f18 * 4.0f)) & 0xFFF) - ) - phi_t5 = temp_a3; - phi_t4 = temp_a2; - break; - default: - phi_t5 = 0; - phi_t4 = 0; - break; - } - temp_v0_3 = phi_t5 + sp58; - temp_a3_2 = phi_t4 + sp54; - phi_t3 = temp_v0_3; - phi_a3_2 = temp_a3_2; - if (osTvType == 0) { - phi_t3 = temp_v0_3 - 6; - phi_a3_2 = temp_a3_2; - if (D_80120CE4 < 2) { - phi_t3 = temp_v0_3 - 0x14; - phi_a3_2 = temp_a3_2; - } - } - break; - default: - phi_t3 = sp50; - phi_a3_2 = sp4C; - break; - } - - if (osTvType == 0) { - phi_a3_2 -= 4; - } - func_80068158(dlist, sp54, sp58, phi_a3_2, phi_t3); - if (arg1 != 0) { - func_80067D3C(dlist, arg1); - } - D_80120CE4 = sp34; -} -#endif - -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80067A3C.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80067D3C.s") - -void func_80067F20(f32 arg0) { - D_800DD2CC[0] = arg0; -} - -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80067F2C.s") - -void func_8006807C(Gfx **dlist, s32 *arg1) { - func_8006FE74(&D_80121060, &D_800DD288); - func_8006F768(&D_80121060, &D_80120EE0, &D_80120F20); - func_8006FE74(D_80120D70[0], &D_800DD2A0); - func_8006F768(D_80120D70[0], &D_80120F20, &D_80121060); - func_8006F870(&D_80121060, (s32*)*arg1); // This doesn't look right. Need to check this! - fast3d_cmd((*dlist)++, 0x1000040, (u32)(*arg1 + 0x80000000)) - *arg1 += 0x40; - D_80120D1C = 0; - D_80120D08 = 0; -} - -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80068158.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_800682AC.s") - -void func_80068408(Gfx **dlist, s32 *arg1) { - func_800705F8(D_80120D70[D_80120D1C], 0.0f, 0.0f, 0.0f); - func_8006F768(D_80120D70[D_80120D1C], &D_80120F20, &D_80121060); - func_8006F870(&D_80121060, (s32*)*arg1); // This doesn't look right. Need to check this! - D_80120D88[D_80120D1C] = *arg1; - - fast3d_cmd((*dlist)++, ((((D_80120D08 << 6) & 0xFF) << 0x10) | 0x1000000) | 0x40, (u32)(*arg1 + 0x80000000)) - - *arg1 += 0x40; -} - -void func_80068508(s32 arg0) { - D_80120D0C = arg0; -} - -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80068514.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80068BF4.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80068FA8.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069484.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069790.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069A40.s") - -unk80120AC0 *func_80069CFC(void) { - return &D_80120AC0[D_80120CE4]; -} - -unk80120AC0 *func_80069D20(void) { - if (D_80120D14 != 0) { - return &D_80120AC0[D_80120CE4 + 4]; - } - return &D_80120AC0[D_80120CE4]; -} - -unk80120AC0 *func_80069D7C(void) { - if (D_80120D14 != 0) { - return D_80120BD0; - } - return D_80120AC0; -} - -s32* func_80069DA4(void) { - return &D_80120FA0; -} - -s32* func_80069DB0(void) { - return &D_80120FE0; -} - -s32* func_80069DBC(void) { - return &D_80120F60; -} - -f32 func_80069DC8(f32 arg0, f32 arg1, f32 arg2) { - f32 sp34; - f32 sp30; - f32 returnVal; - func_8006F64C(&D_80120F60, arg0, arg1, arg2, &sp34, &sp30, &returnVal); - return returnVal; -} - -void func_80069E14(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4) { - f32 temp_f0; - f32 temp_f0_2; - f32 temp_f14; - f32 temp_f2; - s32 i; - - for (i = 0; i <= D_80120CE0; i++) { - temp_f0 = arg0 - D_80120AC0[i].x_position; - temp_f2 = arg1 - D_80120AC0[i].y_position; - temp_f14 = arg2 - D_80120AC0[i].z_position; - temp_f0_2 = sqrtf(((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) + (temp_f14 * temp_f14)); - if (temp_f0_2 < arg3) { - D_80120AC0[i].unk30 = ((arg3 - temp_f0_2) * arg4) / arg3; - } - } -} - -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069F28.s") - -s32* func_8006A100(void) { - return &D_801210E0; -} - -#if 1 -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006A10C.s") -#else - -extern s32 D_800DD300; -extern s32 D_801210F8; -extern s32 D_801210FC; -extern s8 D_80121100; -extern u8 D_80121103; - -// Has regalloc & stack issues. -s32 func_8006A10C(void) { - u8 sp23; - osCreateMesgQueue(&D_801210E0, &D_801210F8, 1); - osSetEventMesg(5, &D_801210E0, D_801210FC); - func_800CCC20(&D_801210E0, &sp23, &D_80121100); - func_800CCFE0(&D_801210E0); - func_8006A434(); - D_800DD300 = 0; - if ((sp23 & 1) && !(D_80121103 & 8)) { - return 0; - } - D_800DD300 = 1; - return -1; -} -#endif - -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006A1C4.s") -GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006A434.s") - -void func_8006A458(s8 *activePlayers) { - s32 i; - s32 temp = 0; - for(i = 0; i < 4; i++) { - if (activePlayers[i]) { - D_80121150[temp++] = i; - } - } - for(i = 0; i < 4; i++) { - if (!activePlayers[i]) { - D_80121150[temp++] = i; - } - } -} - -u8 func_8006A4F8(s32 arg0) { - return D_80121150[arg0]; -} - -void func_8006A50C(void) { - u8 temp = D_80121150[0]; - D_80121150[0] = D_80121150[1]; - D_80121150[1] = temp; -} - -u16 func_8006A528(s32 arg0) { - return D_80121110[D_80121150[arg0]].unk0; -} - -u16 func_8006A554(s32 arg0) { - return D_80121140[D_80121150[arg0]]; -} - -u16 func_8006A578(s32 arg0) { - return D_80121148[D_80121150[arg0]]; -} - -s32 func_8006A59C(s32 arg0) { - func_8006A624(D_80121110[D_80121150[arg0]].unk2); -} - -s32 func_8006A5E0(s32 arg0) { - func_8006A624(D_80121110[D_80121150[arg0]].unk3); -} - -s32 func_8006A624(s8 arg0) { - if (arg0 < 8 && arg0 >= -7) { - return 0; - } - if (arg0 > 0) { - arg0 -= 8; - if (arg0 >= 0x47) { - arg0 = 0x46; - } - } else { - arg0 += 8; - if (arg0 < -0x46) { - arg0 = -0x46; - } - } - return arg0; -} - -void func_8006A6A0(void) { - D_800DD304 = 0; -} +/* The comment below is needed for this file to be picked up by generate_ld */ +/* RAM_POS: 0x80065EA0 */ + +#include "types.h" +#include "macros.h" +#include "structs.h" +#include "fast3d.h" + +extern u32 osTvType; + +/************ .rodata ************/ + +const char D_800E6F00[] = "Camera Error: Illegal mode!\n"; +const char D_800E6F20[] = "Camera Error: Illegal player no!\n"; +const char D_800E6F34[] = "cameraPushSprMtx: model stack overflow!!\n"; +const char D_800E6F70[] = "\nCam do 2D sprite called with NULL pointer!"; +const char D_800E6F9C[] = "CamDo2DSprite FrameNo Overflow !!!\n"; +const char D_800E6FC0[] = "cameraPushModelMtx: model stack overflow!!\n"; +const char D_800E6FEC[] = "camPushModelMtx: bsp stack overflow!!\n"; +const char D_800E7010[] = "camPopModelMtx: model stack negative overflow!!\n"; +const char D_800E7048[] = "camPopModelMtx: bsp stack negative overflow!!\n"; + +/*********************************/ + +/************ .data ************/ + +s32 D_800DD060 = 0; // Currently unknown, might be a different type. + +/* Size: 0x34 bytes. */ +typedef struct unk800DD064 { + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + s32 unk10; + s32 unk14; + s32 unk18; + s32 unk1C; + s32 unk20; + s32 unk24; + s32 unk28; + s32 unk2C; + s32 unk30; +} unk800DD064; + +unk800DD064 D_800DD064[4] = { + { + 0x00, 0x00, 0x140, 0xF0, + 0xA0, 0x78, 0x140, 0xF0, + 0x00, 0x00, 0x13F, 0xEF, 0x00 + }, + { + 0x00, 0x00, 0x140, 0xF0, + 0xA0, 0x78, 0x140, 0xF0, + 0x00, 0x00, 0x13F, 0xEF, 0x00 + }, + { + 0x00, 0x00, 0x140, 0xF0, + 0xA0, 0x78, 0x140, 0xF0, + 0x00, 0x00, 0x13F, 0xEF, 0x00 + }, + { + 0x00, 0x00, 0x140, 0xF0, + 0xA0, 0x78, 0x140, 0xF0, + 0x00, 0x00, 0x13F, 0xEF, 0x00 + } +}; + +// Not sure about the typing here +s16 D_800DD134[10] = { + 0, 0, 0, 0, + 0, -1, -1, 0, + 0, 0 +}; + +// Not sure about the typing here +u16 D_800DD148[160] = { + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0, + 0, 0, 0x01FF, 0 +}; + +f32 D_800DD288[6] = { + 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, -281.0f +}; + +f32 D_800DD2A0[6] = { + 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f +}; + +f32 D_800DD2B8[5] = { + 1.0f, 0.0f, 0.0f, 0.0f, 0.0f +}; + +f32 D_800DD2CC[11] = { + 1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 160.0f +}; + +u8 D_800DD2F8[8] = { + 0, 0, 0, 0, 0, 0, 0, 0 +}; + +s32 D_800DD300 = 0; // Currently unknown, might be a different type. + +s16 D_800DD304 = -1; + +/*******************************/ + +/* Size: 0x44 bytes */ +typedef struct unk80120AC0 { + s16 unk0; + s16 unk2; + s16 unk4; + u8 pad6[6]; + f32 x_position; + f32 y_position; + f32 z_position; + f32 pad18; + f32 unk1C; + f32 pad20; + f32 unk24; + f32 unk28; + f32 unk2C; + f32 unk30; + s16 unk34; + s16 pad36; + s16 unk38; + s8 pad3A; + s8 unk3B; + u8 pad3C[8]; +} unk80120AC0; + +extern unk80120AC0 D_80120AC0[4]; // Unknown number of entries. +extern unk80120AC0 D_80120AFB[4]; // Unknown number of entries. +extern unk80120AC0 D_80120BD0[4]; // Unknown number of entries. +extern s32 D_80120CE0; +extern s32 D_80120CE4; +extern s32 D_80120CE8; +extern s32 D_80120D08; +extern s32 D_80120D0C; +extern f32 D_80120D10; +extern s8 D_80120D14; +extern u8 D_80120D15; +extern s32 D_80120D18; +extern s32 D_80120D1C; +extern s32 D_80120D6C; +extern s32 D_80120D70[6]; +extern s32 D_80120D88[6]; // Unknown number of entries. +extern s32 D_80120EE0; +extern s32 D_80120F20; +extern s32 D_80120F60; +extern s32 D_80120FE0; +extern s32 D_80120FA0; +extern s32 D_80121060; +extern s32 D_801210A0; +extern s32 D_801210E0; + +/* Size: 5 bytes */ +typedef struct unk80121110 { + u16 unk0; + s8 unk2; + s8 unk3; + s8 unk4; +} unk80121110; +extern unk80121110 D_80121110[2]; // Unknown number of entries +extern u16 D_80121140[2]; // Unknown number of entries. +extern u16 D_80121148[2]; // Unknown number of entries. +extern u8 D_80121150[8]; // Unknown number of entries. + +extern s32 D_A4000000; +extern s32 SP_IMEM; + +unk80120AC0 *func_80069D20(void); +void func_800014BC(f32 arg0); +s8* func_8001E29C(s32 arg0); +s32 func_8006A624(s8 arg0); +void func_8006F64C(s32*, f32, f32, f32, f32*, f32*, f32*); +void guPerspectiveF(s32*, s32*, f32, f32, f32, f32, f32); +void func_8006F870(s32*, s32*); +s16 func_80029F18(f32, f32, f32); +void func_8006A50C(void); +void func_800665E8(s32 arg0); +void func_8006CB58(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void func_8006C164(void); +void func_8000E194(void); +f32 sqrtf(f32); +void osSetTime(u64); +void func_8001D5E0(f32 arg0, f32 arg1, f32 arg2); +void func_800705F8(s32, f32, f32, f32); +void func_8006ECFC(s32 arg0); + + +GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80065EA0.s") + +void func_80066060(s32 arg0, s32 arg1) { + if (arg0 >= 0 && arg0 < 4) { + D_800DD2F8[arg0] = arg1; + D_80120AC0[arg0].unk3B = arg1; + } +} + +void func_80066098(s8 arg0) { + s8 temp = (arg0 << 24) >> 24; + if (!osTvType) { + D_80120D15 = temp; + } +} +void func_800660C0(void) { + D_80120D18 = 1; +} +void func_800660D0(void) { + D_80120D18 = 0; +} +/* Unused? */ +f32 func_800660DC(void) { + return D_80120D10; +} + +void func_800660EC(f32 arg0) { + if (0.0f < arg0 && arg0 < 90.0f && arg0 != D_80120D10) { + D_80120D10 = arg0; + guPerspectiveF(&D_80120EE0, &D_80120D6C, arg0, 1.33333333f, 10.0f, 15000.0f, 1.0f); + func_8006F870(&D_80120EE0, &D_80120FE0); + } +} + +void func_80066194(void) { + guPerspectiveF(&D_80120EE0, &D_80120D6C, 60.0f, 1.33333333f, 10.0f, 15000.0f, 1.0f); + func_8006F870(&D_80120EE0, &D_80120FE0); +} + +/* Unused? */ +s32* func_80066204(void) { + return &D_801210A0; +} + +s32 func_80066210(void) { + return D_80120CE0; +} + +s32 func_80066220(void) { + return D_80120CE4; +} + +void func_80066230(s32 arg0, s32 arg1) { + unk80120AC0 *someStruct; + s16 sp2A; + s16 sp28; + s16 sp26; + s16 sp24; + f32 sp20; + f32 sp1C; + f32 sp18; + + func_8006652C(0); + func_800665E8(0); + someStruct = func_80069D20(); + sp2A = someStruct->unk0; + sp28 = someStruct->unk2; + sp26 = someStruct->unk4; + sp20 = someStruct->x_position; + sp1C = someStruct->y_position; + sp18 = someStruct->z_position; + sp24 = someStruct->unk38; + someStruct->unk4 = 0; + someStruct->unk2 = 0; + someStruct->unk0 = -0x8000; + someStruct->unk38 = 0; + someStruct->x_position = 0.0f; + someStruct->y_position = 0.0f; + someStruct->z_position = 0.0f; + func_8001D5E0(0.0f, 0.0f, -1.0f); + func_80066CDC(arg0, arg1); + someStruct->unk38 = sp24; + someStruct->unk0 = sp2A; + someStruct->unk2 = sp28; + someStruct->unk4 = sp26; + someStruct->x_position = sp20; + someStruct->y_position = sp1C; + someStruct->z_position = sp18; +} + +f32 func_80066348(f32 arg0, f32 arg1, f32 arg2) { + s32 phi_v1; + f32 temp_f2, temp_f0, temp_f14; + + phi_v1 = D_80120CE4; + + if (D_80120D14 != 0) { + phi_v1 += 4; + } + + temp_f0 = arg2 - D_80120AC0[phi_v1].z_position; + temp_f2 = arg0 - D_80120AC0[phi_v1].x_position; + temp_f14 = arg1 - D_80120AC0[phi_v1].y_position; + return sqrtf((temp_f0 * temp_f0) + ((temp_f2 * temp_f2) + (temp_f14 * temp_f14))); +} + +void func_800663DC(s32 x_pos, s32 y_pos, s32 z_pos, s32 arg3, s32 arg4, s32 arg5) { + D_80120AC0[D_80120CE4].unk4 = (s16) (arg3 * 0xB6); + D_80120AC0[D_80120CE4].x_position = (f32) x_pos; + D_80120AC0[D_80120CE4].y_position = (f32) y_pos; + D_80120AC0[D_80120CE4].z_position = (f32) z_pos; + D_80120AC0[D_80120CE4].unk2 = (s16) (arg4 * 0xB6); + D_80120AC0[D_80120CE4].unk38 = (u16)0; + D_80120AC0[D_80120CE4].unk24 = 0.0f; + D_80120AC0[D_80120CE4].unk28 = 0.0f; + D_80120AC0[D_80120CE4].unk2C = 0.0f; + D_80120AC0[D_80120CE4].unk30 = 0.0f; + D_80120AC0[D_80120CE4].unk1C = 160.0f; + D_80120AC0[D_80120CE4].unk0 = (s16) (arg5 * 0xB6); + D_80120AC0[D_80120CE4].unk3B = D_800DD2F8[D_80120CE4]; +} + +void func_80066488(s32 arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4, s16 arg5, s16 arg6) { + arg0 += 4; + D_80120AC0[arg0].unk38 = 0; + D_80120AC0[arg0].x_position = arg1; + D_80120AC0[arg0].y_position = arg2; + D_80120AC0[arg0].z_position = arg3; + D_80120AC0[arg0].unk0 = arg4; + D_80120AC0[arg0].unk2 = arg5; + D_80120AC0[arg0].unk4 = arg6; + D_80120AC0[arg0].unk34 = func_80029F18(arg1, arg2, arg3); + D_80120D14 = 1; +} + +s8 func_80066510(void) { + return D_80120D14; +} + +void func_80066520(void) { + D_80120D14 = 0; +} + +s32 func_8006652C(s32 arg0) { + if ((arg0 >= 0) && (arg0 < 4)) { + D_80120CE0 = arg0; + } else { + D_80120CE0 = 0; + } + switch(D_80120CE0) { + case 0: + D_80120CE8 = 1; + break; + case 1: + D_80120CE8 = 2; + break; + case 2: + D_80120CE8 = 3; + break; + case 3: + D_80120CE8 = 4; + break; + } + if (D_80120CE4 >= D_80120CE8) { + D_80120CE4 = 0; + } + return D_80120CE8; +} + +void func_800665E8(s32 arg0) { + if (arg0 >= 0 && arg0 < 4) { + D_80120CE4 = arg0; + } else { + D_80120CE4 = 0; + } +} + +GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066610.s") + +void func_80066818(s32 arg0, s32 arg1) { + if (arg1 != 0) { + D_800DD064[arg0].unk30 |= 1; + } else { + D_800DD064[arg0].unk30 |= 2; + } + D_800DD064[arg0].unk30 &= -5; +} + +void func_80066894(s32 arg0, s32 arg1) { + if (arg1 != 0) { + D_800DD064[arg0].unk30 &= -2; + } else { + D_800DD064[arg0].unk30 |= 4; + } + D_800DD064[arg0].unk30 &= -3; +} + +s32 func_80066910(s32 arg0) { + return D_800DD064[arg0].unk30 & 0x1; +} + +GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066940.s") + +void func_80066AA8(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + if (arg1 != 0x8000) { + D_800DD064[arg0].unk10 = arg1; + D_800DD064[arg0].unk30 |= 8; + } else { + D_800DD064[arg0].unk30 &= 0xFFFFFFF7; + } + if (arg2 != 0x8000) { + D_800DD064[arg0].unk10 = arg2; + D_800DD064[arg0].unk30 |= 0x10; + } else { + D_800DD064[arg0].unk30 &= 0xFFFFFFEF; + } + if (arg3 != 0x8000) { + D_800DD064[arg0].unk18 = arg3; + D_800DD064[arg0].unk30 |= 0x20; + } else { + D_800DD064[arg0].unk30 &= 0xFFFFFFDF; + } + if (arg4 != 0x8000) { + D_800DD064[arg0].unk1C = arg4; + D_800DD064[arg0].unk30 |= 0x40; + return; + } + D_800DD064[arg0].unk30 &= 0xFFFFFFBF; +} + +s32 func_80066BA8(s32 arg0, s32 *arg1, s32 *arg2, s32 *arg3, s32 *arg4) { + *arg1 = D_800DD064[arg0].unk20; + *arg3 = D_800DD064[arg0].unk28; + *arg2 = D_800DD064[arg0].unk24; + *arg4 = D_800DD064[arg0].unk2C; + if ((*arg1 | *arg3 | *arg2 | *arg4) == 0) { + return 0; + } + return 1; +} + +void func_80066C2C(s32 arg0, s32 *arg1, s32 *arg2, s32 *arg3, s32 *arg4) { + *arg1 = D_800DD064[arg0].unk0; + *arg2 = D_800DD064[arg0].unk4; + *arg3 = D_800DD064[arg0].unk8; + *arg4 = D_800DD064[arg0].unkC; +} + +// Unused? +void func_80066C80(s32 *arg0, s32 *arg1, s32 *arg2, s32 *arg3) { + u32 temp_v0 = func_8007A520(); + *arg0 = 0; + *arg1 = 0; + *arg2 = temp_v0 & 0xFFFF; + *arg3 = (u32) (temp_v0 >> 0x10); +} + + +#if 1 +GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80066CDC.s") +#else +// Work in progress! + +void func_80066CDC(Gfx **dlist, s32 *arg1) { + u32 sp58; + u32 sp54; + u32 sp50; + u32 sp4C; + s32 sp34; + s32 sp2C; + u32 temp_a0; + u32 temp_a0_3; + u32 temp_a0_4; + u32 temp_a2; + u32 temp_a3; + u32 temp_a3_2; + u32 temp_t0; + u32 temp_t1_2; + u32 temp_v0; + u32 temp_v0_3; + u32 temp_v0_4; + u32 temp_v1_10; + u32 temp_v1_3; + u32 temp_v1_4; + s32 phi_t1; + s32 phi_v1; + f32 phi_f6; + f32 phi_f18; + f32 phi_f16; + f32 phi_f8; + f32 phi_f6_2; + f32 phi_f18_2; + f32 phi_f8_2; + f32 phi_f16_2; + u32 phi_a1; + f32 phi_f8_3; + f32 phi_f16_3; + f32 phi_f16_4; + u32 phi_t3; + u32 phi_a3_2; + u32 phi_t5; + u32 phi_t4; + + sp34 = D_80120CE4; + phi_t1 = D_80120CE4; + if (func_8000E184() && D_80120CE0 == 0) { + D_80120CE4 = 1; + phi_t1 = 0; + } + temp_v0 = func_8007A520(); + temp_t0 = temp_v0 >> 0x10; + temp_a3 = temp_t0 >> 1; + + if (D_800DD064[phi_t1].unk30 & 1) { + sp2C = D_80120CE4; + D_80120CE4 = phi_t1; + fast3d_cmd( + (*dlist)++, + ((((s32)(D_800DD064[D_80120CE4].unk24 * 4.0f)) & 0xFFF) | 0xED000000) | (((s32)(D_800DD064[D_80120CE4].unk20 * 4.0f)) & 0xFFF) << 0xC, + (((s32)(D_800DD064[D_80120CE4].unk2C * 4.0f)) & 0xFFF) | (((s32)(D_800DD064[D_80120CE4].unk28 * 4.0f)) & 0xFFF) << 0xC + ) + func_80068158(dlist, 0, 0, 0, 0); + D_80120CE4 = sp2C; + if (arg1 != 0) { + func_80067D3C(dlist, arg1); + } + D_80120CE4 = sp34; + return; + } + temp_t1_2 = temp_v0 & 0xFFFF; + phi_v1 = D_80120CE0; + if (D_80120CE0 == 2) { + phi_v1 = 3; + } + temp_a2 = temp_t1_2 >> 1; + sp54 = temp_a2; + sp58 = temp_a3; + if (osTvType == 0) { + sp58 = 0x91; + } + + switch(phi_v1) { + case 0: + phi_t3 = sp58; + if (osTvType == 0) { + phi_t3 = sp58 - 0x12; + } + phi_f16_4 = temp_t0; + if (temp_t0 < 0) { + phi_f16_4 = temp_t0 + 4294967296.0f; + } + fast3d_cmd( + (*dlist)++, + 0xED000000, + ((((s32)(temp_t1_2 * 4.0f)) & 0xFFF) << 0xC) | (((s32)(phi_f16_4 * 4.0f)) & 0xFFF) + ) + sp4C = temp_a2; + phi_a3_2 = temp_a2; + break; + case 1: + if (D_80120CE4 == 0) { + temp_v0_4 = temp_t0 >> 2; + phi_t3 = temp_v0_4; + if (osTvType == 0) { + phi_t3 = temp_v0_4 - 0xC; + } + phi_f8_3 = temp_a3 - (temp_t0 >> 7); + if (phi_f8_3 < 0) { + phi_f8_3 += 4294967296.0f; + } + fast3d_cmd( + (*dlist)++, + 0xED000000, + ((((s32)(temp_t1_2 * 4.0f)) & 0xFFF) << 0xC) | (((s32)(phi_f8_3 * 4.0f)) & 0xFFF) + ) + } else { + temp_v1_10 = temp_t0 >> 7; + phi_f16_3 = temp_t0 - temp_v1_10; + if (phi_f16_3 < 0) { + phi_f16_3 += 4294967296.0f; + } + fast3d_cmd( + (*dlist)++, + (((s32)((temp_a3 + temp_v1_10) * 4.0f)) & 0xFFF) | 0xED000000, + ((((s32)(temp_t1_2 * 4.0f)) & 0xFFF) << 0xC) | (((s32)(phi_f16_3 * 4.0f)) & 0xFFF) + ) + phi_t3 = temp_a3 + (temp_t0 >> 2); + } + sp4C = temp_a2; + phi_a3_2 = temp_a2; + break; + case 2: + if (D_80120CE4 == 0) { + phi_f8_2 = temp_t0; + if (temp_t0 < 0) { + phi_f8_2 = temp_t0 + 4294967296.0f; + } + fast3d_cmd( + (*dlist)++, + 0xED000000, + ((((s32)((temp_a2 - (temp_t1_2 >> 8)) * 4.0f)) & 0xFFF) << 0xC) | (((s32)(phi_f8_2 * 4.0f)) & 0xFFF) + ) + phi_a1 = temp_t1_2 >> 2; + } else { + temp_a0_4 = temp_t1_2 >> 8; + phi_f16_2 = temp_t0; + if (temp_t0 < 0) { + phi_f16_2 = temp_t0 + 4294967296.0f; + } + fast3d_cmd( + (*dlist)++, + (((s32)((temp_a2 + temp_a0_4) * 4.0f) & 0xFFF) << 0xC) | 0xED000000, + (((s32)((temp_t1_2 - temp_a0_4) * 4.0f) & 0xFFF) << 0xC) | (((s32)(phi_f16_2 * 4.0f)) & 0xFFF) + ) + phi_a1 = temp_a2 + (temp_t1_2 >> 2); + } + sp4C = phi_a1; + phi_t3 = sp58; + phi_a3_2 = phi_a1; + break; + case 3: + switch(D_80120CE4) { + case 0: + phi_f6_2 = temp_a2 - (temp_t1_2 >> 8); + if (phi_f6_2 < 0) { + phi_f6_2 += 4294967296.0f; + } + phi_f18_2 = temp_a3 - (temp_t0 >> 7); + if (phi_f18_2 < 0) { + phi_f18_2 += 4294967296.0f; + } + fast3d_cmd( + (*dlist)++, + ((((s32)(0U * 4.0f) & 0xFFF) << 0xC) | 0xED000000) | (((s32)(0U * 4.0f)) & 0xFFF), + (((s32)(phi_f6_2 * 4.0f) & 0xFFF) << 0xC) | (((s32)(phi_f18_2 * 4.0f)) & 0xFFF) + ) + phi_t5 = 0U; + phi_t4 = 0U; + break; + case 1: + temp_a0_3 = temp_t1_2 >> 8; + phi_f8 = temp_a3 - (temp_t0 >> 7); + if (phi_f8 < 0) { + phi_f8 += 4294967296.0f; + } + fast3d_cmd( + (*dlist)++, + ((((s32)((temp_a2 + temp_a0_3) * 4.0f)) & 0xFFF) << 0xC) | 0xED000000, + ((((s32)(((temp_a2 * 2) - temp_a0_3) * 4.0f)) & 0xFFF) << 0xC) | (((s32)(phi_f8 * 4.0f)) & 0xFFF) + ) + phi_t5 = 0U; + phi_t4 = temp_a2; + break; + case 2: + temp_v1_4 = temp_t0 >> 7; + phi_f16 = (temp_a3 * 2) - temp_v1_4; + if (phi_f16 < 0) { + phi_f16 += 4294967296.0f; + } + fast3d_cmd( + (*dlist)++, + (((s32)((temp_a3 + temp_v1_4) * 4.0f)) & 0xFFF) | 0xED000000, + ((((s32)((temp_a2 - (temp_t1_2 >> 8)) * 4.0f)) & 0xFFF) << 0xC) | (((s32)(phi_f16 * 4.0f)) & 0xFFF) + ) + phi_t5 = temp_a3; + phi_t4 = 0U; + break; + case 3: + temp_a0 = temp_t1_2 >> 8; + temp_v1_3 = temp_t0 >> 7; + phi_f6 = (temp_a2 * 2) - temp_a0; + if (phi_f6 < 0) { + phi_f6 += 4294967296.0f; + } + phi_f18 = (temp_a3 * 2) - temp_v1_3; + if (phi_f18 < 0) { + phi_f18 += 4294967296.0f; + } + fast3d_cmd( + (*dlist)++, + (((((s32)((temp_a2 + temp_a0) * 4.0f)) & 0xFFF) << 0xC) | 0xED000000) | (((s32)((temp_a3 + temp_v1_3) * 4.0f)) & 0xFFF), + ((((s32)(phi_f6 * 4.0f) & 0xFFF)) << 0xC) | (((s32)(phi_f18 * 4.0f)) & 0xFFF) + ) + phi_t5 = temp_a3; + phi_t4 = temp_a2; + break; + default: + phi_t5 = 0; + phi_t4 = 0; + break; + } + temp_v0_3 = phi_t5 + sp58; + temp_a3_2 = phi_t4 + sp54; + phi_t3 = temp_v0_3; + phi_a3_2 = temp_a3_2; + if (osTvType == 0) { + phi_t3 = temp_v0_3 - 6; + phi_a3_2 = temp_a3_2; + if (D_80120CE4 < 2) { + phi_t3 = temp_v0_3 - 0x14; + phi_a3_2 = temp_a3_2; + } + } + break; + default: + phi_t3 = sp50; + phi_a3_2 = sp4C; + break; + } + + if (osTvType == 0) { + phi_a3_2 -= 4; + } + func_80068158(dlist, sp54, sp58, phi_a3_2, phi_t3); + if (arg1 != 0) { + func_80067D3C(dlist, arg1); + } + D_80120CE4 = sp34; +} +#endif + +GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80067A3C.s") +GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80067D3C.s") + +void func_80067F20(f32 arg0) { + D_800DD2CC[0] = arg0; +} + +GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80067F2C.s") + +void func_8006807C(Gfx **dlist, s32 *arg1) { + func_8006FE74(&D_80121060, &D_800DD288); + func_8006F768(&D_80121060, &D_80120EE0, &D_80120F20); + func_8006FE74(D_80120D70[0], &D_800DD2A0); + func_8006F768(D_80120D70[0], &D_80120F20, &D_80121060); + func_8006F870(&D_80121060, (s32*)*arg1); // This doesn't look right. Need to check this! + fast3d_cmd((*dlist)++, 0x1000040, (u32)(*arg1 + 0x80000000)) + *arg1 += 0x40; + D_80120D1C = 0; + D_80120D08 = 0; +} + +GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80068158.s") +GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_800682AC.s") + +void func_80068408(Gfx **dlist, s32 *arg1) { + func_800705F8(D_80120D70[D_80120D1C], 0.0f, 0.0f, 0.0f); + func_8006F768(D_80120D70[D_80120D1C], &D_80120F20, &D_80121060); + func_8006F870(&D_80121060, (s32*)*arg1); // This doesn't look right. Need to check this! + D_80120D88[D_80120D1C] = *arg1; + + fast3d_cmd((*dlist)++, ((((D_80120D08 << 6) & 0xFF) << 0x10) | 0x1000000) | 0x40, (u32)(*arg1 + 0x80000000)) + + *arg1 += 0x40; +} + +void func_80068508(s32 arg0) { + D_80120D0C = arg0; +} + +GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80068514.s") +GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80068BF4.s") +GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80068FA8.s") +GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069484.s") +GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069790.s") +GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069A40.s") + +unk80120AC0 *func_80069CFC(void) { + return &D_80120AC0[D_80120CE4]; +} + +unk80120AC0 *func_80069D20(void) { + if (D_80120D14 != 0) { + return &D_80120AC0[D_80120CE4 + 4]; + } + return &D_80120AC0[D_80120CE4]; +} + +unk80120AC0 *func_80069D7C(void) { + if (D_80120D14 != 0) { + return D_80120BD0; + } + return D_80120AC0; +} + +s32* func_80069DA4(void) { + return &D_80120FA0; +} + +s32* func_80069DB0(void) { + return &D_80120FE0; +} + +s32* func_80069DBC(void) { + return &D_80120F60; +} + +f32 func_80069DC8(f32 arg0, f32 arg1, f32 arg2) { + f32 sp34; + f32 sp30; + f32 returnVal; + func_8006F64C(&D_80120F60, arg0, arg1, arg2, &sp34, &sp30, &returnVal); + return returnVal; +} + +void func_80069E14(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4) { + f32 temp_f0; + f32 temp_f0_2; + f32 temp_f14; + f32 temp_f2; + s32 i; + + for (i = 0; i <= D_80120CE0; i++) { + temp_f0 = arg0 - D_80120AC0[i].x_position; + temp_f2 = arg1 - D_80120AC0[i].y_position; + temp_f14 = arg2 - D_80120AC0[i].z_position; + temp_f0_2 = sqrtf(((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) + (temp_f14 * temp_f14)); + if (temp_f0_2 < arg3) { + D_80120AC0[i].unk30 = ((arg3 - temp_f0_2) * arg4) / arg3; + } + } +} + +GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_80069F28.s") + +s32* func_8006A100(void) { + return &D_801210E0; +} + +#if 1 +GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006A10C.s") +#else + +extern s32 D_800DD300; +extern s32 D_801210F8; +extern s32 D_801210FC; +extern s8 D_80121100; +extern u8 D_80121103; + +// Has regalloc & stack issues. +s32 func_8006A10C(void) { + u8 sp23; + osCreateMesgQueue(&D_801210E0, &D_801210F8, 1); + osSetEventMesg(5, &D_801210E0, D_801210FC); + func_800CCC20(&D_801210E0, &sp23, &D_80121100); + func_800CCFE0(&D_801210E0); + func_8006A434(); + D_800DD300 = 0; + if ((sp23 & 1) && !(D_80121103 & 8)) { + return 0; + } + D_800DD300 = 1; + return -1; +} +#endif + +GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006A1C4.s") +GLOBAL_ASM("asm/non_matchings/unknown_066AA0/func_8006A434.s") + +void func_8006A458(s8 *activePlayers) { + s32 i; + s32 temp = 0; + for(i = 0; i < 4; i++) { + if (activePlayers[i]) { + D_80121150[temp++] = i; + } + } + for(i = 0; i < 4; i++) { + if (!activePlayers[i]) { + D_80121150[temp++] = i; + } + } +} + +u8 func_8006A4F8(s32 arg0) { + return D_80121150[arg0]; +} + +void func_8006A50C(void) { + u8 temp = D_80121150[0]; + D_80121150[0] = D_80121150[1]; + D_80121150[1] = temp; +} + +u16 func_8006A528(s32 arg0) { + return D_80121110[D_80121150[arg0]].unk0; +} + +u16 func_8006A554(s32 arg0) { + return D_80121140[D_80121150[arg0]]; +} + +u16 func_8006A578(s32 arg0) { + return D_80121148[D_80121150[arg0]]; +} + +s32 func_8006A59C(s32 arg0) { + func_8006A624(D_80121110[D_80121150[arg0]].unk2); +} + +s32 func_8006A5E0(s32 arg0) { + func_8006A624(D_80121110[D_80121150[arg0]].unk3); +} + +s32 func_8006A624(s8 arg0) { + if (arg0 < 8 && arg0 >= -7) { + return 0; + } + if (arg0 > 0) { + arg0 -= 8; + if (arg0 >= 0x47) { + arg0 = 0x46; + } + } else { + arg0 += 8; + if (arg0 < -0x46) { + arg0 = -0x46; + } + } + return arg0; +} + +void func_8006A6A0(void) { + D_800DD304 = 0; +} diff --git a/src/unknown_06B2B0.c b/src/unknown_06B2B0.c index a6001659..f450ae5e 100644 --- a/src/unknown_06B2B0.c +++ b/src/unknown_06B2B0.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x8006A6B0 */ +#include "unknown_06B2B0.h" + #include "types.h" #include "macros.h" #include "structs.h" diff --git a/src/unknown_071730.c b/src/unknown_071730.c index f09575b6..792db3b9 100644 --- a/src/unknown_071730.c +++ b/src/unknown_071730.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80070B30 */ +#include "unknown_071730.h" + #include "types.h" #include "macros.h" diff --git a/src/unknown_072E50.c b/src/unknown_072E50.c index 693f5141..9f430bc2 100644 --- a/src/unknown_072E50.c +++ b/src/unknown_072E50.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80072250 */ +#include "unknown_072E50.h" + #include "types.h" #include "macros.h" diff --git a/src/unknown_0777A0.c b/src/unknown_0777A0.c index 0f0372b2..d958a466 100644 --- a/src/unknown_0777A0.c +++ b/src/unknown_0777A0.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80076BA0 */ +#include "unknown_0777A0.h" + #include "types.h" #include "macros.h" diff --git a/src/unknown_077C50.c b/src/unknown_077C50.c index 50b56e17..4c400c0c 100644 --- a/src/unknown_077C50.c +++ b/src/unknown_077C50.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80077050 */ +#include "unknown_077C50.h" + #include "types.h" #include "macros.h" diff --git a/src/unknown_078050.c b/src/unknown_078050.c index 7223f02f..5f11a911 100644 --- a/src/unknown_078050.c +++ b/src/unknown_078050.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80077450 */ +#include "unknown_078050.h" + #include "types.h" #include "macros.h" #include "libultra_internal.h" diff --git a/src/unknown_079F50.c b/src/unknown_079F50.c index 4558e128..c291fca7 100644 --- a/src/unknown_079F50.c +++ b/src/unknown_079F50.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80079350 */ +#include "unknown_079F50.h" + #include "types.h" #include "macros.h" #include "libultra_internal.h" diff --git a/src/unknown_07AF10.c b/src/unknown_07AF10.c index 0e7ba2df..90b35ade 100644 --- a/src/unknown_07AF10.c +++ b/src/unknown_07AF10.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x8007A310 */ +#include "unknown_07AF10.h" + #include "types.h" #include "macros.h" @@ -10,12 +12,6 @@ s32 D_800DE770 = 0; s32 D_800DE774 = 0; // Currently unknown, might be a different type. s8 D_800DE778 = 2; -/* Size: 0x08 bytes */ -typedef struct unk800DE77C { - /* 0x00 */ s32 width; - /* 0x04 */ s32 height; -} unk800DE77C; - // Video mode resolutions unk800DE77C D_800DE77C[8] = { { 320, 240 }, diff --git a/src/unknown_07B870.c b/src/unknown_07B870.c index c304859e..be065832 100644 --- a/src/unknown_07B870.c +++ b/src/unknown_07B870.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x8007AC70 */ +#include "unknown_07B870.h" + #include "types.h" #include "macros.h" diff --git a/src/unknown_080240.c b/src/unknown_080240.c index 510b4b4a..be422797 100644 --- a/src/unknown_080240.c +++ b/src/unknown_080240.c @@ -1,6 +1,8 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x8007F640 */ +#include "unknown_080240.h" + #include "types.h" #include "macros.h" #include "fast3d.h" diff --git a/src/unknown_080500.c b/src/unknown_080500.c index 51e3078a..a2ac0984 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 { - char* unk0; // Pointer to ascii text. - f32 unk4; - f32 unk8; - f32 unkC; - f32 unk10; - f32 unk14; - f32 unk18; - f32 unk1C; - f32 unk20; - f32 unk24; - f32 unk28; -} unk800DF83C; - // Title screen cinematic text unk800DF83C D_800DF83C[10] = { { "TIMBER", 14.0f, 14.5f, 16.5f, 17.0f, -80.0f, 208.0f, 160.0f, 208.0f, 400.0f, 208.0f }, @@ -266,20 +203,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 }, @@ -330,14 +253,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 0942d052..237e087a 100755 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -67,304 +67,11 @@ D_800D84C0 = 0x800D84C0; D_800D8590 = 0x800D8590; D_800D9790 = 0x800D9790; D_800DA970 = 0x800DA970; -gMusicPlayer = 0x800DC630; -gSndFxPlayer = 0x800DC634; -musicRelativeVolume = 0x800DC638; -sfxRelativeVolume = 0x800DC63C; -D_800DC640 = 0x800DC640; -D_800DC644 = 0x800DC644; -D_800DC648 = 0x800DC648; -audioPrevCount = 0x800DC64C; -D_800DC650 = 0x800DC650; -musicVolumeSliderPercentage = 0x800DC654; -D_800DC658 = 0x800DC658; -D_800DC65C = 0x800DC65C; -D_800DC660 = 0x800DC660; -D_800DC66C = 0x800DC66C; -D_800DC670 = 0x800DC670; -D_800DC680 = 0x800DC680; -D_800DC684 = 0x800DC684; -D_800DC688 = 0x800DC688; -D_800DC68C = 0x800DC68C; -D_800DC690 = 0x800DC690; -D_800DC694 = 0x800DC694; -D_800DC698 = 0x800DC698; -D_800DC69C = 0x800DC69C; -D_800DC6A0 = 0x800DC6A0; -D_800DC6B0 = 0x800DC6B0; -D_800DC6B4 = 0x800DC6B4; -D_800DC6B8 = 0x800DC6B8; -gAlSndPlayer = 0x800DC6BC; -sfxVolumeSlider = 0x800DC6C0; -D_800DC6C4 = 0x800DC6C4; -D_800DC6D0 = 0x800DC6D0; -D_800DC6D4 = 0x800DC6D4; -D_800DC6D8 = 0x800DC6D8; -D_800DC6E0 = 0x800DC6E0; -D_800DC6F0 = 0x800DC6F0; -D_800DC6F8 = 0x800DC6F8; -D_800DC700 = 0x800DC700; -D_800DC708 = 0x800DC708; -D_800DC718 = 0x800DC718; -D_800DC71C = 0x800DC71C; -D_800DC720 = 0x800DC720; -D_800DC724 = 0x800DC724; -D_800DC728 = 0x800DC728; -D_800DC72C = 0x800DC72C; -D_800DC730 = 0x800DC730; -D_800DC734 = 0x800DC734; -D_800DC738 = 0x800DC738; -D_800DC73C = 0x800DC73C; -D_800DC740 = 0x800DC740; -D_800DC744 = 0x800DC744; -D_800DC748 = 0x800DC748; -D_800DC74C = 0x800DC74C; -D_800DC754 = 0x800DC754; -D_800DC75C = 0x800DC75C; -D_800DC760 = 0x800DC760; -D_800DC764 = 0x800DC764; -D_800DC768 = 0x800DC768; -D_800DC7A8 = 0x800DC7A8; -D_800DC7B8 = 0x800DC7B8; -D_800DC820 = 0x800DC820; -D_800DC840 = 0x800DC840; -D_800DC848 = 0x800DC848; -D_800DC858 = 0x800DC858; -D_800DC860 = 0x800DC860; -D_800DC874 = 0x800DC874; -D_800DC87C = 0x800DC87C; -D_800DC884 = 0x800DC884; -D_800DC8AC = 0x800DC8AC; -D_800DC918 = 0x800DC918; -D_800DC91C = 0x800DC91C; -D_800DC924 = 0x800DC924; -D_800DC92C = 0x800DC92C; -D_800DC950 = 0x800DC950; -D_800DC954 = 0x800DC954; -D_800DC958 = 0x800DC958; -D_800DC95C = 0x800DC95C; -D_800DC960 = 0x800DC960; -D_800DC964 = 0x800DC964; -D_800DC968 = 0x800DC968; -D_800DC970 = 0x800DC970; -D_800DC978 = 0x800DC978; -D_800DC980 = 0x800DC980; -D_800DC9A8 = 0x800DC9A8; -D_800DC9D0 = 0x800DC9D0; -D_800DCA50 = 0x800DCA50; -D_800DCA58 = 0x800DCA58; -D_800DCA64 = 0x800DCA64; -D_800DCA70 = 0x800DCA70; -D_800DCA7C = 0x800DCA7C; -D_800DCA88 = 0x800DCA88; -D_800DCA94 = 0x800DCA94; -D_800DCA9C = 0x800DCA9C; -D_800DCAA8 = 0x800DCAA8; -D_800DCB28 = 0x800DCB28; -D_800DCB50 = 0x800DCB50; -D_800DCB54 = 0x800DCB54; -D_800DCB98 = 0x800DCB98; -D_800DCB9C = 0x800DCB9C; -D_800DCBE8 = 0x800DCBE8; -D_800DCC34 = 0x800DCC34; -D_800DCC80 = 0x800DCC80; -D_800DCCCC = 0x800DCCCC; -D_800DCCF4 = 0x800DCCF4; -D_800DCD40 = 0x800DCD40; -D_800DCD90 = 0x800DCD90; -D_800DCDA0 = 0x800DCDA0; -D_800DCDA8 = 0x800DCDA8; -D_800DCDB0 = 0x800DCDB0; -D_800DCDD0 = 0x800DCDD0; -D_800DCDD4 = 0x800DCDD4; -D_800DCDE0 = 0x800DCDE0; -D_800DCE00 = 0x800DCE00; -D_800DCE20 = 0x800DCE20; -D_800DCE40 = 0x800DCE40; -D_800DCE60 = 0x800DCE60; -D_800DCE80 = 0x800DCE80; -D_800DCEA0 = 0x800DCEA0; -D_800DCEA4 = 0x800DCEA4; -D_800DCEB0 = 0x800DCEB0; -D_800DCEC0 = 0x800DCEC0; -D_800DCF28 = 0x800DCF28; -D_800DCFB0 = 0x800DCFB0; -D_800DCFD8 = 0x800DCFD8; -D_800DD000 = 0x800DD000; -D_800DD028 = 0x800DD028; -D_800DD050 = 0x800DD050; -D_800DD060 = 0x800DD060; -D_800DD064 = 0x800DD064; -D_800DD094 = 0x800DD094; -D_800DD134 = 0x800DD134; -D_800DD148 = 0x800DD148; -D_800DD288 = 0x800DD288; -D_800DD2A0 = 0x800DD2A0; -D_800DD2B8 = 0x800DD2B8; -D_800DD2CC = 0x800DD2CC; -D_800DD2F8 = 0x800DD2F8; -D_800DD300 = 0x800DD300; -D_800DD304 = 0x800DD304; -D_800DD310 = 0x800DD310; -D_800DD314 = 0x800DD314; -D_800DD318 = 0x800DD318; -D_800DD31C = 0x800DD31C; -D_800DD320 = 0x800DD320; -D_800DD324 = 0x800DD324; -D_800DD328 = 0x800DD328; -D_800DD32C = 0x800DD32C; -D_800DD330 = 0x800DD330; -D_800DD374 = 0x800DD374; -D_800DD37C = 0x800DD37C; -D_800DD380 = 0x800DD380; -D_800DD384 = 0x800DD384; -D_800DD38C = 0x800DD38C; -D_800DD390 = 0x800DD390; -D_800DD394 = 0x800DD394; -D_800DD398 = 0x800DD398; -D_800DD39C = 0x800DD39C; -D_800DD3A0 = 0x800DD3A0; -D_800DD3B0 = 0x800DD3B0; -D_800DD3BC = 0x800DD3BC; -D_800DD3C0 = 0x800DD3C0; -D_800DD3CC = 0x800DD3CC; -D_800DD3D0 = 0x800DD3D0; -D_800DD3DC = 0x800DD3DC; -D_800DD3E0 = 0x800DD3E0; -D_800DD3EC = 0x800DD3EC; -D_800DD3F0 = 0x800DD3F0; -D_800DD3F4 = 0x800DD3F4; -D_800DD404 = 0x800DD404; -D_800DD407 = 0x800DD407; -D_800DD408 = 0x800DD408; -D_800DD41C = 0x800DD41C; -D_800DD424 = 0x800DD424; D_800DD430 = 0x800DD430; D_800DD434 = 0x800DD434; D_800DD438 = 0x800DD438; D_800DD43C = 0x800DD43C; D_800DDC3E = 0x800DDC3E; -D_800DE440 = 0x800DE440; -D_800DE444 = 0x800DE444; -D_800DE488 = 0x800DE488; -D_800DE48C = 0x800DE48C; -D_800DE490 = 0x800DE490; -D_800DE4B0 = 0x800DE4B0; -D_800DE4B4 = 0x800DE4B4; -D_800DE4B8 = 0x800DE4B8; -D_800DE4BC = 0x800DE4BC; -D_800DE4C0 = 0x800DE4C0; -D_800DE4C4 = 0x800DE4C4; -D_800DE4C8 = 0x800DE4C8; -D_800DE4CC = 0x800DE4CC; -D_800DE4D0 = 0x800DE4D0; -D_800DE4D4 = 0x800DE4D4; -D_800DE4D8 = 0x800DE4D8; -D_800DE4DC = 0x800DE4DC; -D_800DE4E0 = 0x800DE4E0; -D_800DE520 = 0x800DE520; -D_800DE598 = 0x800DE598; -D_800DE5E0 = 0x800DE5E0; -D_800DE628 = 0x800DE628; -D_800DE670 = 0x800DE670; -D_800DE6A8 = 0x800DE6A8; -D_800DE6E8 = 0x800DE6E8; -D_800DE730 = 0x800DE730; -D_800DE738 = 0x800DE738; -D_800DE740 = 0x800DE740; -D_800DE744 = 0x800DE744; -D_800DE748 = 0x800DE748; -D_800DE74C = 0x800DE74C; -D_800DE750 = 0x800DE750; -D_800DE754 = 0x800DE754; -D_800DE758 = 0x800DE758; -D_800DE760 = 0x800DE760; -D_800DE764 = 0x800DE764; -D_800DE770 = 0x800DE770; -D_800DE77C = 0x800DE77C; -D_800DE7BC = 0x800DE7BC; -D_800DE7C0 = 0x800DE7C0; -D_800DE7C4 = 0x800DE7C4; -D_800DE7C8 = 0x800DE7C8; -D_800DE848 = 0x800DE848; -D_800DE868 = 0x800DE868; -D_800DE8E8 = 0x800DE8E8; -D_800DECE8 = 0x800DECE8; -D_800DEDE8 = 0x800DEDE8; -D_800DEEE8 = 0x800DEEE8; -D_800DEF28 = 0x800DEF28; -D_800DF028 = 0x800DF028; -D_800DF0A8 = 0x800DF0A8; -D_800DF1A8 = 0x800DF1A8; -D_800DF3A8 = 0x800DF3A8; -D_800DF3D8 = 0x800DF3D8; -D_800DF410 = 0x800DF410; -D_800DF440 = 0x800DF440; -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;