Fix building for other versions (#551)

* Fix spelling mistakes and format

* lights

* formatting

* Small documenting

* Small documenting

* Fix hud_main_time_trial for JP, and start trying to match it.

* Match v80 again

* documenting

* Match all versions and do some cleanup of some parts of existing matches.

* Format

* Update score

* Fix some warnings

* Start work on func_80008438

* Further work on func_80008438, still HEAVILY WIP
This commit is contained in:
Ryan Myers
2025-05-05 20:27:33 -04:00
committed by GitHub
parent de04669992
commit 53ab6559e5
21 changed files with 620 additions and 273 deletions
+4 -4
View File
@@ -9,7 +9,7 @@ As of May 5, 2025, this is our current score:
    Decomp progress: 84.89%
    Documentation progress: 54.49%
    Documentation progress: 54.50%
<!-- README_SCORE_SUMMARY_END -->
---
@@ -133,9 +133,9 @@ As of May 5, 2025, this is our current score:
We are racing in Spacedust Alley. (Lap 1/3)
========================================================
ADVENTURE TWO (Cleanup & Documentation)
------------------- 54.49% Complete --------------------
# Documented functions: 1154
# Undocumented remaining: 500
------------------- 54.50% Complete --------------------
# Documented functions: 1155
# Undocumented remaining: 499
--------------------- Game Status ----------------------
Balloons: 26/47, Keys: 3/4, Trophies: 2/5
T.T. Amulets: 2/4, Wizpig Amulets: 2/4
+1
View File
@@ -83,6 +83,7 @@ typedef enum World {
typedef enum RaceType {
RACETYPE_DEFAULT = 0,
RACETYPE_UNK1 = 1,
RACETYPE_HORSESHOE_GULCH = 3,
RACETYPE_HUBWORLD = 5,
RACETYPE_CUTSCENE_1 = 6, // Not sure what the difference between these two are.
+2 -2
View File
@@ -74,7 +74,7 @@ void music_jingle_voicelimit_set(u8 voiceLimit);
void music_fade(s32 time);
void music_volume_reset(void);
void sound_update_queue(u8 updateRate);
void sound_play_delayed(u16 soundId, SoundHandle *soundMask, f32 delayTime);
void sound_play_delayed(u16 soundId, SoundHandle *handlePtr, f32 delayTime);
void sound_clear_delayed(void);
u16 music_channel_get_mask(void);
void music_dynamic_set(u16 channelMask);
@@ -118,7 +118,7 @@ void music_sequence_stop(ALCSPlayer *seqPlayer);
void sound_reverb_set(u8 setting);
void alSeqFileNew(ALSeqFile *file, u8 *base);
void func_80063A90(ALCSPlayer *seqp, u8 channel);
void sound_volume_set_relative(u16 soundID, SoundHandle soundState, u8 volume);
void sound_volume_set_relative(u16 soundID, SoundHandle soundHandle, u8 volume);
void music_sequence_init(ALCSPlayer *seqp, void *sequence, u8 *seqID, ALCSeq *seq);
void sound_play(u16 soundID, SoundHandle* handlePtr);
f32 music_animation_fraction(void);
+343 -11
View File
@@ -40,7 +40,7 @@ u8 gFreeMasks;
SoundMask **gSoundMaskHeapFree;
unk80119C58 D_80119C58[7];
unk8011A6D8 D_8011A6D8[7]; // Reverb stuff
s8 gAudioLinesOff;
u8 gAudioLinesOff;
s32 D_8011AC1C;
#define SOUND_MASK_HEAP_COUNT 40
@@ -140,12 +140,334 @@ void audioline_reset(void) {
}
}
gAudioLinesOff = 0;
gAudioLinesOff = FALSE;
}
// audioline_ambient
// Official Name: amPlayAudioMap
#ifdef NON_EQUIVALENT
void func_80008438(Object **objRacers, s32 numRacers, s32 updateRate) {
s32 sp260;
s32 sp254;
s32 sp250;
s32 sp24C;
s32 sp248;
s32 sp244;
f32 sp22C;
f32 sp228;
f32 sp224;
s32 sp1A8;
s32 sp12C;
s32 numActivePlayers; //numActivePlayers
ObjectSegment *spAC;
f32 spA8;
f32 sp98;
f32 sp90;
unk80119C58 *sp88;
f32 *sp70;
ObjectSegment *temp_s3;
ObjectSegment *var_s3;
ObjectSegment *var_s3_2;
f32 *var_s4_2;
f32 temp_f0;
f32 temp_f0_2;
f32 temp_f0_3;
f32 temp_f0_4;
f32 temp_f0_5;
f32 temp_f12;
f32 temp_f16_3;
f32 temp_f20;
f32 temp_f20_2;
f32 temp_f20_3;
f32 temp_f22;
f32 temp_f22_2;
f32 temp_f22_3;
f32 temp_f2;
f32 temp_f4;
f32 var_f24;
s32 *temp_v1_3;
s32 *var_s0;
s32 *var_s0_2;
s32 *var_s1;
s32 *var_s1_2;
s32 *var_v0_5;
s32 *var_v0_6;
s32 temp_a0;
s32 temp_a0_2;
s32 temp_f16;
s32 temp_f16_2;
s32 temp_f8;
s32 temp_v1;
s32 temp_v1_2;
s32 var_a0;
s32 var_a0_2;
s32 var_a2;
s32 var_at;
s32 var_fp;
s32 var_fp_2;
s32 var_s2;
s32 var_s2_2;
s32 i;
s32 var_s5;
s32 var_s6;
s32 var_v0;
s32 var_v0_4;
s32 var_v1;
s8 var_v1_2;
unk80119C58 *var_v0_3;
SoundMask *temp_s1;
s32 *spB8;
sp24C = 0;
numActivePlayers = set_active_viewports_and_max(get_viewport_count());
spAC = get_cutscene_camera_segment();
sp260 = 0;
if (gUsedMasks > 0) {
i = 0;
do {
temp_s1 = gSoundMaskHeapUsed[i];
sp254 = 0;
if (temp_s1->unk11 & 2) {
if (numActivePlayers == 1) {
temp_f20 = temp_s1->pos.x - spAC->trans.x_position;
temp_f0 = temp_s1->pos.y - spAC->trans.y_position;
temp_f22 = temp_s1->pos.z - spAC->trans.z_position;
temp_f16 = sqrtf((temp_f20 * temp_f20) + (temp_f0 * temp_f0) + (temp_f22 * temp_f22));
if ((temp_f16 < temp_s1->distance) && ((temp_s1->unk12 == 0))) {
if (temp_s1->soundPtr == NULL && (temp_s1->unk22 == 0 || !(temp_s1->unk11 & 4))) {
func_80001F14(temp_s1->soundId, &temp_s1->soundPtr);
temp_s1->unk22 = 1;
}
if (temp_s1->soundPtr != NULL) {
spA8 = temp_s1->pitch / 100.0f;
sndp_set_param(temp_s1->soundPtr, AL_SNDP_VOL_EVT, temp_s1->volume << 8);
sndp_set_param(temp_s1->soundPtr, AL_SNDP_PITCH_EVT, *((u32 *) &spA8));
var_a2 = func_800090C0(temp_f20, temp_f22, spAC->trans.rotation.x);
if (numActivePlayers != 1) {
var_a2 = 0x40;
}
sndp_set_param(temp_s1->soundPtr, AL_SNDP_PAN_EVT, var_a2);
audioline_reverb(temp_s1->soundPtr, temp_s1->pos.x, temp_s1->pos.y, temp_s1->pos.z);
sndp_set_priority(temp_s1->soundPtr, temp_s1->unk21);
}
temp_s1->unk12 = 1;
} else if (temp_s1->distance < temp_f16 && temp_s1->unk12 != 0) {
temp_s1->unk12 = 0;
}
}
} else {
var_fp = 0;
if (numActivePlayers > 0) {
var_s3 = spAC;
do {
temp_f20 = temp_s1->pos.x - var_s3->trans.x_position;
temp_f0 = temp_s1->pos.y - var_s3->trans.y_position;
temp_f22 = temp_s1->pos.z - var_s3->trans.z_position;
temp_f16 = sqrtf((temp_f20 * temp_f20) + (temp_f0 * temp_f0) + (temp_f22 * temp_f22));
if (temp_f16 < temp_s1->distance) {
if (temp_s1->unk20 == 0) {
var_v0 = ((1.0f - ((f32) temp_f16 / (f32) temp_s1->distance)) * temp_s1->volume);
} else {
temp_f0_3 = (temp_s1->distance - temp_f16) / (f32) temp_s1->distance;
var_v0 = (temp_f0_3 * temp_f0_3 * temp_s1->volume);
}
if (sp254 < var_v0) {
sp254 = var_v0;
sp250 = func_800090C0(temp_f20, temp_f22, var_s3->trans.rotation.x);
}
}
var_fp++;
var_s3++;
} while (var_fp != numActivePlayers);
}
if (sp254 < temp_s1->unk10) {
var_fp = 0;
var_f24 = 999999.0f;
if (numActivePlayers > 0) {
var_s3 = spAC;
do {
temp_f20 = temp_s1->pos.x - var_s3->trans.x_position;
temp_f0 = temp_s1->pos.y - var_s3->trans.y_position;
temp_f22 = temp_s1->pos.z - var_s3->trans.z_position;
temp_f16 = sqrtf((temp_f20 * temp_f20) + (temp_f0 * temp_f0) + (temp_f22 * temp_f22));
if (temp_f16 < var_f24) {
sp250 = func_800090C0(temp_f20, temp_f22, var_s3->trans.rotation.x);
var_f24 = temp_f16;
}
var_fp++;
var_s3++;
} while (var_fp != numActivePlayers);
}
sp254 = temp_s1->unk10;
}
if (sp254 > 10) {
if ((temp_s1->soundPtr == NULL) && ((temp_s1->unk22 == 0) || !(temp_s1->unk11 & 4))) {
func_80001F14(temp_s1->soundId, &temp_s1->soundPtr);
temp_s1->unk22 = 1;
}
if (temp_s1->soundPtr != NULL) {
sp98 = temp_s1->pitch / 100.0f;
sndp_set_param(temp_s1->soundPtr, AL_SNDP_VOL_EVT, sp254 << 8);
sndp_set_param(temp_s1->soundPtr, AL_SNDP_PITCH_EVT, *((u32 *) &sp98));
if (numActivePlayers != 1) {
sp250 = 0x40;
}
sndp_set_param(temp_s1->soundPtr, AL_SNDP_PAN_EVT, sp250);
sndp_set_priority(temp_s1->soundPtr, temp_s1->unk21);
audioline_reverb(temp_s1->soundPtr, temp_s1->pos.x, temp_s1->pos.y, temp_s1->pos.z);
}
} else {
if (temp_s1->soundPtr != NULL) {
sndp_stop(temp_s1->soundPtr);
} else {
temp_s1->unk22 = 1;
}
}
if ((temp_s1->unk11 & 4) && temp_s1->unk22 && temp_s1->soundPtr == NULL) {
func_8000A2E8(sp260);
}
}
sp260++;
i++;
} while (sp260 < gUsedMasks);
sp260 = 0;
}
var_v0_3 = D_80119C58;
do {
sp88 = var_v0_3;
if (var_v0_3->soundID != 0) {
sp88 = var_v0_3;
if (func_800099EC(var_v0_3->unk0_02/*unksp263*/) != 0) {
sp254 = 0;
i = 0;
if (numActivePlayers > 0) {
sp70 = sp88->unk4_floats;
do {
var_s4_2 = sp70;
var_v1 = sp88->unk170;
var_s5 = 0;
var_s2 = 0;
var_s6 = var_v1;
if (sp88->unk17C > 0) {
var_s0 = &sp1A8;
var_s1 = &sp12C;
temp_s3 = &spAC[i];
do {
*var_s0 = audioline_distance(temp_s3->trans.x_position, temp_s3->trans.y_position, temp_s3->trans.z_position, var_s4_2, &sp22C, &sp228, &sp224);
temp_v1 = *var_s0;
*var_s1 = func_800090C0(sp22C - temp_s3->trans.x_position, sp224 - temp_s3->trans.z_position, temp_s3->trans.rotation.x);
var_s4_2 += 0xC;
if (temp_v1 < var_s6) {
var_s6 = temp_v1;
}
var_s2 += 1;
var_s0 += 4;
var_s1 += 4;
var_s5 += temp_v1;
} while (var_s2 < var_v0_3->unk17C);
var_v1 = sp88->unk170;
}
temp_f2 = (f32) var_v1;
temp_f12 = (f32) sp88->unk174;
if (sp88->unk17D == 0) {
var_v0_4 = (s32) ((1.0f - ((f32) var_s6 / temp_f2)) * temp_f12);
} else {
temp_f0_5 = (f32) (var_v1 - var_s6) / temp_f2;
var_v0_4 = (s32) (temp_f0_5 * temp_f0_5 * temp_f12);
}
if (var_v0_4 >= sp254) {
sp254 = var_v0_4;
var_v1_2 = sp88->unk17C;
var_a0 = 0;
if (var_v1_2 == 1) {
sp250 = sp12C;
} else {
var_s2_2 = 0;
sp250 = 0;
if (var_v1_2 > 0) {
var_s0_2 = &sp1A8;
var_v0_5 = &spB8[0];
do {
var_s2_2 += 1;
temp_v1_2 = var_s5 - *var_s0_2;
*var_v0_5 = temp_v1_2;
var_s0_2 += 4;
var_v0_5 += 4;
var_a0 += temp_v1_2;
} while (var_s2_2 < var_v0_3->unk17C);
var_v1_2 = sp88->unk17C;
}
var_s1_2 = &sp12C;
if (var_v1_2 > 0) {
var_v0_6 = &spB8[0];
var_a0_2 = sp250;
temp_v1_3 = &var_v0_6[var_v0_3->unk17C];
do {
temp_f16_3 = (f32) *var_v0_6;
var_v0_6 += 4;
temp_f4 = (f32) *var_s1_2;
var_s1_2 += 4;
var_a0_2 = (s32) ((f32) var_a0_2 + ((temp_f16_3 / (f32) var_a0) * temp_f4));
} while ((u32) var_v0_6 < (u32) temp_v1_3);
sp250 = var_a0_2;
}
}
if (var_s6 < 400) {
sp250 = (((sp250 - 64) * (var_s6 / 400.0f)) + 64.0f);
}
}
i++;
} while (i != numActivePlayers);
}
if (sp88->unk0_02 == 0) {
if (sp254 < sp88->unk175) {
sp254 = sp88->unk175;
}
if (sp254 > 10) {
sp90 = sp88->unk176 / 100.0f;
if (sp88->soundPtr == NULL) {
func_80001F14(sp88->soundID, &sp88->soundPtr);
}
if (sp88->soundPtr != NULL) {
sndp_set_param(sp88->soundPtr, AL_SNDP_VOL_EVT, sp254 << 8);
sndp_set_param(sp88->soundPtr, AL_SNDP_PITCH_EVT, *((u32 *) &sp90));
if (numActivePlayers != 1) {
sp250 = 0x40;
}
sndp_set_param(sp88->soundPtr, AL_SNDP_PAN_EVT, (u32) sp250);
sndp_set_priority(sp88->soundPtr, sp88->unk17E);
}
} else {
if (sp88->soundPtr != NULL) {
sndp_stop(sp88->soundPtr);
}
}
} else if (sp88->unk0_02 == 1 && sp24C < sp254) {
sp24C = sp254;
sp248 = sp250;
sp244 = sp88->soundID;
}
}
}
sp260++;
var_v0_3 = &sp88[1];
} while (sp260 != 7);
if (sp24C > 10 && gAudioLinesOff == FALSE) {
if (sp244 != music_jingle_current()) {
music_jingle_play_safe(var_v0_3->unk0_02/*unksp247*/);
}
music_jingle_volume_set(var_v0_3->unk0_05/*unksp24F*/);
music_jingle_pan_set(var_v0_3->unk0_03/*unksp24B*/);
} else {
music_jingle_stop();
}
if (numRacers != 0) {
func_80006FC8(objRacers, numRacers, spAC, spB8[0]/*unkspB3*/, updateRate);
}
}
#else
#pragma GLOBAL_ASM("asm/nonmatchings/audio_spatial/func_80008438.s")
#endif
/**
* Official Name: amCalcSfxStereo
@@ -236,21 +558,28 @@ s32 audioline_distance(f32 inX, f32 inY, f32 inZ, f32 coords[6], f32 *outX, f32
/**
* Play Sound at position
* Official Name: amSndPlayXYZ
*/
void play_sound_at_position(u16 soundId, f32 x, f32 y, f32 z, u8 arg4, SoundMask **soundMask) {
func_8000974C(D_80119C40[soundId].soundBite, x, y, z, arg4, D_80119C40[soundId].unk3, D_80119C40[soundId].volume,
D_80119C40[soundId].distance, 0, D_80119C40[soundId].pitch, D_80119C40[soundId].unk8, soundMask);
}
/**
* Official Name: amSndPlayDirectXYZ
*/
void func_800095E8(u16 soundId, f32 x, f32 y, f32 z, u8 arg4, u8 arg5, f32 pitch, SoundMask **soundMask) {
func_8000974C(soundId, x, y, z, arg4, 100, arg5, 15000, 0, pitch, 0x3F, soundMask);
}
// I think this function is used to update the world position of any sound associated with the given soundmask.
void update_spatial_audio_position(SoundMask *arg0, f32 x, f32 y, f32 z) {
arg0->pos.x = x;
arg0->pos.y = y;
arg0->pos.z = z;
/**
* I think this function is used to update the world position of any sound associated with the given soundmask.
* Official Name: amSndSetXYZ
*/
void update_spatial_audio_position(SoundMask *soundMask, f32 x, f32 y, f32 z) {
soundMask->pos.x = x;
soundMask->pos.y = y;
soundMask->pos.z = z;
}
/**
@@ -266,6 +595,9 @@ void func_800096F8(SoundMask *soundMask) {
}
}
/**
* Official Name: amCreateAudioPoint
*/
void func_8000974C(u16 soundBite, f32 x, f32 y, f32 z, u8 arg4, u8 arg5, u8 volume, u16 distance, u8 arg8, u8 pitch,
u8 argA, SoundMask **soundMask) {
SoundMask *newMask;
@@ -393,7 +725,7 @@ s32 func_80009AB4(u8 arg0) {
return ret;
}
void audioline_reverb(s32 *soundState, f32 x, f32 y, f32 z) {
void audioline_reverb(SoundHandle soundHandle, f32 x, f32 y, f32 z) {
s32 i;
s32 j;
unk8011A6D8 *temp;
@@ -437,8 +769,8 @@ void audioline_reverb(s32 *soundState, f32 x, f32 y, f32 z) {
}
}
}
if (soundState != NULL) {
sndp_set_param((s32) soundState, AL_SNDP_FX_EVT, (u32) volume);
if (soundHandle != NULL) {
sndp_set_param((SoundHandle) (s32) soundHandle, AL_SNDP_FX_EVT, (u32) volume);
}
}
@@ -483,7 +815,7 @@ u8 func_80009D6C(unk8011A6D8 *arg0, f32 arg1, f32 arg2, f32 arg3) {
dz = z2 - z1;
length = sqrtf((dx * dx) + (dy * dy) + (dz * dz));
if (arg1 >= x1 && arg1 <= x2 || arg1 >= x2 && arg1 <= x1) {
if ((arg1 >= x1 && arg1 <= x2) || (arg1 >= x2 && arg1 <= x1)) {
if (dx != 0.0f) {
f12 = (arg1 - x1) / dx;
} else if (dy != 0.0f) {
+5 -2
View File
@@ -19,6 +19,9 @@ typedef struct floatXYZVals {
/* Size: 0x180 / 384 bytes */
typedef struct unk80119C58 {
/* 0x000 */ u8 unk0_02;
/* 0x000 */ u8 unk0_03;
/* 0x000 */ u8 unk0_04;
/* 0x000 */ u8 unk0_05;
/* 0x004 */ f32 unk4_floats[30 * 3]; // Should be a Vec3f, but that just doesn't match
/* 0x16C */ s32 soundID;
/* 0x170 */ s32 unk170;
@@ -55,11 +58,11 @@ void audioline_ambient_create(u8 arg0, u16 soundId, f32 x, f32 y, f32 z, u8 arg5
s32 func_800099EC(u8 arg0);
void debug_render_line(Gfx **dList, Vertex **verts, Triangle **tris, f32 coords[6], u8 red, u8 green, u8 blue);
void func_80006BFC(Object *obj, ObjectSegment *segment, Object *obj2, s32 updateRate);
void update_spatial_audio_position(SoundMask *arg0, f32 x, f32 y, f32 z);
void update_spatial_audio_position(SoundMask *soundMask, f32 x, f32 y, f32 z);
s32 func_80009AB4(u8 arg0);
void audioline_init(void);
void audioline_reverb_create(f32, f32, f32, u8, u8, u8);
void audioline_reverb(s32 *soundState, f32 x, f32 y, f32 z);
void audioline_reverb(SoundHandle soundHandle, f32 x, f32 y, f32 z);
s32 audioline_distance(f32 inX, f32 inY, f32 inZ, f32 coords[6], f32 *outX, f32 *outY, f32 *outZ);
void audioline_reset(void);
+10 -10
View File
@@ -116,23 +116,23 @@ extern void alEvtqPostEvent(ALEventQueue *evtq, ALEvent *evt, ALMicroTime delta)
void sndp_set_global_volume(u32 volume);
s32 sndp_get_global_volume(void);
void sndp_set_active_sound_limit(s32 numChannels);
void sndp_set_active_sound_limit(s32 numSounds);
void sndp_init_player(audioMgrConfig *c);
ALMicroTime sndp_voice_handler(void *node);
void sndp_end(ALSoundState *state);
u16 sndp_get_state_counts(u16 *numFree, u16 *numAllocated);
void sndp_set_priority(ALSoundState *sndp, u8 priority);
ALSoundState *sndp_play(ALBank *bnk, s16 sndIndx, SoundHandle *soundMask);
ALSoundState *sndp_play(ALBank *bnk, s16 sndIndx, SoundHandle *handlePtr);
void sndp_stop_all_looped(void);
void sndp_set_param(SoundHandle soundMask, s16 type, u32 volume);
u16 sndp_get_group_volume(u8 channel);
void sndp_set_group_volume(u8 channel, u16 volume);
void sndp_apply_pitch_slide(ALSoundState *voiceState);
void sndp_stop_with_flags(u8 event);
void sndp_stop(SoundHandle soundMask);
ALSoundState *sndp_allocate(UNUSED ALBank *arg0, ALSound *arg1);
void sndp_set_param(SoundHandle soundMask, s16 type, u32 paramValue);
u16 sndp_get_group_volume(u8 groupID);
void sndp_set_group_volume(u8 groupID, u16 volume);
void sndp_apply_pitch_slide(ALSoundState *soundState);
void sndp_stop_with_flags(u8 flags);
void sndp_stop(SoundHandle state);
ALSoundState *sndp_allocate(UNUSED ALBank *arg0, ALSound *sound);
void sndp_deallocate(ALSoundState *);
ALSoundState *sndp_play_with_priority(ALBank *bnk, s16 sndIndx, u8 priority, SoundHandle *soundMask);
ALSoundState *sndp_play_with_priority(ALBank *bank, s16 sndIndx, u8 priority, SoundHandle *handlePtr);
void sndp_handle_event(SoundPlayer *sndp, ALSndpEvent *event);
#endif
+190 -177
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -435,7 +435,7 @@ void hud_treasure(Object_Racer *racer);
void minimap_marker_pos(f32 x, f32 z, f32 angleSin, f32 angleCos, f32 modelAspectRatio);
void hud_timer_render(s32 x, s32 y, s32 minutes, s32 seconds, s32 hundredths, s32 smallFont);
void hud_draw_model(ObjectModel *objModel);
void hud_element_render(Gfx **dList, MatrixS **mtx, Vertex **vtxList, HudElement *arg3);
void hud_element_render(Gfx **dList, MatrixS **mtx, Vertex **vtxList, HudElement *hud);
void hud_main_time_trial(s32, Object*, s32);
void hud_race_finish_multiplayer(Object_Racer *racer, s32 updateRate);
void func_800A1E48(Object*, s32 updateRate);
+2 -3
View File
@@ -47,7 +47,6 @@ void free_lights(void) {
/**
* Official Name: setupLights
*/
void setup_lights(s32 count) {
s32 i;
u8 *buffer;
@@ -227,9 +226,9 @@ UNUSED void enable_object_light(ObjectLight *light) {
UNUSED void toggle_object_light(ObjectLight *light) {
if (light->enabled == TRUE) {
light->enabled = FALSE;
return;
} else {
light->enabled = TRUE;
}
light->enabled = TRUE;
}
UNUSED void func_80032248(ObjectLight *light, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6) {
+1 -1
View File
@@ -98,7 +98,7 @@ void func_80032BAC(ObjectLight *light);
s32 get_light_count(void);
f32 light_distance_calc(ObjectLight *light);
f32 light_direction_calc(ObjectLight *light);
ObjectLight *func_80031CAC(Object *light, LevelObjectEntry_RgbaLight *lightEntry);
ObjectLight *func_80031CAC(Object *obj, LevelObjectEntry_RgbaLight *lightEntry);
ObjectLight *add_object_light(Object *obj, ObjectHeader24 *arg1);
void func_80032424(ObjectLight *light, s32 updateRate);
+4 -4
View File
@@ -50,7 +50,7 @@ s32 D_800DC714 = 0; // Currently unknown, might be a different type.
Object *gGhostObjStaff = NULL;
s8 D_800DC71C = 0;
s32 gObjectTexAnim = FALSE;
s16 gTimeTrialTime = 0x2A30;
s16 gTimeTrialTime = 10800;
s16 gTimeTrialVehicle = -1;
s16 gTimeTrialCharacter = 0;
u8 gHasGhostToSave = FALSE;
@@ -59,7 +59,7 @@ u8 gBeatStaffGhost = FALSE;
s8 D_800DC73C = 0;
s8 D_800DC740 = 0;
s8 gSwapLeadPlayer = FALSE;
s8 D_800DC748 = 0;
s8 D_800DC748 = FALSE;
s32 D_800DC74C[2] = { 0, 0 }; // Have a feeling these are both the same array.
s32 D_800DC754[2] = { 0, 0 };
Object *gShieldEffectObject = NULL;
@@ -700,7 +700,7 @@ void clear_object_pointers(void) {
void free_all_objects(void) {
s32 i, len;
timetrial_free_staff_ghost();
D_800DC748 = 0;
D_800DC748 = FALSE;
if (D_800DC71C) {
rumble_init(TRUE);
}
@@ -2333,7 +2333,7 @@ void obj_update(s32 updateRate) {
for (i = 0; i < gNumRacers; i++) {
update_player_racer((*gRacers)[i], updateRate);
}
if (get_current_level_race_type() == 0) {
if (get_current_level_race_type() == RACETYPE_DEFAULT) {
for (i = 0; i < gNumRacers; i++) {
racer = &gRacersByPosition[i]->unk64->racer;
if (racer->playerIndex != -1) {
+10 -10
View File
@@ -3056,7 +3056,7 @@ void func_8004F7F4(s32 updateRate, f32 updateRateF, Object *racerObj, Object_Rac
update_car_velocity_offground(racerObj, racer, updateRate, updateRateF);
}
if (racer->unk1C != 0) {
sndp_stop((s32) racer->unk1C); // type cast required to match
sndp_stop((SoundHandle) (s32) racer->unk1C); // type cast required to match
racer->unk1C = 0;
}
if (racer->buoyancy != 0.0f && racer->vehicleIDPrev != VEHICLE_BUBBLER) {
@@ -3519,23 +3519,23 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR
sound_play_spatial(SOUND_CAR_SLIDE, obj->segment.trans.x_position, obj->segment.trans.y_position,
obj->segment.trans.z_position, &racer->unk10);
} else {
audioline_reverb((s32) racer->unk10, obj->segment.trans.x_position, obj->segment.trans.y_position,
audioline_reverb((SoundHandle) (s32) racer->unk10, obj->segment.trans.x_position, obj->segment.trans.y_position,
obj->segment.trans.z_position);
}
if (racer->unk14) {
sndp_stop((s32) racer->unk14); // type cast required to match
sndp_stop((SoundHandle) (s32) racer->unk14); // type cast required to match
}
} else {
if (racer->unk10) {
sndp_stop((s32) racer->unk10); // type cast required to match
sndp_stop((SoundHandle) (s32) racer->unk10); // type cast required to match
}
}
} else {
if (racer->unk10) {
sndp_stop((s32) racer->unk10); // type cast required to match
sndp_stop((SoundHandle) (s32) racer->unk10); // type cast required to match
}
if (racer->unk14) {
sndp_stop((s32) racer->unk14); // type cast required to match
sndp_stop((SoundHandle) (s32) racer->unk14); // type cast required to match
}
}
// Velocity of steering input
@@ -3714,7 +3714,7 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR
sound_play(surfaceType, &racer->unk18);
}
if (racer->unk18 != 0 && (surfaceType == SOUND_NONE || racer->velocity > -2.0)) {
sndp_stop((s32) racer->unk18); // type cast required to match
sndp_stop((SoundHandle) (s32) racer->unk18); // type cast required to match
}
// Apply a bobbing effect when on grass and sand.
if (racer->velocity < -2.0 && sp68 >= 4) {
@@ -4170,13 +4170,13 @@ void update_car_velocity_offground(Object *obj, Object_Racer *racer, s32 updateR
racer->x_rotation_vel += (angle >> 3); //!@Delta
}
if (racer->unk18) {
sndp_stop((s32) racer->unk18); // type cast required to match
sndp_stop((SoundHandle) (s32) racer->unk18); // type cast required to match
}
if (racer->unk10) {
sndp_stop((s32) racer->unk10); // type cast required to match
sndp_stop((SoundHandle) (s32) racer->unk10); // type cast required to match
}
if (racer->unk14) {
sndp_stop((s32) racer->unk14); // type cast required to match
sndp_stop((SoundHandle) (s32) racer->unk14); // type cast required to match
}
if (racer->unk1FE == 1 || racer->unk1FE == 3) {
racer->unk1E8 = racer->steerAngle;
+9 -10
View File
@@ -11,9 +11,9 @@
s16 gGfxTaskMesgNums[16] = { 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
u8 sBGPrimColourrR = 0;
u8 sBGPrimColourrG = 0;
u8 sBGPrimColourrB = 0;
u8 sBGPrimColourR = 0;
u8 sBGPrimColourG = 0;
u8 sBGPrimColourB = 0;
s32 sBackgroundFillColour = GPACK_RGBA5551(0, 0, 0, 1) | (GPACK_RGBA5551(0, 0, 0, 1) << 16);
u32 gTexBGShiftX = 64;
@@ -386,9 +386,9 @@ UNUSED void gfxtask_run_rdp(void *bufPtr, s32 bufSize, UNUSED s32 unused) {
* Official name: rcpSetScreenColour
*/
void bgdraw_primcolour(u8 red, u8 green, u8 blue) {
sBGPrimColourrR = red;
sBGPrimColourrG = green;
sBGPrimColourrB = blue;
sBGPrimColourR = red;
sBGPrimColourG = green;
sBGPrimColourB = blue;
}
/**
@@ -445,7 +445,7 @@ void bgdraw_render(Gfx **dList, MatrixS **mtx, s32 drawBG) {
// fillmode.
if (copy_viewport_background_size_to_coords(0, &x1, &y1, &x2, &y2)) {
gDPSetCycleType((*dList)++, G_CYC_1CYCLE);
gDPSetPrimColor((*dList)++, 0, 0, sBGPrimColourrR, sBGPrimColourrG, sBGPrimColourrB, 255);
gDPSetPrimColor((*dList)++, 0, 0, sBGPrimColourR, sBGPrimColourG, sBGPrimColourB, 255);
gDPSetCombineMode((*dList)++, G_CC_PRIMITIVE, G_CC_PRIMITIVE);
gDPSetRenderMode((*dList)++, G_RM_OPA_SURF, G_RM_OPA_SURF2);
gDPFillRectangle((*dList)++, x1, y1, x2, y2);
@@ -458,9 +458,8 @@ void bgdraw_render(Gfx **dList, MatrixS **mtx, s32 drawBG) {
} else if (gBGDrawFunc.ptr != NULL) {
gBGDrawFunc.function(dList, mtx);
} else {
gDPSetFillColor((*dList)++,
(GPACK_RGBA5551(sBGPrimColourrR, sBGPrimColourrG, sBGPrimColourrB, 1) << 16) |
GPACK_RGBA5551(sBGPrimColourrR, sBGPrimColourrG, sBGPrimColourrB, 1));
gDPSetFillColor((*dList)++, (GPACK_RGBA5551(sBGPrimColourR, sBGPrimColourG, sBGPrimColourB, 1) << 16) |
GPACK_RGBA5551(sBGPrimColourR, sBGPrimColourG, sBGPrimColourB, 1));
gDPFillRectangle((*dList)++, 0, 0, w - 1, h - 1);
}
}
-3
View File
@@ -43,9 +43,6 @@ typedef struct DKR_OSTask {
extern s16 gGfxTaskMesgNums[16];
extern u8 sBGPrimColourrR;
extern u8 sBGPrimColourrG;
extern u8 sBGPrimColourrB;
extern s32 sBackgroundFillColour;
extern TextureHeader *gTexBGTex1;
+1 -1
View File
@@ -216,7 +216,7 @@ void func_800B9C18(s32);
void func_800BA8E4(Gfx**, MatrixS**, s32);
void func_8002DE30(Object*);
void shadow_generate(Object*, s32);
void func_8002E904(LevelModelSegment *, s32, s32 bool);
void func_8002E904(LevelModelSegment *, s32, s32 arg2);
void func_8002EEEC(s32 arg0);
void func_8002F2AC(void);
void func_8002F440(void);
+13 -19
View File
@@ -2101,7 +2101,7 @@ Object_64 *func_800BE654(s32 arg0, f32 arg1, f32 arg2) {
var_t0 = 0x80;
object = NULL;
if ((D_800E3040 != NULL) && (arg0 >= 0) && (arg0 < gNumberOfLevelSegments)) {
if (D_800E3040 != NULL && arg0 >= 0 && arg0 < gNumberOfLevelSegments) {
object = mempool_alloc_safe((D_80129FC8.unk20 >> 1) + 0xE, COLOUR_TAG_CYAN);
object->effect_box.unk0 = D_800E30D8[arg0].unk6;
object->effect_box.unk2 = 0;
@@ -2120,20 +2120,14 @@ Object_64 *func_800BE654(s32 arg0, f32 arg1, f32 arg2) {
} else {
var_t4 = D_80129FC8.unk0 + 1;
}
// clang-format off
arg1 -= D_800E30D8[arg0].unk4;
if (arg1 < 0.0f) {
arg1 = 0.0f;
// clang-format off
} else if (arg1 >= D_8012A0A0) { \
arg1 = D_8012A0A0 - 1;
// clang-format on
}
if (arg1 < 0.0f) { arg1 = 0.0f; }
else if (arg1 >= D_8012A0A0) { arg1 = D_8012A0A0 - 1; }
arg2 -= D_800E30D8[arg0].unk8;
if (arg2 < 0.0f) {
arg2 = 0.0f;
} else if (D_8012A0A4 <= arg2) {
arg2 = D_8012A0A4 - 1;
}
if (arg2 < 0.0f) { arg2 = 0.0f; }
else if (arg2 >= D_8012A0A4) { arg2 = D_8012A0A4 - 1; }
// clang-format on
spC4 = arg1 / var_f22;
spC0 = arg2 / var_f20;
object->effect_box.unk8 = spC4;
@@ -2151,12 +2145,12 @@ Object_64 *func_800BE654(s32 arg0, f32 arg1, f32 arg2) {
var_v0 -= D_80129FC8.unk4;
}
var_t1 = 0;
if ((arg2 != var_f20) && (arg1 < (((var_f20 - arg2) / var_f20) * var_f22))) {
var_t1 = 1;
var_t1 = FALSE;
if (arg2 != var_f20 && arg1 < (((var_f20 - arg2) / var_f20) * var_f22)) {
var_t1 = TRUE;
}
if (var_t1 != 0) {
if (var_t1 != FALSE) {
sp80[0] = (var_v0 * D_80129FC8.unk4) + var_a0;
if ((var_v0 + 1) >= D_80129FC8.unk4) {
@@ -2225,7 +2219,7 @@ Object_64 *func_800BE654(s32 arg0, f32 arg1, f32 arg2) {
temp_f = (D_800E3040[sp68[0]] + D_800E3040[sp68[1]]) * sp50[0];
var_f12 = (D_800E3040[sp68[2]] + D_800E3040[sp68[3]]) * sp50[1];
var_f0 = (D_800E3040[sp68[4]] + D_800E3040[sp68[5]]) * sp50[2];
if (var_t1 != 0) {
if (var_t1 != FALSE) {
var_f2 = (temp_f - var_f0) * var_f20;
var_f14 = (temp_f - var_f12) * var_f22;
} else {
@@ -2239,7 +2233,7 @@ Object_64 *func_800BE654(s32 arg0, f32 arg1, f32 arg2) {
var_f12 = var_f18 / var_f0;
var_v0_2 = -(s32) (((var_f2 * arg1) + (var_f14 * arg2) - ((spE4 * var_f2) + (temp_f * var_f12))) * 16.0f /
var_f12);
if ((var_v0_2 >= var_t0) || (var_v0_2 < -var_t0)) {
if (var_v0_2 >= var_t0 || var_v0_2 < -var_t0) {
var_v1 = 0;
do {
var_t0 += var_t0;
+12 -3
View File
@@ -2398,9 +2398,9 @@ gRumbleEnable = 0x800DFE30;
// rcp.c .data
gGfxTaskMesgNums = 0x800DFE40;
sBGPrimColourrR = 0x800DFE60;
sBGPrimColourrG = 0x800DFE64;
sBGPrimColourrB = 0x800DFE68;
sBGPrimColourR = 0x800DFE60;
sBGPrimColourG = 0x800DFE64;
sBGPrimColourB = 0x800DFE68;
sBackgroundFillColour = 0x800DFE6C;
gTexBGShiftX = 0x800DFE70;
gTexBGTex1 = 0x800DFE74;
@@ -2758,6 +2758,15 @@ gHudLapColours = 0x800E423C;
gHudIndicatorTimer = 0x800E4248;
gHudMinimapColours = 0x800E424C;
gHudColour = 0x800E42C4;
gHudTimeTrialJp_Ghost = 0x800E42C8;
gHudTimeTrialJp_Save = 0x800E42D4;
gHudTimeTrialJp_Impossible = 0x800E42DC;
gHudTimeTrialJp_FullBlank = 0x800E42E8;
gHudTimeTrialJp_FullPak = 0x800E42EC;
gHudTimeTrialJp_Full = 0x800E42F4;
gHudTimeTrialJp_DamagedBlank = 0x800E42FC;
gHudTimeTrialJp_DamagedPak = 0x800E4300;
gHudTimeTrialJp_Defective = 0x800E4308;
sRecordVel = 0x800E4314;
D_800E283C = 0x800E4318;
+3 -3
View File
@@ -2257,9 +2257,9 @@ gN64FontCodes = 0x800DE4D4;
sControllerPaksPresent = 0x800DE518;
gRumbleKillTimer = 0x800DE51C;
gGfxTaskMesgNums = 0x800DE520;
sBGPrimColourrR = 0x800DE540;
sBGPrimColourrG = 0x800DE544;
sBGPrimColourrB = 0x800DE548;
sBGPrimColourR = 0x800DE540;
sBGPrimColourG = 0x800DE544;
sBGPrimColourB = 0x800DE548;
sBackgroundFillColour = 0x800DE54C;
gTexBGShiftX = 0x800DE550;
gTexBGTex1 = 0x800DE554;
+3 -3
View File
@@ -2185,9 +2185,9 @@ sControllerPaksPresent = 0x800DEA88;
gRumbleKillTimer = 0x800DEA8C;
gRumbleEnable = 0x800DEA90; // has a diff from v1 - NEW DATA SYMBOL
gGfxTaskMesgNums = 0x800DEAA0;
sBGPrimColourrR = 0x800DEAC0;
sBGPrimColourrG = 0x800DEAC4;
sBGPrimColourrB = 0x800DEAC8;
sBGPrimColourR = 0x800DEAC0;
sBGPrimColourG = 0x800DEAC4;
sBGPrimColourB = 0x800DEAC8;
sBackgroundFillColour = 0x800DEACC;
gTexBGShiftX = 0x800DEAD0;
gTexBGTex1 = 0x800DEAD4;
+3 -3
View File
@@ -2392,9 +2392,9 @@ gRumbleKillTimer = 0x800DE48C;
// rcp.c .data
gGfxTaskMesgNums = 0x800DE490;
sBGPrimColourrR = 0x800DE4B0;
sBGPrimColourrG = 0x800DE4B4;
sBGPrimColourrB = 0x800DE4B8;
sBGPrimColourR = 0x800DE4B0;
sBGPrimColourG = 0x800DE4B4;
sBGPrimColourB = 0x800DE4B8;
sBackgroundFillColour = 0x800DE4BC;
gTexBGShiftX = 0x800DE4C0;
gTexBGTex1 = 0x800DE4C4;

Some files were not shown because too many files have changed in this diff Show More