diff --git a/bin/segment2.c b/bin/segment2.c index 56ac4adf..aef1135d 100644 --- a/bin/segment2.c +++ b/bin/segment2.c @@ -2902,7 +2902,9 @@ const Gfx dl_waterbox_rgba16_begin[] = { gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA), gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK), gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), +#ifdef USE_FRUSTRATIO2 gsSPClipRatio(FRUSTRATIO_1), +#endif gsDPTileSync(), gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, (G_TX_WRAP | G_TX_NOMIRROR), 5, G_TX_NOLOD, (G_TX_WRAP | G_TX_NOMIRROR), 5, G_TX_NOLOD), gsDPSetTileSize(0, 0, 0, ((32 - 1) << G_TEXTURE_IMAGE_FRAC), ((32 - 1) << G_TEXTURE_IMAGE_FRAC)), @@ -2915,7 +2917,9 @@ const Gfx dl_waterbox_ia16_begin[] = { gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK), gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), +#ifdef USE_FRUSTRATIO2 gsSPClipRatio(FRUSTRATIO_1), +#endif gsDPTileSync(), gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, (G_TX_WRAP | G_TX_NOMIRROR), 5, G_TX_NOLOD, (G_TX_WRAP | G_TX_NOMIRROR), 5, G_TX_NOLOD), gsDPSetTileSize(0, 0, 0, ((32 - 1) << G_TEXTURE_IMAGE_FRAC), ((32 - 1) << G_TEXTURE_IMAGE_FRAC)), @@ -2925,7 +2929,9 @@ const Gfx dl_waterbox_ia16_begin[] = { // 0x02014810 - 0x02014838 const Gfx dl_waterbox_end[] = { gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), +#ifdef USE_FRUSTRATIO2 gsSPClipRatio(FRUSTRATIO_2), +#endif gsDPPipeSync(), gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK), gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), diff --git a/include/config/config_graphics.h b/include/config/config_graphics.h index 33f52a13..6d73d6ce 100644 --- a/include/config/config_graphics.h +++ b/include/config/config_graphics.h @@ -155,3 +155,10 @@ * Makes use of the tex edge render mode to deliver smooth transition textures */ // #define SHARP_TRANSITION_TEXTURES + +/** + * Uses frustratio of 2 instead of 1. + * Can improve performance in some circumstances, though it can also cause large tris to warp if cut off from the camera. + * Only use this if you can test the difference of your hack with and without this change on console. + */ +// #define USE_FRUSTRATIO2 diff --git a/levels/ccm/areas/2/1/model.inc.c b/levels/ccm/areas/2/1/model.inc.c index b1c73cf4..745e259a 100644 --- a/levels/ccm/areas/2/1/model.inc.c +++ b/levels/ccm/areas/2/1/model.inc.c @@ -1999,7 +1999,9 @@ static const Gfx ccm_seg7_dl_0701C5C8[] = { // 0x0701CC40 - 0x0701CE30 static const Gfx ccm_seg7_dl_0701CC40[] = { gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09001000), +#ifdef USE_FRUSTRATIO2 gsSPClipRatio(FRUSTRATIO_1), +#endif gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)), gsSPVertex(ccm_seg7_vertex_0701AB50, 16, 0), @@ -2036,7 +2038,9 @@ static const Gfx ccm_seg7_dl_0701CC40[] = { gsSPVertex(ccm_seg7_vertex_0701B040, 10, 0), gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0), gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0), +#ifdef USE_FRUSTRATIO2 gsSPClipRatio(FRUSTRATIO_2), +#endif gsSPEndDisplayList(), }; diff --git a/src/game/game_init.c b/src/game/game_init.c index df4651f5..202f6a31 100644 --- a/src/game/game_init.c +++ b/src/game/game_init.c @@ -136,7 +136,11 @@ const Gfx init_rsp[] = { gsSPClearGeometryMode(G_CULL_FRONT | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | G_LOD), gsSPSetGeometryMode(G_SHADE | G_SHADING_SMOOTH | G_CULL_BACK | G_LIGHTING), gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_OFF), +#ifdef USE_FRUSTRATIO2 gsSPClipRatio(FRUSTRATIO_2), +#else + gsSPClipRatio(FRUSTRATIO_1), +#endif gsSPEndDisplayList(), };