mirror of https://github.com/n64decomp/mk64.git
Rename surface map to collision mesh (#637)
This commit is contained in:
parent
bbf45b44de
commit
8389b71004
|
|
@ -430,7 +430,7 @@ diff --git a/src/racing/render_courses.c b/src/racing/render_courses.c
|
|||
index c2a84aa..338e2bd 100644
|
||||
--- a/src/racing/render_courses.c
|
||||
+++ b/src/racing/render_courses.c
|
||||
@@ -180,6 +180,11 @@ void load_surface_map(uintptr_t addr, struct UnkStruct_800DC5EC *arg1) {
|
||||
@@ -180,6 +180,11 @@ void render_course_segments(uintptr_t addr, struct UnkStruct_800DC5EC *arg1) {
|
||||
arg1->pathCounter = temp_v1;
|
||||
temp_v1 = ((temp_v1 - 1) * 4) + var_a3;
|
||||
|
||||
|
|
|
|||
|
|
@ -203,15 +203,17 @@ typedef struct {
|
|||
//bit 4: 1 = out of bounds
|
||||
//bit 3: 1 = player tumbles upon contact (may fall right through)
|
||||
/* 0x02 */ u16 surfaceType;
|
||||
/* 0x04 */ s16 vtx31;
|
||||
s16 vtx32;
|
||||
s16 vtx33; //X, Y, Z of poly's third vertex
|
||||
s16 vtx21;
|
||||
s16 vtx22;
|
||||
/* 0x0A */ s16 vtx23; //X, Y, Z of poly's second vertex
|
||||
/* 0x10 */ Vtx *vtxPoly1; //pointer to the 3 vertices of this poly
|
||||
Vtx *vtxPoly2;
|
||||
Vtx *vtxPoly3;
|
||||
|
||||
// For AABB bounding-box style collision. Box style collision is cheaper than checking each vtx.
|
||||
/* 0x04 */ s16 minX; // Minimum x coordinate
|
||||
s16 minY; // Minimum y coordinate
|
||||
s16 minZ; // Minimum z coordinate
|
||||
s16 maxX; // Maximum x coordinate
|
||||
s16 maxY; // Maximum y coordinate
|
||||
/* 0x0A */ s16 maxZ; // Maximum z coordinate
|
||||
/* 0x10 */ Vtx *vtx1; //pointer to the 3 vertices of this poly
|
||||
Vtx *vtx2;
|
||||
Vtx *vtx3;
|
||||
//unsure why this exists along with a copy of two of the vertices.
|
||||
//both are involved in hit detection.
|
||||
/* 0x1C */ f32 height;
|
||||
|
|
@ -227,17 +229,17 @@ typedef struct {
|
|||
/* 0x24 */ f32 rotation; //normally about -0.001. no idea what this actually is.
|
||||
/* 0x28 */ f32 height2; //changes Y position of all vertices (but not graphics or
|
||||
//Lakitu drop position). Normally set to (track_height * -1) + about 6.
|
||||
} mk64_surface_map_ram; // size = 0x2C
|
||||
} CollisionTriangle; // size = 0x2C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f cornerPos;
|
||||
// Type of surface the corner is above
|
||||
/* 0x0C */ u8 surfaceType;
|
||||
// Close to being a copy of the top byte of the surface_map "flag" member
|
||||
// Close to being a copy of the top byte of the CollisionTriangle "flags" member
|
||||
/* 0x0D */ u8 surfaceFlags;
|
||||
// Don't know if "tile" is right the right term
|
||||
// gSurfaceMap is a pointer to an array of "tile" structs. This is an index to that array
|
||||
/* 0x0E */ u16 surfaceMapIndex;
|
||||
// gCollisionMesh is a pointer to an array of "tile" structs. This is an index to that array
|
||||
/* 0x0E */ u16 collisionMeshIndex;
|
||||
// cornerPos places the corner "in the air" as it were, this member indicates the Y position of the corner's "on the ground" sibling
|
||||
// On flat ground this value should be cornerY - gKartBoundingBoxTable[characterId]
|
||||
/* 0x10 */ f32 cornerGroundY;
|
||||
|
|
|
|||
|
|
@ -70,9 +70,9 @@ s16 gCreditsCourseId = COURSE_LUIGI_RACEWAY;
|
|||
s16 gPlaceItemBoxes = 1;
|
||||
|
||||
// Technically a pointer to an array, but declaring it so creates regalloc issues.
|
||||
mk64_surface_map_ram *gSurfaceMap;
|
||||
CollisionTriangle *gCollisionMesh;
|
||||
u16 *D_8015F584;
|
||||
u16 D_8015F588; // Number of entries in gSurfaceMap
|
||||
u16 gCollisionMeshCount; // Number of entries in gCollisionMesh
|
||||
u16 D_8015F58A;
|
||||
u32 D_8015F58C;
|
||||
|
||||
|
|
|
|||
|
|
@ -67,9 +67,9 @@ extern s32 gIsMirrorMode; // D_800DC604
|
|||
extern s16 gCreditsCourseId;
|
||||
extern s16 gPlaceItemBoxes;
|
||||
|
||||
extern mk64_surface_map_ram *gSurfaceMap;
|
||||
extern CollisionTriangle *gCollisionMesh;
|
||||
extern u16 *D_8015F584;
|
||||
extern u16 D_8015F588;
|
||||
extern u16 gCollisionMeshCount;
|
||||
extern u16 D_8015F58A;
|
||||
extern u32 D_8015F58C;
|
||||
|
||||
|
|
|
|||
|
|
@ -151,10 +151,10 @@ void load_credits(void) {
|
|||
D_8015F59C = 0;
|
||||
D_8015F5A0 = 0;
|
||||
D_8015F58C = 0;
|
||||
D_8015F588 = 0;
|
||||
gCollisionMeshCount = 0;
|
||||
D_800DC5BC = 0;
|
||||
D_800DC5C8 = 0;
|
||||
gSurfaceMap = (mk64_surface_map_ram *) gNextFreeMemoryAddress;
|
||||
gCollisionMesh = (CollisionTriangle *) gNextFreeMemoryAddress;
|
||||
camera->pos[0] = 1400.0f;
|
||||
camera->pos[1] = 300.0f;
|
||||
camera->pos[2] = 1400.0f;
|
||||
|
|
|
|||
|
|
@ -127,31 +127,31 @@ void load_ceremony_cutscene(void) {
|
|||
D_8015F59C = 0;
|
||||
D_8015F5A0 = 0;
|
||||
D_8015F58C = 0;
|
||||
D_8015F588 = (u16)0;
|
||||
gCollisionMeshCount = (u16)0;
|
||||
D_800DC5BC = (u16)0;
|
||||
D_800DC5C8 = (u16)0;
|
||||
gSurfaceMap = (mk64_surface_map_ram *) gNextFreeMemoryAddress;
|
||||
gCollisionMesh = (CollisionTriangle *) gNextFreeMemoryAddress;
|
||||
//! @bug these segmented addresses need to be symbols for mobility
|
||||
// d_course_royal_raceway_packed_dl_67E8
|
||||
set_vertex_data_with_default_section_id((Gfx *)0x070067E8, -1);
|
||||
generate_collision_mesh_with_default_section_id((Gfx *)0x070067E8, -1);
|
||||
// d_course_royal_raceway_packed_dl_AEF8
|
||||
set_vertex_data_with_default_section_id((Gfx *)0x0700AEF8, -1);
|
||||
generate_collision_mesh_with_default_section_id((Gfx *)0x0700AEF8, -1);
|
||||
// d_course_royal_raceway_packed_dl_A970
|
||||
set_vertex_data_with_default_section_id((Gfx *)0x0700A970, 8);
|
||||
generate_collision_mesh_with_default_section_id((Gfx *)0x0700A970, 8);
|
||||
// d_course_royal_raceway_packed_dl_AC30
|
||||
set_vertex_data_with_default_section_id((Gfx *)0x0700AC30, 8);
|
||||
generate_collision_mesh_with_default_section_id((Gfx *)0x0700AC30, 8);
|
||||
// d_course_royal_raceway_packed_dl_CE0
|
||||
set_vertex_data_with_default_section_id((Gfx *)0x07000CE0, 0x10);
|
||||
generate_collision_mesh_with_default_section_id((Gfx *)0x07000CE0, 0x10);
|
||||
// d_course_royal_raceway_packed_dl_E88
|
||||
set_vertex_data_with_default_section_id((Gfx *)0x07000E88, 0x10);
|
||||
generate_collision_mesh_with_default_section_id((Gfx *)0x07000E88, 0x10);
|
||||
// d_course_royal_raceway_packed_dl_A618
|
||||
set_vertex_data_with_default_section_id((Gfx *)0x0700A618, -1);
|
||||
generate_collision_mesh_with_default_section_id((Gfx *)0x0700A618, -1);
|
||||
// d_course_royal_raceway_packed_dl_A618
|
||||
set_vertex_data_with_default_section_id((Gfx *)0x0700A618, -1);
|
||||
generate_collision_mesh_with_default_section_id((Gfx *)0x0700A618, -1);
|
||||
// d_course_royal_raceway_packed_dl_23F8
|
||||
set_vertex_data_with_default_section_id((Gfx *)0x070023F8, 1);
|
||||
generate_collision_mesh_with_default_section_id((Gfx *)0x070023F8, 1);
|
||||
// d_course_royal_raceway_packed_dl_2478
|
||||
set_vertex_data_with_default_section_id((Gfx *)0x07002478, 1);
|
||||
generate_collision_mesh_with_default_section_id((Gfx *)0x07002478, 1);
|
||||
func_80295C6C();
|
||||
debug_switch_character_ceremony_cutscene();
|
||||
func_802818BC();
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -31,9 +31,9 @@ void set_vtx_buffer(uintptr_t, u32, u32);
|
|||
s32 is_line_intersecting_rectangle(s16, s16, s16, s16, s16, s16, s16, s16);
|
||||
s32 is_triangle_intersecting_bounding_box(s16, s16, s16, s16, u16);
|
||||
void func_802AF314(void);
|
||||
void set_vertex_data_with_defaults(Gfx*);
|
||||
void set_vertex_data_with_default_section_id(Gfx*, s8);
|
||||
void find_and_set_vertex_data(Gfx*, s8, u16);
|
||||
void generate_collision_mesh_with_defaults(Gfx*);
|
||||
void generate_collision_mesh_with_default_section_id(Gfx*, s8);
|
||||
void generate_collision_mesh(Gfx*, s8, u16);
|
||||
void find_and_set_tile_size(uintptr_t, s32, s32);
|
||||
void set_vertex_colours(u32, u32, s32, s8, u8, u8, u8);
|
||||
void find_vtx_and_set_colours(uintptr_t, s8, u8, u8, u8);
|
||||
|
|
|
|||
|
|
@ -64,14 +64,14 @@ void parse_course_displaylists(uintptr_t addr) {
|
|||
} else {
|
||||
D_8015F5A4 = 0;
|
||||
}
|
||||
find_and_set_vertex_data(section->addr, section->surfaceType, section->sectionId);
|
||||
generate_collision_mesh(section->addr, section->surfaceType, section->sectionId);
|
||||
section++;
|
||||
}
|
||||
}
|
||||
|
||||
extern u32 isFlycam;
|
||||
|
||||
void load_surface_map(uintptr_t addr, struct UnkStruct_800DC5EC *arg1) {
|
||||
void render_course_segments(uintptr_t addr, struct UnkStruct_800DC5EC *arg1) {
|
||||
Player *player = arg1->player;
|
||||
Camera *camera = arg1->camera;
|
||||
u32 segment = SEGMENT_NUMBER2(addr);
|
||||
|
|
@ -79,7 +79,7 @@ void load_surface_map(uintptr_t addr, struct UnkStruct_800DC5EC *arg1) {
|
|||
//! @todo Should be Gfx*
|
||||
s32 *gfx = (s32 *) VIRTUAL_TO_PHYSICAL2(gSegmentTable[segment] + offset);
|
||||
s16 var_a3;
|
||||
s16 temp_v1;
|
||||
s16 index;
|
||||
s16 sp1E;
|
||||
s16 temp_v0_3;
|
||||
u16 rot;
|
||||
|
|
@ -118,70 +118,70 @@ void load_surface_map(uintptr_t addr, struct UnkStruct_800DC5EC *arg1) {
|
|||
if (D_80152300[camera - camera1] == 1) {
|
||||
sp1E = func_802ABD40(camera->unk_54.unk3A);
|
||||
temp_v0_3 = func_802ABD40(player->unk_110.unk3A);
|
||||
temp_v1 = sp1E - temp_v0_3;
|
||||
if ((temp_v1 < 2) && (temp_v1 >= -1)) {
|
||||
index = sp1E - temp_v0_3;
|
||||
if ((index < 2) && (index >= -1)) {
|
||||
if (sp1E == 255) {
|
||||
if (temp_v0_3 == 255) {
|
||||
temp_v1 = arg1->pathCounter;
|
||||
index = arg1->pathCounter;
|
||||
} else if (player->unk_110.unk3C[2] > 30.0f) {
|
||||
temp_v1 = arg1->pathCounter;
|
||||
index = arg1->pathCounter;
|
||||
} else {
|
||||
temp_v1 = temp_v0_3;
|
||||
index = temp_v0_3;
|
||||
}
|
||||
} else if (camera->unk_54.unk3C[2] > 30.0f) {
|
||||
temp_v1 = arg1->pathCounter;
|
||||
index = arg1->pathCounter;
|
||||
} else {
|
||||
temp_v1 = sp1E;
|
||||
index = sp1E;
|
||||
}
|
||||
} else {
|
||||
|
||||
switch(gCurrentCourseId) {
|
||||
case COURSE_BOWSER_CASTLE:
|
||||
if ((temp_v0_3 >= 0x11) && (temp_v0_3 < 0x18)) {
|
||||
temp_v1 = temp_v0_3;
|
||||
index = temp_v0_3;
|
||||
} else if ((temp_v0_3 == 255) && (sp1E != 255)) {
|
||||
temp_v1 = sp1E;
|
||||
index = sp1E;
|
||||
} else if ((temp_v0_3 != 255) && (sp1E == 255)) {
|
||||
temp_v1 = temp_v0_3;
|
||||
index = temp_v0_3;
|
||||
} else {
|
||||
temp_v1 = arg1->pathCounter;
|
||||
index = arg1->pathCounter;
|
||||
}
|
||||
break;
|
||||
case COURSE_CHOCO_MOUNTAIN:
|
||||
if ((temp_v0_3 >= 0xE) && (temp_v0_3 < 0x16)) {
|
||||
temp_v1 = temp_v0_3;
|
||||
index = temp_v0_3;
|
||||
} else if ((temp_v0_3 == 255) && (sp1E != 255)) {
|
||||
temp_v1 = sp1E;
|
||||
index = sp1E;
|
||||
} else if ((temp_v0_3 != 255) && (sp1E == 255)) {
|
||||
temp_v1 = temp_v0_3;
|
||||
index = temp_v0_3;
|
||||
} else {
|
||||
temp_v1 = arg1->pathCounter;
|
||||
index = arg1->pathCounter;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (temp_v0_3 == 255) {
|
||||
temp_v1 = arg1->pathCounter;
|
||||
index = arg1->pathCounter;
|
||||
} else if (player->unk_110.unk3C[2] > 30.0f) {
|
||||
temp_v1 = arg1->pathCounter;
|
||||
index = arg1->pathCounter;
|
||||
} else {
|
||||
temp_v1 = temp_v0_3;
|
||||
index = temp_v0_3;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
temp_v1 = func_802ABD40(camera->unk_54.unk3A);
|
||||
index = func_802ABD40(camera->unk_54.unk3A);
|
||||
if (camera->unk_54.unk3C[2] > 30.0f) {
|
||||
temp_v1 = arg1->pathCounter;
|
||||
} else if (temp_v1 == 255) {
|
||||
temp_v1 = arg1->pathCounter;
|
||||
index = arg1->pathCounter;
|
||||
} else if (index == 255) {
|
||||
index = arg1->pathCounter;
|
||||
}
|
||||
}
|
||||
|
||||
arg1->pathCounter = temp_v1;
|
||||
temp_v1 = ((temp_v1 - 1) * 4) + var_a3;
|
||||
arg1->pathCounter = index;
|
||||
index = ((index - 1) * 4) + var_a3;
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, gfx[temp_v1]);
|
||||
gSPDisplayList(gDisplayListHead++, gfx[index]);
|
||||
}
|
||||
|
||||
void func_80291198(void) {
|
||||
|
|
@ -287,7 +287,7 @@ void func_8029122C(struct UnkStruct_800DC5EC *arg0, s32 playerId) {
|
|||
gDPSetBlendMask(gDisplayListHead++, 0xFF);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
load_surface_map((uintptr_t)d_course_koopa_troopa_beach_dl_list2, arg0);
|
||||
render_course_segments((uintptr_t)d_course_koopa_troopa_beach_dl_list2, arg0);
|
||||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 1, 1, G_OFF);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE);
|
||||
|
|
@ -305,7 +305,7 @@ void func_8029122C(struct UnkStruct_800DC5EC *arg0, s32 playerId) {
|
|||
|
||||
mtxf_identity(matrix);
|
||||
render_set_position(matrix, 0);
|
||||
load_surface_map((uintptr_t) sherbet_land_dls_2, arg0);
|
||||
render_course_segments((uintptr_t) sherbet_land_dls_2, arg0);
|
||||
|
||||
gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE);
|
||||
if ((func_80290C20(arg0->camera) == 1) && (func_802AAB4C(player) < player->pos[1])) {
|
||||
|
|
@ -322,7 +322,7 @@ void func_8029122C(struct UnkStruct_800DC5EC *arg0, s32 playerId) {
|
|||
mtxf_identity(matrix);
|
||||
render_set_position(matrix, 0);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
load_surface_map((uintptr_t) &d_course_rainbow_road_dl_list, arg0);
|
||||
render_course_segments((uintptr_t) &d_course_rainbow_road_dl_list, arg0);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE);
|
||||
gDPPipeSync(gDisplayListHead++);
|
||||
|
|
@ -608,7 +608,7 @@ void render_mario_raceway(struct UnkStruct_800DC5EC *arg0) {
|
|||
// d_course_mario_raceway_packed_dl_14A0
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070014A0));
|
||||
|
||||
load_surface_map((uintptr_t) mario_raceway_dls, arg0);
|
||||
render_course_segments((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);
|
||||
|
|
@ -655,7 +655,7 @@ void render_choco_mountain(struct UnkStruct_800DC5EC *arg0) {
|
|||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07005868));
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
|
||||
load_surface_map((uintptr_t) choco_mountain_dls, arg0);
|
||||
render_course_segments((uintptr_t) choco_mountain_dls, arg0);
|
||||
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2);
|
||||
|
|
@ -693,7 +693,7 @@ void render_bowsers_castle(struct UnkStruct_800DC5EC *arg0) {
|
|||
if (D_802B87BC > 255) {
|
||||
D_802B87BC = 0;
|
||||
}
|
||||
load_surface_map((uintptr_t) bowsers_castle_dls, arg0);
|
||||
render_course_segments((uintptr_t) bowsers_castle_dls, arg0);
|
||||
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
|
||||
|
|
@ -732,7 +732,7 @@ void render_banshee_boardwalk(struct UnkStruct_800DC5EC *arg0) {
|
|||
// d_course_banshee_boardwalk_packed_dl_69B0
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070069B0));
|
||||
|
||||
load_surface_map((uintptr_t) banshee_boardwalk_dls, arg0);
|
||||
render_course_segments((uintptr_t) banshee_boardwalk_dls, arg0);
|
||||
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
|
|
@ -766,7 +766,7 @@ void render_yoshi_valley(struct UnkStruct_800DC5EC *arg0) {
|
|||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEI, G_CC_MODULATEI);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
load_surface_map((uintptr_t) d_course_yoshi_valley_dl_list, arg0);
|
||||
render_course_segments((uintptr_t) d_course_yoshi_valley_dl_list, arg0);
|
||||
gDPPipeSync(gDisplayListHead++);
|
||||
}
|
||||
|
||||
|
|
@ -785,7 +785,7 @@ void render_frappe_snowland(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);
|
||||
load_surface_map((uintptr_t) d_course_frappe_snowland_dl_list, arg0);
|
||||
render_course_segments((uintptr_t) d_course_frappe_snowland_dl_list, arg0);
|
||||
}
|
||||
|
||||
void render_koopa_troopa_beach(struct UnkStruct_800DC5EC *arg0) {
|
||||
|
|
@ -805,7 +805,7 @@ void render_koopa_troopa_beach(struct UnkStruct_800DC5EC *arg0) {
|
|||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
||||
// 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);
|
||||
render_course_segments((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);
|
||||
|
|
@ -833,7 +833,7 @@ void render_royal_raceway(struct UnkStruct_800DC5EC *arg0) {
|
|||
// d_course_royal_raceway_packed_dl_A648
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x0700A648));
|
||||
|
||||
load_surface_map((uintptr_t) royal_raceway_dls, arg0);
|
||||
render_course_segments((uintptr_t) royal_raceway_dls, arg0);
|
||||
|
||||
// d_course_royal_raceway_packed_dl_11A8
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070011A8));
|
||||
|
|
@ -865,7 +865,7 @@ void render_luigi_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);
|
||||
|
||||
load_surface_map((uintptr_t) luigi_raceway_dls, arg0);
|
||||
render_course_segments((uintptr_t) luigi_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);
|
||||
|
|
@ -936,7 +936,7 @@ void render_moo_moo_farm(struct UnkStruct_800DC5EC *arg0) {
|
|||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07005640));
|
||||
gSPFogPosition(gDisplayListHead++, D_802B87B0, D_802B87B4);
|
||||
|
||||
load_surface_map((uintptr_t) moo_moo_farm_dls, arg0);
|
||||
render_course_segments((uintptr_t) moo_moo_farm_dls, arg0);
|
||||
|
||||
if ((temp_s0 < 14) && (temp_s0 > 10)) {
|
||||
if ((temp_s1 == 2) || (temp_s1 == 3) || (temp_s1 == 1))
|
||||
|
|
@ -1003,7 +1003,7 @@ void render_toads_turnpike(struct UnkStruct_800DC5EC *arg0) {
|
|||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEI, G_CC_PASS2);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2);
|
||||
|
||||
load_surface_map((uintptr_t) d_course_toads_turnpike_dl_list, arg0);
|
||||
render_course_segments((uintptr_t) d_course_toads_turnpike_dl_list, arg0);
|
||||
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_DECALRGBA, G_CC_PASS2);
|
||||
|
|
@ -1034,7 +1034,7 @@ void render_kalimari_desert(struct UnkStruct_800DC5EC *arg0) {
|
|||
|
||||
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);
|
||||
render_course_segments((uintptr_t) kalimari_desert_dls, arg0);
|
||||
// d_course_kalimari_desert_packed_dl_1ED8
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07001ED8));
|
||||
// d_course_kalimari_desert_packed_dl_1B18
|
||||
|
|
@ -1058,7 +1058,7 @@ void render_sherbet_land(struct UnkStruct_800DC5EC *arg0) {
|
|||
gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH);
|
||||
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) sherbet_land_dls, arg0);
|
||||
render_course_segments((uintptr_t) sherbet_land_dls, arg0);
|
||||
}
|
||||
|
||||
void render_rainbow_road(UNUSED struct UnkStruct_800DC5EC *arg0) {
|
||||
|
|
@ -1088,7 +1088,7 @@ void render_wario_stadium(struct UnkStruct_800DC5EC *arg0) {
|
|||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATERGBA, G_CC_MODULATERGBA);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
||||
|
||||
load_surface_map((uintptr_t) wario_stadium_dls, arg0);
|
||||
render_course_segments((uintptr_t) wario_stadium_dls, arg0);
|
||||
|
||||
// d_course_wario_stadium_packed_dl_A228
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x0700A228));
|
||||
|
|
@ -1201,7 +1201,7 @@ void render_dks_jungle_parkway(struct UnkStruct_800DC5EC *arg0) {
|
|||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
|
||||
load_surface_map((uintptr_t) d_course_dks_jungle_parkway_unknown_dl_list, arg0);
|
||||
render_course_segments((uintptr_t) d_course_dks_jungle_parkway_unknown_dl_list, arg0);
|
||||
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
}
|
||||
|
|
@ -1375,14 +1375,14 @@ void func_80295BF8(s32 playerIndex) {
|
|||
player->boundingBoxCorners[BACK_RIGHT_TYRE].surfaceFlags = 0;
|
||||
player->boundingBoxCorners[BACK_LEFT_TYRE].surfaceFlags = 0;
|
||||
|
||||
player->boundingBoxCorners[FRONT_RIGHT_TYRE].surfaceMapIndex = 0x1388;
|
||||
player->boundingBoxCorners[FRONT_LEFT_TYRE].surfaceMapIndex = 0x1388;
|
||||
player->boundingBoxCorners[BACK_RIGHT_TYRE].surfaceMapIndex = 0x1388;
|
||||
player->boundingBoxCorners[BACK_LEFT_TYRE].surfaceMapIndex = 0x1388;
|
||||
player->boundingBoxCorners[FRONT_RIGHT_TYRE].collisionMeshIndex = 0x1388;
|
||||
player->boundingBoxCorners[FRONT_LEFT_TYRE].collisionMeshIndex = 0x1388;
|
||||
player->boundingBoxCorners[BACK_RIGHT_TYRE].collisionMeshIndex = 0x1388;
|
||||
player->boundingBoxCorners[BACK_LEFT_TYRE].collisionMeshIndex = 0x1388;
|
||||
}
|
||||
|
||||
void func_80295C6C(void) {
|
||||
gNextFreeMemoryAddress += ALIGN16(D_8015F588 * sizeof(mk64_surface_map_ram));
|
||||
gNextFreeMemoryAddress += ALIGN16(gCollisionMeshCount * sizeof(CollisionTriangle));
|
||||
gCourseMaxX += 20;
|
||||
gCourseMaxZ += 20;
|
||||
gCourseMinX += -20;
|
||||
|
|
@ -1417,20 +1417,20 @@ void func_80295D88(void) {
|
|||
D_8015F5A0 = 0;
|
||||
func_80295D6C();
|
||||
D_8015F58C = 0;
|
||||
D_8015F588 = 0;
|
||||
gSurfaceMap = (mk64_surface_map_ram *) gNextFreeMemoryAddress;
|
||||
gCollisionMeshCount = 0;
|
||||
gCollisionMesh = (CollisionTriangle *) gNextFreeMemoryAddress;
|
||||
D_800DC5BC = 0;
|
||||
D_800DC5C8 = 0;
|
||||
switch (gCurrentCourseId) {
|
||||
case COURSE_MARIO_RACEWAY:
|
||||
// d_course_mario_raceway_packed_dl_1140
|
||||
set_vertex_data_with_defaults((Gfx *)0x07001140);
|
||||
generate_collision_mesh_with_defaults((Gfx *)0x07001140);
|
||||
if (gScreenModeSelection == SCREEN_MODE_1P) {
|
||||
// d_course_mario_raceway_packed_dl_8E8
|
||||
set_vertex_data_with_defaults((Gfx *)0x070008E8);
|
||||
generate_collision_mesh_with_defaults((Gfx *)0x070008E8);
|
||||
} else {
|
||||
// d_course_mario_raceway_packed_dl_2D68
|
||||
set_vertex_data_with_defaults((Gfx *)0x07002D68);
|
||||
generate_collision_mesh_with_defaults((Gfx *)0x07002D68);
|
||||
}
|
||||
parse_course_displaylists((uintptr_t) d_course_mario_raceway_addr);
|
||||
func_80295C6C();
|
||||
|
|
@ -1585,22 +1585,22 @@ void func_80295D88(void) {
|
|||
break;
|
||||
case COURSE_BLOCK_FORT:
|
||||
// d_course_block_fort_packed_dl_15C0
|
||||
set_vertex_data_with_default_section_id((Gfx *)0x070015C0, 1);
|
||||
generate_collision_mesh_with_default_section_id((Gfx *)0x070015C0, 1);
|
||||
func_80295C6C();
|
||||
D_8015F8E4 = gCourseMinY - 10.0f;
|
||||
break;
|
||||
case COURSE_SKYSCRAPER:
|
||||
// d_course_skyscraper_packed_dl_1110
|
||||
set_vertex_data_with_default_section_id((Gfx *)0x07001110, 1);
|
||||
generate_collision_mesh_with_default_section_id((Gfx *)0x07001110, 1);
|
||||
// d_course_skyscraper_packed_dl_258
|
||||
set_vertex_data_with_default_section_id((Gfx *)0x07000258, 1);
|
||||
generate_collision_mesh_with_default_section_id((Gfx *)0x07000258, 1);
|
||||
func_80295C6C();
|
||||
|
||||
D_8015F8E4 = -480.0f;
|
||||
break;
|
||||
case COURSE_DOUBLE_DECK:
|
||||
// d_course_double_deck_packed_dl_738
|
||||
set_vertex_data_with_default_section_id((Gfx *)0x07000738, 1);
|
||||
generate_collision_mesh_with_default_section_id((Gfx *)0x07000738, 1);
|
||||
func_80295C6C();
|
||||
D_8015F8E4 = gCourseMinY - 10.0f;
|
||||
break;
|
||||
|
|
@ -1613,15 +1613,15 @@ void func_80295D88(void) {
|
|||
break;
|
||||
case COURSE_BIG_DONUT:
|
||||
// d_course_big_donut_packed_dl_1018
|
||||
set_vertex_data_with_default_section_id((Gfx *)0x07001018, 6);
|
||||
generate_collision_mesh_with_default_section_id((Gfx *)0x07001018, 6);
|
||||
// d_course_big_donut_packed_dl_450
|
||||
set_vertex_data_with_default_section_id((Gfx *)0x07000450, 6);
|
||||
generate_collision_mesh_with_default_section_id((Gfx *)0x07000450, 6);
|
||||
// d_course_big_donut_packed_dl_AC0
|
||||
set_vertex_data_with_default_section_id((Gfx *)0x07000AC0, 6);
|
||||
generate_collision_mesh_with_default_section_id((Gfx *)0x07000AC0, 6);
|
||||
// d_course_big_donut_packed_dl_B58
|
||||
set_vertex_data_with_default_section_id((Gfx *)0x07000B58, 6);
|
||||
generate_collision_mesh_with_default_section_id((Gfx *)0x07000B58, 6);
|
||||
// d_course_big_donut_packed_dl_230
|
||||
set_vertex_data_with_default_section_id((Gfx *)0x07000230, 6);
|
||||
generate_collision_mesh_with_default_section_id((Gfx *)0x07000230, 6);
|
||||
func_80295C6C();
|
||||
D_8015F8E4 = 100.0f;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
void func_8029122C(struct UnkStruct_800DC5EC*, s32);
|
||||
s32 func_80290C20(Camera*);
|
||||
void parse_course_displaylists(uintptr_t);
|
||||
void load_surface_map(uintptr_t, struct UnkStruct_800DC5EC*);
|
||||
void render_course_segments(uintptr_t, struct UnkStruct_800DC5EC*);
|
||||
void func_80291198(void);
|
||||
void func_802911C4(void);
|
||||
void render_mario_raceway(struct UnkStruct_800DC5EC*);
|
||||
|
|
|
|||
|
|
@ -301,10 +301,10 @@ void spawn_player(Player *player, s8 playerIndex, f32 startingRow, f32 startingC
|
|||
player->boundingBoxCorners[BACK_LEFT_TYRE].surfaceFlags = 0;
|
||||
player->boundingBoxCorners[BACK_RIGHT_TYRE].surfaceFlags = 0;
|
||||
|
||||
player->boundingBoxCorners[FRONT_LEFT_TYRE].surfaceMapIndex = 0;
|
||||
player->boundingBoxCorners[FRONT_RIGHT_TYRE].surfaceMapIndex = 0;
|
||||
player->boundingBoxCorners[BACK_LEFT_TYRE].surfaceMapIndex = 0;
|
||||
player->boundingBoxCorners[BACK_RIGHT_TYRE].surfaceMapIndex = 0;
|
||||
player->boundingBoxCorners[FRONT_LEFT_TYRE].collisionMeshIndex = 0;
|
||||
player->boundingBoxCorners[FRONT_RIGHT_TYRE].collisionMeshIndex = 0;
|
||||
player->boundingBoxCorners[BACK_LEFT_TYRE].collisionMeshIndex = 0;
|
||||
player->boundingBoxCorners[BACK_RIGHT_TYRE].collisionMeshIndex = 0;
|
||||
|
||||
player->boundingBoxCorners[FRONT_RIGHT_TYRE].unk_14 = 0;
|
||||
player->boundingBoxCorners[FRONT_LEFT_TYRE].unk_14 = 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue