Current Changes (#14)

* Couple minor fixes

* test

* OTR changes

* More otr stuff

* Some fixes

---------

Co-authored-by: MegaMech <7255464+MegaMech@users.noreply.github.com>
This commit is contained in:
MegaMech
2024-05-08 13:03:35 -06:00
committed by GitHub
parent a09909ac23
commit 12553beabd
37 changed files with 3516 additions and 8969 deletions
+19 -21
View File
@@ -10,26 +10,25 @@
* in this file or problems will arise in other parts of the code
**/
extern CourseVtx d_course_big_donut_vertex[0x48D];
extern CourseVtx d_course_block_fort_vertex[0x440];
extern CourseVtx d_course_double_deck_vertex[0x22B];
extern CourseVtx d_course_skyscraper_vertex[0x43E];
extern CourseVtx d_course_choco_mountain_vertex[0x15B8];
extern CourseVtx d_course_frappe_snowland_vertex[0x1599];
extern CourseVtx d_course_mario_raceway_vertex[0x167D];
extern CourseVtx d_course_toads_turnpike_vertex[0x18D7];
extern CourseVtx d_course_kalimari_desert_vertex[0x18F9];
extern CourseVtx d_course_koopa_troopa_beach_vertex[0x24A0];
extern CourseVtx d_course_luigi_raceway_vertex[0x1730];
extern CourseVtx d_course_moo_moo_farm_vertex[0x1F24];
extern CourseVtx d_course_banshee_boardwalk_vertex[0x1351];
extern CourseVtx d_course_dks_jungle_parkway_vertex[0x162F];
extern CourseVtx d_course_rainbow_road_vertex[0xC27];
extern CourseVtx d_course_yoshi_valley_vertex[0xE88];
extern CourseVtx d_course_bowsers_castle_vertex[0x2537];
extern CourseVtx d_course_royal_raceway_vertex[0x2072];
extern CourseVtx d_course_sherbet_land_vertex[0xA76];
extern CourseVtx d_course_wario_stadium_vertex[0x17B3];
extern CourseVtx d_course_big_donut_vertex[];
extern CourseVtx d_course_block_fort_vertex[];
extern CourseVtx d_course_double_deck_vertex[];
extern CourseVtx d_course_skyscraper_vertex[];
extern CourseVtx d_course_choco_mountain_vertex[];
extern CourseVtx d_course_frappe_snowland_vertex[];
extern CourseVtx d_course_toads_turnpike_vertex[];
extern CourseVtx d_course_kalimari_desert_vertex[];
extern CourseVtx d_course_koopa_troopa_beach_vertex[];
extern CourseVtx d_course_luigi_raceway_vertex[];
extern CourseVtx d_course_moo_moo_farm_vertex[];
extern CourseVtx d_course_banshee_boardwalk_vertex[];
extern CourseVtx d_course_dks_jungle_parkway_vertex[];
extern CourseVtx d_course_rainbow_road_vertex[];
extern CourseVtx d_course_yoshi_valley_vertex[];
extern CourseVtx d_course_bowsers_castle_vertex[];
extern CourseVtx d_course_royal_raceway_vertex[];
extern CourseVtx d_course_sherbet_land_vertex[];
extern CourseVtx d_course_wario_stadium_vertex[];
#define d_course_big_donut_vertex_count ARRAY_COUNT(d_course_big_donut_vertex)
#define d_course_block_fort_vertex_count ARRAY_COUNT(d_course_block_fort_vertex)
@@ -37,7 +36,6 @@ extern CourseVtx d_course_wario_stadium_vertex[0x17B3];
#define d_course_skyscraper_vertex_count ARRAY_COUNT(d_course_skyscraper_vertex)
#define d_course_choco_mountain_vertex_count ARRAY_COUNT(d_course_choco_mountain_vertex)
#define d_course_frappe_snowland_vertex_count ARRAY_COUNT(d_course_frappe_snowland_vertex)
#define d_course_mario_raceway_vertex_count ARRAY_COUNT(d_course_mario_raceway_vertex)
#define d_course_toads_turnpike_vertex_count ARRAY_COUNT(d_course_toads_turnpike_vertex)
#define d_course_kalimari_desert_vertex_count ARRAY_COUNT(d_course_kalimari_desert_vertex)
#define d_course_koopa_troopa_beach_vertex_count ARRAY_COUNT(d_course_koopa_troopa_beach_vertex)
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-10
View File
@@ -1,10 +0,0 @@
#ifndef MARIO_RACEWAY_VERTICES_H
#define MARIO_RACEWAY_VERTICES_H
#include <libultraship.h>
#include <common_structs.h>
extern CourseVtx d_course_mario_raceway_vertex[];
#endif // MARIO_RACEWAY_VERTICES_H
+10
View File
@@ -0,0 +1,10 @@
#pragma once
#if defined(_WIN32)
#define ALIGN_ASSET(x) __declspec(align(x))
#else
#define ALIGN_ASSET(x) __attribute__((aligned (x)))
#endif
#define LOAD_ASSET(path) (path == NULL ? NULL : (GameEngine_OTRSigCheck((const char*) path) ? ResourceGetDataByName((const char*) path) : path))
#define LOAD_ASSET_RAW(path) ResourceGetDataByName((const char*) path)
+1 -1
View File
@@ -97,7 +97,7 @@ enum SURFACE_TYPE {
/* 0xFF */ RAMP // Koopa Troopa beach
};
#define GFX_GET_OPCODE(var) ((s32)((var) & 0xFF000000))
#define GFX_GET_OPCODE(var) ((uintptr_t)((var) & 0xFF000000))
// Pointer casting is technically UB, and avoiding it gets rid of endian issues
// as well as a nice side effect.
+12 -11
View File
@@ -2,6 +2,7 @@
#include <macros.h>
#include <defines.h>
#include <stubs.h>
#include "course_metadata.h"
#include "code_80005FD0.h"
#include "math_util.h"
@@ -1757,12 +1758,12 @@ void func_80009B60(s32 playerId) {
if ((gPlayerCount > 0) && (gPlayerCount < 3) && (D_80163330[playerId] == 1) && (D_8016334C[playerId] < gGPCurrentRaceRankByPlayerId[playerId])) {
D_80163210[playerId] = 8.333333f;
} else if (D_80162FD0 == (s16) 1U) {
D_80163210[playerId] = *(f32*)segmented_to_virtual_dupe_2(&D_0D0096B8[gCurrentCourseId][gCCSelection]);
D_80163210[playerId] = D_0D0096B8[gCurrentCourseId][gCCSelection];
D_801634F8[playerId].unk4 = -0.5f;
} else if (D_801645E0[D_80162FCE] > 0) {
D_80163210[playerId] = *(f32*)segmented_to_virtual_dupe_2(&D_0D009418[gCurrentCourseId][gCCSelection]);
D_80163210[playerId] = D_0D009418[gCurrentCourseId][gCCSelection];
} else {
D_80163210[playerId] = *(f32*)segmented_to_virtual_dupe_2(&D_0D009568[gCurrentCourseId][gCCSelection]);
D_80163210[playerId] = D_0D009568[gCurrentCourseId][gCCSelection];
}
func_800131DC(playerId);
func_8000D3B8(playerId);
@@ -1951,15 +1952,15 @@ void func_80009B60(s32 playerId) {
func_8003680C(player, var_a1);
D_80163050[playerId] = var_a1;
if ((D_801630B8[playerId] == 1) || (D_801630E8[playerId] == 1) || (D_801630E8[playerId] == -1) || (player->effects & 0x1000000C)) {
D_80163028[playerId] = *(f32*)segmented_to_virtual_dupe_2(&D_0D009418[gCurrentCourseId][gCCSelection]);
D_80163028[playerId] = D_0D009418[gCurrentCourseId][gCCSelection];
} else {
D_80163028[playerId] = *(f32*)segmented_to_virtual_dupe_2(&D_0D009568[gCurrentCourseId][gCCSelection]);
D_80163028[playerId] = D_0D009568[gCurrentCourseId][gCCSelection];
}
if ((D_80163068[playerId] > 0.9f) || (D_80163068[playerId] < -0.9f)) {
D_80163028[playerId] = *(f32*)segmented_to_virtual_dupe_2(&D_0D009808[gCurrentCourseId][gCCSelection]);
D_80163028[playerId] = D_0D009808[gCurrentCourseId][gCCSelection];
}
if (D_80162FD0 == 1) {
D_80163028[playerId] = *(f32*)segmented_to_virtual_dupe_2(&D_0D0096B8[gCurrentCourseId][gCCSelection]);
D_80163028[playerId] = D_0D0096B8[gCurrentCourseId][gCCSelection];
}
if ((D_801630E8[playerId] == 2) || (D_801630E8[playerId] == -2) || (D_801630E8[playerId] == 3)) {
D_80163028[playerId] = 3.3333333f;
@@ -3475,7 +3476,7 @@ void func_8000F628(void) {
if (gCurrentCourseId < (NUM_COURSES - 1)) {
func_8000B95C(i, 0, 0);
}
D_80163028[i] = *(f32 *) segmented_to_virtual_dupe_2(&D_0D009418[gCurrentCourseId][gCCSelection]);
D_80163028[i] = *(f32 *) LOAD_ASSET(&D_0D009418[gCurrentCourseId][gCCSelection]);
D_801630E8[i] = 0;
D_80163100[i] = 0;
D_80163178[i] = 0.0f;
@@ -3635,12 +3636,12 @@ void func_800100F0(s32 pathIndex) {
pathDest = D_80164550[pathIndex];
bInvalidPath = 1;
if (gCurrentCourseId != COURSE_AWARD_CEREMONY) {
var_v0 = process_path_data(pathDest, segmented_to_virtual_dupe_2(gCoursePathTable2[gCurrentCourseId][pathIndex]));
var_v0 = process_path_data(pathDest, LOAD_ASSET(gCoursePathTable2[gCurrentCourseId][pathIndex]));
gWaypointCountByPathIndex[pathIndex] = (u16) var_v0;
} else {
// Course path included in course_data which has already been loaded into memory.
// This is how we get the addr to our path data.
path = segmented_to_virtual_dupe_2(gCoursePathTable[gCurrentCourseId][pathIndex]);
path = LOAD_ASSET(gCoursePathTable[gCurrentCourseId][pathIndex]);
ptr = path;
for (i = 0; i < 3000; i++, ptr++) {
@@ -4122,7 +4123,7 @@ s32 func_8001168C(PathNoY *pathDest, TrackWaypoint *pathSrc, s32 numWaypoints) {
void copy_courses_kart_ai_behaviour(void) {
s32 i;
for (i = 0; i < NUM_COURSES - 1; i++) {
gCoursesKartAIBehaviour[i] = segmented_to_virtual_dupe_2(gKartAIBehaviourLUT[i]);
gCoursesKartAIBehaviour[i] = LOAD_ASSET(gKartAIBehaviourLUT[i]);
}
}
+6 -4
View File
@@ -5106,6 +5106,8 @@ void func_80066BAC(Player *player, UNUSED s8 arg1, s16 arg2, s8 arg3) {
UNUSED s32 stackPadding;
if ((player->unk_258[arg2].unk_01C == 1) && (player->unk_258[arg2].unk_038 != 0x00FF)) {
Vtx **A_800E8900 = *(Vtx **) LOAD_ASSET(D_800E8900);
if (player->unk_110.unk3C[2] >= 300.0f) {
spDC[1] = player->pos[1] + 5.0f;
} else {
@@ -5126,20 +5128,20 @@ void func_80066BAC(Player *player, UNUSED s8 arg1, s16 arg2, s8 arg3) {
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);
gDPSetRenderMode(gDisplayListHead++, G_RM_ZB_CLD_SURF, G_RM_ZB_CLD_SURF2);
gDPLoadTextureBlock(gDisplayListHead++, D_8018D4C4, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, 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);
gSPVertex(gDisplayListHead++, &D_800E8900[0][player->unk_258[arg2].unk_038], 4, 0);
gSPVertex(gDisplayListHead++, &A_800E8900[0][player->unk_258[arg2].unk_038], 4, 0);
gSPDisplayList(gDisplayListHead++, common_square_plain_render);
gDPLoadTextureBlock(gDisplayListHead++, D_8018D4C8, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, 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);
gSPVertex(gDisplayListHead++, &D_800E8900[1][player->unk_258[arg2].unk_038], 4, 0);
gSPVertex(gDisplayListHead++, &A_800E8900[1][player->unk_258[arg2].unk_038], 4, 0);
gSPDisplayList(gDisplayListHead++, D_0D008DA0);
} else {
gSPDisplayList(gDisplayListHead++, D_0D008DB8);
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);
gDPSetRenderMode(gDisplayListHead++, G_RM_ZB_CLD_SURF, G_RM_ZB_CLD_SURF2);
gDPLoadTextureBlock(gDisplayListHead++, D_8018D4C8, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, 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);
gSPVertex(gDisplayListHead++, &D_800E8900[0][player->unk_258[arg2].unk_038], 4, 0);
gSPVertex(gDisplayListHead++, &A_800E8900[0][player->unk_258[arg2].unk_038], 4, 0);
gSPDisplayList(gDisplayListHead++, common_square_plain_render);
gDPLoadTextureBlock(gDisplayListHead++, D_8018D4C4, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, 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);
gSPVertex(gDisplayListHead++, &D_800E8900[1][player->unk_258[arg2].unk_038], 4, 0);
gSPVertex(gDisplayListHead++, &A_800E8900[1][player->unk_258[arg2].unk_038], 4, 0);
gSPDisplayList(gDisplayListHead++, D_0D008DA0);
}
gMatrixEffectCount += 1;
-1
View File
@@ -3717,7 +3717,6 @@ void func_800996BC(MkTexture *arg0, s32 arg1) {
if ((var_a1_2 % 8)) {
var_a1_2 = (((var_a1_2 / 8) * 8) + 8);
}
printf("a1: %d\n",var_a1_2);
switch (arg1) { /* irregular */
case -1:
case 1:
+185
View File
@@ -0,0 +1,185 @@
#include <common_structs.h>
Vec4f D_0D009418[] = {
// mario raceway
{ 4.1666665f, 5.5833334f, 6.1666665f, 6.75f, },
// choco mountain
{ 4.1666665f, 5.5833334f, 6.1666665f, 6.75f, },
// bowser's castle
{ 4.1666665f, 5.5833334f, 6.1666665f, 6.75f, },
// banshee boardwalk
{ 4.1666665f, 5.5833334f, 6.1666665f, 6.75f, },
// yoshi valley
{ 4.1666665f, 5.5833334f, 6.1666665f, 6.75f, },
// frappe snowland
{ 4.1666665f, 5.5833334f, 6.1666665f, 6.75f, },
// koopa troopa beach
{ 4.1666665f, 5.5833334f, 6.1666665f, 6.75f, },
// royal raceway
{ 4.1666665f, 5.5833334f, 6.1666665f, 6.75f, },
// luigi raceway
{ 4.1666665f, 5.5833334f, 6.1666665f, 6.75f, },
// moo moo farm
{ 4.1666665f, 5.5833334f, 6.1666665f, 6.75f, },
// toad's turnpike
{ 4.1666665f, 5.5833334f, 6.1666665f, 6.75f, },
// kalimari desert
{ 4.1666665f, 5.5833334f, 6.1666665f, 6.75f, },
// sherbet land
{ 4.1666665f, 5.5833334f, 6.1666665f, 6.75f, },
// rainbow road
{ 4.1666665f, 5.5833334f, 6.1666665f, 6.75f, },
// wario stadium
{ 4.1666665f, 5.5833334f, 6.1666665f, 6.75f, },
// block fort
{ 4.1666665f, 5.5833334f, 6.1666665f, 6.75f, },
// skyscraper
{ 4.1666665f, 5.5833334f, 6.1666665f, 6.75f, },
// double deck
{ 4.1666665f, 5.5833334f, 6.1666665f, 6.75f, },
// d.k.'s jungle parkway
{ 4.1666665f, 5.5833334f, 6.1666665f, 6.75f, },
// big donut
{ 4.1666665f, 5.5833334f, 6.1666665f, 6.75f, },
// null
{ 0.0f, 0.0f, 0.0f, 0.0f, },
};
Vec4f D_0D009568[] = {
// mario raceway
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// choco mountain
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// bowser's castle
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// banshee boardwalk
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// yoshi valley
{ 3.75f, 4.5833334f, 4.5833334f, 4.5833334f, },
// frappe snowland
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// koopa troopa beach
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// royal raceway
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// luigi raceway
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// moo moo farm
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// toad's turnpike
{ 4.1666665f, 5.5833334f, 6.1666665f, 6.75f, },
// kalimari desert
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// sherbet land
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// rainbow road
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// wario stadium
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// block fort
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// skyscraper
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// double deck
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// d.k.'s jungle parkway
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// big donut
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// null
{ 0.0f, 0.0f, 0.0f, 0.0f, },
};
Vec4f D_0D0096B8[] = {
// mario raceway
{ 3.3333332f, 3.9166667f, 4.5f, 5.0833334f, },
// choco mountain
{ 3.3333332f, 3.9166667f, 4.5f, 5.0833334f, },
// bowser's castle
{ 3.3333332f, 3.9166667f, 4.5f, 5.0833334f, },
// banshee boardwalk
{ 3.3333332f, 3.9166667f, 4.5f, 5.0833334f, },
// yoshi valley
{ 3.3333332f, 3.3333332f, 3.3333332f, 3.3333332f, },
// frappe snowland
{ 3.3333332f, 3.9166667f, 4.5f, 5.0833334f, },
// koopa troopa beach
{ 3.3333332f, 3.9166667f, 4.5f, 5.0833334f, },
// royal raceway
{ 3.3333332f, 3.9166667f, 4.5f, 5.0833334f, },
// luigi raceway
{ 3.3333332f, 3.9166667f, 4.5f, 5.0833334f, },
// moo moo farm
{ 3.3333332f, 3.9166667f, 4.5f, 5.0833334f, },
// toad's turnpike
{ 3.3333332f, 3.9166667f, 4.5f, 5.0833334f, },
// kalimari desert
{ 3.3333332f, 3.9166667f, 4.5f, 5.0833334f, },
// sherbet land
{ 3.3333332f, 3.9166667f, 4.5f, 5.0833334f, },
// rainbow road
{ 3.3333332f, 3.9166667f, 4.5f, 5.0833334f, },
// wario stadium
{ 3.3333332f, 3.9166667f, 4.5f, 5.0833334f, },
// block fort
{ 3.3333332f, 3.9166667f, 4.5f, 5.0833334f, },
// skyscraper
{ 3.3333332f, 3.9166667f, 4.5f, 5.0833334f, },
// double deck
{ 3.3333332f, 3.9166667f, 4.5f, 5.0833334f, },
// d.k.'s jungle parkway
{ 3.3333332f, 3.9166667f, 4.5f, 5.0833334f, },
// big donut
{ 3.3333332f, 3.9166667f, 4.5f, 5.0833334f, },
// null
{ 0.0f, 0.0f, 0.0f, 0.0f, },
};
Vec4f D_0D009808[] = {
// mario raceway
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// choco mountain
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// bowser's castle
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// banshee boardwalk
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// yoshi valley
{ 2.9166667f, 3.75f, 3.75f, 3.75f, },
// frappe snowland
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// koopa troopa beach
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// royal raceway
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// luigi raceway
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// moo moo farm
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// toad's turnpike
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// kalimari desert
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// sherbet land
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// rainbow road
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// wario stadium
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// block fort
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// skyscraper
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// double deck
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// d.k.'s jungle parkway
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// big donut
{ 3.75f, 5.1666665f, 5.75f, 6.3333334f, },
// null
{ 0.0f, 0.0f, 0.0f, 0.0f, },
};
+9
View File
@@ -0,0 +1,9 @@
#include <libultraship.h>
#include <common_structs.h>
Vec4f D_0D009418[];
Vec4f D_0D009568[];
Vec4f D_0D0096B8[];
Vec4f D_0D009808[];
-1
View File
@@ -48,7 +48,6 @@ extern Gfx D_02007FC8[];
extern Gfx D_02008008[];
extern Gfx D_02008030[];
extern Gfx D_02008058[];
extern Gfx common_rectangle_display[];
extern Vtx D_02007BB8[];
#ifndef AVOID_UB
+2 -2
View File
@@ -2,9 +2,9 @@
#include <macros.h>
#include "main.h"
#include <mk64.h>
#include <assets/common_data.h>
extern s16 D_800E43A8;
extern Mtx D_0D008E98;
// rsp init
UNUSED void gfx_func_80040D00(void) {
@@ -16,5 +16,5 @@ UNUSED void gfx_func_80040D00(void) {
guOrtho(&gGfxPool->mtxScreen, 0.0f, SCREEN_WIDTH, 0.0f, SCREEN_HEIGHT, -1.0f, 1.0f, 1.0f);
gSPPerspNormalize(gDisplayListHead++, 0xFFFF);
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(gGfxPool), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&D_0D008E98), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(D_0D008E98), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
}
+8
View File
@@ -5,6 +5,14 @@
#include "common_structs.h"
#include "kart_dma.h"
#include "defines.h"
#include <assets/mario_kart.h>
#include <assets/luigi_kart.h>
#include <assets/peach_kart.h>
#include <assets/yoshi_kart.h>
#include <assets/toad_kart.h>
#include <assets/bowser_kart.h>
#include <assets/wario_kart.h>
#include <assets/donkeykong_kart.h>
// Seemingly the largest compressed size for a frame for a given character
// They seem slightly oversized too, either an alignemnt or safety thing
+2576 -2585
View File
File diff suppressed because it is too large Load Diff
+7 -45
View File
@@ -1323,54 +1323,16 @@ void *decompress_segments(u8 *start, u8 *end) {
* @param courseId
*/
void load_course(s32 courseId) {
// UNUSED s32 pad[4];
// u8 *vtxCompressed; // mio0 compressed
// u8 *courseDataRomStart; // mio0 compressed
// u8 *courseDataRomEnd;
// u8 *vertexRomStart; // mio0 compressed
// u8 *vertexRomEnd;
// UNUSED s32 pad2[2];
// uintptr_t textures;
// CourseVtx *vertexStart; // mio0 compressed
// u8 *packedStart;
// uintptr_t vertexCount;
// u8 *finalDisplaylistOffset;
// uintptr_t unknown1;
// s32 prevLoadedAddress_saved;
// u8 *offsetRomStart;
// u8 *offsetRomEnd;
// Future implementation for Extra mode and course stretching.
// // Pointers to rom offsets
// //gamestate = gGamestate;
// courseDataRomStart = gCourseTable[courseId].dlRomStart;
// courseDataRomEnd = gCourseTable[courseId].dlRomEnd;
// offsetRomStart = gCourseTable[courseId].offsetRomStart;
// offsetRomEnd = gCourseTable[courseId].offsetRomEnd;
// vertexRomStart = gCourseTable[courseId].vertexRomStart;
// vertexRomEnd = gCourseTable[courseId].vertexRomEnd;
// textures = gCourseTable[courseId].textures;
// vertexStart = gCourseTable[courseId].vertexStart;
// packedStart = gCourseTable[courseId].packedStart;
// vertexCount = gCourseTable[courseId].vertexCount;
// finalDisplaylistOffset = gCourseTable[courseId].finalDisplaylistOffset;
// unknown1 = gCourseTable[courseId].unknown1;
// if ((gGamestate == ENDING) || (gGamestate == CREDITS_SEQUENCE)) {
// gHeapEndPtr = SEG_ENDING;
// } else {
// gHeapEndPtr = SEG_RACING;
// if (gIsMirrorMode) {
// for (size_t i = 0; i < sizeof(vtx); i++) {
// dest->v.ob[0] = -courseVtx->ob[0];
// }
// }
// set_segment_base_addr(9, load_data((uintptr_t)offsetRomStart, (uintptr_t) offsetRomEnd));
// if (gGamestate != ENDING) {
// set_segment_base_addr(6, decompress_segments(courseDataRomStart, courseDataRomEnd));
// if (vtxStretchY != 1.0f) {
// dest->v.ob[1] *= vtxStretchY;
// }
// prevLoadedAddress_saved = gNextFreeMemoryAddress;
// vtxCompressed = dma_compressed_vtx(vertexRomStart, vertexRomEnd);
// set_segment_base_addr(0xF, (void *) vtxCompressed);
// decompress_vtx(vertexStart, vertexCount);
// displaylist_unpack((uintptr_t *) packedStart, finalDisplaylistOffset, unknown1);
// decompress_textures(textures);
// gNextFreeMemoryAddress = prevLoadedAddress_saved;
}
+6 -5
View File
@@ -71,11 +71,11 @@ void parse_course_displaylists(uintptr_t addr) {
extern u32 isFlycam;
void load_surface_map(uintptr_t addr, struct UnkStruct_800DC5EC *arg1) {
void load_surface_map(Gfx *addr[], struct UnkStruct_800DC5EC *arg1) {
Player *player = arg1->player;
Camera *camera = arg1->camera;
//! @todo Should be Gfx*
Gfx** gfx = (Gfx**) &addr;
Gfx **gfx = &addr;
s16 var_a3;
s16 temp_v1;
s16 sp1E;
@@ -179,7 +179,7 @@ void load_surface_map(uintptr_t addr, struct UnkStruct_800DC5EC *arg1) {
arg1->pathCounter = temp_v1;
temp_v1 = ((temp_v1 - 1) * 4) + var_a3;
gSPDisplayList(gDisplayListHead++, (Gfx *)gfx[temp_v1]);
gSPDisplayList(gDisplayListHead++, (Gfx *)&gfx[temp_v1]);
}
void func_80291198(void) {
@@ -598,8 +598,8 @@ void render_mario_raceway(struct UnkStruct_800DC5EC *arg0) {
gSPDisplayList(gDisplayListHead++, ((uintptr_t) d_course_mario_raceway_packed_dl_3508));
gSPDisplayList(gDisplayListHead++, ((uintptr_t) d_course_mario_raceway_packed_dl_3240));
gSPDisplayList(gDisplayListHead++, ((uintptr_t) d_course_mario_raceway_packed_dl_14A0));
load_surface_map((uintptr_t) mario_raceway_dls, arg0);
printf("LOADING SURFACE MAP\n");
load_surface_map(&mario_raceway_dls, arg0);
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
@@ -608,6 +608,7 @@ void render_mario_raceway(struct UnkStruct_800DC5EC *arg0) {
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
gSPDisplayList(gDisplayListHead++, ((uintptr_t) d_course_mario_raceway_packed_dl_E0));
gSPDisplayList(gDisplayListHead++, ((uintptr_t) d_course_mario_raceway_packed_dl_160));
printf("SURFACE MAP LOADED\n");
}
void render_choco_mountain(struct UnkStruct_800DC5EC *arg0) {
+1 -1
View File
@@ -7,7 +7,7 @@
void func_8029122C(struct UnkStruct_800DC5EC*, s32);
s32 func_80290C20(Camera*);
void parse_course_displaylists(uintptr_t);
void load_surface_map(uintptr_t, struct UnkStruct_800DC5EC*);
void load_surface_map(Gfx*, struct UnkStruct_800DC5EC*);
void func_80291198(void);
void func_802911C4(void);
void render_mario_raceway(struct UnkStruct_800DC5EC*);
+2 -2
View File
@@ -426,7 +426,7 @@ void func_802A487C(Vtx *arg0, UNUSED struct UnkStruct_800DC5EC *arg1, UNUSED s32
guOrtho(&gGfxPool->mtxScreen, 0.0f, SCREEN_WIDTH, 0.0f, SCREEN_HEIGHT, 0.0f, 5.0f, 1.0f);
gSPPerspNormalize(gDisplayListHead++, 0xFFFF);
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxScreen), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&D_0D008E98), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPMatrix(gDisplayListHead++, D_0D008E98, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPVertex(gDisplayListHead++, &arg0[4], 4, 0);
gSP2Triangles(gDisplayListHead++, 0, 3, 1, 0, 1, 3, 2, 0);
}
@@ -478,7 +478,7 @@ void func_802A4A0C(Vtx *vtx, struct UnkStruct_800DC5EC *arg1, UNUSED s32 arg2, U
guOrtho(&gGfxPool->mtxScreen, 0.0f, SCREEN_WIDTH, 0.0f, SCREEN_HEIGHT, 0.0f, 5.0f, 1.0f);
gSPPerspNormalize(gDisplayListHead++, 0xFFFF);
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxScreen), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&D_0D008E98), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPMatrix(gDisplayListHead++, D_0D008E98, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPVertex(gDisplayListHead++, &vtx[0], 4, 0);
gSP2Triangles(gDisplayListHead++, 0, 3, 1, 0, 1, 3, 2, 0);
if (gCurrentCourseId == COURSE_RAINBOW_ROAD) {
+65 -47
View File
@@ -4,8 +4,9 @@
**/
#include <libultraship.h>
#include <mk64.h>
#include <libultra/gbi.h>
#include <mk64.h>
#include <align_asset_macro.h>
#include <macros.h>
#include <defines.h>
#include <common_structs.h>
@@ -3081,19 +3082,22 @@ void func_80052080(void) {
func_80051C60(240 - D_800DC5F0->cameraHeight, D_8018D1F0);
}
void func_800520C0(s32 arg0) {
Lights1 *D_800E45C0l = LOAD_ASSET(D_800E45C0);
if (gObjectList[arg0].unk_0D5 == 0) {
D_800E45C0[0].l[0].l.dir[0] = D_800E45C0[1].l[0].l.dir[0] = D_800E45C0[2].l[0].l.dir[0] = D_800E45C0[3].l[0].l.dir[0] = 0;
D_800E45C0[0].l[0].l.dir[1] = D_800E45C0[1].l[0].l.dir[1] = D_800E45C0[2].l[0].l.dir[1] = D_800E45C0[3].l[0].l.dir[1] = -0x78;
D_800E45C0[0].l[0].l.dir[2] = D_800E45C0[1].l[0].l.dir[2] = D_800E45C0[2].l[0].l.dir[2] = D_800E45C0[3].l[0].l.dir[2] = 0;
D_800E45C0l[0].l[0].l.dir[0] = D_800E45C0l[1].l[0].l.dir[0] = D_800E45C0l[2].l[0].l.dir[0] = D_800E45C0l[3].l[0].l.dir[0] = 0;
D_800E45C0l[0].l[0].l.dir[1] = D_800E45C0l[1].l[0].l.dir[1] = D_800E45C0l[2].l[0].l.dir[1] = D_800E45C0l[3].l[0].l.dir[1] = -0x78;
D_800E45C0l[0].l[0].l.dir[2] = D_800E45C0l[1].l[0].l.dir[2] = D_800E45C0l[2].l[0].l.dir[2] = D_800E45C0l[3].l[0].l.dir[2] = 0;
} else {
D_800E45C0[0].l[0].l.dir[0] = D_800E45C0[1].l[0].l.dir[0] = D_800E45C0[2].l[0].l.dir[0] = D_800E45C0[3].l[0].l.dir[0] = 0x63;
D_800E45C0[0].l[0].l.dir[1] = D_800E45C0[1].l[0].l.dir[1] = D_800E45C0[2].l[0].l.dir[1] = D_800E45C0[3].l[0].l.dir[1] = 0x42;
D_800E45C0[0].l[0].l.dir[2] = D_800E45C0[1].l[0].l.dir[2] = D_800E45C0[2].l[0].l.dir[2] = D_800E45C0[3].l[0].l.dir[2] = 0;
D_800E45C0l[0].l[0].l.dir[0] = D_800E45C0l[1].l[0].l.dir[0] = D_800E45C0l[2].l[0].l.dir[0] = D_800E45C0l[3].l[0].l.dir[0] = 0x63;
D_800E45C0l[0].l[0].l.dir[1] = D_800E45C0l[1].l[0].l.dir[1] = D_800E45C0l[2].l[0].l.dir[1] = D_800E45C0l[3].l[0].l.dir[1] = 0x42;
D_800E45C0l[0].l[0].l.dir[2] = D_800E45C0l[1].l[0].l.dir[2] = D_800E45C0l[2].l[0].l.dir[2] = D_800E45C0l[3].l[0].l.dir[2] = 0;
}
}
void func_8005217C(UNUSED s32 arg0) {
Lights1 *D_800E45C0l = LOAD_ASSET(D_800E45C0);
Objects *object;
s32 temp_a3;
@@ -3105,17 +3109,17 @@ void func_8005217C(UNUSED s32 arg0) {
func_800520C0(temp_a3);
gSPDisplayList(gDisplayListHead++, D_0D007828);
gSPLight(gDisplayListHead++, &D_800E45C0[0].l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E45C0[0].a, LIGHT_2);
gSPLight(gDisplayListHead++, &D_800E45C0l[0].l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E45C0l[0].a, LIGHT_2);
gSPDisplayList(gDisplayListHead++, d_course_banshee_boardwalk_dl_7B38);
gSPLight(gDisplayListHead++, &D_800E45C0[1].l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E45C0[1].a, LIGHT_2);
gSPLight(gDisplayListHead++, &D_800E45C0l[1].l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E45C0l[1].a, LIGHT_2);
gSPDisplayList(gDisplayListHead++, d_course_banshee_boardwalk_dl_7978);
gSPLight(gDisplayListHead++, &D_800E45C0[2].l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E45C0[2].a, LIGHT_2);
gSPLight(gDisplayListHead++, &D_800E45C0l[2].l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E45C0l[2].a, LIGHT_2);
gSPDisplayList(gDisplayListHead++, d_course_banshee_boardwalk_dl_78C0);
gSPLight(gDisplayListHead++, &D_800E45C0[3].l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E45C0[3].a, LIGHT_2);
gSPLight(gDisplayListHead++, &D_800E45C0l[3].l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E45C0l[3].a, LIGHT_2);
gSPDisplayList(gDisplayListHead++, d_course_banshee_boardwalk_dl_7650);
}
}
@@ -3216,14 +3220,15 @@ void func_800528EC(s32 arg0) {
s32 var_s3;
s32 objectIndex;
Objects *object;
Lights1 D_800E4620l = *(Lights1 *) LOAD_ASSET(D_800E4620);
D_80183E80[0] = D_8016582C[0];
D_80183E80[1] = D_8016582C[1];
D_80183E80[2] = D_8016582C[2];
gSPDisplayList(gDisplayListHead++, D_0D007B00);
gSPNumLights(gDisplayListHead++, 1);
gSPLight(gDisplayListHead++, &D_800E4620.l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E4620.a, LIGHT_2);
gSPLight(gDisplayListHead++, &D_800E4620l.l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E4620l.a, LIGHT_2);
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BOTH);
gSPSetGeometryMode(gDisplayListHead++, G_SHADE | G_LIGHTING | G_SHADING_SMOOTH);
@@ -3261,12 +3266,12 @@ void func_800528EC(s32 arg0) {
void render_ice_block(s32 arg0) {
s32 playerId;
s32 objectIndex;
D_800E4620.l[0].l.dir[0] = D_80165840[0];
D_800E4620.l[0].l.dir[1] = D_80165840[1];
D_800E4620.l[0].l.dir[2] = D_80165840[2];
gSPLight(gDisplayListHead++, &D_800E4620.l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E4620.a, LIGHT_2);
Lights1 D_800E4620l = *(Lights1 *) LOAD_ASSET(D_800E4620);
D_800E4620l.l[0].l.dir[0] = D_80165840[0];
D_800E4620l.l[0].l.dir[1] = D_80165840[1];
D_800E4620l.l[0].l.dir[2] = D_80165840[2];
gSPLight(gDisplayListHead++, &D_800E4620l.l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E4620l.a, LIGHT_2);
for (playerId = 0; playerId < gPlayerCountSelection1; playerId++) {
objectIndex = gIndexLakituList[playerId];
if (objectIndex) {}
@@ -3294,12 +3299,12 @@ void func_80052D70(s32 playerId) {
void func_80052E30(UNUSED s32 arg0) {
s32 var_s0;
D_800E4620.l[0].l.dir[0] = D_80165840[0];
D_800E4620.l[0].l.dir[1] = D_80165840[1];
D_800E4620.l[0].l.dir[2] = D_80165840[2];
gSPLight(gDisplayListHead++, &D_800E4620.l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E4620.a, LIGHT_2);
Lights1 D_800E4620l = *(Lights1 *) LOAD_ASSET(D_800E4620);
D_800E4620l.l[0].l.dir[0] = D_80165840[0];
D_800E4620l.l[0].l.dir[1] = D_80165840[1];
D_800E4620l.l[0].l.dir[2] = D_80165840[2];
gSPLight(gDisplayListHead++, &D_800E4620l.l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E4620l.a, LIGHT_2);
D_80183E80[0] = 0;
D_80183E80[1] = 0;
D_80183E80[2] = 0;
@@ -3405,33 +3410,42 @@ void render_lakitu(s32 cameraId) {
void func_800534A4(UNUSED s32 arg0) {
func_800419F8();
D_800E4638.l[0].l.dir[0] = D_80165840[0];
D_800E4638.l[0].l.dir[1] = D_80165840[1];
D_800E4638.l[0].l.dir[2] = D_80165840[2];
Lights1 D_800E4638l = *(Lights1 *) LOAD_ASSET(D_800E4638);
D_800E4638l.l[0].l.dir[0] = D_80165840[0];
D_800E4638l.l[0].l.dir[1] = D_80165840[1];
D_800E4638l.l[0].l.dir[2] = D_80165840[2];
}
void func_800534E8(s32 objectIndex) {
Lights1 D_800E4638l = *(Lights1 *) LOAD_ASSET(D_800E4638);
Lights1 D_800E4650l = *(Lights1 *) LOAD_ASSET(D_800E4650);
Lights1 D_800E4668l = *(Lights1 *) LOAD_ASSET(D_800E4668);
Lights1 D_800E4680l = *(Lights1 *) LOAD_ASSET(D_800E4680);
Lights1 D_800E4698l = *(Lights1 *) LOAD_ASSET(D_800E4698);
// Why these don't just use `gSPSetLights1` calls...
switch (gObjectList[objectIndex].type) { // hmm very strange 80165C18
case 0:
gSPLight(gDisplayListHead++, &D_800E4638.l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E4638.a, LIGHT_2);
gSPLight(gDisplayListHead++, &D_800E4638l.l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E4638l.a, LIGHT_2);
break;
case 1:
gSPLight(gDisplayListHead++, &D_800E4650.l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E4650.a, LIGHT_2);
gSPLight(gDisplayListHead++, &D_800E4650l.l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E4650l.a, LIGHT_2);
break;
case 2:
gSPLight(gDisplayListHead++, &D_800E4668.l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E4668.a, LIGHT_2);
gSPLight(gDisplayListHead++, &D_800E4668l.l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E4668l.a, LIGHT_2);
break;
case 3:
gSPLight(gDisplayListHead++, &D_800E4680.l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E4680.a, LIGHT_2);
gSPLight(gDisplayListHead++, &D_800E4680l.l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E4680l.a, LIGHT_2);
break;
case 4:
gSPLight(gDisplayListHead++, &D_800E4698.l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E4698.a, LIGHT_2);
gSPLight(gDisplayListHead++, &D_800E4698l.l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E4698l.a, LIGHT_2);
break;
default:
break;
@@ -3458,6 +3472,7 @@ void render_object_thwomps(s32 cameraId) {
s16 minusone, plusone;
Camera *camera;
Objects *object;
Lights1 D_800E4668l = *(Lights1 *) LOAD_ASSET(D_800E4668);
camera = &camera1[cameraId];
if (cameraId == PLAYER_ONE) {
@@ -3484,8 +3499,8 @@ void render_object_thwomps(s32 cameraId) {
gSPDisplayList(gDisplayListHead++, D_0D0079C8);
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
gSPNumLights(gDisplayListHead++, 1);
gSPLight(gDisplayListHead++, &D_800E4668.l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E4668.a, LIGHT_2);
gSPLight(gDisplayListHead++, &D_800E4668l.l[0], LIGHT_1);
gSPLight(gDisplayListHead++, &D_800E4668l.a, LIGHT_2);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BOTH);
gSPSetGeometryMode(gDisplayListHead++, G_SHADE | G_LIGHTING | G_SHADING_SMOOTH);
load_texture_block_rgba16_mirror(d_course_bowsers_castle_thwomp_side, 0x00000020, 0x00000020);
@@ -4169,9 +4184,12 @@ void render_object_neon(s32 cameraId) {
}
void func_800562E4(s32 arg0, s32 arg1, s32 arg2) {
D_80165860 = D_800E46F8[arg0][0];
D_8016586C = D_800E46F8[arg0][1];
D_80165878 = D_800E46F8[arg0][2];
Vec3iu *A_800E46F8 = LOAD_ASSET(D_800E46F8);
D_80165860 = A_800E46F8[arg0][0];
D_8016586C = A_800E46F8[arg0][1];
D_80165878 = A_800E46F8[arg0][2];
func_8004B138(D_80165860, D_8016586C, D_80165878, arg2);
rsp_set_matrix_transformation(D_80183E40, D_80183E80, 0.2f);
func_80044BF8(common_texture_particle_spark[arg1], 0x00000020, 0x00000020);
-6
View File
@@ -449,12 +449,6 @@ extern u8* D_8018D4C0;
extern u8 *gPortraitTextures[];
extern Lights1 D_800E4638;
extern Lights1 D_800E4650;
extern Lights1 D_800E4668;
extern Lights1 D_800E4680;
extern Lights1 D_800E4698;
extern u8 d_course_bowsers_castle_thwomp_tlut[]; // Some type of pallette?
#endif
+8
View File
@@ -22,6 +22,14 @@
#include <assets/common_data.h>
#include "skybox_and_splitscreen.h"
#include "spawn_players.h"
#include <assets/mario_kart.h>
#include <assets/luigi_kart.h>
#include <assets/peach_kart.h>
#include <assets/yoshi_kart.h>
#include <assets/toad_kart.h>
#include <assets/bowser_kart.h>
#include <assets/wario_kart.h>
#include <assets/donkeykong_kart.h>
s8 gRenderingFramebufferByPlayer[] = {
0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02
+144 -147
View File
@@ -87,9 +87,6 @@ extern s32 D_80164B80[];
extern s32 D_8018D930[];
extern Gfx common_square_plain_render[];
extern Gfx D_0D008D58[];
extern s32 gPlayersToRenderCount;
extern void *D_800DDB5C[];
extern Vtx *D_800DDBB4[];
@@ -134,150 +131,150 @@ extern u16 **D_800DDE54[];
// These all come the kart data stuff, they should end up in their own inc.c eventually
extern u8 *gKartMario168Wheel0[];
extern u8 *gKartMario147Wheel0[];
extern u8 *gKartMario126Wheel0[];
extern u8 *gKartMario105Wheel0[];
extern u8 *gKartMario084Wheel0[];
extern u8 *gKartMario063Wheel0[];
extern u8 *gKartMario042Wheel0[];
extern u8 *gKartMario021Wheel0[];
extern u8 *gKartMario000Wheel0[];
extern u8 *gKartMario269Wheel0[];
extern u8 *gKartMario269Wheel0[];
extern u8 *gKartMario249Wheel0[];
extern u8 *gKartMario229Wheel0[];
extern u8 *gKartMario229Wheel0[];
extern u8 *gKartMario229Wheel0[];
extern u8 *gKartMario209Wheel0[];
extern u8 *gKartMario189Wheel0[];
extern u8 *gKartMario189Wheel0[];
extern u8 *gKartLuigi168Wheel0[];
extern u8 *gKartLuigi147Wheel0[];
extern u8 *gKartLuigi126Wheel0[];
extern u8 *gKartLuigi105Wheel0[];
extern u8 *gKartLuigi084Wheel0[];
extern u8 *gKartLuigi063Wheel0[];
extern u8 *gKartLuigi042Wheel0[];
extern u8 *gKartLuigi021Wheel0[];
extern u8 *gKartLuigi000Wheel0[];
extern u8 *gKartLuigi269Wheel0[];
extern u8 *gKartLuigi269Wheel0[];
extern u8 *gKartLuigi249Wheel0[];
extern u8 *gKartLuigi229Wheel0[];
extern u8 *gKartLuigi229Wheel0[];
extern u8 *gKartLuigi229Wheel0[];
extern u8 *gKartLuigi209Wheel0[];
extern u8 *gKartLuigi189Wheel0[];
extern u8 *gKartLuigi189Wheel0[];
extern u8 *gKartBowser168Wheel0[];
extern u8 *gKartBowser147Wheel0[];
extern u8 *gKartBowser126Wheel0[];
extern u8 *gKartBowser105Wheel0[];
extern u8 *gKartBowser084Wheel0[];
extern u8 *gKartBowser063Wheel0[];
extern u8 *gKartBowser042Wheel0[];
extern u8 *gKartBowser021Wheel0[];
extern u8 *gKartBowser000Wheel0[];
extern u8 *gKartBowser269Wheel0[];
extern u8 *gKartBowser269Wheel0[];
extern u8 *gKartBowser249Wheel0[];
extern u8 *gKartBowser229Wheel0[];
extern u8 *gKartBowser229Wheel0[];
extern u8 *gKartBowser229Wheel0[];
extern u8 *gKartBowser209Wheel0[];
extern u8 *gKartBowser189Wheel0[];
extern u8 *gKartBowser189Wheel0[];
extern u8 *gKartToad168Wheel0[];
extern u8 *gKartToad147Wheel0[];
extern u8 *gKartToad126Wheel0[];
extern u8 *gKartToad105Wheel0[];
extern u8 *gKartToad084Wheel0[];
extern u8 *gKartToad063Wheel0[];
extern u8 *gKartToad042Wheel0[];
extern u8 *gKartToad021Wheel0[];
extern u8 *gKartToad000Wheel0[];
extern u8 *gKartToad269Wheel0[];
extern u8 *gKartToad269Wheel0[];
extern u8 *gKartToad249Wheel0[];
extern u8 *gKartToad229Wheel0[];
extern u8 *gKartToad229Wheel0[];
extern u8 *gKartToad229Wheel0[];
extern u8 *gKartToad209Wheel0[];
extern u8 *gKartToad189Wheel0[];
extern u8 *gKartToad189Wheel0[];
extern u8 *gKartYoshi168Wheel0[];
extern u8 *gKartYoshi147Wheel0[];
extern u8 *gKartYoshi126Wheel0[];
extern u8 *gKartYoshi105Wheel0[];
extern u8 *gKartYoshi084Wheel0[];
extern u8 *gKartYoshi063Wheel0[];
extern u8 *gKartYoshi042Wheel0[];
extern u8 *gKartYoshi021Wheel0[];
extern u8 *gKartYoshi000Wheel0[];
extern u8 *gKartYoshi269Wheel0[];
extern u8 *gKartYoshi269Wheel0[];
extern u8 *gKartYoshi249Wheel0[];
extern u8 *gKartYoshi229Wheel0[];
extern u8 *gKartYoshi229Wheel0[];
extern u8 *gKartYoshi229Wheel0[];
extern u8 *gKartYoshi209Wheel0[];
extern u8 *gKartYoshi189Wheel0[];
extern u8 *gKartYoshi189Wheel0[];
extern u8 *gKartDK168Wheel0[];
extern u8 *gKartDK147Wheel0[];
extern u8 *gKartDK126Wheel0[];
extern u8 *gKartDK105Wheel0[];
extern u8 *gKartDK084Wheel0[];
extern u8 *gKartDK063Wheel0[];
extern u8 *gKartDK042Wheel0[];
extern u8 *gKartDK021Wheel0[];
extern u8 *gKartDK000Wheel0[];
extern u8 *gKartDK269Wheel0[];
extern u8 *gKartDK269Wheel0[];
extern u8 *gKartDK249Wheel0[];
extern u8 *gKartDK229Wheel0[];
extern u8 *gKartDK229Wheel0[];
extern u8 *gKartDK229Wheel0[];
extern u8 *gKartDK209Wheel0[];
extern u8 *gKartDK189Wheel0[];
extern u8 *gKartDK189Wheel0[];
extern u8 *gKartPeach168Wheel0[];
extern u8 *gKartPeach147Wheel0[];
extern u8 *gKartPeach126Wheel0[];
extern u8 *gKartPeach105Wheel0[];
extern u8 *gKartPeach084Wheel0[];
extern u8 *gKartPeach063Wheel0[];
extern u8 *gKartPeach042Wheel0[];
extern u8 *gKartPeach021Wheel0[];
extern u8 *gKartPeach000Wheel0[];
extern u8 *gKartPeach269Wheel0[];
extern u8 *gKartPeach269Wheel0[];
extern u8 *gKartPeach249Wheel0[];
extern u8 *gKartPeach229Wheel0[];
extern u8 *gKartPeach229Wheel0[];
extern u8 *gKartPeach229Wheel0[];
extern u8 *gKartPeach209Wheel0[];
extern u8 *gKartPeach189Wheel0[];
extern u8 *gKartPeach189Wheel0[];
extern u8 *gKartWario168Wheel0[];
extern u8 *gKartWario147Wheel0[];
extern u8 *gKartWario126Wheel0[];
extern u8 *gKartWario105Wheel0[];
extern u8 *gKartWario084Wheel0[];
extern u8 *gKartWario063Wheel0[];
extern u8 *gKartWario042Wheel0[];
extern u8 *gKartWario021Wheel0[];
extern u8 *gKartWario000Wheel0[];
extern u8 *gKartWario269Wheel0[];
extern u8 *gKartWario269Wheel0[];
extern u8 *gKartWario249Wheel0[];
extern u8 *gKartWario229Wheel0[];
extern u8 *gKartWario229Wheel0[];
extern u8 *gKartWario229Wheel0[];
extern u8 *gKartWario209Wheel0[];
extern u8 *gKartWario189Wheel0[];
extern u8 *gKartWario189Wheel0[];
// extern u8 *gKartMario168Wheel0[];
// extern u8 *gKartMario147Wheel0[];
// extern u8 *gKartMario126Wheel0[];
// extern u8 *gKartMario105Wheel0[];
// extern u8 *gKartMario084Wheel0[];
// extern u8 *gKartMario063Wheel0[];
// extern u8 *gKartMario042Wheel0[];
// extern u8 *gKartMario021Wheel0[];
// extern u8 *gKartMario000Wheel0[];
// extern u8 *gKartMario269Wheel0[];
// extern u8 *gKartMario269Wheel0[];
// extern u8 *gKartMario249Wheel0[];
// extern u8 *gKartMario229Wheel0[];
// extern u8 *gKartMario229Wheel0[];
// extern u8 *gKartMario229Wheel0[];
// extern u8 *gKartMario209Wheel0[];
// extern u8 *gKartMario189Wheel0[];
// extern u8 *gKartMario189Wheel0[];
// extern u8 *gKartLuigi168Wheel0[];
// extern u8 *gKartLuigi147Wheel0[];
// extern u8 *gKartLuigi126Wheel0[];
// extern u8 *gKartLuigi105Wheel0[];
// extern u8 *gKartLuigi084Wheel0[];
// extern u8 *gKartLuigi063Wheel0[];
// extern u8 *gKartLuigi042Wheel0[];
// extern u8 *gKartLuigi021Wheel0[];
// extern u8 *gKartLuigi000Wheel0[];
// extern u8 *gKartLuigi269Wheel0[];
// extern u8 *gKartLuigi269Wheel0[];
// extern u8 *gKartLuigi249Wheel0[];
// extern u8 *gKartLuigi229Wheel0[];
// extern u8 *gKartLuigi229Wheel0[];
// extern u8 *gKartLuigi229Wheel0[];
// extern u8 *gKartLuigi209Wheel0[];
// extern u8 *gKartLuigi189Wheel0[];
// extern u8 *gKartLuigi189Wheel0[];
// extern u8 *gKartBowser168Wheel0[];
// extern u8 *gKartBowser147Wheel0[];
// extern u8 *gKartBowser126Wheel0[];
// extern u8 *gKartBowser105Wheel0[];
// extern u8 *gKartBowser084Wheel0[];
// extern u8 *gKartBowser063Wheel0[];
// extern u8 *gKartBowser042Wheel0[];
// extern u8 *gKartBowser021Wheel0[];
// extern u8 *gKartBowser000Wheel0[];
// extern u8 *gKartBowser269Wheel0[];
// extern u8 *gKartBowser269Wheel0[];
// extern u8 *gKartBowser249Wheel0[];
// extern u8 *gKartBowser229Wheel0[];
// extern u8 *gKartBowser229Wheel0[];
// extern u8 *gKartBowser229Wheel0[];
// extern u8 *gKartBowser209Wheel0[];
// extern u8 *gKartBowser189Wheel0[];
// extern u8 *gKartBowser189Wheel0[];
// extern u8 *gKartToad168Wheel0[];
// extern u8 *gKartToad147Wheel0[];
// extern u8 *gKartToad126Wheel0[];
// extern u8 *gKartToad105Wheel0[];
// extern u8 *gKartToad084Wheel0[];
// extern u8 *gKartToad063Wheel0[];
// extern u8 *gKartToad042Wheel0[];
// extern u8 *gKartToad021Wheel0[];
// extern u8 *gKartToad000Wheel0[];
// extern u8 *gKartToad269Wheel0[];
// extern u8 *gKartToad269Wheel0[];
// extern u8 *gKartToad249Wheel0[];
// extern u8 *gKartToad229Wheel0[];
// extern u8 *gKartToad229Wheel0[];
// extern u8 *gKartToad229Wheel0[];
// extern u8 *gKartToad209Wheel0[];
// extern u8 *gKartToad189Wheel0[];
// extern u8 *gKartToad189Wheel0[];
// extern u8 *gKartYoshi168Wheel0[];
// extern u8 *gKartYoshi147Wheel0[];
// extern u8 *gKartYoshi126Wheel0[];
// extern u8 *gKartYoshi105Wheel0[];
// extern u8 *gKartYoshi084Wheel0[];
// extern u8 *gKartYoshi063Wheel0[];
// extern u8 *gKartYoshi042Wheel0[];
// extern u8 *gKartYoshi021Wheel0[];
// extern u8 *gKartYoshi000Wheel0[];
// extern u8 *gKartYoshi269Wheel0[];
// extern u8 *gKartYoshi269Wheel0[];
// extern u8 *gKartYoshi249Wheel0[];
// extern u8 *gKartYoshi229Wheel0[];
// extern u8 *gKartYoshi229Wheel0[];
// extern u8 *gKartYoshi229Wheel0[];
// extern u8 *gKartYoshi209Wheel0[];
// extern u8 *gKartYoshi189Wheel0[];
// extern u8 *gKartYoshi189Wheel0[];
// extern u8 *gKartDK168Wheel0[];
// extern u8 *gKartDK147Wheel0[];
// extern u8 *gKartDK126Wheel0[];
// extern u8 *gKartDK105Wheel0[];
// extern u8 *gKartDK084Wheel0[];
// extern u8 *gKartDK063Wheel0[];
// extern u8 *gKartDK042Wheel0[];
// extern u8 *gKartDK021Wheel0[];
// extern u8 *gKartDK000Wheel0[];
// extern u8 *gKartDK269Wheel0[];
// extern u8 *gKartDK269Wheel0[];
// extern u8 *gKartDK249Wheel0[];
// extern u8 *gKartDK229Wheel0[];
// extern u8 *gKartDK229Wheel0[];
// extern u8 *gKartDK229Wheel0[];
// extern u8 *gKartDK209Wheel0[];
// extern u8 *gKartDK189Wheel0[];
// extern u8 *gKartDK189Wheel0[];
// extern u8 *gKartPeach168Wheel0[];
// extern u8 *gKartPeach147Wheel0[];
// extern u8 *gKartPeach126Wheel0[];
// extern u8 *gKartPeach105Wheel0[];
// extern u8 *gKartPeach084Wheel0[];
// extern u8 *gKartPeach063Wheel0[];
// extern u8 *gKartPeach042Wheel0[];
// extern u8 *gKartPeach021Wheel0[];
// extern u8 *gKartPeach000Wheel0[];
// extern u8 *gKartPeach269Wheel0[];
// extern u8 *gKartPeach269Wheel0[];
// extern u8 *gKartPeach249Wheel0[];
// extern u8 *gKartPeach229Wheel0[];
// extern u8 *gKartPeach229Wheel0[];
// extern u8 *gKartPeach229Wheel0[];
// extern u8 *gKartPeach209Wheel0[];
// extern u8 *gKartPeach189Wheel0[];
// extern u8 *gKartPeach189Wheel0[];
// extern u8 *gKartWario168Wheel0[];
// extern u8 *gKartWario147Wheel0[];
// extern u8 *gKartWario126Wheel0[];
// extern u8 *gKartWario105Wheel0[];
// extern u8 *gKartWario084Wheel0[];
// extern u8 *gKartWario063Wheel0[];
// extern u8 *gKartWario042Wheel0[];
// extern u8 *gKartWario021Wheel0[];
// extern u8 *gKartWario000Wheel0[];
// extern u8 *gKartWario269Wheel0[];
// extern u8 *gKartWario269Wheel0[];
// extern u8 *gKartWario249Wheel0[];
// extern u8 *gKartWario229Wheel0[];
// extern u8 *gKartWario229Wheel0[];
// extern u8 *gKartWario229Wheel0[];
// extern u8 *gKartWario209Wheel0[];
// extern u8 *gKartWario189Wheel0[];
// extern u8 *gKartWario189Wheel0[];
extern s16 D_80165020[40];
extern Vec3f D_80165070[8];
+4 -5
View File
@@ -102,16 +102,15 @@ s32 find_unused_obj_index(s32* arg0) {
s32 temp_v1;
temp_v1 = objectListSize;
temp_v0 = 0; do
{
temp_v0 = 0;
do {
++temp_v1;
++temp_v0;
if (temp_v1 == 0x226) {
if (temp_v1 == OBJECT_LIST_SIZE) {
temp_v1 = 0;
}
} while ((gObjectList[temp_v1].unk_0CA != 0) && (temp_v0 != 0x226));
} while ((gObjectList[temp_v1].unk_0CA != 0) && (temp_v0 != OBJECT_LIST_SIZE));
gObjectList[temp_v1].unk_0CA = 1;
+15
View File
@@ -0,0 +1,15 @@
:config:
segments:
- [0x0F, 0x8B9630]
no_compression: true
header:
code:
- '#include <libultraship.h>'
header:
- '#include <libultraship.h>'
- '#include <libultra/gbi.h>'
d_course_banshee_boardwalk_vertex:
symbol: d_course_banshee_boardwalk_vertex
type: mk64:course_vtx
count: 9527
offset: 0x0
+15
View File
@@ -0,0 +1,15 @@
:config:
segments:
- [0x0F, 0x8A7640]
no_compression: true
header:
code:
- '#include <libultraship.h>'
header:
- '#include <libultraship.h>'
- '#include <libultra/gbi.h>'
d_course_bowsers_castle_vertex:
symbol: d_course_bowsers_castle_vertex
type: mk64:course_vtx
count: 9527
offset: 0x0
+15
View File
@@ -0,0 +1,15 @@
:config:
segments:
- [0x0F, 0x89B510]
no_compression: true
header:
code:
- '#include <libultraship.h>'
header:
- '#include <libultraship.h>'
- '#include <libultra/gbi.h>'
d_course_choco_mountain_vertex:
symbol: d_course_choco_mountain_vertex
type: mk64:course_vtx
count: 5560
offset: 0x0
+1 -26
View File
@@ -948,7 +948,7 @@ D_0D009158:
symbol: D_0D009158
type: mk64:driving_behaviour
offset: 0x9158
D_0D009158:
D_0D009188:
symbol: D_0D009188
type: mk64:driving_behaviour
offset: 0x9188
@@ -984,31 +984,6 @@ D_0D0093C0:
symbol: D_0D0093C0
type: mk64:driving_behaviour
offset: 0x93C0
D_0D009418:
symbol: D_0D009418
type: inc
offset: 0x9418
ctype: Vec4f
offset: 0x9418
file_path: "assets/course_metadata/D_0D009418.inc.c"
D_0D009568:
symbol: D_0D009568
type: inc
offset: 0x9568
ctype: Vec4f
file_path: "assets/course_metadata/D_0D009568.inc.c"
D_0D0096B8:
symbol: D_0D0096B8
type: inc
offset: 0x96B8
ctype: Vec4f
file_path: "assets/course_metadata/D_0D0096B8.inc.c"
D_0D009808:
symbol: D_0D009808
type: inc
offset: 0x9808
ctype: Vec4f
file_path: "assets/course_metadata/D_0D009808.inc.c"
common_texture_speedometer:
symbol: common_texture_speedometer
type: texture
+15
View File
@@ -0,0 +1,15 @@
:config:
segments:
- [0x0F, 0x8CC900]
no_compression: true
header:
code:
- '#include <libultraship.h>'
header:
- '#include <libultraship.h>'
- '#include <libultra/gbi.h>'
d_course_frappe_snowland_vertex:
symbol: d_course_frappe_snowland_vertex
type: mk64:course_vtx
count: 5529
offset: 0x0
+15
View File
@@ -0,0 +1,15 @@
:config:
segments:
- [0x0F, 0x8D8E50]
no_compression: true
header:
code:
- '#include <libultraship.h>'
header:
- '#include <libultraship.h>'
- '#include <libultra/gbi.h>'
d_course_koopa_troopa_beach_vertex:
symbol: d_course_koopa_troopa_beach_vertex
type: mk64:course_vtx
count: 9376
offset: 0x0
+15
View File
@@ -0,0 +1,15 @@
:config:
segments:
- [0x0F, 0x8FE640]
no_compression: true
header:
code:
- '#include <libultraship.h>'
header:
- '#include <libultraship.h>'
- '#include <libultra/gbi.h>'
d_course_luigi_raceway_vertex:
symbol: d_course_luigi_raceway_vertex
type: mk64:course_vtx
count: 5936
offset: 0x0
+15
View File
@@ -0,0 +1,15 @@
:config:
segments:
- [0x0F, 0x88FA10]
no_compression: true
header:
code:
- '#include <libultraship.h>'
header:
- '#include <libultraship.h>'
- '#include <libultra/gbi.h>'
d_course_mario_raceway_vertex:
symbol: d_course_mario_raceway_vertex
type: mk64:course_vtx
count: 5757
offset: 0x0
+15
View File
@@ -0,0 +1,15 @@
:config:
segments:
- [0x0F, 0x90B3E0]
no_compression: true
header:
code:
- '#include <libultraship.h>'
header:
- '#include <libultraship.h>'
- '#include <libultra/gbi.h>'
d_course_moo_moo_farm_vertex:
symbol: d_course_moo_moo_farm_vertex
type: mk64:course_vtx
count: 7972
offset: 0x0
+15
View File
@@ -0,0 +1,15 @@
:config:
segments:
- [0x0F, 0x8EC390]
no_compression: true
header:
code:
- '#include <libultraship.h>'
header:
- '#include <libultraship.h>'
- '#include <libultra/gbi.h>'
d_course_royal_raceway_vertex:
symbol: d_course_royal_raceway_vertex
type: mk64:course_vtx
count: 8306
offset: 0x0
+15
View File
@@ -0,0 +1,15 @@
:config:
segments:
- [0x0F, 0x91B980]
no_compression: true
header:
code:
- '#include <libultraship.h>'
header:
- '#include <libultraship.h>'
- '#include <libultra/gbi.h>'
d_course_toads_turnpike_vertex:
symbol: d_course_toads_turnpike_vertex
type: mk64:course_vtx
count: 6359
offset: 0x0
+1
View File
@@ -12796,3 +12796,4 @@ yoshi_kart_palette:
width: 16
height: 12
format: RGBA16
+15
View File
@@ -0,0 +1,15 @@
:config:
segments:
- [0x0F, 0x8C2510]
no_compression: true
header:
code:
- '#include <libultraship.h>'
header:
- '#include <libultraship.h>'
- '#include <libultra/gbi.h>'
d_course_yoshi_valley_vertex:
symbol: d_course_yoshi_valley_vertex
type: mk64:course_vtx
count: 3720
offset: 0x0