Add new utility to calculate packed dl end and vertex count (#411)

* Add new utility to calculate packed dl end and vertex count

Requires changing a bunch of actual references to packed dl lists
 with raw numbers. Which feels extremely bad but it doesn't match
 otherwise.

Signed-off-by: Taggerung <tyler.taggerung@email.com>

* Hard code array lenghts in appropriate headers

Use macros to generate the vertex counts and packed dl end points

Heavily dependent on the array lengths being accurate. If they
 aren't stuff will break.

Signed-off-by: Taggerung <tyler.taggerung@email.com>
This commit is contained in:
Tyler McGavran
2023-09-10 16:21:16 -04:00
committed by GitHub
parent ccfe604719
commit c85a333a3f
32 changed files with 453 additions and 3769 deletions
+3 -1
View File
@@ -70,7 +70,9 @@
#include <ultra64.h>
#include <variables.h>
#include <vehicles.h>
#include <vertice_count_gen.h>
#include <waypoints.h>
#include <courses/all_course_data.h>
#include <courses/all_course_packed.h>
#endif
+251 -127
View File
@@ -5,7 +5,6 @@
#include <types.h>
#include <code_800029B0.h>
#include <course.h>
#include <packed_displaylist_symbols_gen.h>
#include "main.h"
#include "actors.h"
#include "math_util.h"
@@ -15,6 +14,7 @@
#include "render_courses.h"
#include "skybox_and_splitscreen.h"
#include "courses/all_course_data.h"
#include "courses/all_course_packed.h"
s16 D_802B87B0 = 995;
s16 D_802B87B4 = 1000;
@@ -182,14 +182,17 @@ void load_surface_map(uintptr_t arg0, struct UnkStruct_800DC5EC *arg1) {
}
void func_80291198(void) {
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_packed_dl_1140);
// d_course_mario_raceway_packed_dl_1140
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07001140));
}
void func_802911C4(void) {
if (gScreenModeSelection == SCREEN_MODE_1P) {
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_packed_dl_8E8);
// d_course_mario_raceway_packed_dl_8E8
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070008E8));
} else {
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_packed_dl_2D68);
// d_course_mario_raceway_packed_dl_2D68
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07002D68));
}
}
@@ -244,6 +247,7 @@ void func_8029122C(struct UnkStruct_800DC5EC *arg0, s32 arg1) {
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2);
gDPSetBlendMask(gDisplayListHead++, 0xFF);
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
// d_course_banshee_boardwalk_packed_dl_878
gSPDisplayList(gDisplayListHead++, 0x07000878);
gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE);
gDPPipeSync(gDisplayListHead++);
@@ -473,7 +477,8 @@ void render_mario_raceway(struct UnkStruct_800DC5EC *arg0) {
if (func_80290C20(arg0->camera) == 1) {
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_packed_dl_3050);
// d_course_mario_raceway_packed_dl_3050
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07003050));
}
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
@@ -556,19 +561,26 @@ void render_mario_raceway(struct UnkStruct_800DC5EC *arg0) {
}
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_packed_dl_3508);
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_packed_dl_3240);
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_packed_dl_14A0);
// d_course_mario_raceway_packed_dl_3508
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07003508));
// d_course_mario_raceway_packed_dl_3240
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07003240));
// d_course_mario_raceway_packed_dl_14A0
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070014A0));
load_surface_map((uintptr_t) mario_raceway_dls, arg0);
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_packed_dl_450);
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_packed_dl_240);
// d_course_mario_raceway_packed_dl_450
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000450));
// d_course_mario_raceway_packed_dl_240
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000240));
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_packed_dl_E0);
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_packed_dl_160);
// d_course_mario_raceway_packed_dl_E0
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070000E0));
// d_course_mario_raceway_packed_dl_160
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000160));
}
void render_choco_mountain(struct UnkStruct_800DC5EC *arg0) {
@@ -580,7 +592,8 @@ void render_choco_mountain(struct UnkStruct_800DC5EC *arg0) {
if (func_80290C20(arg0->camera) == 1) {
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_packed_dl_4608);
// d_course_choco_mountain_packed_dl_4608
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07004608));
}
gDPSetCycleType(gDisplayListHead++, G_CYC_2CYCLE);
gDPSetFogColor(gDisplayListHead++, D_801625EC, D_801625F4, D_801625F0, 0xFF);
@@ -592,10 +605,14 @@ void render_choco_mountain(struct UnkStruct_800DC5EC *arg0) {
gDPSetRenderMode(gDisplayListHead++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2);
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_packed_dl_5A70);
gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_packed_dl_828);
gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_packed_dl_8E0);
gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_packed_dl_5868);
// d_course_choco_mountain_packed_dl_5A70
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07005A70));
// d_course_choco_mountain_packed_dl_828
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000828));
// d_course_choco_mountain_packed_dl_8E0
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070008E0));
// d_course_choco_mountain_packed_dl_5868
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07005868));
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
load_surface_map((uintptr_t) choco_mountain_dls, arg0);
@@ -603,10 +620,13 @@ void render_choco_mountain(struct UnkStruct_800DC5EC *arg0) {
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
gDPSetRenderMode(gDisplayListHead++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2);
gDPSetCombineMode(gDisplayListHead++, G_CC_DECALRGBA, G_CC_PASS2);
gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_packed_dl_448);
gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_packed_dl_5D8);
// d_course_choco_mountain_packed_dl_448
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000448));
// d_course_choco_mountain_packed_dl_5D8
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070005D8));
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_packed_dl_718);
// d_course_choco_mountain_packed_dl_718
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000718));
gSPClearGeometryMode(gDisplayListHead++, G_FOG);
gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE);
gDPPipeSync(gDisplayListHead++);
@@ -622,7 +642,8 @@ void render_bowsers_castle(struct UnkStruct_800DC5EC *arg0) {
if (func_80290C20(arg0->camera) == 1) {
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
gSPDisplayList(gDisplayListHead++, d_course_bowsers_castle_packed_dl_6A80);
// d_course_bowsers_castle_packed_dl_6A80
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07006A80));
}
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
@@ -636,7 +657,8 @@ void render_bowsers_castle(struct UnkStruct_800DC5EC *arg0) {
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
gSPDisplayList(gDisplayListHead++, d_course_bowsers_castle_packed_dl_248);
// d_course_bowsers_castle_packed_dl_248
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000248));
}
void render_banshee_boardwalk(struct UnkStruct_800DC5EC *arg0) {
@@ -648,7 +670,8 @@ void render_banshee_boardwalk(struct UnkStruct_800DC5EC *arg0) {
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
gDPSetCombineMode(gDisplayListHead++, G_CC_DECALRGBA, G_CC_DECALRGBA);
gSPDisplayList(gDisplayListHead++, d_course_banshee_boardwalk_packed_dl_7228);
// d_course_banshee_boardwalk_packed_dl_7228
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07007228));
gSPFogPosition(gDisplayListHead++, D_802B87B0, D_802B87B4);
@@ -662,9 +685,12 @@ void render_banshee_boardwalk(struct UnkStruct_800DC5EC *arg0) {
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
gSPDisplayList(gDisplayListHead++, d_course_banshee_boardwalk_packed_dl_5CD0);
gSPDisplayList(gDisplayListHead++, d_course_banshee_boardwalk_packed_dl_4E60);
gSPDisplayList(gDisplayListHead++, d_course_banshee_boardwalk_packed_dl_69B0);
// d_course_banshee_boardwalk_packed_dl_5CD0
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07005CD0));
// d_course_banshee_boardwalk_packed_dl_4E60
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07004E60));
// d_course_banshee_boardwalk_packed_dl_69B0
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070069B0));
load_surface_map((uintptr_t) banshee_boardwalk_dls, arg0);
@@ -673,12 +699,16 @@ void render_banshee_boardwalk(struct UnkStruct_800DC5EC *arg0) {
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
gSPSetGeometryMode(gDisplayListHead++, G_SHADE | G_SHADING_SMOOTH);
gSPDisplayList(gDisplayListHead++, d_course_banshee_boardwalk_packed_dl_580);
gSPDisplayList(gDisplayListHead++, d_course_banshee_boardwalk_packed_dl_60);
gSPDisplayList(gDisplayListHead++, d_course_banshee_boardwalk_packed_dl_540);
// d_course_banshee_boardwalk_packed_dl_580
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000580));
// d_course_banshee_boardwalk_packed_dl_60
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000060));
// d_course_banshee_boardwalk_packed_dl_540
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000540));
if (camera->pos[1] < -20.0f) {
gSPDisplayList(gDisplayListHead++, d_course_banshee_boardwalk_packed_dl_6310);
// d_course_banshee_boardwalk_packed_dl_6310
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07006310));
}
spA8[0] = camera->pos[0];
spA8[1] = -82.0f;
@@ -709,7 +739,8 @@ void render_frappe_snowland(struct UnkStruct_800DC5EC *arg0) {
if (func_80290C20(arg0->camera) == 1) {
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
gSPDisplayList(gDisplayListHead++, d_course_frappe_snowland_packed_dl_65E0);
// d_course_frappe_snowland_packed_dl_65E0
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070065E0));
}
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
@@ -727,16 +758,19 @@ void render_koopa_troopa_beach(struct UnkStruct_800DC5EC *arg0) {
if (func_80290C20(arg0->camera) == 1) {
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
gSPDisplayList(gDisplayListHead++, d_course_koopa_troopa_beach_packed_dl_9CC0);
// d_course_koopa_troopa_beach_packed_dl_9CC0
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07009CC0));
}
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
gSPDisplayList(gDisplayListHead++, d_course_koopa_troopa_beach_packed_dl_9688);
// d_course_koopa_troopa_beach_packed_dl_9688
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07009688));
load_surface_map((uintptr_t) d_course_koopa_troopa_beach_dl_list1, arg0);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
gSPDisplayList(gDisplayListHead++, d_course_koopa_troopa_beach_packed_dl_2C0);
// d_course_koopa_troopa_beach_packed_dl_2C0
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070002C0));
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
gDPPipeSync(gDisplayListHead++);
}
@@ -750,20 +784,24 @@ void render_royal_raceway(struct UnkStruct_800DC5EC *arg0) {
if (func_80290C20(arg0->camera) == 1) {
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
gSPDisplayList(gDisplayListHead++, d_course_royal_raceway_packed_dl_B030);
// d_course_royal_raceway_packed_dl_B030
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x0700B030));
}
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
gSPDisplayList(gDisplayListHead++, d_course_royal_raceway_packed_dl_A648);
// d_course_royal_raceway_packed_dl_A648
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x0700A648));
load_surface_map((uintptr_t) royal_raceway_dls, arg0);
gSPDisplayList(gDisplayListHead++, d_course_royal_raceway_packed_dl_11A8);
// d_course_royal_raceway_packed_dl_11A8
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070011A8));
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
gSPDisplayList(gDisplayListHead++, d_course_royal_raceway_packed_dl_8A0);
// d_course_royal_raceway_packed_dl_8A0
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070008A0));
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
@@ -780,7 +818,8 @@ void render_luigi_raceway(struct UnkStruct_800DC5EC *arg0) {
if (func_80290C20(arg0->camera) == 1) {
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
gSPDisplayList(gDisplayListHead++, d_course_luigi_raceway_packed_dl_9EC0);
// d_course_luigi_raceway_packed_dl_9EC0
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07009EC0));
}
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
@@ -790,8 +829,10 @@ void render_luigi_raceway(struct UnkStruct_800DC5EC *arg0) {
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
gSPDisplayList(gDisplayListHead++, d_course_luigi_raceway_packed_dl_E0);
gSPDisplayList(gDisplayListHead++, d_course_luigi_raceway_packed_dl_68);
// d_course_luigi_raceway_packed_dl_E0
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070000E0));
// d_course_luigi_raceway_packed_dl_68
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000068));
D_800DC5DC = 88;
D_800DC5E0 = 72;
@@ -849,14 +890,17 @@ void render_moo_moo_farm(struct UnkStruct_800DC5EC *arg0) {
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEI, G_CC_MODULATEI);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_packed_dl_4DF8);
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_packed_dl_5640);
// d_course_moo_moo_farm_packed_dl_4DF8
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07004DF8));
// d_course_moo_moo_farm_packed_dl_5640
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07005640));
gSPFogPosition(gDisplayListHead++, D_802B87B0, D_802B87B4);
load_surface_map((uintptr_t) moo_moo_farm_dls, arg0);
if ((temp_s0 < 14) && (temp_s0 > 10)) {
if ((temp_s1 == 2) || (temp_s1 == 3) || (temp_s1 == 1))
//
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_13FF8);
} else if (temp_s0 < 16) {
@@ -875,31 +919,34 @@ void render_moo_moo_farm(struct UnkStruct_800DC5EC *arg0) {
if ((temp_s0 >= 16) && (temp_s0 < 24)) {
if ((temp_s1 == 2) || (temp_s1 == 3))
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_packed_dl_5410);
// d_course_moo_moo_farm_packed_dl_5410
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07005410));
} else if (temp_s0 < 9) {
if (temp_s1 == 2)
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_packed_dl_5410);
// d_course_moo_moo_farm_packed_dl_5410
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07005410));
}
if (temp_s0 < 4) {
if (temp_s1 != 0)
if (temp_s1 != 0)
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_14060);
} else if (temp_s0 < 8) {
if (temp_s1 == 2)
if (temp_s1 == 2)
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_14060);
} else if (temp_s0 >= 22) {
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_14060);
} else if (temp_s0 >= 18) {
if ((temp_s1 == 0) || (temp_s1 == 3))
if ((temp_s1 == 0) || (temp_s1 == 3))
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_14060);
}
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_packed_dl_10C0);
// d_course_moo_moo_farm_packed_dl_10C0
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070010C0));
}
void render_toads_turnpike(struct UnkStruct_800DC5EC *arg0) {
@@ -920,9 +967,12 @@ void render_toads_turnpike(struct UnkStruct_800DC5EC *arg0) {
gDPSetRenderMode(gDisplayListHead++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2);
gDPSetCombineMode(gDisplayListHead++, G_CC_DECALRGBA, G_CC_PASS2);
gSPDisplayList(gDisplayListHead++, d_course_toads_turnpike_packed_dl_0);
gSPDisplayList(gDisplayListHead++, d_course_toads_turnpike_packed_dl_68);
gSPDisplayList(gDisplayListHead++, d_course_toads_turnpike_packed_dl_D8);
// d_course_toads_turnpike_packed_dl_0
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000000));
// d_course_toads_turnpike_packed_dl_68
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000068));
// d_course_toads_turnpike_packed_dl_D8
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070000D8));
gSPClearGeometryMode(gDisplayListHead++, G_FOG);
gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE);
}
@@ -938,20 +988,26 @@ void render_kalimari_desert(struct UnkStruct_800DC5EC *arg0) {
if (func_80290C20(arg0->camera) == 1) {
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_packed_dl_71C8);
// d_course_kalimari_desert_packed_dl_71C8
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070071C8));
}
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEI, G_CC_MODULATEI);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
load_surface_map((uintptr_t) kalimari_desert_dls, arg0);
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_packed_dl_1ED8);
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_packed_dl_1B18);
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_packed_dl_8330);
// d_course_kalimari_desert_packed_dl_1ED8
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07001ED8));
// d_course_kalimari_desert_packed_dl_1B18
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07001B18));
// d_course_kalimari_desert_packed_dl_8330
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07008330));
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_packed_dl_998);
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_packed_dl_270);
// d_course_kalimari_desert_packed_dl_998
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000998));
// d_course_kalimari_desert_packed_dl_270
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000270));
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
@@ -985,7 +1041,8 @@ void render_wario_stadium(struct UnkStruct_800DC5EC *arg0) {
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
gSPDisplayList(gDisplayListHead++, d_course_wario_stadium_packed_dl_A0C8);
// d_course_wario_stadium_packed_dl_A0C8
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x0700A0C8));
}
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATERGBA, G_CC_MODULATERGBA);
@@ -993,11 +1050,13 @@ void render_wario_stadium(struct UnkStruct_800DC5EC *arg0) {
load_surface_map((uintptr_t) wario_stadium_dls, arg0);
gSPDisplayList(gDisplayListHead++, d_course_wario_stadium_packed_dl_A228);
// d_course_wario_stadium_packed_dl_A228
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x0700A228));
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
gSPDisplayList(gDisplayListHead++, d_course_wario_stadium_packed_dl_A88);
// d_course_wario_stadium_packed_dl_A88
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000A88));
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
D_800DC5DC = 88;
@@ -1042,7 +1101,8 @@ void render_block_fort(UNUSED struct UnkStruct_800DC5EC *arg0) {
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH);
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
gSPDisplayList(gDisplayListHead++, d_course_block_fort_packed_dl_15C0);
// d_course_block_fort_packed_dl_15C0
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070015C0));
}
@@ -1051,15 +1111,22 @@ void render_skyscraper(UNUSED struct UnkStruct_800DC5EC *arg0) {
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH);
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
gSPDisplayList(gDisplayListHead++, d_course_skyscraper_packed_dl_FE8);
gSPDisplayList(gDisplayListHead++, d_course_skyscraper_packed_dl_C60);
gSPDisplayList(gDisplayListHead++, d_course_skyscraper_packed_dl_B70);
gSPDisplayList(gDisplayListHead++, d_course_skyscraper_packed_dl_6B8);
gSPDisplayList(gDisplayListHead++, d_course_skyscraper_packed_dl_570);
// d_course_skyscraper_packed_dl_FE8
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000FE8));
// d_course_skyscraper_packed_dl_C60
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000C60));
// d_course_skyscraper_packed_dl_B70
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000B70));
// d_course_skyscraper_packed_dl_6B8
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070006B8));
// d_course_skyscraper_packed_dl_570
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000570));
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
gSPDisplayList(gDisplayListHead++, d_course_skyscraper_packed_dl_10C8);
// d_course_skyscraper_packed_dl_10C8
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070010C8));
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
gSPDisplayList(gDisplayListHead++, d_course_skyscraper_packed_dl_258);
// d_course_skyscraper_packed_dl_258
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000258));
}
@@ -1070,7 +1137,8 @@ void render_double_deck(UNUSED struct UnkStruct_800DC5EC *arg0) {
gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH);
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
gSPDisplayList(gDisplayListHead++, d_course_double_deck_packed_dl_738);
// d_course_double_deck_packed_dl_738
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000738));
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
@@ -1086,7 +1154,8 @@ void render_dks_jungle_parkway(struct UnkStruct_800DC5EC *arg0) {
gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF);
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
gSPDisplayList(gDisplayListHead++, d_course_dks_jungle_parkway_packed_dl_92D8);
// d_course_dks_jungle_parkway_packed_dl_92D8
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070092D8));
}
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
@@ -1108,12 +1177,17 @@ void render_big_donut(struct UnkStruct_800DC5EC *arg0) {
if (func_80290C20(arg0->camera) == 1) {
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
gSPDisplayList(gDisplayListHead++, d_course_big_donut_packed_dl_DE8);
// d_course_big_donut_packed_dl_DE8
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000DE8));
}
gSPDisplayList(gDisplayListHead++, d_course_big_donut_packed_dl_450);
gSPDisplayList(gDisplayListHead++, d_course_big_donut_packed_dl_AC0);
gSPDisplayList(gDisplayListHead++, d_course_big_donut_packed_dl_D20);
gSPDisplayList(gDisplayListHead++, d_course_big_donut_packed_dl_230);
// d_course_big_donut_packed_dl_450
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000450));
// d_course_big_donut_packed_dl_AC0
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000AC0));
// d_course_big_donut_packed_dl_D20
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000D20));
// d_course_big_donut_packed_dl_230
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000230));
}
void func_8029569C(void) {
@@ -1306,11 +1380,14 @@ void func_80295D88(void) {
D_800DC5C8 = 0;
switch (gCurrentCourseId) {
case COURSE_MARIO_RACEWAY:
set_vertex_data_with_defaults(d_course_mario_raceway_packed_dl_1140);
// d_course_mario_raceway_packed_dl_1140
set_vertex_data_with_defaults((uintptr_t)0x07001140);
if (gScreenModeSelection == SCREEN_MODE_1P) {
set_vertex_data_with_defaults(d_course_mario_raceway_packed_dl_8E8);
// d_course_mario_raceway_packed_dl_8E8
set_vertex_data_with_defaults((uintptr_t)0x070008E8);
} else {
set_vertex_data_with_defaults(d_course_mario_raceway_packed_dl_2D68);
// d_course_mario_raceway_packed_dl_2D68
set_vertex_data_with_defaults((uintptr_t)0x07002D68);
}
parse_course_displaylists((uintptr_t) d_course_mario_raceway_addr);
func_80295C6C();
@@ -1328,12 +1405,18 @@ void func_80295D88(void) {
// Spawn guardrail only for CC_50 and time trials.
if ((gCCSelection != CC_50) && (gModeSelection != TIME_TRIALS)) {
nullify_displaylist(d_course_choco_mountain_packed_dl_0);
nullify_displaylist(d_course_choco_mountain_packed_dl_98);
nullify_displaylist(d_course_choco_mountain_packed_dl_178);
nullify_displaylist(d_course_choco_mountain_packed_dl_280);
nullify_displaylist(d_course_choco_mountain_packed_dl_340);
nullify_displaylist(d_course_choco_mountain_packed_dl_3C8);
// d_course_choco_mountain_packed_dl_0
nullify_displaylist((uintptr_t)0x07000000);
// d_course_choco_mountain_packed_dl_98
nullify_displaylist((uintptr_t)0x07000098);
// d_course_choco_mountain_packed_dl_178
nullify_displaylist((uintptr_t)0x07000178);
// d_course_choco_mountain_packed_dl_280
nullify_displaylist((uintptr_t)0x07000280);
// d_course_choco_mountain_packed_dl_340
nullify_displaylist((uintptr_t)0x07000340);
// d_course_choco_mountain_packed_dl_3C8
nullify_displaylist((uintptr_t)0x070003C8);
}
parse_course_displaylists((uintptr_t) &d_course_choco_mountain_addr);
func_802B5CAC(0x238E, 0x31C7, D_8015F590);
@@ -1343,7 +1426,8 @@ void func_80295D88(void) {
case COURSE_BOWSER_CASTLE:
parse_course_displaylists((uintptr_t) d_course_bowsers_castle_addr);
func_80295C6C();
find_vtx_and_set_colours(d_course_bowsers_castle_packed_dl_1350, 0x32, 0, 0, 0);
// d_course_bowsers_castle_packed_dl_1350
find_vtx_and_set_colours((uintptr_t)0x07001350, 0x32, 0, 0, 0);
D_8015F8E4 = -50.0f;
break;
case COURSE_BANSHEE_BOARDWALK:
@@ -1353,7 +1437,8 @@ void func_80295D88(void) {
D_801625F0 = 0;
parse_course_displaylists((uintptr_t) d_course_banshee_boardwalk_track_sections);
func_80295C6C();
find_vtx_and_set_colours(d_course_banshee_boardwalk_packed_dl_878, 128, 0, 0, 0);
// d_course_banshee_boardwalk_packed_dl_878
find_vtx_and_set_colours((uintptr_t)0x07000878, 128, 0, 0, 0);
D_8015F8E4 = -80.0f;
break;
case COURSE_YOSHI_VALLEY:
@@ -1370,10 +1455,14 @@ void func_80295D88(void) {
case COURSE_KOOPA_BEACH:
parse_course_displaylists((uintptr_t) d_course_koopa_troopa_beach_addr);
func_80295C6C();
find_vtx_and_set_colours(d_course_koopa_troopa_beach_packed_dl_ADE0, -0x6A, 255, 255, 255);
find_vtx_and_set_colours(d_course_koopa_troopa_beach_packed_dl_A540, -0x6A, 255, 255, 255);
find_vtx_and_set_colours(d_course_koopa_troopa_beach_packed_dl_9E70, -0x6A, 255, 255, 255);
find_vtx_and_set_colours(d_course_koopa_troopa_beach_packed_dl_358, -0x6A, 255, 255, 255);
// d_course_koopa_troopa_beach_packed_dl_ADE0
find_vtx_and_set_colours((uintptr_t)0x0700ADE0, -0x6A, 255, 255, 255);
// d_course_koopa_troopa_beach_packed_dl_A540
find_vtx_and_set_colours((uintptr_t)0x0700A540, -0x6A, 255, 255, 255);
// d_course_koopa_troopa_beach_packed_dl_9E70
find_vtx_and_set_colours((uintptr_t)0x07009E70, -0x6A, 255, 255, 255);
// d_course_koopa_troopa_beach_packed_dl_358
find_vtx_and_set_colours((uintptr_t)0x07000358, -0x6A, 255, 255, 255);
break;
case COURSE_ROYAL_RACEWAY:
parse_course_displaylists((uintptr_t) d_course_royal_raceway_addr);
@@ -1409,48 +1498,66 @@ void func_80295D88(void) {
parse_course_displaylists((uintptr_t) d_course_sherbet_land_addr);
func_80295C6C();
D_8015F8E4 = -18.0f;
find_vtx_and_set_colours(d_course_sherbet_land_packed_dl_1EB8, -0x4C, 255, 255, 255);
find_vtx_and_set_colours(d_course_sherbet_land_packed_dl_2308, -0x6A, 255, 255, 255);
// d_course_sherbet_land_packed_dl_1EB8
find_vtx_and_set_colours((uintptr_t)0x07001EB8, -0x4C, 255, 255, 255);
// d_course_sherbet_land_packed_dl_2308
find_vtx_and_set_colours((uintptr_t)0x07002308, -0x6A, 255, 255, 255);
break;
case COURSE_RAINBOW_ROAD:
D_800DC5C8 = 1;
parse_course_displaylists((uintptr_t) d_course_rainbow_road_addr);
func_80295C6C();
D_8015F8E4 = 0.0f;
find_vtx_and_set_colours(d_course_rainbow_road_packed_dl_2068, -0x6A, 255, 255, 255);
find_vtx_and_set_colours(d_course_rainbow_road_packed_dl_1E18, -0x6A, 255, 255, 255);
find_vtx_and_set_colours(d_course_rainbow_road_packed_dl_1318, 255, 255, 255, 0);
// d_course_rainbow_road_packed_dl_2068
find_vtx_and_set_colours((uintptr_t)0x07002068, -0x6A, 255, 255, 255);
// d_course_rainbow_road_packed_dl_1E18
find_vtx_and_set_colours((uintptr_t)0x07001E18, -0x6A, 255, 255, 255);
// d_course_rainbow_road_packed_dl_1318
find_vtx_and_set_colours((uintptr_t)0x07001318, 255, 255, 255, 0);
if (gGamestate != CREDITS_SEQUENCE) {
find_vtx_and_set_colours(d_course_rainbow_road_packed_dl_1FB8, -0x6A, 255, 255, 255);
// d_course_rainbow_road_packed_dl_1FB8
find_vtx_and_set_colours((uintptr_t)0x07001FB8, -0x6A, 255, 255, 255);
}
break;
case COURSE_WARIO_STADIUM:
parse_course_displaylists((uintptr_t) d_course_wario_stadium_addr);
func_80295C6C();
D_8015F8E4 = D_8015F6EE - 10.0f;
find_vtx_and_set_colours(d_course_wario_stadium_packed_dl_C50, 100, 255, 255, 255);
find_vtx_and_set_colours(d_course_wario_stadium_packed_dl_BD8, 100, 255, 255, 255);
find_vtx_and_set_colours(d_course_wario_stadium_packed_dl_B60, 100, 255, 255, 255);
find_vtx_and_set_colours(d_course_wario_stadium_packed_dl_AE8, 100, 255, 255, 255);
find_vtx_and_set_colours(d_course_wario_stadium_packed_dl_CC8, 100, 255, 255, 255);
find_vtx_and_set_colours(d_course_wario_stadium_packed_dl_D50, 100, 255, 255, 255);
find_vtx_and_set_colours(d_course_wario_stadium_packed_dl_DD0, 100, 255, 255, 255);
find_vtx_and_set_colours(d_course_wario_stadium_packed_dl_E48, 100, 255, 255, 255);
// d_course_wario_stadium_packed_dl_C50
find_vtx_and_set_colours((uintptr_t)0x07000C50, 100, 255, 255, 255);
// d_course_wario_stadium_packed_dl_BD8
find_vtx_and_set_colours((uintptr_t)0x07000BD8, 100, 255, 255, 255);
// d_course_wario_stadium_packed_dl_B60
find_vtx_and_set_colours((uintptr_t)0x07000B60, 100, 255, 255, 255);
// d_course_wario_stadium_packed_dl_AE8
find_vtx_and_set_colours((uintptr_t)0x07000AE8, 100, 255, 255, 255);
// d_course_wario_stadium_packed_dl_CC8
find_vtx_and_set_colours((uintptr_t)0x07000CC8, 100, 255, 255, 255);
// d_course_wario_stadium_packed_dl_D50
find_vtx_and_set_colours((uintptr_t)0x07000D50, 100, 255, 255, 255);
// d_course_wario_stadium_packed_dl_DD0
find_vtx_and_set_colours((uintptr_t)0x07000DD0, 100, 255, 255, 255);
// d_course_wario_stadium_packed_dl_E48
find_vtx_and_set_colours((uintptr_t)0x07000E48, 100, 255, 255, 255);
break;
case COURSE_BLOCK_FORT:
set_vertex_data_with_default_section_id(d_course_block_fort_packed_dl_15C0, 1);
// d_course_block_fort_packed_dl_15C0
set_vertex_data_with_default_section_id((uintptr_t)0x070015C0, 1);
func_80295C6C();
D_8015F8E4 = D_8015F6EE - 10.0f;
break;
case COURSE_SKYSCRAPER:
set_vertex_data_with_default_section_id(d_course_skyscraper_packed_dl_1110, 1);
set_vertex_data_with_default_section_id(d_course_skyscraper_packed_dl_258, 1);
// d_course_skyscraper_packed_dl_1110
set_vertex_data_with_default_section_id((uintptr_t)0x07001110, 1);
// d_course_skyscraper_packed_dl_258
set_vertex_data_with_default_section_id((uintptr_t)0x07000258, 1);
func_80295C6C();
D_8015F8E4 = -480.0f;
break;
case COURSE_DOUBLE_DECK:
set_vertex_data_with_default_section_id(d_course_double_deck_packed_dl_738, 1);
// d_course_double_deck_packed_dl_738
set_vertex_data_with_default_section_id((uintptr_t)0x07000738, 1);
func_80295C6C();
D_8015F8E4 = D_8015F6EE - 10.0f;
break;
@@ -1458,14 +1565,20 @@ void func_80295D88(void) {
parse_course_displaylists((uintptr_t) d_course_dks_jungle_parkway_addr);
func_80295C6C();
D_8015F8E4 = -475.0f;
find_vtx_and_set_colours(d_course_dks_jungle_parkway_packed_dl_3FA8, 120, 255, 255, 255);
// d_course_dks_jungle_parkway_packed_dl_3FA8
find_vtx_and_set_colours((uintptr_t)0x07003FA8, 120, 255, 255, 255);
break;
case COURSE_BIG_DONUT:
set_vertex_data_with_default_section_id(d_course_big_donut_packed_dl_1018, 6);
set_vertex_data_with_default_section_id(d_course_big_donut_packed_dl_450, 6);
set_vertex_data_with_default_section_id(d_course_big_donut_packed_dl_AC0, 6);
set_vertex_data_with_default_section_id(d_course_big_donut_packed_dl_B58, 6);
set_vertex_data_with_default_section_id(d_course_big_donut_packed_dl_230, 6);
// d_course_big_donut_packed_dl_1018
set_vertex_data_with_default_section_id((uintptr_t)0x07001018, 6);
// d_course_big_donut_packed_dl_450
set_vertex_data_with_default_section_id((uintptr_t)0x07000450, 6);
// d_course_big_donut_packed_dl_AC0
set_vertex_data_with_default_section_id((uintptr_t)0x07000AC0, 6);
// d_course_big_donut_packed_dl_B58
set_vertex_data_with_default_section_id((uintptr_t)0x07000B58, 6);
// d_course_big_donut_packed_dl_230
set_vertex_data_with_default_section_id((uintptr_t)0x07000230, 6);
func_80295C6C();
D_8015F8E4 = 100.0f;
break;
@@ -1492,8 +1605,10 @@ void func_802966A0(void) {
D_802B87C4 = 0;
}
// waterfall animation
find_and_set_tile_size(d_course_koopa_troopa_beach_packed_dl_9D58, 0, D_802B87BC);
find_and_set_tile_size(d_course_koopa_troopa_beach_packed_dl_9CD0, 0, D_802B87C4);
// d_course_koopa_troopa_beach_packed_dl_9D58
find_and_set_tile_size((uintptr_t)0x07009D58, 0, D_802B87BC);
// d_course_koopa_troopa_beach_packed_dl_9CD0
find_and_set_tile_size((uintptr_t)0x07009CD0, 0, D_802B87C4);
D_802B87CC = random_int(300) / 40;
if (D_802B87C8 < 0) {
D_802B87C8 = random_int(300) / 40;
@@ -1501,7 +1616,8 @@ void func_802966A0(void) {
D_802B87C8 = -(random_int(300) / 40);
}
// Waterfall bubbling effect? (unused)
find_and_set_tile_size(d_course_koopa_troopa_beach_packed_dl_2E8, D_802B87C8, D_802B87CC);
// d_course_koopa_troopa_beach_packed_dl_2E8
find_and_set_tile_size((uintptr_t)0x070002E8, D_802B87C8, D_802B87CC);
break;
case COURSE_BANSHEE_BOARDWALK:
D_802B87BC++;
@@ -1509,31 +1625,39 @@ void func_802966A0(void) {
if (D_802B87BC >= 0x100) {
D_802B87BC = 0;
}
find_and_set_tile_size((uintptr_t) d_course_banshee_boardwalk_dl_B278, 0, D_802B87BC);
find_and_set_tile_size(d_course_banshee_boardwalk_dl_B278, 0, D_802B87BC);
break;
case COURSE_ROYAL_RACEWAY:
D_802B87BC -= 20;
if (D_802B87BC < 0) {
D_802B87BC = 0xFF;
}
find_and_set_tile_size(d_course_royal_raceway_packed_dl_A6A8, 0, D_802B87BC);
find_and_set_tile_size(d_course_royal_raceway_packed_dl_A648, 0, D_802B87BC);
// d_course_royal_raceway_packed_dl_A6A8
find_and_set_tile_size((uintptr_t)0x0700A6A8, 0, D_802B87BC);
// d_course_royal_raceway_packed_dl_A648
find_and_set_tile_size((uintptr_t)0x0700A648, 0, D_802B87BC);
break;
case COURSE_DK_JUNGLE:
D_802B87BC += 2;
if (D_802B87BC > 255) {
D_802B87BC = 0;
}
find_and_set_tile_size(d_course_dks_jungle_parkway_packed_dl_3DD0, 0, D_802B87BC);
find_and_set_tile_size(d_course_dks_jungle_parkway_packed_dl_3E40, 0, D_802B87BC);
find_and_set_tile_size(d_course_dks_jungle_parkway_packed_dl_3EB0, 0, D_802B87BC);
find_and_set_tile_size(d_course_dks_jungle_parkway_packed_dl_3F30, 0, D_802B87BC);
find_and_set_tile_size(d_course_dks_jungle_parkway_packed_dl_36A8, 0, D_802B87BC);
// d_course_dks_jungle_parkway_packed_dl_3DD0
find_and_set_tile_size((uintptr_t)0x07003DD0, 0, D_802B87BC);
// d_course_dks_jungle_parkway_packed_dl_3E40
find_and_set_tile_size((uintptr_t)0x07003E40, 0, D_802B87BC);
// d_course_dks_jungle_parkway_packed_dl_3EB0
find_and_set_tile_size((uintptr_t)0x07003EB0, 0, D_802B87BC);
// d_course_dks_jungle_parkway_packed_dl_3F30
find_and_set_tile_size((uintptr_t)0x07003F30, 0, D_802B87BC);
// d_course_dks_jungle_parkway_packed_dl_36A8
find_and_set_tile_size((uintptr_t)0x070036A8, 0, D_802B87BC);
D_802B87C4 -= 20;
if (D_802B87C4 < 0) {
D_802B87C4 = 0xFF;
}
find_and_set_tile_size(d_course_dks_jungle_parkway_packed_dl_9880, 0, D_802B87C4);
// d_course_dks_jungle_parkway_packed_dl_9880
find_and_set_tile_size((uintptr_t)0x07009880, 0, D_802B87C4);
func_80298C94();
break;
}