diff options
| author | Tyler McGavran <tyler.taggerung@gmail.com> | 2022-01-09 22:02:34 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-09 20:02:34 -0700 |
| commit | dd05d49f5f854cbd98a2995efa02db6935923636 (patch) | |
| tree | 86edec090da89e89d346ba6a65dd91dbefe56623 /src | |
| parent | bc99dedb8bc0d8a1f6fed20e36ed60a3ed70b01b (diff) | |
Update the GfxPool struct and match some functions (#134)
* Update the GfxPool struct and match some functions
Also reordered variables.h a bit
* Match 2 more functions
* Replace reaming ->buffer references with ->mtxPool
Update the mips_to_c output of a couple functions based on new GfxPool
definition
Signed-off-by: Taggerung <tyler.taggerung@gmail.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/code_80040E50.c | 164 | ||||
| -rw-r--r-- | src/code_80040E50.h | 11 | ||||
| -rw-r--r-- | src/code_800431B0.c | 57 | ||||
| -rw-r--r-- | src/code_80057C60.c | 32 | ||||
| -rw-r--r-- | src/code_80091750.c | 599 | ||||
| -rw-r--r-- | src/code_80091750.h | 48 | ||||
| -rw-r--r-- | src/code_800AF9B0.h | 1 | ||||
| -rw-r--r-- | src/code_80280000.c | 8 | ||||
| -rw-r--r-- | src/code_80280650.c | 13 | ||||
| -rw-r--r-- | src/code_80281C40.c | 8 | ||||
| -rw-r--r-- | src/code_802A3730.c | 116 | ||||
| -rw-r--r-- | src/gbiMacro.c | 4 | ||||
| -rw-r--r-- | src/main.c | 12 | ||||
| -rw-r--r-- | src/main.h | 13 |
14 files changed, 459 insertions, 627 deletions
diff --git a/src/code_80040E50.c b/src/code_80040E50.c index 19c0526f9..ff7767a79 100644 --- a/src/code_80040E50.c +++ b/src/code_80040E50.c @@ -1,6 +1,9 @@ #include <ultra64.h> #include <macros.h> #include <common_structs.h> +#include "code_80040E50.h" +#include "main.h" +#include "variables.h" //#ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 @@ -696,59 +699,164 @@ GLOBAL_ASM("asm/non_matchings/code_80040E50/func_80041D24.s") #endif #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 +//generated by mips_to_c commit 5bd751fca3befef73d6a2e20d84a88cc918a77fe +void guOrtho(Mtx *, f32, f32, f32, f32, f32, f32, f32); /* extern */ +extern s32 D_800DC52C; extern s8 D_801658FE; extern Mtx D_80183D60; void func_80041D34(void) { - s32 temp_v0; - guOrtho(&D_80183D60, 0.0f, 320.0f, 240.0f, 0.0f, -1.0f, 1.0f, 1.0f); - temp_v0 = D_800DC52C; - if (temp_v0 != 0) { - if (temp_v0 != 1) { - if (temp_v0 != 2) { - if (temp_v0 != 3) { - return; - } - guOrtho(&gGfxPool->buffer[40], 0.0f, 320.0f, 240.0f, 0.0f, -1.0f, 1.0f, 1.0f); - return; - } - guOrtho(&gGfxPool->buffer[40], 0.0f, 160.0f, 120.0f, 0.0f, -1.0f, 1.0f, 1.0f); - return; - } + switch (D_800DC52C) { /* irregular */ + case 0: + guOrtho(&gGfxPool->mtxPool[5], 0.0f, 320.0f, 240.0f, 0.0f, -1.0f, 1.0f, 1.0f); + break; + case 2: + guOrtho(&gGfxPool->mtxPool[5], 0.0f, 160.0f, 120.0f, 0.0f, -1.0f, 1.0f, 1.0f); + break; + case 1: if (D_801658FE == 0) { - guOrtho(&gGfxPool->buffer[40], 0.0f, 320.0f, 120.0f, 0.0f, -1.0f, 1.0f, 1.0f); - return; + guOrtho(&gGfxPool->mtxPool[5], 0.0f, 320.0f, 120.0f, 0.0f, -1.0f, 1.0f, 1.0f); + break; } - guOrtho(&gGfxPool->buffer[40], 0.0f, 320.0f, 240.0f, 0.0f, -1.0f, 1.0f, 1.0f); - return; + guOrtho(&gGfxPool->mtxPool[5], 0.0f, 320.0f, 240.0f, 0.0f, -1.0f, 1.0f, 1.0f); + break; + case 3: + guOrtho(&gGfxPool->mtxPool[5], 0.0f, 320.0f, 240.0f, 0.0f, -1.0f, 1.0f, 1.0f); + break; } - guOrtho(&gGfxPool->buffer[40], 0.0f, 320.0f, 240.0f, 0.0f, -1.0f, 1.0f, 1.0f); } #else GLOBAL_ASM("asm/non_matchings/code_80040E50/func_80041D34.s") #endif +void func_80041EF4(void) { + gDPSetTexturePersp(gDisplayListHead++, G_TP_PERSP); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[5]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); +} + #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 +? func_80022180(s32, ? *, s32 *); /* extern */ +? func_80041A78(? *, s32, ?); /* extern */ +extern s32 D_8018D120; extern void *gDisplayListHead; +extern s32 gGfxPool; -void func_80041EF4(void) { +UNUSED void func_80041F54(s32 arg0, ? arg1) { + ? sp20; + void *temp_v1; + + func_80041A78(&sp20, arg0, arg1); + func_80022180(gGfxPool + (D_8018D120 << 6) + 0x2C0, &sp20, &D_8018D120); + temp_v1 = gDisplayListHead; + gDisplayListHead = temp_v1 + 8; + temp_v1->unk0 = 0x01020040; + temp_v1->unk4 = (s32) ((gGfxPool + (D_8018D120 << 6) + 0x2C0) & 0x1FFFFFFF); + D_8018D120 += 1; +} +#else +GLOBAL_ASM("asm/non_matchings/code_80040E50/func_80041F54.s") +#endif + +#ifdef MIPS_TO_C +? func_80022180(s32, ? *, s32 *); /* extern */ +? func_80041AD8(? *, s32); /* extern */ +extern s32 D_8018D120; +extern void *gDisplayListHead; +extern s32 gGfxPool; + +UNUSED void func_80042000(s32 arg0) { + ? sp20; + void *temp_v1; + + func_80041AD8(&sp20, arg0 & 0xFFFF); + func_80022180(gGfxPool + (D_8018D120 << 6) + 0x2C0, &sp20, &D_8018D120); + temp_v1 = gDisplayListHead; + gDisplayListHead = temp_v1 + 8; + temp_v1->unk0 = 0x01020040; + temp_v1->unk4 = (s32) ((gGfxPool + (D_8018D120 << 6) + 0x2C0) & 0x1FFFFFFF); + D_8018D120 += 1; +} +#else +GLOBAL_ASM("asm/non_matchings/code_80040E50/func_80042000.s") +#endif + +#ifdef MIPS_TO_C +? func_80022180(s32, ? *, s32 *); /* extern */ +? func_80041B68(? *, f32); /* extern */ +extern s32 D_8018D120; +extern void *gDisplayListHead; +extern s32 gGfxPool; + +UNUSED void func_800420A8(f32 arg0) { + ? sp20; + void *temp_v1; + + func_80041B68(&sp20, arg0); + func_80022180(gGfxPool + (D_8018D120 << 6) + 0x2C0, &sp20, &D_8018D120); + temp_v1 = gDisplayListHead; + gDisplayListHead = temp_v1 + 8; + temp_v1->unk0 = 0x01020040; + temp_v1->unk4 = (s32) ((gGfxPool + (D_8018D120 << 6) + 0x2C0) & 0x1FFFFFFF); + D_8018D120 += 1; +} +#else +GLOBAL_ASM("asm/non_matchings/code_80040E50/func_800420A8.s") +#endif + +#ifdef MIPS_TO_C +? func_80022180(s32, ? *, s32 *); /* extern */ +? func_80041BBC(?, ? *, u16, ?); /* extern */ +extern s32 D_8018D120; +extern void *gDisplayListHead; +extern s32 gGfxPool; + +UNUSED void func_8004214C(u16 arg0, ? arg1) { + ? sp20; + void *temp_v1; + + func_80041BBC(arg1, &sp20, arg0, arg1); + func_80022180(gGfxPool + (D_8018D120 << 6) + 0x2C0, &sp20, &D_8018D120); + temp_v1 = gDisplayListHead; + gDisplayListHead = temp_v1 + 8; + temp_v1->unk0 = 0x01020040; + temp_v1->unk4 = (s32) ((gGfxPool + (D_8018D120 << 6) + 0x2C0) & 0x1FFFFFFF); + D_8018D120 += 1; +} +#else +GLOBAL_ASM("asm/non_matchings/code_80040E50/func_8004214C.s") +#endif + +#ifdef MIPS_TO_C +? func_80022180(s32, ? *); /* extern */ +? func_80041A78(? *, s32, s32); /* extern */ +? func_80041B68(? *, s32, void **); /* extern */ +extern s32 D_8018D120; +extern void *gDisplayListHead; +extern s32 gGfxPool; + +UNUSED void func_800421FC(s32 arg0, s32 arg1, s32 arg2) { + ? sp30; void *temp_v1; void *temp_v1_2; + func_80041A78(&sp30, arg0, arg1); + func_80022180(gGfxPool + (D_8018D120 << 6) + 0x2C0, &sp30); temp_v1 = gDisplayListHead; gDisplayListHead = temp_v1 + 8; - temp_v1->unk4 = 0x80000; - temp_v1->unk0 = 0xBA001301; + temp_v1->unk0 = 0x01020040; + temp_v1->unk4 = (s32) ((gGfxPool + (D_8018D120 << 6) + 0x2C0) & 0x1FFFFFFF); + D_8018D120 += 1; + func_80041B68(&sp30, arg2, &gDisplayListHead); + func_80022180(gGfxPool + (D_8018D120 << 6) + 0x2C0, &sp30); temp_v1_2 = gDisplayListHead; gDisplayListHead = temp_v1_2 + 8; - temp_v1_2->unk0 = 0x1030040; - temp_v1_2->unk4 = &gGfxPool->buffer[40] & 0x1FFFFFFF; + temp_v1_2->unk0 = 0x01000040; + temp_v1_2->unk4 = (s32) ((gGfxPool + (D_8018D120 << 6) + 0x2C0) & 0x1FFFFFFF); + D_8018D120 += 1; } #else -GLOBAL_ASM("asm/non_matchings/code_80040E50/func_80041EF4.s") +GLOBAL_ASM("asm/non_matchings/code_80040E50/func_800421FC.s") #endif #ifdef MIPS_TO_C diff --git a/src/code_80040E50.h b/src/code_80040E50.h new file mode 100644 index 000000000..0f5015d70 --- /dev/null +++ b/src/code_80040E50.h @@ -0,0 +1,11 @@ +#ifndef CODE_80040E50_H +#define CODE_80040E50_H + +#include "common_structs.h" + +/* Function Prototypes */ +void func_80041EF4(); + +/* This is where I'd put my static data, if I had any */ + +#endif
\ No newline at end of file diff --git a/src/code_800431B0.c b/src/code_800431B0.c index 16f66f07f..4052f3168 100644 --- a/src/code_800431B0.c +++ b/src/code_800431B0.c @@ -9449,58 +9449,33 @@ GLOBAL_ASM("asm/non_matchings/code_800431B0/func_80055F48.s") #endif #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? func_80022180(void *, ? *); // extern -? func_800425D0(? *, void *, void *, s32); // extern -? func_802B4FF8(? *, ?); // extern -? mtxf_identity(? *); // extern -extern ? D_0D0077A0; +//generated by mips_to_c commit 5bd751fca3befef73d6a2e20d84a88cc918a77fe +? func_80022180(Mtx *, ? *); /* extern */ +? func_800425D0(? *, void *, void *, s32); /* extern */ +? func_802B4FF8(? *, ?); /* extern */ +? mtxf_identity(? *); /* extern */ +extern Gfx D_0D0077A0[]; extern ? D_80165C18; extern s32 D_8018D120; -extern void *gDisplayListHead; -void func_80055FA0(s32 arg0, ? arg1) { +void func_80055FA0(s32 arg0, s32 arg1) { ? sp80; ? sp40; void *sp20; void *temp_t0; - void *temp_v0; - void *temp_v0_2; - void *temp_v0_3; - void *temp_v0_4; - void *temp_v0_5; - void *temp_v0_6; temp_t0 = (arg0 * 0xE0) + &D_80165C18; - if (temp_t0->unkA6 >= 2) { - temp_v0 = gDisplayListHead; - gDisplayListHead = temp_v0 + 8; - temp_v0->unk0 = 0x1030040; - temp_v0->unk4 = &gGfxPool->buffer[8] & 0x1FFFFFFF; - temp_v0_2 = gDisplayListHead; - gDisplayListHead = temp_v0_2 + 8; - temp_v0_2->unk0 = 0x1020040; - temp_v0_2->unk4 = &gGfxPool->buffer[56] & 0x1FFFFFFF; + if ((s32) temp_t0->unkA6 >= 2) { + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[1]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[7]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); sp20 = temp_t0; func_800425D0(&sp80, temp_t0 + 4, temp_t0 + 0xBE, temp_t0->unk0); - func_80022180(gGfxPool + (D_8018D120 << 6) + 0x2C0, &sp80); - temp_v0_3 = gDisplayListHead; - gDisplayListHead = temp_v0_3 + 8; - temp_v0_3->unk0 = 0x1000040; - temp_v0_3->unk4 = (gGfxPool + (D_8018D120 << 6) + 0x2C0) & 0x1FFFFFFF; - temp_v0_4 = gDisplayListHead; - D_8018D120 = D_8018D120 + 1; - gDisplayListHead = temp_v0_4 + 8; - temp_v0_4->unk4 = &D_0D0077A0; - temp_v0_4->unk0 = 0x6000000; - temp_v0_5 = gDisplayListHead; - gDisplayListHead = temp_v0_5 + 8; - temp_v0_5->unk0 = 0x6000000; - temp_v0_5->unk4 = temp_t0->unk70; - temp_v0_6 = gDisplayListHead; - gDisplayListHead = temp_v0_6 + 8; - temp_v0_6->unk0 = 0x1010040; - temp_v0_6->unk4 = &gGfxPool->buffer[56] & 0x1FFFFFFF; + func_80022180(&gGfxPool->mtxPool[D_8018D120 + 0xB], &sp80); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[D_8018D120 + 0xB]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW); + D_8018D120++; + gSPDisplayList(gDisplayListHead++, D_0D0077A0); + gSPDisplayList(gDisplayListHead++, sp20->unk70); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[7]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(&sp40); func_802B4FF8(&sp40, 0); } diff --git a/src/code_80057C60.c b/src/code_80057C60.c index 5192b92f5..abd9bcd80 100644 --- a/src/code_80057C60.c +++ b/src/code_80057C60.c @@ -185,8 +185,8 @@ extern u16 D_800DC51C; void func_800581C8(void) { gDPSetTexturePersp(gDisplayListHead++, G_TP_PERSP); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[8]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[56]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[1]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[7]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); func_8001C3C4(0); if (D_800DC50C == ENDING_SEQUENCE) { @@ -205,8 +205,8 @@ void func_800581C8(void) { void func_800582CC(void) { gDPSetTexturePersp(gDisplayListHead++, G_TP_PERSP); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[16]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[64]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[2]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[8]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); func_8001C3C4(1); if (D_800DC51C == 0) { func_800532A4(1); @@ -216,8 +216,8 @@ void func_800582CC(void) { void func_80058394(void) { gDPSetTexturePersp(gDisplayListHead++, G_TP_PERSP); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[24]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[72]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[3]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[9]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); func_8001C3C4(2); if (D_800DC51C == 0) { func_800532A4(2); @@ -228,8 +228,8 @@ void func_80058394(void) { void func_8005845C(void) { gDPSetTexturePersp(gDisplayListHead++, G_TP_PERSP); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[32]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[80]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[4]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[10]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); func_8001C3C4(3); if ((D_800DC51C == 0) && (gPlayerCountSelection1 == 4)) { func_800532A4(3); @@ -289,8 +289,8 @@ void func_80058B58(); void func_80058640(void) { gDPSetTexturePersp(gDisplayListHead++, G_TP_PERSP); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[8]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[56]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[1]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[7]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); if (D_800DC50C != ENDING_SEQUENCE) { func_80058B58(0); } @@ -298,22 +298,22 @@ void func_80058640(void) { void func_800586FC(void) { gDPSetTexturePersp(gDisplayListHead++, G_TP_PERSP); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[16]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[64]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[2]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[8]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); func_80058B58(1); } void func_800587A4(void) { gDPSetTexturePersp(gDisplayListHead++, G_TP_PERSP); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[24]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[72]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[3]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[9]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); func_80058B58(2); } void func_8005884C(void) { gDPSetTexturePersp(gDisplayListHead++, G_TP_PERSP); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[32]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[80]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[4]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[10]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); func_80058B58(3); } diff --git a/src/code_80091750.c b/src/code_80091750.c index f49aefb3a..d5d79122f 100644 --- a/src/code_80091750.c +++ b/src/code_80091750.c @@ -4,6 +4,9 @@ #include "code_80091750.h" #include "code_800AF9B0.h" #include "variables.h" +// TODO: Move gGfxPool out of main.h +// Unfortunately that's not a small effort due to weird import structure in this project +#include "main.h" f64 exponent_by_squaring(f64 base, s32 exponent) { s32 positive_exponent; @@ -535,18 +538,16 @@ GLOBAL_ASM("asm/non_matchings/code_80091750/func_80092258.s") #endif #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void *segmented_to_virtual_dupe(segment_address_t); // extern -extern s32 D_800E84C0; -extern ? D_800E84CC; -extern s32 gGlobalTimer; +//generated by mips_to_c commit 5bd751fca3befef73d6a2e20d84a88cc918a77fe +extern ? D_02007BB8; +extern ? D_02007CD8; +extern ? D_02007DF8; +static u32 D_800E84C0[3] = { (u32) &D_02007BB8, (u32) &D_02007CD8, (u32) &D_02007DF8 }; /* const */ +static ? D_800E84CC; /* unable to generate initializer; const */ -void func_80092290(s32 arg0, s32 *arg1, s32 *arg2, s32 arg3) { - s32 *temp_a2; - s32 *temp_s0; +void func_80092290(s32 arg0, s32 *arg1, s32 *arg2) { s32 temp_a0; s32 temp_a1; - s32 temp_a3; s32 temp_s4; s32 temp_t0; s32 temp_t6; @@ -554,26 +555,22 @@ void func_80092290(s32 arg0, s32 *arg1, s32 *arg2, s32 arg3) { s32 temp_t8; s32 temp_t8_2; s32 temp_t9; - s32 temp_v0; + u32 *temp_s0; + void *temp_a2; + void *temp_v0; void *temp_v1; void *temp_v1_2; - s32 *phi_s0; - s32 *phi_a1; - s32 *phi_a2; - s32 phi_a3; + u32 *phi_s0; - phi_a1 = arg1; - phi_a2 = arg2; - phi_a3 = arg3; if ((arg0 >= 4) && (arg0 < 6)) { temp_t8 = *arg2 + 0x10; *arg2 = temp_t8; if (temp_t8 >= 0x100) { *arg2 = 0; - *arg1 = (*arg1 + 1) % 3; + *arg1 = (s32) (*arg1 + 1) % 3; } - temp_s4 = (((arg0 * 4) + ((gGlobalTimer % 2) * 2)) - 6) * 0x10; - phi_s0 = &D_800E84C0; + temp_s4 = (((arg0 * 4) + (((s32) gGlobalTimer % 2) * 2)) - 6) * 0x10; + phi_s0 = D_800E84C0; do { temp_v0 = segmented_to_virtual_dupe(*phi_s0); temp_a0 = *arg2; @@ -582,24 +579,20 @@ void func_80092290(s32 arg0, s32 *arg1, s32 *arg2, s32 arg3) { temp_s0 = phi_s0 + 4; temp_t0 = (*arg1 * 2) + 2; temp_v1 = temp_v0 + (temp_t0 * 0x10); - temp_a3 = (temp_t0 % 6) + 2; - temp_v1_2 = temp_v0 + (temp_a3 * 0x10); - temp_t6 = ((temp_a1 * temp_v1->unkC) + (temp_a0 * temp_v1_2->unkC)) / 0x100; - temp_a2->unkC = temp_t6; - temp_t9 = ((temp_a1 * temp_v1->unkD) + (temp_a0 * temp_v1_2->unkD)) / 0x100; - temp_a2->unkD = temp_t9; - temp_t7 = ((temp_a1 * temp_v1->unkE) + (temp_a0 * temp_v1_2->unkE)) / 0x100; - temp_a2->unkE = temp_t7; - temp_t8_2 = ((temp_a1 * temp_v1->unkF) + (temp_a0 * temp_v1_2->unkF)) / 0x100; - temp_a2->unkF = temp_t8_2; - temp_a2->unk1C = temp_t6; - temp_a2->unk1D = temp_t9; - temp_a2->unk1E = temp_t7; - temp_a2->unk1F = temp_t8_2; + temp_v1_2 = temp_v0 + (((temp_t0 % 6) + 2) * 0x10); + temp_t6 = (s32) ((temp_a1 * temp_v1->unkC) + (temp_a0 * temp_v1_2->unkC)) / 256; + temp_a2->unkC = (s8) temp_t6; + temp_t9 = (s32) ((temp_a1 * temp_v1->unkD) + (temp_a0 * temp_v1_2->unkD)) / 256; + temp_a2->unkD = (s8) temp_t9; + temp_t7 = (s32) ((temp_a1 * temp_v1->unkE) + (temp_a0 * temp_v1_2->unkE)) / 256; + temp_a2->unkE = (s8) temp_t7; + temp_t8_2 = (s32) ((temp_a1 * temp_v1->unkF) + (temp_a0 * temp_v1_2->unkF)) / 256; + temp_a2->unkF = (s8) temp_t8_2; + temp_a2->unk1C = (s8) temp_t6; + temp_a2->unk1D = (s8) temp_t9; + temp_a2->unk1E = (s8) temp_t7; + temp_a2->unk1F = (s8) temp_t8_2; phi_s0 = temp_s0; - phi_a1 = temp_t8_2; - phi_a2 = temp_a2; - phi_a3 = temp_a3; } while (temp_s0 != &D_800E84CC); } } @@ -1277,41 +1270,13 @@ void func_80093C1C(void) { GLOBAL_ASM("asm/non_matchings/code_80091750/func_80093C1C.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? func_8009CA6C(?); // extern -? func_800A54EC(); // extern -? func_800A8250(); // extern -extern ? D_02007F18; -extern s16 D_80164AF0; -extern s32 D_80165754; -extern ? D_802B8880; -extern void *gDisplayListHead; - void func_80093C98(s32 arg0) { - void *temp_v0; - void *temp_v0_2; - void *temp_v0_3; - void *temp_v0_4; - - temp_v0 = gDisplayListHead; - gDisplayListHead = temp_v0 + 8; - temp_v0->unk4 = &D_802B8880 & 0x1FFFFFFF; - temp_v0->unk0 = 0x3800010; - guOrtho(gGfxPool + (D_80164AF0 << 6) + 0xFAC0, 0.0f, 319.0f, 239.0f, 0.0f, -100.0f, 100.0f, 1.0f); - temp_v0_2 = gDisplayListHead; - gDisplayListHead = temp_v0_2 + 8; - temp_v0_2->unk0 = 0x1030040; - temp_v0_2->unk4 = (gGfxPool + (D_80164AF0 << 6) + 0xFAC0) & 0x1FFFFFFF; - temp_v0_3 = gDisplayListHead; - D_80164AF0 = D_80164AF0 + 1; - gDisplayListHead = temp_v0_3 + 8; - temp_v0_3->unk0 = 0x6000000; - temp_v0_3->unk4 = &D_02007F18; - temp_v0_4 = gDisplayListHead; - gDisplayListHead = temp_v0_4 + 8; - temp_v0_4->unk0 = 0xED000000; - temp_v0_4->unk4 = 0x5003C0; + gSPViewport(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(D_802B8880)); + guOrtho(&gGfxPool->mtxPool[D_80164AF0 + 0x3EB], 0.0f, 319.0f, 239.0f, 0.0f, -100.0f, 100.0f, 1.0f); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[D_80164AF0 + 0x3EB]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + D_80164AF0++; + gSPDisplayList(gDisplayListHead++, D_02007F18); + gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, 320, 240); func_800A8250(); if (arg0 == 0) { func_800A54EC(); @@ -1320,9 +1285,6 @@ void func_80093C98(s32 arg0) { D_80164AF0 = 0; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_80093C98.s") -#endif void func_80093E20(void) { func_80093C98(0); @@ -1375,51 +1337,13 @@ void func_80093E60(void) { GLOBAL_ASM("asm/non_matchings/code_80091750/func_80093E60.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? func_80092290(?, ? *, ? *); // extern -? func_80099A70(); // extern -? func_80099AEC(); // extern -? func_80099E54(); // extern -? func_80099EC4(); // extern -? func_8009C918(); // extern -? func_8009CA2C(); // extern -? func_800A8230(); // extern -extern ? D_02007F18; -extern ? D_02007F48; -extern s16 D_80164AF0; -extern ? D_8018E850; -extern ? D_8018E854; -extern ? D_8018E858; -extern ? D_8018E85C; -extern ? D_802B8880; -extern void *gDisplayListHead; - void func_80093F10(void) { - void *temp_v0; - void *temp_v0_2; - void *temp_v0_3; - void *temp_v0_4; - void *temp_v0_5; - - temp_v0 = gDisplayListHead; - gDisplayListHead = temp_v0 + 8; - temp_v0->unk4 = &D_802B8880 & 0x1FFFFFFF; - temp_v0->unk0 = 0x3800010; - guOrtho(gGfxPool + (D_80164AF0 << 6) + 0xFAC0, 0.0f, 319.0f, 239.0f, 0.0f, -100.0f, 100.0f, 1.0f); - temp_v0_2 = gDisplayListHead; - gDisplayListHead = temp_v0_2 + 8; - temp_v0_2->unk0 = 0x1030040; - temp_v0_2->unk4 = (gGfxPool + (D_80164AF0 << 6) + 0xFAC0) & 0x1FFFFFFF; - temp_v0_3 = gDisplayListHead; - D_80164AF0 = D_80164AF0 + 1; - gDisplayListHead = temp_v0_3 + 8; - temp_v0_3->unk0 = 0x6000000; - temp_v0_3->unk4 = &D_02007F18; - temp_v0_4 = gDisplayListHead; - gDisplayListHead = temp_v0_4 + 8; - temp_v0_4->unk0 = 0xED000000; - temp_v0_4->unk4 = 0x5003C0; + gSPViewport(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(D_802B8880)); + guOrtho(&gGfxPool->mtxPool[D_80164AF0 + 0x3EB], 0.0f, 319.0f, 239.0f, 0.0f, -100.0f, 100.0f, 1.0f); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[D_80164AF0 + 0x3EB]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + D_80164AF0++; + gSPDisplayList(gDisplayListHead++, D_02007F18); + gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, 320, 240); func_80092290(4, &D_8018E850, &D_8018E858); func_80092290(5, &D_8018E854, &D_8018E85C); func_8009C918(); @@ -1429,62 +1353,17 @@ void func_80093F10(void) { func_80099AEC(); func_80099EC4(); func_8009CA2C(); - temp_v0_5 = gDisplayListHead; - gDisplayListHead = temp_v0_5 + 8; - temp_v0_5->unk0 = 0x6000000; - temp_v0_5->unk4 = &D_02007F48; + gSPDisplayList(gDisplayListHead++, D_02007F48); D_80164AF0 = 0; } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_80093F10.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? func_80057CE4(); // extern -? func_80092148(); // extern -? func_80092290(?, ? *, ? *); // extern -? func_80099A70(); // extern -? func_80099AEC(); // extern -? func_80099E54(); // extern -? func_80099EC4(); // extern -? func_8009CA6C(s32); // extern -? func_800A8230(); // extern -extern ? D_02007F18; -extern ? D_02007F48; -extern s16 D_80164AF0; -extern ? D_8018E850; -extern ? D_8018E854; -extern ? D_8018E858; -extern ? D_8018E85C; -extern ? D_802B8880; -extern void *gDisplayListHead; void func_800940EC(s32 arg0) { - void *temp_v0; - void *temp_v0_2; - void *temp_v0_3; - void *temp_v0_4; - void *temp_v0_5; - - temp_v0 = gDisplayListHead; - gDisplayListHead = temp_v0 + 8; - temp_v0->unk4 = &D_802B8880 & 0x1FFFFFFF; - temp_v0->unk0 = 0x3800010; - temp_v0_2 = gDisplayListHead; - gDisplayListHead = temp_v0_2 + 8; - temp_v0_2->unk0 = 0xED000000; - temp_v0_2->unk4 = 0x5003C0; - guOrtho(gGfxPool + (D_80164AF0 << 6) + 0xFAC0, 0.0f, 319.0f, 239.0f, 0.0f, -100.0f, 100.0f, 1.0f); - temp_v0_3 = gDisplayListHead; - gDisplayListHead = temp_v0_3 + 8; - temp_v0_3->unk0 = 0x1030040; - temp_v0_3->unk4 = (gGfxPool + (D_80164AF0 << 6) + 0xFAC0) & 0x1FFFFFFF; - temp_v0_4 = gDisplayListHead; - D_80164AF0 = D_80164AF0 + 1; - gDisplayListHead = temp_v0_4 + 8; - temp_v0_4->unk0 = 0x6000000; - temp_v0_4->unk4 = &D_02007F18; + gSPViewport(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(D_802B8880)); + gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, 320, 240); + guOrtho(&gGfxPool->mtxPool[D_80164AF0 + 0x3EB], 0.0f, 319.0f, 239.0f, 0.0f, -100.0f, 100.0f, 1.0f); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[D_80164AF0 + 0x3EB]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + D_80164AF0++; + gSPDisplayList(gDisplayListHead++, D_02007F18); func_80092290(4, &D_8018E850, &D_8018E858); func_80092290(5, &D_8018E854, &D_8018E85C); func_80092148(); @@ -1494,52 +1373,38 @@ void func_800940EC(s32 arg0) { func_80099AEC(); func_80099EC4(); func_8009CA6C(arg0); - temp_v0_5 = gDisplayListHead; - gDisplayListHead = temp_v0_5 + 8; - temp_v0_5->unk0 = 0x6000000; - temp_v0_5->unk4 = &D_02007F48; + gSPDisplayList(gDisplayListHead++, D_02007F48); func_80057CE4(); } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_800940EC.s") -#endif #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern ? D_02007F60; +//generated by mips_to_c commit 5bd751fca3befef73d6a2e20d84a88cc918a77fe extern ? D_06009410; -extern f32 D_800E8530; -extern f32 D_800E8534; -extern f32 D_8018EDC4; -extern f32 D_8018EDC8; -extern f32 D_8018EDCC; -extern void *gDisplayListHead; void func_800942D0(void) { ? *sp6C; - Gfx *temp_s1; - Gfx *temp_s1_2; - Gfx *temp_s4; + Gfx *temp_v0; + Gfx *temp_v0_10; + Gfx *temp_v0_11; + Gfx *temp_v0_12; + Gfx *temp_v0_13; + Gfx *temp_v0_14; + Gfx *temp_v0_15; + Gfx *temp_v0_16; + Gfx *temp_v0_2; + Gfx *temp_v0_3; + Gfx *temp_v0_4; + Gfx *temp_v0_5; + Gfx *temp_v0_6; + Gfx *temp_v0_7; + Gfx *temp_v0_8; + Gfx *temp_v0_9; + Mtx *temp_s1; + Mtx *temp_s1_2; Mtx *temp_s1_3; + Mtx *temp_s4; Mtx *temp_s4_2; - f32 temp_f26; s32 temp_s3; - void *temp_v0; - void *temp_v0_10; - void *temp_v0_11; - void *temp_v0_12; - void *temp_v0_13; - void *temp_v0_14; - void *temp_v0_15; - void *temp_v0_16; - void *temp_v0_2; - void *temp_v0_3; - void *temp_v0_4; - void *temp_v0_5; - void *temp_v0_6; - void *temp_v0_7; - void *temp_v0_8; - void *temp_v0_9; Mtx *phi_s1; s32 phi_s2; f32 phi_f26; @@ -1547,53 +1412,52 @@ void func_800942D0(void) { temp_v0 = gDisplayListHead; gDisplayListHead = temp_v0 + 8; - temp_v0->unk0 = 0x1030040; - temp_v0->unk4 = gGfxPool; + temp_v0->words.w0 = 0x01030040; + temp_v0->words.w1 = (u32) gGfxPool; temp_v0_2 = gDisplayListHead; gDisplayListHead = temp_v0_2 + 8; - temp_v0_2->unk0 = 0x1020040; - temp_s1 = &gGfxPool->buffer[6488]; - temp_v0_2->unk4 = &gGfxPool->buffer[56]; + temp_v0_2->words.w0 = 0x01020040; + temp_s1 = &gGfxPool->mtxPool[0x32B]; + temp_v0_2->words.w1 = (u32) &gGfxPool->mtxPool[7]; guRotate(temp_s1, D_8018EDC8, 1.0f, 0.0f, 0.0f); temp_s4 = temp_s1 + 0x40; guRotate(temp_s4, D_8018EDCC, 0.0f, 1.0f, 0.0f); - guScale(temp_s1 + 0x80, 1.0f, 1.0f, D_8018EDC4); + guScale(temp_s1 + 0x80, 1.0f, 1.0f, (bitwise s32) D_8018EDC4); temp_v0_3 = gDisplayListHead; gDisplayListHead = temp_v0_3 + 8; - temp_v0_3->unk4 = temp_s1; - temp_v0_3->unk0 = 0x1000040; + temp_v0_3->words.w1 = (u32) temp_s1; + temp_v0_3->words.w0 = 0x01000040; temp_v0_4 = gDisplayListHead; temp_s1_2 = temp_s4 + 0x40; gDisplayListHead = temp_v0_4 + 8; - temp_v0_4->unk4 = temp_s4; - temp_v0_4->unk0 = 0x1000040; + temp_v0_4->words.w1 = (u32) temp_s4; + temp_v0_4->words.w0 = 0x01000040; temp_v0_5 = gDisplayListHead; gDisplayListHead = temp_v0_5 + 8; - temp_v0_5->unk4 = temp_s1_2; - temp_v0_5->unk0 = 0x1040040; + temp_v0_5->words.w1 = (u32) temp_s1_2; + temp_v0_5->words.w0 = 0x01040040; temp_v0_6 = gDisplayListHead; gDisplayListHead = temp_v0_6 + 8; - temp_v0_6->unk0 = 0xB900031D; - temp_v0_6->unk4 = 0x552078; + temp_v0_6->words.w0 = 0xB900031D; + temp_v0_6->words.w1 = 0x552078; temp_v0_7 = gDisplayListHead; gDisplayListHead = temp_v0_7 + 8; - temp_v0_7->unk4 = 0; - temp_v0_7->unk0 = 0xFB000000; + temp_v0_7->words.w1 = 0; + temp_v0_7->words.w0 = 0xFB000000; temp_v0_8 = gDisplayListHead; gDisplayListHead = temp_v0_8 + 8; - temp_v0_8->unk4 = &D_02007F60; - temp_v0_8->unk0 = 0x6000000; + temp_v0_8->words.w1 = (u32) D_02007F60; + temp_v0_8->words.w0 = 0x06000000; temp_v0_9 = gDisplayListHead; gDisplayListHead = temp_v0_9 + 8; - temp_v0_9->unk4 = 0; - temp_v0_9->unk0 = 0xBD000000; + temp_v0_9->words.w1 = 0; + temp_v0_9->words.w0 = 0xBD000000; phi_s1 = temp_s1_2 + 0x40; phi_s2 = 0; phi_s5 = 0xC0; - if (D_800E8530 > 0.0f) { - temp_f26 = D_800E8534; - phi_f26 = temp_f26; - if (temp_f26 > 10.0f) { + if (0.0f < 0.0f) { + phi_f26 = 3.0f; + if (10.0f < 3.0f) { phi_f26 = 10.0f; } sp6C = &D_06009410; @@ -1601,37 +1465,37 @@ void func_800942D0(void) { guRotate(phi_s1, 0.0f, 1.0f, 0.0f, 0.0f); temp_s3 = phi_s2 + 1; temp_s4_2 = phi_s1 + 0x40; - guRotate(temp_s4_2, temp_s3 * D_800E8530 * phi_f26, 0.0f, 1.0f, 0.0f); - guScale(phi_s1 + 0x80, 1.0f, 1.0f, 2.0f); + guRotate(temp_s4_2, (f32) temp_s3 * 0.0f * phi_f26, 0.0f, 1.0f, 0.0f); + guScale(phi_s1 + 0x80, 1.0f, 1.0f, 0x40000000); temp_v0_10 = gDisplayListHead; gDisplayListHead = temp_v0_10 + 8; - temp_v0_10->unk4 = phi_s1; - temp_v0_10->unk0 = 0x1040040; + temp_v0_10->words.w1 = (u32) phi_s1; + temp_v0_10->words.w0 = 0x01040040; temp_v0_11 = gDisplayListHead; temp_s1_3 = temp_s4_2 + 0x40; gDisplayListHead = temp_v0_11 + 8; - temp_v0_11->unk4 = temp_s4_2; - temp_v0_11->unk0 = 0x1000040; + temp_v0_11->words.w1 = (u32) temp_s4_2; + temp_v0_11->words.w0 = 0x01000040; temp_v0_12 = gDisplayListHead; gDisplayListHead = temp_v0_12 + 8; - temp_v0_12->unk4 = temp_s1_3; - temp_v0_12->unk0 = 0x1000040; + temp_v0_12->words.w1 = (u32) temp_s1_3; + temp_v0_12->words.w0 = 0x01000040; temp_v0_13 = gDisplayListHead; gDisplayListHead = temp_v0_13 + 8; - temp_v0_13->unk4 = 0x5049D8; - temp_v0_13->unk0 = 0xB900031D; + temp_v0_13->words.w1 = 0x5049D8; + temp_v0_13->words.w0 = 0xB900031D; temp_v0_14 = gDisplayListHead; gDisplayListHead = temp_v0_14 + 8; - temp_v0_14->unk4 = phi_s5 & 0xFF; - temp_v0_14->unk0 = 0xFB000000; + temp_v0_14->words.w1 = phi_s5 & 0xFF; + temp_v0_14->words.w0 = 0xFB000000; temp_v0_15 = gDisplayListHead; gDisplayListHead = temp_v0_15 + 8; - temp_v0_15->unk0 = 0x6000000; - temp_v0_15->unk4 = sp6C; + temp_v0_15->words.w0 = 0x06000000; + temp_v0_15->words.w1 = (u32) sp6C; temp_v0_16 = gDisplayListHead; gDisplayListHead = temp_v0_16 + 8; - temp_v0_16->unk4 = 0; - temp_v0_16->unk0 = 0xBD000000; + temp_v0_16->words.w1 = 0; + temp_v0_16->words.w0 = 0xBD000000; phi_s1 = temp_s1_3 + 0x40; phi_s2 = temp_s3; phi_s5 += -0x10; @@ -1642,218 +1506,59 @@ void func_800942D0(void) { GLOBAL_ASM("asm/non_matchings/code_80091750/func_800942D0.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? func_800942D0(); // extern -? move_segment_table_to_dmem(); // extern -extern s32 D_8018EDC0; -extern void *gDisplayListHead; - -void func_80094660(Mtx *arg0, ? arg1) { - u16 sp56; - void *temp_v0; - void *temp_v0_2; - void *temp_v0_3; - void *temp_v0_4; - void *temp_v0_5; - +void func_80094660(struct GfxPool *arg0, s32 unused) { + u16 perspNorm; move_segment_table_to_dmem(); - temp_v0 = gDisplayListHead; - gDisplayListHead = temp_v0 + 8; - temp_v0->unk4 = 0x80000; - temp_v0->unk0 = 0xBA001301; - guPerspective(arg0, &sp56, 45.0f, 1.3333334f, 100.0f, 12800.0f, 1.0f); - temp_v0_2 = gDisplayListHead; - gDisplayListHead = temp_v0_2 + 8; - temp_v0_2->unk0 = 0xB4000000; - temp_v0_2->unk4 = sp56; - guLookAt(arg0 + 0x1C0, 0.0f, 0.0f, D_8018EDC0, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f); + gDPSetTexturePersp(gDisplayListHead++, G_TP_PERSP); + guPerspective(&arg0->mtxPool[0], &perspNorm, 45.0f, 1.3333334f, 100.0f, 12800.0f, 1.0f); + gDPHalf1(gDisplayListHead++, perspNorm); + guLookAt(&arg0->mtxPool[7], 0.0f, 0.0f, (f32) D_8018EDC0, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f); func_800942D0(); - temp_v0_3 = gDisplayListHead; - gDisplayListHead = temp_v0_3 + 8; - temp_v0_3->unk4 = 0; - temp_v0_3->unk0 = 0xE7000000; - temp_v0_4 = gDisplayListHead; - gDisplayListHead = temp_v0_4 + 8; - temp_v0_4->unk4 = 0; - temp_v0_4->unk0 = 0xBA001301; - temp_v0_5 = gDisplayListHead; - gDisplayListHead = temp_v0_5 + 8; - temp_v0_5->unk4 = 0x2000; - temp_v0_5->unk0 = 0xBA000C02; + gDPPipeSync(gDisplayListHead++); + gDPSetTexturePersp(gDisplayListHead++, G_TP_NONE); + gDPSetTextureFilter(gDisplayListHead++, G_TF_BILERP); } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_80094660.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? func_800B0004(); // extern -? move_segment_table_to_dmem(); // extern -extern ? D_02007650; -extern ? D_02007FC8; -extern s32 D_8018EDC0; -extern f32 D_8018EDC4; -extern f32 D_8018EDC8; -extern f32 D_8018EDCC; -extern f32 D_8018EDD0; -extern f32 D_8018EDD4; -extern f32 D_8018EDD8; -extern f32 D_8018EDDC; -extern void *gDisplayListHead; - -void func_800947B4(s32 arg0, ? arg1) { - u16 sp7E; - Mtx *sp50; - Mtx *sp4C; - Mtx *sp48; - Mtx *sp44; - Mtx *sp40; - Mtx *sp3C; - Mtx *sp38; - Mtx *temp_a0; - Mtx *temp_a0_2; - Mtx *temp_a0_3; - Mtx *temp_a0_4; - Mtx *temp_a0_5; - Mtx *temp_a0_6; - Mtx *temp_a0_7; - f32 temp_f0; - void *temp_v0; - void *temp_v0_10; - void *temp_v0_2; - void *temp_v0_3; - void *temp_v0_4; - void *temp_v0_5; - void *temp_v0_6; - void *temp_v0_7; - void *temp_v0_8; - void *temp_v0_9; +void func_800947B4(struct GfxPool *arg0, s32 unused) { + u16 perspNorm; move_segment_table_to_dmem(); - temp_a0 = arg0 + 0x40; - sp50 = temp_a0; - guPerspective(temp_a0, &sp7E, 45.0f, 1.3333334f, 100.0f, 12800.0f, 1.0f); - temp_v0 = gDisplayListHead; - gDisplayListHead = temp_v0 + 8; - temp_v0->unk0 = 0xB4000000; - temp_v0->unk4 = sp7E; - temp_a0_2 = arg0 + 0x200; - sp4C = temp_a0_2; - guLookAt(temp_a0_2, 0.0f, 0.0f, D_8018EDC0, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f); - temp_a0_3 = arg0 + 0xCAC0; - sp48 = temp_a0_3; - guRotate(temp_a0_3, D_8018EDC8, 1.0f, 0.0f, 0.0f); - temp_a0_4 = arg0 + 0xCB00; - sp44 = temp_a0_4; - guRotate(temp_a0_4, D_8018EDCC, 0.0f, 1.0f, 0.0f); - temp_a0_5 = arg0 + 0xCB40; - sp40 = temp_a0_5; - guRotate(temp_a0_5, D_8018EDD0, 0.0f, 0.0f, 1.0f); - temp_a0_6 = arg0 + 0xCB80; - temp_f0 = D_8018EDC4; - sp3C = temp_a0_6; - guScale(temp_a0_6, temp_f0, temp_f0, temp_f0); - temp_a0_7 = arg0 + 0xCBC0; - sp38 = temp_a0_7; - guTranslate(temp_a0_7, D_8018EDD4, D_8018EDD8, D_8018EDDC); - temp_v0_2 = gDisplayListHead; - gDisplayListHead = temp_v0_2 + 8; - temp_v0_2->unk0 = 0x1030040; - temp_v0_2->unk4 = sp50; - temp_v0_3 = gDisplayListHead; - gDisplayListHead = temp_v0_3 + 8; - temp_v0_3->unk0 = 0x1020040; - temp_v0_3->unk4 = sp4C; - temp_v0_4 = gDisplayListHead; - gDisplayListHead = temp_v0_4 + 8; - temp_v0_4->unk0 = 0x1000040; - temp_v0_4->unk4 = sp48; - temp_v0_5 = gDisplayListHead; - gDisplayListHead = temp_v0_5 + 8; - temp_v0_5->unk0 = 0x1000040; - temp_v0_5->unk4 = sp44; - temp_v0_6 = gDisplayListHead; - gDisplayListHead = temp_v0_6 + 8; - temp_v0_6->unk0 = 0x1000040; - temp_v0_6->unk4 = sp40; - temp_v0_7 = gDisplayListHead; - gDisplayListHead = temp_v0_7 + 8; - temp_v0_7->unk0 = 0x1000040; - temp_v0_7->unk4 = sp3C; - temp_v0_8 = gDisplayListHead; - gDisplayListHead = temp_v0_8 + 8; - temp_v0_8->unk0 = 0x1000040; - temp_v0_8->unk4 = sp38; - temp_v0_9 = gDisplayListHead; - gDisplayListHead = temp_v0_9 + 8; - temp_v0_9->unk4 = &D_02007FC8; - temp_v0_9->unk0 = 0x6000000; + guPerspective(&arg0->mtxPool[1], &perspNorm, 45.0f, 1.3333334f, 100.0f, 12800.0f, 1.0f); + gDPHalf1(gDisplayListHead++, perspNorm); + guLookAt(&arg0->mtxPool[8], 0.0f, 0.0f, (f32) D_8018EDC0, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f); + guRotate(&arg0->mtxPool[0x32B], D_8018EDC8, 1.0f, 0, 0); + guRotate(&arg0->mtxPool[0x32C], D_8018EDCC, 0, 1.0f, 0); + guRotate(&arg0->mtxPool[0x32D], D_8018EDD0, 0, 0, 1.0f); + guScale(&arg0->mtxPool[0x32E], D_8018EDC4, D_8018EDC4, D_8018EDC4); + guTranslate(&arg0->mtxPool[0x32F], D_8018EDD4, D_8018EDD8, D_8018EDDC); + gSPMatrix(gDisplayListHead++, &arg0->mtxPool[1], G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, &arg0->mtxPool[8], G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(gDisplayListHead++, &arg0->mtxPool[0x32B], G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW); + gSPMatrix(gDisplayListHead++, &arg0->mtxPool[0x32C], G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW); + gSPMatrix(gDisplayListHead++, &arg0->mtxPool[0x32D], G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW); + gSPMatrix(gDisplayListHead++, &arg0->mtxPool[0x32E], G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW); + gSPMatrix(gDisplayListHead++, &arg0->mtxPool[0x32F], G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW); + gSPDisplayList(gDisplayListHead++, D_02007FC8); func_800B0004(); - temp_v0_10 = gDisplayListHead; - gDisplayListHead = temp_v0_10 + 8; - temp_v0_10->unk4 = &D_02007650; - temp_v0_10->unk0 = 0x6000000; + gSPDisplayList(gDisplayListHead++, D_02007650); } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_800947B4.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -? func_80092290(?, ? *, ? *); /* extern */ -? func_80093E40(); /* extern */ -? func_80094C60(); /* extern */ -? func_80095574(); /* extern */ -? func_80099A70(); /* extern */ -? func_80099AEC(); /* extern */ -? func_8009C918(); /* extern */ -? func_8009CA2C(); /* extern */ -? func_800A8230(); /* extern */ -? guOrtho(s32, f32, ?, ?, f32, f32, f32, f32); /* extern */ -extern ? D_8018E850; -extern ? D_8018E854; -extern ? D_8018E858; -extern ? D_8018E85C; -extern ? D_802B8880; -static ? D_02007650; /* unable to generate initializer */ -static ? D_020076B0; /* unable to generate initializer */ - -void func_80094A64(s32 arg0) { - Gfx *temp_v0; - Gfx *temp_v0_2; - Gfx *temp_v0_3; - Gfx *temp_v0_4; - Gfx *temp_v0_5; - Gfx *temp_v0_6; - s32 temp_t1; +#ifdef NON_MATCHING +// Non-matching due to .rodata diffs resulting from the switch/case +// jump table +void func_80094A64(Mtx *arg0) { D_8018D120 = 0; D_80164AF0 = 0; - temp_v0 = gDisplayListHead; - gDisplayListHead = temp_v0 + 8; - temp_v0->words.w1 = &D_802B8880 & 0x1FFFFFFF; - temp_v0->words.w0 = 0x3800010; - temp_v0_2 = gDisplayListHead; - gDisplayListHead = temp_v0_2 + 8; - temp_v0_2->words.w0 = 0xED000000; - temp_v0_2->words.w1 = 0x5003C0; - guOrtho(arg0, 0.0f, 0x439F8000, 0x436F0000, 0.0f, -100.0f, 100.0f, 1.0f); - temp_v0_3 = gDisplayListHead; - gDisplayListHead = temp_v0_3 + 8; - temp_v0_3->words.w0 = 0x1030040; - temp_v0_3->words.w1 = arg0; - temp_v0_4 = gDisplayListHead; - gDisplayListHead = temp_v0_4 + 8; - temp_v0_4->words.w1 = &D_02007650; - temp_v0_4->words.w0 = 0x6000000; + gSPViewport(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&D_802B8880)); + gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, 320, 240); + guOrtho(arg0, 0.0f, 319.0f, 239.0f, 0.0f, -100.0f, 100.0f, 1.0f); + gSPMatrix(gDisplayListHead++, arg0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPDisplayList(gDisplayListHead++, D_02007650); func_80094C60(); func_80092290(4, &D_8018E850, &D_8018E858); func_80092290(5, &D_8018E854, &D_8018E85C); func_80099A70(); func_8009C918(); - temp_t1 = gMenuSelection; - switch (temp_t1) { + switch (gMenuSelection) { case START_MENU: func_80095574(); func_80093E40(); @@ -1871,15 +1576,9 @@ void func_80094A64(s32 arg0) { break; } func_8009CA2C(); - temp_v0_5 = gDisplayListHead; D_8018E7A8 += 1; - gDisplayListHead = temp_v0_5 + 8; - temp_v0_5->words.w1 = 0; - temp_v0_5->words.w0 = 0xE7000000; - temp_v0_6 = gDisplayListHead; - gDisplayListHead = temp_v0_6 + 8; - temp_v0_6->words.w0 = 0x6000000; - temp_v0_6->words.w1 = &D_020076B0; + gDPPipeSync(gDisplayListHead++); + gSPDisplayList(gDisplayListHead++, D_020076B0); } #else GLOBAL_ASM("asm/non_matchings/code_80091750/func_80094A64.s") diff --git a/src/code_80091750.h b/src/code_80091750.h index 404f2bf48..ea57ed5ae 100644 --- a/src/code_80091750.h +++ b/src/code_80091750.h @@ -2,14 +2,17 @@ #define CODE_80091750_H #include "common_structs.h" +#include "main.h" /* Function Prototypes */ f64 exponent_by_squaring(f64, s32); void swap_values(s32*, s32*); +void func_80092148(); void func_800921B4(); void func_800921C0(s32, s32, s32); void func_80092224(s32, s32, s32); +void func_80092290(s32, s32*, s32*); void func_80092500(); void func_80092564(); void func_800925A0(); @@ -34,8 +37,17 @@ void func_80093754(s32, s32, char*, s32, f32, f32); void print_text2(s32, s32, char*, s32, f32, f32, s32); void func_800939C8(s32, s32, char*, s32, f32, f32); void text_draw(s32, s32, char*, s32, f32, f32); +void func_80093C98(s32); void func_80093E20(); void func_80093E40(); +void func_80093F10(); +void func_800940EC(s32); +void func_800942D0(); +void func_80094660(struct GfxPool*, s32); +void func_800947B4(struct GfxPool*, s32); +void func_80094A64(Mtx*); +void func_80094C60(); +void func_80095574(); Gfx *func_80098C18(Gfx*, s32, s32, s32, s32, s32, s32, u32, s32); Gfx *draw_box(Gfx*, s32, s32, s32, s32, s32, s32, s32, s32); Gfx *func_80098FC8(Gfx*, s32, s32, s32, s32); @@ -43,19 +55,27 @@ void func_80099110(); void func_80099184(s32); void *segmented_to_virtual(segment_address_t); void *segmented_to_virtual_dupe(segment_address_t); +void func_8009CA2C(); +void func_8009CA6C(s32); void func_80099A94(Mk64_Texture *, s32); +void func_80099AEC(); +void func_80099E54(); void func_80099E60(Mk64_Texture *, s32, s32); +void func_80099EC4(); void func_8009A594(s32, s32, segment_address_t); void func_8009A640(s32, s32, s32, segment_address_t); +void func_80099A70(); segment_address_t func_8009A878(struct_8018DEE0_entry*); +void func_800A54EC(); void func_8009A76C(s32, s32, s32, s32); void func_8009A7EC(s32, s32, s32, s32, s32); +void func_800A8250(); void func_8009A944(struct_8018DEE0_entry*, s32); Gfx *func_8009BA74(Gfx *, Mk64_Texture*, s32, s32); s32 func_8009C434(s32, struct_8018DEE0_entry*, s32, s32, s32); s32 func_8009C708(s32, struct_8018DEE0_entry *, s32, s32, s32, s32); +void func_8009C918(); void func_8009E1C0(); -void func_8009E1E4(void); void func_8009E208(); void func_8009E258(); void func_800A0AD0(struct_8018D9E0_entry*); @@ -70,6 +90,7 @@ void write_dashes(char*); void get_time_record_minutes(s32, char*); void get_time_record_seconds(s32 , char*); void get_time_record_centiseconds(s32, char*); +void func_800A8230(); void func_800A86E8(struct_8018D9E0_entry*); void func_800A8E14(struct_8018D9E0_entry*); void func_800A8EC0(struct_8018D9E0_entry*); @@ -80,18 +101,28 @@ struct_8018D9E0_entry *func_800AAEB4(s32); struct_8018D9E0_entry *func_800AAEF4(s32); void func_800AAF94(struct_8018D9E0_entry*, s32); +// code_80057C60.c +void func_80057CE4(); + /* This is where I'd put my static data, if I had any */ extern Mk64_Texture D_0200157C; extern Mk64_Texture D_02001874; extern Gfx D_02004A0C[]; +extern Gfx D_02007650[]; +extern Gfx D_020076B0[]; extern Gfx D_020077A8[]; extern Gfx D_020077D8[]; +extern Gfx D_02007F18[]; +extern Gfx D_02007F48[]; +extern Gfx D_02007F60[]; +extern Gfx D_02007FC8[]; extern Gfx D_02008008[]; extern Gfx D_02008030[]; extern Gfx D_02008058[]; +extern Gfx D_06009410[]; extern s16 gGlyphDisplayWidth[]; // D_800EF690 extern RGBA16 D_800E74A8[5]; @@ -107,6 +138,8 @@ extern char *D_800E7A98; extern char *D_800E7A9C[2]; extern s32 gGlyphTextureLUT[]; // D_800E7E84 extern Mk64_Texture_Group *D_800E82B4[5]; +extern f32 D_800E8530; +extern f32 D_800E8534; extern s8 D_800E86D0[20]; extern f32 D_800F1F30; extern f32 D_800F24A8; @@ -115,12 +148,25 @@ extern f32 D_800F24B0; extern f32 D_800F24B4; extern f32 D_800F24B8; extern f64 D_800F24C0; +extern s32 D_80165754; extern s8 D_8018D9D9; extern struct_8018D9E0_entry D_8018D9E0[32]; // D_8018D9E0 extern struct_8018DEE0_entry D_8018DEE0[16]; // D_8018DEE0 extern struct_8018E118_entry D_8018E118[200]; // D_8018E118 extern s8 gTextColor; // D_8018E860 extern s8 D_8018ED91; +extern s32 D_8018E850; +extern s32 D_8018E854; +extern s32 D_8018E858; +extern s32 D_8018E85C; +extern s32 D_8018EDC0; +extern f32 D_8018EDC4; +extern f32 D_8018EDC8; +extern f32 D_8018EDCC; +extern f32 D_8018EDD0; +extern f32 D_8018EDD4; +extern f32 D_8018EDD8; +extern f32 D_8018EDDC; extern s8 D_802874F5; #endif diff --git a/src/code_800AF9B0.h b/src/code_800AF9B0.h index 535298cb6..46f7ab4ef 100644 --- a/src/code_800AF9B0.h +++ b/src/code_800AF9B0.h @@ -14,6 +14,7 @@ union GrandPrixPointsUnion /* Function Prototypes */ void func_800AF9B0(); +void func_800B0004(); void func_800B053C(struct Controller*, u16); void func_800B13B0(struct Controller*, u16); void func_800B15AC(struct Controller*, u16); diff --git a/src/code_80280000.c b/src/code_80280000.c index 5ab7f74f3..4beb8d9db 100644 --- a/src/code_80280000.c +++ b/src/code_80280000.c @@ -50,11 +50,11 @@ void func_80280038(void) { func_802A3E3C(); func_80057FC4(0); gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH); - guPerspective(&gGfxPool->buffer[8], &sp44[37], D_80150130, D_80150148, D_80150150, D_8015014C, 1.0f); + guPerspective(&gGfxPool->mtxPool[1], &sp44[37], D_80150130, D_80150148, D_80150150, D_8015014C, 1.0f); gDPHalf1(gDisplayListHead++, sp44[37]); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[8]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - guLookAt(&gGfxPool->buffer[56], camera->pos[0], camera->pos[1], camera->pos[2], camera->unk, camera->unk1, camera->unk2, camera->angleX, camera->angleY, camera->angleZ); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[56]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[1]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + guLookAt(&gGfxPool->mtxPool[7], camera->pos[0], camera->pos[1], camera->pos[2], camera->unk, camera->unk1, camera->unk2, camera->angleX, camera->angleY, camera->angleZ); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[7]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); gCurrentCourseId = gCreditsCourseId; mtxf_identity(&sp44); func_802B4FF8(&sp44, 0); diff --git a/src/code_80280650.c b/src/code_80280650.c index fa30634f2..e94d72c2f 100644 --- a/src/code_80280650.c +++ b/src/code_80280650.c @@ -185,11 +185,8 @@ extern struct UnkStruct_80287500 *D_80287500; void func_80280A28(s32 arg0, s32 arg1, f32 arg2) { f32 sp20[14]; - //f32 temp_f12; Gfx *temp_v1; - //temp_f12 = arg2; - //arg2 = temp_f12; func_80021E10(arg2, &sp20, arg0, arg1); sp20[0] = D_80287500->unk0[0] * arg2; sp20[1] = D_80287500->unk10 * arg2; @@ -200,15 +197,9 @@ void func_80280A28(s32 arg0, s32 arg1, f32 arg2) { sp20[6] = D_80287500->unk0[2] * arg2; sp20[7] = D_80287500->unk18 * arg2; sp20[8] = D_80287500->unk28 * arg2; - func_80022180(arg2, &gGfxPool->buffer[D_80164AF0] + 0xFAC0, &sp20); + func_80022180(arg2, &gGfxPool->mtxPool[D_80164AF0 + 0x3EB], &sp20); - gSPMatrix(gDisplayListHead, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[D_80164AF0 << 6] + 0xFAC0), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - - - //temp_v1 = gDisplayListHead; - //gDisplayListHead = temp_v1 + 8; - //temp_v1->words.w0 = 0x01020040; - //temp_v1->words.w1 = VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[D_80164AF0 << 6] + 0xFAC0); + gSPMatrix(gDisplayListHead, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[D_80164AF0 + 0x3EB]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); } #else GLOBAL_ASM("asm/non_matchings/code_80280650/func_80280A28.s") diff --git a/src/code_80281C40.c b/src/code_80281C40.c index b2ef6bf8d..b14f2781c 100644 --- a/src/code_80281C40.c +++ b/src/code_80281C40.c @@ -64,11 +64,11 @@ void func_80281D00(void) { } func_8028150C(); gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH); - guPerspective((Mtx*) &gGfxPool->buffer[8], &sp64[39], D_80150130, D_80150148, D_80150150, D_8015014C, 1.0f); + guPerspective((Mtx*) &gGfxPool->mtxPool[1], &sp64[39], D_80150130, D_80150148, D_80150150, D_8015014C, 1.0f); gDPHalf1(gDisplayListHead++, sp64[39]); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[8]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - guLookAt((Mtx*) &gGfxPool->buffer[56], camera->pos[0], camera->pos[1], camera->pos[2], camera->unk, camera->unk1, camera->unk2, camera->angleX, camera->angleY, camera->angleZ); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[56]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[1]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + guLookAt((Mtx*) &gGfxPool->mtxPool[7], camera->pos[0], camera->pos[1], camera->pos[2], camera->unk, camera->unk1, camera->unk2, camera->angleX, camera->angleY, camera->angleZ); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[7]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(&sp64[6]); func_802B4FF8(&sp64[6], 0); gSPDisplayList(gDisplayListHead++, &D_00284F70); diff --git a/src/code_802A3730.c b/src/code_802A3730.c index 88e06db69..ddfa1a8b2 100644 --- a/src/code_802A3730.c +++ b/src/code_802A3730.c @@ -460,9 +460,9 @@ void func_802A487C(Vtx *arg0, UNUSED s32 arg1, UNUSED s32 arg2, UNUSED s32 arg3, gDPSetRenderMode(gDisplayListHead++, G_RM_OPA_SURF, G_RM_OPA_SURF2); gSPClearGeometryMode(gDisplayListHead++, G_ZBUFFER | G_LIGHTING); - guOrtho((Mtx *)&gGfxPool->buffer, 0.0f, 320.0f, 0.0f, 240.0f, 0.0f, 5.0f, 1.0f); + guOrtho(&gGfxPool->mtxPool[0], 0.0f, 320.0f, 0.0f, 240.0f, 0.0f, 5.0f, 1.0f); gDPHalf1(gDisplayListHead++, 0xFFFF); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[0]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&D_0D008E98), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(gDisplayListHead++, &arg0[4], 4, 0); gSP2Triangles(gDisplayListHead++, 0, 3, 1, 0, 1, 3, 2, 0); @@ -530,9 +530,9 @@ void func_802A4A0C(Vtx *arg0, struct UnkStruct_800DC5EC *arg1, s32 arg2, s32 arg gDPSetRenderMode(gDisplayListHead++, G_RM_OPA_SURF, G_RM_OPA_SURF2); gSPClearGeometryMode(gDisplayListHead++, G_ZBUFFER | G_LIGHTING); - guOrtho(&gGfxPool->buffer, 0.0f, 320.0f, 0.0f, 240.0f, 0.0f, 5.0f, 1.0f); + guOrtho(&gGfxPool->mtxPool[0], 0.0f, 320.0f, 0.0f, 240.0f, 0.0f, 5.0f, 1.0f); gDPHalf1(gDisplayListHead++, 0xFFFF); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[0]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&D_0D008E98), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(gDisplayListHead++, &arg0, 4, 0); gSP2Triangles(gDisplayListHead++, 0, 3, 1, 0, 1, 3, 2, 0); @@ -983,23 +983,23 @@ void func_802A59A4(void) { gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); - guPerspective(&gGfxPool->buffer[8], &spAA[23], D_80150130, D_80150148, D_80150150, D_8015014C, 1.0f); + guPerspective(&gGfxPool->mtxPool[1], &spAA[23], D_80150130, D_80150148, D_80150150, D_8015014C, 1.0f); gDPHalf1(gDisplayListHead++, spAA[23]); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[8]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[1]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - guLookAt(&gGfxPool->buffer[56], camera->pos[0], camera->pos[1], camera->pos[2], + guLookAt(&gGfxPool->mtxPool[7], camera->pos[0], camera->pos[1], camera->pos[2], camera->unk, camera->unk1, camera->unk2, camera->angleX, camera->angleY, camera->angleZ); if (D_800DC5C8 == 0) { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[56]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[7]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(sp5C); func_802B4FF8(sp5C, 0); } else { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[56]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[7]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); } func_80295A38(D_800DC5EC); if (D_800DC5C8 == 1) { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[56]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[7]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(sp5C); func_802B4FF8(sp5C, 0); } @@ -1033,23 +1033,23 @@ void func_802A5CB4(void) { gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH); - guPerspective(&gGfxPool->buffer[8], &sp9A[17], D_80150130, D_80150148, D_80150150, D_8015014C, 1.0f); + guPerspective(&gGfxPool->mtxPool[1], &sp9A[17], D_80150130, D_80150148, D_80150150, D_8015014C, 1.0f); gDPHalf1(gDisplayListHead++, sp9A[17]); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[8]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - guLookAt(&gGfxPool->buffer[56], camera->pos[0], camera->pos[1], camera->pos[2], camera->unk, camera->unk1, camera->unk2, camera->angleX, camera->angleY, camera->angleZ); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[1]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + guLookAt(&gGfxPool->mtxPool[7], camera->pos[0], camera->pos[1], camera->pos[2], camera->unk, camera->unk1, camera->unk2, camera->angleX, camera->angleY, camera->angleZ); if (D_800DC5C8 == 0) { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[56]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[7]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(sp58); func_802B4FF8(sp58, 0); } else { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[56]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[7]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); } func_80295A38(D_800DC5EC); if (D_800DC5C8 == 1) { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[56]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[7]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(sp58); func_802B4FF8(sp58, 0); @@ -1082,23 +1082,23 @@ void func_802A5FAC(void) { func_802A3730(D_800DC5F0); gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH); - guPerspective(&gGfxPool->buffer[16], &sp9A[17], D_80150134, D_80150148, D_80150150, D_8015014C, 1.0f); + guPerspective(&gGfxPool->mtxPool[2], &sp9A[17], D_80150134, D_80150148, D_80150150, D_8015014C, 1.0f); gDPHalf1(gDisplayListHead++, sp9A[17]); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[16]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - guLookAt(&gGfxPool->buffer[64], camera->pos[0], camera->pos[1], camera->pos[2], camera->unk, camera->unk1, camera->unk2, camera->angleX, camera->angleY, camera->angleZ); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[2]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + guLookAt(&gGfxPool->mtxPool[8], camera->pos[0], camera->pos[1], camera->pos[2], camera->unk, camera->unk1, camera->unk2, camera->angleX, camera->angleY, camera->angleZ); //D_801647A8, D_801647AC, D_801647B0, D_801647B4, D_801647B8, D_801647BC, D_801647C0, D_801647C4, D_801647C8); if (D_800DC5C8 == 0) { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[64]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[8]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(sp58); func_802B4FF8(sp58, 0); } else { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[64]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[8]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); } func_80295A38(D_800DC5F0); if (D_800DC5C8 == 1) { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[64]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[8]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(sp58); func_802B4FF8(sp58, 0); } @@ -1130,22 +1130,22 @@ void func_802A62A4(void) { func_802A3E3C(); func_802A3730(D_800DC5EC); gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH); - guPerspective(&gGfxPool->buffer[8], &sp9A[17], D_80150130, D_80150148, D_80150150, D_8015014C, 1.0f); + guPerspective(&gGfxPool->mtxPool[1], &sp9A[17], D_80150130, D_80150148, D_80150150, D_8015014C, 1.0f); gDPHalf1(gDisplayListHead++, sp9A[17]); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[8]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - guLookAt(&gGfxPool->buffer[56], camera->pos[0], camera->pos[1], camera->pos[2], camera->unk, camera->unk1, camera->unk2, camera->angleX, camera->angleY, camera->angleZ); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[1]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + guLookAt(&gGfxPool->mtxPool[7], camera->pos[0], camera->pos[1], camera->pos[2], camera->unk, camera->unk1, camera->unk2, camera->angleX, camera->angleY, camera->angleZ); if (D_800DC5C8 == 0) { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[56]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[7]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(sp58); func_802B4FF8(sp58, 0); } else { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[56]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[7]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); } func_80295A38(D_800DC5EC); if (D_800DC5C8 == 1) { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[56]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[7]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(sp58); func_802B4FF8(sp58, 0); } @@ -1178,21 +1178,21 @@ void func_802A65B8(void) { func_802A3E3C(); func_802A3730(D_800DC5F0); gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH); - guPerspective(&gGfxPool->buffer[16], &sp9A[17], D_80150134, D_80150148, D_80150150, D_8015014C, 1.0f); + guPerspective(&gGfxPool->mtxPool[2], &sp9A[17], D_80150134, D_80150148, D_80150150, D_8015014C, 1.0f); gDPHalf1(gDisplayListHead++, sp9A[17]); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[16]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - guLookAt(&gGfxPool->buffer[64], camera->pos[0], camera->pos[1], camera->pos[2], camera->unk, camera->unk1, camera->unk2, camera->angleX, camera->angleY, camera->angleZ); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[2]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + guLookAt(&gGfxPool->mtxPool[8], camera->pos[0], camera->pos[1], camera->pos[2], camera->unk, camera->unk1, camera->unk2, camera->angleX, camera->angleY, camera->angleZ); if (D_800DC5C8 == 0) { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[64]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[8]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(sp58); func_802B4FF8(sp58, 0); } else { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[64]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[8]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); } func_80295A38(D_800DC5F0); if (D_800DC5C8 == 1) { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[64]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[8]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(&sp58); func_802B4FF8(&sp58, 0); } @@ -1224,21 +1224,21 @@ void func_802A68CC(void) { func_802A3730(D_800DC5EC); gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH); - guPerspective(&gGfxPool->buffer[8], &sp9A[17], D_80150130, D_80150148, D_80150150, D_8015014C, 1.0f); + guPerspective(&gGfxPool->mtxPool[1], &sp9A[17], D_80150130, D_80150148, D_80150150, D_8015014C, 1.0f); gDPHalf1(gDisplayListHead++, sp9A[17]); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[8]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - guLookAt(&gGfxPool->buffer[56], camera->pos[0], camera->pos[1], camera->pos[2], camera->unk, camera->unk1, camera->unk2, camera->angleX, camera->angleY, camera->angleZ); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[1]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + guLookAt(&gGfxPool->mtxPool[7], camera->pos[0], camera->pos[1], camera->pos[2], camera->unk, camera->unk1, camera->unk2, camera->angleX, camera->angleY, camera->angleZ); if (D_800DC5C8 == 0) { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[56]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[7]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(&sp58); func_802B4FF8(&sp58, 0); } else { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[56]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[7]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); } func_80295A38(D_800DC5EC); if (D_800DC5C8 == 1) { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[56]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[7]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(&sp58); func_802B4FF8(&sp58, 0); } @@ -1270,21 +1270,21 @@ void func_802A6BB0(void) { func_802A3730(D_800DC5F0); gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH); - guPerspective(&gGfxPool->buffer[16], &sp9A[17], D_80150134, D_80150148, D_80150150, D_8015014C, 1.0f); + guPerspective(&gGfxPool->mtxPool[2], &sp9A[17], D_80150134, D_80150148, D_80150150, D_8015014C, 1.0f); gDPHalf1(gDisplayListHead++, sp9A[17]); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[16]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[2]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - guLookAt(&gGfxPool->buffer[64], camera->pos[0], camera->pos[1], camera->pos[2], camera->unk, camera->unk1, camera->unk2, camera->angleX, camera->angleY, camera->angleZ); + guLookAt(&gGfxPool->mtxPool[8], camera->pos[0], camera->pos[1], camera->pos[2], camera->unk, camera->unk1, camera->unk2, camera->angleX, camera->angleY, camera->angleZ); if (D_800DC5C8 == 0) { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[64]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[8]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(sp58); func_802B4FF8(sp58, 0); } else { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[64]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[8]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); } func_80295A38(D_800DC5F0); if (D_800DC5C8 == 1) { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[64]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[8]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(sp58); func_802B4FF8(sp58, 0); } @@ -1315,21 +1315,21 @@ void func_802A6E94(void) { func_802A3E3C(); func_802A3730(D_800DC5F4); gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH); - guPerspective(&gGfxPool->buffer[24], &sp9A[17], D_80150138, D_80150148, D_80150150, D_8015014C, 1.0f); + guPerspective(&gGfxPool->mtxPool[3], &sp9A[17], D_80150138, D_80150148, D_80150150, D_8015014C, 1.0f); gDPHalf1(gDisplayListHead++, sp9A[17]); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[24]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - guLookAt(&gGfxPool->buffer[72], camera->pos[0], camera->pos[1], camera->pos[2], camera->unk, camera->unk1, camera->unk2, camera->angleX, camera->angleY, camera->angleZ); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[3]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + guLookAt(&gGfxPool->mtxPool[9], camera->pos[0], camera->pos[1], camera->pos[2], camera->unk, camera->unk1, camera->unk2, camera->angleX, camera->angleY, camera->angleZ); if (D_800DC5C8 == 0) { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[72]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[9]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(sp58); func_802B4FF8(sp58, 0); } else { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[72]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[9]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); } func_80295A38(D_800DC5F4); if (D_800DC5C8 == 1) { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[72]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[9]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(sp58); func_802B4FF8(sp58, 0); } @@ -1370,20 +1370,20 @@ void func_802A7178(void) { func_802A3730(D_800DC5F8); gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH); - guPerspective(&gGfxPool->buffer[32], &sp92[17], D_8015013C, D_80150148, D_80150150, D_8015014C, 1.0f); + guPerspective(&gGfxPool->mtxPool[4], &sp92[17], D_8015013C, D_80150148, D_80150150, D_8015014C, 1.0f); gDPHalf1(gDisplayListHead++, sp92[17]); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[32]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - guLookAt(&gGfxPool->buffer[80], camera->pos[0], camera->pos[1], camera->pos[2], camera->unk, camera->unk1, camera->unk2, camera->angleX, camera->angleY, camera->angleZ); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[4]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + guLookAt(&gGfxPool->mtxPool[10], camera->pos[0], camera->pos[1], camera->pos[2], camera->unk, camera->unk1, camera->unk2, camera->angleX, camera->angleY, camera->angleZ); if (D_800DC5C8 == 0) { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[80]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[10]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(sp50); func_802B4FF8(sp50, 0); } else { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[80]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[10]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); } func_80295A38(D_800DC5F8); if (D_800DC5C8 == 1) { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[80]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[10]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(sp50); func_802B4FF8(sp50, 0); } diff --git a/src/gbiMacro.c b/src/gbiMacro.c index 610cd8678..ca925951e 100644 --- a/src/gbiMacro.c +++ b/src/gbiMacro.c @@ -2,11 +2,11 @@ #include <macros.h> #include "types.h" #include "PR/gu.h" +#include "main.h" extern s16 D_800E43A8; extern Mtx D_0D008E98; extern Gfx* gDisplayListHead; -extern Mtx* gGfxPool; // rsp init void gfx_func_80040D00(void) { @@ -15,7 +15,7 @@ void gfx_func_80040D00(void) { gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING); - guOrtho((Mtx *) gGfxPool, 0.0f, 320.0f, 0.0f, 240.0f, -1.0f, 1.0f, 1.0f); + guOrtho(&gGfxPool->mtxPool[0], 0.0f, 320.0f, 0.0f, 240.0f, -1.0f, 1.0f, 1.0f); gDPHalf1(gDisplayListHead++, 0x0000FFFF); gSPMatrix(gDisplayListHead++, (u32) gGfxPool & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); gSPMatrix(gDisplayListHead++, (u32) &D_0D008E98 & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); diff --git a/src/main.c b/src/main.c index 5370cce47..bbccb7747 100644 --- a/src/main.c +++ b/src/main.c @@ -335,8 +335,8 @@ void func_800006E8(void) { gGfxSPTask->task.t.dram_stack_size = SP_DRAM_STACK_SIZE8; gGfxSPTask->task.t.output_buff = (u64 *) &gGfxSPTaskOutputBuffer; gGfxSPTask->task.t.output_buff_size = (u64 *) &gGfxSPTaskOutputBufferSize; - gGfxSPTask->task.t.data_ptr = (u64 *) &gGfxPool->buffer[0x3418]; - gGfxSPTask->task.t.data_size = (gDisplayListHead - &gGfxPool->buffer[0x3418]) * sizeof(Gfx); + gGfxSPTask->task.t.data_ptr = (u64 *) gGfxPool->gfxPool; + gGfxSPTask->task.t.data_size = (gDisplayListHead - gGfxPool->gfxPool) * sizeof(Gfx); func_8008C214(); gGfxSPTask->task.t.yield_data_ptr = (u64 *) &gGfxSPTaskYieldBuffer; gGfxSPTask->task.t.yield_data_size = 0xD00; /* Not equal to OS_YIELD_DATA_SIZE */ @@ -466,9 +466,9 @@ void *clear_framebuffer(s32 color) { void rendering_init(void) { gGfxPool = &gGfxPools[0]; - set_segment_base_addr(1, gGfxPool->buffer); + set_segment_base_addr(1, gGfxPool); gGfxSPTask = &gGfxPool->spTask; - gDisplayListHead = &gGfxPool->buffer[0x3418]; + gDisplayListHead = gGfxPool->gfxPool; func_80000CA8(); clear_framebuffer(0); func_80000CE8(); @@ -479,8 +479,8 @@ void rendering_init(void) { void config_gfx_pool(void) { gGfxPool = &gGfxPools[gGlobalTimer & 1]; - set_segment_base_addr(1, gGfxPool->buffer); - gDisplayListHead = &gGfxPool->buffer[0x3418]; + set_segment_base_addr(1, gGfxPool); + gDisplayListHead = gGfxPool->gfxPool; gGfxSPTask = &gGfxPool->spTask; } diff --git a/src/main.h b/src/main.h index 0398c1730..cd15cbb32 100644 --- a/src/main.h +++ b/src/main.h @@ -2,13 +2,14 @@ #define MAIN_H #include "types.h" -// 20836 -// 655 -#define GFX_POOL_SIZE 20836 + +#define MTX_POOL_SIZE 0x0683 +#define GFX_POOL_SIZE 0x1D4C struct GfxPool { - Gfx buffer[GFX_POOL_SIZE]; - struct SPTask spTask; -}; + /* 0x00000 */ Mtx mtxPool[MTX_POOL_SIZE]; + /* 0x1A0C0 */ Gfx gfxPool[GFX_POOL_SIZE]; + /* 0x28B20 */ struct SPTask spTask; +}; // size = 0x28B70 extern struct GfxPool *gGfxPool; |
