diff --git a/asm/non_matchings/textures_sprites/func_8007BF34.s b/asm/non_matchings/textures_sprites/func_8007BF34.s index 459d8d8b..b07ae388 100644 --- a/asm/non_matchings/textures_sprites/func_8007BF34.s +++ b/asm/non_matchings/textures_sprites/func_8007BF34.s @@ -36,8 +36,8 @@ glabel func_8007BF34 /* 07CBB4 8007BFB4 8CE30000 */ lw $v1, ($a3) /* 07CBB8 8007BFB8 00000000 */ nop .L8007BFBC: -/* 07CBBC 8007BFBC 3C0F8012 */ lui $t7, %hi(D_80126378) # $t7, 0x8012 -/* 07CBC0 8007BFC0 8DEF6378 */ lw $t7, %lo(D_80126378)($t7) +/* 07CBBC 8007BFBC 3C0F8012 */ lui $t7, %hi(gBlockedRenderFlags) # $t7, 0x8012 +/* 07CBC0 8007BFC0 8DEF6378 */ lw $t7, %lo(gBlockedRenderFlags)($t7) /* 07CBC4 8007BFC4 3C01F7FF */ lui $at, (0xF7FFFFFF >> 16) # lui $at, 0xf7ff /* 07CBC8 8007BFC8 3421FFFF */ ori $at, (0xF7FFFFFF & 0xFFFF) # ori $at, $at, 0xffff /* 07CBCC 8007BFCC 00A17024 */ and $t6, $a1, $at @@ -87,8 +87,8 @@ glabel func_8007BF34 /* 07CC70 8007C070 31AE0001 */ andi $t6, $t5, 1 /* 07CC74 8007C074 000E7900 */ sll $t7, $t6, 4 /* 07CC78 8007C078 3C018000 */ lui $at, 0x8000 -/* 07CC7C 8007C07C 3C19800E */ lui $t9, %hi(D_800DE848) # $t9, 0x800e -/* 07CC80 8007C080 2739E848 */ addiu $t9, %lo(D_800DE848) # addiu $t9, $t9, -0x17b8 +/* 07CC7C 8007C07C 3C19800E */ lui $t9, %hi(dRenderSettingsSpriteCld) # $t9, 0x800e +/* 07CC80 8007C080 2739E848 */ addiu $t9, %lo(dRenderSettingsSpriteCld) # addiu $t9, $t9, -0x17b8 /* 07CC84 8007C084 01E1C021 */ addu $t8, $t7, $at /* 07CC88 8007C088 3C0C0702 */ lui $t4, (0x07020010 >> 16) # lui $t4, 0x702 /* 07CC8C 8007C08C 244B0008 */ addiu $t3, $v0, 8 @@ -103,8 +103,8 @@ glabel func_8007BF34 /* 07CCAC 8007C0AC 24ACFFF0 */ addiu $t4, $a1, -0x10 /* 07CCB0 8007C0B0 000C6900 */ sll $t5, $t4, 4 /* 07CCB4 8007C0B4 3C018000 */ lui $at, 0x8000 -/* 07CCB8 8007C0B8 3C0F800E */ lui $t7, %hi(D_800DE868) # $t7, 0x800e -/* 07CCBC 8007C0BC 25EFE868 */ addiu $t7, %lo(D_800DE868) # addiu $t7, $t7, -0x1798 +/* 07CCB8 8007C0B8 3C0F800E */ lui $t7, %hi(dRenderSettingsSpriteXlu) # $t7, 0x800e +/* 07CCBC 8007C0BC 25EFE868 */ addiu $t7, %lo(dRenderSettingsSpriteXlu) # addiu $t7, $t7, -0x1798 /* 07CCC0 8007C0C0 01A17021 */ addu $t6, $t5, $at /* 07CCC4 8007C0C4 244A0008 */ addiu $t2, $v0, 8 /* 07CCC8 8007C0C8 AC8A0000 */ sw $t2, ($a0) @@ -116,10 +116,10 @@ glabel func_8007BF34 /* 07CCDC 8007C0DC 8C820000 */ lw $v0, ($a0) /* 07CCE0 8007C0E0 00055100 */ sll $t2, $a1, 4 /* 07CCE4 8007C0E4 3C018000 */ lui $at, 0x8000 -/* 07CCE8 8007C0E8 3C0C800E */ lui $t4, %hi(D_800DE8E8) # $t4, 0x800e +/* 07CCE8 8007C0E8 3C0C800E */ lui $t4, %hi(dRenderSettingsCommon) # $t4, 0x800e /* 07CCEC 8007C0EC 24590008 */ addiu $t9, $v0, 8 /* 07CCF0 8007C0F0 AC990000 */ sw $t9, ($a0) -/* 07CCF4 8007C0F4 258CE8E8 */ addiu $t4, %lo(D_800DE8E8) # addiu $t4, $t4, -0x1718 +/* 07CCF4 8007C0F4 258CE8E8 */ addiu $t4, %lo(dRenderSettingsCommon) # addiu $t4, $t4, -0x1718 /* 07CCF8 8007C0F8 01415821 */ addu $t3, $t2, $at /* 07CCFC 8007C0FC 3C090702 */ lui $t1, (0x07020010 >> 16) # lui $t1, 0x702 /* 07CD00 8007C100 35290010 */ ori $t1, (0x07020010 & 0xFFFF) # ori $t1, $t1, 0x10 @@ -127,11 +127,11 @@ glabel func_8007BF34 /* 07CD08 8007C108 AC4D0004 */ sw $t5, 4($v0) /* 07CD0C 8007C10C AC490000 */ sw $t1, ($v0) .L8007C110: -/* 07CD10 8007C110 3C018012 */ lui $at, %hi(D_8012637C) # $at, 0x8012 -/* 07CD14 8007C114 AC20637C */ sw $zero, %lo(D_8012637C)($at) -/* 07CD18 8007C118 3C018012 */ lui $at, %hi(D_80126380) # $at, 0x8012 +/* 07CD10 8007C110 3C018012 */ lui $at, %hi(gCurrentTextureHeader) # $at, 0x8012 +/* 07CD14 8007C114 AC20637C */ sw $zero, %lo(gCurrentTextureHeader)($at) +/* 07CD18 8007C118 3C018012 */ lui $at, %hi(gUsingTexture) # $at, 0x8012 /* 07CD1C 8007C11C 240E0001 */ li $t6, 1 -/* 07CD20 8007C120 A42E6380 */ sh $t6, %lo(D_80126380)($at) +/* 07CD20 8007C120 A42E6380 */ sh $t6, %lo(gUsingTexture)($at) .L8007C124: /* 07CD24 8007C124 03E00008 */ jr $ra /* 07CD28 8007C128 00000000 */ nop diff --git a/asm/non_matchings/unknown_078050/func_80078190.s b/asm/non_matchings/unknown_078050/func_80078190.s index 9b5aad22..acc06412 100644 --- a/asm/non_matchings/unknown_078050/func_80078190.s +++ b/asm/non_matchings/unknown_078050/func_80078190.s @@ -15,12 +15,12 @@ glabel func_80078190 /* 078DC4 800781C4 8FA40040 */ lw $a0, 0x40($sp) /* 078DC8 800781C8 00024403 */ sra $t0, $v0, 0x10 /* 078DCC 800781CC 8C830000 */ lw $v1, ($a0) -/* 078DD0 800781D0 3C19800E */ lui $t9, %hi(D_800DE598) # $t9, 0x800e +/* 078DD0 800781D0 3C19800E */ lui $t9, %hi(dRaceFinishBackgroundSettings) # $t9, 0x800e /* 078DD4 800781D4 246F0008 */ addiu $t7, $v1, 8 /* 078DD8 800781D8 AC8F0000 */ sw $t7, ($a0) /* 078DDC 800781DC 3C0A800E */ lui $t2, %hi(D_800DE4C8) # $t2, 0x800e /* 078DE0 800781E0 310EFFFF */ andi $t6, $t0, 0xffff -/* 078DE4 800781E4 2739E598 */ addiu $t9, %lo(D_800DE598) # addiu $t9, $t9, -0x1a68 +/* 078DE4 800781E4 2739E598 */ addiu $t9, %lo(dRaceFinishBackgroundSettings) # addiu $t9, $t9, -0x1a68 /* 078DE8 800781E8 3C180600 */ lui $t8, 0x600 /* 078DEC 800781EC 254AE4C8 */ addiu $t2, %lo(D_800DE4C8) # addiu $t2, $t2, -0x1b38 /* 078DF0 800781F0 01C04025 */ move $t0, $t6 diff --git a/lib/src/al/env.c b/lib/src/al/env.c index a3c7146c..aa42a7a2 100644 --- a/lib/src/al/env.c +++ b/lib/src/al/env.c @@ -24,7 +24,7 @@ #include "types.h" #include "macros.h" #include "audio_internal.h" -#include "unknown_B7B30.h" +#include "audio_assert.h" // TODO: these come from headers #ident "$Revision: 1.17 $" diff --git a/src/unknown_B7B30.c b/src/audio_assert.c similarity index 95% rename from src/unknown_B7B30.c rename to src/audio_assert.c index 456e9a12..4e8b8e60 100644 --- a/src/unknown_B7B30.c +++ b/src/audio_assert.c @@ -1,7 +1,7 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x800B6F30 */ -#include "unknown_B7B30.h" +#include "audio_assert.h" UNUSED void func_800B6F30(UNUSED int arg0, UNUSED int arg1, UNUSED int arg2) {} diff --git a/src/unknown_B7B30.h b/src/audio_assert.h similarity index 76% rename from src/unknown_B7B30.h rename to src/audio_assert.h index 6414ad2d..289fd655 100644 --- a/src/unknown_B7B30.h +++ b/src/audio_assert.h @@ -1,5 +1,5 @@ -#ifndef _UNKNOWN_B7B30_H_ -#define _UNKNOWN_B7B30_H_ +#ifndef _AUDIO_ASSERT_H_ +#define _AUDIO_ASSERT_H_ #include "types.h" #include "libultra_internal.h" diff --git a/src/camera.c b/src/camera.c index db4a2684..69e816fd 100644 --- a/src/camera.c +++ b/src/camera.c @@ -48,7 +48,7 @@ ScreenViewport gScreenViewports[4] = { u32 gViewportWithBG = FALSE; -Vertex D_800DD138 = { +Vertex gVehiclePartVertex = { 0, 0, 0, 255, 255, 255, 255 }; @@ -1008,7 +1008,7 @@ s32 render_sprite_billboard(Gfx **dlist, MatrixS **mtx, Vertex **vertexList, Obj s32 var_s2; result = TRUE; - if (flags & RENDER_ANTI_ALIASING) { + if (flags & RENDER_VEHICLE_PART) { sp5C = D_80120D28[D_80120D20] - obj->segment.trans.x_position; sp58 = D_80120D40[D_80120D20] - obj->segment.trans.y_position; var_f20 = D_80120D58[D_80120D20] - obj->segment.trans.z_position; @@ -1052,8 +1052,8 @@ s32 render_sprite_billboard(Gfx **dlist, MatrixS **mtx, Vertex **vertexList, Obj f32_matrix_mult(D_80120D70[D_80120D1C], &D_80120F20, &D_80121060); f32_matrix_to_s16_matrix(&D_80121060, *mtx); D_80120D88[D_80120D1C] = *mtx; - gSPMatrix((*dlist)++, OS_PHYSICAL_TO_K0((*mtx)++), 0x80); - gSPVertexDKR((*dlist)++, OS_K0_TO_PHYSICAL(&D_800DD138), 1, 0); + gSPMatrix((*dlist)++, OS_PHYSICAL_TO_K0((*mtx)++), G_MTX_DKR_INDEX_2); + gSPVertexDKR((*dlist)++, OS_K0_TO_PHYSICAL(&gVehiclePartVertex), 1, 0); } else { v = *vertexList; v->x = obj->segment.trans.x_position; @@ -1075,13 +1075,13 @@ s32 render_sprite_billboard(Gfx **dlist, MatrixS **mtx, Vertex **vertexList, Obj f32_matrix_from_rotation_and_scale((f32 (*)[4]) D_80120D70[D_80120D1C], sp34, obj->segment.trans.scale, gVideoAspectRatio); f32_matrix_to_s16_matrix(D_80120D70[D_80120D1C], *mtx); D_80120D88[D_80120D1C] = *mtx; - gSPMatrix((*dlist)++, OS_PHYSICAL_TO_K0((*mtx)++), 0x80); + gSPMatrix((*dlist)++, OS_PHYSICAL_TO_K0((*mtx)++), G_MTX_DKR_INDEX_2); gDkrEnableBillboard((*dlist)++); } if (D_80120D0C == 0) { var_s2 = ((var_s2 & 0xFF) * arg4->unk0) >> 8; } - flags &= ~RENDER_ANTI_ALIASING; + flags &= ~RENDER_VEHICLE_PART; if (flags & RENDER_SEMI_TRANSPARENT) { flags |= RENDER_ANTI_ALIASING; } diff --git a/src/menu.c b/src/menu.c index 0f84ca98..02549e25 100644 --- a/src/menu.c +++ b/src/menu.c @@ -2470,7 +2470,7 @@ void func_8008377C(UNUSED s32 updateRate, f32 arg1) { sMenuGuiOpacity = (gTitleRevealTimer * 8) - 1; func_80068508(0); if (scale != 1.0f) { - render_texture_rectangle_scaled(&sMenuCurrDisplayList, sGameTitleTileOffsets, SCREEN_WIDTH_FLOAT_HALF, 52.0f, scale, scale, 0xFFFFFFFE, 1); + render_texture_rectangle_scaled(&sMenuCurrDisplayList, sGameTitleTileOffsets, SCREEN_WIDTH_FLOAT_HALF, 52.0f, scale, scale, 0xFFFFFFFE, TEXRECT_POINT); } else { render_textured_rectangle(&sMenuCurrDisplayList, sGameTitleTileOffsets, SCREEN_WIDTH_HALF, 52, 255, 255, 255, 255); } @@ -8432,7 +8432,7 @@ void render_track_selection_viewport_border(ObjectModel *objMdl) { flags = RENDER_FOG_ACTIVE | RENDER_SEMI_TRANSPARENT | RENDER_ANTI_ALIASING; } for (i = 0; i < objMdl->numberOfBatches; i++) { - if (!(objMdl->batches[i].flags & 0x100)) { + if (!(objMdl->batches[i].flags & RENDER_Z_UPDATE)) { vertOffset = objMdl->batches[i].verticesOffset; triOffset = objMdl->batches[i].facesOffset; numVerts = objMdl->batches[i + 1].verticesOffset - vertOffset; diff --git a/src/objects.c b/src/objects.c index 275844e3..8bee4dc3 100644 --- a/src/objects.c +++ b/src/objects.c @@ -1362,19 +1362,19 @@ void func_80011AD0(Object *this) { if (this->properties.characterFlag.characterID >= 0) { obj64 = this->unk64; func_80011960(this, obj64->character_flag.vertices, 4, obj64->character_flag.triangles, - 2, obj64->character_flag.texture, 11, 0, 1.0f); + 2, obj64->character_flag.texture, RENDER_ANTI_ALIASING | RENDER_Z_COMPARE | RENDER_FOG_ACTIVE, 0, 1.0f); } break; case BHV_BUTTERFLY: obj64 = this->unk64; - func_80011960(this, &obj64->butterfly.vertices[obj64->butterfly.unkFC * 6], 6, obj64->butterfly.triangles, 8, obj64->butterfly.texture, 10, 0, 1.0f); + func_80011960(this, &obj64->butterfly.vertices[obj64->butterfly.unkFC * 6], 6, obj64->butterfly.triangles, 8, obj64->butterfly.texture, RENDER_Z_COMPARE | RENDER_FOG_ACTIVE, 0, 1.0f); break; case BHV_FISH: obj64 = this->unk64; tmp_f0 = this->segment.level_entry->fish.unkC[1]; tmp_f0 *= 0.01f; - func_80011960(this, &obj64->fish.vertices[obj64->fish.unkFC * 6], 6, obj64->fish.triangles, 8, obj64->fish.texture, 26, 0, tmp_f0); + func_80011960(this, &obj64->fish.vertices[obj64->fish.unkFC * 6], 6, obj64->fish.triangles, 8, obj64->fish.texture, RENDER_Z_COMPARE | RENDER_FOG_ACTIVE | RENDER_CUTOUT, 0, tmp_f0); break; case BHV_BOOST: diff --git a/src/textures_sprites.c b/src/textures_sprites.c index 6ca6ac65..794c2aed 100644 --- a/src/textures_sprites.c +++ b/src/textures_sprites.c @@ -19,798 +19,205 @@ s32 D_800DE7C4 = 1; // See "include/f3ddkr.h" for the defines -Gfx D_800DE7C8[][2] = { - { - gsDPSetCombineMode(G_CC_MODULATEIA, DKR_CC_UNK0), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | DKR_RM_UNKNOWN0 | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA, DKR_CC_UNK0), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | DKR_RM_UNKNOWN0 | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA, DKR_CC_UNK0), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | DKR_RM_UNKNOWN0 | G_RM_ZB_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA, DKR_CC_UNK0), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | DKR_RM_UNKNOWN0 | G_RM_AA_ZB_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | DKR_RM_UNKNOWN1 | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | DKR_RM_UNKNOWN1 | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | DKR_RM_UNKNOWN1 | G_RM_ZB_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | DKR_RM_UNKNOWN1 | G_RM_AA_ZB_XLU_SURF2), - }, +Gfx dRenderSettingsVtxAlpha[][2] = { + // Semitransparent Vertex Alpha'd surface (Zsorted) + DRAW_TABLE_GROUP(G_CC_MODULATEIA, DKR_CC_UNK0, DKR_OMH_2CYC_BILERP, + DKR_RM_UNKNOWN0, G_RM_XLU_SURF2, DKR_RM_UNKNOWN0, G_RM_AA_XLU_SURF2, DKR_RM_UNKNOWN0, G_RM_ZB_XLU_SURF2, DKR_RM_UNKNOWN0, G_RM_AA_ZB_XLU_SURF2), + // Semitransparent Vertex Alpha'd surface (No Zsort) + DRAW_TABLE_GROUP(G_CC_MODULATEIA, DKR_CC_UNK1, DKR_OMH_2CYC_BILERP, + DKR_RM_UNKNOWN1, G_RM_XLU_SURF2, DKR_RM_UNKNOWN1, G_RM_AA_XLU_SURF2, DKR_RM_UNKNOWN1, G_RM_ZB_XLU_SURF2, DKR_RM_UNKNOWN1, G_RM_AA_ZB_XLU_SURF2), }; -Gfx D_800DE848[][2] = { - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_POINT, DKR_OML_COMMON | G_RM_CLD_SURF | G_RM_CLD_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_POINT, DKR_OML_COMMON | G_RM_ZB_CLD_SURF | G_RM_ZB_CLD_SURF2), - }, +Gfx dRenderSettingsSpriteCld[][2] = { + // Semitransparent Sprite (Preserve coverage) + DRAW_TABLE_ENTRY(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM, DKR_OMH_1CYC_POINT, G_RM_CLD_SURF, G_RM_CLD_SURF2), + DRAW_TABLE_ENTRY(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM, DKR_OMH_1CYC_POINT, G_RM_ZB_CLD_SURF, G_RM_ZB_CLD_SURF2) }; -// Should probably be merged with D_800DE848 -Gfx D_800DE868[][2] = { - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_POINT, DKR_OML_COMMON | G_RM_XLU_SURF | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_POINT, DKR_OML_COMMON | DKR_RM_UNKNOWN2_1 | DKR_RM_UNKNOWN2_2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_POINT, DKR_OML_COMMON | DKR_RM_UNKNOWN3_1 | DKR_RM_UNKNOWN3_2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_POINT, DKR_OML_COMMON | G_RM_AA_ZB_XLU_INTER | G_RM_AA_ZB_XLU_INTER2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_POINT, DKR_OML_COMMON | G_RM_XLU_SURF | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_POINT, DKR_OML_COMMON | DKR_RM_UNKNOWN2_1 | DKR_RM_UNKNOWN2_2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_POINT, DKR_OML_COMMON | DKR_RM_UNKNOWN3_1 | DKR_RM_UNKNOWN3_2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_POINT, DKR_OML_COMMON | G_RM_AA_ZB_XLU_INTER | G_RM_AA_ZB_XLU_INTER2), - }, +// Should probably be merged with dRenderSettingsSpriteCld +Gfx dRenderSettingsSpriteXlu[][2] = { + // Semitransparent Sprite (Overwrite coverage) + DRAW_TABLE_ENTRY(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM, DKR_OMH_1CYC_POINT, G_RM_XLU_SURF, G_RM_XLU_SURF2), + DRAW_TABLE_ENTRY(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM, DKR_OMH_1CYC_POINT, DKR_RM_UNKNOWN2_1, DKR_RM_UNKNOWN2_2), + DRAW_TABLE_ENTRY(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM, DKR_OMH_1CYC_POINT, DKR_RM_UNKNOWN3_1, DKR_RM_UNKNOWN3_2), + DRAW_TABLE_ENTRY(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM, DKR_OMH_1CYC_POINT, G_RM_AA_ZB_XLU_INTER, G_RM_AA_ZB_XLU_INTER2), + // Semitransparent Sprite (Overwrite coverage) (Copy) + DRAW_TABLE_ENTRY(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM, DKR_OMH_1CYC_POINT, G_RM_XLU_SURF, G_RM_XLU_SURF2), + DRAW_TABLE_ENTRY(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM, DKR_OMH_1CYC_POINT, DKR_RM_UNKNOWN2_1, DKR_RM_UNKNOWN2_2), + DRAW_TABLE_ENTRY(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM, DKR_OMH_1CYC_POINT, DKR_RM_UNKNOWN3_1, DKR_RM_UNKNOWN3_2), + DRAW_TABLE_ENTRY(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM, DKR_OMH_1CYC_POINT, G_RM_AA_ZB_XLU_INTER, G_RM_AA_ZB_XLU_INTER2) }; -Gfx D_800DE8E8[][2] = { - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_OPA_SURF | G_RM_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_AA_OPA_SURF | G_RM_AA_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_ZB_OPA_SURF | G_RM_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_OPA_SURF | G_RM_AA_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_XLU_SURF | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_AA_XLU_SURF | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_ZB_XLU_SURF | G_RM_ZB_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_XLU_SURF | G_RM_AA_ZB_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_ZB_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_XLU_SURF | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_AA_XLU_SURF | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_TEX_EDGE | G_RM_AA_ZB_TEX_EDGE2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_XLU_INTER | G_RM_AA_ZB_XLU_INTER2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_XLU_SURF | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_AA_XLU_SURF | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_TEX_EDGE | G_RM_AA_ZB_TEX_EDGE2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_XLU_INTER | G_RM_AA_ZB_XLU_INTER2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, DKR_CC_UNK2), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, DKR_CC_UNK2), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, DKR_CC_UNK2), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_TEX_EDGE2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, DKR_CC_UNK2), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_XLU_INTER2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, DKR_CC_UNK2), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, DKR_CC_UNK2), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, DKR_CC_UNK2), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_XLU_INTER2 | Z_UPD), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, DKR_CC_UNK2), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_XLU_INTER2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_OPA_SURF | G_RM_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_AA_OPA_SURF | G_RM_AA_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_ZB_OPA_SURF | G_RM_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_OPA_SURF | G_RM_AA_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_XLU_SURF | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_AA_XLU_SURF | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_ZB_XLU_SURF | G_RM_ZB_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_XLU_SURF | G_RM_AA_ZB_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_ZB_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_OPA_SURF | G_RM_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_AA_OPA_SURF | G_RM_AA_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_ZB_OPA_SURF | G_RM_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_OPA_SURF | G_RM_AA_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_XLU_SURF | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_AA_XLU_SURF | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_TEX_EDGE | G_RM_AA_ZB_TEX_EDGE2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_XLU_INTER | G_RM_AA_ZB_XLU_INTER2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_TEX_EDGE2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_XLU_INTER2), - }, +Gfx dRenderSettingsCommon[][2] = { + // Opaque Surface + DRAW_TABLE_GROUP(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA, DKR_OMH_1CYC_BILERP, + G_RM_OPA_SURF, G_RM_OPA_SURF2, G_RM_AA_OPA_SURF, G_RM_AA_OPA_SURF2, G_RM_ZB_OPA_SURF, G_RM_ZB_OPA_SURF2, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2), + // Semitransparent Surface + DRAW_TABLE_GROUP(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA, DKR_OMH_1CYC_BILERP, + G_RM_XLU_SURF, G_RM_XLU_SURF2, G_RM_AA_XLU_SURF, G_RM_AA_XLU_SURF2, G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2, G_RM_AA_ZB_XLU_SURF, G_RM_AA_ZB_XLU_SURF2), + // Opaque Surface with fog + DRAW_TABLE_GROUP(G_CC_MODULATEIDECALA, DKR_CC_UNK1, DKR_OMH_2CYC_BILERP, + G_RM_FOG_SHADE_A, G_RM_OPA_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_OPA_SURF2, G_RM_FOG_SHADE_A, G_RM_ZB_OPA_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + // Semitransparent Surface with fog + DRAW_TABLE_GROUP(G_CC_MODULATEIDECALA, DKR_CC_UNK1, DKR_OMH_2CYC_BILERP, + G_RM_FOG_SHADE_A, G_RM_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + // Cutout Surface with primitive colour + DRAW_TABLE_GROUP(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM, DKR_OMH_1CYC_BILERP, + G_RM_XLU_SURF, G_RM_XLU_SURF2, G_RM_AA_XLU_SURF, G_RM_AA_XLU_SURF2, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2, G_RM_AA_ZB_XLU_INTER, G_RM_AA_ZB_XLU_INTER2), + // Cutout Surface with primitive colour (Copy) + DRAW_TABLE_GROUP(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM, DKR_OMH_1CYC_BILERP, + G_RM_XLU_SURF, G_RM_XLU_SURF2, G_RM_AA_XLU_SURF, G_RM_AA_XLU_SURF2, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2, G_RM_AA_ZB_XLU_INTER, G_RM_AA_ZB_XLU_INTER2), + // Cutout Surface with primitive colour and fog + DRAW_TABLE_GROUP(G_CC_MODULATEIA_PRIM, DKR_CC_UNK2, DKR_OMH_2CYC_BILERP, + G_RM_FOG_SHADE_A, G_RM_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2, G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_INTER2), + // Cutout Surface with primitive colour and fog (Zsorted interpenetrating) + DRAW_TABLE_GROUP(G_CC_MODULATEIA_PRIM, DKR_CC_UNK2, DKR_OMH_2CYC_BILERP, + G_RM_FOG_SHADE_A, G_RM_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_INTER2 | Z_UPD, G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_INTER2), + // Opaque Surface with indexed texture + DRAW_TABLE_GROUP(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA, DKR_OMH_1CYC_CI_BILERP, + G_RM_OPA_SURF, G_RM_OPA_SURF2, G_RM_AA_OPA_SURF, G_RM_AA_OPA_SURF2, G_RM_ZB_OPA_SURF, G_RM_ZB_OPA_SURF2, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2), + // Semitransparent Surface with indexed texture + DRAW_TABLE_GROUP(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA, DKR_OMH_1CYC_CI_BILERP, + G_RM_XLU_SURF, G_RM_XLU_SURF2, G_RM_AA_XLU_SURF, G_RM_AA_XLU_SURF2, G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2, G_RM_AA_ZB_XLU_SURF, G_RM_AA_ZB_XLU_SURF2), + // Opqaue Surface with indexed texture and fog + DRAW_TABLE_GROUP(G_CC_MODULATEIDECALA, G_CC_PASS2, DKR_OMH_2CYC_CI_BILERP, + G_RM_FOG_SHADE_A, G_RM_OPA_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_OPA_SURF2, G_RM_FOG_SHADE_A, G_RM_ZB_OPA_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + // Semitransparent Surface with indexed texture and fog + DRAW_TABLE_GROUP(G_CC_MODULATEIDECALA, G_CC_PASS2, DKR_OMH_2CYC_CI_BILERP, + G_RM_FOG_SHADE_A, G_RM_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + // Opaque Surface with indexed texture. (Cutout) + DRAW_TABLE_GROUP(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA, DKR_OMH_1CYC_CI_BILERP, + G_RM_OPA_SURF, G_RM_OPA_SURF2, G_RM_AA_OPA_SURF, G_RM_AA_OPA_SURF2, G_RM_ZB_OPA_SURF, G_RM_ZB_OPA_SURF2, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2), + // Semitransparent Surface with indexed texture (Cutout) + DRAW_TABLE_GROUP(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA, DKR_OMH_1CYC_CI_BILERP, + G_RM_XLU_SURF, G_RM_XLU_SURF2, G_RM_AA_XLU_SURF, G_RM_AA_XLU_SURF2, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2, G_RM_AA_ZB_XLU_INTER, G_RM_AA_ZB_XLU_INTER2), + // Opqaue Surface with indexed texture and fog (Cutout) + DRAW_TABLE_GROUP(G_CC_MODULATEIDECALA, G_CC_PASS2, DKR_OMH_2CYC_CI_BILERP, + G_RM_FOG_SHADE_A, G_RM_OPA_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_OPA_SURF2, G_RM_FOG_SHADE_A, G_RM_ZB_OPA_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + // Semitransparent Surface with indexed texture and fog (Cutout) + DRAW_TABLE_GROUP(G_CC_MODULATEIDECALA, G_CC_PASS2, DKR_OMH_2CYC_CI_BILERP, + G_RM_FOG_SHADE_A, G_RM_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2, G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_INTER2), }; -Gfx D_800DECE8[][2] = { - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_XLU_SURF | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_AA_XLU_SURF | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_TEX_EDGE | G_RM_AA_ZB_TEX_EDGE2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | DKR_RM_UNKNOWN4_1 | DKR_RM_UNKNOWN4_2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_XLU_SURF | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_AA_XLU_SURF | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_TEX_EDGE | G_RM_AA_ZB_TEX_EDGE2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | DKR_RM_UNKNOWN4_1 | DKR_RM_UNKNOWN4_2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_TEX_EDGE2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | DKR_RM_UNKNOWN4_2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_TEX_EDGE2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | DKR_RM_UNKNOWN4_2), - }, +Gfx dRenderSettingsCutout[][2] = { + // Semitransparent Surface + DRAW_TABLE_GROUP(G_CC_MODULATEIDECALA, G_CC_MODULATEIA_PRIM, DKR_OMH_1CYC_BILERP, + G_RM_XLU_SURF, G_RM_XLU_SURF2, G_RM_AA_XLU_SURF, G_RM_AA_XLU_SURF2, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2, DKR_RM_UNKNOWN4_1, DKR_RM_UNKNOWN4_2), + // Semitransparent Surface (Copy) + DRAW_TABLE_GROUP(G_CC_MODULATEIDECALA, G_CC_MODULATEIA_PRIM, DKR_OMH_1CYC_BILERP, + G_RM_XLU_SURF, G_RM_XLU_SURF2, G_RM_AA_XLU_SURF, G_RM_AA_XLU_SURF2, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2, DKR_RM_UNKNOWN4_1, DKR_RM_UNKNOWN4_2), + // Semitransparent Surface with fog + DRAW_TABLE_GROUP(G_CC_MODULATEIDECALA, DKR_CC_UNK1, DKR_OMH_2CYC_BILERP, + G_RM_FOG_SHADE_A, G_RM_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2, G_RM_FOG_SHADE_A, DKR_RM_UNKNOWN4_2), + // Semitransparent Surface with fog (Copy) + DRAW_TABLE_GROUP(G_CC_MODULATEIDECALA, DKR_CC_UNK1, DKR_OMH_2CYC_BILERP, + G_RM_FOG_SHADE_A, G_RM_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2, G_RM_FOG_SHADE_A, DKR_RM_UNKNOWN4_2), }; -Gfx D_800DEDE8[][2] = { - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_ZB_OPA_DECAL | G_RM_ZB_OPA_DECAL2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_OPA_DECAL | G_RM_AA_ZB_OPA_DECAL2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_ZB_XLU_DECAL | G_RM_ZB_XLU_DECAL2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_XLU_DECAL | G_RM_AA_ZB_XLU_DECAL2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_ZB_OPA_DECAL2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_OPA_DECAL2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_ZB_XLU_DECAL2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, DKR_CC_UNK1), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_XLU_DECAL2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_ZB_OPA_DECAL | G_RM_ZB_OPA_DECAL2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_OPA_DECAL | G_RM_AA_ZB_OPA_DECAL2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_ZB_XLU_DECAL | G_RM_ZB_XLU_DECAL2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_XLU_DECAL | G_RM_AA_ZB_XLU_DECAL2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_ZB_OPA_DECAL2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_OPA_DECAL2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_ZB_XLU_DECAL2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_XLU_DECAL2), - }, +Gfx dRenderSettingsDecal[][2] = { + // Opaque Decal. + DRAW_TABLE_ENTRY(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA, DKR_OMH_1CYC_BILERP, G_RM_ZB_OPA_DECAL, G_RM_ZB_OPA_DECAL2), + DRAW_TABLE_ENTRY(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA, DKR_OMH_1CYC_BILERP, G_RM_AA_ZB_OPA_DECAL, G_RM_AA_ZB_OPA_DECAL2), + // Semitransparent Decal. + DRAW_TABLE_ENTRY(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA, DKR_OMH_1CYC_BILERP, G_RM_ZB_XLU_DECAL, G_RM_ZB_XLU_DECAL2), + DRAW_TABLE_ENTRY(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA, DKR_OMH_1CYC_BILERP, G_RM_AA_ZB_XLU_DECAL, G_RM_AA_ZB_XLU_DECAL2), + // Opaque Decal with fog. + DRAW_TABLE_ENTRY(G_CC_MODULATEIDECALA, DKR_CC_UNK1, DKR_OMH_2CYC_BILERP, G_RM_FOG_SHADE_A, G_RM_ZB_OPA_DECAL2), + DRAW_TABLE_ENTRY(G_CC_MODULATEIDECALA, DKR_CC_UNK1, DKR_OMH_2CYC_BILERP, G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_DECAL2), + // Semitransparent Decal with fog. + DRAW_TABLE_ENTRY(G_CC_MODULATEIDECALA, DKR_CC_UNK1, DKR_OMH_2CYC_BILERP, G_RM_FOG_SHADE_A, G_RM_ZB_XLU_DECAL2), + DRAW_TABLE_ENTRY(G_CC_MODULATEIDECALA, DKR_CC_UNK1, DKR_OMH_2CYC_BILERP, G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + // Opaque Decal with indexed texture. + DRAW_TABLE_ENTRY(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA, DKR_OMH_1CYC_CI_BILERP, G_RM_ZB_OPA_DECAL, G_RM_ZB_OPA_DECAL2), + DRAW_TABLE_ENTRY(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA, DKR_OMH_1CYC_CI_BILERP, G_RM_AA_ZB_OPA_DECAL, G_RM_AA_ZB_OPA_DECAL2), + // Semitransparent Decal with indexed texture. + DRAW_TABLE_ENTRY(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA, DKR_OMH_1CYC_CI_BILERP, G_RM_ZB_XLU_DECAL, G_RM_ZB_XLU_DECAL2), + DRAW_TABLE_ENTRY(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA, DKR_OMH_1CYC_CI_BILERP, G_RM_AA_ZB_XLU_DECAL, G_RM_AA_ZB_XLU_DECAL2), + // Opaque Decal with indexed texture and fog. + DRAW_TABLE_ENTRY(G_CC_MODULATEIDECALA, G_CC_PASS2, DKR_OMH_2CYC_CI_BILERP, G_RM_FOG_SHADE_A, G_RM_ZB_OPA_DECAL2), + DRAW_TABLE_ENTRY(G_CC_MODULATEIDECALA, G_CC_PASS2, DKR_OMH_2CYC_CI_BILERP, G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_DECAL2), + // Semitransparent Decal with indexed texture and fog. + DRAW_TABLE_ENTRY(G_CC_MODULATEIDECALA, G_CC_PASS2, DKR_OMH_2CYC_CI_BILERP, G_RM_FOG_SHADE_A, G_RM_ZB_XLU_DECAL2), + DRAW_TABLE_ENTRY(G_CC_MODULATEIDECALA, G_CC_PASS2, DKR_OMH_2CYC_CI_BILERP, G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2) }; -Gfx D_800DEEE8[][2] = { - { - gsDPSetCombineMode(DKR_CC_UNK3, G_CC_MODULATEIA_PRIM2), - gsDPSetOtherMode(DKR_OMH_2CYC_POINT, DKR_OML_COMMON | G_RM_NOOP | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK3, G_CC_MODULATEIA_PRIM2), - gsDPSetOtherMode(DKR_OMH_2CYC_POINT, DKR_OML_COMMON | G_RM_NOOP | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK3, G_CC_MODULATEIA_PRIM2), - gsDPSetOtherMode(DKR_OMH_2CYC_POINT, DKR_OML_COMMON | G_RM_NOOP | G_RM_ZB_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK3, G_CC_MODULATEIA_PRIM2), - gsDPSetOtherMode(DKR_OMH_2CYC_POINT, DKR_OML_COMMON | G_RM_NOOP | G_RM_AA_ZB_XLU_SURF2), - }, +Gfx dRenderSettingsSolidColourVtxAlpha[][2] = { + DRAW_TABLE_GROUP(DKR_CC_UNK3, G_CC_MODULATEIA_PRIM2, DKR_OMH_2CYC_POINT, + G_RM_NOOP, G_RM_XLU_SURF2, G_RM_NOOP, G_RM_AA_XLU_SURF2, G_RM_NOOP, G_RM_ZB_XLU_SURF2, G_RM_NOOP, G_RM_AA_ZB_XLU_SURF2), }; -Gfx D_800DEF28[][2] = { - { - gsDPSetCombineMode(DKR_CC_UNK4, DKR_CC_UNK4), - gsDPSetOtherMode(DKR_OMH_1CYC_POINT, DKR_OML_COMMON | G_RM_OPA_SURF | G_RM_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK4, DKR_CC_UNK4), - gsDPSetOtherMode(DKR_OMH_1CYC_POINT, DKR_OML_COMMON | G_RM_AA_OPA_SURF | G_RM_AA_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK4, DKR_CC_UNK4), - gsDPSetOtherMode(DKR_OMH_1CYC_POINT, DKR_OML_COMMON | G_RM_ZB_OPA_SURF | G_RM_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK4, DKR_CC_UNK4), - gsDPSetOtherMode(DKR_OMH_1CYC_POINT, DKR_OML_COMMON | G_RM_AA_ZB_OPA_INTER | G_RM_AA_ZB_OPA_INTER2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK4, DKR_CC_UNK4), - gsDPSetOtherMode(DKR_OMH_1CYC_POINT, DKR_OML_COMMON | G_RM_XLU_SURF | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK4, DKR_CC_UNK4), - gsDPSetOtherMode(DKR_OMH_1CYC_POINT, DKR_OML_COMMON | G_RM_AA_XLU_SURF | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK4, DKR_CC_UNK4), - gsDPSetOtherMode(DKR_OMH_1CYC_POINT, DKR_OML_COMMON | G_RM_ZB_XLU_SURF | G_RM_ZB_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK4, DKR_CC_UNK4), - gsDPSetOtherMode(DKR_OMH_1CYC_POINT, DKR_OML_COMMON | G_RM_AA_ZB_XLU_SURF | G_RM_AA_ZB_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK4, G_CC_MODULATEIA_PRIM2), - gsDPSetOtherMode(DKR_OMH_2CYC_POINT, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK4, G_CC_MODULATEIA_PRIM2), - gsDPSetOtherMode(DKR_OMH_2CYC_POINT, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK4, G_CC_MODULATEIA_PRIM2), - gsDPSetOtherMode(DKR_OMH_2CYC_POINT, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK4, G_CC_MODULATEIA_PRIM2), - gsDPSetOtherMode(DKR_OMH_2CYC_POINT, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK4, G_CC_MODULATEIA_PRIM2), - gsDPSetOtherMode(DKR_OMH_2CYC_POINT, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK4, G_CC_MODULATEIA_PRIM2), - gsDPSetOtherMode(DKR_OMH_2CYC_POINT, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK4, G_CC_MODULATEIA_PRIM2), - gsDPSetOtherMode(DKR_OMH_2CYC_POINT, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_ZB_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK4, G_CC_MODULATEIA_PRIM2), - gsDPSetOtherMode(DKR_OMH_2CYC_POINT, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_XLU_SURF2), - }, +Gfx dRenderSettingsSolidColour[][2] = { + // Opaque Surface + DRAW_TABLE_GROUP(DKR_CC_UNK4, DKR_CC_UNK4, DKR_OMH_1CYC_POINT, + G_RM_OPA_SURF, G_RM_OPA_SURF2, G_RM_AA_OPA_SURF, G_RM_AA_OPA_SURF2, G_RM_ZB_OPA_SURF, G_RM_ZB_OPA_SURF2, G_RM_AA_ZB_OPA_INTER, G_RM_AA_ZB_OPA_INTER2), + // Semitransparent Surface + DRAW_TABLE_GROUP(DKR_CC_UNK4, DKR_CC_UNK4, DKR_OMH_1CYC_POINT, + G_RM_XLU_SURF, G_RM_XLU_SURF2, G_RM_AA_XLU_SURF, G_RM_AA_XLU_SURF2, G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2, G_RM_AA_ZB_XLU_SURF, G_RM_AA_ZB_XLU_SURF2), + // Opaque Surface with fog + DRAW_TABLE_GROUP(DKR_CC_UNK4, G_CC_MODULATEIA_PRIM2, DKR_OMH_2CYC_POINT, + G_RM_FOG_SHADE_A, G_RM_OPA_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_OPA_SURF2, G_RM_FOG_SHADE_A, G_RM_ZB_OPA_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + // Semitransparent Surface + DRAW_TABLE_GROUP(DKR_CC_UNK4, G_CC_MODULATEIA_PRIM2, DKR_OMH_2CYC_POINT, + G_RM_FOG_SHADE_A, G_RM_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), }; +// Some kind of texture on top of a solid colour Gfx D_800DF028[][2] = { - { - gsDPSetCombineMode(DKR_CC_DECALFADEPRIM, DKR_CC_DECALFADEPRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_ZB_OPA_DECAL | G_RM_ZB_OPA_DECAL2), - }, - { - gsDPSetCombineMode(DKR_CC_DECALFADEPRIM, DKR_CC_DECALFADEPRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_OPA_DECAL | G_RM_AA_ZB_OPA_DECAL2), - }, - { - gsDPSetCombineMode(DKR_CC_DECALFADEPRIM, DKR_CC_DECALFADEPRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_ZB_XLU_DECAL | G_RM_ZB_XLU_DECAL2), - }, - { - gsDPSetCombineMode(DKR_CC_DECALFADEPRIM, DKR_CC_DECALFADEPRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_XLU_DECAL | G_RM_AA_ZB_XLU_DECAL2), - }, - { - gsDPSetCombineMode(DKR_CC_DECALFADEPRIM, DKR_CC_DECALFADEPRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_ZB_OPA_DECAL | G_RM_ZB_OPA_DECAL2), - }, - { - gsDPSetCombineMode(DKR_CC_DECALFADEPRIM, DKR_CC_DECALFADEPRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_OPA_DECAL | G_RM_AA_ZB_OPA_DECAL2), - }, - { - gsDPSetCombineMode(DKR_CC_DECALFADEPRIM, DKR_CC_DECALFADEPRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_ZB_XLU_DECAL | G_RM_ZB_XLU_DECAL2), - }, - { - gsDPSetCombineMode(DKR_CC_DECALFADEPRIM, DKR_CC_DECALFADEPRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_CI_BILERP, DKR_OML_COMMON | G_RM_AA_ZB_XLU_DECAL | G_RM_AA_ZB_XLU_DECAL2), - }, + // Opaque Surface + DRAW_TABLE_ENTRY(DKR_CC_DECALFADEPRIM, DKR_CC_DECALFADEPRIM, DKR_OMH_1CYC_BILERP, G_RM_ZB_OPA_DECAL, G_RM_ZB_OPA_DECAL2), + DRAW_TABLE_ENTRY(DKR_CC_DECALFADEPRIM, DKR_CC_DECALFADEPRIM, DKR_OMH_1CYC_BILERP, G_RM_AA_ZB_OPA_DECAL, G_RM_AA_ZB_OPA_DECAL2), + // Semitransparent Surface + DRAW_TABLE_ENTRY(DKR_CC_DECALFADEPRIM, DKR_CC_DECALFADEPRIM, DKR_OMH_1CYC_BILERP, G_RM_ZB_XLU_DECAL, G_RM_ZB_XLU_DECAL2), + DRAW_TABLE_ENTRY(DKR_CC_DECALFADEPRIM, DKR_CC_DECALFADEPRIM, DKR_OMH_1CYC_BILERP, G_RM_AA_ZB_XLU_DECAL, G_RM_AA_ZB_XLU_DECAL2), + // Opaque Surface with indexed texture + DRAW_TABLE_ENTRY(DKR_CC_DECALFADEPRIM, DKR_CC_DECALFADEPRIM, DKR_OMH_1CYC_CI_BILERP, G_RM_ZB_OPA_DECAL, G_RM_ZB_OPA_DECAL2), + DRAW_TABLE_ENTRY(DKR_CC_DECALFADEPRIM, DKR_CC_DECALFADEPRIM, DKR_OMH_1CYC_CI_BILERP, G_RM_AA_ZB_OPA_DECAL, G_RM_AA_ZB_OPA_DECAL2), + // Semitransparent Surface with indexed texture + DRAW_TABLE_ENTRY(DKR_CC_DECALFADEPRIM, DKR_CC_DECALFADEPRIM, DKR_OMH_1CYC_CI_BILERP, G_RM_ZB_XLU_DECAL, G_RM_ZB_XLU_DECAL2), + DRAW_TABLE_ENTRY(DKR_CC_DECALFADEPRIM, DKR_CC_DECALFADEPRIM, DKR_OMH_1CYC_CI_BILERP, G_RM_AA_ZB_XLU_DECAL, G_RM_AA_ZB_XLU_DECAL2) }; +// Not sure what it is specifically, but some onscreen actors like TT and Taj use it. Gfx D_800DF0A8[][2] = { - { - gsDPSetCombineMode(DKR_CC_UNK5, DKR_CC_UNK6), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK5, DKR_CC_UNK6), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_AA_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK5, DKR_CC_UNK6), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK5, DKR_CC_UNK6), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_AA_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK5, DKR_CC_UNK6), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK5, DKR_CC_UNK6), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK5, DKR_CC_UNK6), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_ZB_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK5, DKR_CC_UNK6), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_AA_ZB_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK5, DKR_CC_UNK6), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK5, DKR_CC_UNK6), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_AA_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK5, DKR_CC_UNK6), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK5, DKR_CC_UNK6), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_AA_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK5, DKR_CC_UNK6), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK5, DKR_CC_UNK6), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK5, DKR_CC_UNK6), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_AA_ZB_TEX_EDGE2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK5, DKR_CC_UNK6), - gsDPSetOtherMode(DKR_OMH_2CYC_CI_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_AA_ZB_XLU_INTER2), - }, + // Opaque Surface + DRAW_TABLE_GROUP(DKR_CC_UNK5, DKR_CC_UNK6, DKR_OMH_2CYC_BILERP, + G_RM_NOOP, G_RM_OPA_SURF2, G_RM_NOOP, G_RM_AA_OPA_SURF2, G_RM_NOOP, G_RM_ZB_OPA_SURF2, G_RM_NOOP, G_RM_AA_ZB_OPA_SURF2), + // Semitransparent Surface + DRAW_TABLE_GROUP(DKR_CC_UNK5, DKR_CC_UNK6, DKR_OMH_2CYC_BILERP, + G_RM_NOOP, G_RM_XLU_SURF2, G_RM_NOOP, G_RM_AA_XLU_SURF2, G_RM_NOOP, G_RM_ZB_XLU_SURF2, G_RM_NOOP, G_RM_AA_ZB_XLU_SURF2), + // Opaque Surface with indexed texture + DRAW_TABLE_GROUP(DKR_CC_UNK5, DKR_CC_UNK6, DKR_OMH_2CYC_CI_BILERP, + G_RM_NOOP, G_RM_OPA_SURF2, G_RM_NOOP, G_RM_AA_OPA_SURF2, G_RM_NOOP, G_RM_ZB_OPA_SURF2, G_RM_NOOP, G_RM_AA_ZB_OPA_SURF2), + // Semitransparent Surface with indexed texture + DRAW_TABLE_GROUP(DKR_CC_UNK5, DKR_CC_UNK6, DKR_OMH_2CYC_CI_BILERP, + G_RM_NOOP, G_RM_XLU_SURF2, G_RM_NOOP, G_RM_AA_XLU_SURF2, G_RM_NOOP, G_RM_AA_ZB_TEX_EDGE2, G_RM_NOOP, G_RM_AA_ZB_XLU_INTER2), }; -Gfx D_800DF1A8[][2] = { - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_AA_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_AA_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_ZB_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_AA_ZB_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_OPA_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_ZB_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_AA_ZB_TEX_EDGE2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | DKR_RM_UNKNOWN4_2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | G_RM_AA_ZB_TEX_EDGE2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_NOOP | DKR_RM_UNKNOWN4_2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_TEX_EDGE2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | DKR_RM_UNKNOWN4_2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | G_RM_AA_ZB_TEX_EDGE2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK7, DKR_CC_UNK8), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_FOG_SHADE_A | DKR_RM_UNKNOWN4_2), - }, +Gfx dRenderSettingsBlinkingLights[][2] = { + // Opaque Surface + DRAW_TABLE_GROUP(DKR_CC_UNK7, DKR_CC_UNK8, DKR_OMH_2CYC_BILERP, + G_RM_NOOP, G_RM_OPA_SURF2, G_RM_NOOP, G_RM_AA_OPA_SURF2, G_RM_NOOP, G_RM_ZB_OPA_SURF2, G_RM_NOOP, G_RM_AA_ZB_OPA_SURF2), + // Semitransparent Surface + DRAW_TABLE_GROUP(DKR_CC_UNK7, DKR_CC_UNK8, DKR_OMH_2CYC_BILERP, + G_RM_NOOP, G_RM_XLU_SURF2, G_RM_NOOP, G_RM_AA_XLU_SURF2, G_RM_NOOP, G_RM_ZB_XLU_SURF2, G_RM_NOOP, G_RM_AA_ZB_XLU_SURF2), + // Opaque Surface with fog + DRAW_TABLE_GROUP(DKR_CC_UNK7, DKR_CC_UNK8, DKR_OMH_2CYC_BILERP, + G_RM_FOG_SHADE_A, G_RM_OPA_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_OPA_SURF2, G_RM_FOG_SHADE_A, G_RM_ZB_OPA_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + // Semitransparent Surface with fog + DRAW_TABLE_GROUP(DKR_CC_UNK7, DKR_CC_UNK8, DKR_OMH_2CYC_BILERP, + G_RM_FOG_SHADE_A, G_RM_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + // Cutout Surface + DRAW_TABLE_GROUP(DKR_CC_UNK7, DKR_CC_UNK8, DKR_OMH_2CYC_BILERP, + G_RM_NOOP, G_RM_XLU_SURF2, G_RM_NOOP, G_RM_AA_XLU_SURF2, G_RM_NOOP, G_RM_AA_ZB_TEX_EDGE2, G_RM_NOOP, DKR_RM_UNKNOWN4_2), + // Cutout Surface (Copy) + DRAW_TABLE_GROUP(DKR_CC_UNK7, DKR_CC_UNK8, DKR_OMH_2CYC_BILERP, + G_RM_NOOP, G_RM_XLU_SURF2, G_RM_NOOP, G_RM_AA_XLU_SURF2, G_RM_NOOP, G_RM_AA_ZB_TEX_EDGE2, G_RM_NOOP, DKR_RM_UNKNOWN4_2), + // Cutout Surface with fog + DRAW_TABLE_GROUP(DKR_CC_UNK7, DKR_CC_UNK8, DKR_OMH_2CYC_BILERP, + G_RM_FOG_SHADE_A, G_RM_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2, G_RM_FOG_SHADE_A, DKR_RM_UNKNOWN4_2), + // Cutout Surface with fog (Copy) + DRAW_TABLE_GROUP(DKR_CC_UNK7, DKR_CC_UNK8, DKR_OMH_2CYC_BILERP, + G_RM_FOG_SHADE_A, G_RM_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_XLU_SURF2, G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2, G_RM_FOG_SHADE_A, DKR_RM_UNKNOWN4_2), }; Gfx D_800DF3A8[] = { @@ -833,18 +240,9 @@ Gfx D_800DF3D8[] = { }; Gfx D_800DF410[][2] = { - { - gsDPSetCombineMode(DKR_CC_UNK9, DKR_CC_UNK9), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP_NOPERSP, DKR_OML_COMMON | G_RM_ZB_CLD_SURF | G_RM_ZB_CLD_SURF2), - }, - { - gsDPSetCombineMode(G_CC_BLENDPE, G_CC_BLENDPE), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_ZB_CLD_SURF | G_RM_ZB_CLD_SURF2), - }, - { - gsDPSetCombineMode(DKR_CC_UNK9, G_CC_PASS2), - gsDPSetOtherMode(DKR_OMH_2CYC_BILERP, DKR_OML_COMMON | G_RM_ZB_CLD_SURF | G_RM_ZB_CLD_SURF2), - }, + DRAW_TABLE_ENTRY(DKR_CC_UNK9, DKR_CC_UNK9, DKR_OMH_1CYC_BILERP_NOPERSP, G_RM_ZB_CLD_SURF, G_RM_ZB_CLD_SURF2), + DRAW_TABLE_ENTRY(G_CC_BLENDPE, G_CC_BLENDPE, DKR_OMH_1CYC_BILERP, G_RM_ZB_CLD_SURF, G_RM_ZB_CLD_SURF2), + DRAW_TABLE_ENTRY(DKR_CC_UNK9, G_CC_PASS2, DKR_OMH_2CYC_BILERP, G_RM_ZB_CLD_SURF, G_RM_ZB_CLD_SURF2) }; /*******************************/ @@ -890,9 +288,9 @@ s32 D_80126368; TempTexHeader *gTempTextureHeader; u8 *D_80126370; s32 gCurrentRenderFlags; -s32 D_80126378; // Set in Game UI -TextureHeader *D_8012637C; -s16 D_80126380; +s32 gBlockedRenderFlags; +TextureHeader *gCurrentTextureHeader; +s16 gUsingTexture; s16 gForceFlags; s16 D_80126384; @@ -930,16 +328,18 @@ void tex_init_textures(void) { /** * Official Name: texDisableModes + * Add flags to the block list so they are removed when drawn. */ void tex_disable_modes(s32 flags) { - D_80126378 |= flags; + gBlockedRenderFlags |= flags; } /** * Official Name: texEnableModes + * Remove flags to the block list so they are no longer removed when drawn. */ void tex_enable_modes(s32 flags) { - D_80126378 &= ~flags; + gBlockedRenderFlags &= ~flags; } /** @@ -1133,11 +533,11 @@ GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007B380.s") * Official Name: texDPInit */ void reset_render_settings(Gfx **dlist) { - D_8012637C = NULL; + gCurrentTextureHeader = NULL; gCurrentRenderFlags = RENDER_NONE; - D_80126380 = 0; + gUsingTexture = FALSE; gForceFlags = TRUE; - D_80126378 = RENDER_NONE; + gBlockedRenderFlags = RENDER_NONE; D_80126384 = FALSE; gDPPipeSync((*dlist)++); gSPSetGeometryMode((*dlist)++, G_SHADING_SMOOTH | G_SHADE | G_ZBUFFER); @@ -1203,38 +603,39 @@ void load_and_set_texture(Gfx **dlist, TextureHeader *texhead, s32 flags, s32 te } flags |= texhead->flags; - if (texhead != D_8012637C) { + if (texhead != gCurrentTextureHeader) { gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(texhead->cmd), texhead->numberOfCommands); - D_8012637C = texhead; + gCurrentTextureHeader = texhead; doPipeSync = FALSE; } - if (D_80126380 == 0) { + if (gUsingTexture == FALSE) { forceFlags = TRUE; - D_80126380 = 1; + gUsingTexture = TRUE; } - } else if (D_80126380 != 0) { + } else if (gUsingTexture) { forceFlags = TRUE; - D_80126380 = 0; + gUsingTexture = FALSE; } - flags = (D_80126384) ? (flags & (RENDER_DECAL | RENDER_COLOUR_INDEX | RENDER_ANTI_ALIASING | RENDER_Z_COMPARE | RENDER_SEMI_TRANSPARENT)) : (flags & (RENDER_UNK_8000000 | RENDER_DECAL | RENDER_Z_UPDATE | RENDER_COLOUR_INDEX | RENDER_UNK_0000010 | RENDER_FOG_ACTIVE | RENDER_SEMI_TRANSPARENT | RENDER_Z_COMPARE | RENDER_ANTI_ALIASING)); - flags &= ~D_80126378; - flags = (flags & RENDER_UNK_8000000) ? flags & ~RENDER_FOG_ACTIVE : flags & ~RENDER_Z_UPDATE; + flags = (D_80126384) ? (flags & (RENDER_DECAL | RENDER_COLOUR_INDEX | RENDER_ANTI_ALIASING | RENDER_Z_COMPARE | RENDER_SEMI_TRANSPARENT)) : + (flags & (RENDER_VTX_ALPHA | RENDER_DECAL | RENDER_Z_UPDATE | RENDER_COLOUR_INDEX | RENDER_CUTOUT | RENDER_FOG_ACTIVE | RENDER_SEMI_TRANSPARENT | RENDER_Z_COMPARE | RENDER_ANTI_ALIASING)); + flags &= ~gBlockedRenderFlags; + flags = (flags & RENDER_VTX_ALPHA) ? flags & ~RENDER_FOG_ACTIVE : flags & ~RENDER_Z_UPDATE; - if ((flags != gCurrentRenderFlags) || (forceFlags)) { + if (flags != gCurrentRenderFlags || forceFlags) { if (doPipeSync) { gDPPipeSync((*dlist)++); } - if (((flags & RENDER_UNK_8000000) != (gCurrentRenderFlags & RENDER_UNK_8000000)) || ((gForceFlags))) { - if ((flags & RENDER_UNK_8000000) || (D_80126384)) { + if (((flags & RENDER_VTX_ALPHA) != (gCurrentRenderFlags & RENDER_VTX_ALPHA)) || gForceFlags) { + if (flags & RENDER_VTX_ALPHA || D_80126384) { gSPClearGeometryMode((*dlist)++, G_FOG); } else { gSPSetGeometryMode((*dlist)++, G_FOG); } } - if (((flags & RENDER_Z_COMPARE) != (gCurrentRenderFlags & RENDER_Z_COMPARE)) || (gForceFlags)) { + if (((flags & RENDER_Z_COMPARE) != (gCurrentRenderFlags & RENDER_Z_COMPARE)) || gForceFlags) { if (flags & RENDER_Z_COMPARE) { gSPSetGeometryMode((*dlist)++, G_ZBUFFER); } else { @@ -1244,17 +645,17 @@ void load_and_set_texture(Gfx **dlist, TextureHeader *texhead, s32 flags, s32 te gForceFlags = FALSE; gCurrentRenderFlags = flags; - if (!D_80126380) { - if (flags & RENDER_UNK_8000000) { - gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(D_800DEEE8[flags & (RENDER_ANTI_ALIASING | RENDER_Z_COMPARE)]), numberOfGfxCommands(D_800DEEE8[0])); + if (!gUsingTexture) { + if (flags & RENDER_VTX_ALPHA) { + gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(dRenderSettingsSolidColourVtxAlpha[flags & (RENDER_ANTI_ALIASING | RENDER_Z_COMPARE)]), numberOfGfxCommands(dRenderSettingsSolidColourVtxAlpha[0])); return; } - gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(D_800DEF28[flags & (RENDER_FOG_ACTIVE | RENDER_SEMI_TRANSPARENT | RENDER_Z_COMPARE | RENDER_ANTI_ALIASING)]), numberOfGfxCommands(D_800DEF28[0])); + gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(dRenderSettingsSolidColour[flags & (RENDER_FOG_ACTIVE | RENDER_SEMI_TRANSPARENT | RENDER_Z_COMPARE | RENDER_ANTI_ALIASING)]), numberOfGfxCommands(dRenderSettingsSolidColour[0])); return; } if (D_80126384) { - if ((flags & RENDER_DECAL) && (flags & RENDER_Z_COMPARE)) { + if (flags & RENDER_DECAL && flags & RENDER_Z_COMPARE) { dlIndex = 0; if (flags & RENDER_ANTI_ALIASING) { dlIndex |= 1; // Anti Aliasing @@ -1275,7 +676,7 @@ void load_and_set_texture(Gfx **dlist, TextureHeader *texhead, s32 flags, s32 te return; } - if ((flags & RENDER_DECAL) && (flags & RENDER_Z_COMPARE)) { + if (flags & RENDER_DECAL && flags & RENDER_Z_COMPARE) { dlIndex = 0; if (flags & RENDER_ANTI_ALIASING) { dlIndex |= 1; // Anti Aliasing @@ -1289,21 +690,21 @@ void load_and_set_texture(Gfx **dlist, TextureHeader *texhead, s32 flags, s32 te if (flags & RENDER_COLOUR_INDEX) { dlIndex |= 8; // Colour Index } - gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(D_800DEDE8[dlIndex]), numberOfGfxCommands(D_800DEDE8[0])); + gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(dRenderSettingsDecal[dlIndex]), numberOfGfxCommands(dRenderSettingsDecal[0])); return; } - if (flags & RENDER_UNK_0000010) { + if (flags & RENDER_CUTOUT) { dlIndex = flags & (RENDER_ANTI_ALIASING | RENDER_Z_COMPARE | RENDER_SEMI_TRANSPARENT); if (flags & RENDER_FOG_ACTIVE) { dlIndex |= 8; // Fog } - gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(D_800DECE8[dlIndex]), numberOfGfxCommands(D_800DECE8[0])); + gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(dRenderSettingsCutout[dlIndex]), numberOfGfxCommands(dRenderSettingsCutout[0])); return; } flags &= ~RENDER_DECAL; - if (flags & RENDER_UNK_8000000) { + if (flags & RENDER_VTX_ALPHA) { dlIndex = flags & (RENDER_ANTI_ALIASING | RENDER_Z_COMPARE); if (flags & RENDER_Z_UPDATE) { dlIndex |= 4; // Z write @@ -1311,11 +712,11 @@ void load_and_set_texture(Gfx **dlist, TextureHeader *texhead, s32 flags, s32 te gSPSetGeometryMode((*dlist)++, G_ZBUFFER); gCurrentRenderFlags |= RENDER_Z_COMPARE; } - gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(D_800DE7C8[dlIndex]), numberOfGfxCommands(D_800DE7C8[0])); + gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(dRenderSettingsVtxAlpha[dlIndex]), numberOfGfxCommands(dRenderSettingsVtxAlpha[0])); return; } - gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(D_800DE8E8[flags]), numberOfGfxCommands(D_800DE8E8[0])); + gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(dRenderSettingsCommon[flags]), numberOfGfxCommands(dRenderSettingsCommon[0])); return; } } @@ -1344,18 +745,18 @@ void load_blinking_lights_texture(Gfx **dlist, TextureHeader *texture_list, u32 } gDPPipeSync((*dlist)++); - D_8012637C = 0; - flags &= 0x1F; + gCurrentTextureHeader = 0; + flags &= (RENDER_ANTI_ALIASING | RENDER_Z_COMPARE | RENDER_SEMI_TRANSPARENT | RENDER_FOG_ACTIVE | RENDER_CUTOUT); gSPSetGeometryMode((*dlist)++, G_FOG); - if (flags & G_TEXTURE_ENABLE) { + if (flags & RENDER_Z_COMPARE) { gSPSetGeometryMode((*dlist)++, G_ZBUFFER); } else { gSPClearGeometryMode((*dlist)++, G_ZBUFFER); } gForceFlags = TRUE; gCurrentRenderFlags = RENDER_NONE; - gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(D_800DF1A8[flags]), numberOfGfxCommands(D_800DF1A8[0])); + gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(dRenderSettingsBlinkingLights[flags]), numberOfGfxCommands(dRenderSettingsBlinkingLights[0])); } @@ -1376,7 +777,7 @@ void func_8007BF34(Gfx **dlist, s32 arg1) { if (((gCurrentRenderFlags * 16) < 0) || (gForceFlags != 0)) { gSPSetGeometryMode((*dlist)++, G_FOG); } - temp_a1 = arg1 & 0xF7FFFFFF & ~D_80126378; + temp_a1 = arg1 & 0xF7FFFFFF & ~gBlockedRenderFlags; temp_v0_3 = temp_a1 & 2; if (((gCurrentRenderFlags & 2) != temp_v0_3) || (gForceFlags != 0)) { if (temp_v0_3 != 0) { @@ -1390,15 +791,15 @@ void func_8007BF34(Gfx **dlist, s32 arg1) { temp_t8 = temp_a1 & ~0x800; if (D_800DE7C4 == 0) { if ((gCurrentRenderFlags & 0x200) != 0) { - gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(D_800DE848[((temp_t8 >> 1) & 1) * 16]), numberOfGfxCommands(D_800DE848[0])); + gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(dRenderSettingsSpriteCld[((temp_t8 >> 1) & 1) * 16]), numberOfGfxCommands(dRenderSettingsSpriteCld[0])); } else { - gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(D_800DE868[(temp_t8 - 16) * 16]), numberOfGfxCommands(D_800DE868[0])); + gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(dRenderSettingsSpriteXlu[(temp_t8 - 16) * 16]), numberOfGfxCommands(dRenderSettingsSpriteXlu[0])); } } else { - gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(D_800DE8E8[temp_t8 * 16]), numberOfGfxCommands(D_800DE8E8[0])); + gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(dRenderSettingsCommon[temp_t8 * 16]), numberOfGfxCommands(dRenderSettingsCommon[0])); } - D_8012637C = NULL; - D_80126380 = 1; + gCurrentTextureHeader = NULL; + gUsingTexture = 1; } } #else diff --git a/src/textures_sprites.h b/src/textures_sprites.h index 394b7db5..e3596a1a 100644 --- a/src/textures_sprites.h +++ b/src/textures_sprites.h @@ -9,91 +9,87 @@ #include "memory.h" #include "libultra_internal.h" +/** + * First two entries are combine mode. + * Third entry is othermode high word. (Most importantly, the cycle mode and texture filter settings) + * Fourth and fifth entries are render modes. +*/ +#define DRAW_TABLE_ENTRY(combine1, combine2, cycleMode, renderMode1, renderMode2) { \ + gsDPSetCombineLERP(combine1, combine2), \ + gsDPSetOtherMode(cycleMode, DKR_OML_COMMON | renderMode1 | renderMode2), \ +} + +/** + * Diddy Kong Racing sets up many of the rendermode tables with a certain pattern. + * First two entries are combine mode. + * Third entry is othermode high word. (Most importantly, the cycle mode and texture filter settings) + * Fourth and fifth entries are render modes for no AA or ZB + * Sixth and seventh entries are render modes for for AA, but no ZB + * Eighth and ninth entries are render modes for for ZB, but no AA + * Tenth and eleventh entries are render modes for for AA and ZB +*/ +#define DRAW_TABLE_GROUP(combine1, combine2, cycleMode, renderMode1, renderMode2, renderMode1AA, rendermode2AA, renderMode1ZB, rendermode2ZB, renderMode1ZBAA, renderMode2ZBAA) \ +{gsDPSetCombineLERP(combine1, combine2), gsDPSetOtherMode(cycleMode, DKR_OML_COMMON | renderMode1 | renderMode2), }, \ +{gsDPSetCombineLERP(combine1, combine2), gsDPSetOtherMode(cycleMode, DKR_OML_COMMON | renderMode1AA | rendermode2AA), }, \ +{gsDPSetCombineLERP(combine1, combine2), gsDPSetOtherMode(cycleMode, DKR_OML_COMMON | renderMode1ZB | rendermode2ZB), }, \ +{gsDPSetCombineLERP(combine1, combine2), gsDPSetOtherMode(cycleMode, DKR_OML_COMMON | renderMode1ZBAA | renderMode2ZBAA), } + enum RenderFlags { RENDER_NONE, - RENDER_ANTI_ALIASING = (1 << 0), - RENDER_Z_COMPARE = (1 << 1), - RENDER_SEMI_TRANSPARENT = (1 << 2), - RENDER_FOG_ACTIVE = (1 << 3), - RENDER_UNK_0000010 = (1 << 4), - RENDER_COLOUR_INDEX = (1 << 5), - RENDER_UNK_0000040 = (1 << 6), - RENDER_UNK_0000080 = (1 << 7), - RENDER_Z_UPDATE = (1 << 8), - RENDER_UNK_0000200 = (1 << 9), - RENDER_UNK_0000400 = (1 << 10), - RENDER_DECAL = (1 << 11), - RENDER_UNK_0001000 = (1 << 12), - RENDER_UNK_0002000 = (1 << 13), - RENDER_UNK_0004000 = (1 << 14), - RENDER_UNK_0008000 = (1 << 15), - RENDER_UNK_0010000 = (1 << 16), - RENDER_UNK_0020000 = (1 << 17), - RENDER_UNK_0040000 = (1 << 18), - RENDER_UNK_0080000 = (1 << 19), - RENDER_UNK_0100000 = (1 << 20), - RENDER_UNK_0200000 = (1 << 21), - RENDER_UNK_0400000 = (1 << 22), - RENDER_UNK_0800000 = (1 << 23), - RENDER_UNK_1000000 = (1 << 24), - RENDER_UNK_2000000 = (1 << 25), - RENDER_UNK_4000000 = (1 << 26), - RENDER_UNK_8000000 = (1 << 27), + RENDER_VEHICLE_PART = (1 << 0), // Shares a spot with RENDER_ANTI_ALIASING, since TEX_EDGE enforces anti aliasing unconditionally. + RENDER_ANTI_ALIASING = (1 << 0), // Smooths the edges to improve visual quality. + RENDER_Z_COMPARE = (1 << 1), // Compares depth values with existing geometry to prevent rendering errors. + RENDER_SEMI_TRANSPARENT = (1 << 2), // Renders with translucency enabled, blending with existing geometry. + RENDER_FOG_ACTIVE = (1 << 3), // Applies fog to the geometry. + RENDER_CUTOUT = (1 << 4), // A surface with 1 bit alpha cut out for quick transparency. + RENDER_COLOUR_INDEX = (1 << 5), // Enables palleted textures. + RENDER_UNK_0000040 = (1 << 6), + RENDER_UNK_0000080 = (1 << 7), + RENDER_Z_UPDATE = (1 << 8), // Updates the depth buffer when rendering. + RENDER_PRESERVE_COVERAGE = (1 << 9), // Coverage is used to help smooth the image. This won't write over existing coverage values. + RENDER_UNK_0000400 = (1 << 10), + RENDER_DECAL = (1 << 11), // Projects a surface on existing geometry, taking precedent to not zfight. + RENDER_UNK_0001000 = (1 << 12), + RENDER_UNK_0002000 = (1 << 13), + RENDER_UNK_0004000 = (1 << 14), + RENDER_UNK_0008000 = (1 << 15), + RENDER_UNK_0010000 = (1 << 16), + RENDER_UNK_0020000 = (1 << 17), + RENDER_UNK_0040000 = (1 << 18), + RENDER_UNK_0080000 = (1 << 19), + RENDER_UNK_0100000 = (1 << 20), + RENDER_UNK_0200000 = (1 << 21), + RENDER_UNK_0400000 = (1 << 22), + RENDER_UNK_0800000 = (1 << 23), + RENDER_UNK_1000000 = (1 << 24), + RENDER_UNK_2000000 = (1 << 25), + RENDER_UNK_4000000 = (1 << 26), + RENDER_VTX_ALPHA = (1 << 27), // Allows use of vertex alpha, disabling fog if necessary. }; typedef enum TransFlags { - OBJ_FLAGS_UNK_0000, - OBJ_FLAGS_UNK_0001 = (1 << 0), - OBJ_FLAGS_UNK_0002 = (1 << 1), - OBJ_FLAGS_UNK_0004 = (1 << 2), - OBJ_FLAGS_UNK_0008 = (1 << 3), - OBJ_FLAGS_UNK_0010 = (1 << 4), - OBJ_FLAGS_UNK_0020 = (1 << 5), - OBJ_FLAGS_UNK_0040 = (1 << 6), - OBJ_FLAGS_UNK_0080 = (1 << 7), - OBJ_FLAGS_UNK_0100 = (1 << 8), - OBJ_FLAGS_INVIS_PLAYER1 = (1 << 9), // Player 1 cannot see this. - OBJ_FLAGS_INVIS_PLAYER2 = (1 << 10), // Player 2 cannot see this. - OBJ_FLAGS_UNK_0800 = (1 << 11), - OBJ_FLAGS_SHADOW_ONLY = (1 << 12), // Still has a shadow, but the model is invisible. - OBJ_FLAGS_UNK_2000 = (1 << 13), - OBJ_FLAGS_INVISIBLE = (1 << 14), // Invisible, and hidden shadow too. - OBJ_FLAGS_DEACTIVATED = (1 << 15), // Object is invisible and inactive. + OBJ_FLAGS_NONE, + OBJ_FLAGS_UNK_0001 = (1 << 0), + OBJ_FLAGS_UNK_0002 = (1 << 1), + OBJ_FLAGS_UNK_0004 = (1 << 2), + OBJ_FLAGS_UNK_0008 = (1 << 3), + OBJ_FLAGS_UNK_0010 = (1 << 4), + OBJ_FLAGS_UNK_0020 = (1 << 5), + OBJ_FLAGS_UNK_0040 = (1 << 6), + OBJ_FLAGS_UNK_0080 = (1 << 7), + OBJ_FLAGS_UNK_0100 = (1 << 8), + OBJ_FLAGS_INVIS_PLAYER1 = (1 << 9), // Player 1 cannot see this. + OBJ_FLAGS_INVIS_PLAYER2 = (1 << 10), // Player 2 cannot see this. + OBJ_FLAGS_UNK_0800 = (1 << 11), + OBJ_FLAGS_SHADOW_ONLY = (1 << 12), // Still has a shadow, but the model is invisible. + OBJ_FLAGS_UNK_2000 = (1 << 13), + OBJ_FLAGS_INVISIBLE = (1 << 14), // Invisible, and hidden shadow too. + OBJ_FLAGS_DEACTIVATED = (1 << 15), // Object is invisible and inactive. } TransFlags; #define TEX_TABLE_2D 0 #define TEX_TABLE_3D 1 -extern u32 gTexColourTag; -extern s32 D_800DE7C4; - -extern Gfx D_800DF1A8[32][2]; -extern Gfx *gSceneCurrDisplayList; -extern s32 gAntiAliasing; -extern u32 D_8011D384; -extern LevelHeader *gCurrentLevelHeader2; -extern s32 gCurrentRenderFlags; -extern TextureHeader *D_8012637C; -extern s16 gForceFlags; -extern Gfx dTextureRectangleModes[]; -extern Gfx D_800DE848[2][2]; -extern Gfx D_800DE868[8][2]; -extern Gfx D_800DE8E8[64][2]; -extern s32 D_80126378; -extern s16 D_80126380; -extern Gfx D_800DE7C8[8][2]; -extern Gfx D_800DECE8[16][2]; -extern Gfx D_800DEDE8[16][2]; -extern Gfx D_800DEEE8[4][2]; -extern Gfx D_800DEF28[16][2]; -extern Gfx D_800DF028[8][2]; -extern Gfx D_800DF0A8[16][2]; -extern s16 D_80126384; -extern Gfx D_800DF3A8[6]; -extern Gfx D_800DF3D8[7]; -extern Gfx D_800DF410[3][2]; - - /* Size: 8 bytes */ typedef struct unk8007F1E8_18 { s32 unk0; diff --git a/src/unknown_0255E0.c b/src/unknown_0255E0.c index dc2f07b5..3920a04e 100644 --- a/src/unknown_0255E0.c +++ b/src/unknown_0255E0.c @@ -349,7 +349,7 @@ void render_scene(Gfx **dList, MatrixS **mtx, Vertex **vtx, TriangleList **tris, for (j = gSceneCurrentPlayerID = 0; j < numViewports; gSceneCurrentPlayerID++, j = gSceneCurrentPlayerID) { if (gCurrentLevelHeader2 && !gCurrentLevelHeader2 && !gCurrentLevelHeader2) {} // Fakematch if (j == 0) { - if (func_8000E184() && numViewports == VIEWPORTS_COUNT_2_PLAYERS) { + if (func_8000E184() && numViewports == 1) { gSceneCurrentPlayerID = PLAYER_TWO; } } @@ -361,7 +361,8 @@ void render_scene(Gfx **dList, MatrixS **mtx, Vertex **vtx, TriangleList **tris, set_active_camera(gSceneCurrentPlayerID); func_80066CDC(&gSceneCurrDisplayList, &gSceneCurrMatrix); func_8002A31C(); - if (numViewports < VIEWPORTS_COUNT_3_PLAYERS) { + // Show detailed skydome in single player. + if (numViewports < 2) { func_80068408(&gSceneCurrDisplayList, &gSceneCurrMatrix); if (gCurrentLevelHeader2->skyDome == -1) { func_80028050(); @@ -377,22 +378,24 @@ void render_scene(Gfx **dList, MatrixS **mtx, Vertex **vtx, TriangleList **tris, gDPPipeSync(gSceneCurrDisplayList++); initialise_player_viewport_vars(updateRate); set_weather_limits(-1, -512); - if (gCurrentLevelHeader2->weatherEnable > 0 && numViewports < VIEWPORTS_COUNT_3_PLAYERS) { + // Show weather effects in single player. + if (gCurrentLevelHeader2->weatherEnable > 0 && numViewports < 2) { process_weather(&gSceneCurrDisplayList, &gSceneCurrMatrix, &gSceneCurrVertexList, &gSceneCurrTriList, tempUpdateRate); } func_800AD030(get_active_camera_segment()); func_800ACA20(&gSceneCurrDisplayList, &gSceneCurrMatrix, &gSceneCurrVertexList, get_active_camera_segment()); render_hud(&gSceneCurrDisplayList, &gSceneCurrMatrix, &gSceneCurrVertexList, get_racer_object_by_port(gSceneCurrentPlayerID), updateRate); } - - if (numViewports == VIEWPORTS_COUNT_4_PLAYERS && get_current_level_race_type() != RACETYPE_CHALLENGE_EGGS && get_current_level_race_type() != RACETYPE_CHALLENGE_BATTLE && get_current_level_race_type() != RACETYPE_CHALLENGE_BANANAS) { + // Show TT Cam toggle for the fourth viewport when playing 3 player. + if (numViewports == 3 && get_current_level_race_type() != RACETYPE_CHALLENGE_EGGS && + get_current_level_race_type() != RACETYPE_CHALLENGE_BATTLE && get_current_level_race_type() != RACETYPE_CHALLENGE_BANANAS) { if (get_hud_setting() == 0) { if (flip) { gSPSetGeometryMode(gSceneCurrDisplayList++, G_CULL_FRONT); } apply_fog(PLAYER_FOUR); gDPPipeSync(gSceneCurrDisplayList++); - set_active_camera(3); + set_active_camera(PLAYER_FOUR); disable_cutscene_camera(); func_800278E8(updateRate); func_80066CDC(&gSceneCurrDisplayList, &gSceneCurrMatrix); @@ -406,17 +409,17 @@ void render_scene(Gfx **dList, MatrixS **mtx, Vertex **vtx, TriangleList **tris, set_weather_limits(-1, -512); func_800AD030(get_active_camera_segment()); func_800ACA20(&gSceneCurrDisplayList, &gSceneCurrMatrix, &gSceneCurrVertexList, get_active_camera_segment()); - set_text_font(0); + set_text_font(FONT_COLOURFUL); if (osTvType == TV_TYPE_PAL) { - posX = 166; - posY = 138; + posX = SCREEN_WIDTH_HALF + 6; + posY = SCREEN_HEIGHT_HALF_PAL + 6; } else { - posX = 170; - posY = 125; + posX = SCREEN_WIDTH_HALF + 10; + posY = SCREEN_HEIGHT_HALF + 5; } - draw_text(&gSceneCurrDisplayList, posX, posY, (char *)(&gViewport4Text), ALIGN_TOP_LEFT); + draw_text(&gSceneCurrDisplayList, posX, posY, (char *)(&gViewport4Text), ALIGN_TOP_LEFT); // TT CAM } else { - set_active_camera(3); + set_active_camera(PLAYER_FOUR); func_800278E8(updateRate); } } @@ -1070,13 +1073,13 @@ void render_level_segment(s32 segmentId, s32 nonOpaque) { if (!(batchFlags & BATCH_FLAGS_DEPTH_WRITE) && !(batchFlags & BATCH_FLAGS_UNK00000800)) { batchFlags |= gAntiAliasing; } - if ((!(textureFlags & RENDER_SEMI_TRANSPARENT) && !(batchFlags & BATCH_FLAGS_UNK00002000)) || batchFlags & BATCH_FLAGS_UNK00000800) { + if ((!(textureFlags & RENDER_SEMI_TRANSPARENT) && !(batchFlags & BATCH_FLAGS_WATER)) || batchFlags & BATCH_FLAGS_UNK00000800) { renderBatch = TRUE; } if (nonOpaque) { renderBatch = (renderBatch + 1) & 1; } - if (sp78 && batchFlags & BATCH_FLAGS_UNK00002000) { + if (sp78 && batchFlags & BATCH_FLAGS_WATER) { renderBatch = FALSE; } if (!renderBatch) { @@ -1462,7 +1465,7 @@ s32 check_if_in_draw_range(Object *obj) { alpha = 255; viewDistance = obj->segment.header->drawDistance; if (obj->segment.header->drawDistance) { - if (gScenePlayerViewports == VIEWPORTS_COUNT_4_PLAYERS) { + if (gScenePlayerViewports == 3) { viewDistance *= 0.5; } diff --git a/src/unknown_0255E0.h b/src/unknown_0255E0.h index 7c64e22a..5e9035e0 100644 --- a/src/unknown_0255E0.h +++ b/src/unknown_0255E0.h @@ -24,8 +24,8 @@ enum TriangleBatchFlags { BATCH_FLAGS_UNK00000400 = (1 << 10), BATCH_FLAGS_UNK00000800 = (1 << 11), BATCH_FLAGS_UNK00001000 = (1 << 12), - BATCH_FLAGS_UNK00002000 = (1 << 13), - BATCH_FLAGS_FORCE_NO_SHADOWS = (1 << 14), + BATCH_FLAGS_WATER = (1 << 13), + BATCH_FLAGS_FORCE_NO_SHADOWS = (1 << 14), BATCH_FLAGS_ENVMAP = (1 << 15), BATCH_FLAGS_TEXTURE_ANIM = (1 << 16), BATCH_FLAGS_UNK00020000 = (1 << 17), diff --git a/src/unknown_078050.c b/src/unknown_078050.c index 04b2a1aa..695ab16b 100644 --- a/src/unknown_078050.c +++ b/src/unknown_078050.c @@ -24,7 +24,7 @@ s32 sBackgroundFillColour = GPACK_RGBA5551(0, 0, 0, 1) | (GPACK_RGBA5551(0, 0, 0 u32 D_800DE4C0 = 0x40; TextureHeader *D_800DE4C4 = 0; TextureHeader *D_800DE4C8 = 0; -s32 gChecquerBGEnabled = 0; +s32 gChequerBGEnabled = FALSE; BackgroundFunction gBackgroundDrawFunc = { NULL }; s32 gfxBufCounter = 0; @@ -59,7 +59,7 @@ Gfx dRdpInit[] = { gsSPEndDisplayList(), }; -Gfx D_800DE598[] = { +Gfx dRaceFinishBackgroundSettings[] = { gsDPPipeSync(), gsDPSetTextureLOD(G_TL_TILE), gsDPSetTextureLUT(G_TT_NONE), @@ -95,7 +95,7 @@ Gfx dTextureRectangleModes[] = { gsSPEndDisplayList(), }; -Gfx D_800DE670[] = { +Gfx dScaledRectangleBaseModes[] = { gsDPPipeSync(), gsDPSetTextureLOD(G_TL_TILE), gsDPSetTextureLUT(G_TT_NONE), @@ -106,41 +106,21 @@ Gfx D_800DE670[] = { }; Gfx dTextureRectangleScaledOpa[][2] = { - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP_NOPERSP, DKR_OML_COMMON | G_RM_AA_OPA_SURF | G_RM_AA_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP_NOPERSP, DKR_OML_COMMON | G_RM_OPA_SURF | G_RM_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_POINT_NOPERSP, DKR_OML_COMMON | G_RM_AA_OPA_SURF | G_RM_AA_OPA_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_POINT_NOPERSP, DKR_OML_COMMON | G_RM_OPA_SURF | G_RM_OPA_SURF2), - }, + // Bilinear Filtered texture + DRAW_TABLE_ENTRY(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM, DKR_OMH_1CYC_BILERP_NOPERSP, G_RM_AA_OPA_SURF, G_RM_AA_OPA_SURF2), + DRAW_TABLE_ENTRY(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM, DKR_OMH_1CYC_BILERP_NOPERSP, G_RM_OPA_SURF, G_RM_OPA_SURF2), + // Point Sampled texture + DRAW_TABLE_ENTRY(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM, DKR_OMH_1CYC_POINT_NOPERSP, G_RM_AA_OPA_SURF, G_RM_AA_OPA_SURF2), + DRAW_TABLE_ENTRY(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM, DKR_OMH_1CYC_POINT_NOPERSP, G_RM_OPA_SURF, G_RM_OPA_SURF2) }; Gfx dTextureRectangleScaledXlu[][2] = { - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP_NOPERSP, DKR_OML_COMMON | G_RM_AA_XLU_SURF | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_BILERP_NOPERSP, DKR_OML_COMMON | G_RM_XLU_SURF | G_RM_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_POINT_NOPERSP, DKR_OML_COMMON | G_RM_AA_XLU_SURF | G_RM_AA_XLU_SURF2), - }, - { - gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), - gsDPSetOtherMode(DKR_OMH_1CYC_POINT_NOPERSP, DKR_OML_COMMON | G_RM_XLU_SURF | G_RM_XLU_SURF2), - }, + // Bilinear Filtered texture + DRAW_TABLE_ENTRY(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM, DKR_OMH_1CYC_BILERP_NOPERSP, G_RM_AA_XLU_SURF, G_RM_AA_XLU_SURF2), + DRAW_TABLE_ENTRY(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM, DKR_OMH_1CYC_BILERP_NOPERSP, G_RM_XLU_SURF, G_RM_XLU_SURF2), + // Point Sampled texture + DRAW_TABLE_ENTRY(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM, DKR_OMH_1CYC_POINT_NOPERSP, G_RM_AA_XLU_SURF, G_RM_AA_XLU_SURF2), + DRAW_TABLE_ENTRY(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM, DKR_OMH_1CYC_POINT_NOPERSP, G_RM_XLU_SURF, G_RM_XLU_SURF2) }; /*******************************/ @@ -196,14 +176,14 @@ s32 setup_ostask_xbus(Gfx* dlBegin, Gfx* dlEnd, UNUSED s32 recvMesg) { dkrtask->task.data_ptr = (u64 *) dlBegin; dkrtask->task.data_size = ((s32) dlEnd - (s32) dlBegin) >> 3; // Shifted by 3, repsenting the size of the Gfx type. dkrtask->task.type = M_GFXTASK; - dkrtask->task.flags = 2; + dkrtask->task.flags = OS_TASK_DP_WAIT; dkrtask->task.ucode_boot = (u64 *) rspF3DDKRBootStart; dkrtask->task.ucode_boot_size = (s32) (rspF3DDKRDramStart - rspF3DDKRBootStart); dkrtask->task.ucode = (u64 *) rspF3DDKRXbusStart; dkrtask->task.ucode_data = (u64 *) rspF3DDKRDataXbusStart; - dkrtask->task.ucode_data_size = 0x800; + dkrtask->task.ucode_data_size = SP_UCODE_DATA_SIZE; dkrtask->task.dram_stack = (u64 *) gDramStack; - dkrtask->task.dram_stack_size = 0x400; + dkrtask->task.dram_stack_size = SP_DRAM_STACK_SIZE8; dkrtask->task.output_buff = (u64 *) gGfxSPTaskYieldBuffer; dkrtask->task.output_buff_size = (u64 *) &D_80125EA0; dkrtask->task.yield_data_ptr = (u64 *) gGfxTaskYieldData; @@ -236,14 +216,14 @@ UNUSED void setup_ostask_xbus_2(Gfx* dlBegin, Gfx* dlEnd, s32 recvMesg) { dkrtask->task.data_ptr = (u64 *) dlBegin; dkrtask->task.data_size = (s32) (dlEnd - dlBegin) * sizeof(Gfx); dkrtask->task.type = M_GFXTASK; - dkrtask->task.flags = 2; + dkrtask->task.flags = OS_TASK_DP_WAIT; dkrtask->task.ucode_boot = (u64 *) rspF3DDKRBootStart; dkrtask->task.ucode_boot_size = (s32) (rspF3DDKRDramStart - rspF3DDKRBootStart); dkrtask->task.ucode = (u64 *) rspF3DDKRXbusStart; dkrtask->task.ucode_data = (u64 *) rspF3DDKRDataXbusStart; - dkrtask->task.ucode_data_size = 0x800; + dkrtask->task.ucode_data_size = SP_UCODE_DATA_SIZE; dkrtask->task.dram_stack = (u64 *) gDramStack; - dkrtask->task.dram_stack_size = 0x400; + dkrtask->task.dram_stack_size = SP_DRAM_STACK_SIZE8; dkrtask->task.yield_data_ptr = (u64 *) gGfxTaskYieldData; dkrtask->task.yield_data_size = sizeof(gGfxTaskYieldData); dkrtask->task.output_buff = NULL; @@ -290,13 +270,13 @@ UNUSED void setup_ostask_fifo(Gfx* dlBegin, Gfx* dlEnd, s32 recvMesg) { dkrtask->task.ucode_boot = (u64 *) rspF3DDKRBootStart; dkrtask->task.data_size = (s32) (dlEnd - dlBegin) * sizeof(Gfx); dkrtask->task.type = M_GFXTASK; - dkrtask->task.flags = 2; + dkrtask->task.flags = OS_TASK_DP_WAIT; dkrtask->task.ucode_boot_size = (s32) (rspF3DDKRDramStart - rspF3DDKRBootStart); dkrtask->task.ucode = (u64 *) rspF3DDKRFifoStart; dkrtask->task.ucode_data = (u64 *) rspF3DDKRDataFifoStart; - dkrtask->task.ucode_data_size = 0x800; + dkrtask->task.ucode_data_size = SP_UCODE_DATA_SIZE; dkrtask->task.dram_stack = (u64 *) gDramStack; - dkrtask->task.dram_stack_size = 0x400; + dkrtask->task.dram_stack_size = SP_DRAM_STACK_SIZE8; dkrtask->task.output_buff = (u64 *) gGfxSPTaskYieldBuffer; dkrtask->task.output_buff_size = (u64 *) (gGfxSPTaskYieldBuffer + YIELD_BUFFER_SIZE); dkrtask->task.yield_data_ptr = (u64 *) gGfxTaskYieldData; @@ -342,14 +322,14 @@ UNUSED void setup_ostask_fifo_2(Gfx* dlBegin, Gfx* dlEnd, s32 recvMesg) { dkrtask->task.data_size = (s32) (dlEnd - dlBegin) * sizeof(Gfx); dkrtask->task.data_ptr = (u64 *) dlBegin; dkrtask->task.type = M_GFXTASK; - dkrtask->task.flags = 2; + dkrtask->task.flags = OS_TASK_DP_WAIT; dkrtask->task.ucode_boot = (u64 *) rspF3DDKRBootStart; dkrtask->task.ucode_boot_size = (s32) (rspF3DDKRDramStart - rspF3DDKRBootStart); dkrtask->task.ucode = (u64 *) rspF3DDKRFifoStart; dkrtask->task.ucode_data = (u64 *) rspF3DDKRDataFifoStart; - dkrtask->task.ucode_data_size = 0x800; + dkrtask->task.ucode_data_size = SP_UCODE_DATA_SIZE; dkrtask->task.dram_stack = (u64 *) gDramStack; - dkrtask->task.dram_stack_size = 0x400; + dkrtask->task.dram_stack_size = SP_DRAM_STACK_SIZE8; dkrtask->task.output_buff = (u64 *) gGfxSPTaskYieldBuffer; dkrtask->task.output_buff_size = (u64 *) &D_80125EA0; dkrtask->task.yield_data_ptr = (u64 *) gGfxTaskYieldData; @@ -445,8 +425,8 @@ void render_background(Gfx **dList, Matrix *mtx, s32 drawBG) { gDPSetColorImage((*dList)++, G_IM_FMT_RGBA, G_IM_SIZ_16b, w, SEGMENT_COLOUR_BUFFER); if (drawBG) { if (check_viewport_background_flag(0)) { - if (gChecquerBGEnabled) { - render_chequer_background(dList); + if (gChequerBGEnabled) { + render_chequer_background(dList); // Unused } else if (D_800DE4C4) { func_80078190(dList); } else if (gBackgroundDrawFunc.ptr != NULL) { @@ -455,6 +435,7 @@ void render_background(Gfx **dList, Matrix *mtx, s32 drawBG) { gDPSetFillColor((*dList)++, sBackgroundFillColour); gDPFillRectangle((*dList)++, 0, 0, w - 1, h - 1); } + // Used for secondary viewport backgrounds. This does not need to be 1 cycle, this could easily work with fillmode. if (copy_viewport_background_size_to_coords(0, &x1, &y1, &x2, &y2)) { gDPSetCycleType((*dList)++, G_CYC_1CYCLE); gDPSetPrimColor((*dList)++, 0, 0, sBackgroundPrimColourR, sBackgroundPrimColourG, sBackgroundPrimColourB, 255); @@ -463,8 +444,8 @@ void render_background(Gfx **dList, Matrix *mtx, s32 drawBG) { gDPFillRectangle((*dList)++, x1, y1, x2, y2); } } else { - if (gChecquerBGEnabled) { - render_chequer_background(dList); + if (gChequerBGEnabled) { + render_chequer_background(dList); // Unused } else if (D_800DE4C4) { func_80078190(dList); } else if (gBackgroundDrawFunc.ptr != NULL) { @@ -543,7 +524,7 @@ void func_80078190(Gfx **dlist) { widthAndHeight = get_video_width_and_height_as_s32(); videoWidth = GET_VIDEO_WIDTH(widthAndHeight); videoHeight = GET_VIDEO_HEIGHT(widthAndHeight); - gSPDisplayList((*dlist)++, D_800DE598); + gSPDisplayList((*dlist)++, dRaceFinishBackgroundSettings); if (D_800DE4C8 == NULL) { gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(D_800DE4C4->cmd), D_800DE4C4->numberOfCommands); @@ -640,14 +621,14 @@ UNUSED void set_chequer_background(s32 colourA, s32 colourB, s32 width, s32 heig gChequerBGColourA2 = colourB & 0xFF; gChequerBGWidth = width; gChequerBGHeight = height; - gChecquerBGEnabled = TRUE; + gChequerBGEnabled = TRUE; } /** * Disables the chequer background. */ UNUSED void disable_chequer_background(void) { - gChecquerBGEnabled = FALSE; + gChequerBGEnabled = FALSE; } /** @@ -767,7 +748,7 @@ void render_texture_rectangle_scaled(Gfx **dlist, DrawTexture *element, f32 xPos dmaDlist = dTextureRectangleScaledXlu[(u8)flags & 0xFF]; } - gSPDisplayList((*dlist)++, D_800DE670); + gSPDisplayList((*dlist)++, dScaledRectangleBaseModes); gDkrDmaDisplayList((*dlist)++, OS_PHYSICAL_TO_K0(dmaDlist), numberOfGfxCommands(dTextureRectangleScaledOpa[0])); gDPSetPrimColorRGBA((*dlist)++, colour); diff --git a/src/unknown_078050.h b/src/unknown_078050.h index fa45205f..8249320b 100644 --- a/src/unknown_078050.h +++ b/src/unknown_078050.h @@ -13,6 +13,11 @@ #define SEGMENT_DEPTH_BUFFER 0x02000000 #define SEGMENT_COLOUR_BUFFER 0x01000000 +enum TextureRectangleFlags { + TEXRECT_BILERP, + TEXRECT_POINT +}; + typedef union { void (*function)(Gfx*, Matrix *); void *ptr; @@ -43,7 +48,7 @@ extern s32 sBackgroundFillColour; extern TextureHeader *D_800DE4C4; extern TextureHeader *D_800DE4C8; -extern s32 gChecquerBGEnabled; +extern s32 gChequerBGEnabled; extern s32 gfxBufCounter; extern s32 gfxBufCounter2;