From 6b8be33a5bc5f26c425095d8c3d0b9caa7e91ae6 Mon Sep 17 00:00:00 2001 From: coco875 <59367621+coco875@users.noreply.github.com> Date: Tue, 16 Dec 2025 17:46:06 +0100 Subject: [PATCH] fix Ressource name (#596) * fix Ressource name * add a fallback * use the correct name for dk jungle * use the correct name for macos intel CI * add print --- .github/workflows/main.yml | 2 +- src/engine/RaceManager.cpp | 5 +- src/engine/TrackBrowser.cpp | 4 + src/engine/tracks/BansheeBoardwalk.cpp | 1 - src/engine/tracks/BigDonut.cpp | 1 + src/engine/tracks/BlockFort.cpp | 1 + src/engine/tracks/BowsersCastle.cpp | 1 - src/engine/tracks/DKJungle.cpp | 1 + src/engine/tracks/DoubleDeck.cpp | 1 + src/engine/tracks/FrappeSnowland.cpp | 1 + src/engine/tracks/KalimariDesert.cpp | 1 + src/engine/tracks/MooMooFarm.cpp | 1 + src/engine/tracks/RainbowRoad.cpp | 1 + src/engine/tracks/RoyalRaceway.cpp | 1 + src/engine/tracks/SherbetLand.cpp | 1 + src/engine/tracks/Skyscraper.cpp | 1 + src/engine/tracks/TestTrack.cpp | 1 - src/engine/tracks/ToadsTurnpike.cpp | 1 + src/engine/tracks/WarioStadium.cpp | 1 + src/engine/tracks/YoshiValley.cpp | 1 + src/enhancements/collision_viewer.c | 571 +++++++++++++------------ src/main.h | 2 +- src/port/Game.cpp | 6 + 23 files changed, 315 insertions(+), 292 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 05f9bce1f..c57009a83 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -126,7 +126,7 @@ jobs: build-macos-intel: needs: generate-port-o2r - runs-on: macOS-latest-intel + runs-on: macos-15-intel strategy: matrix: config: [Release, Debug] diff --git a/src/engine/RaceManager.cpp b/src/engine/RaceManager.cpp index c186add5e..03ad157e3 100644 --- a/src/engine/RaceManager.cpp +++ b/src/engine/RaceManager.cpp @@ -52,9 +52,10 @@ extern "C" void add_triangle_to_collision_mesh(Vtx* vtx1, Vtx* vtx2, Vtx* vtx3, } void RaceManager::Load() { - if (GetWorld()->GetTrack()) { + auto* track = GetWorld()->GetTrack(); + if (track) { mirroredVtxCache.clear(); - GetWorld()->GetTrack()->Load(); + track->Load(); } else { printf("[RaceManager] [Load] Track was nullptr\n"); } diff --git a/src/engine/TrackBrowser.cpp b/src/engine/TrackBrowser.cpp index 7fd5dddad..184b416b1 100644 --- a/src/engine/TrackBrowser.cpp +++ b/src/engine/TrackBrowser.cpp @@ -26,6 +26,10 @@ void TrackBrowser::FindCustomTracks() { TrackInfo info; info.Path = dir; TrackEditor::LoadTrackInfo(info, archive, sceneFile); + if (info.ResourceName.empty()) { + printf("[TrackBrowser] Track has invalid resource name; expected format: author:mod_name"); + info.ResourceName = std::string("mods:") + name; + } printf("[TrackBrowser] Added custom track %s\n", info.Name.c_str()); gTrackRegistry.Add(info, [info, archive]() { auto track = std::make_unique(); diff --git a/src/engine/tracks/BansheeBoardwalk.cpp b/src/engine/tracks/BansheeBoardwalk.cpp index 337dc14cd..4614f6852 100644 --- a/src/engine/tracks/BansheeBoardwalk.cpp +++ b/src/engine/tracks/BansheeBoardwalk.cpp @@ -56,7 +56,6 @@ BansheeBoardwalk::BansheeBoardwalk() { ResizeMinimap(&Props.Minimap); ResourceName = "mk:banshee_boardwalk"; - Props.SetText(Props.Name, "banshee boardwalk", sizeof(Props.Name)); Props.SetText(Props.DebugName, "ghost", sizeof(Props.DebugName)); Props.SetText(Props.TrackLength, "747m", sizeof(Props.TrackLength)); diff --git a/src/engine/tracks/BigDonut.cpp b/src/engine/tracks/BigDonut.cpp index c511a39ec..88b9760c9 100644 --- a/src/engine/tracks/BigDonut.cpp +++ b/src/engine/tracks/BigDonut.cpp @@ -45,6 +45,7 @@ BigDonut::BigDonut() { Props.Minimap.FinishlineY = 0; ResizeMinimap(&Props.Minimap); + ResourceName = "mk:big_donut"; Props.SetText(Props.Name, "big donut", sizeof(Props.Name)); Props.SetText(Props.DebugName, "doughnut", sizeof(Props.DebugName)); Props.SetText(Props.TrackLength, "", sizeof(Props.TrackLength)); diff --git a/src/engine/tracks/BlockFort.cpp b/src/engine/tracks/BlockFort.cpp index 1bb7d3394..6244e3ea2 100644 --- a/src/engine/tracks/BlockFort.cpp +++ b/src/engine/tracks/BlockFort.cpp @@ -47,6 +47,7 @@ BlockFort::BlockFort() { Props.Minimap.FinishlineY = 0; ResizeMinimap(&Props.Minimap); + ResourceName = "mk:block_fort"; Props.SetText(Props.Name, "block fort", sizeof(Props.Name)); Props.SetText(Props.DebugName, "block", sizeof(Props.DebugName)); Props.SetText(Props.TrackLength, "", sizeof(Props.TrackLength)); diff --git a/src/engine/tracks/BowsersCastle.cpp b/src/engine/tracks/BowsersCastle.cpp index 87b8c3f22..8a5fdf39a 100644 --- a/src/engine/tracks/BowsersCastle.cpp +++ b/src/engine/tracks/BowsersCastle.cpp @@ -51,7 +51,6 @@ BowsersCastle::BowsersCastle() { ResizeMinimap(&Props.Minimap); ResourceName = "mk:bowsers_castle"; - Props.SetText(Props.Name, "bowser's castle", sizeof(Props.Name)); Props.SetText(Props.DebugName, "castle", sizeof(Props.DebugName)); Props.SetText(Props.TrackLength, "777m", sizeof(Props.TrackLength)); diff --git a/src/engine/tracks/DKJungle.cpp b/src/engine/tracks/DKJungle.cpp index 75c93c844..11e8cf6c1 100644 --- a/src/engine/tracks/DKJungle.cpp +++ b/src/engine/tracks/DKJungle.cpp @@ -53,6 +53,7 @@ DKJungle::DKJungle() { Props.Minimap.FinishlineY = 0; ResizeMinimap(&Props.Minimap); + ResourceName = "mk:dk_jungle"; Props.SetText(Props.Name, "d.k.'s jungle parkway", sizeof(Props.Name)); Props.SetText(Props.DebugName, "jungle", sizeof(Props.DebugName)); Props.SetText(Props.TrackLength, "893m", sizeof(Props.TrackLength)); diff --git a/src/engine/tracks/DoubleDeck.cpp b/src/engine/tracks/DoubleDeck.cpp index 001f943aa..04d97d22d 100644 --- a/src/engine/tracks/DoubleDeck.cpp +++ b/src/engine/tracks/DoubleDeck.cpp @@ -46,6 +46,7 @@ DoubleDeck::DoubleDeck() { Props.Minimap.FinishlineY = 0; ResizeMinimap(&Props.Minimap); + ResourceName = "mk:double_deck"; Props.SetText(Props.Name, "double deck", sizeof(Props.Name)); Props.SetText(Props.DebugName, "deck", sizeof(Props.DebugName)); Props.SetText(Props.TrackLength, "", sizeof(Props.TrackLength)); diff --git a/src/engine/tracks/FrappeSnowland.cpp b/src/engine/tracks/FrappeSnowland.cpp index 7aa8562db..338a2be2a 100644 --- a/src/engine/tracks/FrappeSnowland.cpp +++ b/src/engine/tracks/FrappeSnowland.cpp @@ -53,6 +53,7 @@ FrappeSnowland::FrappeSnowland() { Props.Minimap.Colour = {72, 100, 255}; ResizeMinimap(&Props.Minimap); + ResourceName = "mk:frappe_snowland"; Props.SetText(Props.Name, "frappe snowland", sizeof(Props.Name)); Props.SetText(Props.DebugName, "snow", sizeof(Props.DebugName)); Props.SetText(Props.TrackLength, "734m", sizeof(Props.TrackLength)); diff --git a/src/engine/tracks/KalimariDesert.cpp b/src/engine/tracks/KalimariDesert.cpp index cec9c8405..c6477cabc 100644 --- a/src/engine/tracks/KalimariDesert.cpp +++ b/src/engine/tracks/KalimariDesert.cpp @@ -49,6 +49,7 @@ KalimariDesert::KalimariDesert() { Props.Minimap.FinishlineY = 4.0; ResizeMinimap(&Props.Minimap); + ResourceName = "mk:kalimari_desert"; Props.SetText(Props.Name, "kalimari desert", sizeof(Props.Name)); Props.SetText(Props.DebugName, "desert", sizeof(Props.DebugName)); Props.SetText(Props.TrackLength, "753m", sizeof(Props.TrackLength)); diff --git a/src/engine/tracks/MooMooFarm.cpp b/src/engine/tracks/MooMooFarm.cpp index ef59dac7e..7d2f27b4d 100644 --- a/src/engine/tracks/MooMooFarm.cpp +++ b/src/engine/tracks/MooMooFarm.cpp @@ -51,6 +51,7 @@ MooMooFarm::MooMooFarm() { Props.Minimap.FinishlineY = 0; ResizeMinimap(&Props.Minimap); + ResourceName = "mk:moo_moo_farm"; Props.SetText(Props.Name, "moo moo farm", sizeof(Props.Name)); Props.SetText(Props.DebugName, "farm", sizeof(Props.DebugName)); Props.SetText(Props.TrackLength, "527m", sizeof(Props.TrackLength)); diff --git a/src/engine/tracks/RainbowRoad.cpp b/src/engine/tracks/RainbowRoad.cpp index 54239c3bc..83ca7239c 100644 --- a/src/engine/tracks/RainbowRoad.cpp +++ b/src/engine/tracks/RainbowRoad.cpp @@ -47,6 +47,7 @@ RainbowRoad::RainbowRoad() { Props.Minimap.FinishlineY = 0; ResizeMinimap(&Props.Minimap); + ResourceName = "mk:rainbow_road"; Props.SetText(Props.Name, "rainbow road", sizeof(Props.Name)); Props.SetText(Props.DebugName, "rainbow", sizeof(Props.DebugName)); Props.SetText(Props.TrackLength, "2000m", sizeof(Props.TrackLength)); diff --git a/src/engine/tracks/RoyalRaceway.cpp b/src/engine/tracks/RoyalRaceway.cpp index 5c8336f89..510518e5e 100644 --- a/src/engine/tracks/RoyalRaceway.cpp +++ b/src/engine/tracks/RoyalRaceway.cpp @@ -48,6 +48,7 @@ RoyalRaceway::RoyalRaceway() { Props.Minimap.FinishlineY = 0; ResizeMinimap(&Props.Minimap); + ResourceName = "mk:royal_raceway"; Props.SetText(Props.Name, "royal raceway", sizeof(Props.Name)); Props.SetText(Props.DebugName, "p circuit", sizeof(Props.DebugName)); Props.SetText(Props.TrackLength, "1025m", sizeof(Props.TrackLength)); diff --git a/src/engine/tracks/SherbetLand.cpp b/src/engine/tracks/SherbetLand.cpp index 2223f8eb9..29b2935c8 100644 --- a/src/engine/tracks/SherbetLand.cpp +++ b/src/engine/tracks/SherbetLand.cpp @@ -50,6 +50,7 @@ SherbetLand::SherbetLand() { Props.Minimap.Colour = {72, 100, 255}; ResizeMinimap(&Props.Minimap); + ResourceName = "mk:sherbet_land"; Props.SetText(Props.Name, "sherbet land", sizeof(Props.Name)); Props.SetText(Props.DebugName, "sherbet", sizeof(Props.DebugName)); Props.SetText(Props.TrackLength, "756m", sizeof(Props.TrackLength)); diff --git a/src/engine/tracks/Skyscraper.cpp b/src/engine/tracks/Skyscraper.cpp index e4d4e215f..9c6a7e831 100644 --- a/src/engine/tracks/Skyscraper.cpp +++ b/src/engine/tracks/Skyscraper.cpp @@ -45,6 +45,7 @@ Skyscraper::Skyscraper() { Props.Minimap.FinishlineY = 0; ResizeMinimap(&Props.Minimap); + ResourceName = "mk:skyscraper"; Props.SetText(Props.Name, "skyscraper", sizeof(Props.Name)); Props.SetText(Props.DebugName, "skyscraper", sizeof(Props.DebugName)); Props.SetText(Props.TrackLength, "", sizeof(Props.TrackLength)); diff --git a/src/engine/tracks/TestTrack.cpp b/src/engine/tracks/TestTrack.cpp index 1df75d0b9..07cfab61e 100644 --- a/src/engine/tracks/TestTrack.cpp +++ b/src/engine/tracks/TestTrack.cpp @@ -72,7 +72,6 @@ TestTrack::TestTrack() { ResizeMinimap(&Props.Minimap); ResourceName = "hm:test_track"; - Props.SetText(Props.Name, "Test Track", sizeof(Props.Name)); Props.SetText(Props.DebugName, "test track", sizeof(Props.DebugName)); Props.SetText(Props.TrackLength, "100m", sizeof(Props.TrackLength)); diff --git a/src/engine/tracks/ToadsTurnpike.cpp b/src/engine/tracks/ToadsTurnpike.cpp index 4a4c9bbcb..f735ba4c3 100644 --- a/src/engine/tracks/ToadsTurnpike.cpp +++ b/src/engine/tracks/ToadsTurnpike.cpp @@ -55,6 +55,7 @@ ToadsTurnpike::ToadsTurnpike() { Props.Minimap.FinishlineY = 0; ResizeMinimap(&Props.Minimap); + ResourceName = "mk:toads_turnpike"; Props.SetText(Props.Name, "toad's turnpike", sizeof(Props.Name)); Props.SetText(Props.DebugName, "highway", sizeof(Props.DebugName)); Props.SetText(Props.TrackLength, "1036m", sizeof(Props.TrackLength)); diff --git a/src/engine/tracks/WarioStadium.cpp b/src/engine/tracks/WarioStadium.cpp index 0cf42f400..7dbdf2c85 100644 --- a/src/engine/tracks/WarioStadium.cpp +++ b/src/engine/tracks/WarioStadium.cpp @@ -50,6 +50,7 @@ WarioStadium::WarioStadium() { Props.Minimap.FinishlineY = 0; ResizeMinimap(&Props.Minimap); + ResourceName = "mk:wario_stadium"; Props.SetText(Props.Name, "wario stadium", sizeof(Props.Name)); Props.SetText(Props.DebugName, "stadium", sizeof(Props.DebugName)); Props.SetText(Props.TrackLength, "1591m", sizeof(Props.TrackLength)); diff --git a/src/engine/tracks/YoshiValley.cpp b/src/engine/tracks/YoshiValley.cpp index 4d00100d4..831981858 100644 --- a/src/engine/tracks/YoshiValley.cpp +++ b/src/engine/tracks/YoshiValley.cpp @@ -47,6 +47,7 @@ YoshiValley::YoshiValley() { Props.Minimap.FinishlineY = 0; ResizeMinimap(&Props.Minimap); + ResourceName = "mk:yoshi_valley"; Props.SetText(Props.Name, "yoshi valley", sizeof(Props.Name)); Props.SetText(Props.DebugName, "maze", sizeof(Props.DebugName)); Props.SetText(Props.TrackLength, "772m", sizeof(Props.TrackLength)); diff --git a/src/enhancements/collision_viewer.c b/src/enhancements/collision_viewer.c index 0327310e8..d6da29e33 100644 --- a/src/enhancements/collision_viewer.c +++ b/src/enhancements/collision_viewer.c @@ -30,297 +30,298 @@ void render_collision(void) { mtxf_identity(matrix); AddObjectMatrix(matrix, G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH); - + u16 previousSurfaceType = -2; for (size_t i = 0; i < gCollisionMeshCount; i++) { // Load vertices for this tri + if (gCollisionMesh[i].surfaceType != previousSurfaceType) { + previousSurfaceType = gCollisionMesh[i].surfaceType; + switch (gCollisionMesh[i].surfaceType) { + case ASPHALT: - switch (gCollisionMesh[i].surfaceType) { - case ASPHALT: + // gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); + // gDPTileSync(gDisplayListHead++); + // gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, + // G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_MIRROR | G_TX_WRAP, 6, G_TX_NOLOD); + // gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x00FC, 0x007C); + // gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTextureRoad1); + // gDPTileSync(gDisplayListHead++); + // gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, + // G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, + // G_TX_NOLOD); gDPLoadSync(gDisplayListHead++); gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, + // 0, 0, 2047, 128); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); + // gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2); + gCollisionMesh[i].vtx1->v.cn[0] = 50; + gCollisionMesh[i].vtx1->v.cn[1] = 50; + gCollisionMesh[i].vtx1->v.cn[2] = 50; + gCollisionMesh[i].vtx2->v.cn[0] = 50; + gCollisionMesh[i].vtx2->v.cn[1] = 50; + gCollisionMesh[i].vtx2->v.cn[2] = 50; + gCollisionMesh[i].vtx3->v.cn[0] = 50; + gCollisionMesh[i].vtx3->v.cn[1] = 50; + gCollisionMesh[i].vtx3->v.cn[2] = 50; + break; + case DIRT: // gTexture64619C + gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, + G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); + gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture64AF50); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); + gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); + gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); + // gCollisionMesh[i].vtx1->v.cn[0] = 255; + // gCollisionMesh[i].vtx1->v.cn[1] = 248; + // gCollisionMesh[i].vtx1->v.cn[2] = 220; + // gCollisionMesh[i].vtx2->v.cn[0] = 255; + // gCollisionMesh[i].vtx2->v.cn[1] = 248; + // gCollisionMesh[i].vtx2->v.cn[2] = 220; + // gCollisionMesh[i].vtx3->v.cn[0] = 255; + // gCollisionMesh[i].vtx3->v.cn[1] = 248; + // gCollisionMesh[i].vtx3->v.cn[2] = 220; + break; + case SAND: + // gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); + // gDPTileSync(gDisplayListHead++); + // gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, + // G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); + // gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); + // gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture67BEE8); + // gDPTileSync(gDisplayListHead++); + // gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, + // G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, + // G_TX_NOLOD); gDPLoadSync(gDisplayListHead++); gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, + // 0, 1023, 256); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); + // gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2); + // gCollisionMesh[i].vtx1->v.cn[0] = 255; + // gCollisionMesh[i].vtx1->v.cn[1] = 121; + // gCollisionMesh[i].vtx1->v.cn[2] = 25; + // gCollisionMesh[i].vtx2->v.cn[0] = 255; + // gCollisionMesh[i].vtx2->v.cn[1] = 121; + // gCollisionMesh[i].vtx2->v.cn[2] = 25; + // gCollisionMesh[i].vtx3->v.cn[0] = 255; + // gCollisionMesh[i].vtx3->v.cn[1] = 121; + // gCollisionMesh[i].vtx3->v.cn[2] = 25; + break; + case STONE: + gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, + G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); + gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture6528DC); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); + gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); + gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); + // gCollisionMesh[i].vtx1->v.cn[0] = 128; + // gCollisionMesh[i].vtx1->v.cn[1] = 128; + // gCollisionMesh[i].vtx1->v.cn[2] = 128; + // gCollisionMesh[i].vtx2->v.cn[0] = 128; + // gCollisionMesh[i].vtx2->v.cn[1] = 128; + // gCollisionMesh[i].vtx2->v.cn[2] = 128; + // gCollisionMesh[i].vtx3->v.cn[0] = 128; + // gCollisionMesh[i].vtx3->v.cn[1] = 128; + // gCollisionMesh[i].vtx3->v.cn[2] = 128; + break; + case SNOW: + gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, + G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); + gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture677F04); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); + gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); + gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); + break; + case SAND_OFFROAD: + gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, + G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); + gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture67B9B0); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); + gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); + gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); + break; + case GRASS: // gTextureGrass1 - // gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); - // gDPTileSync(gDisplayListHead++); - // gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, - // G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_MIRROR | G_TX_WRAP, 6, G_TX_NOLOD); - // gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x00FC, 0x007C); - // gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTextureRoad1); - // gDPTileSync(gDisplayListHead++); - // gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, - // G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, - // G_TX_NOLOD); gDPLoadSync(gDisplayListHead++); gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, - // 0, 2047, 128); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); - // gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2); - gCollisionMesh[i].vtx1->v.cn[0] = 50; - gCollisionMesh[i].vtx1->v.cn[1] = 50; - gCollisionMesh[i].vtx1->v.cn[2] = 50; - gCollisionMesh[i].vtx2->v.cn[0] = 50; - gCollisionMesh[i].vtx2->v.cn[1] = 50; - gCollisionMesh[i].vtx2->v.cn[2] = 50; - gCollisionMesh[i].vtx3->v.cn[0] = 50; - gCollisionMesh[i].vtx3->v.cn[1] = 50; - gCollisionMesh[i].vtx3->v.cn[2] = 50; - break; - case DIRT: // gTexture64619C - gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); - gDPTileSync(gDisplayListHead++); - gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); - gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); - gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture64AF50); - gDPTileSync(gDisplayListHead++); - gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, - G_TX_NOLOD); - gDPLoadSync(gDisplayListHead++); - gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); - gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); - gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2); - // gCollisionMesh[i].vtx1->v.cn[0] = 255; - // gCollisionMesh[i].vtx1->v.cn[1] = 248; - // gCollisionMesh[i].vtx1->v.cn[2] = 220; - // gCollisionMesh[i].vtx2->v.cn[0] = 255; - // gCollisionMesh[i].vtx2->v.cn[1] = 248; - // gCollisionMesh[i].vtx2->v.cn[2] = 220; - // gCollisionMesh[i].vtx3->v.cn[0] = 255; - // gCollisionMesh[i].vtx3->v.cn[1] = 248; - // gCollisionMesh[i].vtx3->v.cn[2] = 220; - break; - case SAND: - // gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); - // gDPTileSync(gDisplayListHead++); - // gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, - // G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); - // gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); - // gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture67BEE8); - // gDPTileSync(gDisplayListHead++); - // gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, - // G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, - // G_TX_NOLOD); gDPLoadSync(gDisplayListHead++); gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, - // 1023, 256); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); - // gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2); - // gCollisionMesh[i].vtx1->v.cn[0] = 255; - // gCollisionMesh[i].vtx1->v.cn[1] = 121; - // gCollisionMesh[i].vtx1->v.cn[2] = 25; - // gCollisionMesh[i].vtx2->v.cn[0] = 255; - // gCollisionMesh[i].vtx2->v.cn[1] = 121; - // gCollisionMesh[i].vtx2->v.cn[2] = 25; - // gCollisionMesh[i].vtx3->v.cn[0] = 255; - // gCollisionMesh[i].vtx3->v.cn[1] = 121; - // gCollisionMesh[i].vtx3->v.cn[2] = 25; - break; - case STONE: - gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); - gDPTileSync(gDisplayListHead++); - gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); - gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); - gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture6528DC); - gDPTileSync(gDisplayListHead++); - gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, - G_TX_NOLOD); - gDPLoadSync(gDisplayListHead++); - gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); - gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); - gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2); - // gCollisionMesh[i].vtx1->v.cn[0] = 128; - // gCollisionMesh[i].vtx1->v.cn[1] = 128; - // gCollisionMesh[i].vtx1->v.cn[2] = 128; - // gCollisionMesh[i].vtx2->v.cn[0] = 128; - // gCollisionMesh[i].vtx2->v.cn[1] = 128; - // gCollisionMesh[i].vtx2->v.cn[2] = 128; - // gCollisionMesh[i].vtx3->v.cn[0] = 128; - // gCollisionMesh[i].vtx3->v.cn[1] = 128; - // gCollisionMesh[i].vtx3->v.cn[2] = 128; - break; - case SNOW: - gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); - gDPTileSync(gDisplayListHead++); - gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); - gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); - gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture677F04); - gDPTileSync(gDisplayListHead++); - gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, - G_TX_NOLOD); - gDPLoadSync(gDisplayListHead++); - gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); - gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); - gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2); - break; - case SAND_OFFROAD: - gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); - gDPTileSync(gDisplayListHead++); - gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); - gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); - gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture67B9B0); - gDPTileSync(gDisplayListHead++); - gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, - G_TX_NOLOD); - gDPLoadSync(gDisplayListHead++); - gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); - gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); - gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2); - break; - case GRASS: // gTextureGrass1 + gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, + G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); + gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTextureGrass1); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); + gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); + gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); - gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); - gDPTileSync(gDisplayListHead++); - gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); - gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); - gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTextureGrass1); - gDPTileSync(gDisplayListHead++); - gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, - G_TX_NOLOD); - gDPLoadSync(gDisplayListHead++); - gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); - gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); - gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2); - - // gCollisionMesh[i].vtx1->v.cn[0] = 50; - // gCollisionMesh[i].vtx1->v.cn[1] = 180; - // gCollisionMesh[i].vtx1->v.cn[2] = 50; - // gCollisionMesh[i].vtx2->v.cn[0] = 50; - // gCollisionMesh[i].vtx2->v.cn[1] = 180; - // gCollisionMesh[i].vtx2->v.cn[2] = 50; - // gCollisionMesh[i].vtx3->v.cn[0] = 50; - // gCollisionMesh[i].vtx3->v.cn[1] = 180; - // gCollisionMesh[i].vtx3->v.cn[2] = 50; - break; - case ICE: - gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); - gDPTileSync(gDisplayListHead++); - gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); - gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); - gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture643B3C); - gDPTileSync(gDisplayListHead++); - gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, - G_TX_NOLOD); - gDPLoadSync(gDisplayListHead++); - gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); - gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); - gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2); - break; - case WET_SAND: - // gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); - // gDPTileSync(gDisplayListHead++); - // gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, - // G_TX_NOMIRROR | G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); - // gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x00FC); - // gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture66DD38); - // gDPTileSync(gDisplayListHead++); - // gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, - // G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, - // G_TX_NOLOD); gDPLoadSync(gDisplayListHead++); gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, - // 1023, 256); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); - // gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2); - break; - case SNOW_OFFROAD: - gCollisionMesh[i].vtx1->v.cn[0] = 80; - gCollisionMesh[i].vtx1->v.cn[1] = 80; - gCollisionMesh[i].vtx1->v.cn[2] = 80; - gCollisionMesh[i].vtx2->v.cn[0] = 80; - gCollisionMesh[i].vtx2->v.cn[1] = 80; - gCollisionMesh[i].vtx2->v.cn[2] = 80; - gCollisionMesh[i].vtx3->v.cn[0] = 80; - gCollisionMesh[i].vtx3->v.cn[1] = 80; - gCollisionMesh[i].vtx3->v.cn[2] = 80; - break; - case CLIFF: - break; - case DIRT_OFFROAD: - break; - case TRAIN_TRACK: // gTextureRailroadTrack - gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); - gDPTileSync(gDisplayListHead++); - gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0x0000, G_TX_RENDERTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 6, G_TX_NOLOD); - gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x00FC, 0x007C); - gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTextureRailroadTrack); - gDPTileSync(gDisplayListHead++); - gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, - G_TX_NOLOD); - gDPLoadSync(gDisplayListHead++); - gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 2047, 128); - gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); - gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2); - break; - case CAVE: - break; - case OUT_OF_BOUNDS: - gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); - gDPTileSync(gDisplayListHead++); - gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); - gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); - gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture64313C); - gDPTileSync(gDisplayListHead++); - gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, - G_TX_NOLOD); - gDPLoadSync(gDisplayListHead++); - gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); - gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); - gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2); - // gCollisionMesh[i].vtx1->v.cn[0] = 255; - // gCollisionMesh[i].vtx1->v.cn[1] = 0; - // gCollisionMesh[i].vtx1->v.cn[2] = 0; - // gCollisionMesh[i].vtx2->v.cn[0] = 255; - // gCollisionMesh[i].vtx2->v.cn[1] = 0; - // gCollisionMesh[i].vtx2->v.cn[2] = 0; - // gCollisionMesh[i].vtx3->v.cn[0] = 255; - // gCollisionMesh[i].vtx3->v.cn[1] = 0; - // gCollisionMesh[i].vtx3->v.cn[2] = 0; - break; - case BOOST_RAMP_WOOD: - case BOOST_RAMP_ASPHALT: - case RAMP: - gCollisionMesh[i].vtx1->v.cn[0] = 255; - gCollisionMesh[i].vtx1->v.cn[1] = 255; - gCollisionMesh[i].vtx1->v.cn[2] = 0; - gCollisionMesh[i].vtx2->v.cn[0] = 255; - gCollisionMesh[i].vtx2->v.cn[1] = 255; - gCollisionMesh[i].vtx2->v.cn[2] = 0; - gCollisionMesh[i].vtx3->v.cn[0] = 255; - gCollisionMesh[i].vtx3->v.cn[1] = 255; - gCollisionMesh[i].vtx3->v.cn[2] = 0; - break; - case WOOD_BRIDGE: - case ROPE_BRIDGE: - case BRIDGE: - gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); - gDPTileSync(gDisplayListHead++); - gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); - gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); - gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture676FB0); - gDPTileSync(gDisplayListHead++); - gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, - G_TX_NOLOD); - gDPLoadSync(gDisplayListHead++); - gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); - gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); - gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2); - // gCollisionMesh[i].vtx1->v.cn[0] = 0; - // gCollisionMesh[i].vtx1->v.cn[1] = 255; - // gCollisionMesh[i].vtx1->v.cn[2] = 0; - // gCollisionMesh[i].vtx2->v.cn[0] = 0; - // gCollisionMesh[i].vtx2->v.cn[1] = 255; - // gCollisionMesh[i].vtx2->v.cn[2] = 0; - // gCollisionMesh[i].vtx3->v.cn[0] = 0; - // gCollisionMesh[i].vtx3->v.cn[1] = 255; - // gCollisionMesh[i].vtx3->v.cn[2] = 0; - break; + // gCollisionMesh[i].vtx1->v.cn[0] = 50; + // gCollisionMesh[i].vtx1->v.cn[1] = 180; + // gCollisionMesh[i].vtx1->v.cn[2] = 50; + // gCollisionMesh[i].vtx2->v.cn[0] = 50; + // gCollisionMesh[i].vtx2->v.cn[1] = 180; + // gCollisionMesh[i].vtx2->v.cn[2] = 50; + // gCollisionMesh[i].vtx3->v.cn[0] = 50; + // gCollisionMesh[i].vtx3->v.cn[1] = 180; + // gCollisionMesh[i].vtx3->v.cn[2] = 50; + break; + case ICE: + gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, + G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); + gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture643B3C); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); + gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); + gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); + break; + case WET_SAND: + // gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); + // gDPTileSync(gDisplayListHead++); + // gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, + // G_TX_NOMIRROR | G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); + // gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x00FC); + // gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture66DD38); + // gDPTileSync(gDisplayListHead++); + // gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, + // G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, + // G_TX_NOLOD); gDPLoadSync(gDisplayListHead++); gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, + // 0, 1023, 256); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); + // gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2); + break; + case SNOW_OFFROAD: + gCollisionMesh[i].vtx1->v.cn[0] = 80; + gCollisionMesh[i].vtx1->v.cn[1] = 80; + gCollisionMesh[i].vtx1->v.cn[2] = 80; + gCollisionMesh[i].vtx2->v.cn[0] = 80; + gCollisionMesh[i].vtx2->v.cn[1] = 80; + gCollisionMesh[i].vtx2->v.cn[2] = 80; + gCollisionMesh[i].vtx3->v.cn[0] = 80; + gCollisionMesh[i].vtx3->v.cn[1] = 80; + gCollisionMesh[i].vtx3->v.cn[2] = 80; + break; + case CLIFF: + break; + case DIRT_OFFROAD: + break; + case TRAIN_TRACK: // gTextureRailroadTrack + gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0x0000, G_TX_RENDERTILE, 0, + G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 6, G_TX_NOLOD); + gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x00FC, 0x007C); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTextureRailroadTrack); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 2047, 128); + gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); + gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); + break; + case CAVE: + break; + case OUT_OF_BOUNDS: + gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, + G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); + gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture64313C); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); + gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); + gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); + // gCollisionMesh[i].vtx1->v.cn[0] = 255; + // gCollisionMesh[i].vtx1->v.cn[1] = 0; + // gCollisionMesh[i].vtx1->v.cn[2] = 0; + // gCollisionMesh[i].vtx2->v.cn[0] = 255; + // gCollisionMesh[i].vtx2->v.cn[1] = 0; + // gCollisionMesh[i].vtx2->v.cn[2] = 0; + // gCollisionMesh[i].vtx3->v.cn[0] = 255; + // gCollisionMesh[i].vtx3->v.cn[1] = 0; + // gCollisionMesh[i].vtx3->v.cn[2] = 0; + break; + case BOOST_RAMP_WOOD: + case BOOST_RAMP_ASPHALT: + case RAMP: + gCollisionMesh[i].vtx1->v.cn[0] = 255; + gCollisionMesh[i].vtx1->v.cn[1] = 255; + gCollisionMesh[i].vtx1->v.cn[2] = 0; + gCollisionMesh[i].vtx2->v.cn[0] = 255; + gCollisionMesh[i].vtx2->v.cn[1] = 255; + gCollisionMesh[i].vtx2->v.cn[2] = 0; + gCollisionMesh[i].vtx3->v.cn[0] = 255; + gCollisionMesh[i].vtx3->v.cn[1] = 255; + gCollisionMesh[i].vtx3->v.cn[2] = 0; + break; + case WOOD_BRIDGE: + case ROPE_BRIDGE: + case BRIDGE: + gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, + G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); + gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture676FB0); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); + gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); + gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); + // gCollisionMesh[i].vtx1->v.cn[0] = 0; + // gCollisionMesh[i].vtx1->v.cn[1] = 255; + // gCollisionMesh[i].vtx1->v.cn[2] = 0; + // gCollisionMesh[i].vtx2->v.cn[0] = 0; + // gCollisionMesh[i].vtx2->v.cn[1] = 255; + // gCollisionMesh[i].vtx2->v.cn[2] = 0; + // gCollisionMesh[i].vtx3->v.cn[0] = 0; + // gCollisionMesh[i].vtx3->v.cn[1] = 255; + // gCollisionMesh[i].vtx3->v.cn[2] = 0; + break; + } } - gSPVertex(gDisplayListHead++, gCollisionMesh[i].vtx1, 1, 0); gSPVertex(gDisplayListHead++, gCollisionMesh[i].vtx2, 1, 1); gSPVertex(gDisplayListHead++, gCollisionMesh[i].vtx3, 1, 2); diff --git a/src/main.h b/src/main.h index e013705e5..5b2772631 100644 --- a/src/main.h +++ b/src/main.h @@ -40,7 +40,7 @@ #define MTX_EFFECT_POOL_SIZE_MAX MTX_EFFECT_POOL_SIZE + 100 #endif -#define GFX_POOL_SIZE 15000 +#define GFX_POOL_SIZE 150000 struct GfxPool { /* 0x00000 */ Mtx mtxScreen; // Matrix for skybox and startup logo diff --git a/src/port/Game.cpp b/src/port/Game.cpp index efd4eb1be..9f96182d4 100644 --- a/src/port/Game.cpp +++ b/src/port/Game.cpp @@ -285,6 +285,12 @@ void CM_DrawTrack(ScreenContext* screen) { return; } + // Check if collision mesh rendering is enabled via CVar + if (CVarGetInteger("gRenderCollisionMesh", 0)) { + render_collision(); + return; + } + // Custom tracks should never use DrawCredits(); if (GetWorld()->GetTrack()->IsMod()) { switch(screen->camera->renderMode) {