diff options
| author | MegaMech <MegaMech@users.noreply.github.com> | 2024-04-15 10:53:58 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-15 10:53:58 -0600 |
| commit | d9c1ebb6263cc3a2d494c9ece53edb3c8a2a4b39 (patch) | |
| tree | cffb2a939f6df969461949340fbedc6260241831 /src | |
| parent | 3dd4c071e1ecdf15a30aa37187283f0b974dc825 (diff) | |
Initial gcc Support (#568)
* Added GCC
Diffstat (limited to 'src')
| -rw-r--r-- | src/audio/data.c | 3 | ||||
| -rw-r--r-- | src/audio/data.h | 4 | ||||
| -rw-r--r-- | src/audio/heap.h | 1 | ||||
| -rw-r--r-- | src/code_800029B0.c | 5 | ||||
| -rw-r--r-- | src/code_80057C60.c | 11 | ||||
| -rw-r--r-- | src/code_80057C60.h | 2 | ||||
| -rw-r--r-- | src/code_8006E9C0.c | 2 | ||||
| -rw-r--r-- | src/code_80091750.c | 22 | ||||
| -rw-r--r-- | src/crash_screen.c | 5 | ||||
| -rw-r--r-- | src/data/data_segment2.c | 143 | ||||
| -rw-r--r-- | src/data/trig_tables_bss.c | 13 | ||||
| -rw-r--r-- | src/data_segment2.h | 3 | ||||
| -rw-r--r-- | src/main.c | 19 | ||||
| -rw-r--r-- | src/main.h | 24 | ||||
| -rw-r--r-- | src/os/__osDequeueThread.c | 7 | ||||
| -rw-r--r-- | src/os/__osLeoInterrupt.c | 2 | ||||
| -rw-r--r-- | src/os/libultra_internal.h | 33 | ||||
| -rw-r--r-- | src/os/math/llmuldiv.c | 10 | ||||
| -rw-r--r-- | src/os/osCreateThread.c | 1 | ||||
| -rw-r--r-- | src/os/osEepromLongWrite.c | 3 | ||||
| -rw-r--r-- | src/os/osEepromRead.c | 23 | ||||
| -rw-r--r-- | src/os/osEepromWrite.c | 19 | ||||
| -rw-r--r-- | src/os/osint.h | 5 | ||||
| -rw-r--r-- | src/racing/math_util.c | 1 | ||||
| -rw-r--r-- | src/racing/math_util.h | 1 | ||||
| -rw-r--r-- | src/racing/memory.c | 1 | ||||
| -rw-r--r-- | src/render_objects.c | 14 | ||||
| -rw-r--r-- | src/update_objects.c | 16 |
28 files changed, 242 insertions, 151 deletions
diff --git a/src/audio/data.c b/src/audio/data.c index ffaf3aa58..f1cb322ad 100644 --- a/src/audio/data.c +++ b/src/audio/data.c @@ -1,4 +1,5 @@ #include <PR/ultratypes.h> +#include <macros.h> #include "data.h" #include "effects.h" @@ -440,4 +441,4 @@ u16 D_803B7192; // unconfirmed u32 gAudioRandom; s32 gAudioErrorFlags; u32 D_803B71A0[4]; // unconfirmed -u8 D_803B71B0[4]; // unconfirmed +ALIGNED8 u8 D_803B71B0[4]; // unconfirmed diff --git a/src/audio/data.h b/src/audio/data.h index fe9ca89b0..801137152 100644 --- a/src/audio/data.h +++ b/src/audio/data.h @@ -56,8 +56,8 @@ extern s16 gAiBufferLengths[NUMAIBUFFERS]; // osAiSetNextBuffer nbytes extern u16 D_803B7192; // unconfirmed extern u32 gAudioRandom; extern s32 gAudioErrorFlags; -extern u32 D_803B71A0[4]; // unconfirmed -extern u8 D_803B71B0[4]; // unconfirmed +extern u32 D_803B71A0[]; // unconfirmed +extern u8 D_803B71B0[]; // unconfirmed extern struct ReverbSettingsEU sReverbSettings[]; extern struct AudioSessionSettingsEU gAudioSessionPresets[]; diff --git a/src/audio/heap.h b/src/audio/heap.h index d759eab18..6a8999396 100644 --- a/src/audio/heap.h +++ b/src/audio/heap.h @@ -116,7 +116,6 @@ void *unk_pool1_lookup(s32 poolIdx, s32 id); void func_800BA8B0(s32, s32); extern s32 D_800EA5D0; -extern u8 D_803B71B0[]; extern s32 gMaxAudioCmds; extern s16 gTempoInternalToExternal; diff --git a/src/code_800029B0.c b/src/code_800029B0.c index 86acf4c63..a665de1b8 100644 --- a/src/code_800029B0.c +++ b/src/code_800029B0.c @@ -26,7 +26,6 @@ extern s32 D_802BA038; extern s16 D_802BA048; - s16 gCurrentCourseId = 0; s16 gCurrentlyLoadedCourseId = 0xFF; u16 D_800DC5A8 = 0; @@ -52,7 +51,7 @@ u16 D_800DC5E4 = 0; //! @todo gPlayerWinningIndex (D_800DC5E8) accessed as word, D_800DC5EB as u8 s32 gPlayerWinningIndex = 0; -struct UnkStruct_800DC5EC D_8015F480[4]; +ALIGNED16 struct UnkStruct_800DC5EC D_8015F480[4]; struct UnkStruct_800DC5EC *D_800DC5EC = &D_8015F480[0]; struct UnkStruct_800DC5EC *D_800DC5F0 = &D_8015F480[1]; struct UnkStruct_800DC5EC *D_800DC5F4 = &D_8015F480[2]; @@ -66,7 +65,7 @@ Lights1 D_800DC610[] = { gdSPDefLights1(175, 175, 175, 255, 255, 255, 0, 0, 120), gdSPDefLights1(115, 115, 115, 255, 255, 255, 0, 0, 120), }; -static s32 pad_800029B0 = 0x80000000; +UNUSED s32 pad_800029B0 = 0x80000000; s16 gCreditsCourseId = COURSE_LUIGI_RACEWAY; s16 gPlaceItemBoxes = 1; diff --git a/src/code_80057C60.c b/src/code_80057C60.c index 70698aeeb..053573c47 100644 --- a/src/code_80057C60.c +++ b/src/code_80057C60.c @@ -5722,7 +5722,7 @@ void func_8006A7C0(Player *player, f32 arg1, f32 arg2, s8 arg3, s8 arg4) { } } -void func_8006AFD0(Player *player, s8 arg1, s16 arg2, s8 arg3) { +void render_battle_balloon(Player *player, s8 arg1, s16 arg2, s8 arg3) { Mat4 sp140; Vec3f sp134; Vec3s sp12C; @@ -5848,16 +5848,19 @@ void func_8006B9CC(Player* player, s8 arg1) { void func_8006BA94(Player* player, s8 playerIndex, s8 arg2) { if (gPlayerBalloonStatus[playerIndex][0] != BALLOON_STATUS_GONE) { - func_8006AFD0(player, playerIndex, 0, arg2); + render_battle_balloon(player, playerIndex, 0, arg2); } if (gPlayerBalloonStatus[playerIndex][1] != BALLOON_STATUS_GONE) { - func_8006AFD0(player, playerIndex, 1, arg2); + render_battle_balloon(player, playerIndex, 1, arg2); } if (gPlayerBalloonStatus[playerIndex][2] != BALLOON_STATUS_GONE) { - func_8006AFD0(player, playerIndex, 2, arg2); + render_battle_balloon(player, playerIndex, 2, arg2); } } +/** + * Used in podium ceremony. +*/ void render_balloon(Vec3f arg0, f32 arg1, s16 arg2, s16 arg3) { Mat4 sp108; Vec3f spFC; diff --git a/src/code_80057C60.h b/src/code_80057C60.h index adec3a860..f8f5eeeeb 100644 --- a/src/code_80057C60.h +++ b/src/code_80057C60.h @@ -221,7 +221,7 @@ void func_8006A01C(Player*, s8, s16, s8); void func_8006A280(Player*, s8, s16, s8); void func_8006A50C(Player*, f32, f32, s8, s8, s16); void func_8006A7C0(Player*, f32, f32, s8, s8); -void func_8006AFD0(Player*, s8, s16, s8); +void render_battle_balloon(Player*, s8, s16, s8); void func_8006B7E4(Player*, s8); void func_8006B87C(Player*, s8); diff --git a/src/code_8006E9C0.c b/src/code_8006E9C0.c index 18a044ef4..d9392cdcb 100644 --- a/src/code_8006E9C0.c +++ b/src/code_8006E9C0.c @@ -616,7 +616,7 @@ void init_cloud_object(s32 objectIndex, s32 arg1, CloudData *arg2) { temp_v0->unk_09E = arg2->posY; temp_v0->sizeScaling = (f32) arg2->scalePercent / 100.0; temp_v0->activeTexture = &D_8018D220[arg2->subType]; - func_80073404(objectIndex, 0x40U, 0x20U, &D_0D005FB0); + func_80073404(objectIndex, 0x40U, 0x20U, &D_0D005FB0[0]); temp_v0->primAlpha = 0x00FF; } diff --git a/src/code_80091750.c b/src/code_80091750.c index 2fdbf0c99..1e08b0fa9 100644 --- a/src/code_80091750.c +++ b/src/code_80091750.c @@ -90,7 +90,7 @@ s32 gControllerPak1NumPagesFree; s32 gControllerPak1FileNote; s32 gControllerPak2FileNote; s32 code_80091750_bss_pad2; -SaveData gSaveData; +ALIGNED8 SaveData gSaveData; u8 D_8018ED90; u8 D_8018ED91; @@ -1152,7 +1152,7 @@ s32 D_800E84A0[] = { }; Vtx *D_800E84C0[] = { - D_02007BB8, D_02007CD8, D_02007DF8, + &D_02007BB8[0], &D_02007BB8[18], &D_02007BB8[36], }; Gfx *D_800E84CC[] = { @@ -2791,6 +2791,15 @@ Gfx *func_800959F8(Gfx *displayListHead, Vtx *arg1) { } else { index = ((gTextColor * 2) + ((s32) gGlobalTimer % 2)) - 4; } +#ifdef AVOID_UB + if (arg1 == D_02007BB8) { + gSPDisplayList(displayListHead++, D_800E84CC[index]); + } else if (arg1 == &D_02007BB8[18]) { + gSPDisplayList(displayListHead++, D_800E84EC[index]); + } else if (arg1 == &D_02007BB8[36]) { + gSPDisplayList(displayListHead++, D_800E850C[index]); + } +#else if (arg1 == D_02007BB8) { gSPDisplayList(displayListHead++, D_800E84CC[index]); } else if (arg1 == D_02007CD8) { @@ -2798,6 +2807,9 @@ Gfx *func_800959F8(Gfx *displayListHead, Vtx *arg1) { } else if (arg1 == D_02007DF8) { gSPDisplayList(displayListHead++, D_800E850C[index]); } +#endif + + return displayListHead; } @@ -2863,16 +2875,16 @@ func_80095BD0_label2: gDPLoadTextureTile_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) { default: - var_a1 = D_02007CD8; + var_a1 = &D_02007BB8[18]; break; case 16: - var_a1 = D_02007CD8; + var_a1 = &D_02007BB8[18]; break; case 26: var_a1 = D_02007BB8; break; case 30: - var_a1 = D_02007DF8; + var_a1 = &D_02007BB8[36]; break; } diff --git a/src/crash_screen.c b/src/crash_screen.c index d2225a297..54f77037a 100644 --- a/src/crash_screen.c +++ b/src/crash_screen.c @@ -211,8 +211,7 @@ void thread9_crash_screen(UNUSED void *arg0) // Run only on the first iteration. if (sCounter == 0) { crash_screen_draw_square(pFramebuffer); -//#define SKIP_DRAW_SQUARE -#ifndef SKIP_DRAW_SQUARE +#ifndef DEBUG while(TRUE) { read_controllers(); @@ -231,7 +230,7 @@ void thread9_crash_screen(UNUSED void *arg0) } } #endif -#ifdef CRASH_SCREEN_ENHANCEMENT +#if DEBUG crash_screen_draw(thread); #else crash_screen_draw_info(pFramebuffer, thread); diff --git a/src/data/data_segment2.c b/src/data/data_segment2.c index f2cd14e91..8598f825e 100644 --- a/src/data/data_segment2.c +++ b/src/data/data_segment2.c @@ -3,7 +3,7 @@ #include <PR/ultratypes.h> #include <PR/gbi.h> #include "data_segment2.h" -#include <assets/startup_logo.h>" +#include <assets/startup_logo.h> Gfx D_02007650[] = { gsDPPipeSync(), @@ -104,168 +104,168 @@ Gfx D_02007818[] = { Gfx D_02007838[] = { gsSPVertex(D_02007BB8, 2, 0), - gsSPVertex(D_02007BD8, 2, 2), + gsSPVertex(&D_02007BB8[2], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007858[] = { gsSPVertex(D_02007BB8, 2, 0), - gsSPVertex(D_02007BF8, 2, 2), + gsSPVertex(&D_02007BB8[4], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007878[] = { gsSPVertex(D_02007BB8, 2, 0), - gsSPVertex(D_02007C18, 2, 2), + gsSPVertex(&D_02007BB8[6], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007898[] = { gsSPVertex(D_02007BB8, 2, 0), - gsSPVertex(D_02007C38, 2, 2), + gsSPVertex(&D_02007BB8[8], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_020078B8[] = { gsSPVertex(D_02007BB8, 2, 0), - gsSPVertex(D_02007C58, 2, 2), + gsSPVertex(&D_02007BB8[10], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_020078D8[] = { gsSPVertex(D_02007BB8, 2, 0), - gsSPVertex(D_02007C78, 2, 2), + gsSPVertex(&D_02007BB8[12], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_020078F8[] = { gsSPVertex(D_02007BB8, 2, 0), - gsSPVertex(D_02007C98, 2, 2), + gsSPVertex(&D_02007BB8[14], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007918[] = { gsSPVertex(D_02007BB8, 2, 0), - gsSPVertex(D_02007CB8, 2, 2), + gsSPVertex(&D_02007BB8[16], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007938[] = { - gsSPVertex(D_02007CD8, 2, 0), - gsSPVertex(D_02007CF8, 2, 2), + gsSPVertex(&D_02007BB8[18], 2, 0), + gsSPVertex(&D_02007BB8[20], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007958[] = { - gsSPVertex(D_02007CD8, 2, 0), - gsSPVertex(D_02007D18, 2, 2), + gsSPVertex(&D_02007BB8[18], 2, 0), + gsSPVertex(&D_02007BB8[22], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007978[] = { - gsSPVertex(D_02007CD8, 2, 0), - gsSPVertex(D_02007D38, 2, 2), + gsSPVertex(&D_02007BB8[18], 2, 0), + gsSPVertex(&D_02007BB8[24], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007998[] = { - gsSPVertex(D_02007CD8, 2, 0), - gsSPVertex(D_02007D58, 2, 2), + gsSPVertex(&D_02007BB8[18], 2, 0), + gsSPVertex(&D_02007BB8[26], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_020079B8[] = { - gsSPVertex(D_02007CD8, 2, 0), - gsSPVertex(D_02007D78, 2, 2), + gsSPVertex(&D_02007BB8[18], 2, 0), + gsSPVertex(&D_02007BB8[28], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_020079D8[] = { - gsSPVertex(D_02007CD8, 2, 0), - gsSPVertex(D_02007D98, 2, 2), + gsSPVertex(&D_02007BB8[18], 2, 0), + gsSPVertex(&D_02007BB8[30], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_020079F8[] = { - gsSPVertex(D_02007CD8, 2, 0), - gsSPVertex(D_02007DB8, 2, 2), + gsSPVertex(&D_02007BB8[18], 2, 0), + gsSPVertex(&D_02007BB8[32], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007A18[] = { - gsSPVertex(D_02007CD8, 2, 0), - gsSPVertex(D_02007DD8, 2, 2), + gsSPVertex(&D_02007BB8[18], 2, 0), + gsSPVertex(&D_02007BB8[34], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007A38[] = { - gsSPVertex(D_02007DF8, 2, 0), - gsSPVertex(D_02007E18, 2, 2), + gsSPVertex(&D_02007BB8[36], 2, 0), + gsSPVertex(&D_02007BB8[38], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007A58[] = { - gsSPVertex(D_02007DF8, 2, 0), - gsSPVertex(D_02007E38, 2, 2), + gsSPVertex(&D_02007BB8[36], 2, 0), + gsSPVertex(&D_02007BB8[40], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007A78[] = { - gsSPVertex(D_02007DF8, 2, 0), - gsSPVertex(D_02007E58, 2, 2), + gsSPVertex(&D_02007BB8[36], 2, 0), + gsSPVertex(&D_02007BB8[42], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007A98[] = { - gsSPVertex(D_02007DF8, 2, 0), - gsSPVertex(D_02007E78, 2, 2), + gsSPVertex(&D_02007BB8[36], 2, 0), + gsSPVertex(&D_02007BB8[44], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007AB8[] = { - gsSPVertex(D_02007DF8, 2, 0), - gsSPVertex(D_02007E98, 2, 2), + gsSPVertex(&D_02007BB8[36], 2, 0), + gsSPVertex(&D_02007BB8[46], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007AD8[] = { - gsSPVertex(D_02007DF8, 2, 0), - gsSPVertex(D_02007EB8, 2, 2), + gsSPVertex(&D_02007BB8[36], 2, 0), + gsSPVertex(&D_02007BB8[48], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007AF8[] = { - gsSPVertex(D_02007DF8, 2, 0), - gsSPVertex(D_02007ED8, 2, 2), + gsSPVertex(&D_02007BB8[36], 2, 0), + gsSPVertex(&D_02007BB8[50], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007B18[] = { - gsSPVertex(D_02007DF8, 2, 0), - gsSPVertex(D_02007EF8, 2, 2), + gsSPVertex(&D_02007BB8[36], 2, 0), + gsSPVertex(&D_02007BB8[52], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; @@ -281,8 +281,64 @@ UNUSED Vtx D_02007B38[] = { {{{ 0, 0, 0}, 0, { 0, 448}, {0xff, 0x00, 0x00, 0xff}}}, }; -//! @todo Place all these vertices in a single array -// Access the correct vertex using sym[value] +#ifdef AVOID_UB +Vtx D_02007BB8[] = { + {{{ 0, 65520, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{26, 65520, 0}, 0, {1600, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{26, 0, 0}, 0, {1600, 960}, {0x00, 0x00, 0xff, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0x00, 0x00, 0xff, 0xff}}}, + {{{26, 0, 0}, 0, {1600, 960}, {0x00, 0xff, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0x00, 0xff, 0x00, 0xff}}}, + {{{26, 0, 0}, 0, {1600, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{26, 0, 0}, 0, {1600, 960}, {0xff, 0xff, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0xff, 0x00, 0xff}}}, + {{{26, 0, 0}, 0, {1600, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{26, 0, 0}, 0, {1600, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{26, 0, 0}, 0, {1600, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{26, 0, 0}, 0, {1600, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 65520, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{16, 65520, 0}, 0, {960, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{16, 0, 0}, 0, {960, 960}, {0x00, 0x00, 0xff, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0x00, 0x00, 0xff, 0xff}}}, + {{{16, 0, 0}, 0, {960, 960}, {0x00, 0xff, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0x00, 0xff, 0x00, 0xff}}}, + {{{16, 0, 0}, 0, {960, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{16, 0, 0}, 0, {960, 960}, {0xff, 0xff, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0xff, 0x00, 0xff}}}, + {{{16, 0, 0}, 0, {960, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{16, 0, 0}, 0, {960, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{16, 0, 0}, 0, {960, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{16, 0, 0}, 0, {960, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 65504, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{30, 65504, 0}, 0, {1856, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{30, 0, 0}, 0, {1856, 1984}, {0x00, 0x00, 0xff, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 1984}, {0x00, 0x00, 0xff, 0xff}}}, + {{{30, 0, 0}, 0, {1856, 1984}, {0x00, 0xff, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 1984}, {0x00, 0xff, 0x00, 0xff}}}, + {{{30, 0, 0}, 0, {1856, 1984}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 1984}, {0xff, 0x00, 0x00, 0xff}}}, + {{{30, 0, 0}, 0, {1856, 1984}, {0xff, 0xff, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 1984}, {0xff, 0xff, 0x00, 0xff}}}, + {{{30, 0, 0}, 0, {1856, 1984}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 1984}, {0xff, 0x00, 0x00, 0xff}}}, + {{{30, 0, 0}, 0, {1856, 1984}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 1984}, {0xff, 0x00, 0x00, 0xff}}}, + {{{30, 0, 0}, 0, {1856, 1984}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 1984}, {0xff, 0x00, 0x00, 0xff}}}, + {{{30, 0, 0}, 0, {1856, 1984}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 1984}, {0xff, 0x00, 0x00, 0xff}}}, +}; +#else Vtx D_02007BB8[] = { {{{ 0, 65520, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, {{{26, 65520, 0}, 0, {1600, 0}, {0xff, 0xff, 0xff, 0xff}}}, @@ -417,6 +473,7 @@ Vtx D_02007EF8[] = { {{{30, 0, 0}, 0, {1856, 1984}, {0xff, 0x00, 0x00, 0xff}}}, {{{ 0, 0, 0}, 0, { 0, 1984}, {0xff, 0x00, 0x00, 0xff}}}, }; +#endif Gfx D_02007F18[] = { gsDPPipeSync(), diff --git a/src/data/trig_tables_bss.c b/src/data/trig_tables_bss.c new file mode 100644 index 000000000..aa2bc38d1 --- /dev/null +++ b/src/data/trig_tables_bss.c @@ -0,0 +1,13 @@ +#include <ultra64.h> +#include <macros.h> + +/** + * Trig tables get loaded into memory at this location. + * See trig_tables.c for the real file. + */ + +#ifdef VERSION_EU +ALIGNED8 u8 trigTablesPadding[0x5750]; +#else +ALIGNED8 u8 trigTablesPadding[0x5810]; +#endif diff --git a/src/data_segment2.h b/src/data_segment2.h index 0a0d5eb1d..f69f6a4d0 100644 --- a/src/data_segment2.h +++ b/src/data_segment2.h @@ -51,6 +51,7 @@ extern Gfx D_02008058[]; extern Gfx common_rectangle_display[]; extern Vtx D_02007BB8[]; +#ifndef AVOID_UB extern Vtx D_02007BD8[]; extern Vtx D_02007BF8[]; extern Vtx D_02007C18[]; @@ -77,5 +78,7 @@ extern Vtx D_02007E98[]; extern Vtx D_02007EB8[]; extern Vtx D_02007ED8[]; extern Vtx D_02007EF8[]; +#endif + #endif diff --git a/src/main.c b/src/main.c index 78222bca6..873d8efd6 100644 --- a/src/main.c +++ b/src/main.c @@ -1,4 +1,6 @@ -#define STRANGE_MAIN_HEADER_H +#ifndef GCC +#define D_800DC510_AS_U16 +#endif #include <ultra64.h> #include <PR/os.h> #include <PR/ucode.h> @@ -83,11 +85,11 @@ Player *gPlayerTwoCopy = &gPlayers[1]; UNUSED Player *gPlayerThreeCopy = &gPlayers[2]; UNUSED Player *gPlayerFourCopy = &gPlayers[3]; -s32 D_800FD850[3]; +UNUSED s32 D_800FD850[3]; struct GfxPool gGfxPools[2]; struct GfxPool *gGfxPool; -s32 gfxPool_padding; // is this necessary? +UNUSED s32 gfxPool_padding; // is this necessary? struct VblankHandler gGameVblankHandler; struct VblankHandler sSoundVblankHandler; OSMesgQueue gDmaMesgQueue, gGameVblankQueue, gGfxVblankQueue, unused_gMsgQueue, gIntrMesgQueue, gSPTaskMesgQueue; @@ -103,15 +105,14 @@ OSMesgQueue gSIEventMesgQueue; OSMesg gSIEventMesgBuf[3]; OSContStatus gControllerStatuses[4]; - OSContPad gControllerPads[4]; u8 gControllerBits; - struct UnkStruct_8015F584 D_8014F110[1024]; u16 gNumActors; u16 gMatrixObjectCount; s32 gTickSpeed; f32 D_80150118; + u16 wasSoftReset; u16 D_8015011E; @@ -120,9 +121,6 @@ s32 gGotoMode; UNUSED s32 D_80150128; UNUSED s32 D_8015012C; f32 gCameraZoom[4]; // look like to be the fov of each character -//f32 D_80150134; -//f32 D_80150138; -//f32 D_8015013C; UNUSED s32 D_80150140; UNUSED s32 D_80150144; f32 gScreenAspect; @@ -133,6 +131,7 @@ UNUSED f32 D_80150154; struct D_80150158 gD_80150158[16]; uintptr_t gSegmentTable[16]; Gfx *gDisplayListHead; + struct SPTask *gGfxSPTask; s32 D_801502A0; s32 D_801502A4; @@ -161,8 +160,8 @@ ALIGNED8 u8 gAudioThreadStack[STACKSIZE]; UNUSED OSThread D_8015CD30; UNUSED ALIGNED8 u8 D_8015CD30_Stack[STACKSIZE / 2]; -u8 gGfxSPTaskYieldBuffer[4352]; -u32 gGfxSPTaskStack[256]; +ALIGNED8 u8 gGfxSPTaskYieldBuffer[4352]; +ALIGNED8 u32 gGfxSPTaskStack[256]; OSMesg gPIMesgBuf[32]; OSMesgQueue gPIMesgQueue; diff --git a/src/main.h b/src/main.h index eca35b4a5..b4f759d85 100644 --- a/src/main.h +++ b/src/main.h @@ -136,23 +136,21 @@ extern Player *gPlayerEight; extern Player *gPlayerOneCopy; extern Player *gPlayerTwoCopy; -extern s32 D_800FD850[]; extern struct GfxPool gGfxPools[]; extern struct GfxPool *gGfxPool; -extern s32 gfxPool_padding; extern struct VblankHandler gGameVblankHandler; extern struct VblankHandler sSoundVblankHandler; extern OSMesgQueue gDmaMesgQueue, gGameVblankQueue, gGfxVblankQueue, unused_gMsgQueue, gIntrMesgQueue, gSPTaskMesgQueue; extern OSMesgQueue sSoundMesgQueue; -extern OSMesg sSoundMesgBuf[]; -extern OSMesg gDmaMesgBuf[], gGameMesgBuf; +extern OSMesg sSoundMesgBuf[1]; +extern OSMesg gDmaMesgBuf[1], gGameMesgBuf; extern OSMesg gGfxMesgBuf[]; -extern OSMesg gIntrMesgBuf[], gSPTaskMesgBuf[]; +extern OSMesg gIntrMesgBuf[16], gSPTaskMesgBuf[16]; extern OSMesg gMainReceivedMesg; extern OSIoMesg gDmaIoMesg; extern OSMesgQueue gSIEventMesgQueue; -extern OSMesg gSIEventMesgBuf[]; +extern OSMesg gSIEventMesgBuf[3]; extern OSContStatus gControllerStatuses[]; @@ -203,11 +201,19 @@ extern u8 gGfxSPTaskYieldBuffer[]; extern u32 gGfxSPTaskStack[]; extern OSMesg gPIMesgBuf[]; extern OSMesgQueue gPIMesgQueue; - +void race_logic_loop(void); extern s32 gGamestate; -#ifndef STRANGE_MAIN_HEADER_H -extern s32 D_800DC510; +#ifndef D_800DC510_AS_U16 + // Prevent overlapping writes in gcc + // Whether D_800DC510 was intended to be a separate variable in main.c from the rest of the game is unknown + #ifdef GCC + extern u16 D_800DC510; + #else + extern s32 D_800DC510; + #endif #endif + +extern u16 D_800DC514; extern u16 creditsRenderMode; extern u16 gDemoMode; extern u16 gEnableDebugMode; diff --git a/src/os/__osDequeueThread.c b/src/os/__osDequeueThread.c index a9b01fcfc..7f4287cdd 100644 --- a/src/os/__osDequeueThread.c +++ b/src/os/__osDequeueThread.c @@ -1,10 +1,15 @@ #include "libultra_internal.h" -OSThreadTail __osThreadTail = {NULL, -1}; +#ifndef AVOID_UB +OSThread *__osThreadTail = NULL; +u32 __osTest = -1; OSThread *__osRunQueue = (OSThread *) &__osThreadTail; OSThread *__osActiveQueue = (OSThread *) &__osThreadTail; OSThread *__osRunningThread = NULL; OSThread *__osFaultedThread = NULL; +#else +OSThread_ListHead __osThreadTail_fix = {NULL, -1, (OSThread *) &__osThreadTail_fix, (OSThread *) &__osThreadTail_fix, NULL, 0}; +#endif void __osDequeueThread(OSThread **queue, OSThread *thread) { register OSThread **a2; diff --git a/src/os/__osLeoInterrupt.c b/src/os/__osLeoInterrupt.c index d08a40e5e..e77c5af6d 100644 --- a/src/os/__osLeoInterrupt.c +++ b/src/os/__osLeoInterrupt.c @@ -1,8 +1,8 @@ #include "ultra64.h" #include "osint.h" #include "piint.h" +#include "libultra_internal.h" -extern OSThread *__osRunQueue; static void __osLeoResume(void); static void __osLeoAbnormalResume(void); extern u8 leoDiskStack[OS_PIM_STACKSIZE]; //technically should have a OS_LEO_STACKSIZE or something.. diff --git a/src/os/libultra_internal.h b/src/os/libultra_internal.h index 3e7032370..5a6027f75 100644 --- a/src/os/libultra_internal.h +++ b/src/os/libultra_internal.h @@ -1,6 +1,7 @@ #ifndef _LIBULTRA_INTERNAL_H_ #define _LIBULTRA_INTERNAL_H_ #include <ultra64.h> +#include <PR/os_thread.h> #include "macros.h" typedef struct __OSEventState @@ -15,15 +16,41 @@ typedef struct __osThreadTail OSPri priority; } OSThreadTail; +/* + * This define is needed because the original definitions in __osDequeueThread.c are declared + * seperately instead of part of a single struct, however some code alises over this memory + * assuming a unified structure. To fix this, we declare the full type here and then alias the + * symbol names to the correct members in AVOID_UB. + */ +typedef struct +{ + /*0x00*/ struct OSThread_s *next; + /*0x04*/ OSPri priority; + /*0x08*/ struct OSThread_s *queue; + /*0x0C*/ struct OSThread_s *tlnext; + /*0x10*/ struct OSThread_s *unk10; + /*0x14*/ u32 unk14; +} OSThread_ListHead; +#ifdef AVOID_UB + +// Now fix the symbols to the new one. +extern OSThread_ListHead __osThreadTail_fix; + +#define __osThreadTail __osThreadTail_fix.next +#define D_80334894 __osThreadTail_fix.priority +#define __osRunQueue __osThreadTail_fix.queue +#define __osActiveQueue __osThreadTail_fix.tlnext +#define __osRunningThread __osThreadTail_fix.unk10 +#else // Original OSThread_ListHead definitions -extern OSThreadTail __osThreadTail; +extern OSThread *__osThreadTail; extern OSThread *__osActiveQueue; extern OSThread *__osRunQueue; extern OSThread *__osRunningThread; - +#endif // Original EEPROM definitions -extern ALIGNED8 u32 D_80365E00[15]; +extern u32 D_80365E00[15]; extern u32 D_80365E3C; typedef struct { diff --git a/src/os/math/llmuldiv.c b/src/os/math/llmuldiv.c index e64b9d0c8..2af91aae5 100644 --- a/src/os/math/llmuldiv.c +++ b/src/os/math/llmuldiv.c @@ -7,7 +7,7 @@ unsigned long long __ull_rem(unsigned long long a0, unsigned long long a1) return a0 % a1; } unsigned long long __ull_div(unsigned long long a0, unsigned long long a1) -{ +{ return a0 / a1; } @@ -34,19 +34,19 @@ unsigned long long __ll_mul(unsigned long long a0, unsigned long long a1) void __ull_divremi(unsigned long long *div, unsigned long long *rem, unsigned long long a2, unsigned short a3) { *div = a2 / a3; - *rem = a2 % a3; -} + *rem = a2 % a3; +} long long __ll_mod(long long a0, long long a1) { long long tmp = a0 % a1; if ((tmp < 0 && a1 > 0) || (tmp > 0 && a1 < 0)) { - tmp += a1; + tmp += a1; } return tmp; } - + long long __ll_rshift(long long a0, long long a1) { return a0 >> a1; diff --git a/src/os/osCreateThread.c b/src/os/osCreateThread.c index d714a8eba..93a6f241f 100644 --- a/src/os/osCreateThread.c +++ b/src/os/osCreateThread.c @@ -1,7 +1,6 @@ #include "libultra_internal.h" void __osCleanupThread(void); -extern OSThread *__osActiveQueue; // Don't warn about pointer->u64 cast diff --git a/src/os/osEepromLongWrite.c b/src/os/osEepromLongWrite.c index 8a7f72e60..d68104ccd 100644 --- a/src/os/osEepromLongWrite.c +++ b/src/os/osEepromLongWrite.c @@ -1,8 +1,7 @@ #include "libultra_internal.h" +#include "controller.h" -extern u64 osClockRate; extern u8 D_80365D20; -extern u8 _osContNumControllers; extern OSTimer D_80196548; extern OSMesgQueue _osContMesgQueue; extern OSMesg _osContMesgBuff[4]; diff --git a/src/os/osEepromRead.c b/src/os/osEepromRead.c index a3fc3a4b3..040594444 100644 --- a/src/os/osEepromRead.c +++ b/src/os/osEepromRead.c @@ -1,30 +1,11 @@ #include "libultra_internal.h" -#include "controller.h" #include "macros.h" +#include "controller.h" -extern u8 __osContLastCmd; +extern u8 _osLastSentSiCmd; extern OSPifRam __osEepPifRam; -typedef struct { - u8 unk00; - u8 unk01; - u8 unk02; - u8 unk03; - u8 unk04; - u8 unk05; - u8 unk06; - u8 unk07; -} unkStruct3; - -typedef struct { - u8 unk00; - u8 unk01; - u8 unk02; - u8 unk03; - unkStruct3 unk04; -} unkStruct2; - s32 __osEepStatus(OSMesgQueue *, OSContStatus *); void __osPackEepReadData(u8); diff --git a/src/os/osEepromWrite.c b/src/os/osEepromWrite.c index 845432502..a48f6873b 100644 --- a/src/os/osEepromWrite.c +++ b/src/os/osEepromWrite.c @@ -7,25 +7,6 @@ OSPifRam __osEepPifRam; extern u8 __osContLastCmd; -typedef struct { - u8 unk00; - u8 unk01; - u8 unk02; - u8 unk03; - u8 unk04; - u8 unk05; - u8 unk06; - u8 unk07; -} unkStruct3; - -typedef struct { - u8 unk00; - u8 unk01; - u8 unk02; - u8 unk03; - unkStruct3 unk04; -} unkStruct2; - s32 __osEepStatus(OSMesgQueue *, OSContStatus *); void __osPackEepWriteData(u8, u8 *); diff --git a/src/os/osint.h b/src/os/osint.h index f607d6a6e..9e35c1edb 100644 --- a/src/os/osint.h +++ b/src/os/osint.h @@ -1,6 +1,7 @@ #ifndef _OSINT_H #define _OSINT_H #include "libultra_internal.h" +#include <macros.h> //maybe should be in exceptasm.h? extern void __osEnqueueAndYield(OSThread **); @@ -15,10 +16,14 @@ extern void __osTimerInterrupt(void); extern u32 __osProbeTLB(void *); extern int __osSpDeviceBusy(void); +#ifdef AVOID_UB +extern OSThread_ListHead __osThreadTail_fix; +#else extern OSThread *__osRunningThread; extern OSThread *__osActiveQueue; extern OSThread *__osFaultedThread; extern OSThread *__osRunQueue; +#endif extern OSTimer *__osTimerList; extern OSTimer __osBaseTimer; diff --git a/src/racing/math_util.c b/src/racing/math_util.c index c28210f63..a49ff6a4e 100644 --- a/src/racing/math_util.c +++ b/src/racing/math_util.c @@ -7,6 +7,7 @@ #include <PR/rcp.h> #include "buffers/trig_tables.h" #include "math.h" +#include "memory.h" #pragma intrinsic (sqrtf,fabs) diff --git a/src/racing/math_util.h b/src/racing/math_util.h index d9ee99e63..3addd2a9e 100644 --- a/src/racing/math_util.h +++ b/src/racing/math_util.h @@ -22,6 +22,7 @@ s32 render_set_position(Mat4, s32); f32 func_802B51E8(Vec3f, Vec3f); s32 get_angle_between_two_vectors(Vec3f, Vec3f); u32 func_802B5258(Vec3f, Vec3s); +void func_802B5794(Mat4, Vec3f, Vec3f); void vec3f_set(Vec3f, f32, f32, f32); void vec3s_set(Vec3s, s16, s16, s16); void *vec3f_copy_return(Vec3f, Vec3f); diff --git a/src/racing/memory.c b/src/racing/memory.c index 013c1c62c..41f7ef535 100644 --- a/src/racing/memory.c +++ b/src/racing/memory.c @@ -26,6 +26,7 @@ struct UnkStruct_802B8CD4 D_802B8CD4[] = { 0 }; s32 D_802B8CE4 = 0; // pad +s32 memoryPadding[2]; /** * @brief Returns the address of the next available memory location and updates the memory pointer diff --git a/src/render_objects.c b/src/render_objects.c index 457d5acce..6519871b3 100644 --- a/src/render_objects.c +++ b/src/render_objects.c @@ -563,19 +563,19 @@ UNUSED void func_80046C78(s32 arg0, s32 arg1, u16 arg2, f32 arg3, u8 *texture) { } UNUSED void func_80046CDC(s32 arg0, s32 arg1, u16 arg2, f32 arg3, u8 *texture) { - func_800464D0(arg0, arg1, arg2, arg3, texture, &D_0D005FB0, 64, 32, 64, 32); + func_800464D0(arg0, arg1, arg2, arg3, texture, D_0D005FB0, 64, 32, 64, 32); } UNUSED void func_80046D40(Vec3f arg0, Vec3su arg1, f32 arg2, u8 *texture) { - func_80046808(arg0, arg1, arg2, texture, &D_0D005FB0, 64, 32, 64, 32); + func_80046808(arg0, arg1, arg2, texture, D_0D005FB0, 64, 32, 64, 32); } UNUSED void func_80046D90(s32 arg0, s32 arg1, u16 arg2, f32 arg3, u8 *texture) { - func_800464D0(arg0, arg1, arg2, arg3, texture, D_0D0060B0, 64, 64, 64, 32); + func_800464D0(arg0, arg1, arg2, arg3, texture, common_vtx_hedgehog, 64, 64, 64, 32); } UNUSED void func_80046DF4(s32 arg0, s32 arg1, u16 arg2, f32 arg3, s32 arg4, u8 *texture) { - func_800465B8(arg0, arg1, arg2, arg3, arg4, texture, D_0D0060B0, 64, 64, 64, 32); + func_800465B8(arg0, arg1, arg2, arg3, arg4, texture, common_vtx_hedgehog, 64, 64, 64, 32); } void load_texture_and_tlut(u8 *tlut, u8 *texture, s32 width, s32 height) { @@ -3528,7 +3528,7 @@ void func_80053D74(s32 objectIndex, UNUSED s32 arg1, s32 vertexIndex) { D_80183E80[2] = (s16) (temp_v0->unk_084[6] + 0x8000); rsp_set_matrix_transformation(temp_v0->pos, (u16 *) D_80183E80, temp_v0->sizeScaling); set_color_render((s32) temp_v0->unk_084[0], (s32) temp_v0->unk_084[1], (s32) temp_v0->unk_084[2], (s32) temp_v0->unk_084[3], (s32) temp_v0->unk_084[4], (s32) temp_v0->unk_084[5], (s32) temp_v0->primAlpha); - gSPVertex(gDisplayListHead++, &D_0D0060B0[vertexIndex], 4, 0); + gSPVertex(gDisplayListHead++, &common_vtx_hedgehog[vertexIndex], 4, 0); gSPDisplayList(gDisplayListHead++, common_rectangle_display); } } @@ -3906,7 +3906,7 @@ void draw_crabs(s32 objectIndex, s32 cameraId) { camera = &camera1[cameraId]; func_8004A6EC(objectIndex, 0.5f); gObjectList[objectIndex].orientation[1] = func_800418AC(gObjectList[objectIndex].pos[0], gObjectList[objectIndex].pos[2], camera->pos); - draw_2d_texture_at(gObjectList[objectIndex].pos, gObjectList[objectIndex].orientation, gObjectList[objectIndex].sizeScaling, (u8 *) gObjectList[objectIndex].activeTLUT, gObjectList[objectIndex].activeTexture, D_0D0060B0, 0x00000040, 0x00000040, 0x00000040, 0x00000020); + draw_2d_texture_at(gObjectList[objectIndex].pos, gObjectList[objectIndex].orientation, gObjectList[objectIndex].sizeScaling, (u8 *) gObjectList[objectIndex].activeTLUT, gObjectList[objectIndex].activeTexture, common_vtx_hedgehog, 0x00000040, 0x00000040, 0x00000040, 0x00000020); } } @@ -4161,7 +4161,7 @@ void render_object_neon(s32 cameraId) { object = &gObjectList[objectIndex]; if ((object->state >= 2) && (is_obj_index_flag_status_inactive(objectIndex, 0x00080000) != 0) && (is_object_visible_on_camera(objectIndex, camera, 0x2AABU) != 0)) { object->orientation[1] = angle_between_object_camera(objectIndex, camera); - draw_2d_texture_at(object->pos, object->orientation, object->sizeScaling, (u8 *) object->activeTLUT, object->activeTexture, D_0D0060B0, 0x00000040, 0x00000040, 0x00000040, 0x00000020); + draw_2d_texture_at(object->pos, object->orientation, object->sizeScaling, (u8 *) object->activeTLUT, object->activeTexture, common_vtx_hedgehog, 0x00000040, 0x00000040, 0x00000040, 0x00000020); } } } diff --git a/src/update_objects.c b/src/update_objects.c index 02038fdc7..298ca5e02 100644 --- a/src/update_objects.c +++ b/src/update_objects.c @@ -2955,7 +2955,7 @@ void init_obj_lakitu_red_flag_countdown(s32 objectIndex, s32 arg1) { D_8018D168 = 0; } init_texture_object(objectIndex, (u8 *) common_tlut_lakitu_countdown, gTextureLakituNoLights1, 0x38U, (u16) 0x00000048); - gObjectList[objectIndex].vertex = D_0D005EB0; + gObjectList[objectIndex].vertex = common_vtx_lakitu; gObjectList[objectIndex].sizeScaling = 0.15f; set_object_flag_status_false(objectIndex, 0x00000010); func_80072488(objectIndex); @@ -3048,7 +3048,7 @@ void init_obj_lakitu_red_flag(s32 objectIndex, s32 playerIndex) { init_texture_object(objectIndex, common_tlut_lakitu_checkered_flag, gTextureLakituCheckeredFlag01, 0x48U, (u16) 0x00000038); temp_v0 = &gObjectList[objectIndex]; temp_v0->activeTexture = D_8018C028; - temp_v0->vertex = D_0D006730; + temp_v0->vertex = common_vtx_also_lakitu; temp_v0->pos[2] = 5000.0f; temp_v0->pos[1] = 5000.0f; temp_v0->pos[0] = 5000.0f; @@ -3298,7 +3298,7 @@ void func_8007A060(s32 objectIndex, s32 playerIndex) { init_texture_object(objectIndex, common_tlut_lakitu_second_lap, gTextureLakituSecondLap01, 0x48U, (u16) 0x00000038); temp_v0 = &gObjectList[objectIndex]; temp_v0->activeTexture = D_8018C028; - temp_v0->vertex = D_0D006730; + temp_v0->vertex = common_vtx_also_lakitu; temp_v0->pos[2] = 5000.0f; temp_v0->pos[1] = 5000.0f; temp_v0->pos[0] = 5000.0f; @@ -3346,7 +3346,7 @@ void func_8007A228(s32 objectIndex, s32 playerIndex) { init_texture_object(objectIndex, common_tlut_lakitu_final_lap, gTextureLakituFinalLap01, 0x48U, (u16) 0x00000038); temp_v0 = &gObjectList[objectIndex]; temp_v0->activeTexture = D_8018C028; - temp_v0->vertex = D_0D006730; + temp_v0->vertex = common_vtx_also_lakitu; temp_v0->pos[2] = 5000.0f; temp_v0->pos[1] = 5000.0f; temp_v0->pos[0] = 5000.0f; @@ -3392,7 +3392,7 @@ void func_8007A3F0(s32 objectIndex, s32 arg1) { func_800791F0(objectIndex, arg1); init_texture_object(objectIndex, common_tlut_lakitu_reverse, gTextureLakituReverse01, 0x48U, (u16) 0x00000038); gObjectList[objectIndex].activeTexture = D_8018C028; - gObjectList[objectIndex].vertex = D_0D006730; + gObjectList[objectIndex].vertex = common_vtx_also_lakitu; gObjectList[objectIndex].pos[2] = var; gObjectList[objectIndex].pos[1] = var; gObjectList[objectIndex].pos[0] = var; @@ -6698,7 +6698,7 @@ void func_8008311C(s32 objectIndex, s32 arg1) { temp_s0 = &gObjectList[objectIndex]; temp_s0->activeTLUT = d_course_yoshi_valley_hedgehog_tlut; temp_s0->activeTexture = d_course_yoshi_valley_hedgehog; - temp_s0->vertex = D_0D0060B0; + temp_s0->vertex = common_vtx_hedgehog; temp_s0->sizeScaling = 0.2f; temp_s0->itemDisplay = 0; func_80072488(objectIndex); @@ -6754,7 +6754,7 @@ void func_800833D0(s32 objectIndex, s32 arg1) { break; } if (gObjectList[objectIndex].itemDisplay == 0) { - gObjectList[objectIndex].vertex = D_0D0060B0; + gObjectList[objectIndex].vertex = common_vtx_hedgehog; } else { gObjectList[objectIndex].vertex = D_0D006130; } @@ -6897,7 +6897,7 @@ void func_80083A94(s32 objectIndex) { void func_80083B0C(s32 objectIndex) { init_texture_object(objectIndex, d_course_frappe_snowland_snowman_tlut, d_course_frappe_snowland_snowman_body, 0x40U, (u16) 0x00000040); - gObjectList[objectIndex].vertex = D_0D0060B0; + gObjectList[objectIndex].vertex = common_vtx_hedgehog; gObjectList[objectIndex].sizeScaling = 0.1f; gObjectList[objectIndex].itemDisplay = 0; func_80072488(objectIndex); |
