diff --git a/ld/gamefiles.ntsc-final.inc b/ld/gamefiles.ntsc-final.inc index 6ce826c4a..93f27541b 100644 --- a/ld/gamefiles.ntsc-final.inc +++ b/ld/gamefiles.ntsc-final.inc @@ -141,7 +141,6 @@ build/ROMID/game/modeldata/robot.o (section); \ build/ROMID/game/sky.o (section); \ build/ROMID/game/playermgr.o (section); \ - build/ROMID/game/crc.o (section); \ build/ROMID/game/rng2.o (section); \ build/ROMID/game/vtxstore.o (section); \ build/ROMID/game/explosions.o (section); \ @@ -159,12 +158,10 @@ build/ROMID/game/options.o (section); \ build/ROMID/game/game_152fa0.o (section); \ build/ROMID/game/game_1531a0.o (section); \ - build/ROMID/game/collisionutils.o (section); \ build/ROMID/game/bg.o (section); \ build/ROMID/game/bgbss.o (section); \ build/ROMID/game/game_165360.o (section); \ build/ROMID/game/stagetable.o (section); \ - build/ROMID/game/gfxreplace.o (section); \ build/ROMID/game/env.o (section); \ build/ROMID/game/room.o (section); \ build/ROMID/game/file.o (section); \ diff --git a/src/game/bg.c b/src/game/bg.c index 6e801b128..4a59e1486 100644 --- a/src/game/bg.c +++ b/src/game/bg.c @@ -17,7 +17,6 @@ #include "game/game_13c510.h" #include "game/game_1531a0.h" #include "game/gfxmemory.h" -#include "game/gfxreplace.h" #include "game/bg.h" #include "game/game_165360.h" #include "game/stagetable.h" @@ -2312,6 +2311,287 @@ static struct gfxvtx *roomFindVerticesForGdl(s32 roomnum, Gfx *gdl) return NULL; } +Gfx gbi_26a40[] = { + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, 0, SCALE, 0, TEXEL1, 0, PRIM_LOD_FRAC, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + 0, +}; + +Gfx gbi_26a58[] = { + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_OPA_SURF2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_OPA_TERR2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_TERR2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_OPA_DECAL2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_DECAL2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_DECAL2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_SURF2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_OPA_SURF2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_OPA_SURF2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_OPA_TERR2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_OPA_TERR2), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), + 0, +}; + +Gfx gbi_26b90[] = { + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_DECAL2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_SURF2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), + 0, +}; + +Gfx gbi_26c78[] = { + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), + 0, +}; + +Gfx gbi_26d20[] = { + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), + 0, +}; + +Gfx gbi_26dc8[] = { + gsDPSetRenderMode(G_RM_AA_ZB_XLU_SURF, G_RM_AA_ZB_XLU_SURF2), + gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_SURF2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_TEX_EDGE2), + 0, +}; + +Gfx gbi_26df0[] = { + gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2), + gsDPSetRenderMode(G_RM_AA_ZB_OPA_TERR, G_RM_AA_ZB_OPA_TERR2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_OPA_SURF2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_OPA_TERR2), + 0, +}; + +Gfx gbi_26e18[] = { + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_SURF2), + gsDPSetRenderMode(G_RM_PASS, G_RM_ZB_CLD_SURF2), + 0, +}; + +Gfx gbi_26e30[] = { + gsDPSetCycleType(G_CYC_1CYCLE), + gsDPSetCycleType(G_CYC_2CYCLE), + gsDPSetRenderMode(G_RM_AA_OPA_TERR, G_RM_AA_OPA_TERR2), + gsDPSetRenderMode(GBL_c1(G_BL_CLR_IN, G_BL_A_SHADE, G_BL_CLR_FOG, G_BL_1MA), G_RM_AA_OPA_TERR2), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_PASS2), + 0, +}; + +Gfx gbi_26e68[] = { + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE, TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE, TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetCombineLERP(1, 0, SCALE, 0, 0, 0, 0, SHADE, 1, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, SHADE), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, SHADE), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2), + gsDPSetCombineLERP(1, 0, SCALE, 0, 0, 0, 0, SHADE, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + 0, +}; + +Gfx gbi_26f50[] = { + gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE, TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE, TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetCombineLERP(1, 0, SCALE, 0, 0, 0, 0, SHADE, 1, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, SHADE), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, SHADE), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0), + gsDPSetCombineLERP(1, 0, SCALE, 0, 0, 0, 0, SHADE, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2), + 0, +}; + +Gfx *var80081018[] = { + gbi_26a40, + gbi_26a58, + gbi_26dc8, + gbi_26df0, + gbi_26e18, + gbi_26b90, + gbi_26c78, + gbi_26d20, + gbi_26e30, + gbi_26e68, + gbi_26f50, +}; + +static void gfxReplaceGbiCommands(Gfx *startgdl, Gfx *endgdl, s32 type) +{ + Gfx *gdl = startgdl; + + while ((endgdl && gdl < endgdl) || (!endgdl && *(s8 *)gdl != G_ENDDL)) { + Gfx *src = var80081018[type]; + + while (src->words.w0 != 0) { + if (src->words.w0 == gdl->words.w0 && src->words.w1 == gdl->words.w1) { + *gdl = src[1]; + } + + src += 2; + } + + gdl++; + } +} + +static void gfxReplaceGbiCommandsRecursively(struct roomblock *block, s32 type) +{ + if (block->type == ROOMBLOCKTYPE_PARENT); + + while (true) { + if (!block) { + return; + } + + switch (block->type) { + case ROOMBLOCKTYPE_LEAF: + gfxReplaceGbiCommands(block->gdl, NULL, type); + block = block->next; + break; + case ROOMBLOCKTYPE_PARENT: + gfxReplaceGbiCommandsRecursively(block->child, type); + block = block->next; + break; + default: + return; + } + } +} + static void bgLoadRoom(s32 roomnum) { s32 size; // 2f4 diff --git a/src/game/collisionutils.c b/src/game/collisionutils.c deleted file mode 100644 index bae8c7a6c..000000000 --- a/src/game/collisionutils.c +++ /dev/null @@ -1,179 +0,0 @@ -#include -#include "constants.h" -#include "game/game_006900.h" -#include "game/savebuffer.h" -#include "game/game_1531a0.h" -#include "game/file.h" -#include "game/lang.h" -#include "bss.h" -#include "lib/vi.h" -#include "lib/dma.h" -#include "lib/main.h" -#include "data.h" -#include "types.h" - -f32 func0f1577f0(f32 arg0[2], f32 arg1[2], f32 arg2[2], f32 arg3[2]) -{ - f32 mult1 = arg2[1] - arg3[1]; - f32 mult2 = arg3[0] - arg2[0]; - f32 a = (arg2[1] - arg0[1]) * mult2 + (arg2[0] - arg0[0]) * mult1; - f32 b = (arg1[1] - arg0[1]) * mult2 + (arg1[0] - arg0[0]) * mult1; - - if (b == 0.0f) { - return 1.0f; - } - - a /= b; - - if (a < 0.0f || a > 1.0f) { - return 1.0f; - } - - return a; -} - -static f32 func0f1578c8(struct widthxz *arg0, struct xz *arg1, struct xz *arg2) -{ - f32 value2; - f32 value1; - f32 sp24; - f32 mult1; - f32 mult2; - - mult1 = arg2->x - arg0->x; - mult2 = arg2->z - arg0->z; - - value1 = mult2 * arg1->x - mult1 * arg1->z; - value2 = mult1 * arg1->x + mult2 * arg1->z; - - sp24 = (arg0->width - value1) * (arg0->width + value1); - - if (sp24 < 0.0f) { - return MAXFLOAT; - } - - value2 -= sqrtf(sp24); - - if (value2 < 0.0f) { - if (value2 * value2 + value1 * value1 <= arg0->width * arg0->width) { - return 0.0f; - } - - return MAXFLOAT; - } - - return value2; -} - -f32 func0f1579cc(struct widthxz *arg0, struct xz *arg1, struct xz *arg2, struct xz *arg3) -{ - f32 spac; - f32 spa8; - struct xz spa0; - f32 sp9c; - f32 sp98; - f32 sp94; - f32 sp90; - f32 sp8c; - f32 sp88; - f32 sp84; - f32 sp80; - f32 sp7c; - f32 sp78; - f32 sp74; - f32 sp70; - f32 sp6c; - f32 sp68; - f32 sp64; - f32 sp60; - f32 sp5c; - f32 sp58; - f32 sp54; - - spac = sqrtf(arg3->x * arg3->x + arg3->z * arg3->z); - - if (spac == 0.0f) { - return 1.0f; - } - - spa0.x = arg3->x * (1.0f / spac); - spa0.z = arg3->z * (1.0f / spac); - - sp98 = arg2->x - arg1->x; - sp9c = arg2->z - arg1->z; - - sp94 = sqrtf(sp98 * sp98 + sp9c * sp9c); - - if (sp94 == 0.0f) { - goto handlezero; - } - - sp90 = 1.0f / sp94; - sp88 = sp9c * sp90; - sp8c = -sp98 * sp90; - - sp84 = arg0->width * sp88; - sp80 = arg0->width * sp8c; - - if (sp84 * (arg0->x - arg1->x) + sp80 * (arg0->z - arg1->z) < 0.0f) { - sp84 = -sp84; - sp80 = -sp80; - } - - sp78 = arg1->x + sp84; - sp7c = arg1->z + sp80; - sp70 = arg2->x + sp84; - sp74 = arg2->z + sp80; - - sp68 = (arg3->z * sp78) - (sp7c * arg3->x); - sp6c = (arg0->x * arg3->z) - (arg0->z * arg3->x); - sp64 = (arg3->z * sp70) - (sp74 * arg3->x); - - if (sp64 < sp68) { - struct xz *tmp; - - spa8 = sp68; - sp68 = sp64; - sp64 = spa8; - - tmp = arg1; - arg1 = arg2; - arg2 = tmp; - - sp88 = -sp88; - sp8c = -sp8c; - } - - if (sp64 == sp68) { - sp60 = func0f1578c8(arg0, &spa0, arg1); - sp5c = func0f1578c8(arg0, &spa0, arg2); - - if (sp5c < sp60) { - sp60 = sp5c; - } - } else if (sp64 < sp6c) { -handlezero: - sp60 = func0f1578c8(arg0, &spa0, arg2); - } else if (sp6c < sp68) { - sp60 = func0f1578c8(arg0, &spa0, arg1); - } else { - sp58 = sp88 * (arg0->x - arg1->x) + sp8c * (arg0->z - arg1->z); - sp54 = sp88 * (arg0->x + arg3->x - arg1->x) + sp8c * (arg0->z + arg3->z - arg1->z); - - if (sp58 == sp54) { - return 1.0f; - } - - sp60 = (sp58 - arg0->width) * spac / (sp58 - sp54); - } - - if (spac < sp60) { - return 1.0f; - } - - if (sp60 < 0.0f) { - return 0.0f; - } - - return (f32) sp60 * (1.0f / spac); -} diff --git a/src/game/crc.c b/src/game/crc.c deleted file mode 100644 index b096dfe8a..000000000 --- a/src/game/crc.c +++ /dev/null @@ -1,28 +0,0 @@ -#include -#include "constants.h" -#include "bss.h" -#include "lib/rng.h" -#include "data.h" -#include "types.h" - -void crcCalculateU16Pair(u8 *start, u8 *end, u16 *checksum) -{ - u8 *ptr; - u32 salt = 0; - u64 seed = 0x8f809f473108b3c1; - u32 sum1 = 0; - u32 sum2 = 0; - - for (ptr = start; ptr < end; ptr++, salt += 7) { - seed += *ptr << (salt & 0x0f); - sum1 ^= rngRotateSeed(&seed); - } - - for (ptr = end - 1; ptr >= start; ptr--, salt += 3) { - seed += *ptr << (salt & 0x0f); - sum2 ^= rngRotateSeed(&seed); - } - - checksum[0] = sum1 & 0xffff; - checksum[1] = sum2 & 0xffff; -} diff --git a/src/game/dlights.c b/src/game/dlights.c index 12cff1976..67d08e50b 100644 --- a/src/game/dlights.c +++ b/src/game/dlights.c @@ -71,6 +71,81 @@ static void func0f004c6c(void); static f32 func0f0053d0(s32 roomnum1, struct coord *pos1, s32 portalnum1, s32 roomnum2, struct coord *pos2, s32 portalnum2, f32 *arg6); static void func0f005bb0(void); +static s32 func0f177a54(u8 *arg0, s32 arg1, u8 *arg2, s32 arg3) +{ + s32 i = 0; + s32 v1 = 0; + s32 t0 = 0; + + for (; i < arg1; i++) { + s32 index = i * arg3; + + if (arg0[index] != 0) { + u8 *ptr = &arg0[index]; + + if (i != 0 && ptr[-arg3] == 0) { + arg2[v1++] = 0; + + if (t0 == 255) { + arg2[v1++] = 200; + arg2[v1++] = 0; + t0 -= 200; + } else { + while (t0 > 255) { + arg2[v1++] = 255; + t0 -= 255; + } + } + + arg2[v1++] = t0; + t0 = 0; + } + + arg2[v1++] = arg0[index]; + } else { + t0++; + } + } + + arg2[v1++] = 0; + arg2[v1++] = 0; + + return v1; +} + +static s32 func0f177c8c(u8 *arg0, s32 *arg1, s32 *arg2) +{ + s32 result; + + if (*arg1 == 0) { + *arg2 = -1; + } + + while (arg0[*arg1] == 0) { + *arg1 += 1; + + if (arg0[*arg1]) { + while (arg0[*arg1] == 255) { + *arg2 += 255; + *arg1 += 1; + } + + *arg2 += arg0[*arg1]; + *arg1 += 1; + } else { + return -1; + } + } + + *arg2 += 1; + + result = arg0[*arg1]; + + *arg1 += 1; + + return result; +} + static u32 func0f000920(s32 portalnum1, s32 portalnum2) { if (portalnum1 != portalnum2) { @@ -505,11 +580,11 @@ void func0f001c0c(void) return; } - table1size = align16(g_Vars.roomcount * 4); - table2size = align16(g_NumPortals * 4); - table3size = align16(g_Vars.roomcount * 4); - table4size = align16((u32)var8009cae0 * (u32)var8009cae0); - sp68 = align16(g_Vars.roomcount * 8); + table1size = ALIGN16(g_Vars.roomcount * 4); + table2size = ALIGN16(g_NumPortals * 4); + table3size = ALIGN16(g_Vars.roomcount * 4); + table4size = ALIGN16((u32)var8009cae0 * (u32)var8009cae0); + sp68 = ALIGN16(g_Vars.roomcount * 8); mempGetStageFree(); @@ -549,17 +624,17 @@ void func0f001c0c(void) for (i = 1, table3size = 0; i < g_Vars.roomcount; i++) { sp44[i] = func0f177a54((void *)(i * var8009cae0 + sp48), g_Vars.roomcount, (void *)(&s5[i * var8009cae0]), 1); - table3size += align4(sp44[i]); + table3size += ALIGN4(sp44[i]); } - ptr = mempAlloc(align16(table3size), MEMPOOL_STAGE); + ptr = mempAlloc(ALIGN16(table3size), MEMPOOL_STAGE); - sp68 += align16(table3size); + sp68 += ALIGN16(table3size); sp54 = 0; for (i = 1; i < g_Vars.roomcount; i++) { - s32 size = align4(sp44[i]); + s32 size = ALIGN4(sp44[i]); var80061420[i].unk00 = ptr; @@ -576,17 +651,15 @@ void func0f001c0c(void) for (i = 1; i < g_Vars.roomcount; i++) { sp44[i] = func0f177a54((void *)(sp48 + i), g_Vars.roomcount, (void *)(&s5[i * var8009cae0]), var8009cae0); - table3size += align4(sp44[i]); + table3size += ALIGN4(sp44[i]); } - ptr = mempAlloc(align16(table3size), MEMPOOL_STAGE); - - align16(table3size); + ptr = mempAlloc(ALIGN16(table3size), MEMPOOL_STAGE); for (i = 1; i < g_Vars.roomcount; i++) { var80061420[i].unk04 = ptr; - ptr += align4(sp44[i]); + ptr += ALIGN4(sp44[i]); for (j = 0; j < sp44[i]; j++) { var80061420[i].unk04[j] = *(&s5[i * var8009cae0] + j); @@ -791,7 +864,7 @@ void func0f002a98(void) { s32 i; - var8009cae0 = align4(g_Vars.roomcount); + var8009cae0 = ALIGN4(g_Vars.roomcount); var80061458 = 0; g_Vars.remakewallhitvtx = 0; @@ -1540,11 +1613,11 @@ static void func0f004c6c(void) u8 *ptr; u8 *backupptr; - sp44 = align16(0x2000); - sp40 = align16(g_NumPortals * 4); - sp3c = align16(g_NumPortals * 0xc); - sp38 = align16(g_NumPortals * 4); - sp34 = align16(g_NumPortals * 2); + sp44 = ALIGN16(0x2000); + sp40 = ALIGN16(g_NumPortals * 4); + sp3c = ALIGN16(g_NumPortals * 0xc); + sp38 = ALIGN16(g_NumPortals * 4); + sp34 = ALIGN16(g_NumPortals * 2); for (i = 0, s4 = sp38; i < g_NumPortals; i++) { if (i != 0) { @@ -1552,8 +1625,8 @@ static void func0f004c6c(void) } } - s4 = align16(s4); - ptr = mempAlloc(align16(s4), MEMPOOL_STAGE); + s4 = ALIGN16(s4); + ptr = mempAlloc(ALIGN16(s4), MEMPOOL_STAGE); var80061430 = (void *)ptr; ptr += sp38; @@ -1573,8 +1646,6 @@ static void func0f004c6c(void) s4 += sp38; s4 += g_NumPortals * sp34; - align16((s32)s4); - ptr = mempGetNextStageAllocation(); var8009cad0 = (void *)ptr; ptr += sp44; diff --git a/src/game/explosions.c b/src/game/explosions.c index 7c3e29c4a..71b8b0163 100644 --- a/src/game/explosions.c +++ b/src/game/explosions.c @@ -610,6 +610,17 @@ static bool explosionOverlapsProp(struct explosion *exp, struct prop *prop, stru return result; } +static bool func0f1773c8(struct coord *a, struct coord *b) +{ + if (a->x < b->x && -b->x < a->x + && a->y < b->y && -b->y < a->y + && a->z < b->z && -b->z < a->z) { + return true; + } + + return false; +} + static void explosionInflictDamage(struct prop *expprop) { s32 stack; diff --git a/src/game/filelist.c b/src/game/filelist.c index f5eaee2c9..efaa639e7 100644 --- a/src/game/filelist.c +++ b/src/game/filelist.c @@ -34,7 +34,7 @@ void func0f110bf8(void) for (i = 0; i < 4; i++) { if (g_FileLists[i] != NULL) { - memaFree(g_FileLists[i], align16(sizeof(struct filelist))); + memaFree(g_FileLists[i], ALIGN16(sizeof(struct filelist))); g_FileLists[i] = NULL; } } @@ -46,8 +46,8 @@ void func0f110bf8(void) void filelistCreate(s32 listnum, u8 filetype) { if (g_FileLists[listnum] == NULL) { - bgGarbageCollectRooms(align16(sizeof(struct filelist)), 1); - g_FileLists[listnum] = memaAlloc(align16(sizeof(struct filelist))); + bgGarbageCollectRooms(ALIGN16(sizeof(struct filelist)), 1); + g_FileLists[listnum] = memaAlloc(ALIGN16(sizeof(struct filelist))); } g_FileLists[listnum]->timeuntilupdate = 1; diff --git a/src/game/filemgr.c b/src/game/filemgr.c index 1f62bc7bc..dd237d930 100644 --- a/src/game/filemgr.c +++ b/src/game/filemgr.c @@ -405,7 +405,7 @@ static void func0f10898c(void) case FILEOP_READ_GAME: case FILEOP_READ_MPSETUP: case FILEOP_READ_MPPLAYER: - memaFree(g_Menus[g_MpPlayerNum].fm.unke44, align16(g_FileTypeSizes[g_Menus[g_MpPlayerNum].fm.filetypeplusone - 1])); + memaFree(g_Menus[g_MpPlayerNum].fm.unke44, ALIGN16(g_FileTypeSizes[g_Menus[g_MpPlayerNum].fm.filetypeplusone - 1])); break; case FILEOP_LOAD_GAME: case FILEOP_LOAD_MPPLAYER: @@ -430,7 +430,7 @@ static void filemgrHandleSuccess(void) case FILEOP_WRITE_MPSETUP: case FILEOP_WRITE_MPPLAYER: memaFree(g_Menus[g_MpPlayerNum].fm.unke44, - align16(g_FileTypeSizes[g_Menus[g_MpPlayerNum].fm.filetypeplusone - 1])); + ALIGN16(g_FileTypeSizes[g_Menus[g_MpPlayerNum].fm.filetypeplusone - 1])); break; case FILEOP_LOAD_GAME: g_Vars.bossfileid = g_Menus[g_MpPlayerNum].fm.fileid; @@ -1023,7 +1023,7 @@ static void func0f1097d0(s32 device) var800a21e8.fileid = g_FileLists[0]->deviceguids[device].fileid; var800a21e8.deviceserial = g_FileLists[0]->deviceguids[device].deviceserial; - thing = memaAlloc(align16(g_FileTypeSizes[g_Menus[g_MpPlayerNum].fm.filetypeplusone - 1])); + thing = memaAlloc(ALIGN16(g_FileTypeSizes[g_Menus[g_MpPlayerNum].fm.filetypeplusone - 1])); if (thing) { filemgrSaveOrLoad(&g_FilemgrFileToCopy, g_Menus[g_MpPlayerNum].fm.filetypeplusone + 103, (s32) thing); diff --git a/src/game/gfxreplace.c b/src/game/gfxreplace.c deleted file mode 100644 index 04e850798..000000000 --- a/src/game/gfxreplace.c +++ /dev/null @@ -1,290 +0,0 @@ -#include -#include "constants.h" -#include "game/tex.h" -#include "game/bg.h" -#include "game/gfxreplace.h" -#include "bss.h" -#include "lib/vi.h" -#include "data.h" -#include "types.h" - -Gfx gbi_26a40[] = { - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), - gsDPSetCombineLERP(TEXEL1, 0, SCALE, 0, TEXEL1, 0, PRIM_LOD_FRAC, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), - 0, -}; - -Gfx gbi_26a58[] = { - gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_OPA_SURF2), - gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), - gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_OPA_TERR2), - gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_TERR2), - gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_OPA_DECAL2), - gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_DECAL2), - gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_DECAL2), - gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), - gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_SURF2), - gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), - gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_TEX_EDGE2), - gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), - gsDPSetRenderMode(G_RM_PASS, G_RM_AA_OPA_SURF2), - gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_OPA_SURF2), - gsDPSetRenderMode(G_RM_PASS, G_RM_AA_OPA_TERR2), - gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_OPA_TERR2), - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), - gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), - gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), - gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), - gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), - gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), - gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), - gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), - gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), - gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2), - gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), - gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), - gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), - 0, -}; - -Gfx gbi_26b90[] = { - gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_DECAL2), - gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), - gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_SURF2), - gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), - gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_TEX_EDGE2), - gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), - gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), - gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), - gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), - gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), - gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), - gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), - gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), - gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), - gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2), - gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), - gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), - gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), - 0, -}; - -Gfx gbi_26c78[] = { - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), - gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), - gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), - gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), - gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), - gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), - gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), - gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), - gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), - gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2), - gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), - gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), - gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), - 0, -}; - -Gfx gbi_26d20[] = { - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), - gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), - gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), - gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), - gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, COMBINED, 0, ENVIRONMENT, 0), - gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), - gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0), - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), - gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), - gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), - gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2), - gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), - gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), - gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), - 0, -}; - -Gfx gbi_26dc8[] = { - gsDPSetRenderMode(G_RM_AA_ZB_XLU_SURF, G_RM_AA_ZB_XLU_SURF2), - gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2), - gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_SURF2), - gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_TEX_EDGE2), - 0, -}; - -Gfx gbi_26df0[] = { - gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2), - gsDPSetRenderMode(G_RM_AA_ZB_OPA_TERR, G_RM_AA_ZB_OPA_TERR2), - gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_OPA_SURF2), - gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_OPA_TERR2), - 0, -}; - -Gfx gbi_26e18[] = { - gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_SURF2), - gsDPSetRenderMode(G_RM_PASS, G_RM_ZB_CLD_SURF2), - 0, -}; - -Gfx gbi_26e30[] = { - gsDPSetCycleType(G_CYC_1CYCLE), - gsDPSetCycleType(G_CYC_2CYCLE), - gsDPSetRenderMode(G_RM_AA_OPA_TERR, G_RM_AA_OPA_TERR2), - gsDPSetRenderMode(GBL_c1(G_BL_CLR_IN, G_BL_A_SHADE, G_BL_CLR_FOG, G_BL_1MA), G_RM_AA_OPA_TERR2), - gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), - gsDPSetCombineMode(G_CC_MODULATEI, G_CC_PASS2), - 0, -}; - -Gfx gbi_26e68[] = { - gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), - gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE, TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE), - gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), - gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0), - gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), - gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE, TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE), - gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), - gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0), - gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), - gsDPSetCombineLERP(1, 0, SCALE, 0, 0, 0, 0, SHADE, 1, 0, SCALE, 0, 0, 0, 0, SHADE), - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, SHADE), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, SHADE), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), - gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2), - gsDPSetCombineLERP(1, 0, SCALE, 0, 0, 0, 0, SHADE, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), - 0, -}; - -Gfx gbi_26f50[] = { - gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE, TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE), - gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), - gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0), - gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), - gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE, TEXEL0, 0, SCALE, 0, 0, 0, 0, SHADE), - gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), - gsDPSetCombineLERP(TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, SCALE, 0, TEXEL0, 0, SHADE, 0), - gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), - gsDPSetCombineLERP(1, 0, SCALE, 0, 0, 0, 0, SHADE, 1, 0, SCALE, 0, 0, 0, 0, SHADE), - gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEI2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), - gsDPSetCombineMode(G_CC_TRILERP, G_CC_MODULATEIA2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, SHADE), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, 0, 0, 0, SHADE), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, SHADE), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SCALE, 0, COMBINED, 0, SHADE, 0), - gsDPSetCombineLERP(TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, 1, 0, TEXEL1, 0, COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0), - gsDPSetCombineLERP(1, 0, SCALE, 0, 0, 0, 0, SHADE, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), - gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2), - 0, -}; - -Gfx *var80081018[] = { - gbi_26a40, - gbi_26a58, - gbi_26dc8, - gbi_26df0, - gbi_26e18, - gbi_26b90, - gbi_26c78, - gbi_26d20, - gbi_26e30, - gbi_26e68, - gbi_26f50, -}; - -static void gfxReplaceGbiCommands(Gfx *startgdl, Gfx *endgdl, s32 type) -{ - Gfx *gdl = startgdl; - - while ((endgdl && gdl < endgdl) || (!endgdl && *(s8 *)gdl != G_ENDDL)) { - Gfx *src = var80081018[type]; - - while (src->words.w0 != 0) { - if (src->words.w0 == gdl->words.w0 && src->words.w1 == gdl->words.w1) { - *gdl = src[1]; - } - - src += 2; - } - - gdl++; - } -} - -void gfxReplaceGbiCommandsRecursively(struct roomblock *block, s32 type) -{ - if (block->type == ROOMBLOCKTYPE_PARENT); - - while (true) { - if (!block) { - return; - } - - switch (block->type) { - case ROOMBLOCKTYPE_LEAF: - gfxReplaceGbiCommands(block->gdl, NULL, type); - block = block->next; - break; - case ROOMBLOCKTYPE_PARENT: - gfxReplaceGbiCommandsRecursively(block->child, type); - block = block->next; - break; - default: - return; - } - } -} diff --git a/src/game/lv.c b/src/game/lv.c index f329a185e..2a1ef8e56 100644 --- a/src/game/lv.c +++ b/src/game/lv.c @@ -373,7 +373,6 @@ void lvReset(s32 stagenum) } else { s32 i; - utilsReset(); casingsReset(); for (i = 0; i < PLAYERCOUNT(); i++) { diff --git a/src/game/menugfx.c b/src/game/menugfx.c index 808f2ce41..23a26bbec 100644 --- a/src/game/menugfx.c +++ b/src/game/menugfx.c @@ -1185,7 +1185,7 @@ void menugfxFreeParticles(void) u32 menugfxGetParticleArraySize(void) { - return align16(NUM_SUCCESS_PARTICLES * sizeof(struct coord)); + return ALIGN16(NUM_SUCCESS_PARTICLES * sizeof(struct coord)); } /** diff --git a/src/game/pak.c b/src/game/pak.c index 77cb3b330..4f656a605 100644 --- a/src/game/pak.c +++ b/src/game/pak.c @@ -5,7 +5,6 @@ #include "game/camdraw.h" #include "game/filelist.h" #include "game/menu.h" -#include "game/crc.h" #include "game/gamefile.h" #include "game/pak.h" #include "game/utils.h" @@ -186,7 +185,7 @@ static u32 pakGetBlockSize(s8 device) static u32 pakAlign(s8 device, u32 size) { - return pakGetBlockSize(device) == 0x20 ? align32(size) : align16(size); + return pakGetBlockSize(device) == 0x20 ? ALIGN32(size) : ALIGN16(size); } static s32 pakGetAlignedFileLenByBodyLen(s8 device, u32 bodylen) @@ -970,7 +969,24 @@ void paksInit(void) static void pakCalculateChecksum(u8 *start, u8 *end, u16 *checksum) { - crcCalculateU16Pair(start, end, checksum); + u8 *ptr; + u32 salt = 0; + u64 seed = 0x8f809f473108b3c1; + u32 sum1 = 0; + u32 sum2 = 0; + + for (ptr = start; ptr < end; ptr++, salt += 7) { + seed += *ptr << (salt & 0x0f); + sum1 ^= rngRotateSeed(&seed); + } + + for (ptr = end - 1; ptr >= start; ptr--, salt += 3) { + seed += *ptr << (salt & 0x0f); + sum2 ^= rngRotateSeed(&seed); + } + + checksum[0] = sum1 & 0xffff; + checksum[1] = sum2 & 0xffff; } static s32 _pakReadBodyAtGuid(s8 device, s32 fileid, u8 *body, s32 arg3) @@ -1663,10 +1679,7 @@ static void pak0f11a32c(s8 device, u8 arg1) if ((g_Paks[device].unk014 & 1) && g_Paks[device].headercache == NULL) { g_Paks[device].headercachecount = 0; - g_Paks[device].headercache = mempAlloc(align32(sizeof(struct pakheadercache) * MAX_HEADERCACHE_ENTRIES), MEMPOOL_PERMANENT); - - // Perhaps using the strings at var7f1b4318 through var7f1b43ac? - align32(sizeof(struct pakheadercache) * MAX_HEADERCACHE_ENTRIES); + g_Paks[device].headercache = mempAlloc(ALIGN32(sizeof(struct pakheadercache) * MAX_HEADERCACHE_ENTRIES), MEMPOOL_PERMANENT); } } } diff --git a/src/game/savebuffer.c b/src/game/savebuffer.c index 1c2b98a1e..39a4f998b 100644 --- a/src/game/savebuffer.c +++ b/src/game/savebuffer.c @@ -71,7 +71,7 @@ Gfx *func0f0d479c(Gfx *gdl) gSPMatrix(gdl++, osVirtualToPhysical(mtx1), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); if (var80070f10 == NULL) { - u32 size = align16(sizeof(Vp)); + u32 size = ALIGN16(sizeof(Vp)); var80070f10 = gfxAllocate(size); if (var80070f10 != NULL) { diff --git a/src/game/splat.c b/src/game/splat.c index 33955d03d..6e76b2203 100644 --- a/src/game/splat.c +++ b/src/game/splat.c @@ -45,6 +45,15 @@ static s32 splatsCreate(s32 qty, f32 arg1, struct prop *prop, struct shotdata *s static bool splat0f149274(f32 arg0, struct prop *prop, struct shotdata *shotdata, f32 arg3, bool isskedar, s32 arg5, s32 arg6, struct chrdata *chr, s32 arg8); static void splat0f14986c(struct splatdata *splatdata); +static f32 coordsGetDistance(struct coord *a, struct coord *b) +{ + f32 xdiff = b->x - a->x; + f32 ydiff = b->y - a->y; + f32 zdiff = b->z - a->z; + + return sqrtf(xdiff * xdiff + ydiff * ydiff + zdiff * zdiff); +} + void splatTickChr(struct prop *prop) { struct chrdata *chr = prop->chr; diff --git a/src/game/utils.c b/src/game/utils.c index 412547bf7..be48c141a 100644 --- a/src/game/utils.c +++ b/src/game/utils.c @@ -7,86 +7,15 @@ #include "data.h" #include "types.h" - -void *var800ac0d0; -u8 *var800ac0e8[4]; -u32 var800ac0f8[4]; - -f32 var800845d4 = 0.00001f; -struct coord var800845dc = {0, 0, 0}; -struct coord var800845f4 = {0, 0, 1}; -u8 *var80084610 = NULL; -u8 *var80084614 = NULL; -u8 *var80084618 = NULL; - -u32 align4(u32 arg0) -{ - if (arg0 & 3) { - arg0 = (arg0 & 0xfffffffc) + 4; - } - - return arg0; -} - -u32 align16(u32 arg0) -{ - if (arg0 & 0xf) { - arg0 = (arg0 & 0xfffffff0) + 0x10; - } - - return arg0; -} - -u32 align32(u32 arg0) -{ - if (arg0 & 0x1f) { - arg0 = (arg0 & 0xffffffe0) + 0x20; - } - - return arg0; -} - -void utilsInit(void) -{ - s32 i; - u32 stack; - u32 slotssize = 0x1900; - u32 allocsize; - - var800ac0d0 = mempAlloc(10000, MEMPOOL_8); - - allocsize = align16(0x3900); - var800ac0e8[0] = mempAlloc(allocsize, MEMPOOL_8); - - if (var800ac0e8[0] != NULL) { - for (i = 0; i < 4; i++) { - var800ac0e8[i] = var800ac0e8[0] + ((i * 100) << 4); - } - } else { - for (i = 0; i < 4; i++) { - var800ac0e8[i] = NULL; - } - } - - var80084610 = var800ac0e8[0] + slotssize; - var80084618 = var800ac0e8[0] + allocsize - 1; - var80084614 = var80084610; -} - -void func0f1770ac(struct coord *a, struct coord *b, struct coord *out) -{ - out->x = a->y * b->z - a->z * b->y; - out->y = -(a->x * b->z - a->z * b->x); - out->z = a->x * b->y - a->y * b->x; -} - bool func0f177164(struct coord *arg0, struct coord *arg1) { f32 sqdist = arg0->x * arg0->x + arg0->y * arg0->y + arg0->z * arg0->z; f32 mult; - if (sqdist < var800845d4) { - *arg0 = var800845f4; + if (sqdist < 0.00001f) { + arg0->x = 0; + arg0->y = 0; + arg0->z = 1; return false; } @@ -100,110 +29,6 @@ bool func0f177164(struct coord *arg0, struct coord *arg1) return true; } -bool func0f1773c8(struct coord *a, struct coord *b) -{ - if (a->x < b->x && -b->x < a->x - && a->y < b->y && -b->y < a->y - && a->z < b->z && -b->z < a->z) { - return true; - } - - return false; -} - -f32 coordsGetDistance(struct coord *a, struct coord *b) -{ - f32 xdiff = b->x - a->x; - f32 ydiff = b->y - a->y; - f32 zdiff = b->z - a->z; - - return sqrtf(xdiff * xdiff + ydiff * ydiff + zdiff * zdiff); -} - -void utilsReset(void) -{ - s32 i; - - for (i = 0; i < 4; i++) { - var800ac0f8[i] = 0; - } -} - -s32 func0f177a54(u8 *arg0, s32 arg1, u8 *arg2, s32 arg3) -{ - s32 i = 0; - s32 v1 = 0; - s32 t0 = 0; - - for (; i < arg1; i++) { - s32 index = i * arg3; - - if (arg0[index] != 0) { - u8 *ptr = &arg0[index]; - - if (i != 0 && ptr[-arg3] == 0) { - arg2[v1++] = 0; - - if (t0 == 255) { - arg2[v1++] = 200; - arg2[v1++] = 0; - t0 -= 200; - } else { - while (t0 > 255) { - arg2[v1++] = 255; - t0 -= 255; - } - } - - arg2[v1++] = t0; - t0 = 0; - } - - arg2[v1++] = arg0[index]; - } else { - t0++; - } - } - - arg2[v1++] = 0; - arg2[v1++] = 0; - - return v1; -} - -s32 func0f177c8c(u8 *arg0, s32 *arg1, s32 *arg2) -{ - s32 result; - - if (*arg1 == 0) { - *arg2 = -1; - } - - while (arg0[*arg1] == 0) { - *arg1 += 1; - - if (arg0[*arg1]) { - while (arg0[*arg1] == 255) { - *arg2 += 255; - *arg1 += 1; - } - - *arg2 += arg0[*arg1]; - *arg1 += 1; - } else { - return -1; - } - } - - *arg2 += 1; - - result = arg0[*arg1]; - - *arg1 += 1; - - return result; -} - /** * randomfrac() returns a random float in the range 0.0 to 1.0. * diff --git a/src/game/wallhit.c b/src/game/wallhit.c index 88b0f3de1..785475339 100644 --- a/src/game/wallhit.c +++ b/src/game/wallhit.c @@ -540,9 +540,9 @@ void wallhitsTick(void) wallhit->vertices2 = gfxAllocateVertices(4); - midx = var800845dc.x; \ - midy = var800845dc.y; \ - midz = var800845dc.z; + midx = 0; + midy = 0; + midz = 0; // Copy the vertices into a float array for (j = 0; j < 4; j++) { @@ -647,6 +647,13 @@ void wallhitCreate(struct coord *relpos, struct coord *arg1, struct coord *arg2, 0, 0, 0, xlu); } +static void func0f1770ac(struct coord *a, struct coord *b, struct coord *out) +{ + out->x = a->y * b->z - a->z * b->y; + out->y = -(a->x * b->z - a->z * b->x); + out->z = a->x * b->y - a->y * b->x; +} + void wallhitCreateWith20Args(struct coord *relpos, struct coord *arg1, struct coord *arg2, s16 arg3[3], s16 arg4[3], s16 texnum, s16 room, struct prop *objprop, struct prop *chrprop, s8 mtxindex, s8 arg10, struct chrdata *chr, @@ -785,9 +792,9 @@ void wallhitCreateWith20Args(struct coord *relpos, struct coord *arg1, struct co sp1ac.f[1] = relpos->y; sp1ac.f[2] = relpos->z; - xiszero = ABS(arg1->x) < var800845d4 ? true : false; - yiszero = ABS(arg1->y) < var800845d4 ? true : false; - ziszero = ABS(arg1->z) < var800845d4 ? true : false; + xiszero = ABS(arg1->x) < 0.00001f ? true : false; + yiszero = ABS(arg1->y) < 0.00001f ? true : false; + ziszero = ABS(arg1->z) < 0.00001f ? true : false; if (xiszero && ziszero) { sp1f4.x = -1.0f; diff --git a/src/include/constants.h b/src/include/constants.h index 7833fc8c5..122a6e209 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -26,6 +26,7 @@ #define ALIGN4(val) ((((val) + 0x3) | 0x3) ^ 0x3) #define ALIGN8(val) ((((val) + 0x7) | 0x7) ^ 0x7) #define ALIGN16(val) ((((val) + 0xf) | 0xf) ^ 0xf) +#define ALIGN32(val) ((((val) + 0x1f) | 0x1f) ^ 0x1f) #define ALIGN64(val) (((((u32)(val)) + 0x3f) | 0x3f) ^ 0x3f) #define ARRAYCOUNT(a) (s32)(sizeof(a) / sizeof(a[0])) #define CHRRACE(chr) (chr ? chr->race : RACE_HUMAN) diff --git a/src/include/data.h b/src/include/data.h index 9b83a215d..a33bc5576 100644 --- a/src/include/data.h +++ b/src/include/data.h @@ -492,7 +492,6 @@ extern s32 g_LanguageId; #endif extern struct surfacetype *g_SurfaceTypes[15]; extern u16 *var800844f0; -extern f32 var800845d4; extern struct coord var800845dc; extern struct menudialogdef g_2PMissionInventoryHMenuDialog; extern struct menudialogdef g_2PMissionInventoryVMenuDialog; diff --git a/src/include/game/crc.h b/src/include/game/crc.h deleted file mode 100644 index ebd786436..000000000 --- a/src/include/game/crc.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef IN_GAME_CRC_H -#define IN_GAME_CRC_H -#include -#include "data.h" -#include "types.h" - -void crcCalculateU32Pair(u8 *start, u8 *end, u32 *checksum); -void crcCalculateU16Pair(u8 *start, u8 *end, u16 *checksum); - -#endif diff --git a/src/include/game/gfxreplace.h b/src/include/game/gfxreplace.h deleted file mode 100644 index 387c24725..000000000 --- a/src/include/game/gfxreplace.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef IN_GAME_GFXREPLACE_H -#define IN_GAME_GFXREPLACE_H -#include -#include "data.h" -#include "types.h" - -void gfxReplaceGbiCommandsRecursively(struct roomblock *arg0, s32 type); - -#endif diff --git a/src/include/game/utils.h b/src/include/game/utils.h index f7eeb1362..0b6a33da9 100644 --- a/src/include/game/utils.h +++ b/src/include/game/utils.h @@ -4,20 +4,6 @@ #include "data.h" #include "types.h" -void func0f176d70(s32 arg0); -u32 align4(u32 arg0); -u32 align16(u32 arg0); -u32 align32(u32 arg0); -void utilsInit(void); -void func0f1770ac(struct coord *a, struct coord *b, struct coord *out); bool func0f177164(struct coord *arg0, struct coord *arg1); -bool func0f1773c8(struct coord *a, struct coord *b); -f32 coordsGetDistance(struct coord *a, struct coord *b); -f32 func0f1776cc(struct coord *a, struct coord *b, struct coord *c); -bool func0f17776c(struct coord *a, struct coord *b, f32 mult, struct coord *out); -void utilsReset(void); -s32 func0f177a54(u8 *arg0, s32 arg1, u8 *arg2, s32 arg3); -s32 func0f177bb4(u8 *arg0, s32 *arg1, s32 *arg2); -s32 func0f177c8c(u8 *arg0, s32 *arg1, s32 *roomnum); #endif diff --git a/src/include/lib/collision.h b/src/include/lib/collision.h index a96014efa..38f42c8ea 100644 --- a/src/include/lib/collision.h +++ b/src/include/lib/collision.h @@ -4,9 +4,6 @@ #include "data.h" #include "types.h" -f32 func0f1577f0(f32 arg0[2], f32 arg1[2], f32 arg2[2], f32 arg3[2]); -f32 func0f1579cc(struct widthxz *arg0, struct xz *arg1, struct xz *arg2, struct xz *arg3); - f32 cd00024e40(void); void cdGetEdge(struct coord *pos1, struct coord *pos2); f32 cd00024e98(void); diff --git a/src/lib/collision.c b/src/lib/collision.c index 544a4d9ed..ac878480b 100644 --- a/src/lib/collision.c +++ b/src/lib/collision.c @@ -51,6 +51,172 @@ s32 var8005f030 = 0; bool g_CdHasSavedBlock = false; s32 var8005f038 = 0; +static f32 func0f1577f0(f32 arg0[2], f32 arg1[2], f32 arg2[2], f32 arg3[2]) +{ + f32 mult1 = arg2[1] - arg3[1]; + f32 mult2 = arg3[0] - arg2[0]; + f32 a = (arg2[1] - arg0[1]) * mult2 + (arg2[0] - arg0[0]) * mult1; + f32 b = (arg1[1] - arg0[1]) * mult2 + (arg1[0] - arg0[0]) * mult1; + + if (b == 0.0f) { + return 1.0f; + } + + a /= b; + + if (a < 0.0f || a > 1.0f) { + return 1.0f; + } + + return a; +} + +static f32 func0f1578c8(struct widthxz *arg0, struct xz *arg1, struct xz *arg2) +{ + f32 value2; + f32 value1; + f32 sp24; + f32 mult1; + f32 mult2; + + mult1 = arg2->x - arg0->x; + mult2 = arg2->z - arg0->z; + + value1 = mult2 * arg1->x - mult1 * arg1->z; + value2 = mult1 * arg1->x + mult2 * arg1->z; + + sp24 = (arg0->width - value1) * (arg0->width + value1); + + if (sp24 < 0.0f) { + return MAXFLOAT; + } + + value2 -= sqrtf(sp24); + + if (value2 < 0.0f) { + if (value2 * value2 + value1 * value1 <= arg0->width * arg0->width) { + return 0.0f; + } + + return MAXFLOAT; + } + + return value2; +} + +static f32 func0f1579cc(struct widthxz *arg0, struct xz *arg1, struct xz *arg2, struct xz *arg3) +{ + f32 spac; + f32 spa8; + struct xz spa0; + f32 sp9c; + f32 sp98; + f32 sp94; + f32 sp90; + f32 sp8c; + f32 sp88; + f32 sp84; + f32 sp80; + f32 sp7c; + f32 sp78; + f32 sp74; + f32 sp70; + f32 sp6c; + f32 sp68; + f32 sp64; + f32 sp60; + f32 sp5c; + f32 sp58; + f32 sp54; + + spac = sqrtf(arg3->x * arg3->x + arg3->z * arg3->z); + + if (spac == 0.0f) { + return 1.0f; + } + + spa0.x = arg3->x * (1.0f / spac); + spa0.z = arg3->z * (1.0f / spac); + + sp98 = arg2->x - arg1->x; + sp9c = arg2->z - arg1->z; + + sp94 = sqrtf(sp98 * sp98 + sp9c * sp9c); + + if (sp94 == 0.0f) { + goto handlezero; + } + + sp90 = 1.0f / sp94; + sp88 = sp9c * sp90; + sp8c = -sp98 * sp90; + + sp84 = arg0->width * sp88; + sp80 = arg0->width * sp8c; + + if (sp84 * (arg0->x - arg1->x) + sp80 * (arg0->z - arg1->z) < 0.0f) { + sp84 = -sp84; + sp80 = -sp80; + } + + sp78 = arg1->x + sp84; + sp7c = arg1->z + sp80; + sp70 = arg2->x + sp84; + sp74 = arg2->z + sp80; + + sp68 = (arg3->z * sp78) - (sp7c * arg3->x); + sp6c = (arg0->x * arg3->z) - (arg0->z * arg3->x); + sp64 = (arg3->z * sp70) - (sp74 * arg3->x); + + if (sp64 < sp68) { + struct xz *tmp; + + spa8 = sp68; + sp68 = sp64; + sp64 = spa8; + + tmp = arg1; + arg1 = arg2; + arg2 = tmp; + + sp88 = -sp88; + sp8c = -sp8c; + } + + if (sp64 == sp68) { + sp60 = func0f1578c8(arg0, &spa0, arg1); + sp5c = func0f1578c8(arg0, &spa0, arg2); + + if (sp5c < sp60) { + sp60 = sp5c; + } + } else if (sp64 < sp6c) { +handlezero: + sp60 = func0f1578c8(arg0, &spa0, arg2); + } else if (sp6c < sp68) { + sp60 = func0f1578c8(arg0, &spa0, arg1); + } else { + sp58 = sp88 * (arg0->x - arg1->x) + sp8c * (arg0->z - arg1->z); + sp54 = sp88 * (arg0->x + arg3->x - arg1->x) + sp8c * (arg0->z + arg3->z - arg1->z); + + if (sp58 == sp54) { + return 1.0f; + } + + sp60 = (sp58 - arg0->width) * spac / (sp58 - sp54); + } + + if (spac < sp60) { + return 1.0f; + } + + if (sp60 < 0.0f) { + return 0.0f; + } + + return (f32) sp60 * (1.0f / spac); +} + f32 cd00024e40(void) { return var8009a8f0; diff --git a/src/lib/main.c b/src/lib/main.c index aae532981..4c1803c3c 100644 --- a/src/lib/main.c +++ b/src/lib/main.c @@ -354,7 +354,6 @@ static void mainInit(void) mempResetPool(MEMPOOL_PERMANENT); challengesInit(); - utilsInit(); texInit(); lvInit(); cheatsInit();