match func_80099AEC and fix some warnings (#699)

* match func_80099AEC and fix some warnings
This commit is contained in:
Alejandro Asenjo Nitti 2025-01-24 13:18:03 -05:00 committed by GitHub
parent 731b24eabf
commit 809450525a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 130 additions and 131 deletions

View File

@ -349,7 +349,7 @@ CC_CHECK ?= gcc
CC_CHECK_CFLAGS := -fsyntax-only -fsigned-char $(CC_CFLAGS) $(TARGET_CFLAGS) -std=gnu90 -Wall -Wempty-body -Wextra -Wno-format-security -Wno-main -DNON_MATCHING -DAVOID_UB $(DEF_INC_CFLAGS)
# C compiler options
HIDE_WARNINGS := -woff 838,649
HIDE_WARNINGS := -woff 838,649,807
CFLAGS = -G 0 $(OPT_FLAGS) $(TARGET_CFLAGS) $(MIPSISET) $(DEF_INC_CFLAGS)
ifeq ($(COMPILER),gcc)
CFLAGS += -mno-shared -march=vr4300 -mfix4300 -mabi=32 -mhard-float -mdivide-breaks -fno-stack-protector -fno-common -fno-zero-initialized-in-bss -fno-PIC -mno-abicalls -fno-strict-aliasing -fno-inline-functions -ffreestanding -fwrapv -Wall -Wextra

View File

@ -18,7 +18,7 @@ This stuff is all about the b-splines used objects like Lakitu and the Boos on B
For splines used during the award ceremony and credits, see src/ending/ceremony_and_credits.h
*/
typedef struct {
typedef struct SplineControlPoint {
/* 0x0 */ Vec3s pos;
// Don't really know what to call this member.
// It somehow controls the speed of travel along a segment of the spline but I don't really get how it works
@ -28,7 +28,7 @@ typedef struct {
// WARNING!!!
// You really, really shouldn't use this type for actual spline data. This is intended as a generic SplineData
// type. I would use a union, but that would cause significant ugliness elsewhere in the codebase
typedef struct {
typedef struct SplineData {
// This name is a little misleading
// The control point arrays have more control points in them than this number indicates. Not sure why though.
s16 numControlPoints;

View File

@ -111,7 +111,7 @@ u16 D_800EA1C4 = 0;
Vec3f D_800EA1C8 = { 0.0f, 0.0f, 0.0f };
f32 D_800EA1D4 = 1.0f;
u32 external_unused_u32_0 = 0x00000000;
u8 D_800EA1DC = 0;
s8 D_800EA1DC = 0;
u32 external_unused_u32_1 = 0x00000000;
u8 D_800EA1E4 = 0;
u8 D_800EA1E8 = 0;
@ -1828,11 +1828,11 @@ void func_800C5E38(u8 playerId) {
if ((s32) D_800EA1C0 < 2) {
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF9, 0x26), &D_800E9F7C[playerId].pos, playerId,
&D_800E9F7C[playerId].unk_38, &D_800E9F04[playerId],
(u8*) &D_800E9F7C[playerId].unk_14);
(s8*) &D_800E9F7C[playerId].unk_14);
} else {
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0x80, 0x26), &D_800E9F7C[playerId].pos, playerId,
&D_800E9F7C[playerId].unk_38, &D_800E9F04[playerId],
(u8*) &D_800E9F7C[playerId].unk_14);
(s8*) &D_800E9F7C[playerId].unk_14);
}
}
break;
@ -1998,144 +1998,144 @@ void func_800C683C(u8 cameraId) {
switch (D_800E9E74[cameraId]) {
case 3:
play_sound(SOUND_ACTION_TYRE_SQUEAL, &D_800E9F7C[cameraId].pos, cameraId, &D_800E9F14[cameraId],
&D_800E9EF4[cameraId], (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9EF4[cameraId], (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ACTION_TYRE_SQUEAL;
break;
case 18:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF8, 0x1D), &D_800E9F7C[cameraId].pos, cameraId, &D_800EA1D4,
&D_800EA1D4, (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800EA1D4, (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF8, 0x1D);
break;
case 19:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF8, 0x22), &D_800E9F7C[cameraId].pos, cameraId, &D_800EA1D4,
&D_800EA1D4, (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800EA1D4, (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF8, 0x22);
break;
case 1:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x09), &D_800E9F7C[cameraId].pos, cameraId, &D_800EA1D4,
&D_800E9EF4[cameraId], (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9EF4[cameraId], (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x09);
break;
case 2:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF4, 0x0A), &D_800E9F7C[cameraId].pos, cameraId,
&D_800E9F14[cameraId], &D_800EA1D4, (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9F14[cameraId], &D_800EA1D4, (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF4, 0x0A);
break;
case 17:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x1E), &D_800E9F7C[cameraId].pos, cameraId,
&D_800E9F14[cameraId], &D_800E9EF4[cameraId], (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9F14[cameraId], &D_800E9EF4[cameraId], (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x1E);
break;
case 15:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x1F), &D_800E9F7C[cameraId].pos, cameraId,
&D_800E9F14[cameraId], &D_800EA1D4, (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9F14[cameraId], &D_800EA1D4, (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x1F);
break;
case 16:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x21), &D_800E9F7C[cameraId].pos, cameraId,
&D_800E9F14[cameraId], &D_800EA1D4, (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9F14[cameraId], &D_800EA1D4, (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x21);
break;
case 20:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x27), &D_800E9F7C[cameraId].pos, cameraId,
&D_800E9F14[cameraId], &D_800EA1D4, (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9F14[cameraId], &D_800EA1D4, (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x27);
break;
case 25:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x20), &D_800E9F7C[cameraId].pos, cameraId,
&D_800E9F14[cameraId], &D_800EA1D4, (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9F14[cameraId], &D_800EA1D4, (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x20);
break;
case 26:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x23), &D_800E9F7C[cameraId].pos, cameraId,
&D_800E9F14[cameraId], &D_800EA1D4, (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9F14[cameraId], &D_800EA1D4, (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x23);
break;
case 27:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0x80, 0x46), &D_800E9F7C[cameraId].pos, cameraId,
&D_800E9F14[cameraId], &D_800EA1D4, (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9F14[cameraId], &D_800EA1D4, (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0x80, 0x46);
break;
case 28:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x25), &D_800E9F7C[cameraId].pos, cameraId,
&D_800E9F14[cameraId], &D_800EA1D4, (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9F14[cameraId], &D_800EA1D4, (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x25);
break;
case 4:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x0B), &D_800E9F7C[cameraId].pos, cameraId, &D_800EA1D4,
&D_800E9EF4[cameraId], (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9EF4[cameraId], (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x0B);
break;
case 5:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x0C), &D_800E9F7C[cameraId].pos, cameraId, &D_800EA1D4,
&D_800E9EF4[cameraId], (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9EF4[cameraId], (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x0C);
break;
case 6:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x0D), &D_800E9F7C[cameraId].pos, cameraId, &D_800EA1D4,
&D_800E9EF4[cameraId], (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9EF4[cameraId], (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x0D);
break;
case 7:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x0E), &D_800E9F7C[cameraId].pos, cameraId, &D_800EA1D4,
&D_800E9EF4[cameraId], (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9EF4[cameraId], (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x0E);
break;
case 8:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x0F), &D_800E9F7C[cameraId].pos, cameraId, &D_800EA1D4,
&D_800E9EF4[cameraId], (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9EF4[cameraId], (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x0F);
break;
case 9:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x10), &D_800E9F7C[cameraId].pos, cameraId, &D_800EA1D4,
&D_800E9EF4[cameraId], (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9EF4[cameraId], (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x10);
break;
case 10:
case 14:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x11), &D_800E9F7C[cameraId].pos, cameraId, &D_800EA1D4,
&D_800E9EF4[cameraId], (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9EF4[cameraId], (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x11);
break;
case 11:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x12), &D_800E9F7C[cameraId].pos, cameraId, &D_800EA1D4,
&D_800E9EF4[cameraId], (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9EF4[cameraId], (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x12);
break;
case 12:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x13), &D_800E9F7C[cameraId].pos, cameraId, &D_800EA1D4,
&D_800E9EF4[cameraId], (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9EF4[cameraId], (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x13);
break;
case 29:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x48), &D_800E9F7C[cameraId].pos, cameraId, &D_800EA1D4,
&D_800E9EF4[cameraId], (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9EF4[cameraId], (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x48);
break;
case 30:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x49), &D_800E9F7C[cameraId].pos, cameraId, &D_800EA1D4,
&D_800E9EF4[cameraId], (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9EF4[cameraId], (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x49);
break;
case 31:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x4A), &D_800E9F7C[cameraId].pos, cameraId, &D_800EA1D4,
&D_800E9EF4[cameraId], (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9EF4[cameraId], (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x4A);
break;
case 13:
case 22:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x29), &D_800E9F7C[cameraId].pos, cameraId, &D_800EA1D4,
&D_800E9EF4[cameraId], (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9EF4[cameraId], (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x29);
break;
case 23:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x2A), &D_800E9F7C[cameraId].pos, cameraId, &D_800EA1D4,
&D_800E9EF4[cameraId], (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9EF4[cameraId], (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x2A);
break;
case 24:
play_sound(SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x2B), &D_800E9F7C[cameraId].pos, cameraId, &D_800EA1D4,
&D_800E9EF4[cameraId], (u8*) &D_800E9F7C[cameraId].unk_14);
&D_800E9EF4[cameraId], (s8*) &D_800E9F7C[cameraId].unk_14);
D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x2B);
break;
default:
@ -2653,7 +2653,7 @@ void func_800C847C(u8 playerId) {
(D_800EA0EC[playerId] == 0)) {
play_sound((gPlayers[playerId].characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x05),
&D_800E9F7C[playerId].pos, playerId, &D_800EA1D4, &D_800EA1D4,
(u8*) &D_800E9F7C[playerId].unk_14);
(s8*) &D_800E9F7C[playerId].unk_14);
}
}
} else {
@ -2665,7 +2665,7 @@ void func_800C847C(u8 playerId) {
if ((gCurrentCourseId == COURSE_KOOPA_BEACH) && (D_800EA0EC[playerId] == 0)) {
play_sound((gPlayers[playerId].characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x08),
&D_800E9F7C[playerId].pos, playerId, &D_800EA1D4, &D_800EA1D4,
(u8*) &D_800E9F7C[playerId].unk_14);
(s8*) &D_800E9F7C[playerId].unk_14);
}
}
}
@ -2869,7 +2869,7 @@ void func_800C9060(u8 playerId, u32 soundBits) {
D_800EA0EC[playerId] = 1;
case 0:
play_sound(soundBits, &D_800E9F7C[playerId].pos, playerId, &D_800EA1D4, &D_800EA1D4,
(u8*) &D_800E9F7C[playerId].unk_14);
(s8*) &D_800E9F7C[playerId].unk_14);
break;
}
}
@ -2888,10 +2888,10 @@ void func_800C90F4(u8 playerId, u32 soundBits) {
}
if (((gPlayers[playerId].effects & 0x40000000) == 0x40000000) && ((s32) D_800E9F2C[playerId] >= 0x1F)) {
play_sound(soundBits, &D_800E9F7C[playerId].pos, playerId, &D_800EA150, &D_800EA1D4,
(u8*) &D_800E9F7C[playerId].unk_14);
(s8*) &D_800E9F7C[playerId].unk_14);
} else {
play_sound(soundBits, &D_800E9F7C[playerId].pos, playerId, &D_800EA1D4, &D_800EA1D4,
(u8*) &D_800E9F7C[playerId].unk_14);
(s8*) &D_800E9F7C[playerId].unk_14);
}
break;
default:
@ -2917,10 +2917,10 @@ void func_800C92CC(u8 playerId, u32 soundBits) {
temp_v0->unk34 = 170.0f;
if (((gPlayers[playerId].effects & 0x40000000) == 0x40000000) && ((s32) D_800E9F2C[playerId] >= 0x1F)) {
play_sound((gPlayers[playerId].characterId * 0x10) + soundBits, &temp_v0->unk18, var_s0,
&D_800EA150, &D_800EA1D4, &D_800EA06C[playerId].unk0C);
&D_800EA150, &D_800EA1D4, (s8*) &D_800EA06C[playerId].unk0C);
} else {
play_sound((gPlayers[playerId].characterId * 0x10) + soundBits, &temp_v0->unk18, var_s0,
&temp_v0->unk2C, &D_800EA1D4, &D_800EA06C[playerId].unk0C);
&temp_v0->unk2C, &D_800EA1D4, (s8*) &D_800EA06C[playerId].unk0C);
}
}
}
@ -3011,7 +3011,7 @@ void func_800C94A4(u8 playerId) {
break;
}
play_sound(var_a0, &D_800E9F7C[playerId].pos, playerId, &D_800E9F7C[playerId].unk_0C,
&D_800E9F7C[playerId].unk_10, (u8*) &D_800E9F7C[playerId].unk_14);
&D_800E9F7C[playerId].unk_10, (s8*) &D_800E9F7C[playerId].unk_14);
break;
default:
break;
@ -3099,7 +3099,7 @@ void func_800C9A88(u8 playerId) {
if (temp_v0_6 != NULL) {
temp_v0_6->unk34 = 40.0f;
play_sound(soundBits, &temp_v0_6->unk18, var_s0, &temp_v0_6->unk2C,
&D_800EA06C[playerId].unk00[2], &D_800EA06C[playerId].unk0C);
&D_800EA06C[playerId].unk00[2], (s8*) &D_800EA06C[playerId].unk0C);
}
}
}
@ -3292,7 +3292,7 @@ void func_800CA49C(u8 arg0) {
void func_800CA59C(u8 playerId) {
if ((D_800EA0EC[playerId] == 0) && (D_800EA108 == 0)) {
play_sound((gPlayers[playerId].characterId * 0x10) + 0x29008001, &D_800E9F7C[playerId].pos, playerId,
&D_800EA1D4, &D_800EA1D4, (u8*) &D_800E9F7C[playerId].unk_14);
&D_800EA1D4, &D_800EA1D4, (s8*) &D_800E9F7C[playerId].unk_14);
D_800EA164 = 1;
if ((s32) D_800EA1C0 >= 2) {
func_800C8F80(playerId, 0x0100FF2C);
@ -3320,7 +3320,7 @@ void func_800CA730(u8 arg0) {
if (D_800EA0EC[arg0] == 0) {
if ((D_800EA108 == 0) && (D_800EA10C[arg0] != 0)) {
play_sound(gPlayers[arg0].characterId * 0x10 + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x08),
&D_800E9F7C[arg0].pos, arg0, &D_800EA1D4, &D_800EA1D4, (u8*) &D_800E9F7C[arg0].unk_14);
&D_800E9F7C[arg0].pos, arg0, &D_800EA1D4, &D_800EA1D4, (s8*) &D_800E9F7C[arg0].unk_14);
if (D_800EA10C[arg0] != 0) {
if ((s32) D_800EA1C0 >= 2) {
func_800C9018(arg0, SOUND_ARG_LOAD(0x01, 0x00, 0xFF, 0x2C));
@ -3442,7 +3442,7 @@ void func_800CADD0(u8 arg0, f32 arg1) {
}
D_800EA110[arg0] = arg1;
play_sound(0x1900A209U, &D_800E9F7C[arg0].pos, arg0, &D_800EA1D4, &D_800EA110[arg0],
(u8*) &D_800E9F7C[arg0].unk_14);
(s8*) &D_800E9F7C[arg0].unk_14);
break;
default:
break;
@ -3466,7 +3466,7 @@ void func_800CAEC4(u8 playerId, f32 arg1) {
}
D_800EA120[playerId] = arg1;
play_sound(gCurrentCourseId + 0x19007020, &D_800E9F7C[playerId].pos, playerId, &D_800EA1D4,
&D_800EA120[playerId], (u8*) &D_800E9F7C[playerId].unk_14);
&D_800EA120[playerId], (s8*) &D_800E9F7C[playerId].unk_14);
break;
default:
break;

View File

@ -416,7 +416,7 @@ extern u16 D_800EA1C4;
// a sound source, its usage makes it look like a 0'd Vec3f for general usage
extern Vec3f D_800EA1C8; // = {0.0f, 0.0f, 0.0f}
extern f32 D_800EA1D4;
extern u8 D_800EA1DC; // = 0;
extern s8 D_800EA1DC; // = 0;
extern u8 D_800EA1E4;
extern u8 D_800EA1E8;
extern u8 D_800EA1EC;

View File

@ -165,7 +165,7 @@ void func_8006EF60(void) {
s16 huh;
u8* wut;
wut = gMenuCompressedBuffer + 0xFFFF0000;
wut = (u8*) &gMenuCompressedBuffer[0x3FFFC000];
// clang-format off
// God forgive me for my sins...
huh = 0x14; if (0) {} for (i = 0; i < huh; i++) { D_8018D248[i] = dma_copy_base_misc_textures(gCourseOutlineTextures[i], wut, D_800E5520[i], D_800E5520[i]); wut += D_800E5520[i]; }

View File

@ -40,14 +40,10 @@
#include "crash_screen.h"
#include "buffers/gfx_output_buffer.h"
// Declarations (not in this file)
void func_80091B78(void);
void audio_init();
void audio_init(void);
void create_debug_thread(void);
void start_debug_thread(void);
struct SPTask* create_next_audio_frame_task(void);
struct VblankHandler* gVblankHandler1 = NULL;

View File

@ -42,7 +42,7 @@
void guMtxCatL(Mtx* m, Mtx* n, Mtx* res);
u16* gMenuTextureBuffer;
u8* gMenuCompressedBuffer;
u32* gMenuCompressedBuffer;
u8* sTKMK00_LowResBuffer;
u8* sGPPointsCopy;
void* gSomeDLBuffer;
@ -1251,7 +1251,7 @@ void func_80091B78(void) {
gNextFreeMemoryAddress = gFreeMemoryResetAnchor;
// Hypothetically, this should be a ptr... But only hypothetically.
gMenuTextureBuffer = get_next_available_memory_addr(0x000900B0);
gMenuCompressedBuffer = (u8*) get_next_available_memory_addr(0x0000CE00);
gMenuCompressedBuffer = 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();
@ -1348,7 +1348,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);
gMenuCompressedBuffer = get_next_available_memory_addr(0x00002800);
gMenuTextureBuffer = (u16*) get_next_available_memory_addr(0x000124F8);
sTKMK00_LowResBuffer = (u8*) get_next_available_memory_addr(0x00001000);
sGPPointsCopy = get_next_available_memory_addr(4);
@ -3441,7 +3441,7 @@ void load_menu_img(MenuTexture* addr) {
size = ((size / 8) * 8) + 8;
}
dma_copy_mio0_segment(texAddr->textureData, size, gMenuCompressedBuffer);
mio0decode(gMenuCompressedBuffer, (u8*) &gMenuTextureBuffer[sMenuTextureBufferIndex]);
mio0decode((u8*) gMenuCompressedBuffer, (u8*) &gMenuTextureBuffer[sMenuTextureBufferIndex]);
} else {
dma_copy_mio0_segment(texAddr->textureData, (texAddr->height * texAddr->width) * 2,
&gMenuTextureBuffer[sMenuTextureBufferIndex]);
@ -3505,7 +3505,7 @@ void func_8009952C(MenuTexture* addr) {
if (imgLoaded == false) {
dma_copy_mio0_segment(texAddr->textureData, 0x00008000U, gMenuCompressedBuffer);
mio0decode(gMenuCompressedBuffer, (u8*) &gMenuTextureBuffer[sMenuTextureBufferIndex]);
mio0decode((u8*) gMenuCompressedBuffer, (u8*) &gMenuTextureBuffer[sMenuTextureBufferIndex]);
texMap[sMenuTextureEntries].textureData = texAddr->textureData;
texMap[sMenuTextureEntries].offset = sMenuTextureBufferIndex;
sMenuTextureBufferIndex += texAddr->height * texAddr->width;
@ -3561,7 +3561,7 @@ void load_menu_img_comp_type(MenuTexture* addr, s32 compType) {
switch (compType) {
case LOAD_MENU_IMG_MIO0_ONCE:
case LOAD_MENU_IMG_MIO0_FORCE:
mio0decode(gMenuCompressedBuffer, (u8*) &gMenuTextureBuffer[sMenuTextureBufferIndex]);
mio0decode((u8*) gMenuCompressedBuffer, (u8*) &gMenuTextureBuffer[sMenuTextureBufferIndex]);
break;
case LOAD_MENU_IMG_TKMK00_ONCE:
case LOAD_MENU_IMG_TKMK00_FORCE:
@ -3572,7 +3572,7 @@ void load_menu_img_comp_type(MenuTexture* addr, s32 compType) {
}
if (1) {}
tkmk00decode(gMenuCompressedBuffer, sTKMK00_LowResBuffer,
(u8*) &gMenuTextureBuffer[sMenuTextureBufferIndex], clearBit);
&gMenuTextureBuffer[sMenuTextureBufferIndex], clearBit);
break;
}
@ -3602,7 +3602,7 @@ void func_80099958(MenuTexture* addr, s32 arg1, s32 arg2) {
size = ((size / 8) * 8) + 8;
}
dma_copy_mio0_segment(texAddr->textureData, size, gMenuCompressedBuffer);
mio0decode(gMenuCompressedBuffer, D_802BFB80.arraySize4[arg2][arg1 / 2][(arg1 % 2) + 2].pixel_index_array);
mio0decode((u8*) gMenuCompressedBuffer, (u8*) D_802BFB80.arraySize4[arg2][arg1 / 2][(arg1 % 2) + 2].pixel_index_array);
texAddr++;
}
}
@ -3625,101 +3625,103 @@ void func_80099A94(MenuTexture* arg0, s32 arg1) {
var_v1->texNum = arg1;
}
#ifdef NON_MATCHING
// https://decomp.me/scratch/rxEoi
// Something's up with the handling of `_textures_0aSegmentRomStart`, I don't know how to fix it
void func_80099AEC(void) {
s32 some_var;
s8 texEnd;
s32 size;
UNUSED s32 stackPadding0;
UNUSED s32 stackPadding1;
s32 texSize;
OSIoMesg mb;
OSMesg msg;
UNUSED u8* test;
s32 bufSize;
MenuTexture* texAddr;
struct_8018E060_entry* var_s1;
TextureMap* entry;
MenuTexture* texPtr;
OSIoMesg mb;
OSMesg sp64;
s32 cacheSize;
s32 bufSize;
if (gGamestate == RACING) {
bufSize = 0x00000500;
bufSize = 0x500;
} else {
bufSize = 0x00001000;
bufSize = 0x1000;
}
texEnd = 0;
var_s1 = D_8018E060;
texAddr = var_s1->texture;
entry = &sMenuTextureMap[0];
var_s1 = &D_8018E060[0];
texPtr = var_s1->texture;
if (texAddr == NULL)
if (texPtr == NULL) {
return;
}
texSize = texAddr->size;
if (texSize != 0) {
size = texSize;
if (texPtr->size) {
cacheSize = texPtr->size;
} else {
size = 0x1400;
cacheSize = 0x1400;
}
if (size % 8) {
size = ((size / 8) * 8) + 8;
if (cacheSize % 8) {
cacheSize = ((cacheSize / 8) * 8) + 8;
}
osInvalDCache(gMenuCompressedBuffer, size);
osPiStartDma(&mb, 0, 0, (uintptr_t) &_textures_0aSegmentRomStart[SEGMENT_OFFSET(texAddr->textureData)],
gMenuCompressedBuffer, size, &gDmaMesgQueue);
osRecvMesg(&gDmaMesgQueue, &msg, 1);
osInvalDCache(gMenuCompressedBuffer, cacheSize);
osPiStartDma(&mb, 0, 0, (uintptr_t) _textures_0aSegmentRomStart + SEGMENT_OFFSET(texPtr->textureData),
gMenuCompressedBuffer, cacheSize, &gDmaMesgQueue);
osRecvMesg(&gDmaMesgQueue, &sp64, 1);
while (1) {
if ((var_s1 + 1)->texture == NULL) {
texEnd += 1;
} else {
texAddr = (var_s1 + 1)->texture;
texSize = (var_s1 + 1)->texture->size;
if (texSize != 0) {
size = texSize;
texPtr = (var_s1 + 1)->texture;
if (texPtr->size) {
cacheSize = texPtr->size;
} else {
size = 0x1400;
cacheSize = 0x1400;
}
if (size % 8) {
size = ((size / 8) * 8) + 8;
if (cacheSize % 8) {
cacheSize = ((cacheSize / 8) * 8) + 8;
}
osInvalDCache(gMenuCompressedBuffer + bufSize * 4, size);
osPiStartDma(&mb, 0, 0, (uintptr_t) &_textures_0aSegmentRomStart[SEGMENT_OFFSET(texAddr->textureData)],
gMenuCompressedBuffer + bufSize * 4, size, &gDmaMesgQueue);
osInvalDCache(&gMenuCompressedBuffer[bufSize], cacheSize);
osPiStartDma(&mb, 0, 0, (uintptr_t) _textures_0aSegmentRomStart + SEGMENT_OFFSET(texPtr->textureData),
&gMenuCompressedBuffer[bufSize], cacheSize, &gDmaMesgQueue);
}
mio0decode(gMenuCompressedBuffer, (u8*) &gMenuTextureBuffer[sMenuTextureMap[var_s1->texNum].offset]);
some_var = (entry + var_s1->texNum)->offset;
mio0decode((u8*) gMenuCompressedBuffer, (u8*) &gMenuTextureBuffer[some_var]);
var_s1->texture = NULL;
var_s1++;
if (texEnd != 0)
if (texEnd) {
break;
osRecvMesg(&gDmaMesgQueue, &msg, 1);
}
osRecvMesg(&gDmaMesgQueue, &sp64, 1);
if ((var_s1 + 1)->texture == NULL) {
texEnd += 1;
} else {
texAddr = (var_s1 + 1)->texture;
texSize = (var_s1 + 1)->texture->size;
if (texSize != 0) {
size = texSize;
texPtr = (var_s1 + 1)->texture;
if (texPtr->size) {
cacheSize = texPtr->size;
} else {
size = 0x1400;
cacheSize = 0x1400;
}
if (size % 8) {
size = ((size / 8) * 8) + 8;
if (cacheSize % 8) {
cacheSize = ((cacheSize / 8) * 8) + 8;
}
osInvalDCache(gMenuCompressedBuffer, size);
osPiStartDma(&mb, 0, 0, (uintptr_t) &_textures_0aSegmentRomStart[SEGMENT_OFFSET(texAddr->textureData)],
gMenuCompressedBuffer, size, &gDmaMesgQueue);
osInvalDCache(gMenuCompressedBuffer, cacheSize);
osPiStartDma(&mb, 0, 0, (uintptr_t) _textures_0aSegmentRomStart + SEGMENT_OFFSET(texPtr->textureData),
gMenuCompressedBuffer, cacheSize, &gDmaMesgQueue);
}
mio0decode(gMenuCompressedBuffer + bufSize * 4,
(u8*) &gMenuTextureBuffer[sMenuTextureMap[var_s1->texNum].offset]);
some_var = (entry + var_s1->texNum)->offset;
mio0decode((u8*) &gMenuCompressedBuffer[bufSize], (u8*) &gMenuTextureBuffer[some_var]);
var_s1->texture = NULL;
var_s1++;
if (texEnd != 0)
if (texEnd) {
break;
osRecvMesg(&gDmaMesgQueue, &msg, 1);
}
osRecvMesg(&gDmaMesgQueue, &sp64, 1);
}
}
#else
GLOBAL_ASM("asm/non_matchings/menu_items/func_80099AEC.s")
#endif
void func_80099E54(void) {
D_8018E0E8[0].mk64Texture = NULL;
@ -3794,8 +3796,8 @@ void func_80099EC4(void) {
osPiStartDma(&sp68, 0, 0, (uintptr_t) &_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)],
gMenuCompressedBuffer + 0x1400, var_s0, &gDmaMesgQueue);
}
mio0decode(gMenuCompressedBuffer,
D_802BFB80.arraySize4[var_s1->unk6][var_s1->unk4 / 2][(var_s1->unk4 % 2) + 2].pixel_index_array);
mio0decode((u8*) gMenuCompressedBuffer,
(u8*) D_802BFB80.arraySize4[var_s1->unk6][var_s1->unk4 / 2][(var_s1->unk4 % 2) + 2].pixel_index_array);
var_s1->mk64Texture = NULL;
var_s1++;
if (var_s4 != 0)
@ -3818,8 +3820,8 @@ void func_80099EC4(void) {
osPiStartDma(&sp68, 0, 0, (uintptr_t) &_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)],
gMenuCompressedBuffer, var_s0, &gDmaMesgQueue);
}
mio0decode(gMenuCompressedBuffer + 0x1400,
D_802BFB80.arraySize4[var_s1->unk6][var_s1->unk4 / 2][(var_s1->unk4 % 2) + 2].pixel_index_array);
mio0decode((u8*) gMenuCompressedBuffer + 0x1400,
(u8*) D_802BFB80.arraySize4[var_s1->unk6][var_s1->unk4 / 2][(var_s1->unk4 % 2) + 2].pixel_index_array);
var_s1->mk64Texture = NULL;
var_s1++;
if (var_s4 != 0)
@ -3844,7 +3846,7 @@ void func_8009A238(MenuTexture* arg0, s32 arg1) {
var_a3 = ((var_a3 / 8) * 8) + 8;
}
dma_tkmk00_textures(sp24, var_a3, gMenuCompressedBuffer);
tkmk00decode(gMenuCompressedBuffer, sTKMK00_LowResBuffer, (u8*) &gMenuTextureBuffer[temp_v1], 1);
tkmk00decode(gMenuCompressedBuffer, sTKMK00_LowResBuffer, &gMenuTextureBuffer[temp_v1], 1);
sMenuTextureMap[arg1].textureData = sp24;
}
@ -4640,7 +4642,7 @@ void func_8009CBE4(s32 arg0, s32 arg1, s32 arg2) {
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) {
if (gGamestate == RACING) {
D_8018E7AC[arg0] = 6;
return;
}
@ -4690,7 +4692,7 @@ void func_8009CE64(s32 arg0) {
gGotoMenu = 1;
gMenuSelection = 0x0000000B;
}
} else if (gGamestate == 4) {
} else if (gGamestate == RACING) {
if (D_8018E7AC[arg0] == 2) {
if (arg0 != 4) {
D_8018E7AC[arg0] = 5;
@ -7582,7 +7584,7 @@ void render_lap_times(s32 recordType, s32 column, s32 row) {
char sp38[3];
MenuItem* temp_v0;
s32 sp30;
if (gGamestate == 4) {
if (gGamestate == RACING) {
sp30 = 0;
} else {
sp30 = 1;

View File

@ -638,7 +638,7 @@ 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);
void tkmk00decode(u32*, u8*, u16*, s32);
/* File specific defines */
@ -657,7 +657,7 @@ extern s32 D_800DDB24;
extern s16 gGetPlayerByCharacterId[];
extern u16* gMenuTextureBuffer;
extern u8* gMenuCompressedBuffer;
extern u32* gMenuCompressedBuffer;
extern u8* sTKMK00_LowResBuffer;
extern u8* sGPPointsCopy;
extern void* gSomeDLBuffer;

View File

@ -1809,6 +1809,7 @@ void render_texture_tile_rgba32_block(s16 x, s16 y, u8* texture, u32 width, u32
gSPDisplayList(gDisplayListHead++, D_0D007EB8);
}
#else
void render_texture_tile_rgba32_block(s16 x, s16 y, u8* texture, u32 width, u32 height);
GLOBAL_ASM("asm/non_matchings/render_objects/render_texture_tile_rgba32_block.s")
#endif

View File

@ -771,7 +771,7 @@ s32 func_800B6178(s32 arg0) {
default:
return -1;
}
if (gGamestate == 4) {
if (gGamestate == RACING) {
func_800051C4();
}
temp_s3 = &D_8018EE10[arg0];
@ -787,7 +787,7 @@ s32 func_800B6178(s32 arg0) {
0x00003C00, (u8*) D_800DC714);
if (var_v0 == 0) {
temp_s3->ghostDataSaved = 1;
if (gGamestate == 4) {
if (gGamestate == RACING) {
temp_s3->courseIndex = (gCupSelection * 4) + gCourseIndexInCup;
}
temp_s3->unk_00 = D_80162DFC;