From 49df2fc6e551138c367fb6b541ced77e9cf6e123 Mon Sep 17 00:00:00 2001 From: coco875 Date: Sun, 5 Jan 2025 01:32:27 +0100 Subject: [PATCH 1/9] multiple fix --- include/mk64.h | 6 +- src/code_800029B0.c | 6 +- src/engine/courses/Course.cpp | 86 ++-- src/engine/courses/LuigiRaceway.cpp | 214 ++++++--- src/engine/courses/WarioStadium.cpp | 234 ++++++---- src/menu_items.c | 674 +++++++++++++++------------- src/menus.h | 26 +- src/port/Engine.cpp | 80 ++-- src/port/GBIMiddleware.cpp | 2 +- src/racing/actors.c | 14 +- src/racing/skybox_and_splitscreen.c | 30 +- src/stubs.c | 3 +- 12 files changed, 813 insertions(+), 562 deletions(-) diff --git a/include/mk64.h b/include/mk64.h index 86eb1ff9a..9e4d10da9 100644 --- a/include/mk64.h +++ b/include/mk64.h @@ -138,6 +138,8 @@ void gSPDisplayListOffset(Gfx* pkt, Gfx* dl, int offset); void gSPVertex(Gfx* pkt, uintptr_t v, int n, int v0); void gSPInvalidateTexCache(Gfx* pkt, uintptr_t texAddr); +#define TEXTURE_SHIFT 2 + // Dumb hack to fix load tile size on higher than native resolutions #define gMKLoadTextureTile(pkt, timg, fmt, siz, width, height, uls, ult, lrs, lrt, pal, cms, cmt, masks, maskt, \ shifts, shiftt) \ @@ -147,7 +149,7 @@ void gSPInvalidateTexCache(Gfx* pkt, uintptr_t texAddr); maskt, shiftt, cms, masks, shifts); \ gDPLoadSync(pkt); \ gDPLoadTile(pkt, G_TX_LOADTILE, (uls) << G_TEXTURE_IMAGE_FRAC, (ult) << G_TEXTURE_IMAGE_FRAC, \ - (lrs) << G_TEXTURE_IMAGE_FRAC, (lrt + 2) << G_TEXTURE_IMAGE_FRAC); \ + (lrs) << G_TEXTURE_IMAGE_FRAC, (lrt + TEXTURE_SHIFT) << G_TEXTURE_IMAGE_FRAC); \ gDPPipeSync(pkt); \ gDPSetTile(pkt, fmt, siz, (((((lrs) - (uls) + 1) * siz##_LINE_BYTES) + 7) >> 3), 0, G_TX_RENDERTILE, pal, cmt, \ maskt, shiftt, cms, masks, shifts); \ @@ -163,7 +165,7 @@ void gSPInvalidateTexCache(Gfx* pkt, uintptr_t texAddr); shiftt, cms, masks, shifts); \ gDPLoadSync(pkt); \ gDPLoadTile(pkt, G_TX_LOADTILE, (uls) << (G_TEXTURE_IMAGE_FRAC - 1), (ult) << (G_TEXTURE_IMAGE_FRAC), \ - (lrs) << (G_TEXTURE_IMAGE_FRAC - 1), (lrt + 2) << (G_TEXTURE_IMAGE_FRAC)); \ + (lrs) << (G_TEXTURE_IMAGE_FRAC - 1), (lrt + TEXTURE_SHIFT) << (G_TEXTURE_IMAGE_FRAC)); \ gDPPipeSync(pkt); \ gDPSetTile(pkt, fmt, G_IM_SIZ_4b, (((((lrs) - (uls) + 1) >> 1) + 7) >> 3), 0, G_TX_RENDERTILE, pal, cmt, \ maskt, shiftt, cms, masks, shifts); \ diff --git a/src/code_800029B0.c b/src/code_800029B0.c index c1c784d51..5dcba11e3 100644 --- a/src/code_800029B0.c +++ b/src/code_800029B0.c @@ -55,7 +55,7 @@ u16 D_800DC5E4 = 0; //! @todo gPlayerWinningIndex (D_800DC5E8) accessed as word, D_800DC5EB as u8 s32 gPlayerWinningIndex = 0; -ALIGNED16 struct UnkStruct_800DC5EC D_8015F480[4]; +ALIGNED16 struct UnkStruct_800DC5EC D_8015F480[4] = { 0 }; struct UnkStruct_800DC5EC* D_800DC5EC = &D_8015F480[0]; struct UnkStruct_800DC5EC* D_800DC5F0 = &D_8015F480[1]; struct UnkStruct_800DC5EC* D_800DC5F4 = &D_8015F480[2]; @@ -124,8 +124,8 @@ Vec3f D_8015F768; Vec3f D_8015F778; f32 gCourseDirection; // Extra mode, flips vertices. -s32 gNumScreens; // Set to zero in single player mode -s32 D_8015F790[64]; // Unknown data, potentially not used. +s32 gNumScreens; // Set to zero in single player mode +s32 D_8015F790[64]; // Unknown data, potentially not used. u16 D_8015F890; u16 D_8015F892; u16 D_8015F894; diff --git a/src/engine/courses/Course.cpp b/src/engine/courses/Course.cpp index 7d8fb3bff..0dd1ba33a 100644 --- a/src/engine/courses/Course.cpp +++ b/src/engine/courses/Course.cpp @@ -5,21 +5,21 @@ #include "ChocoMountain.h" extern "C" { - #include "main.h" - #include "memory.h" - #include "common_structs.h" - #include "course_offsets.h" - #include "some_data.h" - #include "code_8006E9C0.h" - #include "code_8003DC40.h" - #include "assets/common_data.h" - #include "render_objects.h" - #include "save.h" - #include "staff_ghosts.h" - #include "Engine.h" - #include "code_800029B0.h" - #include "render_courses.h" - extern StaffGhost* d_mario_raceway_staff_ghost; +#include "main.h" +#include "memory.h" +#include "common_structs.h" +#include "course_offsets.h" +#include "some_data.h" +#include "code_8006E9C0.h" +#include "code_8003DC40.h" +#include "assets/common_data.h" +#include "render_objects.h" +#include "save.h" +#include "staff_ghosts.h" +#include "Engine.h" +#include "code_800029B0.h" +#include "render_courses.h" +extern StaffGhost* d_mario_raceway_staff_ghost; } Course::Course() { @@ -28,7 +28,7 @@ Course::Course() { // Props.CourseLength = "567m"; // Props.Cup = FLOWER_CUP; // Props.CupIndex = 3; - Props.LakituTowType = (s32)OLakitu::LakituTowType::NORMAL; + Props.LakituTowType = (s32) OLakitu::LakituTowType::NORMAL; Props.AIBehaviour = D_0D008F28; Props.AIMaximumSeparation = 50.0f; Props.AIMinimumSeparation = 0.3f; @@ -38,7 +38,7 @@ Course::Course() { Props.NearPersp = 3.0f; Props.FarPersp = 6800.0f; - Props.PathSizes = {600, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 600, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -104,13 +104,13 @@ void Course::Load() { size = ResourceGetTexSizeByName(asset->addr); freeMemory = (u8*) allocate_memory(size); - texture = (u8*)(asset->addr); + texture = (u8*) (asset->addr); if (texture) { if (asset == &this->Props.textures[0]) { gSegmentTable[5] = reinterpret_cast(&freeMemory[0]); } strcpy(reinterpret_cast(freeMemory), asset->addr); - //memcpy(freeMemory, texture, size); + // memcpy(freeMemory, texture, size); texSegSize += size; // printf("Texture Addr: 0x%llX, size 0x%X\n", &freeMemory[0], size); } @@ -125,7 +125,7 @@ void Course::Load() { } gSegmentTable[7] = reinterpret_cast(&gfx[0]); - displaylist_unpack(reinterpret_cast(gfx), reinterpret_cast(packed), 0); + displaylist_unpack(reinterpret_cast(gfx), reinterpret_cast(packed), 0); Course::Init(); } @@ -143,17 +143,17 @@ void Course::Init() { D_8015F59C = 0; D_8015F5A0 = 0; func_80295D6C(); - D_8015F58C = 0; + D_8015F58C = 0; gCollisionMeshCount = 0; gCollisionMesh = (CollisionTriangle*) gNextFreeMemoryAddress; D_800DC5BC = 0; D_800DC5C8 = 0; } -void Course::LoadTextures() { } +void Course::LoadTextures() { +} void Course::SpawnActors() { - } void Course::InitClouds() { @@ -177,48 +177,41 @@ void Course::UpdateClouds(s32 arg0, Camera* camera) { } // Adjusts player speed on steep hills -void Course::SomeCollisionThing(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, f32* arg7) { +void Course::SomeCollisionThing(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, + f32* arg7) { func_8003E048(player, arg1, arg2, arg3, arg4, arg5, arg6, arg7); } - void Course::MinimapSettings() { - } void Course::InitCourseObjects() { - } void Course::UpdateCourseObjects() { - } void Course::RenderCourseObjects(s32 cameraId) { - } // Implemented for the first cup of each course plus Koopa Beach void Course::SomeSounds() { - } void Course::CreditsSpawnActors() { - } void Course::WhatDoesThisDo(Player* player, int8_t playerId) { - } void Course::WhatDoesThisDoAI(Player* player, int8_t playerId) { - } // Positions the finishline on the minimap void Course::MinimapFinishlinePosition() { //! todo: Place hard-coded values here. - draw_hud_2d_texture_8x8(this->Props.MinimapFinishlineX, this->Props.MinimapFinishlineY, (u8*) common_texture_minimap_finish_line); + draw_hud_2d_texture_8x8(this->Props.MinimapFinishlineX, this->Props.MinimapFinishlineY, + (u8*) common_texture_minimap_finish_line); } void Course::SetStaffGhost() { @@ -233,16 +226,25 @@ void Course::Waypoints(Player* player, int8_t playerId) { } } -void Course::SpawnVehicles() {} -void Course::UpdateVehicles() {} +void Course::SpawnVehicles() { +} +void Course::UpdateVehicles() { +} -void Course::Render(struct UnkStruct_800DC5EC* arg0) {} -void Course::RenderCredits() {} -void Course::Collision() {} -void Course::ScrollingTextures() {} -void Course::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection) {} +void Course::Render(struct UnkStruct_800DC5EC* arg0) { +} +void Course::RenderCredits() { +} +void Course::Collision() { +} +void Course::ScrollingTextures() { +} +void Course::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, + uint16_t playerDirection) { +} -void Course::Destroy() {} +void Course::Destroy() { +} bool Course::IsMod() { return false; diff --git a/src/engine/courses/LuigiRaceway.cpp b/src/engine/courses/LuigiRaceway.cpp index 6020b72d1..004c3a33b 100644 --- a/src/engine/courses/LuigiRaceway.cpp +++ b/src/engine/courses/LuigiRaceway.cpp @@ -11,31 +11,31 @@ #include "engine/actors/AFinishline.h" extern "C" { - #include "main.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "collision.h" - #include "code_8003DC40.h" - #include "memory.h" - #include "courses/staff_ghost_data.h" - #include "framebuffer_effects.h" - #include "skybox_and_splitscreen.h" - extern const char *luigi_raceway_dls[]; - extern s16 currentScreenSection; +#include "main.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "collision.h" +#include "code_8003DC40.h" +#include "memory.h" +#include "courses/staff_ghost_data.h" +#include "framebuffer_effects.h" +#include "skybox_and_splitscreen.h" +extern const char* luigi_raceway_dls[]; +extern s16 currentScreenSection; } const course_texture luigi_raceway_textures[] = { @@ -104,7 +104,7 @@ LuigiRaceway::LuigiRaceway() { Props.NearPersp = 9.0f; Props.FarPersp = 4500.0f; - Props.PathSizes = {0x2DA, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 0x2DA, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -126,12 +126,12 @@ LuigiRaceway::LuigiRaceway() { Props.D_0D009808[2] = 5.75f; Props.D_0D009808[3] = 6.3333334f; - Props.PathTable[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_luigi_raceway_unknown_waypoints); + Props.PathTable[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_luigi_raceway_unknown_waypoints); Props.PathTable[1] = NULL; Props.PathTable[2] = NULL; Props.PathTable[3] = NULL; - Props.PathTable2[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_luigi_raceway_track_waypoints); + Props.PathTable2[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_luigi_raceway_track_waypoints); Props.PathTable2[1] = NULL; Props.PathTable2[2] = NULL; Props.PathTable2[3] = NULL; @@ -141,21 +141,21 @@ LuigiRaceway::LuigiRaceway() { Props.MinimapFinishlineX = 0; Props.MinimapFinishlineY = 0; - Props.Skybox.TopRight = {128, 184, 248}; - Props.Skybox.BottomRight = {216, 232, 248}; - Props.Skybox.BottomLeft = {216, 232, 248}; - Props.Skybox.TopLeft = {128, 184, 248}; - Props.Skybox.FloorTopRight = {216, 232, 248}; - Props.Skybox.FloorBottomRight = {0, 0, 0}; - Props.Skybox.FloorBottomLeft = {0, 0, 0}; - Props.Skybox.FloorTopLeft = {216, 232, 248}; + Props.Skybox.TopRight = { 128, 184, 248 }; + Props.Skybox.BottomRight = { 216, 232, 248 }; + Props.Skybox.BottomLeft = { 216, 232, 248 }; + Props.Skybox.TopLeft = { 128, 184, 248 }; + Props.Skybox.FloorTopRight = { 216, 232, 248 }; + Props.Skybox.FloorBottomRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopLeft = { 216, 232, 248 }; Props.Sequence = MusicSeq::MUSIC_SEQ_RACEWAYS_WARIO_STADIUM; } void LuigiRaceway::Load() { Course::Load(); - parse_course_displaylists((TrackSectionsI*)LOAD_ASSET_RAW(d_course_luigi_raceway_addr)); + parse_course_displaylists((TrackSectionsI*) LOAD_ASSET_RAW(d_course_luigi_raceway_addr)); func_80295C6C(); D_8015F8E4 = gCourseMinY - 10.0f; } @@ -167,8 +167,8 @@ void LuigiRaceway::LoadTextures() { void LuigiRaceway::SpawnActors() { gWorldInstance.AddActor(new AFinishline()); - spawn_foliage((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_luigi_raceway_tree_spawn)); - spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_luigi_raceway_item_box_spawns)); + spawn_foliage((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_luigi_raceway_tree_spawn)); + spawn_all_item_boxes((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_luigi_raceway_item_box_spawns)); if (gGamestate == CREDITS_SEQUENCE) { gWorldInstance.AddObject(new OHotAirBalloon(FVector(-1250.0f, 0.0f, 1110.0f))); @@ -179,7 +179,7 @@ void LuigiRaceway::SpawnActors() { void LuigiRaceway::SpawnVehicles() { if (gModeSelection == VERSUS) { - Vec3f pos = {0, 0, 0}; + Vec3f pos = { 0, 0, 0 }; gWorldInstance.AddBombKart(pos, &D_80164550[0][50], 50, 1, 0.8333333f); gWorldInstance.AddBombKart(pos, &D_80164550[0][200], 200, 3, 0.8333333f); @@ -193,7 +193,7 @@ void LuigiRaceway::SpawnVehicles() { // Likely sets minimap boundaries void LuigiRaceway::MinimapSettings() { - D_8018D220 = reinterpret_cast(dma_textures(gTextureExhaust2, 0x4F4U, 0xC00)); + D_8018D220 = reinterpret_cast(dma_textures(gTextureExhaust2, 0x4F4U, 0xC00)); D_8018D2A0 = 0.0155f; D_8018D2C0[0] = 271; D_8018D2E0 = 45; @@ -229,8 +229,7 @@ void LuigiRaceway::SomeSounds() { } void LuigiRaceway::WhatDoesThisDo(Player* player, int8_t playerId) { - if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x145) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0x18B)) { + if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x145) && ((s16) gNearestWaypointByPlayerId[playerId] < 0x18B)) { if (D_80165300[playerId] != 1) { func_800CA288(playerId, 0x55); } @@ -244,8 +243,7 @@ void LuigiRaceway::WhatDoesThisDo(Player* player, int8_t playerId) { } void LuigiRaceway::WhatDoesThisDoAI(Player* player, int8_t playerId) { - if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x145) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0x18B)) { + if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x145) && ((s16) gNearestWaypointByPlayerId[playerId] < 0x18B)) { if (D_80165300[playerId] != 1) { func_800CA2E4(playerId, 0x55); } @@ -261,7 +259,8 @@ void LuigiRaceway::WhatDoesThisDoAI(Player* player, int8_t playerId) { // Positions the finishline on the minimap void LuigiRaceway::MinimapFinishlinePosition() { //! todo: Place hard-coded values here. - draw_hud_2d_texture_8x8(this->Props.MinimapFinishlineX, this->Props.MinimapFinishlineY, (u8*) common_texture_minimap_finish_line); + draw_hud_2d_texture_8x8(this->Props.MinimapFinishlineX, this->Props.MinimapFinishlineY, + (u8*) common_texture_minimap_finish_line); } void LuigiRaceway::SetStaffGhost() { @@ -277,6 +276,108 @@ void LuigiRaceway::SetStaffGhost() { D_80162DE4 = 1; } +void render_LuigiRaceway_jumbotron() { + gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, + G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); + gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gSegmentTable[5] + 0x5800); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); + gSPVertex(gDisplayListHead++, (uintptr_t) segment_vtx_to_virtual(0xB710), 3, 0); + gSP1Triangle(gDisplayListHead++, 0, 1, 2, 0); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gSegmentTable[5] + 0xB800); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); + gSPVertex(gDisplayListHead++, (uintptr_t) segment_vtx_to_virtual(0xB740), 32, 0); + gSP2Triangles(gDisplayListHead++, 0, 1, 2, 0, 0, 2, 3, 0); + gSP2Triangles(gDisplayListHead++, 4, 5, 6, 0, 4, 6, 7, 0); + gSP2Triangles(gDisplayListHead++, 8, 9, 10, 0, 9, 11, 12, 0); + gSP2Triangles(gDisplayListHead++, 9, 12, 10, 0, 13, 14, 15, 0); + gSP2Triangles(gDisplayListHead++, 13, 15, 16, 0, 17, 18, 19, 0); + gSP2Triangles(gDisplayListHead++, 17, 19, 20, 0, 11, 21, 12, 0); + gSP2Triangles(gDisplayListHead++, 10, 22, 23, 0, 10, 23, 24, 0); + gSP2Triangles(gDisplayListHead++, 25, 22, 26, 0, 25, 26, 27, 0); + gSP2Triangles(gDisplayListHead++, 28, 23, 29, 0, 28, 29, 30, 0); + gSP1Triangle(gDisplayListHead++, 27, 26, 31, 0); + gSPVertex(gDisplayListHead++, (uintptr_t) segment_vtx_to_virtual(0xB940), 14, 0); + gSP2Triangles(gDisplayListHead++, 0, 1, 2, 0, 3, 4, 5, 0); + gSP2Triangles(gDisplayListHead++, 3, 5, 6, 0, 1, 7, 8, 0); + gSP2Triangles(gDisplayListHead++, 1, 8, 9, 0, 10, 11, 12, 0); + gSP1Triangle(gDisplayListHead++, 10, 12, 13, 0); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0x0000, G_TX_RENDERTILE, 0, + G_TX_NOMIRROR | G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_CLAMP, 6, G_TX_NOLOD); + gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x00FC, 0x007C); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gSegmentTable[5] + 0xF800); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 2047, 128); + gSPVertex(gDisplayListHead++, (uintptr_t) segment_vtx_to_virtual(0xBA20), 4, 0); + gSP2Triangles(gDisplayListHead++, 0, 1, 2, 0, 0, 2, 3, 0); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gSegmentTable[5] + 0x10800); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 2047, 128); + gSPVertex(gDisplayListHead++, (uintptr_t) segment_vtx_to_virtual(0xBA60), 4, 0); + gSP2Triangles(gDisplayListHead++, 0, 1, 2, 0, 0, 2, 3, 0); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gSegmentTable[5] + 0x11800); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 2047, 128); + gSPVertex(gDisplayListHead++, (uintptr_t) segment_vtx_to_virtual(0xBAA0), 4, 0); + gSP2Triangles(gDisplayListHead++, 0, 1, 2, 0, 0, 2, 3, 0); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gSegmentTable[5] + 0x12800); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 2047, 128); + gSPVertex(gDisplayListHead++, (uintptr_t) segment_vtx_to_virtual(0xBAE0), 4, 0); + gSP2Triangles(gDisplayListHead++, 0, 1, 2, 0, 0, 2, 3, 0); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gSegmentTable[5] + 0x13800); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 2047, 128); + gSPVertex(gDisplayListHead++, (uintptr_t) segment_vtx_to_virtual(0xBB20), 4, 0); + gSP2Triangles(gDisplayListHead++, 0, 1, 2, 0, 0, 2, 3, 0); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gSegmentTable[5] + 0x14800); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 2047, 128); + gSPVertex(gDisplayListHead++, (uintptr_t) segment_vtx_to_virtual(0xBB60), 4, 0); + gSP2Triangles(gDisplayListHead++, 0, 1, 2, 0, 0, 2, 3, 0); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, + G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); + gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gSegmentTable[5] + 0xB000); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); + gSPVertex(gDisplayListHead++, (uintptr_t) segment_vtx_to_virtual(0xBBA0), 4, 0); + gSP2Triangles(gDisplayListHead++, 0, 1, 2, 0, 0, 2, 3, 0); +} + void LuigiRaceway::Render(struct UnkStruct_800DC5EC* arg0) { UNUSED s32 pad; u16 sp22 = (u16) arg0->pathCounter; @@ -306,6 +407,7 @@ void LuigiRaceway::Render(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); + render_LuigiRaceway_jumbotron(); render_course_segments(luigi_raceway_dls, arg0); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA); @@ -334,23 +436,25 @@ void LuigiRaceway::Render(struct UnkStruct_800DC5EC* arg0) { } /** - * The jumbo television screen used to be split into six sections to fit into the n64's texture size restrictions - * It isn't split into six sections anymore + * The jumbo television screen used to be split into six sections to fit into the n64's texture size + * restrictions It isn't split into six sections anymore */ - copy_jumbotron_fb_port(D_800DC5DC, D_800DC5E0, currentScreenSection, - (u16*) gPortFramebuffers[prevFrame], - (u16*) (gSegmentTable[5] + 0xF800)); + copy_jumbotron_fb_port(D_800DC5DC, D_800DC5E0, currentScreenSection, (u16*) gPortFramebuffers[prevFrame], + (u16*) (gSegmentTable[5] + 0xF800)); } } void LuigiRaceway::RenderCredits() { - gSPDisplayList(gDisplayListHead++, (Gfx*)(d_course_luigi_raceway_dl_FD40)); + gSPDisplayList(gDisplayListHead++, (Gfx*) (d_course_luigi_raceway_dl_FD40)); } -void LuigiRaceway::Collision() {} +void LuigiRaceway::Collision() { +} -void LuigiRaceway::SomeCollisionThing(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, f32* arg7) { +void LuigiRaceway::SomeCollisionThing(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, + f32* arg6, f32* arg7) { func_8003E9EC(player, arg1, arg2, arg3, arg4, arg5, arg6, arg7); } -void LuigiRaceway::Destroy() { } +void LuigiRaceway::Destroy() { +} diff --git a/src/engine/courses/WarioStadium.cpp b/src/engine/courses/WarioStadium.cpp index a71b670f1..fe009891e 100644 --- a/src/engine/courses/WarioStadium.cpp +++ b/src/engine/courses/WarioStadium.cpp @@ -11,29 +11,29 @@ #include "engine/actors/AFinishline.h" extern "C" { - #include "main.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "collision.h" - #include "code_8003DC40.h" - #include "memory.h" - #include "skybox_and_splitscreen.h" - extern const char *wario_stadium_dls[]; - extern s16 currentScreenSection; +#include "main.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "collision.h" +#include "code_8003DC40.h" +#include "memory.h" +#include "skybox_and_splitscreen.h" +extern const char* wario_stadium_dls[]; +extern s16 currentScreenSection; } const course_texture wario_stadium_textures[] = { @@ -81,7 +81,7 @@ WarioStadium::WarioStadium() { Props.NearPersp = 10.0f; Props.FarPersp = 4800.0f; - Props.PathSizes = {0x640, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 0x640, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -103,12 +103,12 @@ WarioStadium::WarioStadium() { Props.D_0D009808[2] = 5.75f; Props.D_0D009808[3] = 6.3333334f; - Props.PathTable[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_wario_stadium_unknown_waypoints); + Props.PathTable[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_wario_stadium_unknown_waypoints); Props.PathTable[1] = NULL; Props.PathTable[2] = NULL; Props.PathTable[3] = NULL; - Props.PathTable2[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_wario_stadium_track_waypoints); + Props.PathTable2[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_wario_stadium_track_waypoints); Props.PathTable2[1] = NULL; Props.PathTable2[2] = NULL; Props.PathTable2[3] = NULL; @@ -118,39 +118,39 @@ WarioStadium::WarioStadium() { Props.MinimapFinishlineX = 0; Props.MinimapFinishlineY = 0; - Props.Skybox.TopRight = {20, 30, 56}; - Props.Skybox.BottomRight = {40, 60, 110}; - Props.Skybox.BottomLeft = {40, 60, 110}; - Props.Skybox.TopLeft = {20, 30, 56}; - Props.Skybox.FloorTopRight = {0, 0, 0}; - Props.Skybox.FloorBottomRight = {0, 0, 0}; - Props.Skybox.FloorBottomLeft = {0, 0, 0}; - Props.Skybox.FloorTopLeft = {0, 0, 0}; + Props.Skybox.TopRight = { 20, 30, 56 }; + Props.Skybox.BottomRight = { 40, 60, 110 }; + Props.Skybox.BottomLeft = { 40, 60, 110 }; + Props.Skybox.TopLeft = { 20, 30, 56 }; + Props.Skybox.FloorTopRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopLeft = { 0, 0, 0 }; Props.Sequence = MusicSeq::MUSIC_SEQ_RACEWAYS_WARIO_STADIUM; } void WarioStadium::Load() { Course::Load(); - parse_course_displaylists((TrackSectionsI*)LOAD_ASSET_RAW(d_course_wario_stadium_addr)); + parse_course_displaylists((TrackSectionsI*) LOAD_ASSET_RAW(d_course_wario_stadium_addr)); func_80295C6C(); D_8015F8E4 = gCourseMinY - 10.0f; // d_course_wario_stadium_packed_dl_C50 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07000C50), 100, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07000C50), 100, 255, 255, 255); // d_course_wario_stadium_packed_dl_BD8 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07000BD8), 100, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07000BD8), 100, 255, 255, 255); // d_course_wario_stadium_packed_dl_B60 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07000B60), 100, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07000B60), 100, 255, 255, 255); // d_course_wario_stadium_packed_dl_AE8 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07000AE8), 100, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07000AE8), 100, 255, 255, 255); // d_course_wario_stadium_packed_dl_CC8 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07000CC8), 100, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07000CC8), 100, 255, 255, 255); // d_course_wario_stadium_packed_dl_D50 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07000D50), 100, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07000D50), 100, 255, 255, 255); // d_course_wario_stadium_packed_dl_DD0 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07000DD0), 100, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07000DD0), 100, 255, 255, 255); // d_course_wario_stadium_packed_dl_E48 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07000E48), 100, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07000E48), 100, 255, 255, 255); } void WarioStadium::LoadTextures() { @@ -158,30 +158,31 @@ void WarioStadium::LoadTextures() { void WarioStadium::SpawnActors() { Vec3f finish; - finish[0] = (gIsMirrorMode != 0) ? D_80164490->posX + 12.0f : D_80164490->posX - 12.0f;(gIsMirrorMode != 0) ? D_80164490->posX + 12.0f : D_80164490->posX - 12.0f; + finish[0] = (gIsMirrorMode != 0) ? D_80164490->posX + 12.0f : D_80164490->posX - 12.0f; + (gIsMirrorMode != 0) ? D_80164490->posX + 12.0f : D_80164490->posX - 12.0f; finish[1] = D_8015F8D0[1] = (f32) (D_80164490->posY - 15); finish[2] = D_8015F8D0[2] = D_80164490->posZ; gWorldInstance.AddActor(new AFinishline(finish)); - spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_wario_stadium_item_box_spawns)); + spawn_all_item_boxes((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_wario_stadium_item_box_spawns)); - Vec3f pos = {-131.0f, 83.0f, 286.0f}; + Vec3f pos = { -131.0f, 83.0f, 286.0f }; pos[0] *= gCourseDirection; gWorldInstance.AddActor(new AWarioSign(pos)); - Vec3f pos2 = {-2353.0f, 72.0f, -1608.0f}; + Vec3f pos2 = { -2353.0f, 72.0f, -1608.0f }; pos2[0] *= gCourseDirection; gWorldInstance.AddActor(new AWarioSign(pos2)); - Vec3f pos3 = {-2622.0f, 79.0f, 739.0f}; + Vec3f pos3 = { -2622.0f, 79.0f, 739.0f }; pos3[0] *= gCourseDirection; gWorldInstance.AddActor(new AWarioSign(pos3)); } void WarioStadium::SpawnVehicles() { if (gModeSelection == VERSUS) { - Vec3f pos = {0, 0, 0}; + Vec3f pos = { 0, 0, 0 }; gWorldInstance.AddBombKart(pos, &D_80164550[0][50], 50, 3, 0.8333333f); gWorldInstance.AddBombKart(pos, &D_80164550[0][100], 100, 1, 0.8333333f); @@ -209,7 +210,8 @@ void WarioStadium::MinimapSettings() { D_8018D2E8 = 35; } -void WarioStadium::InitCourseObjects() {} +void WarioStadium::InitCourseObjects() { +} void WarioStadium::SomeSounds() { vec3f_set(D_8015F748, 298.0f, 202.0f, -850.0f); @@ -222,14 +224,92 @@ void WarioStadium::SomeSounds() { func_800C9D80(D_8015F778, D_802B91C8, 0x5103700B); } -void WarioStadium::WhatDoesThisDo(Player* player, int8_t playerId) {} +void WarioStadium::WhatDoesThisDo(Player* player, int8_t playerId) { +} -void WarioStadium::WhatDoesThisDoAI(Player* player, int8_t playerId) {} +void WarioStadium::WhatDoesThisDoAI(Player* player, int8_t playerId) { +} // Positions the finishline on the minimap void WarioStadium::MinimapFinishlinePosition() { //! todo: Place hard-coded values here. - draw_hud_2d_texture_8x8(this->Props.MinimapFinishlineX, this->Props.MinimapFinishlineY, (u8*) common_texture_minimap_finish_line); + draw_hud_2d_texture_8x8(this->Props.MinimapFinishlineX, this->Props.MinimapFinishlineY, + (u8*) common_texture_minimap_finish_line); +} + +void render_WarioStadium_jumbotron() { + gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, + G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); + gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gSegmentTable[5] + 0x7800); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256); + gSPVertex(gDisplayListHead++, (uintptr_t) segment_vtx_to_virtual(0x177B0), 32, 0); + gSP2Triangles(gDisplayListHead++, 0, 1, 2, 0, 0, 2, 3, 0); + gSP2Triangles(gDisplayListHead++, 4, 5, 6, 0, 4, 6, 7, 0); + gSP2Triangles(gDisplayListHead++, 8, 9, 10, 0, 8, 10, 11, 0); + gSP2Triangles(gDisplayListHead++, 12, 13, 14, 0, 12, 14, 15, 0); + gSP2Triangles(gDisplayListHead++, 16, 17, 18, 0, 16, 18, 19, 0); + gSP2Triangles(gDisplayListHead++, 20, 21, 22, 0, 20, 22, 23, 0); + gSP2Triangles(gDisplayListHead++, 24, 25, 26, 0, 24, 26, 27, 0); + gSP2Triangles(gDisplayListHead++, 28, 29, 30, 0, 28, 30, 31, 0); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0x0000, G_TX_RENDERTILE, 0, + G_TX_NOMIRROR | G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_CLAMP, 6, G_TX_NOLOD); + gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x00FC, 0x007C); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gSegmentTable[5] + 0x8800); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 2047, 128); + gSPVertex(gDisplayListHead++, (uintptr_t) segment_vtx_to_virtual(0x179B0), 4, 0); + gSP2Triangles(gDisplayListHead++, 0, 1, 2, 0, 0, 2, 3, 0); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gSegmentTable[5] + 0x9800); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 2047, 128); + gSPVertex(gDisplayListHead++, (uintptr_t) segment_vtx_to_virtual(0x179F0), 4, 0); + gSP2Triangles(gDisplayListHead++, 0, 1, 2, 0, 0, 2, 3, 0); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gSegmentTable[5] + 0xA800); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 2047, 128); + gSPVertex(gDisplayListHead++, (uintptr_t) segment_vtx_to_virtual(0x17A30), 4, 0); + gSP2Triangles(gDisplayListHead++, 0, 1, 2, 0, 0, 2, 3, 0); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gSegmentTable[5] + 0xB800); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 2047, 128); + gSPVertex(gDisplayListHead++, (uintptr_t) segment_vtx_to_virtual(0x17A70), 4, 0); + gSP2Triangles(gDisplayListHead++, 0, 1, 2, 0, 0, 2, 3, 0); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gSegmentTable[5] + 0xC800); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 2047, 128); + gSPVertex(gDisplayListHead++, (uintptr_t) segment_vtx_to_virtual(0x17AB0), 4, 0); + gSP2Triangles(gDisplayListHead++, 0, 1, 2, 0, 0, 2, 3, 0); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gSegmentTable[5] + 0xD800); + gDPTileSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 2047, 128); + gSPVertex(gDisplayListHead++, (uintptr_t) segment_vtx_to_virtual(0x17AF0), 4, 0); + gSP2Triangles(gDisplayListHead++, 0, 1, 2, 0, 0, 2, 3, 0); } void WarioStadium::Render(struct UnkStruct_800DC5EC* arg0) { @@ -244,20 +324,21 @@ void WarioStadium::Render(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++, segmented_gfx_to_virtual((void*)0x0700A0C8)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x0700A0C8)); } gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATERGBA, G_CC_MODULATERGBA); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); + render_WarioStadium_jumbotron(); render_course_segments(wario_stadium_dls, arg0); // d_course_wario_stadium_packed_dl_A228 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x0700A228)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 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++, segmented_gfx_to_virtual((void*)0x07000A88)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07000A88)); gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); D_800DC5DC = 88; @@ -275,26 +356,28 @@ void WarioStadium::Render(struct UnkStruct_800DC5EC* arg0) { } /** - * The jumbo television screen used to be split into six sections to fit into the n64's texture size restrictions - * It isn't split into six sections anymore + * The jumbo television screen used to be split into six sections to fit into the n64's texture size + * restrictions It isn't split into six sections anymore */ - copy_jumbotron_fb_port(D_800DC5DC, D_800DC5E0, currentScreenSection, - (u16*) gPortFramebuffers[prevFrame], - (u16*) (gSegmentTable[5] + 0x8800)); + copy_jumbotron_fb_port(D_800DC5DC, D_800DC5E0, currentScreenSection, (u16*) gPortFramebuffers[prevFrame], + (u16*) (gSegmentTable[5] + 0x8800)); } } void WarioStadium::RenderCredits() { - gSPDisplayList(gDisplayListHead++, (Gfx*)(d_course_wario_stadium_dl_CA78)); + gSPDisplayList(gDisplayListHead++, (Gfx*) (d_course_wario_stadium_dl_CA78)); } -void WarioStadium::Collision() {} +void WarioStadium::Collision() { +} -void WarioStadium::SomeCollisionThing(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, f32* arg7) { +void WarioStadium::SomeCollisionThing(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, + f32* arg6, f32* arg7) { func_8003EE2C(player, arg1, arg2, arg3, arg4, arg5, arg6, arg7); } -void WarioStadium::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection) { +void WarioStadium::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, + uint16_t playerDirection) { Mat4 matrix; gDPPipeSync(gDisplayListHead++); @@ -314,7 +397,7 @@ void WarioStadium::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCou 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++, segmented_gfx_to_virtual((void*)0x07000EC0)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07000EC0)); gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 1, 1, G_OFF); gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE); @@ -333,21 +416,22 @@ void WarioStadium::CreditsSpawnActors() { 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(segmented_gfx_to_virtual((void*)0x07000C50), 0x64, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07000C50), 0x64, 0xFF, 0xFF, 0xFF); // d_course_wario_stadium_packed_dl_BD8 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07000BD8), 0x64, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07000BD8), 0x64, 0xFF, 0xFF, 0xFF); // d_course_wario_stadium_packed_dl_B60 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07000B60), 0x64, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07000B60), 0x64, 0xFF, 0xFF, 0xFF); // d_course_wario_stadium_packed_dl_AE8 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07000AE8), 0x64, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07000AE8), 0x64, 0xFF, 0xFF, 0xFF); // d_course_wario_stadium_packed_dl_CC8 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07000CC8), 0x64, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07000CC8), 0x64, 0xFF, 0xFF, 0xFF); // d_course_wario_stadium_packed_dl_D50 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07000D50), 0x64, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07000D50), 0x64, 0xFF, 0xFF, 0xFF); // d_course_wario_stadium_packed_dl_DD0 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07000DD0), 0x64, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07000DD0), 0x64, 0xFF, 0xFF, 0xFF); // d_course_wario_stadium_packed_dl_E48 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07000E48), 0x64, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07000E48), 0x64, 0xFF, 0xFF, 0xFF); } -void WarioStadium::Destroy() { } +void WarioStadium::Destroy() { +} diff --git a/src/menu_items.c b/src/menu_items.c index a59a996b9..f98a07e64 100644 --- a/src/menu_items.c +++ b/src/menu_items.c @@ -743,19 +743,46 @@ MenuTexture* D_800E7D54[] = { }; MenuTexture* D_800E7D74[] = { - seg2_mario_raceway_preview_texture, D_02001B54, D_02001B7C, D_02001BA4, D_02001BCC, D_02001BF4, D_02001C1C, - D_02001C44, D_02001C6C, D_02001C94, D_02001CBC, D_02001CE4, D_02001D0C, D_02001D34, - D_02001D5C, D_02001D84, D_02001DAC, D_02001DD4, D_02001DFC, D_02001E24, + seg2_mario_raceway_preview_texture, + D_02001B54, + D_02001B7C, + D_02001BA4, + D_02001BCC, + D_02001BF4, + D_02001C1C, + D_02001C44, + D_02001C6C, + D_02001C94, + D_02001CBC, + D_02001CE4, + D_02001D0C, + D_02001D34, + D_02001D5C, + D_02001D84, + D_02001DAC, + D_02001DD4, + D_02001DFC, + D_02001E24, }; -MenuTexture* D_800E7DC4[] = { - seg2_mario_raceway_title_texture, seg2_choco_mountain_title_texture, D_02004EF8, D_02004F20, D_02004F48, D_02004F70, D_02004F98, - D_02004FC0, D_02004FE8, D_02005010, D_02005038, D_02005060, D_02005088, D_020050B0, - D_020050D8 -}; +MenuTexture* D_800E7DC4[] = { seg2_mario_raceway_title_texture, + seg2_choco_mountain_title_texture, + D_02004EF8, + D_02004F20, + D_02004F48, + D_02004F70, + D_02004F98, + D_02004FC0, + D_02004FE8, + D_02005010, + D_02005038, + D_02005060, + D_02005088, + D_020050B0, + D_020050D8 }; MenuTexture* D_800E7E00[] = { -D_02005100, D_02005128, D_02005150, D_02005178, D_020051A0, + D_02005100, D_02005128, D_02005150, D_02005178, D_020051A0, }; // Unused? @@ -832,44 +859,39 @@ MenuTexture* D_800E822C[] = { }; MenuTexture* D_800E8234[] = { - seg2_menu_1p_column, D_020047DC, - seg2_menu_2p_column, D_02004804, - seg2_menu_3p_column, D_0200482C, - seg2_menu_4p_column, D_02004854, + seg2_menu_1p_column, D_020047DC, seg2_menu_2p_column, D_02004804, + seg2_menu_3p_column, D_0200482C, seg2_menu_4p_column, D_02004854, }; MenuTexture* D_800E8254[] = { - seg2_game_select_texture, - seg2_menu_1p_column, - seg2_menu_2p_column, - seg2_menu_3p_column, - seg2_menu_4p_column, - D_0200487C, - D_020048A4, - D_020048CC, + seg2_game_select_texture, seg2_menu_1p_column, seg2_menu_2p_column, seg2_menu_3p_column, + seg2_menu_4p_column, D_0200487C, D_020048A4, D_020048CC, }; -MenuTexture* D_800E8274[] = { // CC textures - seg2_50_CC_texture, seg2_100_CC_texture, seg2_150_CC_texture, seg2_extra_CC_texture, +MenuTexture* D_800E8274[] = { + // CC textures + seg2_50_CC_texture, + seg2_100_CC_texture, + seg2_150_CC_texture, + seg2_extra_CC_texture, }; MenuTexture* D_800E8284[] = { // Versus and Battle textures D_020049BC, seg2_menu_no_item_texture }; -MenuTexture* D_800E828C[] = { // Time Trials Begin & Data (probably) - D_020049E4, seg2_data_texture, +MenuTexture* D_800E828C[] = { + // Time Trials Begin & Data (probably) + D_020049E4, + seg2_data_texture, }; // Next three variables are duplicates of the above, for whatever reason... -MenuTexture* D_800E8294[] = { - seg2_50_CC_texture, seg2_100_CC_texture, seg2_150_CC_texture, seg2_extra_CC_texture -}; +MenuTexture* D_800E8294[] = { seg2_50_CC_texture, seg2_100_CC_texture, seg2_150_CC_texture, seg2_extra_CC_texture }; -MenuTexture* D_800E82A4[] = { - D_020049BC, seg2_menu_no_item_texture -}; +MenuTexture* D_800E82A4[] = { D_020049BC, seg2_menu_no_item_texture }; MenuTexture* D_800E82AC[] = { - D_020049E4, seg2_data_texture, + D_020049E4, + seg2_data_texture, }; MenuTexture* gMenuTexturesBorderPlayer[] = { @@ -880,13 +902,24 @@ MenuTexture* gMenuTexturesBorderPlayer[] = { }; MenuTexture* gMenuTexturesTrackSelection[] = { - seg2_menu_select_texture, seg2_mushroom_cup_texture, seg2_flower_cup_texture, seg2_star_cup_texture, seg2_special_cup_texture, seg2_mario_raceway_preview_small_texture, - seg2_mushroom_cup_title_texture, seg2_flower_cup_title_texture, seg2_star_cup_title_texture, seg2_special_cup_title_texture, seg2_battle_title_texture, D_02004E80, + seg2_menu_select_texture, seg2_mushroom_cup_texture, seg2_flower_cup_texture, + seg2_star_cup_texture, seg2_special_cup_texture, seg2_mario_raceway_preview_small_texture, + seg2_mushroom_cup_title_texture, seg2_flower_cup_title_texture, seg2_star_cup_title_texture, + seg2_special_cup_title_texture, seg2_battle_title_texture, D_02004E80, }; MenuTexture* D_800E82F4[] = { - seg2_mushroom_cup_texture, seg2_flower_cup_texture, seg2_star_cup_texture, seg2_special_cup_texture, seg2_mario_raceway_preview_small_texture, seg2_mushroom_cup_title_texture, - seg2_flower_cup_title_texture, seg2_star_cup_title_texture, seg2_special_cup_title_texture, seg2_battle_title_texture, D_02004E80, + seg2_mushroom_cup_texture, + seg2_flower_cup_texture, + seg2_star_cup_texture, + seg2_special_cup_texture, + seg2_mario_raceway_preview_small_texture, + seg2_mushroom_cup_title_texture, + seg2_flower_cup_title_texture, + seg2_star_cup_title_texture, + seg2_special_cup_title_texture, + seg2_battle_title_texture, + D_02004E80, }; MkAnimation* D_800E8320[] = { @@ -1178,7 +1211,7 @@ void func_80091B78(void) { } gNextFreeMemoryAddress = gFreeMemoryResetAnchor; // Hypothetically, this should be a ptr... But only hypothetically. - //sMenuTextureList = get_next_available_memory_addr(0x000900B0); + // sMenuTextureList = get_next_available_memory_addr(0x000900B0); gMenuCompressedBuffer = (u8*) get_next_available_memory_addr(0x0000CE00); sTKMK00_LowResBuffer = (u8*) get_next_available_memory_addr(SCREEN_WIDTH * SCREEN_HEIGHT); gSomeDLBuffer = (struct_8018EE10_entry*) get_next_available_memory_addr(0x00001000); @@ -1276,7 +1309,7 @@ void func_80091FA4(void) { s32 i; //! @todo These sizes need to be sizeof() for shiftability if possible gMenuCompressedBuffer = (u8*) get_next_available_memory_addr(0x00002800); - //sMenuTextureList = (u16*) get_next_available_memory_addr(0x000124F8); + // sMenuTextureList = (u16*) get_next_available_memory_addr(0x000124F8); sTKMK00_LowResBuffer = (u8*) get_next_available_memory_addr(0x00001000); sGPPointsCopy = get_next_available_memory_addr(4); @@ -2088,7 +2121,7 @@ void func_80093E60(void) { s32 i; gMenuCompressedBuffer = get_next_available_memory_addr(0x00002800); - //sMenuTextureList = (u16*) get_next_available_memory_addr(0x000124F8); + // sMenuTextureList = (u16*) get_next_available_memory_addr(0x000124F8); sTKMK00_LowResBuffer = get_next_available_memory_addr(0x00001000); sGPPointsCopy = get_next_available_memory_addr(4U); @@ -2643,7 +2676,7 @@ func_80095BD0_label1: func_80095BD0_label2: func_80095AE0(&gGfxPool->mtxEffect[gMatrixEffectCount], arg2, arg3, arg6, arg7); gSPMatrix(displayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxEffect[gMatrixEffectCount++]), - G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gMKLoadTextureTile_4b(displayListHead++, arg1, G_IM_FMT_I, arg4, 0, 0, 0, arg4, arg5, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); switch (arg4) { @@ -2678,13 +2711,13 @@ Gfx* func_80095E10(Gfx* displayListHead, s8 arg1, s32 arg2, s32 arg3, s32 arg4, s32 sp64 = 0; s32 var_v0_2; - while ((u32)var_t0 < argB) { + while ((u32) var_t0 < argB) { var_t0 *= 2; } temp_lo = 0x400 / var_t0; - while ((u32)(temp_lo / 2) > argC) { + while ((u32) (temp_lo / 2) > argC) { temp_lo /= 2; } @@ -2732,9 +2765,9 @@ Gfx* func_80095E10(Gfx* displayListHead, s8 arg1, s32 arg2, s32 arg3, s32 arg4, var_s4 = temp_lo; } - for (var_a1_2 = arg4; var_a1_2 < (u32)arg6; var_a1_2 += var_t0) { + for (var_a1_2 = arg4; var_a1_2 < (u32) arg6; var_a1_2 += var_t0) { - if ((u32)arg6 < var_t0 + var_a1_2) { + if ((u32) arg6 < var_t0 + var_a1_2) { var_s2 = arg6 - var_a1_2; if (!var_s2) { break; @@ -2772,13 +2805,13 @@ Gfx* func_800963F0(Gfx* displayListHead, s8 arg1, s32 arg2, s32 arg3, f32 arg4, s32 sp64 = 0; s32 var_v0_2; - while ((u32)var_t0 < argD) { + while ((u32) var_t0 < argD) { var_t0 *= 2; } temp_lo = 0x400 / var_t0; - while ((u32)(temp_lo / 2) > argE) { + while ((u32) (temp_lo / 2) > argE) { temp_lo /= 2; } @@ -2818,9 +2851,9 @@ Gfx* func_800963F0(Gfx* displayListHead, s8 arg1, s32 arg2, s32 arg3, f32 arg4, arg3 /= arg5; sp7C = argA; - for (var_s3 = arg7; var_s3 < (u32)arg9; var_s3 += temp_lo) { + for (var_s3 = arg7; var_s3 < (u32) arg9; var_s3 += temp_lo) { - if ((u32)arg9 < temp_lo + var_s3) { + if ((u32) arg9 < temp_lo + var_s3) { var_s4 = arg9 - var_s3; if (!var_s4) { break; @@ -2829,9 +2862,9 @@ Gfx* func_800963F0(Gfx* displayListHead, s8 arg1, s32 arg2, s32 arg3, f32 arg4, var_s4 = temp_lo; } b = var_s4 * arg5; - for (var_a1_2 = arg6; var_a1_2 < (u32)arg8; var_a1_2 += var_t0) { + for (var_a1_2 = arg6; var_a1_2 < (u32) arg8; var_a1_2 += var_t0) { - if ((u32)arg8 < var_t0 + var_a1_2) { + if ((u32) arg8 < var_t0 + var_a1_2) { var_s2 = arg8 - var_a1_2; if (!var_s2) { break; @@ -2882,13 +2915,13 @@ Gfx* func_80096CD8(Gfx* displayListHead, s32 arg1, s32 arg2, u32 width, u32 arg4 s32 maskt = 0; s32 rand; - while (var_ra < (s32)width) { + while (var_ra < (s32) width) { var_ra *= 2; } spCC = 0x400 / var_ra; - while ((spCC / 2) > (s32)arg4) { + while ((spCC / 2) > (s32) arg4) { spCC /= 2; } @@ -2984,13 +3017,13 @@ Gfx* func_80097274(Gfx* displayListHead, s8 arg1, s32 arg2, s32 arg3, s32 arg4, gDPSetCombineLERP(displayListHead++, TEXEL1, TEXEL0, PRIMITIVE_ALPHA, TEXEL0, TEXEL1, TEXEL0, PRIMITIVE, TEXEL0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED); - while (var_t0 < (s32)argB) { + while (var_t0 < (s32) argB) { var_t0 *= 2; } temp_lo = 0x400 / var_t0; - while ((temp_lo / 2) > (s32)argC) { + while ((temp_lo / 2) > (s32) argC) { temp_lo /= 2; } @@ -3027,9 +3060,9 @@ Gfx* func_80097274(Gfx* displayListHead, s8 arg1, s32 arg2, s32 arg3, s32 arg4, return displayListHead; } sp7C = arg8; - for (var_s3 = arg5; var_s3 < (u32)arg7; var_s3 += temp_lo) { + for (var_s3 = arg5; var_s3 < (u32) arg7; var_s3 += temp_lo) { - if (arg7 < (s32)temp_lo + var_s3) { + if (arg7 < (s32) temp_lo + var_s3) { var_s4 = arg7 - var_s3; if (!var_s4) { break; @@ -3038,9 +3071,9 @@ Gfx* func_80097274(Gfx* displayListHead, s8 arg1, s32 arg2, s32 arg3, s32 arg4, var_s4 = temp_lo; } - for (var_a1_2 = arg4; var_a1_2 < (u32)arg6; var_a1_2 += var_t0) { + for (var_a1_2 = arg4; var_a1_2 < (u32) arg6; var_a1_2 += var_t0) { - if (arg6 < (s32)var_t0 + var_a1_2) { + if (arg6 < (s32) var_t0 + var_a1_2) { var_s2 = arg6 - var_a1_2; if (!var_s2) { break; @@ -3181,9 +3214,9 @@ Gfx* func_80098558(Gfx* displayListHead, u32 arg1, u32 arg2, u32 arg3, u32 arg4, arg5Copy = arg5; for (var_v0 = arg2; var_v0 < arg4; var_v0 += 0x20) { for (var_a3 = arg1; var_a3 < arg3; var_a3 += 0x20) { - gMKLoadTextureTile(displayListHead++, sMenuTextureList, G_IM_FMT_RGBA, G_IM_SIZ_16b, arg8, 0, var_a3, var_v0, - var_a3 + 0x20, var_v0 + 0x20, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, - 5, G_TX_NOLOD, G_TX_NOLOD); + gMKLoadTextureTile(displayListHead++, sMenuTextureList, G_IM_FMT_RGBA, G_IM_SIZ_16b, arg8, 0, var_a3, + var_v0, var_a3 + 0x20, var_v0 + 0x20, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); gSPTextureRectangle(displayListHead++, arg5 << 2, arg6 << 2, (arg5 + 0x20) << 2, (arg6 + 0x20) << 2, 0, 0, 0, 1024, 1024); arg5 += 0x20; @@ -3215,8 +3248,8 @@ Gfx* func_800987D0(Gfx* displayListHead, u32 arg1, u32 arg2, u32 width, u32 heig columnCopy = column; for (var_v0_2 = arg2; (u32) var_v0_2 < height; var_v0_2 += 0x20) { for (var_a2 = arg1; (u32) var_a2 < width; var_a2 += 0x20) { - gMKLoadTextureTile(displayListHead++, sMenuTextureList, G_IM_FMT_RGBA, G_IM_SIZ_16b, textureWidth, 0, var_a2, - var_v0_2, var_a2 + 0x20, var_v0_2 + 0x20, 0, G_TX_NOMIRROR | G_TX_WRAP, + gMKLoadTextureTile(displayListHead++, sMenuTextureList, G_IM_FMT_RGBA, G_IM_SIZ_16b, textureWidth, 0, + var_a2, var_v0_2, var_a2 + 0x20, var_v0_2 + 0x20, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); temp_f6 = (temp_f18 * ((temp_f0 * (column - 0xA0)) + (temp_f24 * (row - 0x78)))) + 160.0f; temp_f4_2 = (temp_f18 * ((-temp_f24 * (column - 0xA0)) + (temp_f0 * (row - 0x78)))) + 120.0f; @@ -3378,7 +3411,7 @@ Gfx* draw_box_wide(Gfx* displayListHead, s32 ulx, s32 uly, s32 lrx, s32 lry, u32 gSPDisplayList(displayListHead++, D_02008008); gDPSetPrimColor(displayListHead++, 0, 0, red, green, blue, alpha); gDPFillWideRectangle(displayListHead++, OTRGetRectDimensionFromLeftEdge(ulx), uly, - OTRGetRectDimensionFromRightEdge(lrx), lry); + OTRGetRectDimensionFromRightEdge(lrx), lry); gDPPipeSync(displayListHead++); return displayListHead; } @@ -3430,7 +3463,8 @@ void load_texture_reset_cache(const char* texture) { void replace_texture(s32 index, const char* newTexture) { sMenuTextureList[sMenuTextureMap[index].offset] = newTexture; sMenuTextureMap[index].textureData = newTexture; - //printf("\nTEST %s %p %s idx %d\n\n", sMenuTextureList[index], sMenuTextureList[sMenuTextureListIndex], newTexture, sMenuTextureListIndex); + // printf("\nTEST %s %p %s idx %d\n\n", sMenuTextureList[index], sMenuTextureList[sMenuTextureListIndex], + // newTexture, sMenuTextureListIndex); } // strcpy the const char asset strings into sMenuTextureList. This replaces osPiDma. @@ -3512,14 +3546,14 @@ void load_menu_img(MenuTexture* addr) { load_texture(texAddr->textureData); } else { dma_compressed_mio0_texture_segA(texAddr->textureData, (texAddr->height * texAddr->width) * 2, - &sMenuTextureList[sMenuTextureListIndex]); + &sMenuTextureList[sMenuTextureListIndex]); load_texture(texAddr->textureData); } - //texMap[sMenuTextureEntries].textureData = texAddr->textureData; - //texMap[sMenuTextureEntries].offset = sMenuTextureListIndex; - //sMenuTextureListIndex += 1; - //sMenuTextureListIndex = ((sMenuTextureListIndex / 8) * 8) + 8; - //sMenuTextureEntries += 1; + // texMap[sMenuTextureEntries].textureData = texAddr->textureData; + // texMap[sMenuTextureEntries].offset = sMenuTextureListIndex; + // sMenuTextureListIndex += 1; + // sMenuTextureListIndex = ((sMenuTextureListIndex / 8) * 8) + 8; + // sMenuTextureEntries += 1; } texAddr++; } @@ -3543,15 +3577,16 @@ void func_80099394(MenuTexture* addr) { if (imgLoaded == false) { if (texAddr->type == 5) { - dma_compressed_mio0_texture_segA(texAddr->textureData, (u32) (((s32) (texAddr->height * texAddr->width)) / 2), - &sMenuTextureList[sMenuTextureListIndex]); + dma_compressed_mio0_texture_segA(texAddr->textureData, + (u32) (((s32) (texAddr->height * texAddr->width)) / 2), + &sMenuTextureList[sMenuTextureListIndex]); load_texture(texAddr->textureData); } - //texMap[sMenuTextureEntries].textureData = texAddr->textureData; - //texMap[sMenuTextureEntries].offset = sMenuTextureListIndex; - //sMenuTextureListIndex += 1; - //sMenuTextureListIndex = ((sMenuTextureListIndex / 8) * 8) + 8; - //sMenuTextureEntries += 1; + // texMap[sMenuTextureEntries].textureData = texAddr->textureData; + // texMap[sMenuTextureEntries].offset = sMenuTextureListIndex; + // sMenuTextureListIndex += 1; + // sMenuTextureListIndex = ((sMenuTextureListIndex / 8) * 8) + 8; + // sMenuTextureEntries += 1; } texAddr++; } @@ -3574,14 +3609,15 @@ void func_8009952C(MenuTexture* addr) { } if (imgLoaded == false) { - dma_compressed_mio0_texture_segA(texAddr->textureData, 0x00008000U, &sMenuTextureList[sMenuTextureListIndex]); + dma_compressed_mio0_texture_segA(texAddr->textureData, 0x00008000U, + &sMenuTextureList[sMenuTextureListIndex]); mio0decode(gMenuCompressedBuffer, (u8*) &sMenuTextureList[sMenuTextureListIndex]); load_texture(texAddr->textureData); - //texMap[sMenuTextureEntries].textureData = texAddr->textureData; - //texMap[sMenuTextureEntries].offset = sMenuTextureListIndex; - //sMenuTextureListIndex += 1; - //sMenuTextureListIndex = ((sMenuTextureListIndex / 8) * 8) + 8; - //sMenuTextureEntries += 1; + // texMap[sMenuTextureEntries].textureData = texAddr->textureData; + // texMap[sMenuTextureEntries].offset = sMenuTextureListIndex; + // sMenuTextureListIndex += 1; + // sMenuTextureListIndex = ((sMenuTextureListIndex / 8) * 8) + 8; + // sMenuTextureEntries += 1; } texAddr++; } @@ -3618,16 +3654,16 @@ void load_menu_img_comp_type(MenuTexture* addr, s32 compType) { if (size % 8) { size = ((size / 8) * 8) + 8; } - + // dma a compressed texture to the compressed texture buffer switch (compType) { case LOAD_MENU_IMG_MIO0_ONCE: case LOAD_MENU_IMG_MIO0_FORCE: - //dma_compressed_mio0_texture_segA(texAddr->textureData, size, gMenuCompressedBuffer); + // dma_compressed_mio0_texture_segA(texAddr->textureData, size, gMenuCompressedBuffer); break; case LOAD_MENU_IMG_TKMK00_ONCE: case LOAD_MENU_IMG_TKMK00_FORCE: - //dma_tkmk00_textures(texAddr->textureData, size, gMenuCompressedBuffer); + // dma_tkmk00_textures(texAddr->textureData, size, gMenuCompressedBuffer); break; } @@ -3636,7 +3672,7 @@ void load_menu_img_comp_type(MenuTexture* addr, s32 compType) { case LOAD_MENU_IMG_MIO0_ONCE: case LOAD_MENU_IMG_MIO0_FORCE: mio0decode(gMenuCompressedBuffer, (u8*) &sMenuTextureList[sMenuTextureListIndex]); - //strcpy(&sMenuTextureList[sMenuTextureListIndex], texAddr->textureData); + // strcpy(&sMenuTextureList[sMenuTextureListIndex], texAddr->textureData); load_texture(texAddr->textureData); break; case LOAD_MENU_IMG_TKMK00_ONCE: @@ -3648,18 +3684,18 @@ void load_menu_img_comp_type(MenuTexture* addr, s32 compType) { } if (1) {} tkmk00decode(gMenuCompressedBuffer, sTKMK00_LowResBuffer, - (u8*) &sMenuTextureList[sMenuTextureListIndex], clearBit); + (u8*) &sMenuTextureList[sMenuTextureListIndex], clearBit); load_texture(texAddr->textureData); - //strcpy(&sMenuTextureList[sMenuTextureListIndex], texAddr->textureData); + // strcpy(&sMenuTextureList[sMenuTextureListIndex], texAddr->textureData); break; } - //texMap[sMenuTextureEntries].textureData = texAddr->textureData; - //texMap[sMenuTextureEntries].offset = sMenuTextureListIndex; - //sMenuTextureListIndex += 1; - //sMenuTextureListIndex = ((sMenuTextureListIndex / 8) * 8) + 8; - //sMenuTextureEntries += 1; + // texMap[sMenuTextureEntries].textureData = texAddr->textureData; + // texMap[sMenuTextureEntries].offset = sMenuTextureListIndex; + // sMenuTextureListIndex += 1; + // sMenuTextureListIndex = ((sMenuTextureListIndex / 8) * 8) + 8; + // sMenuTextureEntries += 1; } texAddr++; } @@ -3768,8 +3804,8 @@ void func_80099AEC(void) { #endif } mio0decode(gMenuCompressedBuffer, (u8*) &sMenuTextureList[sMenuTextureMap[var_s1->texNum].offset]); - //strcpy(&sMenuTextureList[sMenuTextureMap[var_s1->texNum].offset], var_s1->texture->textureData); - //sMenuTextureList[sMenuTextureMap[var_s1->texNum].offset] = var_s1->texture->textureData; + // strcpy(&sMenuTextureList[sMenuTextureMap[var_s1->texNum].offset], var_s1->texture->textureData); + // sMenuTextureList[sMenuTextureMap[var_s1->texNum].offset] = var_s1->texture->textureData; replace_texture(var_s1->texNum, var_s1->texture->textureData); var_s1->texture = NULL; @@ -3864,8 +3900,8 @@ void func_80099EC4(void) { osPiStartDma(&sp68, 0, 0, (uintptr_t) test, gMenuCompressedBuffer, var_s0, &gDmaMesgQueue); #endif if ((var_s0 && var_s0) && var_s0) {} - // osPiStartDma(&sp68, 0, 0, &_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)], gMenuCompressedBuffer, var_s0, - // &gDmaMesgQueue); + // osPiStartDma(&sp68, 0, 0, &_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)], + // gMenuCompressedBuffer, var_s0, &gDmaMesgQueue); osRecvMesg(&gDmaMesgQueue, &sp64, 1); while (1) { if ((var_s1 + 1)->mk64Texture == NULL) { @@ -3951,9 +3987,9 @@ void func_8009A238(MenuTexture* arg0, s32 arg1) { dma_tkmk00_textures(sp24, var_a3, gMenuCompressedBuffer); // tkmk00decode(gMenuCompressedBuffer, sTKMK00_LowResBuffer, (u8*) &sMenuTextureList[temp_v1], 1); // u8 *tex = (u8 *) LOAD_ASSET(arg0->textureData); - //size_t texSize = ResourceGetTexSizeByName(arg0->textureData); + // size_t texSize = ResourceGetTexSizeByName(arg0->textureData); replace_texture(arg1, arg0->textureData); - //sMenuTextureMap[arg1].textureData = arg0->textureData; + // sMenuTextureMap[arg1].textureData = arg0->textureData; } void func_8009A2F0(struct_8018E0E8_entry* arg0) { @@ -4275,16 +4311,14 @@ void convert_img_to_greyscale(s32 index, u32 num) { u32 result; u16* color; f32 sp48[32]; - + size_t size = width * height; for (i = 0; i < ARRAY_COUNT(sp48); i++) { sp48[i] = func_800917B0(i * 0.03125, (num * 1.5 * 0.00390625) + 0.25); } - color = (u16*)LOAD_ASSET(sMenuTextureList[sMenuTextureMap[index].offset]); - - + color = (u16*) LOAD_ASSET(sMenuTextureList[sMenuTextureMap[index].offset]); for (i = 0; i < (u32) size; i++) { u16 color_pixel = BSWAP16(*color); @@ -4321,7 +4355,6 @@ void adjust_img_colour(s32 index, s32 screenSize, s32 r, s32 g, s32 b) { color = LOAD_ASSET(sMenuTextureList[sMenuTextureMap[index].offset]); - for (size_t i = 0; i < screenSize; i++) { u16 color_pixel = BSWAP16(*color); red = ((color_pixel & 0xF800) >> 0xB) * 0x4D; @@ -4478,8 +4511,8 @@ Gfx* func_8009BC9C(Gfx* arg0, MenuTexture* arg1, s32 arg2, s32 arg3, s32 arg4, s break; case 4: /* switch 1 */ arg0 = func_80097274(arg0, 0, 0x00000400, 0x00000400, 0, 0, var_s0->width, var_s0->height, - var_s0->dX + arg2, var_s0->dY + arg3, (u16*)temp_v0_3, var_s0->width, var_s0->height, - arg5); + var_s0->dX + arg2, var_s0->dY + arg3, (u16*) temp_v0_3, var_s0->width, + var_s0->height, arg5); break; } } @@ -4623,8 +4656,8 @@ Gfx* func_8009C434(Gfx* arg0, struct_8018DEE0_entry* arg1, s32 arg2, s32 arg3, s switch (arg4) { case -1: arg0 = func_80095E10(arg0, var_t1, 0x00000400, 0x00000400, 0, 0, var_s0->width, var_s0->height, - var_s0->dX + arg2, var_s0->dY + arg3, (u8*) sMenuTextureList[var_t0], var_s0->width, - var_s0->height); + var_s0->dX + arg2, var_s0->dY + arg3, (u8*) sMenuTextureList[var_t0], + var_s0->width, var_s0->height); break; case -2: arg0 = func_800963F0(arg0, var_t1, 0x00000400, 0x00000400, 0.5f, 0.5f, 0, 0, var_s0->width, @@ -4771,7 +4804,7 @@ void func_8009CBE4(s32 arg0, s32 arg1, s32 arg2) { } color = &D_800E7AE8[arg2]; gDisplayListHead = draw_box_wide(gDisplayListHead, x - (w / 2), y - (h / 2), (w / 2) + x, (h / 2) + y, color->red, - color->green, color->blue, 0xFF - (D_8018E7D0[arg0] * 0xFF / D_8018E7B8[arg0])); + color->green, color->blue, 0xFF - (D_8018E7D0[arg0] * 0xFF / D_8018E7B8[arg0])); if ((arg1 == 0) && (D_8018E7D0[arg0] += 1, (D_8018E7D0[arg0] >= D_8018E7B8[arg0]))) { if (gGamestate == 4) { @@ -4939,7 +4972,7 @@ void func_8009CE64(s32 arg0) { D_8018E7AC[arg0] = 0; if (gDebugMenuSelection != 0x40) { switch (gMenuFadeType) { /* switch 3 */ - case 0: /* switch 3 */ + case 0: /* switch 3 */ if (gMenuSelection == 8) { gMenuSelection = 0x0000000A; gFadeModeSelection = 2; @@ -5036,8 +5069,8 @@ void func_8009CE64(s32 arg0) { if (gNextDemoId >= 6) { gNextDemoId = 0; } - - //gCupSelection = GetCupIndex(); // gCupSelectionByCourseId[gCurrentCourseId]; + + // gCupSelection = GetCupIndex(); // gCupSelectionByCourseId[gCurrentCourseId]; D_800DC540 = (s32) GetCupIndex(); gCourseIndexInCup = GetCupCursorPosition(); // gCupCourseSelection = (s8) gPerCupIndexByCourseId[gCurrentCourseId]; @@ -5120,9 +5153,10 @@ void func_8009CE64(s32 arg0) { } } - //gCupSelection = gCupSelectionByCourseId[gCurrentCourseId]; + // gCupSelection = gCupSelectionByCourseId[gCurrentCourseId]; D_800DC540 = GetCupIndex(); - gCourseIndexInCup = GetCupCursorPosition();; + gCourseIndexInCup = GetCupCursorPosition(); + ; switch (gDebugGotoScene) { /* switch 6; irregular */ case 1: /* switch 6 */ @@ -5187,7 +5221,7 @@ void func_8009D77C(s32 arg0, s32 arg1, s32 arg2) { someMath1 = temp_t8; someMath1 += var_t4; gDisplayListHead = draw_box_wide(gDisplayListHead, var_t3 - temp_v1, var_t4 - temp_t8, someMath0, someMath1, - temp_v0_2->red, temp_v0_2->green, temp_v0_2->blue, var_t2); + temp_v0_2->red, temp_v0_2->green, temp_v0_2->blue, var_t2); if (arg1 == 0) { D_8018E7D0[arg0]++; if ((D_8018E7B8[arg0] + 1) < D_8018E7D0[arg0]) { @@ -5473,14 +5507,16 @@ void func_8009E2F0(s32 arg0) { temp_t0 = &D_8018E810[arg0]; temp_v0 = &D_800E7AC8[temp_t7]; if ((u32) D_8018E840[arg0] < 0x1BU) { - gDisplayListHead = draw_box_fill_wide(gDisplayListHead, temp_t1->x - (temp_t0->x / 2), temp_t1->y - (temp_t0->y / 2), - temp_t1->x + (temp_t0->x / 2), temp_t1->y + (temp_t0->y / 2), temp_v0->red, - temp_v0->green, temp_v0->blue, temp_v0->alpha); + gDisplayListHead = + draw_box_fill_wide(gDisplayListHead, temp_t1->x - (temp_t0->x / 2), temp_t1->y - (temp_t0->y / 2), + temp_t1->x + (temp_t0->x / 2), temp_t1->y + (temp_t0->y / 2), temp_v0->red, + temp_v0->green, temp_v0->blue, temp_v0->alpha); } else { temp_t7_2 = ((u32) (38 - D_8018E840[arg0])) / 11.0; - gDisplayListHead = draw_box_fill_wide(gDisplayListHead, temp_t1->x - (temp_t0->x / 2), temp_t1->y - (temp_t0->y / 2), - temp_t1->x + (temp_t0->x / 2), temp_t1->y + (temp_t0->y / 2), temp_v0->red, - temp_v0->green, temp_v0->blue, (u32) (temp_v0->alpha * temp_t7_2)); + gDisplayListHead = + draw_box_fill_wide(gDisplayListHead, temp_t1->x - (temp_t0->x / 2), temp_t1->y - (temp_t0->y / 2), + temp_t1->x + (temp_t0->x / 2), temp_t1->y + (temp_t0->y / 2), temp_v0->red, + temp_v0->green, temp_v0->blue, (u32) (temp_v0->alpha * temp_t7_2)); } } D_8018E840[arg0]++; @@ -5632,12 +5668,12 @@ void add_menu_item(s32 type, s32 column, s32 row, s8 priority) { load_menu_img(D_0200184C); break; case MENU_ITEM_UI_START_BACKGROUND: - //load_menu_img_comp_type(gMenuTexturesBackground[has_unlocked_extra_mode()], LOAD_MENU_IMG_TKMK00_ONCE); + // load_menu_img_comp_type(gMenuTexturesBackground[has_unlocked_extra_mode()], LOAD_MENU_IMG_TKMK00_ONCE); load_texture_reset_cache(gMenuTexturesBackground[has_unlocked_extra_mode()]->textureData); break; case MENU_ITEM_UI_LOGO_AND_COPYRIGHT: load_mario_kart_64_logo(); - //sMenuTextureListIndex += 1; + // sMenuTextureListIndex += 1; load_menu_img(seg2_copyright_1996_texture); break; case MENU_ITEM_UI_PUSH_START_BUTTON: @@ -5647,11 +5683,12 @@ void add_menu_item(s32 type, s32 column, s32 row, s8 priority) { case CHARACTER_SELECT_BACKGROUND: case COURSE_SELECT_BACKGROUND: load_texture_reset_cache(gMenuTexturesBackground[has_unlocked_extra_mode()]->textureData); - //load_menu_img_comp_type(gMenuTexturesBackground[has_unlocked_extra_mode()], LOAD_MENU_IMG_TKMK00_ONCE); + // load_menu_img_comp_type(gMenuTexturesBackground[has_unlocked_extra_mode()], LOAD_MENU_IMG_TKMK00_ONCE); load_menu_img_comp_type(D_02004B74, LOAD_MENU_IMG_TKMK00_ONCE); convert_img_to_greyscale(0, 0x00000019); adjust_img_colour(0, SCREEN_WIDTH * SCREEN_HEIGHT, D_800E74E8[type - MAIN_MENU_BACKGROUND].red, - D_800E74E8[type - MAIN_MENU_BACKGROUND].green, D_800E74E8[type - MAIN_MENU_BACKGROUND].blue); + D_800E74E8[type - MAIN_MENU_BACKGROUND].green, + D_800E74E8[type - MAIN_MENU_BACKGROUND].blue); break; case MENU_ITEM_UI_OK: var_ra->param1 = 0x00000020; @@ -5673,7 +5710,8 @@ void add_menu_item(s32 type, s32 column, s32 row, s8 priority) { case MENU_ITEM_UI_2P_GAME: case MENU_ITEM_UI_3P_GAME: case MENU_ITEM_UI_4P_GAME: - load_menu_img_comp_type(segmented_to_virtual_dupe(D_800E8234[((type - 0xB) * 2) + 0]), LOAD_MENU_IMG_TKMK00_ONCE); + load_menu_img_comp_type(segmented_to_virtual_dupe(D_800E8234[((type - 0xB) * 2) + 0]), + LOAD_MENU_IMG_TKMK00_ONCE); load_menu_img(segmented_to_virtual_dupe(D_800E8234[((type - 0xB) * 2) + 1])); break; case CHARACTER_SELECT_MENU_PLAYER_SELECT_BANNER: @@ -5719,7 +5757,8 @@ void add_menu_item(s32 type, s32 column, s32 row, s8 priority) { case MENU_ITEM_TYPE_05A: case MENU_ITEM_TYPE_05B: case COURSE_SELECT_BATTLE_NAMES: - load_menu_img_comp_type(segmented_to_virtual_dupe(gMenuTexturesTrackSelection[type - 0x52]), LOAD_MENU_IMG_TKMK00_ONCE); + load_menu_img_comp_type(segmented_to_virtual_dupe(gMenuTexturesTrackSelection[type - 0x52]), + LOAD_MENU_IMG_TKMK00_ONCE); break; case MENU_ITEM_TYPE_05F: case MENU_ITEM_TYPE_060: @@ -5793,9 +5832,13 @@ void add_menu_item(s32 type, s32 column, s32 row, s8 priority) { case MENU_ITEM_TYPE_08A: case MENU_ITEM_TYPE_08B: temp_v0_6 = var_ra->type - MENU_ITEM_TYPE_07C; - load_menu_img_comp_type(segmented_to_virtual_dupe(D_800E7D74[gCupCourseOrder[temp_v0_6 / 4][temp_v0_6 % 4]]), LOAD_MENU_IMG_MIO0_ONCE); + load_menu_img_comp_type( + segmented_to_virtual_dupe(D_800E7D74[gCupCourseOrder[temp_v0_6 / 4][temp_v0_6 % 4]]), + LOAD_MENU_IMG_MIO0_ONCE); temp_v0_6 = var_ra->type - MENU_ITEM_TYPE_07C; - load_menu_img_comp_type(segmented_to_virtual_dupe(D_800E7DC4[gCupCourseOrder[temp_v0_6 / 4][temp_v0_6 % 4]]), LOAD_MENU_IMG_TKMK00_ONCE); + load_menu_img_comp_type( + segmented_to_virtual_dupe(D_800E7DC4[gCupCourseOrder[temp_v0_6 / 4][temp_v0_6 % 4]]), + LOAD_MENU_IMG_TKMK00_ONCE); load_menu_img_comp_type(segmented_to_virtual_dupe(D_02004A0C), LOAD_MENU_IMG_TKMK00_ONCE); break; case MENU_ITEM_TYPE_0B1: @@ -6018,16 +6061,18 @@ void render_menus(MenuItem* arg0) { func_800A0EB8(arg0, arg0->type - 0xD8); break; case MENU_ITEM_UI_START_BACKGROUND: - gDisplayListHead = - render_menu_textures(gDisplayListHead, gMenuTexturesBackground[has_unlocked_extra_mode()], arg0->column, arg0->row); + gDisplayListHead = render_menu_textures( + gDisplayListHead, gMenuTexturesBackground[has_unlocked_extra_mode()], arg0->column, arg0->row); break; case MENU_ITEM_UI_LOGO_AND_COPYRIGHT: render_game_logo((arg0->column + 0xA0), (arg0->row + 0x47)); - gDisplayListHead = render_menu_textures(gDisplayListHead, seg2_copyright_1996_texture, arg0->column, arg0->row); + gDisplayListHead = + render_menu_textures(gDisplayListHead, seg2_copyright_1996_texture, arg0->column, arg0->row); break; case MENU_ITEM_UI_PUSH_START_BUTTON: if (((gGlobalTimer / 8) % 3) != 0) { - gDisplayListHead = render_menu_textures(gDisplayListHead, seg2_push_start_button_texture, arg0->column, arg0->row); + gDisplayListHead = + render_menu_textures(gDisplayListHead, seg2_push_start_button_texture, arg0->column, arg0->row); } break; case MENU_ITEM_UI_START_RECORD_TIME: @@ -6065,18 +6110,20 @@ void render_menus(MenuItem* arg0) { temp_t5 + 0xB6, 0, 0, 0, 0x00000096); set_text_color(TEXT_BLUE_GREEN_RED_CYCLE_1); for (temp_t9 = 0; temp_t9 < 2; temp_t9++) { - print_text1_center_mode_1(0xA0 * one - floatone * why, (s32) (0xB4 * one + ((f32) (temp_t9 * 0x12) * why)), - gTextNoController[temp_t9], 0, why, why); + print_text1_center_mode_1(0xA0 * one - floatone * why, + (s32) (0xB4 * one + ((f32) (temp_t9 * 0x12) * why)), + gTextNoController[temp_t9], 0, why, why); } break; case MAIN_MENU_BACKGROUND: case CHARACTER_SELECT_BACKGROUND: case COURSE_SELECT_BACKGROUND: - gDisplayListHead = func_8009BC9C(gDisplayListHead, gMenuTexturesBackground[has_unlocked_extra_mode()], arg0->column, - arg0->row, 3, 0); + gDisplayListHead = func_8009BC9C(gDisplayListHead, gMenuTexturesBackground[has_unlocked_extra_mode()], + arg0->column, arg0->row, 3, 0); break; case MENU_ITEM_UI_GAME_SELECT: - gDisplayListHead = render_menu_textures(gDisplayListHead, seg2_game_select_texture, arg0->column, arg0->row); + gDisplayListHead = + render_menu_textures(gDisplayListHead, seg2_game_select_texture, arg0->column, arg0->row); break; case MENU_ITEM_UI_1P_GAME: case MENU_ITEM_UI_2P_GAME: @@ -6088,7 +6135,8 @@ void render_menus(MenuItem* arg0) { break; case MENU_ITEM_UI_OK: func_800A8564(arg0); - gDisplayListHead = func_8009BC9C(gDisplayListHead, D_0200487C, arg0->column, arg0->row, 2, arg0->param1); + gDisplayListHead = + func_8009BC9C(gDisplayListHead, D_0200487C, arg0->column, arg0->row, 2, arg0->param1); break; case MAIN_MENU_OPTION_GFX: case MAIN_MENU_DATA_GFX: @@ -6124,7 +6172,7 @@ void render_menus(MenuItem* arg0) { case MAIN_MENU_100CC: case MAIN_MENU_150CC: case MAIN_MENU_EXTRA_CC: - switch(var_a1) { + switch (var_a1) { case 0: case 2: break; @@ -6161,15 +6209,14 @@ void render_menus(MenuItem* arg0) { if (gMainMenuSelection >= 6) { gDisplayListHead = draw_box_fill(gDisplayListHead, arg0->column, arg0->row, arg0->column + 0x3F, - arg0->row + 0x11, 0x000000FF, 0x000000F9, 0x000000DC, 0x000000FF); + arg0->row + 0x11, 0x000000FF, 0x000000F9, 0x000000DC, 0x000000FF); } else { - gDisplayListHead = - draw_flash_select_case_slow(gDisplayListHead, arg0->column ^ 0, arg0->row ^ 0, - arg0->column + 0x3F, arg0->row + 0x11); + gDisplayListHead = draw_flash_select_case_slow( + gDisplayListHead, arg0->column ^ 0, arg0->row ^ 0, arg0->column + 0x3F, arg0->row + 0x11); } } else { gDisplayListHead = draw_box_fill(gDisplayListHead, arg0->column, arg0->row, arg0->column + 0x3F, - arg0->row + 0x11, 1, 1, 1, 0x000000FF); + arg0->row + 0x11, 1, 1, 1, 0x000000FF); } gDisplayListHead = render_menu_textures(gDisplayListHead, sp9C, arg0->column, arg0->row); break; @@ -6201,7 +6248,8 @@ void render_menus(MenuItem* arg0) { break; case CHARACTER_SELECT_MENU_OK: func_800A8564(arg0); - gDisplayListHead = func_8009BC9C(gDisplayListHead, D_02004B74, arg0->column, arg0->row, 2, arg0->param1); + gDisplayListHead = + func_8009BC9C(gDisplayListHead, D_02004B74, arg0->column, arg0->row, 2, arg0->param1); break; case CHARACTER_SELECT_MENU_MARIO: case CHARACTER_SELECT_MENU_LUIGI: @@ -6223,15 +6271,17 @@ void render_menus(MenuItem* arg0) { case MENU_ITEM_TYPE_05B: case COURSE_SELECT_BATTLE_NAMES: func_800A8A98(arg0); - gDisplayListHead = - render_menu_textures(gDisplayListHead, segmented_to_virtual_dupe(gMenuTexturesTrackSelection[arg0->type - COURSE_SELECT_MAP_SELECT]), - arg0->column, arg0->row); + gDisplayListHead = render_menu_textures( + gDisplayListHead, + segmented_to_virtual_dupe(gMenuTexturesTrackSelection[arg0->type - COURSE_SELECT_MAP_SELECT]), + arg0->column, arg0->row); func_800A8CA4(arg0); break; case COURSE_SELECT_MAP_SELECT: - gDisplayListHead = - render_menu_textures(gDisplayListHead, segmented_to_virtual_dupe(gMenuTexturesTrackSelection[arg0->type - COURSE_SELECT_MAP_SELECT]), - arg0->column, arg0->row); + gDisplayListHead = render_menu_textures( + gDisplayListHead, + segmented_to_virtual_dupe(gMenuTexturesTrackSelection[arg0->type - COURSE_SELECT_MAP_SELECT]), + arg0->column, arg0->row); break; case MENU_ITEM_TYPE_05F: case MENU_ITEM_TYPE_060: @@ -6249,7 +6299,8 @@ void render_menus(MenuItem* arg0) { break; case COURSE_SELECT_OK: func_800A8564(arg0); - gDisplayListHead = func_8009BC9C(gDisplayListHead, D_02004E80, arg0->column, arg0->row, 2, arg0->param1); + gDisplayListHead = + func_8009BC9C(gDisplayListHead, D_02004E80, arg0->column, arg0->row, 2, arg0->param1); break; case MENU_ITEM_TYPE_065: case MENU_ITEM_TYPE_066: @@ -6260,7 +6311,8 @@ void render_menus(MenuItem* arg0) { } func_800A86E8(arg0); set_text_color(3); - print_text_mode_1(arg0->column + 8, arg0->row + 0x10, gBestTimeText[arg0->type - MENU_ITEM_TYPE_065], 0, scaleX, 0.8f); + print_text_mode_1(arg0->column + 8, arg0->row + 0x10, gBestTimeText[arg0->type - MENU_ITEM_TYPE_065], 0, + scaleX, 0.8f); func_800A874C(arg0); break; case MENU_ITEM_TYPE_06E: @@ -6272,8 +6324,8 @@ void render_menus(MenuItem* arg0) { case MENU_ITEM_TYPE_068: gDisplayListHead = draw_box_fill(gDisplayListHead, arg0->column, arg0->row, arg0->column + 0x3F, arg0->row + 0x11, 1, 1, 1, 0x000000FF); - gDisplayListHead = render_menu_textures(gDisplayListHead, segmented_to_virtual_dupe(D_800E8294[gCCSelection]), - arg0->column, arg0->row); + gDisplayListHead = render_menu_textures( + gDisplayListHead, segmented_to_virtual_dupe(D_800E8294[gCCSelection]), arg0->column, arg0->row); break; case MENU_ITEM_TYPE_069: func_800A8F48(arg0); @@ -6331,7 +6383,8 @@ void render_menus(MenuItem* arg0) { break; case MENU_ITEM_TYPE_097: set_text_color(TEXT_BLUE_GREEN_RED_CYCLE_2); - print_text_mode_1(arg0->column, arg0->row, CourseManager_GetProps()->Name, arg0->param1, arg0->paramf, 1.0f); + print_text_mode_1(arg0->column, arg0->row, CourseManager_GetProps()->Name, arg0->param1, arg0->paramf, + 1.0f); break; case MENU_ITEM_TYPE_098: func_800A2D1C(arg0); @@ -6360,10 +6413,10 @@ void render_menus(MenuItem* arg0) { case MENU_ITEM_TYPE_0B4: if (arg0->state != 0) { var_v1 = arg0->type - MENU_ITEM_TYPE_0B1; - gDisplayListHead = - render_menu_textures(gDisplayListHead, - segmented_to_virtual_dupe(D_800E7D54[D_800EFD64[gCharacterSelections[var_v1]]]), - arg0->column, arg0->row); + gDisplayListHead = render_menu_textures( + gDisplayListHead, + segmented_to_virtual_dupe(D_800E7D54[D_800EFD64[gCharacterSelections[var_v1]]]), arg0->column, + arg0->row); func_8009A7EC(arg0->D_8018DEE0_index, arg0->column, arg0->row, var_v1, arg0->param1); render_cursor_player(arg0, var_v1, 0x000000FF); } @@ -6532,16 +6585,16 @@ s32 func_800A095C(char* someString, s32 len, s32 column, s32 row) { return nonTerminatorCount; } -void func_800A09E0(MenuItem *item) { - s32 table_row; +void func_800A09E0(MenuItem* item) { + s32 table_row; - gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, 319, 194); - for (table_row = 0; table_row < 9; table_row++) { - if (gControllerPakScrollDirection == CONTROLLER_PAK_SCROLL_DIR_NONE && (table_row == 0 || table_row == 8)) { - continue; + gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, 319, 194); + for (table_row = 0; table_row < 9; table_row++) { + if (gControllerPakScrollDirection == CONTROLLER_PAK_SCROLL_DIR_NONE && (table_row == 0 || table_row == 8)) { + continue; } - gDisplayListHead = render_menu_textures(gDisplayListHead, D_0200157C, 0x20, (table_row * 0xA) + item->row); - } + gDisplayListHead = render_menu_textures(gDisplayListHead, D_0200157C, 0x20, (table_row * 0xA) + item->row); + } } void func_800A0AD0(UNUSED MenuItem* arg0) { @@ -6648,10 +6701,10 @@ void func_800A0FA4(MenuItem* arg0, s32 arg1) { case 0: case 2: case 3: - gDisplayListHead = render_menu_textures(gDisplayListHead, segmented_to_virtual_dupe(D_800E8234[(arg1 * 2) + 0]), - arg0->column, arg0->row); - gDisplayListHead = render_menu_textures(gDisplayListHead, segmented_to_virtual_dupe(D_800E8234[(arg1 * 2) + 1]), - arg0->column, arg0->row); + gDisplayListHead = render_menu_textures( + gDisplayListHead, segmented_to_virtual_dupe(D_800E8234[(arg1 * 2) + 0]), arg0->column, arg0->row); + gDisplayListHead = render_menu_textures( + gDisplayListHead, segmented_to_virtual_dupe(D_800E8234[(arg1 * 2) + 1]), arg0->column, arg0->row); break; case 1: case 4: @@ -6692,8 +6745,8 @@ void render_cursor_player(MenuItem* arg0, s32 arg1, s32 arg2) { temp_v1 = &D_800E74A8[arg1]; gDPSetPrimColor(gDisplayListHead++, 0, 0, temp_v1->red, temp_v1->green, temp_v1->blue, temp_v1->alpha); gDPSetEnvColor(gDisplayListHead++, arg2, arg2, arg2, 0x00); - gDisplayListHead = - render_menu_textures(gDisplayListHead, segmented_to_virtual_dupe(gMenuTexturesBorderPlayer[arg1]), arg0->column, arg0->row); + gDisplayListHead = render_menu_textures( + gDisplayListHead, segmented_to_virtual_dupe(gMenuTexturesBorderPlayer[arg1]), arg0->column, arg0->row); } void func_800A12BC(MenuItem* arg0, MenuTexture* arg1) { @@ -6718,13 +6771,13 @@ void func_800A1350(MenuItem* arg0) { case 2: case 4: gDisplayListHead = draw_box_wide(gDisplayListHead, arg0->column, arg0->row, arg0->column + 0x40, - arg0->row + 0x4C, 0, 0, 0, 0x00000064); + arg0->row + 0x4C, 0, 0, 0, 0x00000064); break; case 1: case 3: thing = arg0->param1; gDisplayListHead = draw_box_wide(gDisplayListHead, arg0->column + thing, arg0->row, - (arg0->column - thing) + 0x40, arg0->row + 0x4C, 0, 0, 0, 0x00000064); + (arg0->column - thing) + 0x40, arg0->row + 0x4C, 0, 0, 0, 0x00000064); break; } } @@ -6735,13 +6788,15 @@ void func_800A143C(MenuItem* arg0, s32 arg1) { case 0: case 2: case 3: - gDisplayListHead = render_menu_textures(gDisplayListHead, segmented_to_virtual_dupe(gMenuTexturesTrackSelection[arg1 + 1]), - arg0->column, arg0->row); + gDisplayListHead = + render_menu_textures(gDisplayListHead, segmented_to_virtual_dupe(gMenuTexturesTrackSelection[arg1 + 1]), + arg0->column, arg0->row); break; case 1: case 4: - gDisplayListHead = func_8009BC9C(gDisplayListHead, segmented_to_virtual_dupe(gMenuTexturesTrackSelection[arg1 + 1]), - arg0->column, arg0->row, 2, arg0->param1); + gDisplayListHead = + func_8009BC9C(gDisplayListHead, segmented_to_virtual_dupe(gMenuTexturesTrackSelection[arg1 + 1]), + arg0->column, arg0->row, 2, arg0->param1); break; } } @@ -6781,8 +6836,8 @@ void func_800A15EC(MenuItem* arg0) { s16 courseId = gCupCourseOrder[(arg0->type - 0x7C) / 4][(arg0->type - 0x7C) % 4]; gDisplayListHead = func_8009C204(gDisplayListHead, segmented_to_virtual_dupe(D_800E7D74[courseId]), arg0->column, arg0->row, 2); - gDisplayListHead = draw_box_wide(gDisplayListHead, arg0->column, arg0->row + 0x27, arg0->column + 0x40, arg0->row + 0x30, - 0, 0, 0, 0xFF); + gDisplayListHead = draw_box_wide(gDisplayListHead, arg0->column, arg0->row + 0x27, arg0->column + 0x40, + arg0->row + 0x30, 0, 0, 0, 0xFF); gDisplayListHead = func_8009C204(gDisplayListHead, segmented_to_virtual_dupe(D_800E7DC4[courseId]), arg0->column, arg0->row + 0x27, 3); if (func_800B639C(arg0->type - 0x7C) >= 0) { @@ -6811,7 +6866,8 @@ void func_800A1780(MenuItem* arg0) { blue = ((temp_v1->blue * temp_a2) + (temp_a1->blue * arg0->param1)) / 256; alpha = ((temp_v1->alpha * temp_a2) + (temp_a1->alpha * arg0->param1)) / 256; gDPSetPrimColor(gDisplayListHead++, 0, 0, red, green, blue, alpha); - gDisplayListHead = render_menu_textures(gDisplayListHead, segmented_to_virtual_dupe(D_02001FA4), arg0->column, arg0->row); + gDisplayListHead = + render_menu_textures(gDisplayListHead, segmented_to_virtual_dupe(D_02001FA4), arg0->column, arg0->row); } // render course preview @@ -6844,7 +6900,7 @@ void render_menu_item_data_course_info(MenuItem* arg0) { set_text_color(TEXT_RED); print_text_mode_1(0x2D, arg0->row + 0x28, (char*) &gTextDistance, 0, 0.75f, 0.75f); print_text1_left(0xA5, arg0->row + 0x28, CourseManager_GetProps()->CourseLength, 1, 0.75f, 0.75f); - + // Best lap record set_text_color(TEXT_YELLOW); print_text_mode_1(0xA0, arg0->row + 0x86, gBestTimeText[0], 0, 0.75f, 0.75f); @@ -6923,8 +6979,8 @@ void func_800A1DE0(MenuItem* arg0) { // Removing `wut` introduces counter intuitive changes to how this loop is handled // Also, in a perfect world this would be `gEraseBestGhostText[gCourseRecordsMenuSelection - 1][var_s1]` wut = gEraseBestGhostText[(gCourseRecordsMenuSelection - 1) * 3 + var_s1]; - print_text_mode_1(0x0000001B, 0x3C + (0xD * var_s1), gEraseBestGhostText[(gCourseRecordsMenuSelection - 1) * 3 + var_s1], 0, - 0.65f, 0.65f); + print_text_mode_1(0x0000001B, 0x3C + (0xD * var_s1), + gEraseBestGhostText[(gCourseRecordsMenuSelection - 1) * 3 + var_s1], 0, 0.65f, 0.65f); } for (var_s1 = 0; var_s1 < 2; var_s1++) { @@ -7012,8 +7068,7 @@ void func_800A1FB0(MenuItem* arg0) { set_text_color(TEXT_RED); var_s1 = gSubMenuSelection - SUB_MENU_COPY_PAK_ERROR_2P_MIN; for (i = 0; i < ARRAY_COUNT(D_800E78D0) / 4; i++) { - print_text_mode_1(0x00000032, 0x55 + (0x14 * i), D_800E78D0[(var_s1 * 3) + i], 0, - 0.9f, 0.9f); + print_text_mode_1(0x00000032, 0x55 + (0x14 * i), D_800E78D0[(var_s1 * 3) + i], 0, 0.9f, 0.9f); } break; case SUB_MENU_COPY_PAK_ERROR_NO_PAK_1P: @@ -7023,8 +7078,7 @@ void func_800A1FB0(MenuItem* arg0) { set_text_color(TEXT_RED); var_s1 = gSubMenuSelection - SUB_MENU_COPY_PAK_ERROR_1P_MIN; for (i = 0; i < ARRAY_COUNT(D_800E7890) / 4; i++) { - print_text_mode_1(0x00000023, 0x55 + (0x14 * i), D_800E7890[(var_s1 * 4) + i], 0, - 0.8f, 0.8f); + print_text_mode_1(0x00000023, 0x55 + (0x14 * i), D_800E7890[(var_s1 * 4) + i], 0, 0.8f, 0.8f); } break; case SUB_MENU_COPY_PAK_UNABLE_COPY_FROM_1P: @@ -7032,8 +7086,7 @@ void func_800A1FB0(MenuItem* arg0) { set_text_color(TEXT_RED); var_s1 = gSubMenuSelection - SUB_MENU_COPY_PAK_UNABLE_ERROR_MIN; for (i = 0; i < ARRAY_COUNT(D_800E7900) / 2; i++) { - print_text_mode_1(0x00000041, 0x55 + (0x14 * i), D_800E7900[(var_s1 * 3) + i], 0, - 0.9f, 0.9f); + print_text_mode_1(0x00000041, 0x55 + (0x14 * i), D_800E7900[(var_s1 * 3) + i], 0, 0.9f, 0.9f); } break; case SUB_MENU_COPY_PAK_CREATE_GAME_DATA_INIT: @@ -7089,10 +7142,8 @@ void func_800A1FB0(MenuItem* arg0) { if (var_v1->ghostDataSaved == 0) { print_text_mode_1(0x2A + (var_s1 * 0x89), 0x96 + (0x1E * var_s2), D_800E7A44, 0, 0.5f, 0.5f); } else { - print_text_mode_1( - 0x2A + (var_s1 * 0x89), 0x96 + (0x1E * var_s2), - CourseManager_GetProps()->Name, 0, - 0.5f, 0.5f); + print_text_mode_1(0x2A + (var_s1 * 0x89), 0x96 + (0x1E * var_s2), + CourseManager_GetProps()->Name, 0, 0.5f, 0.5f); } } } @@ -7128,10 +7179,8 @@ void func_800A1FB0(MenuItem* arg0) { if (var_v1->ghostDataSaved == 0) { print_text_mode_1(0x2A + (var_s1 * 0x89), 0x96 + (0x1E * var_s2), D_800E7A44, 0, 0.5f, 0.5f); } else { - print_text_mode_1( - 0x2A + (var_s1 * 0x89), 0x96 + (0x1E * var_s2), - CourseManager_GetProps()->Name, 0, - 0.5f, 0.5f); + print_text_mode_1(0x2A + (var_s1 * 0x89), 0x96 + (0x1E * var_s2), + CourseManager_GetProps()->Name, 0, 0.5f, 0.5f); } } } @@ -7180,10 +7229,8 @@ void func_800A1FB0(MenuItem* arg0) { if (var_v1->ghostDataSaved == 0) { print_text_mode_1(0x2A + (var_s1 * 0x89), 0x96 + (0x1E * var_s2), D_800E7A44, 0, 0.5f, 0.5f); } else { - print_text_mode_1( - 0x2A + (var_s1 * 0x89), 0x96 + (0x1E * var_s2), - CourseManager_GetProps()->Name, 0, - 0.5f, 0.5f); + print_text_mode_1(0x2A + (var_s1 * 0x89), 0x96 + (0x1E * var_s2), + CourseManager_GetProps()->Name, 0, 0.5f, 0.5f); } } } @@ -7280,10 +7327,12 @@ void func_800A2EB8(MenuItem* arg0) { set_text_color(TEXT_BLUE_GREEN_RED_CYCLE_2); temp_s0 = (s32) (((f32) (get_string_width(GetCupName()) + 8) * 0.6f) / 2); // gCupNames[GetCupIndex()]) + 8) * 0.6f) / 2); - print_text1_center_mode_1((-(s32) (((f32) (get_string_width(D_800E76CC[gCCSelection]) + 8) * 0.6f) / 2) - arg0->column) + 0xF5, - arg0->row + 0xE1, gCupNames[D_800DC540], 0, 0.6f, 0.6f); - print_text1_center_mode_1((temp_s0 - arg0->column) + 0xF5, arg0->row + 0xE1, - D_800E76CC[gGameModeSubMenuColumn[gPlayerCount - 1][gGameModeMenuColumn[gPlayerCount - 1]]], 0, 0.6f, 0.6f); + print_text1_center_mode_1( + (-(s32) (((f32) (get_string_width(D_800E76CC[gCCSelection]) + 8) * 0.6f) / 2) - arg0->column) + 0xF5, + arg0->row + 0xE1, gCupNames[D_800DC540], 0, 0.6f, 0.6f); + print_text1_center_mode_1( + (temp_s0 - arg0->column) + 0xF5, arg0->row + 0xE1, + D_800E76CC[gGameModeSubMenuColumn[gPlayerCount - 1][gGameModeMenuColumn[gPlayerCount - 1]]], 0, 0.6f, 0.6f); } void func_800A32B4(s32 arg0, s32 arg1, s32 characterId, s32 rank) { @@ -7396,10 +7445,12 @@ void func_800A34A8(MenuItem* arg0) { } set_text_color(TEXT_BLUE_GREEN_RED_CYCLE_2); temp_s0_3 = ((get_string_width(gCupNames[GetCupIndex()]) + 8) * 0.6f) / 2; - print_text1_center_mode_1((-(s32) (((get_string_width(D_800E76CC[gCCSelection]) + 8) * 0.6f) / 2) - arg0->column) + 0xE6, - arg0->row + 0xE1, gCupNames[D_800DC540], 0, 0.6f, 0.6f); - print_text1_center_mode_1((temp_s0_3 - arg0->column) + 0xE6, arg0->row + 0xE1, - D_800E76CC[gGameModeSubMenuColumn[gPlayerCount - 1][gGameModeMenuColumn[gPlayerCount - 1]]], 0, 0.6f, 0.6f); + print_text1_center_mode_1( + (-(s32) (((get_string_width(D_800E76CC[gCCSelection]) + 8) * 0.6f) / 2) - arg0->column) + 0xE6, + arg0->row + 0xE1, gCupNames[D_800DC540], 0, 0.6f, 0.6f); + print_text1_center_mode_1( + (temp_s0_3 - arg0->column) + 0xE6, arg0->row + 0xE1, + D_800E76CC[gGameModeSubMenuColumn[gPlayerCount - 1][gGameModeMenuColumn[gPlayerCount - 1]]], 0, 0.6f, 0.6f); } } @@ -7509,8 +7560,7 @@ void func_800A3E60(MenuItem* arg0) { } set_text_color(TEXT_BLUE_GREEN_RED_CYCLE_1); - print_text1_center_mode_1(arg0->column + 0x55, 0x19 - arg0->row, - CourseManager_GetProps()->Name, 0, 0.6f, 0.6f); + print_text1_center_mode_1(arg0->column + 0x55, 0x19 - arg0->row, CourseManager_GetProps()->Name, 0, 0.6f, 0.6f); set_text_color(TEXT_YELLOW); print_text1_center_mode_1(arg0->column + 0x55, 0x28 - arg0->row, gLapTimeText, 0, 0.75f, 0.75f); for (var_s1 = 0; var_s1 < 4; var_s1++) { @@ -7543,11 +7593,11 @@ void func_800A3E60(MenuItem* arg0) { if (var_v1 != 0) { set_text_color(TEXT_BLUE); gDPSetPrimColor(gDisplayListHead++, 0, 0, 0x00, 0x00, 0x00, 0x96); - print_text_mode_2(0xB2 - arg0->column, arg0->row + (0xD * var_s1) + 0x93, gTextPauseButton[var_s1 + 1], - 0, 0.75f, 0.75f); + print_text_mode_2(0xB2 - arg0->column, arg0->row + (0xD * var_s1) + 0x93, + gTextPauseButton[var_s1 + 1], 0, 0.75f, 0.75f); } else { - print_text_mode_1(0xB2 - arg0->column, arg0->row + (0xD * var_s1) + 0x93, gTextPauseButton[var_s1 + 1], - 0, 0.75f, 0.75f); + print_text_mode_1(0xB2 - arg0->column, arg0->row + (0xD * var_s1) + 0x93, + gTextPauseButton[var_s1 + 1], 0, 0.75f, 0.75f); } } break; @@ -7576,9 +7626,8 @@ void func_800A3E60(MenuItem* arg0) { if (D_8018EE10[var_s1].ghostDataSaved == 0) { print_text_mode_1(0xBB - arg0->column, 0xAA + (0x1E * var_s1), D_800E7A44, 0, 0.45f, 0.45f); } else { - print_text_mode_1(0xBB - arg0->column, 0xAA + (0x1E * var_s1), - CourseManager_GetProps()->Name, - 0, 0.45f, 0.45f); + print_text_mode_1(0xBB - arg0->column, 0xAA + (0x1E * var_s1), CourseManager_GetProps()->Name, 0, + 0.45f, 0.45f); } } break; @@ -7614,12 +7663,12 @@ void func_800A3E60(MenuItem* arg0) { break; } switch (arg0->state) { /* switch 2 */ - case 5: /* switch 2 */ - case 6: /* switch 2 */ - case 7: /* switch 2 */ - case 8: /* switch 2 */ - case 9: /* switch 2 */ - case 10: /* switch 2 */ + case 5: /* switch 2 */ + case 6: /* switch 2 */ + case 7: /* switch 2 */ + case 8: /* switch 2 */ + case 9: /* switch 2 */ + case 10: /* switch 2 */ var_v0_5 = &D_800E7390[arg0->state - 5]; break; case 17: /* switch 2 */ @@ -7799,8 +7848,7 @@ void render_pause_menu_time_trials(MenuItem* arg0) { gDisplayListHead = draw_box_wide(gDisplayListHead, 0, 0, 0x0000013F, 0x000000EF, 0, 0, 0, 0x0000008C); set_text_color(TEXT_YELLOW); - print_text1_center_mode_1(0x000000A0, 0x00000050, CourseManager_GetProps()->Name, 0, 1.0f, - 1.0f); + print_text1_center_mode_1(0x000000A0, 0x00000050, CourseManager_GetProps()->Name, 0, 1.0f, 1.0f); set_text_color(TEXT_RED); print_text1_center_mode_1(0x0000009D, 0x00000060, gBestTimeText[0], 0, 0.8f, 0.8f); temp_a0 = func_800B4E24(TIME_TRIAL_3LAP_RECORD_1); @@ -7826,8 +7874,8 @@ void render_pause_menu_time_trials(MenuItem* arg0) { func_800939C8(0x000000B3, 0x00000089, sp68, 0, 0.8f, 0.8f); for (var_s0 = 0; var_s0 < 5; var_s0++) { text_rainbow_effect(arg0->state - 11, var_s0, TEXT_GREEN); - print_text_mode_1(D_800E8538[zero].column, D_800E8538[zero].row + (13 * var_s0), gTextPauseButton[var_s0], 0, 0.75f, - 0.75f); + print_text_mode_1(D_800E8538[zero].column, D_800E8538[zero].row + (13 * var_s0), gTextPauseButton[var_s0], 0, + 0.75f, 0.75f); } } @@ -7847,7 +7895,7 @@ void render_pause_menu_versus(MenuItem* arg0) { temp_t3 = temp_v0->screenWidth / 2; temp_t4 = temp_v0->screenHeight / 2; gDisplayListHead = draw_box_wide(gDisplayListHead, temp_v1 - temp_t3, temp_t0 - temp_t4, temp_v1 + temp_t3, - temp_t0 + temp_t4, 0, 0, 0, 0x0000008C); + temp_t0 + temp_t4, 0, 0, 0, 0x0000008C); temp_s3 = &D_800E8540[(gScreenModeSelection * 4) + (gIsGamePaused - 1)]; for (var_s0 = 0; var_s0 < 4; var_s0++) { if (var_s0 > 0) { @@ -7878,7 +7926,7 @@ void render_pause_grand_prix(MenuItem* arg0) { temp_t3 = temp_v0->screenWidth / 2; temp_t4 = temp_v0->screenHeight / 2; gDisplayListHead = draw_box_wide(gDisplayListHead, temp_v1 - temp_t3, temp_t0 - temp_t4, temp_v1 + temp_t3, - temp_t0 + temp_t4, 0, 0, 0, 140); + temp_t0 + temp_t4, 0, 0, 0, 140); temp_s3 = &D_800E85C0[(gScreenModeSelection * 4) + (gIsGamePaused - 1)]; temp_s0 = ((get_string_width(gCupNames[GetCupIndex()]) * one) + 10.0f) / 2; temp_s1 = ((get_string_width(D_800E76CC[gCCSelection]) * one) + 10.0f) / 2; @@ -7887,8 +7935,7 @@ void render_pause_grand_prix(MenuItem* arg0) { set_text_color(TEXT_YELLOW); print_text1_center_mode_1(160 + temp_s0, temp_s3->row - 50, D_800E76CC[gCCSelection], 0, 1.0f, 1.0f); set_text_color(TEXT_YELLOW); - print_text1_center_mode_1(160, temp_s3->row - 30, CourseManager_GetProps()->Name, 0, 1.0f, - 1.0f); + print_text1_center_mode_1(160, temp_s3->row - 30, CourseManager_GetProps()->Name, 0, 1.0f, 1.0f); for (var_s0 = 0; var_s0 < 2; var_s0++) { text_rainbow_effect(arg0->state - 31, var_s0, TEXT_YELLOW); print_text_mode_1(temp_s3->column, temp_s3->row + (var_s0 * 13), gTextPauseButton[var_s0 * 4], 0, 0.75f, 0.75f); @@ -7911,7 +7958,7 @@ void render_pause_battle(MenuItem* arg0) { temp_t3 = temp_v0->screenWidth / 2; temp_t4 = temp_v0->screenHeight / 2; gDisplayListHead = draw_box_wide(gDisplayListHead, temp_v1 - temp_t3, temp_t0 - temp_t4, temp_v1 + temp_t3, - temp_t0 + temp_t4, 0, 0, 0, 0x0000008C); + temp_t0 + temp_t4, 0, 0, 0, 0x0000008C); temp_s3 = &D_800E8600[(gScreenModeSelection * 4) + (gIsGamePaused - 1)]; for (var_a1 = 0; var_a1 < 4; var_a1++) { if (var_a1 > 0) { @@ -7981,8 +8028,8 @@ void render_menu_item_end_course_option(MenuItem* arg0) { if (arg0->state == 0) { if ((arg0->param1 >= 0x1E) && ((gGlobalTimer / 16) % 2)) { why = get_string_width(gTextPauseButton[REPLAY]) * 0.8f; - gDisplayListHead = - draw_box_wide(gDisplayListHead, 0x000000C0, 0x00000021, (s32) (why) + 0xC6, 0x00000032, 0, 0, 0, 0x00000096); + gDisplayListHead = draw_box_wide(gDisplayListHead, 0x000000C0, 0x00000021, (s32) (why) + 0xC6, 0x00000032, + 0, 0, 0, 0x00000096); set_text_color(TEXT_GREEN); print_text_mode_1(0x000000BF, 0x00000030, gTextPauseButton[REPLAY], 0, 0.8f, 0.8f); } @@ -7997,10 +8044,9 @@ void render_menu_item_end_course_option(MenuItem* arg0) { gDisplayListHead = draw_box_wide(gDisplayListHead, 0, 0, 0x0000013F, 0x000000EF, 0, 0, 0, var_s1); gDPSetPrimColor(gDisplayListHead++, 0, 0, 0x00, 0x00, 0x00, var_s2); set_text_color(TEXT_YELLOW); - print_text1_center_mode_2(0x000000A0, 0x00000050, CourseManager_GetProps()->Name, - 0, 1.0f, 1.0f); + print_text1_center_mode_2(0x000000A0, 0x00000050, CourseManager_GetProps()->Name, 0, 1.0f, 1.0f); switch (arg0->state) { - case 1: + case 1: case 11: case 12: case 13: @@ -8033,7 +8079,7 @@ void render_menu_item_end_course_option(MenuItem* arg0) { for (var_s1 = 0; var_s1 < 6; var_s1++) { text_rainbow_effect(arg0->state - 0xB, var_s1, TEXT_GREEN); print_text_mode_2(D_800E8538[zero].column, D_800E8538[zero].row + (0xD * var_s1), - gTextPauseButton[var_s1 + 1], 0, 0.75f, 0.75f); + gTextPauseButton[var_s1 + 1], 0, 0.75f, 0.75f); } break; case 21: @@ -8045,7 +8091,8 @@ void render_menu_item_end_course_option(MenuItem* arg0) { set_text_color(TEXT_YELLOW); temp_v0 = arg0->state - 0x15; for (var_s1 = 0; var_s1 < 7; var_s1++) { - print_text_mode_1(0x0000004D, 0x6E + (0xD * var_s1), D_800E798C[(temp_v0 * 7) + var_s1], 0, 0.8f, 0.8f); + print_text_mode_1(0x0000004D, 0x6E + (0xD * var_s1), D_800E798C[(temp_v0 * 7) + var_s1], 0, 0.8f, + 0.8f); } break; case 30: @@ -8061,9 +8108,8 @@ void render_menu_item_end_course_option(MenuItem* arg0) { if (D_8018EE10[var_s1].ghostDataSaved == 0) { print_text_mode_1(0x69 - arg0->column, (0x96 + (0x14 * var_s1)), D_800E7A44, 0, 0.75f, 0.75f); } else { - print_text_mode_1(0x69 - arg0->column, (0x96 + (0x14 * var_s1)), - CourseManager_GetProps()->Name, - 0, 0.75f, 0.75f); + print_text_mode_1(0x69 - arg0->column, (0x96 + (0x14 * var_s1)), CourseManager_GetProps()->Name, + 0, 0.75f, 0.75f); } } break; @@ -8098,12 +8144,12 @@ void render_menu_item_end_course_option(MenuItem* arg0) { break; } switch (arg0->state) { /* switch 2 */ - case 11: /* switch 2 */ - case 12: /* switch 2 */ - case 13: /* switch 2 */ - case 14: /* switch 2 */ - case 15: /* switch 2 */ - case 16: /* switch 2 */ + case 11: /* switch 2 */ + case 12: /* switch 2 */ + case 13: /* switch 2 */ + case 14: /* switch 2 */ + case 15: /* switch 2 */ + case 16: /* switch 2 */ var_v0_9 = &D_800E73E0[arg0->state - 11]; break; case 30: /* switch 2 */ @@ -8225,7 +8271,7 @@ void func_800A638C(MenuItem* arg0) { } void func_800A66A8(MenuItem* arg0, Unk_D_800E70A0* arg1) { - Mtx *mtx; + Mtx* mtx; f32 tmp; static float x2, y2, z2; static float x1, y1, z1; @@ -8260,8 +8306,8 @@ void func_800A66A8(MenuItem* arg0, Unk_D_800E70A0* arg1) { guMtxCatL(mtx, mtx + 1, mtx); guTranslate(mtx + 1, arg1->column, arg1->row, 0.0f); guMtxCatL(mtx, mtx + 1, mtx); - //gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxEffect[gMatrixEffectCount++]), - // (G_MTX_NOPUSH | G_MTX_LOAD) | G_MTX_MODELVIEW); + // gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxEffect[gMatrixEffectCount++]), + // (G_MTX_NOPUSH | G_MTX_LOAD) | G_MTX_MODELVIEW); AddEffectMatrixFixed(G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); @@ -8517,11 +8563,11 @@ void menu_item_credits_render(MenuItem* arg0) { if ((slideDirection == SLIDE_RIGHT) || (slideDirection != SLIDE_LEFT)) { someScaling = gTextCreditsRenderInfo[creditIndex].textScaling; print_text1_left(arg0->column, arg0->row, gCreditsText[creditIndex], arg0->param1 * someScaling, - arg0->paramf * someScaling, someScaling); + arg0->paramf * someScaling, someScaling); } else { someScaling = gTextCreditsRenderInfo[creditIndex].textScaling; print_text_mode_1(arg0->column, arg0->row, gCreditsText[creditIndex], arg0->param1 * someScaling, - arg0->paramf * someScaling, someScaling); + arg0->paramf * someScaling, someScaling); } } @@ -8600,7 +8646,8 @@ void handle_menus_with_pri_arg(s32 priSpecial) { isRendered = false; menuItem = &gMenuItems[i]; type = menuItem->type; - if ((type == MENU_ITEM_UI_NO_CONTROLLER) || (type == MENU_ITEM_UI_START_RECORD_TIME) || (type == MENU_ITEM_PAUSE)) { + if ((type == MENU_ITEM_UI_NO_CONTROLLER) || (type == MENU_ITEM_UI_START_RECORD_TIME) || + (type == MENU_ITEM_PAUSE)) { if (priSpecial != 0) { isRendered = true; } @@ -8612,8 +8659,8 @@ void handle_menus_with_pri_arg(s32 priSpecial) { continue; } - switch (type) { /* switch 8; irregular */ - case MENU_ITEM_UI_LOGO_INTRO: /* switch 8 */ + switch (type) { /* switch 8; irregular */ + case MENU_ITEM_UI_LOGO_INTRO: /* switch 8 */ if (sIntroLogoTimer < 0x50) { sIntroModelSpeed = 3.0f; } else if (sIntroLogoTimer < 0x5A) { @@ -8651,9 +8698,9 @@ void handle_menus_with_pri_arg(s32 priSpecial) { case MENU_ITEM_TYPE_0D4: /* switch 8 */ func_800A97BC(menuItem); break; - case MENU_ITEM_UI_START_RECORD_TIME: /* switch 8 */ - switch (menuItem->state) { /* switch 9; irregular */ - case 0: /* switch 9 */ + case MENU_ITEM_UI_START_RECORD_TIME: /* switch 8 */ + switch (menuItem->state) { /* switch 9; irregular */ + case 0: /* switch 9 */ if (gControllerFive->button & R_TRIG) { menuItem->state = (s32) 1U; play_sound2(SOUND_ACTION_PING); @@ -8695,17 +8742,17 @@ void handle_menus_with_pri_arg(s32 priSpecial) { case MENU_ITEM_UI_2P_GAME: case MENU_ITEM_UI_3P_GAME: case MENU_ITEM_UI_4P_GAME: - switch (gMainMenuSelection) { /* switch 6 */ + switch (gMainMenuSelection) { /* switch 6 */ case MAIN_MENU_OPTION: /* switch 6 */ - case MAIN_MENU_DATA: /* switch 6 */ - case MAIN_MENU_PLAYER_SELECT: /* switch 6 */ + case MAIN_MENU_DATA: /* switch 6 */ + case MAIN_MENU_PLAYER_SELECT: /* switch 6 */ func_800A9B9C(menuItem); break; - case MAIN_MENU_MODE_SELECT: /* switch 6 */ - case MAIN_MENU_MODE_SUB_SELECT: /* switch 6 */ - case MAIN_MENU_OK_SELECT: /* switch 6 */ - case MAIN_MENU_OK_SELECT_GO_BACK: /* switch 6 */ - case MAIN_MENU_MODE_SUB_SELECT_GO_BACK: /* switch 6 */ + case MAIN_MENU_MODE_SELECT: /* switch 6 */ + case MAIN_MENU_MODE_SUB_SELECT: /* switch 6 */ + case MAIN_MENU_OK_SELECT: /* switch 6 */ + case MAIN_MENU_OK_SELECT_GO_BACK: /* switch 6 */ + case MAIN_MENU_MODE_SUB_SELECT_GO_BACK: /* switch 6 */ func_800A9C40(menuItem); break; } @@ -8740,13 +8787,13 @@ void handle_menus_with_pri_arg(s32 priSpecial) { case CHARACTER_SELECT_MENU_BOWSER: func_800AAC18(menuItem); switch (menuItem->type) { - case CHARACTER_SELECT_MENU_MARIO: - case CHARACTER_SELECT_MENU_LUIGI: - case CHARACTER_SELECT_MENU_TOAD: - case CHARACTER_SELECT_MENU_PEACH: - case CHARACTER_SELECT_MENU_YOSHI: - case CHARACTER_SELECT_MENU_DK: - case CHARACTER_SELECT_MENU_WARIO: + case CHARACTER_SELECT_MENU_MARIO: + case CHARACTER_SELECT_MENU_LUIGI: + case CHARACTER_SELECT_MENU_TOAD: + case CHARACTER_SELECT_MENU_PEACH: + case CHARACTER_SELECT_MENU_YOSHI: + case CHARACTER_SELECT_MENU_DK: + case CHARACTER_SELECT_MENU_WARIO: case CHARACTER_SELECT_MENU_BOWSER: func_800AA69C(menuItem); break; @@ -8986,7 +9033,8 @@ void handle_menus_with_pri_arg(s32 priSpecial) { menuItem = &gMenuItems[i]; if (menuItem && menuItem) {} // ? type = menuItem->type; - if ((type == MENU_ITEM_UI_NO_CONTROLLER) || (type == MENU_ITEM_UI_START_RECORD_TIME) || (type == MENU_ITEM_PAUSE)) { + if ((type == MENU_ITEM_UI_NO_CONTROLLER) || (type == MENU_ITEM_UI_START_RECORD_TIME) || + (type == MENU_ITEM_PAUSE)) { if (priSpecial != 0) { isRendered = true; } @@ -9064,14 +9112,14 @@ void func_800A8564(MenuItem* arg0) { switch (arg0->type) { case 0xF: var_a0 = D_0200487C; - if ((gMainMenuSelection == MAIN_MENU_OK_SELECT) || - (gMainMenuSelection == MAIN_MENU_OK_SELECT_GO_BACK)) { + if ((gMainMenuSelection == MAIN_MENU_OK_SELECT) || (gMainMenuSelection == MAIN_MENU_OK_SELECT_GO_BACK)) { var_a1 = 1; } break; case 0x33: var_a0 = D_02004B74; - if ((gPlayerSelectMenuSelection == PLAYER_SELECT_MENU_OK) || (gPlayerSelectMenuSelection == PLAYER_SELECT_MENU_OK_GO_BACK)) { + if ((gPlayerSelectMenuSelection == PLAYER_SELECT_MENU_OK) || + (gPlayerSelectMenuSelection == PLAYER_SELECT_MENU_OK_GO_BACK)) { var_a1 = 1; } break; @@ -9167,8 +9215,10 @@ void func_800A8A98(MenuItem* arg0) { gDPSetRenderMode(gDisplayListHead++, G_RM_OPA_SURF, G_RM_OPA_SURF2); gDPSetCombineMode(gDisplayListHead++, G_CC_DECALRGBA, G_CC_DECALRGBA); for (someIndex = 0; someIndex < GetCupSize(); someIndex++) { - if ((someIndex == GetCupCursorPosition()) && (gSubMenuSelection > SUB_MENU_MAP_SELECT_CUP) && (gModeSelection != GRAND_PRIX)) { - if ((gSubMenuSelection == SUB_MENU_MAP_SELECT_COURSE) || (gSubMenuSelection == SUB_MENU_MAP_SELECT_BATTLE_COURSE)) { + if ((someIndex == GetCupCursorPosition()) && (gSubMenuSelection > SUB_MENU_MAP_SELECT_CUP) && + (gModeSelection != GRAND_PRIX)) { + if ((gSubMenuSelection == SUB_MENU_MAP_SELECT_COURSE) || + (gSubMenuSelection == SUB_MENU_MAP_SELECT_BATTLE_COURSE)) { gDisplayListHead = draw_flash_select_case_slow( gDisplayListHead, D_800E7208[someIndex][0].column + temp_s2, D_800E7208[someIndex][0].row + temp_s3, D_800E7208[someIndex][1].column + temp_s2, D_800E7208[someIndex][1].row + temp_s3); @@ -9205,8 +9255,8 @@ void func_800A8CA4(MenuItem* arg0) { if ((var_s0 != (temp_v0->param1 % 4)) != 0) { gDisplayListHead = draw_box_wide(gDisplayListHead, D_800E7208[var_s0][0].column + temp_s2, - D_800E7208[var_s0][0].row + temp_s3, D_800E7208[var_s0][1].column + temp_s2, - D_800E7208[var_s0][1].row + temp_s3, 0, 0, 0, 0x00000064); + D_800E7208[var_s0][0].row + temp_s3, D_800E7208[var_s0][1].column + temp_s2, + D_800E7208[var_s0][1].row + temp_s3, 0, 0, 0, 0x00000064); } } } @@ -9490,7 +9540,8 @@ void func_800A97BC(MenuItem* arg0) { if (i < 7) { gControllerPakVisibleTableRows[i] = gControllerPakVisibleTableRows[i + 1]; } else { - if ((gControllerPakVisibleTableRows[i - 1] == 0x10) || (gControllerPakVisibleTableRows[i - 1] == 0)) { + if ((gControllerPakVisibleTableRows[i - 1] == 0x10) || + (gControllerPakVisibleTableRows[i - 1] == 0)) { gControllerPakVisibleTableRows[i] = 0; } else { gControllerPakVisibleTableRows[i] = gControllerPakVisibleTableRows[i - 1] + 1; @@ -9510,7 +9561,8 @@ void func_800A97BC(MenuItem* arg0) { if (i > 1) { gControllerPakVisibleTableRows[i] = gControllerPakVisibleTableRows[i - 1]; } else { - if ((gControllerPakVisibleTableRows[i + 1] == 1) || (gControllerPakVisibleTableRows[i + 1] == 0)) { + if ((gControllerPakVisibleTableRows[i + 1] == 1) || + (gControllerPakVisibleTableRows[i + 1] == 0)) { gControllerPakVisibleTableRows[i] = 0; } else { gControllerPakVisibleTableRows[i] = gControllerPakVisibleTableRows[i + 1] - 1; @@ -9715,15 +9767,15 @@ void func_800A9E58(MenuItem* arg0) { temp_a1 = gGameModePlayerSelection[gPlayerCount - 1][gGameModeMenuColumn[gPlayerCount - 1]]; switch (arg0->state) { /* switch 5; irregular */ - case 0: /* switch 5 */ + case 0: /* switch 5 */ if ((temp_a1 != sp20) && (temp_a1 != sp1C)) { arg0->visible = 0; } else { arg0->param2 = gGameModeMenuColumn[gPlayerCount - 1]; - switch (gMainMenuSelection) { /* switch 2 */ - case MAIN_MENU_MODE_SELECT: /* switch 2 */ + switch (gMainMenuSelection) { /* switch 2 */ + case MAIN_MENU_MODE_SELECT: /* switch 2 */ case MAIN_MENU_MODE_SUB_SELECT: /* switch 2 */ - case MAIN_MENU_OK_SELECT: /* switch 2 */ + case MAIN_MENU_OK_SELECT: /* switch 2 */ arg0->visible = 1; temp_v0 = get_menu_item_player_count(); arg0->column = temp_v0->column; @@ -9747,13 +9799,13 @@ void func_800A9E58(MenuItem* arg0) { } } break; - case 1: /* switch 5 */ - switch (gMainMenuSelection) { /* switch 3 */ - case MAIN_MENU_MODE_SELECT: /* switch 3 */ - case MAIN_MENU_MODE_SUB_SELECT: /* switch 3 */ - case MAIN_MENU_OK_SELECT: /* switch 3 */ - case MAIN_MENU_OK_SELECT_GO_BACK: /* switch 3 */ - case MAIN_MENU_MODE_SUB_SELECT_GO_BACK: /* switch 3 */ + case 1: /* switch 5 */ + switch (gMainMenuSelection) { /* switch 3 */ + case MAIN_MENU_MODE_SELECT: /* switch 3 */ + case MAIN_MENU_MODE_SUB_SELECT: /* switch 3 */ + case MAIN_MENU_OK_SELECT: /* switch 3 */ + case MAIN_MENU_OK_SELECT_GO_BACK: /* switch 3 */ + case MAIN_MENU_MODE_SUB_SELECT_GO_BACK: /* switch 3 */ if ((temp_a1 != sp20) && (temp_a1 != sp1C)) { arg0->visible = 0; arg0->state = 0; @@ -9778,13 +9830,13 @@ void func_800A9E58(MenuItem* arg0) { break; } break; - case 2: /* switch 5 */ - switch (gMainMenuSelection) { /* switch 4 */ - case MAIN_MENU_MODE_SELECT: /* switch 4 */ - case MAIN_MENU_MODE_SUB_SELECT: /* switch 4 */ - case MAIN_MENU_OK_SELECT: /* switch 4 */ - case MAIN_MENU_OK_SELECT_GO_BACK: /* switch 4 */ - case MAIN_MENU_MODE_SUB_SELECT_GO_BACK: /* switch 4 */ + case 2: /* switch 5 */ + switch (gMainMenuSelection) { /* switch 4 */ + case MAIN_MENU_MODE_SELECT: /* switch 4 */ + case MAIN_MENU_MODE_SUB_SELECT: /* switch 4 */ + case MAIN_MENU_OK_SELECT: /* switch 4 */ + case MAIN_MENU_OK_SELECT_GO_BACK: /* switch 4 */ + case MAIN_MENU_MODE_SUB_SELECT_GO_BACK: /* switch 4 */ if ((temp_a1 != sp20) && (temp_a1 != sp1C)) { arg0->visible = 0; arg0->state = 0; @@ -11256,7 +11308,7 @@ void func_800AD2E8(MenuItem* arg0) { s32 index; switch (arg0->state) { /* switch 3; irregular */ - case 0: /* switch 3 */ + case 0: /* switch 3 */ arg0->column = -0x000000A0; arg0->state = 1; for (index = 0; index < ARRAY_COUNT(gGPPointRewards); index++) { @@ -11558,7 +11610,7 @@ void func_800AD2E8(MenuItem* arg0) { return; } switch (arg0->param1) { /* switch 3 */ - case 5: /* switch 3 */ + case 5: /* switch 3 */ D_8015F890 = 0; D_8015F892 = 1; func_802903B0(); diff --git a/src/menus.h b/src/menus.h index 1e82ec8d0..eec3027c8 100644 --- a/src/menus.h +++ b/src/menus.h @@ -49,12 +49,12 @@ enum SubMenuSelectionType { SUB_MENU_ERASE_QUIT = SUB_MENU_ERASE_MIN, SUB_MENU_ERASE_ERASE, SUB_MENU_ERASE_MAX = SUB_MENU_ERASE_ERASE, // 0x1F - SUB_MENU_SAVE_DATA_ERASED, // 0x20 + SUB_MENU_SAVE_DATA_ERASED, // 0x20 SUB_MENU_COPY_PAK_FROM_GHOST_MIN = 0x28, SUB_MENU_COPY_PAK_FROM_GHOST1_1P = SUB_MENU_COPY_PAK_FROM_GHOST_MIN, SUB_MENU_COPY_PAK_FROM_GHOST2_1P, SUB_MENU_COPY_PAK_FROM_GHOST_MAX = SUB_MENU_COPY_PAK_FROM_GHOST2_1P, // 0x29 - SUB_MENU_COPY_PAK_ERROR_2P_MIN, // 0x2A + SUB_MENU_COPY_PAK_ERROR_2P_MIN, // 0x2A SUB_MENU_COPY_PAK_ERROR_NO_GHOST_DATA = SUB_MENU_COPY_PAK_ERROR_2P_MIN, SUB_MENU_COPY_PAK_ERROR_NO_GAME_DATA, SUB_MENU_COPY_PAK_ERROR_NO_PAK_2P, @@ -95,10 +95,10 @@ enum MainMenuSelectionType { MAIN_MENU_OPTION, MAIN_MENU_DATA, MAIN_MENU_PLAYER_SELECT, - MAIN_MENU_MODE_SELECT, // Mario GP - T. Trials - VS - Battle - MAIN_MENU_MODE_SUB_SELECT, // CC Selection and T.Trials options (Begin, Data) - MAIN_MENU_OK_SELECT, // OK option after selecting a submode - MAIN_MENU_OK_SELECT_GO_BACK, // OK option after going back from player select + MAIN_MENU_MODE_SELECT, // Mario GP - T. Trials - VS - Battle + MAIN_MENU_MODE_SUB_SELECT, // CC Selection and T.Trials options (Begin, Data) + MAIN_MENU_OK_SELECT, // OK option after selecting a submode + MAIN_MENU_OK_SELECT_GO_BACK, // OK option after going back from player select MAIN_MENU_MODE_SUB_SELECT_GO_BACK // Used in T.Trials after going back to Data option from course data }; @@ -108,7 +108,7 @@ enum MainMenuSelectionType { enum PlayerSelectMenuSelectionTypes { PLAYER_SELECT_MENU_NONE, PLAYER_SELECT_MENU_MAIN, - PLAYER_SELECT_MENU_OK, // OK option after selecting characters + PLAYER_SELECT_MENU_OK, // OK option after selecting characters PLAYER_SELECT_MENU_OK_GO_BACK // OK option after going back from map select }; @@ -178,11 +178,7 @@ enum DebugGotoSceneTypes { /** * @brief Options for gFadeModeSelection */ -enum FadeModeSelectionTypes { - FADE_MODE_NONE, - FADE_MODE_MAIN, - FADE_MODE_LOGO -}; +enum FadeModeSelectionTypes { FADE_MODE_NONE, FADE_MODE_MAIN, FADE_MODE_LOGO }; /** * @brief Options for gControllerPakScrollDirection @@ -226,7 +222,7 @@ extern f32 gIntroModelPosZ; extern s32 gMenuFadeType; extern s8 gCharacterGridSelections[]; -extern s8 gCharacterGridIsSelected[]; +extern bool gCharacterGridIsSelected[]; extern s8 gSubMenuSelection; extern s8 gMainMenuSelection; extern s8 gPlayerSelectMenuSelection; @@ -242,8 +238,8 @@ extern s8 gTimeTrialDataCourseIndex; extern s8 gCourseRecordsMenuSelection; extern s8 gCourseRecordsSubMenuSelection; extern s8 gDebugGotoScene; -extern s8 gGhostPlayerInit; -extern s8 gCourseMapInit; +extern bool gGhostPlayerInit; +extern bool gCourseMapInit; extern s32 gMenuTimingCounter; extern s32 gMenuDelayTimer; extern s8 gDemoUseController; diff --git a/src/port/Engine.cpp b/src/port/Engine.cpp index 59d76cfb9..9f2f814f4 100644 --- a/src/port/Engine.cpp +++ b/src/port/Engine.cpp @@ -62,7 +62,8 @@ GameEngine::GameEngine() { } } - this->context = Ship::Context::CreateInstance("Spaghettify", "skart64", "spaghettify.cfg.json", OTRFiles, {}, 3, { 26800, 512, 1100 }); + this->context = Ship::Context::CreateInstance("Spaghettify", "skart64", "spaghettify.cfg.json", OTRFiles, {}, 3, + { 26800, 512, 1100 }); auto wnd = std::dynamic_pointer_cast(Ship::Context::GetInstance()->GetWindow()); @@ -70,18 +71,19 @@ GameEngine::GameEngine() { this->context->InitGfxDebugger(); auto loader = context->GetResourceManager()->GetResourceLoader(); - loader->RegisterResourceFactory(std::make_shared(), RESOURCE_FORMAT_BINARY, - "AudioBank", static_cast(SF64::ResourceType::Bank), 0); - loader->RegisterResourceFactory(std::make_shared(), RESOURCE_FORMAT_BINARY, + loader->RegisterResourceFactory(std::make_shared(), RESOURCE_FORMAT_BINARY, "AudioBank", + static_cast(SF64::ResourceType::Bank), 0); + loader->RegisterResourceFactory(std::make_shared(), RESOURCE_FORMAT_BINARY, "AudioSample", static_cast(SF64::ResourceType::Sample), 0); - loader->RegisterResourceFactory(std::make_shared(), RESOURCE_FORMAT_BINARY, + loader->RegisterResourceFactory(std::make_shared(), RESOURCE_FORMAT_BINARY, "AudioSequence", static_cast(SF64::ResourceType::Sequence), 0); loader->RegisterResourceFactory(std::make_shared(), RESOURCE_FORMAT_BINARY, "Vec3f", static_cast(SF64::ResourceType::Vec3f), 0); loader->RegisterResourceFactory(std::make_shared(), RESOURCE_FORMAT_BINARY, "Vec3s", static_cast(SF64::ResourceType::Vec3s), 0); - loader->RegisterResourceFactory(std::make_shared(), RESOURCE_FORMAT_BINARY, - "GenericArray", static_cast(SF64::ResourceType::GenericArray), 0); + loader->RegisterResourceFactory(std::make_shared(), + RESOURCE_FORMAT_BINARY, "GenericArray", + static_cast(SF64::ResourceType::GenericArray), 0); loader->RegisterResourceFactory(std::make_shared(), RESOURCE_FORMAT_BINARY, "Texture", static_cast(LUS::ResourceType::Texture), 0); loader->RegisterResourceFactory(std::make_shared(), RESOURCE_FORMAT_BINARY, @@ -89,8 +91,8 @@ GameEngine::GameEngine() { loader->RegisterResourceFactory(std::make_shared(), RESOURCE_FORMAT_BINARY, "Vertex", static_cast(LUS::ResourceType::Vertex), 0); - loader->RegisterResourceFactory(std::make_shared(), RESOURCE_FORMAT_XML, - "Vertex", static_cast(LUS::ResourceType::Vertex), 0); + loader->RegisterResourceFactory(std::make_shared(), RESOURCE_FORMAT_XML, "Vertex", + static_cast(LUS::ResourceType::Vertex), 0); loader->RegisterResourceFactory(std::make_shared(), RESOURCE_FORMAT_BINARY, "DisplayList", static_cast(LUS::ResourceType::DisplayList), 0); @@ -109,14 +111,18 @@ GameEngine::GameEngine() { "KartAI", static_cast(MK64::ResourceType::KartAI), 0); loader->RegisterResourceFactory(std::make_shared(), RESOURCE_FORMAT_BINARY, "CourseVtx", static_cast(MK64::ResourceType::CourseVertex), 0); - loader->RegisterResourceFactory(std::make_shared(), RESOURCE_FORMAT_BINARY, - "TrackSections", static_cast(MK64::ResourceType::TrackSection), 0); - loader->RegisterResourceFactory(std::make_shared(), RESOURCE_FORMAT_BINARY, - "Waypoints", static_cast(MK64::ResourceType::Waypoints), 0); - loader->RegisterResourceFactory(std::make_shared(), RESOURCE_FORMAT_BINARY, - "SpawnData", static_cast(MK64::ResourceType::SpawnData), 0); - loader->RegisterResourceFactory(std::make_shared(), RESOURCE_FORMAT_BINARY, - "UnkSpawnData", static_cast(MK64::ResourceType::UnkSpawnData), 0); + loader->RegisterResourceFactory(std::make_shared(), + RESOURCE_FORMAT_BINARY, "TrackSections", + static_cast(MK64::ResourceType::TrackSection), 0); + loader->RegisterResourceFactory(std::make_shared(), + RESOURCE_FORMAT_BINARY, "Waypoints", + static_cast(MK64::ResourceType::Waypoints), 0); + loader->RegisterResourceFactory(std::make_shared(), + RESOURCE_FORMAT_BINARY, "SpawnData", + static_cast(MK64::ResourceType::SpawnData), 0); + loader->RegisterResourceFactory(std::make_shared(), + RESOURCE_FORMAT_BINARY, "UnkSpawnData", + static_cast(MK64::ResourceType::UnkSpawnData), 0); } void GameEngine::Create() { @@ -128,7 +134,7 @@ void GameEngine::Create() { #endif } -void GameEngine::Destroy(){ +void GameEngine::Destroy() { AudioExit(); } @@ -178,7 +184,7 @@ void GameEngine::ProcessGfxCommands(Gfx* commands) { // Audio -void GameEngine::HandleAudioThread(){ +void GameEngine::HandleAudioThread() { while (audio.running) { { std::unique_lock Lock(audio.mutex); @@ -200,14 +206,14 @@ void GameEngine::HandleAudioThread(){ create_next_audio_buffer(audio_buffer + i * (num_audio_samples * 2), num_audio_samples); } - AudioPlayerPlayFrame((u8 *) audio_buffer, 2 * num_audio_samples * 4); + AudioPlayerPlayFrame((u8*) audio_buffer, 2 * num_audio_samples * 4); audio.processing = false; audio.cv_from_thread.notify_one(); } } -void GameEngine::StartAudioFrame(){ +void GameEngine::StartAudioFrame() { { std::unique_lock Lock(audio.mutex); audio.processing = true; @@ -216,7 +222,7 @@ void GameEngine::StartAudioFrame(){ audio.cv_to_thread.notify_one(); } -void GameEngine::EndAudioFrame(){ +void GameEngine::EndAudioFrame() { { std::unique_lock Lock(audio.mutex); while (audio.processing) { @@ -235,16 +241,16 @@ void GameEngine::AudioInit() { Instance->audioSequenceTable.resize(512); Instance->banksTable.resize(512); - for(auto& bank : *banksFiles){ + for (auto& bank : *banksFiles) { auto path = "__OTR__" + bank; - const auto ctl = static_cast(ResourceGetDataByName(path.c_str())); + const auto ctl = static_cast(ResourceGetDataByName(path.c_str())); this->bankMapTable[bank] = ctl->bankId; SPDLOG_INFO("Loaded bank: {}", bank); } - for(auto& sequence : *sequences_files){ + for (auto& sequence : *sequences_files) { auto path = "__OTR__" + sequence; - auto seq = static_cast(ResourceGetDataByName(path.c_str())); + auto seq = static_cast(ResourceGetDataByName(path.c_str())); Instance->sequenceTable[seq->id] = path; SPDLOG_INFO("Loaded sequence: {}", sequence); } @@ -268,7 +274,7 @@ void GameEngine::AudioExit() { } uint8_t GameEngine::GetBankIdByName(const std::string& name) { - if(Instance->bankMapTable.contains(name)){ + if (Instance->bankMapTable.contains(name)) { return Instance->bankMapTable[name]; } return 0; @@ -296,17 +302,17 @@ extern "C" uint32_t GameEngine_GetSamplesPerFrame() { extern "C" CtlEntry* GameEngine_LoadBank(const uint8_t bankId) { const auto engine = GameEngine::Instance; - if(bankId >= engine->bankMapTable.size()){ + if (bankId >= engine->bankMapTable.size()) { return nullptr; } - if(engine->banksTable[bankId] != nullptr){ + if (engine->banksTable[bankId] != nullptr) { return engine->banksTable[bankId]; } - for(auto& bank : engine->bankMapTable){ - if(bank.second == bankId){ - const auto ctl = static_cast(ResourceGetDataByName(("__OTR__" + bank.first).c_str())); + for (auto& bank : engine->bankMapTable) { + if (bank.second == bankId) { + const auto ctl = static_cast(ResourceGetDataByName(("__OTR__" + bank.first).c_str())); engine->banksTable[bankId] = ctl; return ctl; } @@ -328,20 +334,20 @@ extern "C" void GameEngine_UnloadBank(const uint8_t bankId) { extern "C" AudioSequenceData* GameEngine_LoadSequence(const uint8_t seqId) { auto engine = GameEngine::Instance; - if(engine->sequenceTable[seqId].empty()){ + if (engine->sequenceTable[seqId].empty()) { return nullptr; } - if(engine->audioSequenceTable[seqId] != nullptr){ + if (engine->audioSequenceTable[seqId] != nullptr) { return engine->audioSequenceTable[seqId]; } - auto sequences = static_cast(ResourceGetDataByName(engine->sequenceTable[seqId].c_str())); + auto sequences = static_cast(ResourceGetDataByName(engine->sequenceTable[seqId].c_str())); engine->audioSequenceTable[seqId] = sequences; return sequences; } -extern "C" uint32_t GameEngine_GetSequenceCount(){ +extern "C" uint32_t GameEngine_GetSequenceCount() { auto engine = GameEngine::Instance; return engine->sequenceTable.size(); } @@ -367,7 +373,7 @@ static const char* sOtrSignature = "__OTR__"; extern "C" uint8_t GameEngine_OTRSigCheck(const char* data) { static const char* sOtrSignaturea = "__OTR__"; - return strncmp(data, sOtrSignaturea, strlen(sOtrSignaturea)) == 0; + return strncmp(data, sOtrSignature, strlen(sOtrSignature)) == 0; } // struct TimedEntry { diff --git a/src/port/GBIMiddleware.cpp b/src/port/GBIMiddleware.cpp index b860b2b85..4f84c8e0b 100644 --- a/src/port/GBIMiddleware.cpp +++ b/src/port/GBIMiddleware.cpp @@ -31,7 +31,7 @@ extern "C" void gSPVertex(Gfx* pkt, uintptr_t v, int n, int v0) { extern "C" void gSPInvalidateTexCache(Gfx* pkt, uintptr_t texAddr) { auto data = reinterpret_cast(texAddr); - if (texAddr != 0 && GameEngine_OTRSigCheck(data)) { + if (texAddr != 0 && GameEngine_OTRSigCheck(data) == 1) { const auto res = Ship::Context::GetInstance()->GetResourceManager()->LoadResource(data); const auto type = static_cast(res->GetInitData()->Type); diff --git a/src/racing/actors.c b/src/racing/actors.c index 45330916c..caf623554 100644 --- a/src/racing/actors.c +++ b/src/racing/actors.c @@ -9,6 +9,7 @@ #include #include #include +#include #include "code_800029B0.h" #include "main.h" @@ -1387,16 +1388,16 @@ s16 add_actor_to_empty_slot(Vec3f pos, Vec3s rot, Vec3f velocity, s16 actorType) // Cleanup unused actors for (index = 0; index < m_GetActorSize(); index++) { - //if (m_GetActor(index)->flags == 0) { - //! @todo Commented out because deletes too soon. - //m_DeleteActor(index); - //gNumActors--; + // if (m_GetActor(index)->flags == 0) { + //! @todo Commented out because deletes too soon. + // m_DeleteActor(index); + // gNumActors--; //} } gNumActors++; struct Actor* actor = m_AddBaseActor(); actor_init(actor, pos, rot, velocity, actorType); - return (s16)m_GetActorSize() - 1; // Return current index; + return (s16) m_GetActorSize() - 1; // Return current index; } UNUSED s16 spawn_actor_at_pos(Vec3f pos, s16 actorType) { @@ -2414,9 +2415,8 @@ void render_course_actors(struct UnkStruct_800DC5EC* arg0) { gSPSetLights1(gDisplayListHead++, D_800DC610[1]); gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); - if (gModeSelection != BATTLE) { - //func_80297340(camera); + // func_80297340(camera); } D_8015F8E0 = 0; diff --git a/src/racing/skybox_and_splitscreen.c b/src/racing/skybox_and_splitscreen.c index e81ef92b0..eaa6015d5 100644 --- a/src/racing/skybox_and_splitscreen.c +++ b/src/racing/skybox_and_splitscreen.c @@ -760,7 +760,7 @@ void render_screens(s32 mode, s32 cameraId, s32 playerId) { s32 screenId = 0; s32 screenMode = SCREEN_MODE_1P; - switch(mode) { + switch (mode) { case RENDER_SCREEN_MODE_1P_PLAYER_ONE: func_802A53A4(); screenId = 0; @@ -816,8 +816,8 @@ void render_screens(s32 mode, s32 cameraId, s32 playerId) { break; } - struct UnkStruct_800DC5EC *screen = &D_8015F480[screenId]; - Camera *camera = &cameras[cameraId]; + struct UnkStruct_800DC5EC* screen = &D_8015F480[screenId]; + Camera* camera = &cameras[cameraId]; if (screenMode == SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL) { gSPSetGeometryMode(gDisplayListHead++, G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH); @@ -828,30 +828,34 @@ void render_screens(s32 mode, s32 cameraId, s32 playerId) { gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); - guPerspective(&gGfxPool->mtxPersp[cameraId], &perspNorm, gCameraZoom[cameraId], gScreenAspect, CourseManager_GetProps()->NearPersp, CourseManager_GetProps()->FarPersp, 1.0f); + guPerspective(&gGfxPool->mtxPersp[cameraId], &perspNorm, gCameraZoom[cameraId], gScreenAspect, + CourseManager_GetProps()->NearPersp, CourseManager_GetProps()->FarPersp, 1.0f); gSPPerspNormalize(gDisplayListHead++, perspNorm); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPersp[cameraId]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPersp[cameraId]), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - guLookAt(&gGfxPool->mtxLookAt[cameraId], camera->pos[0], camera->pos[1], camera->pos[2], - camera->lookAt[0], camera->lookAt[1], camera->lookAt[2], camera->up[0], - camera->up[1], camera->up[2]); + guLookAt(&gGfxPool->mtxLookAt[cameraId], camera->pos[0], camera->pos[1], camera->pos[2], camera->lookAt[0], + camera->lookAt[1], camera->lookAt[2], camera->up[0], camera->up[1], camera->up[2]); if (D_800DC5C8 == 0) { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxLookAt[cameraId]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxLookAt[cameraId]), + G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(matrix); render_set_position(matrix, 0); } else { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxLookAt[cameraId]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxLookAt[cameraId]), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); } render_course(screen); if (D_800DC5C8 == 1) { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxLookAt[cameraId]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxLookAt[cameraId]), + G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(matrix); render_set_position(matrix, 0); } render_course_actors(screen); render_object(mode); - switch(screenId) { + switch (screenId) { case 0: render_players_on_screen_one(); break; @@ -867,7 +871,7 @@ void render_screens(s32 mode, s32 cameraId, s32 playerId) { } func_8029122C(screen, playerId); - switch(playerId) { + switch (playerId) { case 0: func_80021B0C(); break; diff --git a/src/stubs.c b/src/stubs.c index 7624c6209..724f866d9 100644 --- a/src/stubs.c +++ b/src/stubs.c @@ -30,7 +30,8 @@ s32 mio0encode(s32 input, s32 arg1, s32 arg2) { } void tkmk00decode(u8* src, u8* arg1, u8* dest, s32 n) { - memcpy(dest, src, 0x1000); + dest = src; + // memcpy((void*) dest, (void*) src, 0x1000); } void osStartThread(OSThread* thread) { From a82fbbdfd9ebbf90a033604990ec4b820bf7dcb2 Mon Sep 17 00:00:00 2001 From: coco875 Date: Sun, 5 Jan 2025 02:19:57 +0100 Subject: [PATCH 2/9] fix multiplayer character not show --- src/render_player.c | 75 +++++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/src/render_player.c b/src/render_player.c index 501ffebcc..9f46a2274 100644 --- a/src/render_player.c +++ b/src/render_player.c @@ -536,7 +536,7 @@ void render_players_on_screen_one(void) { // This call moved here to sync kart texture and wheel texture tlut loading/rendering if (gPlayersToRenderCount != 0) { - load_kart_texture_and_render_kart_particle_on_screen_one(); + load_kart_texture_and_render_kart_particle_on_screen_one(); } try_rendering_player(gPlayerOne, PLAYER_ONE, PLAYER_ONE); @@ -1637,12 +1637,14 @@ void render_kart(Player* player, s8 playerId, s8 screenId, s8 arg3) { sp14C[1] = player->unk_048[screenId]; sp14C[2] = player->unk_050[screenId]; if (((s32) player->effects & HIT_EFFECT) == HIT_EFFECT) { - func_80062B18(&sp148, &sp144, &sp140, 0.0f, 8.0f, 0.0f, -player->unk_048[screenId], player->unk_050[screenId]); + func_80062B18(&sp148, &sp144, &sp140, 0.0f, 8.0f, 0.0f, -player->unk_048[screenId], + player->unk_050[screenId]); sp154[1] = (player->pos[1] - player->boundingBoxSize) + player->unk_108; sp154[0] = player->pos[0] + sp148; sp154[2] = player->pos[2] + sp140; } else { - func_80062B18(&sp148, &sp144, &sp140, 0.0f, 1.5f, 0.0f, -player->unk_048[screenId], player->unk_050[screenId]); + func_80062B18(&sp148, &sp144, &sp140, 0.0f, 1.5f, 0.0f, -player->unk_048[screenId], + player->unk_050[screenId]); sp154[1] = (player->pos[1] - player->boundingBoxSize) + player->unk_108 + (sp144 - 2.0); sp154[0] = player->pos[0] + sp148; sp154[2] = player->pos[2] + sp140; @@ -1651,16 +1653,17 @@ void render_kart(Player* player, s8 playerId, s8 screenId, s8 arg3) { #ifdef AVOID_UB gPlayerPalette = &gPlayerPalettesList[D_801651D0[screenId][playerId]][screenId][playerId]; #else - gPlayerPalette = (struct_D_802F1F80*) &gPlayerPalettesList[D_801651D0[screenId][playerId]][screenId][playerId * 0x100]; + gPlayerPalette = + (struct_D_802F1F80*) &gPlayerPalettesList[D_801651D0[screenId][playerId]][screenId][playerId * 0x100]; #endif if ((screenId == 0) || (screenId == 1)) { - sKartUpperTexture = &D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId][playerId].pixel_index_array[0]; + sKartUpperTexture = gEncodedKartTexture[D_801651D0[screenId][playerId]][screenId][playerId].unk_00; #ifdef TARGET_N64 - sKartLowerTexture = &D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId][playerId].pixel_index_array[0x7C0]; + sKartLowerTexture = + &D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId][playerId].pixel_index_array[0x7C0]; #endif } else { - sKartUpperTexture = - &D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId - 1][playerId - 4].pixel_index_array[0]; + sKartUpperTexture = gEncodedKartTexture[D_801651D0[screenId][playerId]][screenId - 1][playerId - 4].unk_00; #ifdef TARGET_N64 sKartLowerTexture = &D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId - 1][playerId - 4].pixel_index_array[0x7C0]; @@ -1668,7 +1671,7 @@ void render_kart(Player* player, s8 playerId, s8 screenId, s8 arg3) { } mtxf_translate_rotate(mtx, sp154, sp14C); mtxf_scale2(mtx, gCharacterSize[player->characterId] * player->size); - //convert_to_fixed_point_matrix(&gGfxPool->mtxKart[playerId + (screenId * 8)], mtx); + // convert_to_fixed_point_matrix(&gGfxPool->mtxKart[playerId + (screenId * 8)], mtx); if ((player->effects & BOO_EFFECT) == BOO_EFFECT) { if (screenId == playerId) { @@ -1680,10 +1683,10 @@ void render_kart(Player* player, s8 playerId, s8 screenId, s8 arg3) { gPlayerCyanEffect[playerId], gPlayerMagentaEffect[playerId], gPlayerYellowEffect[playerId], (s32) player->unk_0C6); gDPSetRenderMode(gDisplayListHead++, - AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | - GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA), - AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | - GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)); + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA), + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)); } else { // gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxKart[playerId + (screenId * 8)]), // G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); @@ -1695,10 +1698,10 @@ void render_kart(Player* player, s8 playerId, s8 screenId, s8 arg3) { gPlayerCyanEffect[playerId], gPlayerMagentaEffect[playerId], gPlayerYellowEffect[playerId], D_8018D970[playerId]); gDPSetRenderMode(gDisplayListHead++, - AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | - GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA), - AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | - GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)); + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA), + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)); } } else if (((player->unk_0CA & 4) == 4) || (player->soundEffects & 0x08000000) || (player->soundEffects & 0x04000000)) { @@ -1778,13 +1781,11 @@ void render_ghost(Player* player, s8 playerId, s8 screenId, s8 arg3) { (struct_D_802F1F80*) &gPlayerPalettesList[D_801651D0[screenId][playerId]][screenId][playerId * 0x100]; #endif if ((screenId == 0) || (screenId == 1)) { - sKartUpperTexture = - &D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId][playerId].pixel_index_array[0]; + sKartUpperTexture = gEncodedKartTexture[D_801651D0[screenId][playerId]][screenId][playerId].unk_00; // sKartLowerTexture = // &D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId][playerId].pixel_index_array[0x7C0]; } else { - sKartUpperTexture = - &D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId - 1][playerId - 4].pixel_index_array[0]; + sKartUpperTexture = gEncodedKartTexture[D_801651D0[screenId][playerId]][screenId - 1][playerId - 4].unk_00; // sKartLowerTexture = &D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId - 1][playerId - // 4].pixel_index_array[0x7C0]; } @@ -1803,10 +1804,10 @@ void render_ghost(Player* player, s8 playerId, s8 screenId, s8 arg3) { func_8004B614(gPlayerRedEffect[playerId], gPlayerGreenEffect[playerId], gPlayerBlueEffect[playerId], gPlayerCyanEffect[playerId], gPlayerMagentaEffect[playerId], gPlayerYellowEffect[playerId], spC2); gDPSetRenderMode(gDisplayListHead++, - AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | - GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA), - AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | - GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)); + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA), + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)); gDPLoadTextureBlock(gDisplayListHead++, sKartUpperTexture, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -1848,10 +1849,10 @@ void func_80025DE8(Player* player, s8 playerId, s8 screenId, s8 arg3) { gPlayerCyanEffect[playerId], gPlayerMagentaEffect[playerId], gPlayerYellowEffect[playerId], 0x00000040); gDPSetRenderMode(gDisplayListHead++, - AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | - GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA), - AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | - GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)); + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA), + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)); gDPLoadTextureBlock(gDisplayListHead++, sKartUpperTexture, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -2002,21 +2003,21 @@ void update_wheel_palette(Player* player, s8 playerId, s8 screenId, s8 arg3) { if (frameId <= 20) { int32_t offset = (((frameId * temp_num * 4) + ((temp_t2 >> 8) * 0x40)) * 2) / 0x80; load_wheel_palette_non_blocking(player, wheelPtr[character][wheel0 + offset], - D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); + D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); } else { int32_t offset = (((((frameId - 21) * (temp_num * 4) + ((temp_t2 >> 8) * 0x40)) + 0x600)) * 2) / 0x80; load_wheel_palette_non_blocking(player, wheelPtr[character][wheel1 + offset], - D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); + D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); } } else { if (frameId == 0) { int32_t offset = (((frameId * temp_num * 4) + ((temp_t2 >> 8) * 0x40)) * 2) / 0x80; load_wheel_palette_non_blocking(player, wheelPtr[character][wheel0 + offset], - D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); + D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); } else { int32_t offset = (((frameId * temp_num * 4) + ((temp_t2 >> 8) * 0x40)) * 2) / 0x80; load_wheel_palette_non_blocking(player, wheelPtr[character][wheel1 + offset], - D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); + D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); } } } else { @@ -2027,22 +2028,22 @@ void update_wheel_palette(Player* player, s8 playerId, s8 screenId, s8 arg3) { if (frameId <= 20) { int32_t offset = (((frameId * temp_num * 4) + ((temp_t2 >> 8) * 0x40)) * 2) / 0x80; load_wheel_palette_non_blocking(player, wheelPtr[character][wheel0 + offset], - D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); + D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); } else { int32_t offset = (((((frameId - 21) * (temp_num * 4) + ((temp_t2 >> 8) * 0x40)) + 0x600)) * 2) / 0x80; load_wheel_palette_non_blocking(player, wheelPtr[character][wheel1 + offset], - D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); + D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); } } else { if (frameId == 0) { int32_t offset = (((frameId * temp_num * 4) + ((temp_t2 >> 8) * 0x40)) * 2) / 0x80; load_wheel_palette_non_blocking(player, wheelPtr[character][wheel0 + offset], - D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); + D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); } else { int32_t offset = (((frameId * temp_num * 4) + ((temp_t2 >> 8) * 0x40)) * 2) / 0x80; load_wheel_palette_non_blocking(player, wheelPtr[character][wheel1 + offset], - D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); + D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); } } } From 6eb35d2bf82ef563abfb035af05c2947ee78078e Mon Sep 17 00:00:00 2001 From: coco875 Date: Sun, 5 Jan 2025 11:30:10 +0100 Subject: [PATCH 3/9] uniform GameEngine_OTRSigCheck --- include/align_asset_macro.h | 2 +- src/port/Engine.cpp | 3 +-- src/port/Engine.h | 10 ++++++++-- src/port/GBIMiddleware.cpp | 11 ++++++----- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/include/align_asset_macro.h b/include/align_asset_macro.h index 972f7f0b5..43b28dd3a 100644 --- a/include/align_asset_macro.h +++ b/include/align_asset_macro.h @@ -1,6 +1,6 @@ #pragma once -uint8_t GameEngine_OTRSigCheck(char* imgData); +bool GameEngine_OTRSigCheck(char* imgData); #if defined(_WIN32) #define ALIGN_ASSET(x) __declspec(align(x)) diff --git a/src/port/Engine.cpp b/src/port/Engine.cpp index 9f2f814f4..a8763cac0 100644 --- a/src/port/Engine.cpp +++ b/src/port/Engine.cpp @@ -371,8 +371,7 @@ extern "C" uint32_t GameEngine_GetGameVersion() { static const char* sOtrSignature = "__OTR__"; -extern "C" uint8_t GameEngine_OTRSigCheck(const char* data) { - static const char* sOtrSignaturea = "__OTR__"; +extern "C" bool GameEngine_OTRSigCheck(const char* data) { return strncmp(data, sOtrSignature, strlen(sOtrSignature)) == 0; } diff --git a/src/port/Engine.h b/src/port/Engine.h index 36d78d1fe..16ad40299 100644 --- a/src/port/Engine.h +++ b/src/port/Engine.h @@ -53,7 +53,11 @@ class GameEngine { uint32_t OTRGetGameRenderWidth(); uint32_t OTRGetGameRenderHeight(); }; -#else +#endif + +#ifdef __cplusplus +extern "C" { +#endif void GameEngine_ProcessGfxCommands(Gfx* commands); uint32_t GameEngine_GetSampleRate(); uint32_t GameEngine_GetSamplesPerFrame(); @@ -65,7 +69,7 @@ struct AudioSequenceData* GameEngine_LoadSequence(uint8_t seqId); uint32_t GameEngine_GetSequenceCount(); uint8_t GameEngine_IsSequenceLoaded(uint8_t seqId); void GameEngine_UnloadSequence(uint8_t seqId); -uint8_t GameEngine_OTRSigCheck(char* imgData); +// bool GameEngine_OTRSigCheck(char* imgData); -> align_asset_macro.h float OTRGetAspectRatio(void); float OTRGetDimensionFromLeftEdge(float v); float OTRGetDimensionFromRightEdge(float v); @@ -73,4 +77,6 @@ int16_t OTRGetRectDimensionFromLeftEdge(float v); int16_t OTRGetRectDimensionFromRightEdge(float v); uint32_t OTRGetGameRenderWidth(void); uint32_t OTRGetGameRenderHeight(void); +#ifdef __cplusplus +} #endif diff --git a/src/port/GBIMiddleware.cpp b/src/port/GBIMiddleware.cpp index 4f84c8e0b..9b3f1e71d 100644 --- a/src/port/GBIMiddleware.cpp +++ b/src/port/GBIMiddleware.cpp @@ -4,13 +4,14 @@ #include "DisplayList.h" #include "resource/type/ResourceType.h" #include "resource/type/Array.h" - -extern "C" int GameEngine_OTRSigCheck(const char* data); +extern "C" { +#include +} extern "C" void gSPDisplayList(Gfx* pkt, Gfx* dl) { char* imgData = (char*) dl; - if (GameEngine_OTRSigCheck(imgData) == 1) { + if (GameEngine_OTRSigCheck(imgData)) { auto resource = Ship::Context::GetInstance()->GetResourceManager()->LoadResource(imgData); auto res = std::static_pointer_cast(resource); dl = &res->Instructions[0]; @@ -21,7 +22,7 @@ extern "C" void gSPDisplayList(Gfx* pkt, Gfx* dl) { extern "C" void gSPVertex(Gfx* pkt, uintptr_t v, int n, int v0) { - if (GameEngine_OTRSigCheck((char*) v) == 1) { + if (GameEngine_OTRSigCheck((char*) v)) { v = (uintptr_t) ResourceGetDataByName((char*) v); } @@ -31,7 +32,7 @@ extern "C" void gSPVertex(Gfx* pkt, uintptr_t v, int n, int v0) { extern "C" void gSPInvalidateTexCache(Gfx* pkt, uintptr_t texAddr) { auto data = reinterpret_cast(texAddr); - if (texAddr != 0 && GameEngine_OTRSigCheck(data) == 1) { + if (texAddr != 0 && GameEngine_OTRSigCheck(data)) { const auto res = Ship::Context::GetInstance()->GetResourceManager()->LoadResource(data); const auto type = static_cast(res->GetInitData()->Type); From 8a9728e7df910b098c3519518f970f3a1e241673 Mon Sep 17 00:00:00 2001 From: coco875 Date: Sun, 5 Jan 2025 11:33:34 +0100 Subject: [PATCH 4/9] rename in jumbotron --- src/engine/courses/LuigiRaceway.cpp | 4 +-- src/engine/courses/LuigiRaceway.h | 31 ++++++++++++----------- src/engine/courses/WarioStadium.cpp | 4 +-- src/engine/courses/WarioStadium.h | 38 ++++++++++++++++------------- 4 files changed, 42 insertions(+), 35 deletions(-) diff --git a/src/engine/courses/LuigiRaceway.cpp b/src/engine/courses/LuigiRaceway.cpp index 004c3a33b..5f6a78f97 100644 --- a/src/engine/courses/LuigiRaceway.cpp +++ b/src/engine/courses/LuigiRaceway.cpp @@ -276,7 +276,7 @@ void LuigiRaceway::SetStaffGhost() { D_80162DE4 = 1; } -void render_LuigiRaceway_jumbotron() { +void LuigiRaceway::Jumbotron() { gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); gDPTileSync(gDisplayListHead++); gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, @@ -407,7 +407,7 @@ void LuigiRaceway::Render(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); - render_LuigiRaceway_jumbotron(); + LuigiRaceway::Jumbotron(); render_course_segments(luigi_raceway_dls, arg0); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA); diff --git a/src/engine/courses/LuigiRaceway.h b/src/engine/courses/LuigiRaceway.h index eb32e6c78..7166278c3 100644 --- a/src/engine/courses/LuigiRaceway.h +++ b/src/engine/courses/LuigiRaceway.h @@ -4,26 +4,28 @@ #include "Course.h" extern "C" { - #include "assets/luigi_raceway_vertices.h" - #include "assets/luigi_raceway_displaylists.h" - #include "assets/luigi_raceway_data.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - extern const course_texture luigi_raceway_textures[]; +#include "assets/luigi_raceway_vertices.h" +#include "assets/luigi_raceway_displaylists.h" +#include "assets/luigi_raceway_data.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +extern const course_texture luigi_raceway_textures[]; } class LuigiRaceway : public Course { -public: - virtual ~LuigiRaceway() = default; // Virtual destructor for proper cleanup in derived classes + void Jumbotron(); + + public: + virtual ~LuigiRaceway() = default; // Virtual destructor for proper cleanup in derived classes // Constructor explicit LuigiRaceway(); -// virtual void Load(const char* courseVtx, -// course_texture* textures, const char* displaylists, size_t dlSize); + // virtual void Load(const char* courseVtx, + // course_texture* textures, const char* displaylists, size_t dlSize); virtual void Load() override; virtual void LoadTextures() override; virtual void SpawnActors() override; @@ -40,6 +42,7 @@ public: virtual void Render(struct UnkStruct_800DC5EC*) override; virtual void RenderCredits() override; virtual void Collision() override; - virtual void SomeCollisionThing(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, f32* arg7) override; + virtual void SomeCollisionThing(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, + f32* arg7) override; virtual void Destroy() override; }; diff --git a/src/engine/courses/WarioStadium.cpp b/src/engine/courses/WarioStadium.cpp index fe009891e..3c68c662e 100644 --- a/src/engine/courses/WarioStadium.cpp +++ b/src/engine/courses/WarioStadium.cpp @@ -237,7 +237,7 @@ void WarioStadium::MinimapFinishlinePosition() { (u8*) common_texture_minimap_finish_line); } -void render_WarioStadium_jumbotron() { +void WarioStadium::Jumbotron() { gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); gDPTileSync(gDisplayListHead++); gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, @@ -329,7 +329,7 @@ void WarioStadium::Render(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); - render_WarioStadium_jumbotron(); + WarioStadium::Jumbotron(); render_course_segments(wario_stadium_dls, arg0); // d_course_wario_stadium_packed_dl_A228 diff --git a/src/engine/courses/WarioStadium.h b/src/engine/courses/WarioStadium.h index 14707876e..088e81b72 100644 --- a/src/engine/courses/WarioStadium.h +++ b/src/engine/courses/WarioStadium.h @@ -4,32 +4,34 @@ #include "Course.h" extern "C" { - #include "assets/wario_stadium_vertices.h" - #include "assets/wario_stadium_displaylists.h" - #include "assets/wario_stadium_data.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - extern const course_texture wario_stadium_textures[]; +#include "assets/wario_stadium_vertices.h" +#include "assets/wario_stadium_displaylists.h" +#include "assets/wario_stadium_data.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +extern const course_texture wario_stadium_textures[]; } class WarioStadium : public Course { -public: - virtual ~WarioStadium() = default; // Virtual destructor for proper cleanup in derived classes + void Jumbotron(); + + public: + virtual ~WarioStadium() = default; // Virtual destructor for proper cleanup in derived classes // Constructor explicit WarioStadium(); -// virtual void Load(const char* courseVtx, -// course_texture* textures, const char* displaylists, size_t dlSize); + // virtual void Load(const char* courseVtx, + // course_texture* textures, const char* displaylists, size_t dlSize); virtual void Load() override; virtual void LoadTextures() override; virtual void SpawnActors() override; virtual void SpawnVehicles() override; virtual void InitClouds() override; - virtual void UpdateClouds(s32,Camera*) override; + virtual void UpdateClouds(s32, Camera*) override; virtual void MinimapSettings() override; virtual void InitCourseObjects() override; virtual void SomeSounds() override; @@ -37,10 +39,12 @@ public: virtual void WhatDoesThisDoAI(Player* player, int8_t playerId) override; virtual void MinimapFinishlinePosition() override; virtual void Render(struct UnkStruct_800DC5EC*) override; - virtual void RenderCredits() override; + virtual void RenderCredits() override; virtual void Collision() override; - virtual void SomeCollisionThing(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, f32* arg7) override; - virtual void DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection) override; + virtual void SomeCollisionThing(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, + f32* arg7) override; + virtual void DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, + uint16_t playerDirection) override; virtual void CreditsSpawnActors() override; virtual void Destroy() override; }; From 8bf89bf918dcfb671ee460d8c75419ce89cea434 Mon Sep 17 00:00:00 2001 From: coco875 Date: Sun, 5 Jan 2025 11:56:10 +0100 Subject: [PATCH 5/9] fix a warning --- include/macros.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/macros.h b/include/macros.h index 4676e7023..31240c89c 100644 --- a/include/macros.h +++ b/include/macros.h @@ -110,11 +110,13 @@ // Envelopes are always stored as big endian, to match sequence files which are // byte blobs and can embed envelopes. Hence this byteswapping macro. +#ifndef BSWAP16 #if IS_BIG_ENDIAN #define BSWAP16(x) (x) #else #define BSWAP16(x) (((x) & 0xff) << 8 | (((x) >> 8) & 0xff)) #endif +#endif /** * (u8*) dl : Cast array down to u8's From cec34fc79b52784d5e4f3c13fbc6b92b9f0a8423 Mon Sep 17 00:00:00 2001 From: coco875 Date: Sun, 5 Jan 2025 17:38:06 +0100 Subject: [PATCH 6/9] simplify load_menu_img_comp_type --- src/menu_items.c | 51 ++---------------------------------------------- src/menu_items.h | 12 ++++++------ 2 files changed, 8 insertions(+), 55 deletions(-) diff --git a/src/menu_items.c b/src/menu_items.c index f98a07e64..5830d68b7 100644 --- a/src/menu_items.c +++ b/src/menu_items.c @@ -3628,7 +3628,6 @@ void load_menu_img_mio0_forced(MenuTexture* addr) { } void load_menu_img_comp_type(MenuTexture* addr, s32 compType) { - u16 size; s32 i; s32 imgLoaded; u8 clearBit; @@ -3646,56 +3645,10 @@ void load_menu_img_comp_type(MenuTexture* addr, s32 compType) { } if ((imgLoaded == false) || (compType > LOAD_MENU_IMG_FORCE)) { - if (texAddr->size != 0) { - size = texAddr->size; - } else { - size = 0x1000; - } - if (size % 8) { - size = ((size / 8) * 8) + 8; - } - - // dma a compressed texture to the compressed texture buffer - switch (compType) { - case LOAD_MENU_IMG_MIO0_ONCE: - case LOAD_MENU_IMG_MIO0_FORCE: - // dma_compressed_mio0_texture_segA(texAddr->textureData, size, gMenuCompressedBuffer); - break; - case LOAD_MENU_IMG_TKMK00_ONCE: - case LOAD_MENU_IMG_TKMK00_FORCE: - // dma_tkmk00_textures(texAddr->textureData, size, gMenuCompressedBuffer); - break; - } - // Extract compressed texture to the texture buffer - switch (compType) { - case LOAD_MENU_IMG_MIO0_ONCE: - case LOAD_MENU_IMG_MIO0_FORCE: - mio0decode(gMenuCompressedBuffer, (u8*) &sMenuTextureList[sMenuTextureListIndex]); - // strcpy(&sMenuTextureList[sMenuTextureListIndex], texAddr->textureData); - load_texture(texAddr->textureData); - break; - case LOAD_MENU_IMG_TKMK00_ONCE: - case LOAD_MENU_IMG_TKMK00_FORCE: - if (texAddr->type == 1) { - clearBit = 0xBE; - } else { - clearBit = 1; - } - if (1) {} - tkmk00decode(gMenuCompressedBuffer, sTKMK00_LowResBuffer, - (u8*) &sMenuTextureList[sMenuTextureListIndex], clearBit); - load_texture(texAddr->textureData); + sMenuTextureList[sMenuTextureListIndex] = gMenuCompressedBuffer; - // strcpy(&sMenuTextureList[sMenuTextureListIndex], texAddr->textureData); - break; - } - - // texMap[sMenuTextureEntries].textureData = texAddr->textureData; - // texMap[sMenuTextureEntries].offset = sMenuTextureListIndex; - // sMenuTextureListIndex += 1; - // sMenuTextureListIndex = ((sMenuTextureListIndex / 8) * 8) + 8; - // sMenuTextureEntries += 1; + load_texture(texAddr->textureData); } texAddr++; } diff --git a/src/menu_items.h b/src/menu_items.h index a55baaafc..9feb688d6 100644 --- a/src/menu_items.h +++ b/src/menu_items.h @@ -26,9 +26,9 @@ it last longer See `func_80096CD8` for the actual drawing of the static */ typedef struct { - /* 0x00 */ s32 type; // id maybe? - /* 0x04 */ s32 state; // sound mode, maybe some other stuff - /* 0x08 */ s32 subState; // This is used but I can't tell what for + /* 0x00 */ s32 type; // id maybe? + /* 0x04 */ s32 state; // sound mode, maybe some other stuff + /* 0x08 */ s32 subState; // This is used but I can't tell what for /* 0x0C */ s32 column; /* 0x10 */ s32 row; /* 0x14 */ u8 priority; // priority/depth/z-level. Higher values are drawn on top of lower values @@ -37,11 +37,11 @@ typedef struct { // These seem to be generic space available for use by the struct, no 1 purpose for any given member /* 0x16 */ s16 unk16; // Potentially unused /* 0x18 */ s32 D_8018DEE0_index; // Index in D_8018DEE0, an array of some other struct type - /* 0x1C */ s32 param1; // Multi use. Sometimes cup selection, sometimes course index. + /* 0x1C */ s32 param1; // Multi use. Sometimes cup selection, sometimes course index. /* 0x20 */ s32 param2; // Multi use, hard to tell what for though. Sometimes a random number, sometimes GP points /* 0x24 */ f32 paramf; // Multi use, x scaling for some things, rotation multiplier for the question box in some - // menus, probably some other things -} MenuItem; // size = 0x28 + // menus, probably some other things +} MenuItem; // size = 0x28 typedef struct { /* 0x00 */ MkAnimation* textureSequence; From 96e8dcb5a95790c6e3985f39bdff2773badb3dc5 Mon Sep 17 00:00:00 2001 From: coco875 Date: Sun, 5 Jan 2025 19:02:50 +0100 Subject: [PATCH 7/9] remove gMenuCompressedBuffer --- src/code_8006E9C0.c | 1 - src/menu_items.c | 60 +-------------------------------------------- src/menu_items.h | 1 - 3 files changed, 1 insertion(+), 61 deletions(-) diff --git a/src/code_8006E9C0.c b/src/code_8006E9C0.c index 797b6085a..452536de9 100644 --- a/src/code_8006E9C0.c +++ b/src/code_8006E9C0.c @@ -177,7 +177,6 @@ void func_8006EF60(void) { s16 huh; u8* wut; - wut = gMenuCompressedBuffer + 0xFFFF0000; // clang-format off // God forgive me for my sins... huh = 0x14; if (0) {} for (i = 0; i < huh; i++) { D_8018D248[i] = CourseManager_GetProps()->MinimapTexture; wut += ResourceGetTexSizeByName(CourseManager_GetProps()->MinimapTexture); } diff --git a/src/menu_items.c b/src/menu_items.c index 5830d68b7..3519f8fce 100644 --- a/src/menu_items.c +++ b/src/menu_items.c @@ -53,7 +53,6 @@ const char* GetCupName(void); void guMtxCatL(Mtx* m, Mtx* n, Mtx* res); const char* sMenuTextureList[MENU_TEXTURE_BUFFER_MAX]; -u8* gMenuCompressedBuffer; u8* sTKMK00_LowResBuffer; u8* sGPPointsCopy; void* gSomeDLBuffer; @@ -1212,7 +1211,6 @@ void func_80091B78(void) { gNextFreeMemoryAddress = gFreeMemoryResetAnchor; // Hypothetically, this should be a ptr... But only hypothetically. // sMenuTextureList = get_next_available_memory_addr(0x000900B0); - gMenuCompressedBuffer = (u8*) get_next_available_memory_addr(0x0000CE00); sTKMK00_LowResBuffer = (u8*) get_next_available_memory_addr(SCREEN_WIDTH * SCREEN_HEIGHT); gSomeDLBuffer = (struct_8018EE10_entry*) get_next_available_memory_addr(0x00001000); func_800AF9B0(); @@ -1308,7 +1306,6 @@ void func_80091EE4(void) { void func_80091FA4(void) { s32 i; //! @todo These sizes need to be sizeof() for shiftability if possible - gMenuCompressedBuffer = (u8*) get_next_available_memory_addr(0x00002800); // sMenuTextureList = (u16*) get_next_available_memory_addr(0x000124F8); sTKMK00_LowResBuffer = (u8*) get_next_available_memory_addr(0x00001000); sGPPointsCopy = get_next_available_memory_addr(4); @@ -2120,7 +2117,6 @@ void func_80093E40(void) { void func_80093E60(void) { s32 i; - gMenuCompressedBuffer = get_next_available_memory_addr(0x00002800); // sMenuTextureList = (u16*) get_next_available_memory_addr(0x000124F8); sTKMK00_LowResBuffer = get_next_available_memory_addr(0x00001000); sGPPointsCopy = get_next_available_memory_addr(4U); @@ -3532,28 +3528,7 @@ void load_menu_img(MenuTexture* addr) { } if (imgLoaded == false) { - if (texAddr->type == 3) { - if (texAddr->size != 0) { - size = texAddr->size; - } else { - size = 0x1000; - } - if (size % 8) { - size = ((size / 8) * 8) + 8; - } - dma_compressed_mio0_texture_segA(texAddr->textureData, size, sMenuTextureList[sMenuTextureListIndex]); - mio0decode(gMenuCompressedBuffer, (u8*) &sMenuTextureList[sMenuTextureListIndex]); - load_texture(texAddr->textureData); - } else { - dma_compressed_mio0_texture_segA(texAddr->textureData, (texAddr->height * texAddr->width) * 2, - &sMenuTextureList[sMenuTextureListIndex]); - load_texture(texAddr->textureData); - } - // texMap[sMenuTextureEntries].textureData = texAddr->textureData; - // texMap[sMenuTextureEntries].offset = sMenuTextureListIndex; - // sMenuTextureListIndex += 1; - // sMenuTextureListIndex = ((sMenuTextureListIndex / 8) * 8) + 8; - // sMenuTextureEntries += 1; + load_texture(texAddr->textureData); } texAddr++; } @@ -3577,16 +3552,8 @@ void func_80099394(MenuTexture* addr) { if (imgLoaded == false) { if (texAddr->type == 5) { - dma_compressed_mio0_texture_segA(texAddr->textureData, - (u32) (((s32) (texAddr->height * texAddr->width)) / 2), - &sMenuTextureList[sMenuTextureListIndex]); load_texture(texAddr->textureData); } - // texMap[sMenuTextureEntries].textureData = texAddr->textureData; - // texMap[sMenuTextureEntries].offset = sMenuTextureListIndex; - // sMenuTextureListIndex += 1; - // sMenuTextureListIndex = ((sMenuTextureListIndex / 8) * 8) + 8; - // sMenuTextureEntries += 1; } texAddr++; } @@ -3609,9 +3576,6 @@ void func_8009952C(MenuTexture* addr) { } if (imgLoaded == false) { - dma_compressed_mio0_texture_segA(texAddr->textureData, 0x00008000U, - &sMenuTextureList[sMenuTextureListIndex]); - mio0decode(gMenuCompressedBuffer, (u8*) &sMenuTextureList[sMenuTextureListIndex]); load_texture(texAddr->textureData); // texMap[sMenuTextureEntries].textureData = texAddr->textureData; // texMap[sMenuTextureEntries].offset = sMenuTextureListIndex; @@ -3645,9 +3609,6 @@ void load_menu_img_comp_type(MenuTexture* addr, s32 compType) { } if ((imgLoaded == false) || (compType > LOAD_MENU_IMG_FORCE)) { - // Extract compressed texture to the texture buffer - sMenuTextureList[sMenuTextureListIndex] = gMenuCompressedBuffer; - load_texture(texAddr->textureData); } texAddr++; @@ -3669,9 +3630,6 @@ void func_80099958(MenuTexture* addr, s32 arg1, s32 arg2) { // Round up to the next multiple of eight size = ((size / 8) * 8) + 8; } - //! @warning This function does not increment sMenuTextureListIndex - dma_compressed_mio0_texture_segA(texAddr->textureData, size, gMenuCompressedBuffer); - mio0decode(gMenuCompressedBuffer, D_802BFB80.arraySize4[arg2][arg1 / 2][(arg1 % 2) + 2].pixel_index_array); load_texture(texAddr->textureData); texAddr++; } @@ -3730,7 +3688,6 @@ void func_80099AEC(void) { if (size % 8) { size = ((size / 8) * 8) + 8; } - osInvalDCache(gMenuCompressedBuffer, size); #ifdef TARGET_N64 osPiStartDma(&mb, 0, 0, (uintptr_t) &_textures_0aSegmentRomStart[SEGMENT_OFFSET(texAddr->textureData)], gMenuCompressedBuffer, size, &gDmaMesgQueue); @@ -3750,15 +3707,11 @@ void func_80099AEC(void) { if (size % 8) { size = ((size / 8) * 8) + 8; } - osInvalDCache(gMenuCompressedBuffer + bufSize * 4, size); #ifdef TARGET_N64 osPiStartDma(&mb, 0, 0, (uintptr_t) &_textures_0aSegmentRomStart[SEGMENT_OFFSET(texAddr->textureData)], gMenuCompressedBuffer + bufSize * 4, size, &gDmaMesgQueue); #endif } - mio0decode(gMenuCompressedBuffer, (u8*) &sMenuTextureList[sMenuTextureMap[var_s1->texNum].offset]); - // strcpy(&sMenuTextureList[sMenuTextureMap[var_s1->texNum].offset], var_s1->texture->textureData); - // sMenuTextureList[sMenuTextureMap[var_s1->texNum].offset] = var_s1->texture->textureData; replace_texture(var_s1->texNum, var_s1->texture->textureData); var_s1->texture = NULL; @@ -3779,14 +3732,11 @@ void func_80099AEC(void) { if (size % 8) { size = ((size / 8) * 8) + 8; } - osInvalDCache(gMenuCompressedBuffer, size); #ifdef TARGET_N64 osPiStartDma(&mb, 0, 0, (uintptr_t) &_textures_0aSegmentRomStart[SEGMENT_OFFSET(texAddr->textureData)], gMenuCompressedBuffer, size, &gDmaMesgQueue); #endif } - mio0decode(gMenuCompressedBuffer + bufSize * 4, - (u8*) &sMenuTextureList[sMenuTextureMap[var_s1->texNum].offset]); replace_texture(var_s1->texNum, var_s1->texture->textureData); var_s1->texture = NULL; var_s1++; @@ -3847,7 +3797,6 @@ void func_80099EC4(void) { if (var_s0 % 8) { var_s0 = ((var_s0 / 8) * 8) + 8; } - osInvalDCache(gMenuCompressedBuffer, var_s0); #ifdef TARGET_N64 test = &_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)]; osPiStartDma(&sp68, 0, 0, (uintptr_t) test, gMenuCompressedBuffer, var_s0, &gDmaMesgQueue); @@ -3870,7 +3819,6 @@ void func_80099EC4(void) { if (var_s0 % 8) { var_s0 = ((var_s0 / 8) * 8) + 8; } - osInvalDCache(gMenuCompressedBuffer + 0x1400, var_s0); #ifdef TARGET_N64 osPiStartDma(&sp68, 0, 0, (uintptr_t) &_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)], gMenuCompressedBuffer + 0x1400, var_s0, &gDmaMesgQueue); @@ -3901,7 +3849,6 @@ void func_80099EC4(void) { if (var_s0 % 8) { var_s0 = ((var_s0 / 8) * 8) + 8; } - osInvalDCache(gMenuCompressedBuffer, var_s0); #ifdef TARGET_N64 osPiStartDma(&sp68, 0, 0, (uintptr_t) &_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)], gMenuCompressedBuffer, var_s0, &gDmaMesgQueue); @@ -3937,12 +3884,7 @@ void func_8009A238(MenuTexture* arg0, s32 arg1) { if (var_a3 % 8) { var_a3 = ((var_a3 / 8) * 8) + 8; } - dma_tkmk00_textures(sp24, var_a3, gMenuCompressedBuffer); - // tkmk00decode(gMenuCompressedBuffer, sTKMK00_LowResBuffer, (u8*) &sMenuTextureList[temp_v1], 1); - // u8 *tex = (u8 *) LOAD_ASSET(arg0->textureData); - // size_t texSize = ResourceGetTexSizeByName(arg0->textureData); replace_texture(arg1, arg0->textureData); - // sMenuTextureMap[arg1].textureData = arg0->textureData; } void func_8009A2F0(struct_8018E0E8_entry* arg0) { diff --git a/src/menu_items.h b/src/menu_items.h index 9feb688d6..1fd3839f5 100644 --- a/src/menu_items.h +++ b/src/menu_items.h @@ -669,7 +669,6 @@ extern s16 D_80164478[]; * use `load_texture()` and `replace_texture()` to add textures to the list for rendering. */ extern const char* sMenuTextureList[MENU_TEXTURE_BUFFER_MAX]; -extern u8* gMenuCompressedBuffer; extern u8* sTKMK00_LowResBuffer; extern u8* sGPPointsCopy; extern void* gSomeDLBuffer; From 333d4e205345176958e64e0293ec732e845480f8 Mon Sep 17 00:00:00 2001 From: coco875 Date: Sun, 5 Jan 2025 19:11:29 +0100 Subject: [PATCH 8/9] remove unused function --- asm/tkmk00_decode.s | 544 -------------------------------------------- include/stubs.h | 1 - src/menu_items.c | 8 - src/menu_items.h | 3 - src/stubs.c | 5 - 5 files changed, 561 deletions(-) delete mode 100644 asm/tkmk00_decode.s diff --git a/asm/tkmk00_decode.s b/asm/tkmk00_decode.s deleted file mode 100644 index 2897489f7..000000000 --- a/asm/tkmk00_decode.s +++ /dev/null @@ -1,544 +0,0 @@ -# Mario Kart 64 (U) disassembly and split file -# generated by n64split v0.4a - N64 ROM splitter - -# assembler directives -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches -.set gp=64 - -.include "macros.inc" - -.section .text, "ax" - -glabel tkmk00decode -/* 0411D0 800405D0 23BDFC00 */ addi $sp, $sp, -0x400 -/* 0411D4 800405D4 AFB0019C */ sw $s0, 0x19c($sp) -/* 0411D8 800405D8 AFB10198 */ sw $s1, 0x198($sp) -/* 0411DC 800405DC AFB20194 */ sw $s2, 0x194($sp) -/* 0411E0 800405E0 AFB30190 */ sw $s3, 0x190($sp) -/* 0411E4 800405E4 AFB4018C */ sw $s4, 0x18c($sp) -/* 0411E8 800405E8 AFB50188 */ sw $s5, 0x188($sp) -/* 0411EC 800405EC AFB60184 */ sw $s6, 0x184($sp) -/* 0411F0 800405F0 AFB70180 */ sw $s7, 0x180($sp) -/* 0411F4 800405F4 AFBF017C */ sw $ra, 0x17c($sp) -/* 0411F8 800405F8 948C0008 */ lhu $t4, 8($a0) -/* 0411FC 800405FC 948B000A */ lhu $t3, 0xa($a0) -/* 041200 80040600 00E09025 */ move $s2, $a3 -/* 041204 80040604 908A0006 */ lbu $t2, 6($a0) -/* 041208 80040608 2418FFFF */ li $t8, -1 -/* 04120C 8004060C 03A0C825 */ move $t9, $sp -/* 041210 80040610 24170020 */ li $s7, 32 -/* 041214 80040614 018B0018 */ mult $t4, $t3 -.L80040618: -/* 041218 80040618 22F7FFFF */ addi $s7, $s7, -1 -/* 04121C 8004061C AF380000 */ sw $t8, ($t9) -/* 041220 80040620 16E0FFFD */ bnez $s7, .L80040618 -/* 041224 80040624 23390004 */ addi $t9, $t9, 4 -/* 041228 80040628 00004012 */ mflo $t0 -/* 04122C 8004062C 0100A025 */ move $s4, $t0 -/* 041230 80040630 00C0B025 */ move $s6, $a2 -.L80040634: -/* 041234 80040634 2294FFFE */ addi $s4, $s4, -2 -/* 041238 80040638 AEC00000 */ sw $zero, ($s6) -/* 04123C 8004063C 1E80FFFD */ bgtz $s4, .L80040634 -/* 041240 80040640 22D60004 */ addi $s6, $s6, 4 -/* 041244 80040644 0100B825 */ move $s7, $t0 -/* 041248 80040648 00A0C025 */ move $t8, $a1 -.L8004064C: -/* 04124C 8004064C 22F7FFFC */ addi $s7, $s7, -4 -/* 041250 80040650 AF000000 */ sw $zero, ($t8) -/* 041254 80040654 1EE0FFFD */ bgtz $s7, .L8004064C -/* 041258 80040658 23180004 */ addi $t8, $t8, 4 -/* 04125C 8004065C 23B401C0 */ addi $s4, $sp, 0x1c0 -/* 041260 80040660 24160008 */ li $s6, 8 -/* 041264 80040664 2087000C */ addi $a3, $a0, 0xc -/* 041268 80040668 0140A825 */ move $s5, $t2 -.L8004066C: -/* 04126C 8004066C 8CF70000 */ lw $s7, ($a3) -/* 041270 80040670 32A20001 */ andi $v0, $s5, 1 -/* 041274 80040674 14400002 */ bnez $v0, .L80040680 -/* 041278 80040678 02E4B820 */ add $s7, $s7, $a0 -/* 04127C 8004067C 22F7FFFC */ addi $s7, $s7, -4 -.L80040680: -/* 041280 80040680 22D6FFFF */ addi $s6, $s6, -1 -/* 041284 80040684 0015A842 */ srl $s5, $s5, 1 -/* 041288 80040688 AE970000 */ sw $s7, ($s4) -/* 04128C 8004068C 20E70004 */ addi $a3, $a3, 4 -/* 041290 80040690 16C0FFF6 */ bnez $s6, .L8004066C -/* 041294 80040694 22940004 */ addi $s4, $s4, 4 -/* 041298 80040698 AFA001E0 */ sw $zero, 0x1e0($sp) -/* 04129C 8004069C AFA001E4 */ sw $zero, 0x1e4($sp) -/* 0412A0 800406A0 AFA001E8 */ sw $zero, 0x1e8($sp) -/* 0412A4 800406A4 AFA001EC */ sw $zero, 0x1ec($sp) -/* 0412A8 800406A8 03A09825 */ move $s3, $sp -/* 0412AC 800406AC 00003825 */ move $a3, $zero -/* 0412B0 800406B0 8C88002C */ lw $t0, 0x2c($a0) -/* 0412B4 800406B4 20840030 */ addi $a0, $a0, 0x30 -/* 0412B8 800406B8 227303F0 */ addi $s3, $s3, 0x3f0 -/* 0412BC 800406BC 04110140 */ bal func_80040BC0 -/* 0412C0 800406C0 24140020 */ li $s4, 32 -/* 0412C4 800406C4 00404825 */ move $t1, $v0 -/* 0412C8 800406C8 00006825 */ move $t5, $zero -/* 0412CC 800406CC 00007025 */ move $t6, $zero -/* 0412D0 800406D0 00007825 */ move $t7, $zero -.L800406D4: -/* 0412D4 800406D4 94D90000 */ lhu $t9, ($a2) -/* 0412D8 800406D8 53200008 */ beql $t9, $zero, .L800406FC -/* 0412DC 800406DC 80A30000 */ lb $v1, ($a1) -/* 0412E0 800406E0 3333FFFE */ andi $s3, $t9, 0xfffe -/* 0412E4 800406E4 167200CC */ bne $s3, $s2, .L80040A18 -/* 0412E8 800406E8 03207825 */ move $t7, $t9 -/* 0412EC 800406EC A4D30000 */ sh $s3, ($a2) -/* 0412F0 800406F0 100000C9 */ b .L80040A18 -/* 0412F4 800406F4 02607825 */ move $t7, $s3 -/* 0412F8 800406F8 80A30000 */ lb $v1, ($a1) -.L800406FC: -/* 0412FC 800406FC 041100F2 */ bal func_80040AC8 -/* 041300 80040700 20630001 */ addi $v1, $v1, 1 -/* 041304 80040704 14400003 */ bnez $v0, .L80040714 -/* 041308 80040708 00000000 */ nop -/* 04130C 8004070C 100000C2 */ b .L80040A18 -/* 041310 80040710 A4CF0000 */ sh $t7, ($a2) -.L80040714: -/* 041314 80040714 041100D2 */ bal func_80040A60 -/* 041318 80040718 24030001 */ li $v1, 1 -/* 04131C 8004071C 10400050 */ beqz $v0, .L80040860 -/* 041320 80040720 00000000 */ nop -/* 041324 80040724 0411014B */ bal func_80040C54 -/* 041328 80040728 00000000 */ nop -/* 04132C 8004072C 04110149 */ bal func_80040C54 -/* 041330 80040730 02808025 */ move $s0, $s4 -/* 041334 80040734 04110147 */ bal func_80040C54 -/* 041338 80040738 02808825 */ move $s1, $s4 -/* 04133C 8004073C 0000A825 */ move $s5, $zero -/* 041340 80040740 11C00006 */ beqz $t6, .L8004075C -/* 041344 80040744 0000B025 */ move $s6, $zero -/* 041348 80040748 000C9840 */ sll $s3, $t4, 1 -/* 04134C 8004074C 00D3C822 */ sub $t9, $a2, $s3 -/* 041350 80040750 97350000 */ lhu $s5, ($t9) -/* 041354 80040754 10000004 */ b .L80040768 -/* 041358 80040758 94D6FFFE */ lhu $s6, -2($a2) -.L8004075C: -/* 04135C 8004075C 51A00003 */ beql $t5, $zero, .L8004076C -/* 041360 80040760 32B807C0 */ andi $t8, $s5, 0x7c0 -/* 041364 80040764 94D6FFFE */ lhu $s6, -2($a2) -.L80040768: -/* 041368 80040768 32B807C0 */ andi $t8, $s5, 0x7c0 -.L8004076C: -/* 04136C 8004076C 32D907C0 */ andi $t9, $s6, 0x7c0 -/* 041370 80040770 0018C182 */ srl $t8, $t8, 6 -/* 041374 80040774 0019C982 */ srl $t9, $t9, 6 -/* 041378 80040778 0319C020 */ add $t8, $t8, $t9 -/* 04137C 8004077C 0018C042 */ srl $t8, $t8, 1 -/* 041380 80040780 04110144 */ bal func_80040C94 -/* 041384 80040784 0200C825 */ move $t9, $s0 -/* 041388 80040788 03381822 */ sub $v1, $t9, $t8 -/* 04138C 8004078C 03208025 */ move $s0, $t9 -/* 041390 80040790 32B8F800 */ andi $t8, $s5, 0xf800 -/* 041394 80040794 32D9F800 */ andi $t9, $s6, 0xf800 -/* 041398 80040798 0018C2C2 */ srl $t8, $t8, 0xb -/* 04139C 8004079C 0019CAC2 */ srl $t9, $t9, 0xb -/* 0413A0 800407A0 0319C020 */ add $t8, $t8, $t9 -/* 0413A4 800407A4 0018C042 */ srl $t8, $t8, 1 -/* 0413A8 800407A8 0303C020 */ add $t8, $t8, $v1 -/* 0413AC 800407AC 2B010020 */ slti $at, $t8, 0x20 -/* 0413B0 800407B0 14200003 */ bnez $at, .L800407C0 -/* 0413B4 800407B4 00000000 */ nop -/* 0413B8 800407B8 10000004 */ b .L800407CC -/* 0413BC 800407BC 2418001F */ li $t8, 31 -.L800407C0: -/* 0413C0 800407C0 07010002 */ bgez $t8, .L800407CC -/* 0413C4 800407C4 00000000 */ nop -/* 0413C8 800407C8 0000C025 */ move $t8, $zero -.L800407CC: -/* 0413CC 800407CC 04110131 */ bal func_80040C94 -/* 0413D0 800407D0 0220C825 */ move $t9, $s1 -/* 0413D4 800407D4 03208825 */ move $s1, $t9 -/* 0413D8 800407D8 32B8003E */ andi $t8, $s5, 0x3e -/* 0413DC 800407DC 32D9003E */ andi $t9, $s6, 0x3e -/* 0413E0 800407E0 0018C042 */ srl $t8, $t8, 1 -/* 0413E4 800407E4 0019C842 */ srl $t9, $t9, 1 -/* 0413E8 800407E8 0319C020 */ add $t8, $t8, $t9 -/* 0413EC 800407EC 0018C042 */ srl $t8, $t8, 1 -/* 0413F0 800407F0 0303C020 */ add $t8, $t8, $v1 -/* 0413F4 800407F4 2B010020 */ slti $at, $t8, 0x20 -/* 0413F8 800407F8 14200003 */ bnez $at, .L80040808 -/* 0413FC 800407FC 00000000 */ nop -/* 041400 80040800 10000004 */ b .L80040814 -/* 041404 80040804 2418001F */ li $t8, 31 -.L80040808: -/* 041408 80040808 07010002 */ bgez $t8, .L80040814 -/* 04140C 8004080C 00000000 */ nop -/* 041410 80040810 0000C025 */ move $t8, $zero -.L80040814: -/* 041414 80040814 0411011F */ bal func_80040C94 -/* 041418 80040818 0280C825 */ move $t9, $s4 -/* 04141C 8004081C 00108180 */ sll $s0, $s0, 6 -/* 041420 80040820 00118AC0 */ sll $s1, $s1, 0xb -/* 041424 80040824 0019C840 */ sll $t9, $t9, 1 -/* 041428 80040828 0211C025 */ or $t8, $s0, $s1 -/* 04142C 8004082C 03197825 */ or $t7, $t8, $t9 -/* 041430 80040830 51F20003 */ beql $t7, $s2, .L80040840 -/* 041434 80040834 2415003F */ li $s5, 63 -/* 041438 80040838 35EF0001 */ ori $t7, $t7, 1 -/* 04143C 8004083C 2415003F */ li $s5, 63 -.L80040840: -/* 041440 80040840 23B6007C */ addi $s6, $sp, 0x7c -.L80040844: -/* 041444 80040844 86D70000 */ lh $s7, ($s6) -/* 041448 80040848 22B5FFFF */ addi $s5, $s5, -1 -/* 04144C 8004084C 22D6FFFE */ addi $s6, $s6, -2 -/* 041450 80040850 16A0FFFC */ bnez $s5, .L80040844 -/* 041454 80040854 A6D70004 */ sh $s7, 4($s6) -/* 041458 80040858 1000000C */ b .L8004088C -/* 04145C 8004085C A6CF0002 */ sh $t7, 2($s6) -.L80040860: -/* 041460 80040860 0411007F */ bal func_80040A60 -/* 041464 80040864 24030006 */ li $v1, 6 -/* 041468 80040868 00021040 */ sll $v0, $v0, 1 -/* 04146C 8004086C 03A2B020 */ add $s6, $sp, $v0 -/* 041470 80040870 10400006 */ beqz $v0, .L8004088C -/* 041474 80040874 96CF0000 */ lhu $t7, ($s6) -.L80040878: -/* 041478 80040878 86D7FFFE */ lh $s7, -2($s6) -/* 04147C 8004087C 22D6FFFE */ addi $s6, $s6, -2 -/* 041480 80040880 16DDFFFD */ bne $s6, $sp, .L80040878 -/* 041484 80040884 A6D70002 */ sh $s7, 2($s6) -/* 041488 80040888 A6CF0000 */ sh $t7, ($s6) -.L8004088C: -/* 04148C 8004088C A4CF0000 */ sh $t7, ($a2) -/* 041490 80040890 11A00002 */ beqz $t5, .L8004089C -/* 041494 80040894 0000C825 */ move $t9, $zero -/* 041498 80040898 37390001 */ ori $t9, $t9, 1 -.L8004089C: -/* 04149C 8004089C 2195FFFF */ addi $s5, $t4, -1 -/* 0414A0 800408A0 01B5082A */ slt $at, $t5, $s5 -/* 0414A4 800408A4 50200003 */ beql $at, $zero, .L800408B4 -/* 0414A8 800408A8 2196FFFE */ addi $s6, $t4, -2 -/* 0414AC 800408AC 37390002 */ ori $t9, $t9, 2 -/* 0414B0 800408B0 2196FFFE */ addi $s6, $t4, -2 -.L800408B4: -/* 0414B4 800408B4 01B6082A */ slt $at, $t5, $s6 -/* 0414B8 800408B8 50200003 */ beql $at, $zero, .L800408C8 -/* 0414BC 800408BC 2175FFFF */ addi $s5, $t3, -1 -/* 0414C0 800408C0 37390004 */ ori $t9, $t9, 4 -/* 0414C4 800408C4 2175FFFF */ addi $s5, $t3, -1 -.L800408C8: -/* 0414C8 800408C8 01D5082A */ slt $at, $t6, $s5 -/* 0414CC 800408CC 50200003 */ beql $at, $zero, .L800408DC -/* 0414D0 800408D0 2176FFFE */ addi $s6, $t3, -2 -/* 0414D4 800408D4 37390008 */ ori $t9, $t9, 8 -/* 0414D8 800408D8 2176FFFE */ addi $s6, $t3, -2 -.L800408DC: -/* 0414DC 800408DC 01D6082A */ slt $at, $t6, $s6 -/* 0414E0 800408E0 50200003 */ beql $at, $zero, .L800408F0 -/* 0414E4 800408E4 33370002 */ andi $s7, $t9, 2 -/* 0414E8 800408E8 37390010 */ ori $t9, $t9, 0x10 -/* 0414EC 800408EC 33370002 */ andi $s7, $t9, 2 -.L800408F0: -/* 0414F0 800408F0 24010002 */ li $at, 2 -/* 0414F4 800408F4 56E10005 */ bnel $s7, $at, .L8004090C -/* 0414F8 800408F8 33360004 */ andi $s6, $t9, 4 -/* 0414FC 800408FC 90B40001 */ lbu $s4, 1($a1) -/* 041500 80040900 22940001 */ addi $s4, $s4, 1 -/* 041504 80040904 A0B40001 */ sb $s4, 1($a1) -/* 041508 80040908 33360004 */ andi $s6, $t9, 4 -.L8004090C: -/* 04150C 8004090C 24010004 */ li $at, 4 -/* 041510 80040910 56C10005 */ bnel $s6, $at, .L80040928 -/* 041514 80040914 33370009 */ andi $s7, $t9, 9 -/* 041518 80040918 90B40002 */ lbu $s4, 2($a1) -/* 04151C 8004091C 22940001 */ addi $s4, $s4, 1 -/* 041520 80040920 A0B40002 */ sb $s4, 2($a1) -/* 041524 80040924 33370009 */ andi $s7, $t9, 9 -.L80040928: -/* 041528 80040928 24010009 */ li $at, 9 -/* 04152C 8004092C 16E10004 */ bne $s7, $at, .L80040940 -/* 041530 80040930 00ACA820 */ add $s5, $a1, $t4 -/* 041534 80040934 92B4FFFF */ lbu $s4, -1($s5) -/* 041538 80040938 22940001 */ addi $s4, $s4, 1 -/* 04153C 8004093C A2B4FFFF */ sb $s4, -1($s5) -.L80040940: -/* 041540 80040940 33360008 */ andi $s6, $t9, 8 -/* 041544 80040944 24010008 */ li $at, 8 -/* 041548 80040948 56C10005 */ bnel $s6, $at, .L80040960 -/* 04154C 8004094C 3337000A */ andi $s7, $t9, 0xa -/* 041550 80040950 92B40000 */ lbu $s4, ($s5) -/* 041554 80040954 22940001 */ addi $s4, $s4, 1 -/* 041558 80040958 A2B40000 */ sb $s4, ($s5) -/* 04155C 8004095C 3337000A */ andi $s7, $t9, 0xa -.L80040960: -/* 041560 80040960 2401000A */ li $at, 10 -/* 041564 80040964 56E10005 */ bnel $s7, $at, .L8004097C -/* 041568 80040968 33370010 */ andi $s7, $t9, 0x10 -/* 04156C 8004096C 92B40001 */ lbu $s4, 1($s5) -/* 041570 80040970 22940001 */ addi $s4, $s4, 1 -/* 041574 80040974 A2B40001 */ sb $s4, 1($s5) -/* 041578 80040978 33370010 */ andi $s7, $t9, 0x10 -.L8004097C: -/* 04157C 8004097C 24010010 */ li $at, 16 -/* 041580 80040980 16E10004 */ bne $s7, $at, .L80040994 -/* 041584 80040984 02ACB020 */ add $s6, $s5, $t4 -/* 041588 80040988 92D40000 */ lbu $s4, ($s6) -/* 04158C 8004098C 22940001 */ addi $s4, $s4, 1 -/* 041590 80040990 A2D40000 */ sb $s4, ($s6) -.L80040994: -/* 041594 80040994 04110032 */ bal func_80040A60 -/* 041598 80040998 24030001 */ li $v1, 1 -/* 04159C 8004099C 5040001F */ beql $v0, $zero, .L80040A1C -/* 0415A0 800409A0 21AD0001 */ addi $t5, $t5, 1 -/* 0415A4 800409A4 00C08825 */ move $s1, $a2 -/* 0415A8 800409A8 000C8040 */ sll $s0, $t4, 1 -/* 0415AC 800409AC 35F30001 */ ori $s3, $t7, 1 -.L800409B0: -/* 0415B0 800409B0 0411002B */ bal func_80040A60 -/* 0415B4 800409B4 24030002 */ li $v1, 2 -/* 0415B8 800409B8 5440000C */ bnel $v0, $zero, .L800409EC -/* 0415BC 800409BC 24010001 */ li $at, 1 -/* 0415C0 800409C0 04110027 */ bal func_80040A60 -/* 0415C4 800409C4 24030001 */ li $v1, 1 -/* 0415C8 800409C8 50400014 */ beql $v0, $zero, .L80040A1C -/* 0415CC 800409CC 21AD0001 */ addi $t5, $t5, 1 -/* 0415D0 800409D0 04110023 */ bal func_80040A60 -/* 0415D4 800409D4 24030001 */ li $v1, 1 -/* 0415D8 800409D8 1440000C */ bnez $v0, .L80040A0C -/* 0415DC 800409DC 22310004 */ addi $s1, $s1, 4 -/* 0415E0 800409E0 1000000A */ b .L80040A0C -/* 0415E4 800409E4 2231FFF8 */ addi $s1, $s1, -8 -/* 0415E8 800409E8 24010001 */ li $at, 1 -.L800409EC: -/* 0415EC 800409EC 54410004 */ bnel $v0, $at, .L80040A00 -/* 0415F0 800409F0 24010003 */ li $at, 3 -/* 0415F4 800409F4 10000005 */ b .L80040A0C -/* 0415F8 800409F8 2231FFFE */ addi $s1, $s1, -2 -/* 0415FC 800409FC 24010003 */ li $at, 3 -.L80040A00: -/* 041600 80040A00 54410003 */ bnel $v0, $at, .L80040A10 -/* 041604 80040A04 02308820 */ add $s1, $s1, $s0 -/* 041608 80040A08 22310002 */ addi $s1, $s1, 2 -.L80040A0C: -/* 04160C 80040A0C 02308820 */ add $s1, $s1, $s0 -.L80040A10: -/* 041610 80040A10 1000FFE7 */ b .L800409B0 -/* 041614 80040A14 A6330000 */ sh $s3, ($s1) -.L80040A18: -/* 041618 80040A18 21AD0001 */ addi $t5, $t5, 1 -.L80040A1C: -/* 04161C 80040A1C 20A50001 */ addi $a1, $a1, 1 -/* 041620 80040A20 15ACFF2C */ bne $t5, $t4, .L800406D4 -/* 041624 80040A24 20C60002 */ addi $a2, $a2, 2 -/* 041628 80040A28 21CE0001 */ addi $t6, $t6, 1 -/* 04162C 80040A2C 15CBFF29 */ bne $t6, $t3, .L800406D4 -/* 041630 80040A30 00006825 */ move $t5, $zero -/* 041634 80040A34 8FBF017C */ lw $ra, 0x17c($sp) -/* 041638 80040A38 8FB70180 */ lw $s7, 0x180($sp) -/* 04163C 80040A3C 8FB60184 */ lw $s6, 0x184($sp) -/* 041640 80040A40 8FB50188 */ lw $s5, 0x188($sp) -/* 041644 80040A44 8FB4018C */ lw $s4, 0x18c($sp) -/* 041648 80040A48 8FB30190 */ lw $s3, 0x190($sp) -/* 04164C 80040A4C 8FB20194 */ lw $s2, 0x194($sp) -/* 041650 80040A50 8FB10198 */ lw $s1, 0x198($sp) -/* 041654 80040A54 8FB0019C */ lw $s0, 0x19c($sp) -/* 041658 80040A58 03E00008 */ jr $ra -/* 04165C 80040A5C 23BD0400 */ addi $sp, $sp, 0x400 - -glabel func_80040A60 -/* 041660 80040A60 00E3C820 */ add $t9, $a3, $v1 -/* 041664 80040A64 24180020 */ li $t8, 32 -/* 041668 80040A68 0303C022 */ sub $t8, $t8, $v1 -/* 04166C 80040A6C 2B210021 */ slti $at, $t9, 0x21 -/* 041670 80040A70 1020000B */ beqz $at, .L80040AA0 -/* 041674 80040A74 03081006 */ srlv $v0, $t0, $t8 -/* 041678 80040A78 24010020 */ li $at, 32 -/* 04167C 80040A7C 53210005 */ beql $t9, $at, .L80040A94 -/* 041680 80040A80 8C880000 */ lw $t0, ($a0) -/* 041684 80040A84 00684004 */ sllv $t0, $t0, $v1 -/* 041688 80040A88 03E00008 */ jr $ra -/* 04168C 80040A8C 00E33820 */ add $a3, $a3, $v1 - -/* 041690 80040A90 8C880000 */ lw $t0, ($a0) -.L80040A94: -/* 041694 80040A94 00003825 */ move $a3, $zero -/* 041698 80040A98 03E00008 */ jr $ra -/* 04169C 80040A9C 20840004 */ addi $a0, $a0, 4 - -.L80040AA0: -/* 0416A0 80040AA0 24190040 */ li $t9, 64 -/* 0416A4 80040AA4 8C880000 */ lw $t0, ($a0) -/* 0416A8 80040AA8 0323C822 */ sub $t9, $t9, $v1 -/* 0416AC 80040AAC 0327C822 */ sub $t9, $t9, $a3 -/* 0416B0 80040AB0 00F83822 */ sub $a3, $a3, $t8 -/* 0416B4 80040AB4 0328C006 */ srlv $t8, $t0, $t9 -/* 0416B8 80040AB8 00581025 */ or $v0, $v0, $t8 -/* 0416BC 80040ABC 20840004 */ addi $a0, $a0, 4 -/* 0416C0 80040AC0 03E00008 */ jr $ra -/* 0416C4 80040AC4 00E84004 */ sllv $t0, $t0, $a3 - -glabel func_80040AC8 -/* 0416C8 80040AC8 006AC006 */ srlv $t8, $t2, $v1 -/* 0416CC 80040ACC 33190001 */ andi $t9, $t8, 1 -/* 0416D0 80040AD0 0003B840 */ sll $s7, $v1, 1 -/* 0416D4 80040AD4 03B7C020 */ add $t8, $sp, $s7 -/* 0416D8 80040AD8 1720000E */ bnez $t9, .L80040B14 -/* 0416DC 80040ADC 971701E0 */ lhu $s7, 0x1e0($t8) -/* 0416E0 80040AE0 0003C880 */ sll $t9, $v1, 2 -/* 0416E4 80040AE4 033DC820 */ add $t9, $t9, $sp -/* 0416E8 80040AE8 16E00004 */ bnez $s7, .L80040AFC -/* 0416EC 80040AEC 8F3601C0 */ lw $s6, 0x1c0($t9) -/* 0416F0 80040AF0 22D60004 */ addi $s6, $s6, 4 -/* 0416F4 80040AF4 24170020 */ li $s7, 32 -/* 0416F8 80040AF8 AF3601C0 */ sw $s6, 0x1c0($t9) -.L80040AFC: -/* 0416FC 80040AFC 8ED90000 */ lw $t9, ($s6) -/* 041700 80040B00 22F7FFFF */ addi $s7, $s7, -1 -/* 041704 80040B04 A71701E0 */ sh $s7, 0x1e0($t8) -/* 041708 80040B08 02F91006 */ srlv $v0, $t9, $s7 -/* 04170C 80040B0C 03E00008 */ jr $ra -/* 041710 80040B10 30420001 */ andi $v0, $v0, 1 - -.L80040B14: -/* 041714 80040B14 0003C880 */ sll $t9, $v1, 2 -/* 041718 80040B18 033DC820 */ add $t9, $t9, $sp -/* 04171C 80040B1C 03A3A820 */ add $s5, $sp, $v1 -/* 041720 80040B20 16E00013 */ bnez $s7, .L80040B70 -/* 041724 80040B24 8F3601C0 */ lw $s6, 0x1c0($t9) -/* 041728 80040B28 82D70000 */ lb $s7, ($s6) -/* 04172C 80040B2C 24020100 */ li $v0, 256 -/* 041730 80040B30 06E20007 */ bltzl $s7, .L80040B50 -/* 041734 80040B34 00621004 */ sllv $v0, $v0, $v1 -/* 041738 80040B38 00621004 */ sllv $v0, $v0, $v1 -/* 04173C 80040B3C 00401027 */ not $v0, $v0 -/* 041740 80040B40 22F70003 */ addi $s7, $s7, 3 -/* 041744 80040B44 10000005 */ b .L80040B5C -/* 041748 80040B48 01425024 */ and $t2, $t2, $v0 -/* 04174C 80040B4C 00621004 */ sllv $v0, $v0, $v1 -.L80040B50: -/* 041750 80040B50 32F7007F */ andi $s7, $s7, 0x7f -/* 041754 80040B54 22F70001 */ addi $s7, $s7, 1 -/* 041758 80040B58 01425025 */ or $t2, $t2, $v0 -.L80040B5C: -/* 04175C 80040B5C 92C20001 */ lbu $v0, 1($s6) -/* 041760 80040B60 22D60002 */ addi $s6, $s6, 2 -/* 041764 80040B64 0017B8C0 */ sll $s7, $s7, 3 -/* 041768 80040B68 A2A201A0 */ sb $v0, 0x1a0($s5) -/* 04176C 80040B6C AF3601C0 */ sw $s6, 0x1c0($t9) -.L80040B70: -/* 041770 80040B70 92A201A0 */ lbu $v0, 0x1a0($s5) -/* 041774 80040B74 22F7FFFF */ addi $s7, $s7, -1 -/* 041778 80040B78 A71701E0 */ sh $s7, 0x1e0($t8) -/* 04177C 80040B7C 32F80007 */ andi $t8, $s7, 7 -/* 041780 80040B80 03021006 */ srlv $v0, $v0, $t8 -/* 041784 80040B84 1700000C */ bnez $t8, .L80040BB8 -/* 041788 80040B88 30420001 */ andi $v0, $v0, 1 -/* 04178C 80040B8C 12E0000A */ beqz $s7, .L80040BB8 -/* 041790 80040B90 00000000 */ nop -/* 041794 80040B94 24180100 */ li $t8, 256 -/* 041798 80040B98 0078B804 */ sllv $s7, $t8, $v1 -/* 04179C 80040B9C 02EAB824 */ and $s7, $s7, $t2 -/* 0417A0 80040BA0 12E00005 */ beqz $s7, .L80040BB8 -/* 0417A4 80040BA4 00000000 */ nop -/* 0417A8 80040BA8 92D70000 */ lbu $s7, ($s6) -/* 0417AC 80040BAC 22D60001 */ addi $s6, $s6, 1 -/* 0417B0 80040BB0 A2B701A0 */ sb $s7, 0x1a0($s5) -/* 0417B4 80040BB4 AF3601C0 */ sw $s6, 0x1c0($t9) -.L80040BB8: -/* 0417B8 80040BB8 03E00008 */ jr $ra -/* 0417BC 80040BBC 00000000 */ nop - -glabel func_80040BC0 -/* 0417C0 80040BC0 AE7FFFF8 */ sw $ra, -8($s3) -/* 0417C4 80040BC4 2273FFF8 */ addi $s3, $s3, -8 -/* 0417C8 80040BC8 0411FFBF */ bal func_80040AC8 -/* 0417CC 80040BCC 00001825 */ move $v1, $zero -/* 0417D0 80040BD0 50400014 */ beql $v0, $zero, .L80040C24 -/* 0417D4 80040BD4 00008025 */ move $s0, $zero -/* 0417D8 80040BD8 AE740004 */ sw $s4, 4($s3) -/* 0417DC 80040BDC 0411FFF8 */ bal func_80040BC0 -/* 0417E0 80040BE0 22940001 */ addi $s4, $s4, 1 -/* 0417E4 80040BE4 8E750004 */ lw $s5, 4($s3) -/* 0417E8 80040BE8 0015A840 */ sll $s5, $s5, 1 -/* 0417EC 80040BEC 02BDA820 */ add $s5, $s5, $sp -/* 0417F0 80040BF0 0411FFF3 */ bal func_80040BC0 -/* 0417F4 80040BF4 A6A20080 */ sh $v0, 0x80($s5) -/* 0417F8 80040BF8 8E750004 */ lw $s5, 4($s3) -/* 0417FC 80040BFC 22730008 */ addi $s3, $s3, 8 -/* 041800 80040C00 02A0B025 */ move $s6, $s5 -/* 041804 80040C04 0015A840 */ sll $s5, $s5, 1 -/* 041808 80040C08 02BDA820 */ add $s5, $s5, $sp -/* 04180C 80040C0C A6A200FE */ sh $v0, 0xfe($s5) -/* 041810 80040C10 8E7FFFF8 */ lw $ra, -8($s3) -/* 041814 80040C14 02C01025 */ move $v0, $s6 -/* 041818 80040C18 03E00008 */ jr $ra -/* 04181C 80040C1C 00000000 */ nop - -/* 041820 80040C20 00008025 */ move $s0, $zero -.L80040C24: -/* 041824 80040C24 24110005 */ li $s1, 5 -.L80040C28: -/* 041828 80040C28 0411FFA7 */ bal func_80040AC8 -/* 04182C 80040C2C 00001825 */ move $v1, $zero -/* 041830 80040C30 00108040 */ sll $s0, $s0, 1 -/* 041834 80040C34 2231FFFF */ addi $s1, $s1, -1 -/* 041838 80040C38 1620FFFB */ bnez $s1, .L80040C28 -/* 04183C 80040C3C 02028020 */ add $s0, $s0, $v0 -/* 041840 80040C40 8E7F0000 */ lw $ra, ($s3) -/* 041844 80040C44 22730008 */ addi $s3, $s3, 8 -/* 041848 80040C48 02001025 */ move $v0, $s0 -/* 04184C 80040C4C 03E00008 */ jr $ra -/* 041850 80040C50 00000000 */ nop - -glabel func_80040C54 -/* 041854 80040C54 0120A025 */ move $s4, $t1 -/* 041858 80040C58 03E09825 */ move $s3, $ra -.L80040C5C: -/* 04185C 80040C5C 2A810020 */ slti $at, $s4, 0x20 -/* 041860 80040C60 1420000A */ bnez $at, .L80040C8C -/* 041864 80040C64 00000000 */ nop -/* 041868 80040C68 0411FF97 */ bal func_80040AC8 -/* 04186C 80040C6C 00001825 */ move $v1, $zero -/* 041870 80040C70 00141840 */ sll $v1, $s4, 1 -/* 041874 80040C74 14400003 */ bnez $v0, .L80040C84 -/* 041878 80040C78 03A3C020 */ add $t8, $sp, $v1 -/* 04187C 80040C7C 1000FFF7 */ b .L80040C5C -/* 041880 80040C80 87140080 */ lh $s4, 0x80($t8) -.L80040C84: -/* 041884 80040C84 1000FFF5 */ b .L80040C5C -/* 041888 80040C88 871400FE */ lh $s4, 0xfe($t8) -.L80040C8C: -/* 04188C 80040C8C 02600008 */ jr $s3 -/* 041890 80040C90 00000000 */ nop -glabel func_80040C94 -/* 041894 80040C94 2B010010 */ slti $at, $t8, 0x10 -/* 041898 80040C98 54200013 */ bnel $at, $zero, .L80040CE8 -/* 04189C 80040C9C 00181040 */ sll $v0, $t8, 1 -/* 0418A0 80040CA0 2402001F */ li $v0, 31 -/* 0418A4 80040CA4 00581022 */ sub $v0, $v0, $t8 -/* 0418A8 80040CA8 00021040 */ sll $v0, $v0, 1 -/* 0418AC 80040CAC 0059082A */ slt $at, $v0, $t9 -/* 0418B0 80040CB0 50200005 */ beql $at, $zero, .L80040CC8 -/* 0418B4 80040CB4 33220001 */ andi $v0, $t9, 1 -/* 0418B8 80040CB8 2402001F */ li $v0, 31 -/* 0418BC 80040CBC 03E00008 */ jr $ra -/* 0418C0 80040CC0 0059C822 */ sub $t9, $v0, $t9 - -/* 0418C4 80040CC4 33220001 */ andi $v0, $t9, 1 -.L80040CC8: -/* 0418C8 80040CC8 10400004 */ beqz $v0, .L80040CDC -/* 0418CC 80040CCC 0019C842 */ srl $t9, $t9, 1 -/* 0418D0 80040CD0 0338C820 */ add $t9, $t9, $t8 -/* 0418D4 80040CD4 03E00008 */ jr $ra -/* 0418D8 80040CD8 23390001 */ addi $t9, $t9, 1 - -.L80040CDC: -/* 0418DC 80040CDC 03E00008 */ jr $ra -/* 0418E0 80040CE0 0319C822 */ sub $t9, $t8, $t9 - -/* 0418E4 80040CE4 00181040 */ sll $v0, $t8, 1 -.L80040CE8: -/* 0418E8 80040CE8 0059082A */ slt $at, $v0, $t9 -/* 0418EC 80040CEC 5020FFF6 */ beql $at, $zero, .L80040CC8 -/* 0418F0 80040CF0 33220001 */ andi $v0, $t9, 1 -/* 0418F4 80040CF4 03E00008 */ jr $ra -/* 0418F8 80040CF8 00000000 */ nop - -/* 0418FC 80040CFC 00000000 */ nop diff --git a/include/stubs.h b/include/stubs.h index cf91f24fd..008e4b53a 100644 --- a/include/stubs.h +++ b/include/stubs.h @@ -16,7 +16,6 @@ void func_80040174(void*, s32, s32); s32 osAiSetFrequency(u32 freq); void mio0decode(u8* arg0, u8* arg1); s32 mio0encode(s32 input, s32, s32); -void tkmk00decode(u8*, u8*, u8*, s32); void osStartThread(OSThread* thread); void osCreateThread(OSThread* thread, OSId id, void (*entry)(void*), void* arg, void* sp, OSPri pri); void osInitialize(void); diff --git a/src/menu_items.c b/src/menu_items.c index 3519f8fce..f8413a4b1 100644 --- a/src/menu_items.c +++ b/src/menu_items.c @@ -3463,14 +3463,6 @@ void replace_texture(s32 index, const char* newTexture) { // newTexture, sMenuTextureListIndex); } -// strcpy the const char asset strings into sMenuTextureList. This replaces osPiDma. -void dma_compressed_mio0_texture_segA(u64* data, size_t nbytes, void* vaddr) { -} - -// strcpy the const char asset strings into sMenuTextureList. This replaces osPiDma. -void dma_tkmk00_textures(u64* data, size_t nbytes, void* vaddr) { -} - void clear_menu_textures(void) { for (size_t i = 0; i < ARRAY_COUNT(sMenuTextureList); i++) { sMenuTextureList[i] = NULL; diff --git a/src/menu_items.h b/src/menu_items.h index 1fd3839f5..b377190ed 100644 --- a/src/menu_items.h +++ b/src/menu_items.h @@ -414,8 +414,6 @@ Gfx* draw_box_fill(Gfx*, s32, s32, s32, s32, s32, s32, s32, s32); Gfx* draw_box(Gfx*, s32, s32, s32, s32, u32, u32, u32, u32); Gfx* draw_box_wide(Gfx*, s32, s32, s32, s32, u32, u32, u32, u32); Gfx* func_80098FC8(Gfx*, s32, s32, s32, s32); -void dma_compressed_mio0_texture_segA(u64*, size_t, void*); -void dma_tkmk00_textures(u64*, size_t, void*); void clear_menu_textures(void); void load_menu_img(MenuTexture*); void* segmented_to_virtual_dupe(const void*); @@ -643,7 +641,6 @@ void func_800AF740(MenuItem*); // This really, really shouldn't be in this header file, but I don't know where else to put it void rmonPrintf(const char*, ...); -void tkmk00decode(u8*, u8*, u8*, s32); /* File specific defines */ diff --git a/src/stubs.c b/src/stubs.c index 724f866d9..0f383ea6b 100644 --- a/src/stubs.c +++ b/src/stubs.c @@ -29,11 +29,6 @@ s32 mio0encode(s32 input, s32 arg1, s32 arg2) { return 1; } -void tkmk00decode(u8* src, u8* arg1, u8* dest, s32 n) { - dest = src; - // memcpy((void*) dest, (void*) src, 0x1000); -} - void osStartThread(OSThread* thread) { } From 1848139e4e82f68fb2b9ad3f1d2a779270356774 Mon Sep 17 00:00:00 2001 From: MegaMech Date: Sun, 5 Jan 2025 12:46:46 -0700 Subject: [PATCH 9/9] Update menu_items.c --- src/menu_items.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/menu_items.c b/src/menu_items.c index f8413a4b1..6b6fde7fb 100644 --- a/src/menu_items.c +++ b/src/menu_items.c @@ -5043,7 +5043,6 @@ void func_8009CE64(s32 arg0) { // gCupSelection = gCupSelectionByCourseId[gCurrentCourseId]; D_800DC540 = GetCupIndex(); gCourseIndexInCup = GetCupCursorPosition(); - ; switch (gDebugGotoScene) { /* switch 6; irregular */ case 1: /* switch 6 */