diff options
| author | MegaMech <MegaMech@users.noreply.github.com> | 2024-08-13 22:26:16 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-13 22:26:16 -0600 |
| commit | 177504c4954d54d24a0716cdf142f33eb6d2aedf (patch) | |
| tree | 8bf03ce716ca52e11e9939cc3f91b8bf7c4f6e24 /src | |
| parent | 745ed093ec77b4ee99ed6b4839e6e2b5f7375e11 (diff) | |
Add Courses (#49)
* castle and stadium
* castle
* boardwalk & snowland
* turnpike
---------
Co-authored-by: MegaMech <7255464+MegaMech@users.noreply.github.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/actors/box_truck/render.inc.c | 16 | ||||
| -rw-r--r-- | src/actors/car/render.inc.c | 10 | ||||
| -rw-r--r-- | src/actors/school_bus/render.inc.c | 10 | ||||
| -rw-r--r-- | src/actors/tanker_truck/render.inc.c | 10 | ||||
| -rw-r--r-- | src/actors/trees/render.inc.c | 1 | ||||
| -rw-r--r-- | src/actors/wario_sign/render.inc.c | 2 | ||||
| -rw-r--r-- | src/code_800029B0.c | 32 | ||||
| -rw-r--r-- | src/code_80005FD0.c | 3 | ||||
| -rw-r--r-- | src/code_8006E9C0.c | 7 | ||||
| -rw-r--r-- | src/data/path_spawn_metadata.c | 3 | ||||
| -rw-r--r-- | src/racing/actors.c | 2 | ||||
| -rw-r--r-- | src/racing/memory.c | 104 | ||||
| -rw-r--r-- | src/racing/render_courses.c | 110 | ||||
| -rw-r--r-- | src/render_objects.c | 172 | ||||
| -rw-r--r-- | src/render_objects.h | 2 | ||||
| -rw-r--r-- | src/update_objects.c | 29 |
16 files changed, 291 insertions, 222 deletions
diff --git a/src/actors/box_truck/render.inc.c b/src/actors/box_truck/render.inc.c index e3e13bf03..207ece6b7 100644 --- a/src/actors/box_truck/render.inc.c +++ b/src/actors/box_truck/render.inc.c @@ -26,28 +26,28 @@ void render_actor_box_truck(Camera *arg0, struct Actor *arg1) { switch(arg1->state) { case 0: - gSPDisplayList(gDisplayListHead++, &d_course_toads_turnpike_dl_23858); + gSPDisplayList(gDisplayListHead++, d_course_toads_turnpike_dl_23858); break; case 1: - gSPDisplayList(gDisplayListHead++, &d_course_toads_turnpike_dl_238A0); + gSPDisplayList(gDisplayListHead++, d_course_toads_turnpike_dl_238A0); break; case 2: - gSPDisplayList(gDisplayListHead++, &d_course_toads_turnpike_dl_238E8); + gSPDisplayList(gDisplayListHead++, d_course_toads_turnpike_dl_238E8); break; } if (gActiveScreenMode == SCREEN_MODE_1P) { if (temp_f0 < 160000.0f) { - gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_0); + gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_0); } else if (temp_f0 < 640000.0f) { - gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_1); + gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_1); } else { - gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_2); + gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_2); } } else if (temp_f0 < 160000.0f) { - gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_1); + gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_1); } else { - gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_2); + gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_2); } } } diff --git a/src/actors/car/render.inc.c b/src/actors/car/render.inc.c index b8295ef9d..910fa1e7b 100644 --- a/src/actors/car/render.inc.c +++ b/src/actors/car/render.inc.c @@ -28,16 +28,16 @@ void render_actor_car(Camera *arg0, struct Actor *arg1) { if (gActiveScreenMode == SCREEN_MODE_1P) { if (temp_f0 < 160000.0f) { - gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_9); + gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_9); } else if (temp_f0 < 640000.0f) { - gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_10); + gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_10); } else { - gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_11); + gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_11); } } else if (temp_f0 < 160000.0f) { - gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_10); + gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_10); } else { - gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_11); + gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_11); } } } diff --git a/src/actors/school_bus/render.inc.c b/src/actors/school_bus/render.inc.c index 82de0926f..05693a335 100644 --- a/src/actors/school_bus/render.inc.c +++ b/src/actors/school_bus/render.inc.c @@ -29,16 +29,16 @@ void render_actor_school_bus(Camera *arg0, struct Actor *arg1) { if (gActiveScreenMode == SCREEN_MODE_1P) { if (temp_f0 < 160000.0f) { - gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_3); + gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_3); } else if (temp_f0 < 640000.0f) { - gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_4); + gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_4); } else { - gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_5); + gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_5); } } else if (temp_f0 < 160000.0f) { - gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_4); + gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_4); } else { - gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_5); + gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_5); } } } diff --git a/src/actors/tanker_truck/render.inc.c b/src/actors/tanker_truck/render.inc.c index aa6598500..b2c105fe4 100644 --- a/src/actors/tanker_truck/render.inc.c +++ b/src/actors/tanker_truck/render.inc.c @@ -27,16 +27,16 @@ void render_actor_tanker_truck(Camera *camera, struct Actor* arg1) { if (gActiveScreenMode == SCREEN_MODE_1P) { if (temp_f0 < 160000.0f) { - gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_6); + gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_6); } else if (temp_f0 < 640000.0f) { - gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_7); + gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_7); } else { - gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_8); + gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_8); } } else if (temp_f0 < 160000.0f) { - gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_7); + gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_7); } else { - gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_8); + gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_8); } } } diff --git a/src/actors/trees/render.inc.c b/src/actors/trees/render.inc.c index 7e6416fa5..3ef118acc 100644 --- a/src/actors/trees/render.inc.c +++ b/src/actors/trees/render.inc.c @@ -4,6 +4,7 @@ #include <assets/common_data.h> #include "courses/all_course_data.h" #include <assets/kalimari_desert_data.h> +#include <assets/bowsers_castle_data.h> /** * @brief Renders the tree actor in Mario rawceay. diff --git a/src/actors/wario_sign/render.inc.c b/src/actors/wario_sign/render.inc.c index 1572d940b..eaf453fc5 100644 --- a/src/actors/wario_sign/render.inc.c +++ b/src/actors/wario_sign/render.inc.c @@ -1,7 +1,7 @@ #include <actors.h> #include <libultra/gbi.h> #include <main.h> -#include "courses/wario_stadium/course_data.h" +#include <assets/wario_stadium_data.h> /** * @brief Renders the Wario sign actor. diff --git a/src/code_800029B0.c b/src/code_800029B0.c index bfe0fc291..40408c599 100644 --- a/src/code_800029B0.c +++ b/src/code_800029B0.c @@ -316,11 +316,11 @@ void func_80003040(void) { break; case COURSE_BOWSER_CASTLE: // d_course_bowsers_castle_packed_dl_1350 - find_vtx_and_set_colours(0x07001350, 0x32, 0, 0, 0); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07001350), 0x32, 0, 0, 0); break; case COURSE_BANSHEE_BOARDWALK: // d_course_banshee_boardwalk_packed_dl_878 - find_vtx_and_set_colours(0x07000878, -0x80, 0, 0, 0); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07000878), -0x80, 0, 0, 0); break; case COURSE_YOSHI_VALLEY: vec3f_set(position, -2300.0f, 0.0f, 634.0f); @@ -344,17 +344,17 @@ void func_80003040(void) { break; case COURSE_SHERBET_LAND: // d_course_sherbet_land_packed_dl_1EB8 - find_vtx_and_set_colours(0x07001EB8, -0x4C, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07001EB8), -0x4C, 0xFF, 0xFF, 0xFF); // d_course_sherbet_land_packed_dl_2308 - find_vtx_and_set_colours(0x07002308, -0x6A, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07002308), -0x6A, 0xFF, 0xFF, 0xFF); break; case COURSE_RAINBOW_ROAD: // d_course_rainbow_road_packed_dl_2068 - find_vtx_and_set_colours(0x07002068, -0x6A, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07002068), -0x6A, 0xFF, 0xFF, 0xFF); // d_course_rainbow_road_packed_dl_1E18 - find_vtx_and_set_colours(0x07001E18, -0x6A, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07001E18), -0x6A, 0xFF, 0xFF, 0xFF); // d_course_rainbow_road_packed_dl_1318 - find_vtx_and_set_colours(0x07001318, -1, 0xFF, 0xFF, 0); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07001318), -1, 0xFF, 0xFF, 0); break; case COURSE_WARIO_STADIUM: vec3f_set(position, -131.0f, 83.0f, 286.0f); @@ -364,25 +364,25 @@ void func_80003040(void) { vec3f_set(position, -2622.0f, 79.0f, 739.0f); add_actor_to_empty_slot(position, rotation, velocity, ACTOR_WARIO_SIGN); // d_course_wario_stadium_packed_dl_C50 - find_vtx_and_set_colours(0x07000C50, 0x64, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07000C50), 0x64, 0xFF, 0xFF, 0xFF); // d_course_wario_stadium_packed_dl_BD8 - find_vtx_and_set_colours(0x07000BD8, 0x64, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07000BD8), 0x64, 0xFF, 0xFF, 0xFF); // d_course_wario_stadium_packed_dl_B60 - find_vtx_and_set_colours(0x07000B60, 0x64, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07000B60), 0x64, 0xFF, 0xFF, 0xFF); // d_course_wario_stadium_packed_dl_AE8 - find_vtx_and_set_colours(0x07000AE8, 0x64, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07000AE8), 0x64, 0xFF, 0xFF, 0xFF); // d_course_wario_stadium_packed_dl_CC8 - find_vtx_and_set_colours(0x07000CC8, 0x64, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07000CC8), 0x64, 0xFF, 0xFF, 0xFF); // d_course_wario_stadium_packed_dl_D50 - find_vtx_and_set_colours(0x07000D50, 0x64, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07000D50), 0x64, 0xFF, 0xFF, 0xFF); // d_course_wario_stadium_packed_dl_DD0 - find_vtx_and_set_colours(0x07000DD0, 0x64, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07000DD0), 0x64, 0xFF, 0xFF, 0xFF); // d_course_wario_stadium_packed_dl_E48 - find_vtx_and_set_colours(0x07000E48, 0x64, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07000E48), 0x64, 0xFF, 0xFF, 0xFF); break; case COURSE_DK_JUNGLE: // d_course_dks_jungle_parkway_packed_dl_3FA8 - find_vtx_and_set_colours(0x07003FA8, 0x78, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07003FA8), 0x78, 0xFF, 0xFF, 0xFF); break; default: break; diff --git a/src/code_80005FD0.c b/src/code_80005FD0.c index 43ab7a8c0..cce34ebaa 100644 --- a/src/code_80005FD0.c +++ b/src/code_80005FD0.c @@ -34,6 +34,7 @@ #include "sounds.h" #include "data/path_spawn_metadata.h" #include <assets/kalimari_desert_data.h> +#include <assets/frappe_snowland_data.h> s32 unk_code_80005FD0_pad[24]; Collision D_80162E70; @@ -4324,7 +4325,7 @@ void func_800120C8(void) { } void func_80012190(void) { - TrackWaypoint *tree = d_frappe_snowland_tree; + TrackWaypoint *tree = NULL; // LOAD_ASSET(d_course_dks_jungle_parkway_unknown_waypoints2); s32 i; for (i = 0; ; i++) { diff --git a/src/code_8006E9C0.c b/src/code_8006E9C0.c index 140e236b1..f8b6829b8 100644 --- a/src/code_8006E9C0.c +++ b/src/code_8006E9C0.c @@ -26,6 +26,7 @@ #include "code_80091750.h" #include "src/data/some_data.h" #include "effects.h" +#include <assets/boo_frames.h> void init_hud(void) { @@ -742,6 +743,10 @@ void func_80070714(void) { D_80165748 = 0xA; } +const char *sBoardwalkTexList[] = { + gTextureBat1, gTextureBat2, gTextureBat3, gTextureBat4 +}; + void init_course_object(void) { s32 objectId; s32 i; @@ -807,7 +812,7 @@ void init_course_object(void) { case COURSE_BANSHEE_BOARDWALK: if (gGamestate != CREDITS_SEQUENCE) { objectId = indexObjectList1[0]; - init_texture_object(objectId, d_course_banshee_boardwalk_bat_tlut, *d_course_banshee_boardwalk_bat, 0x20U, (u16) 0x00000040); + init_texture_object(objectId, d_course_banshee_boardwalk_bat_tlut, sBoardwalkTexList, 0x20U, (u16) 0x00000040); gObjectList[objectId].orientation[0] = 0; gObjectList[objectId].orientation[1] = 0; gObjectList[objectId].orientation[2] = 0x8000; diff --git a/src/data/path_spawn_metadata.c b/src/data/path_spawn_metadata.c index 1023c03b3..aea6ff3be 100644 --- a/src/data/path_spawn_metadata.c +++ b/src/data/path_spawn_metadata.c @@ -7,6 +7,9 @@ #include <assets/kalimari_desert_data.h> #include <assets/moo_moo_farm_data.h> #include <assets/choco_mountain_data.h> +#include <assets/wario_stadium_data.h> +#include <assets/bowsers_castle_data.h> +#include <assets/frappe_snowland_data.h> // @warning Array contains an extra zero element at the end. KartAIBehaviour *gKartAIBehaviourLUT[] = { diff --git a/src/racing/actors.c b/src/racing/actors.c index 3facb8a78..06a891646 100644 --- a/src/racing/actors.c +++ b/src/racing/actors.c @@ -29,6 +29,8 @@ #include <assets/other_textures.h> #include <assets/mario_raceway_data.h> #include <assets/luigi_raceway_data.h> +#include <assets/wario_stadium_data.h> +#include <assets/frappe_snowland_data.h> // Appears to be textures // or tluts diff --git a/src/racing/memory.c b/src/racing/memory.c index 67e79c415..3a4e12e91 100644 --- a/src/racing/memory.c +++ b/src/racing/memory.c @@ -13,46 +13,10 @@ #include "code_800029B0.h" #include "math_util.h" #include "courses/courseTable.h" +#include "courses/all_course_data.h" +#include "courses/all_course_packed.h" +#include "courses/all_course_model.h" #include "defines.h" -#include <assets/mario_raceway_displaylists.h> -#include <assets/mario_raceway_vertices.h> -#include <assets/mario_raceway_data.h> - -#include <assets/luigi_raceway_displaylists.h> -#include <assets/luigi_raceway_vertices.h> -#include <assets/luigi_raceway_data.h> - -#include <assets/royal_raceway_displaylists.h> -#include <assets/royal_raceway_vertices.h> -#include <assets/royal_raceway_data.h> - -#include <assets/kalimari_desert_displaylists.h> -#include <assets/kalimari_desert_vertices.h> -#include <assets/kalimari_desert_data.h> - -#include <assets/moo_moo_farm_displaylists.h> -#include <assets/moo_moo_farm_vertices.h> -#include <assets/moo_moo_farm_data.h> - -#include <assets/big_donut_displaylists.h> -#include <assets/big_donut_vertices.h> -#include <assets/big_donut_data.h> - -#include <assets/choco_mountain_displaylists.h> -#include <assets/choco_mountain_vertices.h> -#include <assets/choco_mountain_data.h> - -#include <assets/skyscraper_displaylists.h> -#include <assets/skyscraper_vertices.h> -#include <assets/skyscraper_data.h> - -#include <assets/block_fort_displaylists.h> -#include <assets/block_fort_vertices.h> -#include <assets/block_fort_data.h> - -#include <assets/double_deck_displaylists.h> -#include <assets/double_deck_vertices.h> -#include <assets/double_deck_data.h> #include <assert.h> #include <course_offsets.h> @@ -1486,19 +1450,19 @@ NewCourseTable gNewCourseTable[] = { .displaylists = d_course_choco_mountain_packed_dls, .dlSize = 2910 }, { // bowser_castle - .data = NULL, - .vtx = NULL, - .vtxSize = 0, - .textures = NULL, - .displaylists = NULL, - .dlSize = 0 + .data = d_course_bowsers_castle_dl_0, + .vtx = d_course_bowsers_castle_vertex, + .vtxSize = 9527, + .textures = bowsers_castle_textures, + .displaylists = d_course_bowsers_castle_packed_dls, + .dlSize = 4900 }, { // banshee_boardwalk - .data = NULL, - .vtx = NULL, - .vtxSize = 4326, - .textures = NULL, - .displaylists = NULL, - .dlSize = 0 + .data = d_course_banshee_boardwalk_dl_0, + .vtx = d_course_banshee_boardwalk_vertex, + .vtxSize = 4945, + .textures = banshee_boardwalk_textures, + .displaylists = d_course_banshee_boardwalk_packed_dls, + .dlSize = 3689 }, { // maze .data = NULL, .vtx = NULL, @@ -1507,12 +1471,12 @@ NewCourseTable gNewCourseTable[] = { .displaylists = NULL, .dlSize = 0 }, { // snow - .data = NULL, - .vtx = NULL, - .vtxSize = 0, - .textures = NULL, - .displaylists = NULL, - .dlSize = 0 + .data = d_course_frappe_snowland_dl_0, + .vtx = d_course_frappe_snowland_vertex, + .vtxSize = 5529, + .textures = frappe_snowland_textures, + .displaylists = d_course_frappe_snowland_packed_dls, + .dlSize = 3274 }, { // koopa_troopa_beach .data = NULL, .vtx = NULL, @@ -1542,12 +1506,12 @@ NewCourseTable gNewCourseTable[] = { .displaylists = d_course_moo_moo_farm_packed_dls, .dlSize = 3304 }, { // highway - .data = NULL, - .vtx = NULL, - .vtxSize = 0, - .textures = NULL, - .displaylists = NULL, - .dlSize = 0 + .data = d_course_toads_turnpike_dl_0, + .vtx = d_course_toads_turnpike_vertex, + .vtxSize = 6359, + .textures = toads_turnpike_textures, + .displaylists = d_course_toads_turnpike_packed_dls, + .dlSize = 3427 }, { // kalimari_desert .data = d_course_kalimari_desert_dl_0, .vtx = d_course_kalimari_desert_vertex, @@ -1565,17 +1529,17 @@ NewCourseTable gNewCourseTable[] = { }, { // rainbow .data = NULL, .vtx = NULL, - .vtxSize = 0, + .vtxSize = 6067, .textures = NULL, .displaylists = NULL, .dlSize = 0 }, { // wario - .data = NULL, - .vtx = NULL, - .vtxSize = 0, - .textures = NULL, - .displaylists = NULL, - .dlSize = 0 + .data = d_course_wario_stadium_dl_0, + .vtx = d_course_wario_stadium_vertex, + .vtxSize = 6067, + .textures = wario_stadium_textures, + .displaylists = d_course_wario_stadium_packed_dls, + .dlSize = 5272 }, { // block fort .data = d_course_block_fort_dl, .vtx = d_course_block_fort_vertex, diff --git a/src/racing/render_courses.c b/src/racing/render_courses.c index 72593dbe5..4140a1866 100644 --- a/src/racing/render_courses.c +++ b/src/racing/render_courses.c @@ -32,6 +32,12 @@ #include <assets/moo_moo_farm_displaylists.h> #include <assets/choco_mountain_data.h> #include <assets/choco_mountain_displaylists.h> +#include <assets/wario_stadium_data.h> +#include <assets/wario_stadium_displaylists.h> +#include <assets/bowsers_castle_data.h> +#include <assets/bowsers_castle_displaylists.h> +#include <assets/frappe_snowland_data.h> +#include <assets/frappe_snowland_displaylists.h> s16 D_802B87B0 = 995; s16 D_802B87B4 = 1000; @@ -278,7 +284,7 @@ void func_8029122C(struct UnkStruct_800DC5EC *arg0, s32 playerId) { gDPSetBlendMask(gDisplayListHead++, 0xFF); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); // d_course_banshee_boardwalk_packed_dl_878 - gSPDisplayList(gDisplayListHead++, 0x07000878); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual(0x07000878)); gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE); gDPPipeSync(gDisplayListHead++); break; @@ -372,7 +378,7 @@ void func_8029122C(struct UnkStruct_800DC5EC *arg0, s32 playerId) { gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_SURF, G_RM_AA_ZB_XLU_SURF2); gDPSetPrimColor(gDisplayListHead++, 0, 0, 0xFF, 0xFF, 0x00, 0xFF); // d_course_wario_stadium_packed_dl_EC0 - gSPDisplayList(gDisplayListHead++, 0x07000EC0); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual(0x07000EC0)); gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 1, 1, G_OFF); gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE); @@ -712,7 +718,7 @@ void render_bowsers_castle(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); // d_course_bowsers_castle_packed_dl_6A80 - gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07006A80)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual(0x07006A80)); } gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); @@ -722,12 +728,12 @@ void render_bowsers_castle(struct UnkStruct_800DC5EC *arg0) { if (D_802B87BC > 255) { D_802B87BC = 0; } - render_course_segments((uintptr_t) bowsers_castle_dls, arg0); + render_course_segments(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); // d_course_bowsers_castle_packed_dl_248 - gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000248)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual(0x07000248)); } void render_banshee_boardwalk(struct UnkStruct_800DC5EC *arg0) { @@ -740,7 +746,7 @@ 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); // d_course_banshee_boardwalk_packed_dl_7228 - gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07007228)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual(0x07007228)); gSPFogPosition(gDisplayListHead++, D_802B87B0, D_802B87B4); @@ -755,13 +761,13 @@ void render_banshee_boardwalk(struct UnkStruct_800DC5EC *arg0) { gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING); // d_course_banshee_boardwalk_packed_dl_5CD0 - gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07005CD0)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual(0x07005CD0)); // d_course_banshee_boardwalk_packed_dl_4E60 - gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07004E60)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual(0x07004E60)); // d_course_banshee_boardwalk_packed_dl_69B0 - gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070069B0)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual(0x070069B0)); - render_course_segments((uintptr_t) banshee_boardwalk_dls, arg0); + render_course_segments(banshee_boardwalk_dls, arg0); gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); @@ -769,15 +775,15 @@ void render_banshee_boardwalk(struct UnkStruct_800DC5EC *arg0) { gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING); gSPSetGeometryMode(gDisplayListHead++, G_SHADE | G_SHADING_SMOOTH); // d_course_banshee_boardwalk_packed_dl_580 - gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000580)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual(0x07000580)); // d_course_banshee_boardwalk_packed_dl_60 - gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000060)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual(0x07000060)); // d_course_banshee_boardwalk_packed_dl_540 - gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000540)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual(0x07000540)); if (camera->pos[1] < -20.0f) { // d_course_banshee_boardwalk_packed_dl_6310 - gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07006310)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual(0x07006310)); } spA8[0] = camera->pos[0]; spA8[1] = -82.0f; @@ -809,12 +815,12 @@ void render_frappe_snowland(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); // d_course_frappe_snowland_packed_dl_65E0 - gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070065E0)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual(0x070065E0)); } gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); - render_course_segments((uintptr_t) d_course_frappe_snowland_dl_list, arg0); + render_course_segments(frappe_snowland_dls, arg0); } void render_koopa_troopa_beach(struct UnkStruct_800DC5EC *arg0) { @@ -1037,16 +1043,16 @@ 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); - render_course_segments((uintptr_t) d_course_toads_turnpike_dl_list, arg0); + render_course_segments(toads_turnpike_dls, arg0); gDPSetRenderMode(gDisplayListHead++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2); gDPSetCombineMode(gDisplayListHead++, G_CC_DECALRGBA, G_CC_PASS2); // d_course_toads_turnpike_packed_dl_0 - gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000000)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual(0x07000000)); // d_course_toads_turnpike_packed_dl_68 - gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000068)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual(0x07000068)); // d_course_toads_turnpike_packed_dl_D8 - gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070000D8)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual(0x070000D8)); gSPClearGeometryMode(gDisplayListHead++, G_FOG); gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE); } @@ -1116,21 +1122,21 @@ 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); // d_course_wario_stadium_packed_dl_A0C8 - gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x0700A0C8)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual(0x0700A0C8)); } gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATERGBA, G_CC_MODULATERGBA); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); - render_course_segments((uintptr_t) wario_stadium_dls, arg0); + render_course_segments(wario_stadium_dls, arg0); // d_course_wario_stadium_packed_dl_A228 - gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x0700A228)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual(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); // d_course_wario_stadium_packed_dl_A88 - gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000A88)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual(0x07000A88)); gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); D_800DC5DC = 88; @@ -1148,22 +1154,22 @@ void render_wario_stadium(struct UnkStruct_800DC5EC *arg0) { } switch (currentScreenSection) { case 0: - copy_framebuffer(D_800DC5DC, D_800DC5E0, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0x8800)); + //copy_framebuffer(D_800DC5DC, D_800DC5E0, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0x8800)); break; case 1: - copy_framebuffer(D_800DC5DC + 64, D_800DC5E0, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0x9800)); + //copy_framebuffer(D_800DC5DC + 64, D_800DC5E0, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0x9800)); break; case 2: - copy_framebuffer(D_800DC5DC, D_800DC5E0 + 32, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0xA800)); + //copy_framebuffer(D_800DC5DC, D_800DC5E0 + 32, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0xA800)); break; case 3: - copy_framebuffer(D_800DC5DC + 64, D_800DC5E0 + 32, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0xB800)); + //copy_framebuffer(D_800DC5DC + 64, D_800DC5E0 + 32, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0xB800)); break; case 4: - copy_framebuffer(D_800DC5DC, D_800DC5E0 + 64, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0xC800)); + //copy_framebuffer(D_800DC5DC, D_800DC5E0 + 64, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0xC800)); break; case 5: - copy_framebuffer(D_800DC5DC + 64, D_800DC5E0 + 64, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0xD800)); + //copy_framebuffer(D_800DC5DC + 64, D_800DC5E0 + 64, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0xD800)); break; } } @@ -1506,9 +1512,10 @@ void func_80295D88(void) { D_8015F8E4 = -80.0f; break; case COURSE_BOWSER_CASTLE: - parse_course_displaylists((uintptr_t) d_course_bowsers_castle_addr); + TrackSectionsI *section3 = (TrackSectionsI *) LOAD_ASSET(d_course_bowsers_castle_addr); + parse_course_displaylists(section3); func_80295C6C(); - find_vtx_and_set_colours((uintptr_t) d_course_bowsers_castle_packed_dl_1350, 0x32, 0, 0, 0); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07001350), 0x32, 0, 0, 0); D_8015F8E4 = -50.0f; break; case COURSE_BANSHEE_BOARDWALK: @@ -1516,10 +1523,10 @@ void func_80295D88(void) { D_801625EC = 0; D_801625F4 = 0; D_801625F0 = 0; - parse_course_displaylists((uintptr_t) d_course_banshee_boardwalk_track_sections); + TrackSectionsI *section4 = (TrackSectionsI *) LOAD_ASSET(d_course_banshee_boardwalk_track_sections); + parse_course_displaylists(section4); func_80295C6C(); - find_vtx_and_set_colours((uintptr_t) d_course_banshee_boardwalk_packed_dl_878, 128, 0, 0, - 0); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07000878), 128, 0, 0, 0); D_8015F8E4 = -80.0f; break; case COURSE_YOSHI_VALLEY: @@ -1529,7 +1536,8 @@ void func_80295D88(void) { D_8015F8E4 = gCourseMinY - 10.0f; break; case COURSE_FRAPPE_SNOWLAND: - parse_course_displaylists((uintptr_t) d_course_frappe_snowland_addr); + TrackSectionsI *section5 = (TrackSectionsI *) LOAD_ASSET(d_course_frappe_snowland_addr); + parse_course_displaylists(section5); func_80295C6C(); D_8015F8E4 = -50.0f; break; @@ -1569,7 +1577,8 @@ void func_80295D88(void) { D_801625F0 = 4; D_802B87B0 = 993; D_802B87B4 = 1000; - parse_course_displaylists((uintptr_t) d_course_toads_turnpike_addr); + TrackSectionsI *section10 = (TrackSectionsI *) LOAD_ASSET(d_course_toads_turnpike_addr); + parse_course_displaylists(section10); func_80295C6C(); D_8015F8E4 = gCourseMinY - 10.0f; break; @@ -1605,25 +1614,26 @@ void func_80295D88(void) { } break; case COURSE_WARIO_STADIUM: - parse_course_displaylists((uintptr_t) d_course_wario_stadium_addr); + TrackSectionsI *sectionXIV = (TrackSectionsI *) LOAD_ASSET(d_course_wario_stadium_addr); + parse_course_displaylists(sectionXIV); func_80295C6C(); D_8015F8E4 = gCourseMinY - 10.0f; // d_course_wario_stadium_packed_dl_C50 - find_vtx_and_set_colours((uintptr_t)0x07000C50, 100, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07000C50), 100, 255, 255, 255); // d_course_wario_stadium_packed_dl_BD8 - find_vtx_and_set_colours((uintptr_t)0x07000BD8, 100, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07000BD8), 100, 255, 255, 255); // d_course_wario_stadium_packed_dl_B60 - find_vtx_and_set_colours((uintptr_t)0x07000B60, 100, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07000B60), 100, 255, 255, 255); // d_course_wario_stadium_packed_dl_AE8 - find_vtx_and_set_colours((uintptr_t)0x07000AE8, 100, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07000AE8), 100, 255, 255, 255); // d_course_wario_stadium_packed_dl_CC8 - find_vtx_and_set_colours((uintptr_t)0x07000CC8, 100, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07000CC8), 100, 255, 255, 255); // d_course_wario_stadium_packed_dl_D50 - find_vtx_and_set_colours((uintptr_t)0x07000D50, 100, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07000D50), 100, 255, 255, 255); // d_course_wario_stadium_packed_dl_DD0 - find_vtx_and_set_colours((uintptr_t)0x07000DD0, 100, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07000DD0), 100, 255, 255, 255); // d_course_wario_stadium_packed_dl_E48 - find_vtx_and_set_colours((uintptr_t)0x07000E48, 100, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual(0x07000E48), 100, 255, 255, 255); break; case COURSE_BLOCK_FORT: // d_course_block_fort_packed_dl_15C0 @@ -1691,9 +1701,9 @@ void func_802966A0(void) { } // waterfall animation // d_course_koopa_troopa_beach_packed_dl_9D58 - find_and_set_tile_size((uintptr_t)0x07009D58, 0, D_802B87BC); + find_and_set_tile_size(segmented_gfx_to_virtual(0x07009D58), 0, D_802B87BC); // d_course_koopa_troopa_beach_packed_dl_9CD0 - find_and_set_tile_size((uintptr_t)0x07009CD0, 0, D_802B87C4); + find_and_set_tile_size(segmented_gfx_to_virtual(0x07009CD0), 0, D_802B87C4); D_802B87CC = random_int(300) / 40; if (D_802B87C8 < 0) { D_802B87C8 = random_int(300) / 40; @@ -1702,7 +1712,7 @@ void func_802966A0(void) { } // Waterfall bubbling effect? (unused) // d_course_koopa_troopa_beach_packed_dl_2E8 - find_and_set_tile_size((uintptr_t)0x070002E8, D_802B87C8, D_802B87CC); + find_and_set_tile_size(segmented_gfx_to_virtual(0x070002E8), D_802B87C8, D_802B87CC); break; case COURSE_BANSHEE_BOARDWALK: D_802B87BC++; @@ -1710,7 +1720,7 @@ 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((uintptr_t) LOAD_ASSET(d_course_banshee_boardwalk_dl_B278), 0, D_802B87BC); break; case COURSE_ROYAL_RACEWAY: D_802B87BC -= 20; diff --git a/src/render_objects.c b/src/render_objects.c index 1cfed4d68..23ba54a6f 100644 --- a/src/render_objects.c +++ b/src/render_objects.c @@ -39,6 +39,73 @@ #include <assets/some_data.h> #include <assets/luigi_raceway_data.h> #include <assets/moo_moo_farm_data.h> +#include <assets/bowsers_castle_data.h> +#include <assets/frappe_snowland_data.h> + +Lights1 D_800E45C0[] = { + gdSPDefLights1( + 100, 0, 0, + 100, 0, 0, 0, -120, 0 + ), + gdSPDefLights1( + 100, 100, 0, + 255, 255, 0, 0, -120, 0 + ), + gdSPDefLights1( + 100, 100, 100, + 255, 255, 255, 0, -120, 0 + ), + gdSPDefLights1( + 100, 0, 0, + 100, 0, 0, 0, -120, 0 + ), +}; + +Lights1 D_800E4620 = gdSPDefLights1( + 150, 180, 250, + 255, 255, 255, 0, 0, 0 +); + +Lights1 D_800E4638 = gdSPDefLights1( + 85, 85, 85, + 255, 255, 255, 0, -120, 0 +); + +Lights1 D_800E4650 = gdSPDefLights1( + 85, 85, 0, + 255, 255, 0, 0, 120, 0 +); + +Lights1 D_800E4668 = gdSPDefLights1( + 85, 85, 85, + 255, 255, 255, -66, 82, -55 +); + +Lights1 D_800E4680 = gdSPDefLights1( + 85, 85, 85, + 255, 255, 255, 0, 0, 120 +); + +Lights1 D_800E4698 = gdSPDefLights1( + 85, 85, 85, + 255, 255, 255, 0, 0, 120 +); + +Lights1 D_800E46B0 = gdSPDefLights1( + 85, 85, 85, + 255, 255, 255, 0, 0, 120 +); + +Lights1 D_800E46C8 = gdSPDefLights1( + 85, 85, 85, + 255, 255, 255, 0, 0, 120 +); + +Lights1 D_800E46E0 = gdSPDefLights1( + 85, 85, 85, + 255, 255, 255, 0, 0, 120 +); + void func_800431B0(Vec3f pos, Vec3su orientation, f32 scale, Vtx *vtx) { rsp_set_matrix_transformation(pos, orientation, scale); @@ -3090,15 +3157,15 @@ void func_80052080(void) { void func_800520C0(s32 arg0) { - Lights1 *D_800E45C0l = LOAD_ASSET(D_800E45C0); + //Lights1 *D_800E45C0 = LOAD_ASSET(D_800E45C0); if (gObjectList[arg0].unk_0D5 == 0) { - D_800E45C0l[0].l[0].l.dir[0] = D_800E45C0l[1].l[0].l.dir[0] = D_800E45C0l[2].l[0].l.dir[0] = D_800E45C0l[3].l[0].l.dir[0] = 0; - D_800E45C0l[0].l[0].l.dir[1] = D_800E45C0l[1].l[0].l.dir[1] = D_800E45C0l[2].l[0].l.dir[1] = D_800E45C0l[3].l[0].l.dir[1] = -0x78; - D_800E45C0l[0].l[0].l.dir[2] = D_800E45C0l[1].l[0].l.dir[2] = D_800E45C0l[2].l[0].l.dir[2] = D_800E45C0l[3].l[0].l.dir[2] = 0; + D_800E45C0[0].l[0].l.dir[0] = D_800E45C0[1].l[0].l.dir[0] = D_800E45C0[2].l[0].l.dir[0] = D_800E45C0[3].l[0].l.dir[0] = 0; + D_800E45C0[0].l[0].l.dir[1] = D_800E45C0[1].l[0].l.dir[1] = D_800E45C0[2].l[0].l.dir[1] = D_800E45C0[3].l[0].l.dir[1] = -0x78; + D_800E45C0[0].l[0].l.dir[2] = D_800E45C0[1].l[0].l.dir[2] = D_800E45C0[2].l[0].l.dir[2] = D_800E45C0[3].l[0].l.dir[2] = 0; } else { - D_800E45C0l[0].l[0].l.dir[0] = D_800E45C0l[1].l[0].l.dir[0] = D_800E45C0l[2].l[0].l.dir[0] = D_800E45C0l[3].l[0].l.dir[0] = 0x63; - D_800E45C0l[0].l[0].l.dir[1] = D_800E45C0l[1].l[0].l.dir[1] = D_800E45C0l[2].l[0].l.dir[1] = D_800E45C0l[3].l[0].l.dir[1] = 0x42; - D_800E45C0l[0].l[0].l.dir[2] = D_800E45C0l[1].l[0].l.dir[2] = D_800E45C0l[2].l[0].l.dir[2] = D_800E45C0l[3].l[0].l.dir[2] = 0; + D_800E45C0[0].l[0].l.dir[0] = D_800E45C0[1].l[0].l.dir[0] = D_800E45C0[2].l[0].l.dir[0] = D_800E45C0[3].l[0].l.dir[0] = 0x63; + D_800E45C0[0].l[0].l.dir[1] = D_800E45C0[1].l[0].l.dir[1] = D_800E45C0[2].l[0].l.dir[1] = D_800E45C0[3].l[0].l.dir[1] = 0x42; + D_800E45C0[0].l[0].l.dir[2] = D_800E45C0[1].l[0].l.dir[2] = D_800E45C0[2].l[0].l.dir[2] = D_800E45C0[3].l[0].l.dir[2] = 0; } } @@ -3226,15 +3293,15 @@ void func_800528EC(s32 arg0) { s32 var_s3; s32 objectIndex; Object *object; - Lights1 D_800E4620l = *(Lights1 *) LOAD_ASSET(D_800E4620); + //Lights1 D_800E4620l = *(Lights1 *) LOAD_ASSET(D_800E4620); D_80183E80[0] = D_8016582C[0]; D_80183E80[1] = D_8016582C[1]; D_80183E80[2] = D_8016582C[2]; gSPDisplayList(gDisplayListHead++, D_0D007B00); gSPNumLights(gDisplayListHead++, 1); - gSPLight(gDisplayListHead++, &D_800E4620l.l[0], LIGHT_1); - gSPLight(gDisplayListHead++, &D_800E4620l.a, LIGHT_2); + gSPLight(gDisplayListHead++, &D_800E4620.l[0], LIGHT_1); + gSPLight(gDisplayListHead++, &D_800E4620.a, LIGHT_2); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); gSPClearGeometryMode(gDisplayListHead++, G_CULL_BOTH); gSPSetGeometryMode(gDisplayListHead++, G_SHADE | G_LIGHTING | G_SHADING_SMOOTH); @@ -3272,12 +3339,12 @@ void func_800528EC(s32 arg0) { void render_ice_block(s32 arg0) { s32 playerId; s32 objectIndex; - Lights1 D_800E4620l = *(Lights1 *) LOAD_ASSET(D_800E4620); - D_800E4620l.l[0].l.dir[0] = D_80165840[0]; - D_800E4620l.l[0].l.dir[1] = D_80165840[1]; - D_800E4620l.l[0].l.dir[2] = D_80165840[2]; - gSPLight(gDisplayListHead++, &D_800E4620l.l[0], LIGHT_1); - gSPLight(gDisplayListHead++, &D_800E4620l.a, LIGHT_2); + //Lights1 D_800E4620l = *(Lights1 *) LOAD_ASSET(D_800E4620); + D_800E4620.l[0].l.dir[0] = D_80165840[0]; + D_800E4620.l[0].l.dir[1] = D_80165840[1]; + D_800E4620.l[0].l.dir[2] = D_80165840[2]; + gSPLight(gDisplayListHead++, &D_800E4620.l[0], LIGHT_1); + gSPLight(gDisplayListHead++, &D_800E4620.a, LIGHT_2); for (playerId = 0; playerId < gPlayerCountSelection1; playerId++) { objectIndex = gIndexLakituList[playerId]; if (objectIndex) {} @@ -3305,12 +3372,12 @@ void func_80052D70(s32 playerId) { void func_80052E30(UNUSED s32 arg0) { s32 var_s0; - Lights1 D_800E4620l = *(Lights1 *) LOAD_ASSET(D_800E4620); - D_800E4620l.l[0].l.dir[0] = D_80165840[0]; - D_800E4620l.l[0].l.dir[1] = D_80165840[1]; - D_800E4620l.l[0].l.dir[2] = D_80165840[2]; - gSPLight(gDisplayListHead++, &D_800E4620l.l[0], LIGHT_1); - gSPLight(gDisplayListHead++, &D_800E4620l.a, LIGHT_2); + //Lights1 D_800E4620l = *(Lights1 *) LOAD_ASSET(D_800E4620); + D_800E4620.l[0].l.dir[0] = D_80165840[0]; + D_800E4620.l[0].l.dir[1] = D_80165840[1]; + D_800E4620.l[0].l.dir[2] = D_80165840[2]; + gSPLight(gDisplayListHead++, &D_800E4620.l[0], LIGHT_1); + gSPLight(gDisplayListHead++, &D_800E4620.a, LIGHT_2); D_80183E80[0] = 0; D_80183E80[1] = 0; D_80183E80[2] = 0; @@ -3416,42 +3483,42 @@ void render_lakitu(s32 cameraId) { void func_800534A4(UNUSED s32 arg0) { func_800419F8(); - Lights1 D_800E4638l = *(Lights1 *) LOAD_ASSET(D_800E4638); - D_800E4638l.l[0].l.dir[0] = D_80165840[0]; - D_800E4638l.l[0].l.dir[1] = D_80165840[1]; - D_800E4638l.l[0].l.dir[2] = D_80165840[2]; + //Lights1 *D_800E4638l = (Lights1 *) LOAD_ASSET(D_800E4638); + D_800E4638.l[0].l.dir[0] = D_80165840[0]; + D_800E4638.l[0].l.dir[1] = D_80165840[1]; + D_800E4638.l[0].l.dir[2] = D_80165840[2]; } void func_800534E8(s32 objectIndex) { - Lights1 D_800E4638l = *(Lights1 *) LOAD_ASSET(D_800E4638); - Lights1 D_800E4650l = *(Lights1 *) LOAD_ASSET(D_800E4650); - Lights1 D_800E4668l = *(Lights1 *) LOAD_ASSET(D_800E4668); - Lights1 D_800E4680l = *(Lights1 *) LOAD_ASSET(D_800E4680); - Lights1 D_800E4698l = *(Lights1 *) LOAD_ASSET(D_800E4698); + //Lights1 *D_800E4638l = (Lights1 *) LOAD_ASSET(D_800E4638); + //Lights1 *D_800E4650l = (Lights1 *) LOAD_ASSET(D_800E4650); + //Lights1 *D_800E4668l = (Lights1 *) LOAD_ASSET(D_800E4668); + //Lights1 *D_800E4680l = (Lights1 *) LOAD_ASSET(D_800E4680); + //Lights1 *D_800E4698l = (Lights1 *) LOAD_ASSET(D_800E4698); // Why these don't just use `gSPSetLights1` calls... switch (gObjectList[objectIndex].type) { // hmm very strange 80165C18 case 0: - gSPLight(gDisplayListHead++, &D_800E4638l.l[0], LIGHT_1); - gSPLight(gDisplayListHead++, &D_800E4638l.a, LIGHT_2); + gSPLight(gDisplayListHead++, &D_800E4638.l[0], LIGHT_1); + gSPLight(gDisplayListHead++, &D_800E4638.a, LIGHT_2); break; case 1: - gSPLight(gDisplayListHead++, &D_800E4650l.l[0], LIGHT_1); - gSPLight(gDisplayListHead++, &D_800E4650l.a, LIGHT_2); + gSPLight(gDisplayListHead++, &D_800E4650.l[0], LIGHT_1); + gSPLight(gDisplayListHead++, &D_800E4650.a, LIGHT_2); break; case 2: - gSPLight(gDisplayListHead++, &D_800E4668l.l[0], LIGHT_1); - gSPLight(gDisplayListHead++, &D_800E4668l.a, LIGHT_2); + gSPLight(gDisplayListHead++, &D_800E4668.l[0], LIGHT_1); + gSPLight(gDisplayListHead++, &D_800E4668.a, LIGHT_2); break; case 3: - gSPLight(gDisplayListHead++, &D_800E4680l.l[0], LIGHT_1); - gSPLight(gDisplayListHead++, &D_800E4680l.a, LIGHT_2); + gSPLight(gDisplayListHead++, &D_800E4680.l[0], LIGHT_1); + gSPLight(gDisplayListHead++, &D_800E4680.a, LIGHT_2); break; case 4: - gSPLight(gDisplayListHead++, &D_800E4698l.l[0], LIGHT_1); - gSPLight(gDisplayListHead++, &D_800E4698l.a, LIGHT_2); + gSPLight(gDisplayListHead++, &D_800E4698.l[0], LIGHT_1); + gSPLight(gDisplayListHead++, &D_800E4698.a, LIGHT_2); break; default: break; @@ -3478,7 +3545,7 @@ void render_object_thwomps(s32 cameraId) { s16 minusone, plusone; Camera *camera; Object *object; - Lights1 D_800E4668l = *(Lights1 *) LOAD_ASSET(D_800E4668); + //Lights1 *D_800E4668l = (Lights1 *) LOAD_ASSET(D_800E4668); camera = &camera1[cameraId]; if (cameraId == PLAYER_ONE) { @@ -3505,8 +3572,8 @@ void render_object_thwomps(s32 cameraId) { gSPDisplayList(gDisplayListHead++, D_0D0079C8); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); gSPNumLights(gDisplayListHead++, 1); - gSPLight(gDisplayListHead++, &D_800E4668l.l[0], LIGHT_1); - gSPLight(gDisplayListHead++, &D_800E4668l.a, LIGHT_2); + gSPLight(gDisplayListHead++, &D_800E4668.l[0], LIGHT_1); + gSPLight(gDisplayListHead++, &D_800E4668.a, LIGHT_2); gSPClearGeometryMode(gDisplayListHead++, G_CULL_BOTH); gSPSetGeometryMode(gDisplayListHead++, G_SHADE | G_LIGHTING | G_SHADING_SMOOTH); load_texture_block_rgba16_mirror(d_course_bowsers_castle_thwomp_side, 0x00000020, 0x00000020); @@ -4199,13 +4266,20 @@ void render_object_neon(s32 cameraId) { } } +Vec3iu D_800E46F8A[] = { + {255, 255, 255}, {255, 255, 0}, {255, 0, 0}, +}; +u8 D_800E471CA[] = { + 0, 1, 2, 3, 2, 1, 0, +}; + void func_800562E4(s32 arg0, s32 arg1, s32 arg2) { - Vec3iu *A_800E46F8 = LOAD_ASSET(D_800E46F8); + //Vec3iu *A_800E46F8 = LOAD_ASSET(D_800E46F8); - D_80165860 = A_800E46F8[arg0][0]; - D_8016586C = A_800E46F8[arg0][1]; - D_80165878 = A_800E46F8[arg0][2]; + D_80165860 = D_800E46F8A[arg0][0]; + D_8016586C = D_800E46F8A[arg0][1]; + D_80165878 = D_800E46F8A[arg0][2]; func_8004B138(D_80165860, D_8016586C, D_80165878, arg2); rsp_set_matrix_transformation(D_80183E40, D_80183E80, 0.2f); func_80044BF8(common_texture_particle_spark[arg1], 32, 32); @@ -4335,7 +4409,7 @@ void func_80056BF0(s32 bombIndex) { BombKart sp40 = gBombKarts[bombIndex]; temp_v0 = D_801655CC % 6U; - thing = D_800E471C[temp_v0]; + thing = D_800E471CA[temp_v0]; bombFrame = common_texture_bomb[thing]; D_80183E40[0] = sp40.bombPos[0]; D_80183E40[1] = sp40.bombPos[1] + 1.0; diff --git a/src/render_objects.h b/src/render_objects.h index dccd883d0..ab7c44f30 100644 --- a/src/render_objects.h +++ b/src/render_objects.h @@ -449,6 +449,4 @@ extern u8* D_8018D4C0; extern u8 *gPortraitTextures[]; -extern u8 d_course_bowsers_castle_thwomp_tlut[]; // Some type of pallette? - #endif diff --git a/src/update_objects.c b/src/update_objects.c index 87d281dbf..7cad4739a 100644 --- a/src/update_objects.c +++ b/src/update_objects.c @@ -37,6 +37,9 @@ #include "memory.h" #include <assets/luigi_raceway_data.h> #include <assets/moo_moo_farm_data.h> +#include <assets/bowsers_castle_data.h> +#include <assets/frappe_snowland_data.h> +#include <assets/boo_frames.h> //! @todo unused? f32 D_800E43B0[] = { @@ -4397,7 +4400,7 @@ void func_8007C550(s32 objectIndex) { void func_8007C5B4(s32 objectIndex) { Object *object; - init_texture_object(objectIndex, d_course_banshee_boardwalk_boo_tlut, D_80165880, 48, 40); + init_texture_object(objectIndex, d_course_banshee_boardwalk_boo_tlut, gTextureGhosts, 48, 40); object = &gObjectList[objectIndex]; object->pos[0] = 0.0f; object->pos[1] = 0.0f; @@ -7001,12 +7004,16 @@ void func_8008379C(s32 objectIndex) { gObjectList[objectIndex].orientation[2] += gObjectList[objectIndex].primAlpha; } +static const char*sSnowmanHeadList[] = { + d_course_frappe_snowland_snowman_head +}; + void func_80083868(s32 objectIndex) { Object *object; - - init_texture_object(objectIndex, d_course_frappe_snowland_snowman_tlut, d_course_frappe_snowland_snowman_head, 0x40U, (u16) 0x00000040); + Vtx *vtx = (Vtx *) LOAD_ASSET(D_0D0061B0); + init_texture_object(objectIndex, d_course_frappe_snowland_snowman_tlut, sSnowmanHeadList, 0x40U, (u16) 0x00000040); object = &gObjectList[objectIndex]; - object->vertex = D_0D0061B0; + object->vertex = vtx; object->sizeScaling = 0.1f; object->itemDisplay = 0; func_80072488(objectIndex); @@ -7056,7 +7063,7 @@ void func_80083A94(s32 objectIndex) { switch (gObjectList[objectIndex].state) { case 0: break; - case 1: + case 1: // snowman head func_80083868(objectIndex); break; } @@ -7066,9 +7073,13 @@ void func_80083A94(s32 objectIndex) { func_80083948(objectIndex); } +static const char*sSnowmanBodyList[] = { + d_course_frappe_snowland_snowman_body +}; + void func_80083B0C(s32 objectIndex) { Vtx *vtx = (Vtx *) LOAD_ASSET(common_vtx_hedgehog); - init_texture_object(objectIndex, d_course_frappe_snowland_snowman_tlut, d_course_frappe_snowland_snowman_body, 0x40U, (u16) 0x00000040); + init_texture_object(objectIndex, d_course_frappe_snowland_snowman_tlut, sSnowmanBodyList, 0x40U, (u16) 0x00000040); gObjectList[objectIndex].vertex = vtx; gObjectList[objectIndex].sizeScaling = 0.1f; gObjectList[objectIndex].itemDisplay = 0; @@ -7093,7 +7104,7 @@ void func_80083C04(s32 objectIndex) { switch (object->state) { case 0: break; - case 1: + case 1: // snowmanbody func_80083B0C(objectIndex); break; case 2: @@ -7148,8 +7159,8 @@ void update_snowmen(void) { for (var_s0 = 0; var_s0 < NUM_SNOWMEN; var_s0++) { var_s4 = indexObjectList1[var_s0]; var_s3 = indexObjectList2[var_s0]; - func_80083A94(var_s3); - func_80083C04(var_s4); + func_80083A94(var_s3); // snowman head + func_80083C04(var_s4); // snowman body if (is_obj_index_flag_status_inactive(var_s4, 0x00001000) != 0) { object = &gObjectList[var_s4]; if ((func_8008A8B0(object->unk_0D5 - 1, object->unk_0D5 + 1) != 0) && (func_80089B50(var_s4) != 0)) { |
