From 7d4f0692e75d34f9452ff23be5567385557355f3 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sun, 6 Feb 2022 20:30:23 +1000 Subject: [PATCH] Decompile gfxReplaceGbiCommands --- src/game/bg.c | 24 +- src/game/game_165670.c | 508 +++++++++++++++------------------ src/include/game/game_165670.h | 4 +- src/include/types.h | 5 - 4 files changed, 250 insertions(+), 291 deletions(-) diff --git a/src/game/bg.c b/src/game/bg.c index f4d954647..b452c39c6 100644 --- a/src/game/bg.c +++ b/src/game/bg.c @@ -9907,7 +9907,7 @@ glabel roomLoad /* f15e370: 24050001 */ addiu $a1,$zero,0x1 /* f15e374: 01f95821 */ addu $t3,$t7,$t9 /* f15e378: 8d6c0014 */ lw $t4,0x14($t3) -/* f15e37c: 0fc595ca */ jal func0f165728 +/* f15e37c: 0fc595ca */ jal gfxReplaceGbiCommandsRecursively /* f15e380: 8d840008 */ lw $a0,0x8($t4) /* f15e384: 3c0d800a */ lui $t5,%hi(g_Rooms) /* f15e388: 8dad4928 */ lw $t5,%lo(g_Rooms)($t5) @@ -9915,7 +9915,7 @@ glabel roomLoad /* f15e390: 24050005 */ addiu $a1,$zero,0x5 /* f15e394: 01aec021 */ addu $t8,$t5,$t6 /* f15e398: 8f0f0014 */ lw $t7,0x14($t8) -/* f15e39c: 0fc595ca */ jal func0f165728 +/* f15e39c: 0fc595ca */ jal gfxReplaceGbiCommandsRecursively /* f15e3a0: 8de4000c */ lw $a0,0xc($t7) /* f15e3a4: 10000014 */ b .L0f15e3f8 /* f15e3a8: 00000000 */ nop @@ -9929,7 +9929,7 @@ glabel roomLoad /* f15e3c4: 24050006 */ addiu $a1,$zero,0x6 /* f15e3c8: 016c6821 */ addu $t5,$t3,$t4 /* f15e3cc: 8dae0014 */ lw $t6,0x14($t5) -/* f15e3d0: 0fc595ca */ jal func0f165728 +/* f15e3d0: 0fc595ca */ jal gfxReplaceGbiCommandsRecursively /* f15e3d4: 8dc40008 */ lw $a0,0x8($t6) /* f15e3d8: 3c18800a */ lui $t8,%hi(g_Rooms) /* f15e3dc: 8f184928 */ lw $t8,%lo(g_Rooms)($t8) @@ -9937,7 +9937,7 @@ glabel roomLoad /* f15e3e4: 24050007 */ addiu $a1,$zero,0x7 /* f15e3e8: 030fc821 */ addu $t9,$t8,$t7 /* f15e3ec: 8f2b0014 */ lw $t3,0x14($t9) -/* f15e3f0: 0fc595ca */ jal func0f165728 +/* f15e3f0: 0fc595ca */ jal gfxReplaceGbiCommandsRecursively /* f15e3f4: 8d64000c */ lw $a0,0xc($t3) .L0f15e3f8: /* f15e3f8: 0fc57be7 */ jal func0f15ef9c @@ -10496,7 +10496,7 @@ glabel roomLoad /* f158b68: 24050001 */ addiu $a1,$zero,0x1 /* f158b6c: 01aec021 */ addu $t8,$t5,$t6 /* f158b70: 8f0f0014 */ lw $t7,0x14($t8) -/* f158b74: 0fc57fca */ jal func0f165728 +/* f158b74: 0fc57fca */ jal gfxReplaceGbiCommandsRecursively /* f158b78: 8de40008 */ lw $a0,0x8($t7) /* f158b7c: 3c19800b */ lui $t9,0x800b /* f158b80: 8f3990a8 */ lw $t9,-0x6f58($t9) @@ -10504,7 +10504,7 @@ glabel roomLoad /* f158b88: 24050005 */ addiu $a1,$zero,0x5 /* f158b8c: 032b6021 */ addu $t4,$t9,$t3 /* f158b90: 8d8d0014 */ lw $t5,0x14($t4) -/* f158b94: 0fc57fca */ jal func0f165728 +/* f158b94: 0fc57fca */ jal gfxReplaceGbiCommandsRecursively /* f158b98: 8da4000c */ lw $a0,0xc($t5) /* f158b9c: 10000014 */ beqz $zero,.NB0f158bf0 /* f158ba0: 00000000 */ sll $zero,$zero,0x0 @@ -10518,7 +10518,7 @@ glabel roomLoad /* f158bbc: 24050006 */ addiu $a1,$zero,0x6 /* f158bc0: 030fc821 */ addu $t9,$t8,$t7 /* f158bc4: 8f2b0014 */ lw $t3,0x14($t9) -/* f158bc8: 0fc57fca */ jal func0f165728 +/* f158bc8: 0fc57fca */ jal gfxReplaceGbiCommandsRecursively /* f158bcc: 8d640008 */ lw $a0,0x8($t3) /* f158bd0: 3c0c800b */ lui $t4,0x800b /* f158bd4: 8d8c90a8 */ lw $t4,-0x6f58($t4) @@ -10526,7 +10526,7 @@ glabel roomLoad /* f158bdc: 24050007 */ addiu $a1,$zero,0x7 /* f158be0: 018d7021 */ addu $t6,$t4,$t5 /* f158be4: 8dd80014 */ lw $t8,0x14($t6) -/* f158be8: 0fc57fca */ jal func0f165728 +/* f158be8: 0fc57fca */ jal gfxReplaceGbiCommandsRecursively /* f158bec: 8f04000c */ lw $a0,0xc($t8) .NB0f158bf0: /* f158bf0: 0fc565e7 */ jal func0f15ef9c @@ -10775,11 +10775,11 @@ const char var7f1b1a60nb[] = "bg.c"; // } // // if (g_FogDisabled) { -// func0f165728(g_Rooms[roomnum].gfxdata->unk08, 1); -// func0f165728(g_Rooms[roomnum].gfxdata->unk0c, 5); +// gfxReplaceGbiCommandsRecursively(g_Rooms[roomnum].gfxdata->unk08, 1); +// gfxReplaceGbiCommandsRecursively(g_Rooms[roomnum].gfxdata->unk0c, 5); // } else if (var800a65e4 == 0) { -// func0f165728(g_Rooms[roomnum].gfxdata->unk08, 6); -// func0f165728(g_Rooms[roomnum].gfxdata->unk0c, 7); +// gfxReplaceGbiCommandsRecursively(g_Rooms[roomnum].gfxdata->unk08, 6); +// gfxReplaceGbiCommandsRecursively(g_Rooms[roomnum].gfxdata->unk0c, 7); // } // // func0f15ef9c(roomnum); diff --git a/src/game/game_165670.c b/src/game/game_165670.c index 99f94be81..f8ee0bbaa 100644 --- a/src/game/game_165670.c +++ b/src/game/game_165670.c @@ -8,300 +8,264 @@ #include "data.h" #include "types.h" -struct twowords twowords_26a40[] = { - { 0xfc26a004, 0x1f1093ff }, - { 0xfc232dff, 0xfffffe38 }, - { 0x00000000, 0x00000000 }, +Gfx gbi_26a40[] = { + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, 0, SCALE, 0, TEXEL1, 0, PRIM_LOD_FRAC, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + 0, }; -struct twowords twowords_26a58[] = { - { 0xb900031d, 0x0c192078 }, - { 0xb900031d, 0xc8112078 }, - { 0xb900031d, 0x0c182078 }, - { 0xb900031d, 0xc8102078 }, - { 0xb900031d, 0x0c192d58 }, - { 0xb900031d, 0xc8112d58 }, - { 0xb900031d, 0x0c184dd8 }, - { 0xb900031d, 0xc8104dd8 }, - { 0xb900031d, 0x0c1849d8 }, - { 0xb900031d, 0xc81049d8 }, - { 0xb900031d, 0x0c193078 }, - { 0xb900031d, 0xc8113078 }, - { 0xb900031d, 0x0c192048 }, - { 0xb900031d, 0xc8112048 }, - { 0xb900031d, 0x0c182048 }, - { 0xb900031d, 0xc8102048 }, - { 0xfc26a004, 0x1f1093ff }, - { 0xfc26a004, 0x1f1493ff }, - { 0xfc121824, 0xff33ffff }, - { 0xfc121a24, 0xff37ffff }, - { 0xfc26a004, 0x1ffc93fc }, - { 0xfc26a004, 0x1ffc93fd }, - { 0xfc127e24, 0xfffff9fc }, - { 0xfc127e24, 0xfffffbfd }, - { 0xfc26a004, 0x1f1093ff }, - { 0xfc26a004, 0x1f1493ff }, - { 0xfc121824, 0xff33ffff }, - { 0xfc121a24, 0xff37ffff }, - { 0xfc26a004, 0x1ffc93fc }, - { 0xfc26a004, 0x1ffc93fd }, - { 0xfc127e24, 0xfffff9fc }, - { 0xfc127e24, 0xfffffbfd }, - { 0xfcffffff, 0xfffe7838 }, - { 0xfcffffff, 0xfffe7a38 }, - { 0xfcffffff, 0xfffe793c }, - { 0xfcffffff, 0xfffe7b3d }, - { 0xfc26e404, 0x1f10ffff }, - { 0xfc26e404, 0x1f14ffff }, - { 0x00000000, 0x00000000 }, +Gfx gbi_26a58[] = { + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_OPA_SURF2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_OPA_TERR2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_TERR2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_OPA_DECAL2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_DECAL2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_DECAL2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_SURF2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_OPA_SURF2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_OPA_SURF2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_OPA_TERR2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_OPA_TERR2), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), + 0, }; -struct twowords twowords_26b90[] = { - { 0xb900031d, 0x0c184dd8 }, - { 0xb900031d, 0xc8104dd8 }, - { 0xb900031d, 0x0c1849d8 }, - { 0xb900031d, 0xc81049d8 }, - { 0xb900031d, 0x0c193078 }, - { 0xb900031d, 0xc8113078 }, - { 0xfc26a004, 0x1f1093ff }, - { 0xfc26a004, 0x1f1493ff }, - { 0xfc121824, 0xff33ffff }, - { 0xfc121a24, 0xff37ffff }, - { 0xfc26a004, 0x1ffc93fc }, - { 0xfc26a004, 0x1ffc93fd }, - { 0xfc127e24, 0xfffff9fc }, - { 0xfc127e24, 0xfffffbfd }, - { 0xfc26a004, 0x1f1093ff }, - { 0xfc26a004, 0x1f1493ff }, - { 0xfc121824, 0xff33ffff }, - { 0xfc121a24, 0xff37ffff }, - { 0xfc26a004, 0x1ffc93fc }, - { 0xfc26a004, 0x1ffc93fd }, - { 0xfc127e24, 0xfffff9fc }, - { 0xfc127e24, 0xfffffbfd }, - { 0xfcffffff, 0xfffe7838 }, - { 0xfcffffff, 0xfffe7a38 }, - { 0xfcffffff, 0xfffe793c }, - { 0xfcffffff, 0xfffe7b3d }, - { 0xfc26e404, 0x1f10ffff }, - { 0xfc26e404, 0x1f14ffff }, - { 0x00000000, 0x00000000 }, +Gfx gbi_26b90[] = { + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_DECAL2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_SURF2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), + 0, }; -struct twowords twowords_26c78[] = { - { 0xfc26a004, 0x1f1093ff }, - { 0xfc26a004, 0x1f1493ff }, - { 0xfc121824, 0xff33ffff }, - { 0xfc121a24, 0xff37ffff }, - { 0xfc26a004, 0x1ffc93fc }, - { 0xfc26a004, 0x1ffc93fd }, - { 0xfc127e24, 0xfffff9fc }, - { 0xfc127e24, 0xfffffbfd }, - { 0xfc26a004, 0x1f1093ff }, - { 0xfc26a004, 0x1f1493ff }, - { 0xfc121824, 0xff33ffff }, - { 0xfc121a24, 0xff37ffff }, - { 0xfc26a004, 0x1ffc93fc }, - { 0xfc26a004, 0x1ffc93fd }, - { 0xfc127e24, 0xfffff9fc }, - { 0xfc127e24, 0xfffffbfd }, - { 0xfcffffff, 0xfffe7838 }, - { 0xfcffffff, 0xfffe7a38 }, - { 0xfcffffff, 0xfffe793c }, - { 0xfcffffff, 0xfffe7b3d }, - { 0x00000000, 0x00000000 }, +Gfx gbi_26c78[] = { + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), + 0, }; -struct twowords twowords_26d20[] = { - { 0xfc26a004, 0x1f1093ff }, - { 0xfc26a004, 0x1f1493ff }, - { 0xfc121824, 0xff33ffff }, - { 0xfc121a24, 0xff37ffff }, - { 0xfc26a004, 0x1ffc93fc }, - { 0xfc26a004, 0x1ffc93fd }, - { 0xfc127e24, 0xfffff9fc }, - { 0xfc127e24, 0xfffffbfd }, - { 0xfc26a004, 0x1f1093ff }, - { 0xfc26a004, 0x1f1493ff }, - { 0xfc121824, 0xff33ffff }, - { 0xfc121a24, 0xff37ffff }, - { 0xfc26a004, 0x1ffc93fc }, - { 0xfc26a004, 0x1ffc93fd }, - { 0xfc127e24, 0xfffff9fc }, - { 0xfc127e24, 0xfffffbfd }, - { 0xfcffffff, 0xfffe7838 }, - { 0xfcffffff, 0xfffe7a38 }, - { 0xfcffffff, 0xfffe793c }, - { 0xfcffffff, 0xfffe7b3d }, - { 0x00000000, 0x00000000 }, +Gfx gbi_26d20[] = { + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), + 0, }; -struct twowords twowords_26dc8[] = { - { 0xb900031d, 0x005049d8 }, - { 0xb900031d, 0x00553078 }, - { 0xb900031d, 0x0c1849d8 }, - { 0xb900031d, 0x0c193078 }, - { 0x00000000, 0x00000000 }, +Gfx gbi_26dc8[] = { + gsDPSetRenderMode(G_RM_AA_ZB_XLU_SURF, G_RM_AA_ZB_XLU_SURF2), + gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_SURF2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_TEX_EDGE2), + 0, }; -struct twowords twowords_26df0[] = { - { 0xb900031d, 0x00552078 }, - { 0xb900031d, 0x00502078 }, - { 0xb900031d, 0x0c192078 }, - { 0xb900031d, 0x0c182078 }, - { 0x00000000, 0x00000000 }, +Gfx gbi_26df0[] = { + gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2), + gsDPSetRenderMode(G_RM_AA_ZB_OPA_TERR, G_RM_AA_ZB_OPA_TERR2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_OPA_SURF2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_OPA_TERR2), + 0, }; -struct twowords twowords_26e18[] = { - { 0xb900031d, 0x0c1849d8 }, - { 0xb900031d, 0x0c184b50 }, - { 0x00000000, 0x00000000 }, +Gfx gbi_26e18[] = { + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_SURF2), + gsDPSetRenderMode(G_RM_PASS, G_RM_ZB_CLD_SURF2), + 0, }; -struct twowords twowords_26e30[] = { - { 0xba001402, 0x00000000 }, - { 0xba001402, 0x00100000 }, - { 0xb900031d, 0x00502048 }, - { 0xb900031d, 0x08d02048 }, - { 0xfc127e24, 0xfffff9fc }, - { 0xfc127fff, 0xfffff838 }, - { 0x00000000, 0x00000000 }, +Gfx gbi_26e30[] = { + gsDPSetCycleType(G_CYC_1CYCLE), + gsDPSetCycleType(G_CYC_2CYCLE), + gsDPSetRenderMode(G_RM_AA_OPA_TERR, G_RM_AA_OPA_TERR2), + gsDPSetRenderMode(GBL_c1(G_BL_CLR_IN, G_BL_A_SHADE, G_BL_CLR_FOG, G_BL_1MA), G_RM_AA_OPA_TERR2), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_PASS2), + 0, }; -struct twowords twowords_26e68[] = { - { 0xfc127e24, 0xfffff9fc }, - { 0xfc137e26, 0xfffff9fc }, - { 0xfc121824, 0xff33ffff }, - { 0xfc131826, 0xff33ffff }, - { 0xfc127e24, 0xfffff9fc }, - { 0xfc137e26, 0xfffff9fc }, - { 0xfc121824, 0xff33ffff }, - { 0xfc131826, 0xff33ffff }, - { 0xfcffffff, 0xfffe793c }, - { 0xfc637ec6, 0xfffff9fc }, - { 0xfc26a004, 0x1ffc93fc }, - { 0xfc26a006, 0x1ffc93fc }, - { 0xfc26a004, 0x1f1093ff }, - { 0xfc26a006, 0x1f1093ff }, - { 0xfc26a004, 0x1ffc93fc }, - { 0xfc26a006, 0x1ffc93fc }, - { 0xfc26a004, 0x1f1093ff }, - { 0xfc26a006, 0x1f1093ff }, - { 0xfc26e404, 0x1ffcfffc }, - { 0xfc26e406, 0x1ffcfffc }, - { 0xfc26e404, 0x1f10ffff }, - { 0xfc26e406, 0x1f10ffff }, - { 0xfc26e404, 0x1ffcfffc }, - { 0xfc26e406, 0x1ffcfffc }, - { 0xfc26e404, 0x1f10ffff }, - { 0xfc26e406, 0x1f10ffff }, - { 0xfcffffff, 0xfffe7838 }, - { 0xfc637fff, 0xfffff838 }, - { 0x00000000, 0x00000000 }, +Gfx gbi_26e68[] = { + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE, TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE, TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetCombineLERP(1, 0, SCALE, 0, 0, 0, 0, SHADE, 1, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, SHADE), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, SHADE), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2), + gsDPSetCombineLERP(1, 0, SCALE, 0, 0, 0, 0, SHADE, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + 0, }; -struct twowords twowords_26f50[] = { - { 0xfc137e26, 0xfffff9fc }, - { 0xfc127e24, 0xfffff9fc }, - { 0xfc131826, 0xff33ffff }, - { 0xfc121824, 0xff33ffff }, - { 0xfc137e26, 0xfffff9fc }, - { 0xfc127e24, 0xfffff9fc }, - { 0xfc131826, 0xff33ffff }, - { 0xfc121824, 0xff33ffff }, - { 0xfc637ec6, 0xfffff9fc }, - { 0xfcffffff, 0xfffe793c }, - { 0xfc26a006, 0x1ffc93fc }, - { 0xfc26a004, 0x1ffc93fc }, - { 0xfc26a006, 0x1f1093ff }, - { 0xfc26a004, 0x1f1093ff }, - { 0xfc26a006, 0x1ffc93fc }, - { 0xfc26a004, 0x1ffc93fc }, - { 0xfc26a006, 0x1f1093ff }, - { 0xfc26a004, 0x1f1093ff }, - { 0xfc26e406, 0x1ffcfffc }, - { 0xfc26e404, 0x1ffcfffc }, - { 0xfc26e406, 0x1f10ffff }, - { 0xfc26e404, 0x1f10ffff }, - { 0xfc26e406, 0x1ffcfffc }, - { 0xfc26e404, 0x1ffcfffc }, - { 0xfc26e406, 0x1f10ffff }, - { 0xfc26e404, 0x1f10ffff }, - { 0xfc637fff, 0xfffff838 }, - { 0xfcffffff, 0xfffe7838 }, - { 0x00000000, 0x00000000 }, +Gfx gbi_26f50[] = { + gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE, TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE, TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(1, 0, SCALE, 0, 0, 0, 0, SHADE, 1, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, SHADE), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, SHADE), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineLERP(1, 0, SCALE, 0, 0, 0, 0, SHADE, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2), + 0, }; -u32 var80081018 = (u32) &twowords_26a40; -u32 var8008101c = (u32) &twowords_26a58; -u32 var80081020 = (u32) &twowords_26dc8; -u32 var80081024 = (u32) &twowords_26df0; -u32 var80081028 = (u32) &twowords_26e18; -u32 var8008102c = (u32) &twowords_26b90; -u32 var80081030 = (u32) &twowords_26c78; -u32 var80081034 = (u32) &twowords_26d20; -u32 var80081038 = (u32) &twowords_26e30; -u32 var8008103c = (u32) &twowords_26e68; -u32 var80081040 = (u32) &twowords_26f50; +Gfx *var80081018[] = { + gbi_26a40, + gbi_26a58, + gbi_26dc8, + gbi_26df0, + gbi_26e18, + gbi_26b90, + gbi_26c78, + gbi_26d20, + gbi_26e30, + gbi_26e68, + gbi_26f50, +}; -GLOBAL_ASM( -glabel func0f165670 -/* f165670: 10a00004 */ beqz $a1,.L0f165684 -/* f165674: 00801025 */ or $v0,$a0,$zero -/* f165678: 0045082b */ sltu $at,$v0,$a1 -/* f16567c: 14200006 */ bnez $at,.L0f165698 -/* f165680: 00000000 */ nop -.L0f165684: -/* f165684: 14a00026 */ bnez $a1,.L0f165720 -/* f165688: 00000000 */ nop -/* f16568c: 808e0000 */ lb $t6,0x0($a0) -/* f165690: 2407ffb8 */ addiu $a3,$zero,-72 -/* f165694: 10ee0022 */ beq $a3,$t6,.L0f165720 -.L0f165698: -/* f165698: 3c088008 */ lui $t0,%hi(var80081018) -/* f16569c: 25081018 */ addiu $t0,$t0,%lo(var80081018) -/* f1656a0: 00067880 */ sll $t7,$a2,0x2 -/* f1656a4: 010fc021 */ addu $t8,$t0,$t7 -/* f1656a8: 8f030000 */ lw $v1,0x0($t8) -/* f1656ac: 2407ffb8 */ addiu $a3,$zero,-72 -/* f1656b0: 8c640000 */ lw $a0,0x0($v1) -/* f1656b4: 10800010 */ beqz $a0,.L0f1656f8 -/* f1656b8: 00000000 */ nop -/* f1656bc: 8c590000 */ lw $t9,0x0($v0) -.L0f1656c0: -/* f1656c0: 5724000a */ bnel $t9,$a0,.L0f1656ec -/* f1656c4: 8c640010 */ lw $a0,0x10($v1) -/* f1656c8: 8c490004 */ lw $t1,0x4($v0) -/* f1656cc: 8c6a0004 */ lw $t2,0x4($v1) -/* f1656d0: 552a0006 */ bnel $t1,$t2,.L0f1656ec -/* f1656d4: 8c640010 */ lw $a0,0x10($v1) -/* f1656d8: 8c610008 */ lw $at,0x8($v1) -/* f1656dc: ac410000 */ sw $at,0x0($v0) -/* f1656e0: 8c6c000c */ lw $t4,0xc($v1) -/* f1656e4: ac4c0004 */ sw $t4,0x4($v0) -/* f1656e8: 8c640010 */ lw $a0,0x10($v1) -.L0f1656ec: -/* f1656ec: 24630010 */ addiu $v1,$v1,0x10 -/* f1656f0: 5480fff3 */ bnezl $a0,.L0f1656c0 -/* f1656f4: 8c590000 */ lw $t9,0x0($v0) -.L0f1656f8: -/* f1656f8: 10a00004 */ beqz $a1,.L0f16570c -/* f1656fc: 24420008 */ addiu $v0,$v0,0x8 -/* f165700: 0045082b */ sltu $at,$v0,$a1 -/* f165704: 1420ffe4 */ bnez $at,.L0f165698 -/* f165708: 00000000 */ nop -.L0f16570c: -/* f16570c: 14a00004 */ bnez $a1,.L0f165720 -/* f165710: 00000000 */ nop -/* f165714: 804d0000 */ lb $t5,0x0($v0) -/* f165718: 14edffdf */ bne $a3,$t5,.L0f165698 -/* f16571c: 00000000 */ nop -.L0f165720: -/* f165720: 03e00008 */ jr $ra -/* f165724: 00000000 */ nop -); +void gfxReplaceGbiCommands(Gfx *startgdl, Gfx *endgdl, s32 type) +{ + Gfx *gdl = startgdl; -void func0f165728(struct roomgfxdata18 *arg0, s32 arg1) + while ((endgdl && gdl < endgdl) || (!endgdl && *(s8 *)gdl != G_ENDDL)) { + Gfx *src = var80081018[type]; + + while (src->words.w0 != 0) { + if (src->words.w0 == gdl->words.w0 && src->words.w1 == gdl->words.w1) { + *gdl = src[1]; + } + + src += 2; + } + + gdl++; + } +} + +void gfxReplaceGbiCommandsRecursively(struct roomgfxdata18 *arg0, s32 type) { if (arg0->unk00 == 1); @@ -312,11 +276,11 @@ void func0f165728(struct roomgfxdata18 *arg0, s32 arg1) switch (arg0->unk00) { case 0: - func0f165670(arg0->gdl, 0, arg1); + gfxReplaceGbiCommands(arg0->gdl, NULL, type); arg0 = arg0->next; break; case 1: - func0f165728((struct roomgfxdata18 *)arg0->gdl, arg1); + gfxReplaceGbiCommandsRecursively((struct roomgfxdata18 *)arg0->gdl, type); arg0 = arg0->next; break; default: diff --git a/src/include/game/game_165670.h b/src/include/game/game_165670.h index ecdf49c66..b63582d44 100644 --- a/src/include/game/game_165670.h +++ b/src/include/game/game_165670.h @@ -4,7 +4,7 @@ #include "data.h" #include "types.h" -void func0f165670(Gfx *gdl, s32 arg1, s32 arg2); -void func0f165728(struct roomgfxdata18 *arg0, s32 arg1); +void gfxReplaceGbiCommands(Gfx *gdl, Gfx *endgdl, s32 type); +void gfxReplaceGbiCommandsRecursively(struct roomgfxdata18 *arg0, s32 type); #endif diff --git a/src/include/types.h b/src/include/types.h index 23f6422b6..47f0c2263 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -3575,11 +3575,6 @@ struct menudialogdef { struct menudialogdef *nextsibling; }; -struct twowords { - u32 unk00; - u32 unk04; -}; - struct surfacetype { u16 *sounds; u8 *unk04;