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
This commit is contained in:
coco875 2025-12-16 17:46:06 +01:00 committed by GitHub
parent 8250ea5764
commit 6b8be33a5b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
23 changed files with 315 additions and 292 deletions

View File

@ -126,7 +126,7 @@ jobs:
build-macos-intel: build-macos-intel:
needs: generate-port-o2r needs: generate-port-o2r
runs-on: macOS-latest-intel runs-on: macos-15-intel
strategy: strategy:
matrix: matrix:
config: [Release, Debug] config: [Release, Debug]

View File

@ -52,9 +52,10 @@ extern "C" void add_triangle_to_collision_mesh(Vtx* vtx1, Vtx* vtx2, Vtx* vtx3,
} }
void RaceManager::Load() { void RaceManager::Load() {
if (GetWorld()->GetTrack()) { auto* track = GetWorld()->GetTrack();
if (track) {
mirroredVtxCache.clear(); mirroredVtxCache.clear();
GetWorld()->GetTrack()->Load(); track->Load();
} else { } else {
printf("[RaceManager] [Load] Track was nullptr\n"); printf("[RaceManager] [Load] Track was nullptr\n");
} }

View File

@ -26,6 +26,10 @@ void TrackBrowser::FindCustomTracks() {
TrackInfo info; TrackInfo info;
info.Path = dir; info.Path = dir;
TrackEditor::LoadTrackInfo(info, archive, sceneFile); 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()); printf("[TrackBrowser] Added custom track %s\n", info.Name.c_str());
gTrackRegistry.Add(info, [info, archive]() { gTrackRegistry.Add(info, [info, archive]() {
auto track = std::make_unique<Track>(); auto track = std::make_unique<Track>();

View File

@ -56,7 +56,6 @@ BansheeBoardwalk::BansheeBoardwalk() {
ResizeMinimap(&Props.Minimap); ResizeMinimap(&Props.Minimap);
ResourceName = "mk:banshee_boardwalk"; ResourceName = "mk:banshee_boardwalk";
Props.SetText(Props.Name, "banshee boardwalk", sizeof(Props.Name)); Props.SetText(Props.Name, "banshee boardwalk", sizeof(Props.Name));
Props.SetText(Props.DebugName, "ghost", sizeof(Props.DebugName)); Props.SetText(Props.DebugName, "ghost", sizeof(Props.DebugName));
Props.SetText(Props.TrackLength, "747m", sizeof(Props.TrackLength)); Props.SetText(Props.TrackLength, "747m", sizeof(Props.TrackLength));

View File

@ -45,6 +45,7 @@ BigDonut::BigDonut() {
Props.Minimap.FinishlineY = 0; Props.Minimap.FinishlineY = 0;
ResizeMinimap(&Props.Minimap); ResizeMinimap(&Props.Minimap);
ResourceName = "mk:big_donut";
Props.SetText(Props.Name, "big donut", sizeof(Props.Name)); Props.SetText(Props.Name, "big donut", sizeof(Props.Name));
Props.SetText(Props.DebugName, "doughnut", sizeof(Props.DebugName)); Props.SetText(Props.DebugName, "doughnut", sizeof(Props.DebugName));
Props.SetText(Props.TrackLength, "", sizeof(Props.TrackLength)); Props.SetText(Props.TrackLength, "", sizeof(Props.TrackLength));

View File

@ -47,6 +47,7 @@ BlockFort::BlockFort() {
Props.Minimap.FinishlineY = 0; Props.Minimap.FinishlineY = 0;
ResizeMinimap(&Props.Minimap); ResizeMinimap(&Props.Minimap);
ResourceName = "mk:block_fort";
Props.SetText(Props.Name, "block fort", sizeof(Props.Name)); Props.SetText(Props.Name, "block fort", sizeof(Props.Name));
Props.SetText(Props.DebugName, "block", sizeof(Props.DebugName)); Props.SetText(Props.DebugName, "block", sizeof(Props.DebugName));
Props.SetText(Props.TrackLength, "", sizeof(Props.TrackLength)); Props.SetText(Props.TrackLength, "", sizeof(Props.TrackLength));

View File

@ -51,7 +51,6 @@ BowsersCastle::BowsersCastle() {
ResizeMinimap(&Props.Minimap); ResizeMinimap(&Props.Minimap);
ResourceName = "mk:bowsers_castle"; ResourceName = "mk:bowsers_castle";
Props.SetText(Props.Name, "bowser's castle", sizeof(Props.Name)); Props.SetText(Props.Name, "bowser's castle", sizeof(Props.Name));
Props.SetText(Props.DebugName, "castle", sizeof(Props.DebugName)); Props.SetText(Props.DebugName, "castle", sizeof(Props.DebugName));
Props.SetText(Props.TrackLength, "777m", sizeof(Props.TrackLength)); Props.SetText(Props.TrackLength, "777m", sizeof(Props.TrackLength));

View File

@ -53,6 +53,7 @@ DKJungle::DKJungle() {
Props.Minimap.FinishlineY = 0; Props.Minimap.FinishlineY = 0;
ResizeMinimap(&Props.Minimap); ResizeMinimap(&Props.Minimap);
ResourceName = "mk:dk_jungle";
Props.SetText(Props.Name, "d.k.'s jungle parkway", sizeof(Props.Name)); Props.SetText(Props.Name, "d.k.'s jungle parkway", sizeof(Props.Name));
Props.SetText(Props.DebugName, "jungle", sizeof(Props.DebugName)); Props.SetText(Props.DebugName, "jungle", sizeof(Props.DebugName));
Props.SetText(Props.TrackLength, "893m", sizeof(Props.TrackLength)); Props.SetText(Props.TrackLength, "893m", sizeof(Props.TrackLength));

View File

@ -46,6 +46,7 @@ DoubleDeck::DoubleDeck() {
Props.Minimap.FinishlineY = 0; Props.Minimap.FinishlineY = 0;
ResizeMinimap(&Props.Minimap); ResizeMinimap(&Props.Minimap);
ResourceName = "mk:double_deck";
Props.SetText(Props.Name, "double deck", sizeof(Props.Name)); Props.SetText(Props.Name, "double deck", sizeof(Props.Name));
Props.SetText(Props.DebugName, "deck", sizeof(Props.DebugName)); Props.SetText(Props.DebugName, "deck", sizeof(Props.DebugName));
Props.SetText(Props.TrackLength, "", sizeof(Props.TrackLength)); Props.SetText(Props.TrackLength, "", sizeof(Props.TrackLength));

View File

@ -53,6 +53,7 @@ FrappeSnowland::FrappeSnowland() {
Props.Minimap.Colour = {72, 100, 255}; Props.Minimap.Colour = {72, 100, 255};
ResizeMinimap(&Props.Minimap); ResizeMinimap(&Props.Minimap);
ResourceName = "mk:frappe_snowland";
Props.SetText(Props.Name, "frappe snowland", sizeof(Props.Name)); Props.SetText(Props.Name, "frappe snowland", sizeof(Props.Name));
Props.SetText(Props.DebugName, "snow", sizeof(Props.DebugName)); Props.SetText(Props.DebugName, "snow", sizeof(Props.DebugName));
Props.SetText(Props.TrackLength, "734m", sizeof(Props.TrackLength)); Props.SetText(Props.TrackLength, "734m", sizeof(Props.TrackLength));

View File

@ -49,6 +49,7 @@ KalimariDesert::KalimariDesert() {
Props.Minimap.FinishlineY = 4.0; Props.Minimap.FinishlineY = 4.0;
ResizeMinimap(&Props.Minimap); ResizeMinimap(&Props.Minimap);
ResourceName = "mk:kalimari_desert";
Props.SetText(Props.Name, "kalimari desert", sizeof(Props.Name)); Props.SetText(Props.Name, "kalimari desert", sizeof(Props.Name));
Props.SetText(Props.DebugName, "desert", sizeof(Props.DebugName)); Props.SetText(Props.DebugName, "desert", sizeof(Props.DebugName));
Props.SetText(Props.TrackLength, "753m", sizeof(Props.TrackLength)); Props.SetText(Props.TrackLength, "753m", sizeof(Props.TrackLength));

View File

@ -51,6 +51,7 @@ MooMooFarm::MooMooFarm() {
Props.Minimap.FinishlineY = 0; Props.Minimap.FinishlineY = 0;
ResizeMinimap(&Props.Minimap); ResizeMinimap(&Props.Minimap);
ResourceName = "mk:moo_moo_farm";
Props.SetText(Props.Name, "moo moo farm", sizeof(Props.Name)); Props.SetText(Props.Name, "moo moo farm", sizeof(Props.Name));
Props.SetText(Props.DebugName, "farm", sizeof(Props.DebugName)); Props.SetText(Props.DebugName, "farm", sizeof(Props.DebugName));
Props.SetText(Props.TrackLength, "527m", sizeof(Props.TrackLength)); Props.SetText(Props.TrackLength, "527m", sizeof(Props.TrackLength));

View File

@ -47,6 +47,7 @@ RainbowRoad::RainbowRoad() {
Props.Minimap.FinishlineY = 0; Props.Minimap.FinishlineY = 0;
ResizeMinimap(&Props.Minimap); ResizeMinimap(&Props.Minimap);
ResourceName = "mk:rainbow_road";
Props.SetText(Props.Name, "rainbow road", sizeof(Props.Name)); Props.SetText(Props.Name, "rainbow road", sizeof(Props.Name));
Props.SetText(Props.DebugName, "rainbow", sizeof(Props.DebugName)); Props.SetText(Props.DebugName, "rainbow", sizeof(Props.DebugName));
Props.SetText(Props.TrackLength, "2000m", sizeof(Props.TrackLength)); Props.SetText(Props.TrackLength, "2000m", sizeof(Props.TrackLength));

View File

@ -48,6 +48,7 @@ RoyalRaceway::RoyalRaceway() {
Props.Minimap.FinishlineY = 0; Props.Minimap.FinishlineY = 0;
ResizeMinimap(&Props.Minimap); ResizeMinimap(&Props.Minimap);
ResourceName = "mk:royal_raceway";
Props.SetText(Props.Name, "royal raceway", sizeof(Props.Name)); Props.SetText(Props.Name, "royal raceway", sizeof(Props.Name));
Props.SetText(Props.DebugName, "p circuit", sizeof(Props.DebugName)); Props.SetText(Props.DebugName, "p circuit", sizeof(Props.DebugName));
Props.SetText(Props.TrackLength, "1025m", sizeof(Props.TrackLength)); Props.SetText(Props.TrackLength, "1025m", sizeof(Props.TrackLength));

View File

@ -50,6 +50,7 @@ SherbetLand::SherbetLand() {
Props.Minimap.Colour = {72, 100, 255}; Props.Minimap.Colour = {72, 100, 255};
ResizeMinimap(&Props.Minimap); ResizeMinimap(&Props.Minimap);
ResourceName = "mk:sherbet_land";
Props.SetText(Props.Name, "sherbet land", sizeof(Props.Name)); Props.SetText(Props.Name, "sherbet land", sizeof(Props.Name));
Props.SetText(Props.DebugName, "sherbet", sizeof(Props.DebugName)); Props.SetText(Props.DebugName, "sherbet", sizeof(Props.DebugName));
Props.SetText(Props.TrackLength, "756m", sizeof(Props.TrackLength)); Props.SetText(Props.TrackLength, "756m", sizeof(Props.TrackLength));

View File

@ -45,6 +45,7 @@ Skyscraper::Skyscraper() {
Props.Minimap.FinishlineY = 0; Props.Minimap.FinishlineY = 0;
ResizeMinimap(&Props.Minimap); ResizeMinimap(&Props.Minimap);
ResourceName = "mk:skyscraper";
Props.SetText(Props.Name, "skyscraper", sizeof(Props.Name)); Props.SetText(Props.Name, "skyscraper", sizeof(Props.Name));
Props.SetText(Props.DebugName, "skyscraper", sizeof(Props.DebugName)); Props.SetText(Props.DebugName, "skyscraper", sizeof(Props.DebugName));
Props.SetText(Props.TrackLength, "", sizeof(Props.TrackLength)); Props.SetText(Props.TrackLength, "", sizeof(Props.TrackLength));

View File

@ -72,7 +72,6 @@ TestTrack::TestTrack() {
ResizeMinimap(&Props.Minimap); ResizeMinimap(&Props.Minimap);
ResourceName = "hm:test_track"; ResourceName = "hm:test_track";
Props.SetText(Props.Name, "Test Track", sizeof(Props.Name)); Props.SetText(Props.Name, "Test Track", sizeof(Props.Name));
Props.SetText(Props.DebugName, "test track", sizeof(Props.DebugName)); Props.SetText(Props.DebugName, "test track", sizeof(Props.DebugName));
Props.SetText(Props.TrackLength, "100m", sizeof(Props.TrackLength)); Props.SetText(Props.TrackLength, "100m", sizeof(Props.TrackLength));

View File

@ -55,6 +55,7 @@ ToadsTurnpike::ToadsTurnpike() {
Props.Minimap.FinishlineY = 0; Props.Minimap.FinishlineY = 0;
ResizeMinimap(&Props.Minimap); ResizeMinimap(&Props.Minimap);
ResourceName = "mk:toads_turnpike";
Props.SetText(Props.Name, "toad's turnpike", sizeof(Props.Name)); Props.SetText(Props.Name, "toad's turnpike", sizeof(Props.Name));
Props.SetText(Props.DebugName, "highway", sizeof(Props.DebugName)); Props.SetText(Props.DebugName, "highway", sizeof(Props.DebugName));
Props.SetText(Props.TrackLength, "1036m", sizeof(Props.TrackLength)); Props.SetText(Props.TrackLength, "1036m", sizeof(Props.TrackLength));

View File

@ -50,6 +50,7 @@ WarioStadium::WarioStadium() {
Props.Minimap.FinishlineY = 0; Props.Minimap.FinishlineY = 0;
ResizeMinimap(&Props.Minimap); ResizeMinimap(&Props.Minimap);
ResourceName = "mk:wario_stadium";
Props.SetText(Props.Name, "wario stadium", sizeof(Props.Name)); Props.SetText(Props.Name, "wario stadium", sizeof(Props.Name));
Props.SetText(Props.DebugName, "stadium", sizeof(Props.DebugName)); Props.SetText(Props.DebugName, "stadium", sizeof(Props.DebugName));
Props.SetText(Props.TrackLength, "1591m", sizeof(Props.TrackLength)); Props.SetText(Props.TrackLength, "1591m", sizeof(Props.TrackLength));

View File

@ -47,6 +47,7 @@ YoshiValley::YoshiValley() {
Props.Minimap.FinishlineY = 0; Props.Minimap.FinishlineY = 0;
ResizeMinimap(&Props.Minimap); ResizeMinimap(&Props.Minimap);
ResourceName = "mk:yoshi_valley";
Props.SetText(Props.Name, "yoshi valley", sizeof(Props.Name)); Props.SetText(Props.Name, "yoshi valley", sizeof(Props.Name));
Props.SetText(Props.DebugName, "maze", sizeof(Props.DebugName)); Props.SetText(Props.DebugName, "maze", sizeof(Props.DebugName));
Props.SetText(Props.TrackLength, "772m", sizeof(Props.TrackLength)); Props.SetText(Props.TrackLength, "772m", sizeof(Props.TrackLength));

View File

@ -30,297 +30,298 @@ void render_collision(void) {
mtxf_identity(matrix); mtxf_identity(matrix);
AddObjectMatrix(matrix, G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH); AddObjectMatrix(matrix, G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH);
u16 previousSurfaceType = -2;
for (size_t i = 0; i < gCollisionMeshCount; i++) { for (size_t i = 0; i < gCollisionMeshCount; i++) {
// Load vertices for this tri // Load vertices for this tri
if (gCollisionMesh[i].surfaceType != previousSurfaceType) {
previousSurfaceType = gCollisionMesh[i].surfaceType;
switch (gCollisionMesh[i].surfaceType) {
case ASPHALT:
switch (gCollisionMesh[i].surfaceType) { // gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
case ASPHALT: // 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); gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
// gDPTileSync(gDisplayListHead++); gDPTileSync(gDisplayListHead++);
// gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, 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); 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, 0x00FC, 0x007C); gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C);
// gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTextureRoad1); gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTextureGrass1);
// gDPTileSync(gDisplayListHead++); gDPTileSync(gDisplayListHead++);
// gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, 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_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP,
// G_TX_NOLOD); gDPLoadSync(gDisplayListHead++); gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, G_TX_NOMASK, G_TX_NOLOD);
// 0, 2047, 128); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); gDPLoadSync(gDisplayListHead++);
// gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2); gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256);
gCollisionMesh[i].vtx1->v.cn[0] = 50; gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
gCollisionMesh[i].vtx1->v.cn[1] = 50; gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
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); // gCollisionMesh[i].vtx1->v.cn[0] = 50;
gDPTileSync(gDisplayListHead++); // gCollisionMesh[i].vtx1->v.cn[1] = 180;
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, // gCollisionMesh[i].vtx1->v.cn[2] = 50;
G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); // gCollisionMesh[i].vtx2->v.cn[0] = 50;
gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); // gCollisionMesh[i].vtx2->v.cn[1] = 180;
gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTextureGrass1); // gCollisionMesh[i].vtx2->v.cn[2] = 50;
gDPTileSync(gDisplayListHead++); // gCollisionMesh[i].vtx3->v.cn[0] = 50;
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, // gCollisionMesh[i].vtx3->v.cn[1] = 180;
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, // gCollisionMesh[i].vtx3->v.cn[2] = 50;
G_TX_NOLOD); break;
gDPLoadSync(gDisplayListHead++); case ICE:
gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); gDPTileSync(gDisplayListHead++);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2); 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);
// gCollisionMesh[i].vtx1->v.cn[0] = 50; gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C);
// gCollisionMesh[i].vtx1->v.cn[1] = 180; gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture643B3C);
// gCollisionMesh[i].vtx1->v.cn[2] = 50; gDPTileSync(gDisplayListHead++);
// gCollisionMesh[i].vtx2->v.cn[0] = 50; gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0,
// gCollisionMesh[i].vtx2->v.cn[1] = 180; G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP,
// gCollisionMesh[i].vtx2->v.cn[2] = 50; G_TX_NOMASK, G_TX_NOLOD);
// gCollisionMesh[i].vtx3->v.cn[0] = 50; gDPLoadSync(gDisplayListHead++);
// gCollisionMesh[i].vtx3->v.cn[1] = 180; gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256);
// gCollisionMesh[i].vtx3->v.cn[2] = 50; gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
break; gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
case ICE: break;
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); case WET_SAND:
gDPTileSync(gDisplayListHead++); // gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, // gDPTileSync(gDisplayListHead++);
G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); // gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0,
gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); // G_TX_NOMIRROR | G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture643B3C); // gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x00FC);
gDPTileSync(gDisplayListHead++); // gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture66DD38);
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, // gDPTileSync(gDisplayListHead++);
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, // gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0,
G_TX_NOLOD); // G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
gDPLoadSync(gDisplayListHead++); // G_TX_NOLOD); gDPLoadSync(gDisplayListHead++); gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0,
gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); // 0, 1023, 256); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); // gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2); break;
break; case SNOW_OFFROAD:
case WET_SAND: gCollisionMesh[i].vtx1->v.cn[0] = 80;
// gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); gCollisionMesh[i].vtx1->v.cn[1] = 80;
// gDPTileSync(gDisplayListHead++); gCollisionMesh[i].vtx1->v.cn[2] = 80;
// gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, gCollisionMesh[i].vtx2->v.cn[0] = 80;
// G_TX_NOMIRROR | G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); gCollisionMesh[i].vtx2->v.cn[1] = 80;
// gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x00FC); gCollisionMesh[i].vtx2->v.cn[2] = 80;
// gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture66DD38); gCollisionMesh[i].vtx3->v.cn[0] = 80;
// gDPTileSync(gDisplayListHead++); gCollisionMesh[i].vtx3->v.cn[1] = 80;
// gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, gCollisionMesh[i].vtx3->v.cn[2] = 80;
// G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, break;
// G_TX_NOLOD); gDPLoadSync(gDisplayListHead++); gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, case CLIFF:
// 1023, 256); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); break;
// gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2); case DIRT_OFFROAD:
break; break;
case SNOW_OFFROAD: case TRAIN_TRACK: // gTextureRailroadTrack
gCollisionMesh[i].vtx1->v.cn[0] = 80; gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
gCollisionMesh[i].vtx1->v.cn[1] = 80; gDPTileSync(gDisplayListHead++);
gCollisionMesh[i].vtx1->v.cn[2] = 80; gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0x0000, G_TX_RENDERTILE, 0,
gCollisionMesh[i].vtx2->v.cn[0] = 80; G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 6, G_TX_NOLOD);
gCollisionMesh[i].vtx2->v.cn[1] = 80; gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x00FC, 0x007C);
gCollisionMesh[i].vtx2->v.cn[2] = 80; gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTextureRailroadTrack);
gCollisionMesh[i].vtx3->v.cn[0] = 80; gDPTileSync(gDisplayListHead++);
gCollisionMesh[i].vtx3->v.cn[1] = 80; gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0,
gCollisionMesh[i].vtx3->v.cn[2] = 80; G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP,
break; G_TX_NOMASK, G_TX_NOLOD);
case CLIFF: gDPLoadSync(gDisplayListHead++);
break; gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 2047, 128);
case DIRT_OFFROAD: gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
break; gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
case TRAIN_TRACK: // gTextureRailroadTrack break;
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); case CAVE:
gDPTileSync(gDisplayListHead++); break;
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0x0000, G_TX_RENDERTILE, 0, case OUT_OF_BOUNDS:
G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 6, G_TX_NOLOD); gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x00FC, 0x007C); gDPTileSync(gDisplayListHead++);
gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTextureRailroadTrack); gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0,
gDPTileSync(gDisplayListHead++); G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C);
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture64313C);
G_TX_NOLOD); gDPTileSync(gDisplayListHead++);
gDPLoadSync(gDisplayListHead++); gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0,
gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 2047, 128); G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP,
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); G_TX_NOMASK, G_TX_NOLOD);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2); gDPLoadSync(gDisplayListHead++);
break; gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256);
case CAVE: gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
break; gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
case OUT_OF_BOUNDS: // gCollisionMesh[i].vtx1->v.cn[0] = 255;
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); // gCollisionMesh[i].vtx1->v.cn[1] = 0;
gDPTileSync(gDisplayListHead++); // gCollisionMesh[i].vtx1->v.cn[2] = 0;
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, // gCollisionMesh[i].vtx2->v.cn[0] = 255;
G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); // gCollisionMesh[i].vtx2->v.cn[1] = 0;
gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); // gCollisionMesh[i].vtx2->v.cn[2] = 0;
gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture64313C); // gCollisionMesh[i].vtx3->v.cn[0] = 255;
gDPTileSync(gDisplayListHead++); // gCollisionMesh[i].vtx3->v.cn[1] = 0;
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, // gCollisionMesh[i].vtx3->v.cn[2] = 0;
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, break;
G_TX_NOLOD); case BOOST_RAMP_WOOD:
gDPLoadSync(gDisplayListHead++); case BOOST_RAMP_ASPHALT:
gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); case RAMP:
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); gCollisionMesh[i].vtx1->v.cn[0] = 255;
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2); gCollisionMesh[i].vtx1->v.cn[1] = 255;
// gCollisionMesh[i].vtx1->v.cn[0] = 255; gCollisionMesh[i].vtx1->v.cn[2] = 0;
// gCollisionMesh[i].vtx1->v.cn[1] = 0; gCollisionMesh[i].vtx2->v.cn[0] = 255;
// gCollisionMesh[i].vtx1->v.cn[2] = 0; gCollisionMesh[i].vtx2->v.cn[1] = 255;
// gCollisionMesh[i].vtx2->v.cn[0] = 255; gCollisionMesh[i].vtx2->v.cn[2] = 0;
// gCollisionMesh[i].vtx2->v.cn[1] = 0; gCollisionMesh[i].vtx3->v.cn[0] = 255;
// gCollisionMesh[i].vtx2->v.cn[2] = 0; gCollisionMesh[i].vtx3->v.cn[1] = 255;
// gCollisionMesh[i].vtx3->v.cn[0] = 255; gCollisionMesh[i].vtx3->v.cn[2] = 0;
// gCollisionMesh[i].vtx3->v.cn[1] = 0; break;
// gCollisionMesh[i].vtx3->v.cn[2] = 0; case WOOD_BRIDGE:
break; case ROPE_BRIDGE:
case BOOST_RAMP_WOOD: case BRIDGE:
case BOOST_RAMP_ASPHALT: gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
case RAMP: gDPTileSync(gDisplayListHead++);
gCollisionMesh[i].vtx1->v.cn[0] = 255; gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0,
gCollisionMesh[i].vtx1->v.cn[1] = 255; G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
gCollisionMesh[i].vtx1->v.cn[2] = 0; gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C);
gCollisionMesh[i].vtx2->v.cn[0] = 255; gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture676FB0);
gCollisionMesh[i].vtx2->v.cn[1] = 255; gDPTileSync(gDisplayListHead++);
gCollisionMesh[i].vtx2->v.cn[2] = 0; gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0,
gCollisionMesh[i].vtx3->v.cn[0] = 255; G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP,
gCollisionMesh[i].vtx3->v.cn[1] = 255; G_TX_NOMASK, G_TX_NOLOD);
gCollisionMesh[i].vtx3->v.cn[2] = 0; gDPLoadSync(gDisplayListHead++);
break; gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256);
case WOOD_BRIDGE: gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
case ROPE_BRIDGE: gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
case BRIDGE: // gCollisionMesh[i].vtx1->v.cn[0] = 0;
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); // gCollisionMesh[i].vtx1->v.cn[1] = 255;
gDPTileSync(gDisplayListHead++); // gCollisionMesh[i].vtx1->v.cn[2] = 0;
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, // gCollisionMesh[i].vtx2->v.cn[0] = 0;
G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); // gCollisionMesh[i].vtx2->v.cn[1] = 255;
gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); // gCollisionMesh[i].vtx2->v.cn[2] = 0;
gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture676FB0); // gCollisionMesh[i].vtx3->v.cn[0] = 0;
gDPTileSync(gDisplayListHead++); // gCollisionMesh[i].vtx3->v.cn[1] = 255;
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, // gCollisionMesh[i].vtx3->v.cn[2] = 0;
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, break;
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;
} }
gSPVertex(gDisplayListHead++, gCollisionMesh[i].vtx1, 1, 0); gSPVertex(gDisplayListHead++, gCollisionMesh[i].vtx1, 1, 0);
gSPVertex(gDisplayListHead++, gCollisionMesh[i].vtx2, 1, 1); gSPVertex(gDisplayListHead++, gCollisionMesh[i].vtx2, 1, 1);
gSPVertex(gDisplayListHead++, gCollisionMesh[i].vtx3, 1, 2); gSPVertex(gDisplayListHead++, gCollisionMesh[i].vtx3, 1, 2);

View File

@ -40,7 +40,7 @@
#define MTX_EFFECT_POOL_SIZE_MAX MTX_EFFECT_POOL_SIZE + 100 #define MTX_EFFECT_POOL_SIZE_MAX MTX_EFFECT_POOL_SIZE + 100
#endif #endif
#define GFX_POOL_SIZE 15000 #define GFX_POOL_SIZE 150000
struct GfxPool { struct GfxPool {
/* 0x00000 */ Mtx mtxScreen; // Matrix for skybox and startup logo /* 0x00000 */ Mtx mtxScreen; // Matrix for skybox and startup logo

View File

@ -285,6 +285,12 @@ void CM_DrawTrack(ScreenContext* screen) {
return; return;
} }
// Check if collision mesh rendering is enabled via CVar
if (CVarGetInteger("gRenderCollisionMesh", 0)) {
render_collision();
return;
}
// Custom tracks should never use DrawCredits(); // Custom tracks should never use DrawCredits();
if (GetWorld()->GetTrack()->IsMod()) { if (GetWorld()->GetTrack()->IsMod()) {
switch(screen->camera->renderMode) { switch(screen->camera->renderMode) {