diff --git a/README.md b/README.md index 619e7dc4..472ce8de 100644 --- a/README.md +++ b/README.md @@ -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% --- @@ -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 diff --git a/include/enums.h b/include/enums.h index 1ed6cbce..8686c266 100644 --- a/include/enums.h +++ b/include/enums.h @@ -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. diff --git a/src/audio.h b/src/audio.h index f81fbfc2..de3fa7ca 100644 --- a/src/audio.h +++ b/src/audio.h @@ -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); diff --git a/src/audio_spatial.c b/src/audio_spatial.c index d46ede65..26fe76ea 100644 --- a/src/audio_spatial.c +++ b/src/audio_spatial.c @@ -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) { diff --git a/src/audio_spatial.h b/src/audio_spatial.h index 09f6b1b7..f1247125 100644 --- a/src/audio_spatial.h +++ b/src/audio_spatial.h @@ -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); diff --git a/src/audiosfx.h b/src/audiosfx.h index 51d896dd..dad0fd0d 100644 --- a/src/audiosfx.h +++ b/src/audiosfx.h @@ -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 diff --git a/src/game_ui.c b/src/game_ui.c index 8d8546ff..66b4ccd4 100644 --- a/src/game_ui.c +++ b/src/game_ui.c @@ -146,29 +146,29 @@ u32 gHudColour = COLOUR_RGBA32(255, 255, 255, 254); #if REGION == REGION_JP // ゴースト - Ghost -char D_800E42C8_E4EC8[] = { 0x80, 0x80, 0x80, 0x3B, 0x80, 0x5C, 0x80, 0x63, 0x00, 0x00 }; +char gHudTimeTrialJp_Ghost[] = { 0x80, 0x80, 0x80, 0x3B, 0x80, 0x5C, 0x80, 0x63, 0x00, 0x00 }; // セーブ - Save -char D_800E42D4_E4ED4[] = { 0x80, 0x5D, 0x80, 0x3B, 0x80, 0x8D }; +char gHudTimeTrialJp_Save[] = { 0x80, 0x5D, 0x80, 0x3B, 0x80, 0x8D }; // ふかのう - Impossible -char D_800E42DC_E4EDC[] = { 0x80, 0xD5, 0x80, 0xBF, 0x80, 0xD2, 0x80, 0xBC, 0x00, 0x00 }; +char gHudTimeTrialJp_Impossible[] = { 0x80, 0xD5, 0x80, 0xBF, 0x80, 0xD2, 0x80, 0xBC, 0x00, 0x00 }; -char D_800E42E8_E4EE8[] = { 0x00, 0x00, 0x00, 0x00 }; +char gHudTimeTrialJp_FullBlank[] = { 0x00, 0x00, 0x00, 0x00 }; // パック - Pak -char D_800E42EC_E4EEC[] = { 0x80, 0x90, 0x80, 0x4A, 0x80, 0x57 }; +char gHudTimeTrialJp_FullPak[] = { 0x80, 0x90, 0x80, 0x4A, 0x80, 0x57 }; // フル - Full -char D_800E42F4_E4EF4[] = { 0x80, 0x6B, 0x80, 0x78, 0x00, 0x00 }; +char gHudTimeTrialJp_Full[] = { 0x80, 0x6B, 0x80, 0x78, 0x00, 0x00 }; -char D_800E42FC_E4EFC[] = { 0x00, 0x00, 0x00, 0x00 }; +char gHudTimeTrialJp_DamagedBlank[] = { 0x00, 0x00, 0x00, 0x00 }; // パック - Pak -char D_800E4300_E4F00[] = { 0x80, 0x90, 0x80, 0x4A, 0x80, 0x57 }; +char gHudTimeTrialJp_DamagedPak[] = { 0x80, 0x90, 0x80, 0x4A, 0x80, 0x57 }; // ふりょう - Defective -char D_800E4308_E4F08[] = { 0x80, 0xD5, 0x80, 0xE1, 0x80, 0xB7, 0x80, 0xBC, 0x00, 0x00 }; +char gHudTimeTrialJp_Defective[] = { 0x80, 0xD5, 0x80, 0xE1, 0x80, 0xB7, 0x80, 0xBC, 0x00, 0x00 }; #endif UNUSED f32 sRecordVel = 0.0f; // Set to whatever the highest velocity recorded is, but never actually used. @@ -344,15 +344,15 @@ void hud_init_element(void) { s32 var_v0; var_v0 = get_current_level_race_type(); - if ((var_v0 == 1) || (var_v0 == 5)) { + if (var_v0 == RACETYPE_UNK1 || var_v0 == RACETYPE_HUBWORLD) { gHudOffsetX = 0; gHudRaceStart = 1; } else { if (gHUDNumPlayers < 2) { - gHudOffsetX = 0x140; + gHudOffsetX = SCREEN_WIDTH; gHudBounceMag = 2.0f; } else { - gHudOffsetX = 0xC8; + gHudOffsetX = SCREEN_WIDTH - SCREEN_HEIGHT_HALF; gHudBounceMag = 2.0f; } gHudRaceStart = 0; @@ -363,32 +363,36 @@ void hud_init_element(void) { gWrongWayNagPrefix = 0; gHudSlide = 0; gMinimapOpacity = 0; - gMinimapOpacityTarget = osTvType == OS_TV_TYPE_PAL ? 0x3C : 0x32; +#if VERSION == VERSION_80 + gMinimapOpacityTarget = osTvType == OS_TV_TYPE_PAL ? 61 : 51; +#else + gMinimapOpacityTarget = osTvType == OS_TV_TYPE_PAL ? 60 : 50; +#endif gMinimapFade = 0; gShowHUD = 0; D_80126CD5 = 0; D_80127189 = 0; - D_80126D4C = -0x64; - D_80126D50 = get_random_number_from_range(0x78, 0x168); + D_80126D4C = -100; + D_80126D50 = get_random_number_from_range(120, 360); D_8012718A = func_8000E158(); - gStopwatchErrorX = 0x37; - gStopwatchErrorY = 0xB3; + gStopwatchErrorX = 55; + gStopwatchErrorY = 179; if (osTvType == OS_TV_TYPE_PAL) { - gStopwatchErrorY += 0x1E; + gStopwatchErrorY += 30; gStopwatchErrorX -= 4; } - gHudTimeTrialGhost = timetrial_ghost_staff() == NULL ? 0 : 1; + gHudTimeTrialGhost = timetrial_ghost_staff() == NULL ? FALSE : TRUE; activePlayers = gNumActivePlayers != 3 ? gNumActivePlayers : 4; for (j = 0; j < activePlayers; j++) { gCurrentHud = gPlayerHud[j]; for (k = 0; k < ARRAY_COUNT(gHudElementBase); k++) { - gCurrentHud->entry[k].pos.f[0] = gHudElementBase[k].pos.f[0]; - gCurrentHud->entry[k].pos.f[1] = gHudElementBase[k].pos.f[1]; - gCurrentHud->entry[k].pos.f[2] = gHudElementBase[k].pos.f[2]; + gCurrentHud->entry[k].pos.x = gHudElementBase[k].pos.x; + gCurrentHud->entry[k].pos.y = gHudElementBase[k].pos.y; + gCurrentHud->entry[k].pos.z = gHudElementBase[k].pos.z; gCurrentHud->entry[k].scale = gHudElementBase[k].scale; - gCurrentHud->entry[k].rotation.s[2] = gHudElementBase[k].rotation.s[2]; - gCurrentHud->entry[k].rotation.s[1] = gHudElementBase[k].rotation.s[1]; - gCurrentHud->entry[k].rotation.s[0] = gHudElementBase[k].rotation.s[0]; + gCurrentHud->entry[k].rotation.z = gHudElementBase[k].rotation.z; + gCurrentHud->entry[k].rotation.y = gHudElementBase[k].rotation.y; + gCurrentHud->entry[k].rotation.x = gHudElementBase[k].rotation.x; gCurrentHud->entry[k].spriteID = gHudElementBase[k].spriteID; gCurrentHud->entry[k].spriteOffset = gHudElementBase[k].spriteOffset; gCurrentHud->entry[k].timer.minutes = gHudElementBase[k].timer.minutes; @@ -399,60 +403,60 @@ void hud_init_element(void) { gCurrentHud->entry[HUD_SILVER_COIN_TALLY].silverCoinTally.offsetY = 5; if (gHUDNumPlayers == 1) { for (temp800E25C4 = D_800E25C4; temp800E25C4[0] != -1; temp800E25C4 += 3) { - gCurrentHud->entry[temp800E25C4[0]].pos.f[0] = temp800E25C4[1]; + gCurrentHud->entry[temp800E25C4[0]].pos.x = temp800E25C4[1]; if ((gAssetHudElementIds[gCurrentHud->entry[temp800E25C4[0]].spriteID] & ASSET_MASK_TEXTURE) == ASSET_MASK_TEXTURE) { if (j == 0) { - gCurrentHud->entry[temp800E25C4[0]].pos.f[1] = temp800E25C4[2]; + gCurrentHud->entry[temp800E25C4[0]].pos.y = temp800E25C4[2]; } else { - gCurrentHud->entry[temp800E25C4[0]].pos.f[1] = temp800E25C4[2] + 0x6C; + gCurrentHud->entry[temp800E25C4[0]].pos.y = temp800E25C4[2] + 108; } } else if (j == 0) { - gCurrentHud->entry[temp800E25C4[0]].pos.f[1] = temp800E25C4[2] + 0x3C; + gCurrentHud->entry[temp800E25C4[0]].pos.y = temp800E25C4[2] + 60; } else { - gCurrentHud->entry[temp800E25C4[0]].pos.f[1] = temp800E25C4[2] - 0x30; + gCurrentHud->entry[temp800E25C4[0]].pos.y = temp800E25C4[2] - 48; } } - gCurrentHud->entry[HUD_CHALLENGE_PORTRAIT].pos.f[0] = 263.0f; - gCurrentHud->entry[HUD_CHALLENGE_PORTRAIT].pos.f[1] = 17.0f; - gCurrentHud->entry[HUD_TREASURE_METRE].pos.f[0] = 247.0f; - gCurrentHud->entry[HUD_TREASURE_METRE].pos.f[1] = 45.0f; - gCurrentHud->entry[HUD_EGG_CHALLENGE_ICON].pos.f[0] = 259.0f; - gCurrentHud->entry[HUD_EGG_CHALLENGE_ICON].pos.f[1] = 49.0f; - gCurrentHud->entry[HUD_BATTLE_BANANA_ICON].pos.f[0] = 103.0f; - gCurrentHud->entry[HUD_BATTLE_BANANA_ICON].pos.f[1] = 49.0f; - gCurrentHud->entry[HUD_BATTLE_BANANA_X].pos.f[0] = 264.0f; - gCurrentHud->entry[HUD_BATTLE_BANANA_X].pos.f[1] = 50.0f; - gCurrentHud->entry[HUD_BATTLE_BANANA_COUNT_1].pos.f[0] = 265.0f; - gCurrentHud->entry[HUD_BATTLE_BANANA_COUNT_1].pos.f[1] = 51.0f; - gCurrentHud->entry[HUD_BATTLE_BANANA_COUNT_2].pos.f[0] = 274.0f; - gCurrentHud->entry[HUD_BATTLE_BANANA_COUNT_2].pos.f[1] = 51.0f; - gCurrentHud->entry[HUD_CHALLENGE_PORTRAIT].pos.f[1] = 17.0f; + gCurrentHud->entry[HUD_CHALLENGE_PORTRAIT].pos.x = 263.0f; + gCurrentHud->entry[HUD_CHALLENGE_PORTRAIT].pos.y = 17.0f; + gCurrentHud->entry[HUD_TREASURE_METRE].pos.x = 247.0f; + gCurrentHud->entry[HUD_TREASURE_METRE].pos.y = 45.0f; + gCurrentHud->entry[HUD_EGG_CHALLENGE_ICON].pos.x = 259.0f; + gCurrentHud->entry[HUD_EGG_CHALLENGE_ICON].pos.y = 49.0f; + gCurrentHud->entry[HUD_BATTLE_BANANA_ICON].pos.x = 103.0f; + gCurrentHud->entry[HUD_BATTLE_BANANA_ICON].pos.y = 49.0f; + gCurrentHud->entry[HUD_BATTLE_BANANA_X].pos.x = 264.0f; + gCurrentHud->entry[HUD_BATTLE_BANANA_X].pos.y = 50.0f; + gCurrentHud->entry[HUD_BATTLE_BANANA_COUNT_1].pos.x = 265.0f; + gCurrentHud->entry[HUD_BATTLE_BANANA_COUNT_1].pos.y = 51.0f; + gCurrentHud->entry[HUD_BATTLE_BANANA_COUNT_2].pos.x = 274.0f; + gCurrentHud->entry[HUD_BATTLE_BANANA_COUNT_2].pos.y = 51.0f; + gCurrentHud->entry[HUD_CHALLENGE_PORTRAIT].pos.y = 17.0f; gCurrentHud->entry[HUD_SILVER_COIN_TALLY].silverCoinTally.offsetY = 3; } else if ((gHUDNumPlayers == 2) || (gHUDNumPlayers == 3)) { for (temp800E2684 = D_800E2684; temp800E2684[0] != -1; temp800E2684 += 4) { if ((gAssetHudElementIds[gCurrentHud->entry[temp800E2684[0]].spriteID] & ASSET_MASK_TEXTURE) == ASSET_MASK_TEXTURE) { if ((j == 0) || (j == 2)) { - gCurrentHud->entry[temp800E2684[0]].pos.f[0] = temp800E2684[1]; + gCurrentHud->entry[temp800E2684[0]].pos.x = temp800E2684[1]; } else { - gCurrentHud->entry[temp800E2684[0]].pos.f[0] = temp800E2684[3] + 0xA0; + gCurrentHud->entry[temp800E2684[0]].pos.x = temp800E2684[3] + 160; } if ((j == 0) || (j == 1)) { - gCurrentHud->entry[temp800E2684[0]].pos.f[1] = temp800E2684[2]; + gCurrentHud->entry[temp800E2684[0]].pos.y = temp800E2684[2]; } else { - gCurrentHud->entry[temp800E2684[0]].pos.f[1] = temp800E2684[2] + 0x6C; + gCurrentHud->entry[temp800E2684[0]].pos.y = temp800E2684[2] + 108; } } else { if ((j == 0) || (j == 2)) { - gCurrentHud->entry[temp800E2684[0]].pos.f[0] = temp800E2684[1] - 0x50; + gCurrentHud->entry[temp800E2684[0]].pos.x = temp800E2684[1] - 80; } else { - gCurrentHud->entry[temp800E2684[0]].pos.f[0] = temp800E2684[3] + 0x50; + gCurrentHud->entry[temp800E2684[0]].pos.x = temp800E2684[3] + 80; } if ((j == 0) || (j == 1)) { - gCurrentHud->entry[temp800E2684[0]].pos.f[1] = temp800E2684[2] + 0x3C; + gCurrentHud->entry[temp800E2684[0]].pos.y = temp800E2684[2] + 60; } else { - gCurrentHud->entry[temp800E2684[0]].pos.f[1] = temp800E2684[2] - 0x30; + gCurrentHud->entry[temp800E2684[0]].pos.y = temp800E2684[2] - 48; } } } @@ -498,68 +502,68 @@ void hud_init_element(void) { gCurrentHud->entry[HUD_BANANA_COUNT_ICON_STATIC].weaponDisplay.prevLevel = 1; } if (is_in_time_trial() != 0) { - gCurrentHud->entry[HUD_BANANA_COUNT_ICON_SPIN].pos.f[0] += -25.0f; - gCurrentHud->entry[HUD_BANANA_COUNT_NUMBER_1].pos.f[0] += -25.0f; - gCurrentHud->entry[HUD_BANANA_COUNT_NUMBER_2].pos.f[0] += -25.0f; - gCurrentHud->entry[HUD_BANANA_COUNT_SPARKLE].pos.f[0] += -25.0f; - gCurrentHud->entry[HUD_BANANA_COUNT_ICON_STATIC].pos.f[0] += -25.0f; - gCurrentHud->entry[HUD_BANANA_COUNT_X].pos.f[0] += -25.0f; - gCurrentHud->entry[HUD_LAP_COUNT_CURRENT].pos.f[0] += -58.0f; - gCurrentHud->entry[HUD_LAP_COUNT_SEPERATOR].pos.f[0] += -58.0f; - gCurrentHud->entry[HUD_LAP_COUNT_TOTAL].pos.f[0] += -58.0f; - gCurrentHud->entry[HUD_LAP_COUNT_LABEL].pos.f[0] += -58.0f; - gCurrentHud->entry[HUD_LAP_COUNT_FLAG].pos.f[0] += -58.0f; + gCurrentHud->entry[HUD_BANANA_COUNT_ICON_SPIN].pos.x += -25.0f; + gCurrentHud->entry[HUD_BANANA_COUNT_NUMBER_1].pos.x += -25.0f; + gCurrentHud->entry[HUD_BANANA_COUNT_NUMBER_2].pos.x += -25.0f; + gCurrentHud->entry[HUD_BANANA_COUNT_SPARKLE].pos.x += -25.0f; + gCurrentHud->entry[HUD_BANANA_COUNT_ICON_STATIC].pos.x += -25.0f; + gCurrentHud->entry[HUD_BANANA_COUNT_X].pos.x += -25.0f; + gCurrentHud->entry[HUD_LAP_COUNT_CURRENT].pos.x += -58.0f; + gCurrentHud->entry[HUD_LAP_COUNT_SEPERATOR].pos.x += -58.0f; + gCurrentHud->entry[HUD_LAP_COUNT_TOTAL].pos.x += -58.0f; + gCurrentHud->entry[HUD_LAP_COUNT_LABEL].pos.x += -58.0f; + gCurrentHud->entry[HUD_LAP_COUNT_FLAG].pos.x += -58.0f; } switch (get_current_level_race_type()) { - case 0x8: - gCurrentHud->entry[HUD_BANANA_COUNT_ICON_SPIN].pos.f[0] += -120.0f; - gCurrentHud->entry[HUD_BANANA_COUNT_NUMBER_1].pos.f[0] += -120.0f; - gCurrentHud->entry[HUD_BANANA_COUNT_NUMBER_2].pos.f[0] += -120.0f; - gCurrentHud->entry[HUD_BANANA_COUNT_SPARKLE].pos.f[0] += -120.0f; - gCurrentHud->entry[HUD_BANANA_COUNT_ICON_STATIC].pos.f[0] += -120.0f; - gCurrentHud->entry[HUD_BANANA_COUNT_X].pos.f[0] += -120.0f; - gCurrentHud->entry[HUD_LAP_COUNT_LABEL].pos.f[0] += 28.0f; - gCurrentHud->entry[HUD_LAP_COUNT_CURRENT].pos.f[0] += 28.0f; - gCurrentHud->entry[HUD_LAP_COUNT_SEPERATOR].pos.f[0] += 28.0f; - gCurrentHud->entry[HUD_LAP_COUNT_TOTAL].pos.f[0] += 28.0f; - gCurrentHud->entry[HUD_LAP_COUNT_FLAG].pos.f[0] += 28.0f; + case RACETYPE_BOSS: + gCurrentHud->entry[HUD_BANANA_COUNT_ICON_SPIN].pos.x += -120.0f; + gCurrentHud->entry[HUD_BANANA_COUNT_NUMBER_1].pos.x += -120.0f; + gCurrentHud->entry[HUD_BANANA_COUNT_NUMBER_2].pos.x += -120.0f; + gCurrentHud->entry[HUD_BANANA_COUNT_SPARKLE].pos.x += -120.0f; + gCurrentHud->entry[HUD_BANANA_COUNT_ICON_STATIC].pos.x += -120.0f; + gCurrentHud->entry[HUD_BANANA_COUNT_X].pos.x += -120.0f; + gCurrentHud->entry[HUD_LAP_COUNT_LABEL].pos.x += 28.0f; + gCurrentHud->entry[HUD_LAP_COUNT_CURRENT].pos.x += 28.0f; + gCurrentHud->entry[HUD_LAP_COUNT_SEPERATOR].pos.x += 28.0f; + gCurrentHud->entry[HUD_LAP_COUNT_TOTAL].pos.x += 28.0f; + gCurrentHud->entry[HUD_LAP_COUNT_FLAG].pos.x += 28.0f; break; - case 0x41: + case RACETYPE_CHALLENGE_BANANAS: if (osTvType == OS_TV_TYPE_PAL) { - gCurrentHud->entry[HUD_TREASURE_METRE].pos.f[1] -= 4.0f; + gCurrentHud->entry[HUD_TREASURE_METRE].pos.y -= 4.0f; } if (gNumActivePlayers >= 3) { - var_v0 = (j == 0) || (j == 2) ? 0xF : -0xA; + var_v0 = (j == 0) || (j == 2) ? 15 : -10; } else { - var_v0 = gNumActivePlayers == 1 ? -0xA : 0; + var_v0 = gNumActivePlayers == 1 ? -10 : 0; } - gCurrentHud->entry[HUD_BANANA_COUNT_ICON_STATIC].pos.f[0] += var_v0; - gCurrentHud->entry[HUD_BANANA_COUNT_ICON_SPIN].pos.f[0] += var_v0; - gCurrentHud->entry[HUD_BANANA_COUNT_NUMBER_1].pos.f[0] += var_v0; - gCurrentHud->entry[HUD_BANANA_COUNT_NUMBER_2].pos.f[0] += var_v0; - gCurrentHud->entry[HUD_BANANA_COUNT_SPARKLE].pos.f[0] += var_v0; - gCurrentHud->entry[HUD_BANANA_COUNT_X].pos.f[0] += var_v0; + gCurrentHud->entry[HUD_BANANA_COUNT_ICON_STATIC].pos.x += var_v0; + gCurrentHud->entry[HUD_BANANA_COUNT_ICON_SPIN].pos.x += var_v0; + gCurrentHud->entry[HUD_BANANA_COUNT_NUMBER_1].pos.x += var_v0; + gCurrentHud->entry[HUD_BANANA_COUNT_NUMBER_2].pos.x += var_v0; + gCurrentHud->entry[HUD_BANANA_COUNT_SPARKLE].pos.x += var_v0; + gCurrentHud->entry[HUD_BANANA_COUNT_X].pos.x += var_v0; break; } if (is_taj_challenge() != 0) { - gCurrentHud->entry[HUD_LAP_COUNT_LABEL].pos.f[0] += 28.0f; - gCurrentHud->entry[HUD_LAP_COUNT_CURRENT].pos.f[0] += 28.0f; - gCurrentHud->entry[HUD_LAP_COUNT_SEPERATOR].pos.f[0] += 28.0f; - gCurrentHud->entry[HUD_LAP_COUNT_TOTAL].pos.f[0] += 28.0f; - gCurrentHud->entry[HUD_LAP_COUNT_FLAG].pos.f[0] += 28.0f; + gCurrentHud->entry[HUD_LAP_COUNT_LABEL].pos.x += 28.0f; + gCurrentHud->entry[HUD_LAP_COUNT_CURRENT].pos.x += 28.0f; + gCurrentHud->entry[HUD_LAP_COUNT_SEPERATOR].pos.x += 28.0f; + gCurrentHud->entry[HUD_LAP_COUNT_TOTAL].pos.x += 28.0f; + gCurrentHud->entry[HUD_LAP_COUNT_FLAG].pos.x += 28.0f; } if (osTvType == OS_TV_TYPE_PAL) { for (k = 0; (k < HUD_ELEMENT_COUNT) ^ 0; k++) { i = k; - gCurrentHud->entry[k].pos.f[1] *= 1.2; - gCurrentHud->entry[k].pos.f[0] -= 4.0f; + gCurrentHud->entry[k].pos.y *= 1.2; + gCurrentHud->entry[k].pos.x -= 4.0f; if ((gAssetHudElementIds[gCurrentHud->entry[k].spriteID] & ASSET_MASK_TEXTURE) == ASSET_MASK_TEXTURE) { - gCurrentHud->entry[i].pos.f[1] -= 10.0f; + gCurrentHud->entry[i].pos.y -= 10.0f; } } for (k = HUD_SPEEDOMETRE_0; k < HUD_SILVER_COIN_TALLY; k++) { - gCurrentHud->entry[k].pos.f[1] += 10.0f; + gCurrentHud->entry[k].pos.y += 10.0f; } } gCurrentHud->entry[HUD_BALLOON_COUNT_ICON].scale = 1.0f; @@ -567,12 +571,12 @@ void hud_init_element(void) { gCurrentHud->entry[HUD_BALLOON_COUNT_NUMBER_1].spriteID = 9; gCurrentHud->entry[HUD_BALLOON_COUNT_NUMBER_2].spriteID = 9; } - if (get_current_level_race_type() & 0x40) { + if (get_current_level_race_type() & RACETYPE_CHALLENGE) { gPrevToggleSetting = gHudToggleSettings[1]; gHudToggleSettings[1] = 0; - return; + } else { + gHudToggleSettings[1] = gPrevToggleSetting; } - gHudToggleSettings[1] = gPrevToggleSetting; } /** @@ -1106,13 +1110,13 @@ void hud_draw_eggs(Object *racerObj, s32 updateRate) { } else { racer = &racers[0]->unk64->racer; } - if (numRacers == 4) { + if (numRacers == MAXCONTROLLERS) { sprite_anim_off(TRUE); portraitX = gCurrentHud->entry[HUD_CHALLENGE_PORTRAIT].pos.x; portraitY = gCurrentHud->entry[HUD_CHALLENGE_PORTRAIT].pos.y; diffX = (gCurrentHud->entry[HUD_EGG_CHALLENGE_ICON].pos.x - portraitX); diffY = (gCurrentHud->entry[HUD_EGG_CHALLENGE_ICON].pos.y - portraitY); - for (i = 0; i < 4; i++) { + for (i = 0; i < MAXCONTROLLERS; i++) { curRacer = &racers[i]->unk64->racer; if (gNumActivePlayers < 3 || racer->playerIndex == curRacer->playerIndex) { hud_eggs_portrait(curRacer, updateRate); @@ -1434,7 +1438,7 @@ void hud_main_time_trial(s32 arg0, Object *playerRacerObj, s32 updateRate) { ttSWArms.x = 0; ttSWArms.y = 0; ttSWArms.z = 0; - gAssetHudElements->entry[34] = spawn_object(&ttSWArms, 0); + gAssetHudElements->entry[HUD_STOPWATCH] = spawn_object(&ttSWArms, 0); gCurrentHud->entry[HUD_STOPWATCH].rotation.y_rotation = -0x8000; } @@ -1447,7 +1451,7 @@ void hud_main_time_trial(s32 arg0, Object *playerRacerObj, s32 updateRate) { obj68 = ttSWBodyObject->unk68[0]; obj68->objModel->unk52 = updateRate; if (gStopwatchFaceID != 0xFF) { - if ((gStopwatchFaceID == 4) && ((get_race_countdown()) || (!music_is_playing()))) { + if (gStopwatchFaceID == 4 && (get_race_countdown() || !music_is_playing())) { ttSWBodyObject->segment.animFrame = 16; } else if (gStopwatchFaceID == 4) { animcationFraction = music_animation_fraction(); @@ -1479,7 +1483,7 @@ void hud_main_time_trial(s32 arg0, Object *playerRacerObj, s32 updateRate) { ttSWBodyObject->segment.animFrame = temp_lo - 1; } else { ttSWBodyObject->segment.animFrame = 0; - if (curRacer->wrongWayCounter == 0 && curRacer->raceFinished == 0) { + if (curRacer->wrongWayCounter == 0 && curRacer->raceFinished == FALSE) { hud_stopwatch_face(4, 0, 4, 1, 1); } } @@ -1583,7 +1587,7 @@ void hud_main_time_trial(s32 arg0, Object *playerRacerObj, s32 updateRate) { if (timetrial_valid_player_ghost()) { ttSWBodyObject = timetrial_player_ghost(); if (ttSWBodyObject != NULL) { - if ((get_race_countdown() == 0) && (curRacer->raceFinished == 0)) { + if (get_race_countdown() == 0 && curRacer->raceFinished == FALSE) { posX = ttSWBodyObject->segment.trans.x_position - playerRacerObj->segment.trans.x_position; posY = ttSWBodyObject->segment.trans.y_position - playerRacerObj->segment.trans.y_position; posZ = ttSWBodyObject->segment.trans.z_position - playerRacerObj->segment.trans.z_position; @@ -1605,7 +1609,7 @@ void hud_main_time_trial(s32 arg0, Object *playerRacerObj, s32 updateRate) { } } - if ((curRacer->lap_times[curRacer->lap] < 30) && (curRacer->lap != 0)) { + if (curRacer->lap_times[curRacer->lap] < 30 && curRacer->lap != 0) { hud_stopwatch_face(5, 1, 2, 2, 0); } else if (curRacer->boostTimer > 0) { hud_stopwatch_face(6, 2, 3, 2, 0); @@ -1625,23 +1629,28 @@ void hud_main_time_trial(s32 arg0, Object *playerRacerObj, s32 updateRate) { #if REGION == REGION_JP switch (get_contpak_error()) { - // Print "CAN'T SAVE GOST" + // Print "ゴースト セーブ ふかのう" - "Ghost Save Impossible" case CONTPAK_ERROR_UNKNOWN: - SWMessage[2] = D_800E42DC_E4EDC; - SWMessage[1] = D_800E42D4_E4ED4; - SWMessage[0] = D_800E42C8_E4EC8; + SWMessage[2] = gHudTimeTrialJp_Ghost; + SWMessage[1] = gHudTimeTrialJp_Save; + SWMessage[0] = gHudTimeTrialJp_Impossible; break; - // Print "CONTROLLER PAK FULL" + // Print "{blank} パック フル " - "{blank} Pak Full" case CONTPAK_ERROR_FULL: - SWMessage[2] = D_800E42E8_E4EE8; - SWMessage[1] = D_800E42EC_E4EEC; - SWMessage[0] = D_800E42F4_E4EF4; + SWMessage[2] = *(s32 *) gHudTimeTrialJp_FullBlank; + SWMessage[1] = gHudTimeTrialJp_FullPak; + SWMessage[0] = gHudTimeTrialJp_Full; break; - // Print "CONTROLLER PAK DAMAGED" + // Print "{blank} パック ふりょう" - "{blank} Pak Defective" case CONTPAK_ERROR_DAMAGED: - SWMessage[2] = D_800E42FC_E4EFC; - SWMessage[1] = D_800E4300_E4F00; - SWMessage[0] = D_800E4308_E4F08; + SWMessage[2] = *(s32 *) gHudTimeTrialJp_DamagedBlank; + SWMessage[1] = gHudTimeTrialJp_DamagedPak; + SWMessage[0] = gHudTimeTrialJp_Defective; + break; + default: + SWMessage[2] = NULL; + SWMessage[1] = NULL; + SWMessage[0] = NULL; break; } #else @@ -1664,10 +1673,17 @@ void hud_main_time_trial(s32 arg0, Object *playerRacerObj, s32 updateRate) { SWMessage[1] = "PAK"; SWMessage[0] = "DAMAGED"; break; +#if VERSION >= VERSION_79 + default: + SWMessage[2] = NULL; + SWMessage[1] = NULL; + SWMessage[0] = NULL; + break; +#endif } #endif - set_kerning(1); + set_kerning(TRUE); set_text_font(ASSET_FONTS_FUNFONT); // Draw text shadow. set_text_colour(0, 0, 0, 255, 255); @@ -1686,7 +1702,7 @@ void hud_main_time_trial(s32 arg0, Object *playerRacerObj, s32 updateRate) { draw_text(&gHudDL, gStopwatchErrorX + gHudOffsetX + gHudBounceX, gStopwatchErrorY + 28, SWMessage[0], ALIGN_MIDDLE_CENTER); update_colour_cycle(D_80127194, updateRate); - set_kerning(0); + set_kerning(FALSE); } sprite_anim_off(FALSE); @@ -3731,7 +3747,7 @@ void minimap_marker_pos(f32 x, f32 z, f32 angleSin, f32 angleCos, f32 modelAspec ((scaledX * angleSin) - (scaledY * angleCos)) + gMinimapDotOffsetY; } -void hud_element_render(Gfx **arg0, MatrixS **arg1, Vertex **arg2, HudElement *arg3) { +void hud_element_render(Gfx **dList, MatrixS **mtx, Vertex **vtxList, HudElement *hud) { TextureHeader **textureHeader3; TextureHeader *textureHeader2; TextureHeader *textureHeader; @@ -3752,7 +3768,7 @@ void hud_element_render(Gfx **arg0, MatrixS **arg1, Vertex **arg2, HudElement *a UNUSED s32 pad4[2]; s32 spriteElementId; - spriteID = arg3->spriteID; + spriteID = hud->spriteID; spriteElementId = gAssetHudElementIds[spriteID]; if ((spriteElementId & ASSET_MASK_TEXTURE) == ASSET_MASK_TEXTURE) { sp9C.unk8 = -gMinimapOpacity; @@ -3762,21 +3778,21 @@ void hud_element_render(Gfx **arg0, MatrixS **arg1, Vertex **arg2, HudElement *a if (gAssetHudElements->entry[spriteID] == NULL) { if ((spriteElementId & ASSET_MASK_TEXTURE) == ASSET_MASK_TEXTURE) { - gAssetHudElements->entry[arg3->spriteID] = load_texture(spriteElementId & 0x3FFF); + gAssetHudElements->entry[hud->spriteID] = load_texture(spriteElementId & 0x3FFF); } else if (spriteElementId & ASSET_MASK_SPRITE) { - gAssetHudElements->entry[arg3->spriteID] = func_8007C12C(spriteElementId & 0x3FFF, 1); + gAssetHudElements->entry[hud->spriteID] = func_8007C12C(spriteElementId & 0x3FFF, 1); } else if (spriteElementId & ASSET_MASK_OBJECT) { sp9C.common.objectID = spriteElementId & 0xFF; - sp9C.common.size = ((gAssetHudElementIds[arg3->spriteID] & 0x100) >> 1) | 8; + sp9C.common.size = ((gAssetHudElementIds[hud->spriteID] & 0x100) >> 1) | 8; sp9C.common.x = 0; sp9C.common.y = 0; sp9C.common.z = 0; - gAssetHudElements->entry[arg3->spriteID] = spawn_object((LevelObjectEntryCommon *) &sp9C, 0); + gAssetHudElements->entry[hud->spriteID] = spawn_object((LevelObjectEntryCommon *) &sp9C, 0); } else { - gAssetHudElements->entry[arg3->spriteID] = object_model_init(spriteElementId, 0); + gAssetHudElements->entry[hud->spriteID] = object_model_init(spriteElementId, 0); } - spriteID = arg3->spriteID; + spriteID = hud->spriteID; if (gAssetHudElements->entry[spriteID] == NULL) { return; } @@ -3784,22 +3800,22 @@ void hud_element_render(Gfx **arg0, MatrixS **arg1, Vertex **arg2, HudElement *a gAssetHudElementStaleCounter[spriteID] = 0; - gHudDL = *arg0; - gHudMtx = *arg1; - gHudVtx = *arg2; - spriteID = arg3->spriteID; + gHudDL = *dList; + gHudMtx = *mtx; + gHudVtx = *vtxList; + spriteID = hud->spriteID; if (spriteID != 0x28) { if ((spriteID != 0xE) && (spriteID != 0x1B) && ((spriteID < 0x2F) || (spriteID >= 0x36)) && (spriteID != 0x2E) && (gMinimapXlu & 1)) { - arg3->pos.f[1] += sp9C.unk8; + hud->pos.y += sp9C.unk8; } - arg3->pos.f[0] += gHudOffsetX + gHudBounceX; + hud->pos.x += gHudOffsetX + gHudBounceX; } - spriteID = arg3->spriteID; + spriteID = hud->spriteID; if ((gAssetHudElementIds[spriteID] & ASSET_MASK_TEXTURE) == ASSET_MASK_TEXTURE) { if ((spriteID >= 0x2F) && (spriteID < 0x36)) { if (osTvType == OS_TV_TYPE_PAL) { - arg3->pos.f[1] -= 8.0f; + hud->pos.y -= 8.0f; } if (gMinimapXlu & 2) { @@ -3807,16 +3823,15 @@ void hud_element_render(Gfx **arg0, MatrixS **arg1, Vertex **arg2, HudElement *a } else { var_v1 = 0xFF; } - spriteID = arg3->spriteID; + spriteID = hud->spriteID; textureHeader = gAssetHudElements->entry[spriteID]; - textureHeader = - (TextureHeader *) (((u8 *) textureHeader) + arg3->spriteOffset * textureHeader->textureSize); + textureHeader = (TextureHeader *) (((u8 *) textureHeader) + hud->spriteOffset * textureHeader->textureSize); sp88.drawTexture.texture = textureHeader; - sp88.drawTexture.xOffset = arg3->pos.f[0]; - sp88.drawTexture.yOffset = arg3->pos.f[1]; + sp88.drawTexture.xOffset = hud->pos.x; + sp88.drawTexture.yOffset = hud->pos.y; sp88.unk8 = 0; if (osTvType == OS_TV_TYPE_PAL) { - if (arg3->spriteID == 0x35) { + if (hud->spriteID == 0x35) { if (var_v1 == 0xFF) { var_v0 = -2; } else { @@ -3824,8 +3839,8 @@ void hud_element_render(Gfx **arg0, MatrixS **arg1, Vertex **arg2, HudElement *a } sp88.drawTexture.xOffset = 0; sp88.drawTexture.yOffset = 0; - texrect_draw_scaled(&gHudDL, &sp88.drawTexture, arg3->pos.f[0], arg3->pos.f[1], 1.0f, 1.1f, var_v0, - 1); + texrect_draw_scaled(&gHudDL, &sp88.drawTexture, hud->pos.x, hud->pos.y, 1.0f, 1.1f, var_v0, + TEXRECT_POINT); } else { texrect_draw(&gHudDL, &sp88.drawTexture, 0, 0, 0xFF, 0xFF, 0xFF, var_v1); } @@ -3833,31 +3848,30 @@ void hud_element_render(Gfx **arg0, MatrixS **arg1, Vertex **arg2, HudElement *a texrect_draw(&gHudDL, &sp88.drawTexture, 0, 0, 0xFF, 0xFF, 0xFF, var_v1); } if (osTvType == OS_TV_TYPE_PAL) { - arg3->pos.f[1] += 8.0f; + hud->pos.y += 8.0f; } } else if ((D_80126CD5 != 0) && (osTvType == OS_TV_TYPE_PAL)) { textureHeader = gAssetHudElements->entry[spriteID]; - textureHeader = - (TextureHeader *) (((u8 *) textureHeader) + arg3->spriteOffset * textureHeader->textureSize); + textureHeader = (TextureHeader *) (((u8 *) textureHeader) + hud->spriteOffset * textureHeader->textureSize); sp70.drawTexture.texture = textureHeader; sp70.drawTexture.xOffset = 0; sp70.drawTexture.yOffset = 0; sp70.unk8 = 0; - texrect_draw_scaled(&gHudDL, &sp70.drawTexture, arg3->pos.f[0], arg3->pos.f[1], arg3->scale, - arg3->scale * 1.1, gHudColour, 1); - } else if (arg3->scale == 1.0) { + texrect_draw_scaled(&gHudDL, &sp70.drawTexture, hud->pos.x, hud->pos.y, hud->scale, hud->scale * 1.1, + gHudColour, TEXRECT_POINT); + } else if (hud->scale == 1.0) { textureHeader2 = gAssetHudElements->entry[spriteID]; textureHeader2 = - (TextureHeader *) (((u8 *) textureHeader2) + arg3->spriteOffset * textureHeader2->textureSize); + (TextureHeader *) (((u8 *) textureHeader2) + hud->spriteOffset * textureHeader2->textureSize); if (gHudColour == -2) { gHudSprites[D_80127180].texture = textureHeader2; - gHudSprites[D_80127180].xOffset = arg3->pos.f[0]; - gHudSprites[D_80127180].yOffset = arg3->pos.f[1]; + gHudSprites[D_80127180].xOffset = hud->pos.x; + gHudSprites[D_80127180].yOffset = hud->pos.y; D_80127180++; } else { sp58.drawTexture.texture = textureHeader2; - sp58.drawTexture.xOffset = arg3->pos.f[0]; - sp58.drawTexture.yOffset = arg3->pos.f[1]; + sp58.drawTexture.xOffset = hud->pos.x; + sp58.drawTexture.yOffset = hud->pos.y; sp58.unk8 = 0; texrect_draw(&gHudDL, &sp58.drawTexture, 0, 0, (gHudColour >> 0x18) & 0xFF, (gHudColour >> 0x10) & 0xFF, (gHudColour >> 8) & 0xFF, gHudColour & 0xFF); @@ -3865,52 +3879,51 @@ void hud_element_render(Gfx **arg0, MatrixS **arg1, Vertex **arg2, HudElement *a } } else { textureHeader = gAssetHudElements->entry[spriteID]; - textureHeader = - (TextureHeader *) (((u8 *) textureHeader) + arg3->spriteOffset * textureHeader->textureSize); + textureHeader = (TextureHeader *) (((u8 *) textureHeader) + hud->spriteOffset * textureHeader->textureSize); sp48.drawTexture.texture = textureHeader; sp48.drawTexture.xOffset = 0; sp48.drawTexture.yOffset = 0; sp48.unk8 = 0; - texrect_draw_scaled(&gHudDL, &sp48.drawTexture, arg3->pos.f[0], arg3->pos.f[1], arg3->scale, arg3->scale, - gHudColour, 1); + texrect_draw_scaled(&gHudDL, &sp48.drawTexture, hud->pos.x, hud->pos.y, hud->scale, hud->scale, gHudColour, + 1); rendermode_reset(&gHudDL); } } else if (gAssetHudElementIds[spriteID] & ASSET_MASK_SPRITE) { objSegment = get_active_camera_segment(); - sprite = gAssetHudElements->entry[arg3->spriteID]; - arg3->rotation.s[2] -= objSegment->trans.rotation.s[2]; - render_ortho_triangle_image(&gHudDL, &gHudMtx, &gHudVtx, (ObjectSegment *) arg3, sprite, 0); - arg3->rotation.s[2] += objSegment->trans.rotation.s[2]; + sprite = gAssetHudElements->entry[hud->spriteID]; + hud->rotation.z -= objSegment->trans.rotation.z; + render_ortho_triangle_image(&gHudDL, &gHudMtx, &gHudVtx, (ObjectSegment *) hud, sprite, 0); + hud->rotation.z += objSegment->trans.rotation.z; } else if (gAssetHudElementIds[spriteID] & ASSET_MASK_OBJECT) { tempObject = gAssetHudElements->entry[spriteID]; - tempObject->segment.trans.rotation.x = arg3->rotation.s[0]; - tempObject->segment.trans.rotation.y = arg3->rotation.s[1]; - tempObject->segment.trans.rotation.z = arg3->rotation.s[2]; - tempObject->segment.trans.x_position = arg3->pos.f[0]; - tempObject->segment.trans.y_position = arg3->pos.f[1]; - tempObject->segment.trans.z_position = arg3->pos.f[2]; - tempObject->segment.trans.scale = arg3->scale; + tempObject->segment.trans.rotation.x = hud->rotation.x; + tempObject->segment.trans.rotation.y = hud->rotation.y; + tempObject->segment.trans.rotation.z = hud->rotation.z; + tempObject->segment.trans.x_position = hud->pos.x; + tempObject->segment.trans.y_position = hud->pos.y; + tempObject->segment.trans.z_position = hud->pos.z; + tempObject->segment.trans.scale = hud->scale; tempObject->segment.object.modelIndex = 0; tempObject->segment.object.opacity = 0xFF; render_object(&gHudDL, &gHudMtx, &gHudVtx, tempObject); } else { - camera_push_model_mtx(&gHudDL, &gHudMtx, (ObjectTransform *) arg3, 1.0f, 0.0f); + camera_push_model_mtx(&gHudDL, &gHudMtx, (ObjectTransform *) hud, 1.0f, 0.0f); if (0) {} - textureHeader3 = gAssetHudElements->entry[arg3->spriteID]; + textureHeader3 = gAssetHudElements->entry[hud->spriteID]; hud_draw_model((ObjectModel *) *textureHeader3); apply_matrix_from_stack(&gHudDL); } - spriteID = arg3->spriteID; + spriteID = hud->spriteID; if (spriteID != 0x28) { if ((spriteID != 0xE) && (spriteID != 0x1B) && ((spriteID < 0x2F) || (spriteID >= 0x36)) && (spriteID != 0x2E) && (gMinimapXlu & 1)) { - arg3->pos.f[1] -= sp9C.unk8; + hud->pos.y -= sp9C.unk8; } - arg3->pos.f[0] -= gHudOffsetX + gHudBounceX; + hud->pos.x -= gHudOffsetX + gHudBounceX; } - *arg0 = gHudDL; - *arg1 = gHudMtx; - *arg2 = gHudVtx; + *dList = gHudDL; + *mtx = gHudMtx; + *vtxList = gHudVtx; } /** diff --git a/src/game_ui.h b/src/game_ui.h index 651a66c5..e90a3db9 100644 --- a/src/game_ui.h +++ b/src/game_ui.h @@ -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); diff --git a/src/lights.c b/src/lights.c index 89e6794c..beea83de 100644 --- a/src/lights.c +++ b/src/lights.c @@ -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) { diff --git a/src/lights.h b/src/lights.h index c348ca65..b1c69b2e 100644 --- a/src/lights.h +++ b/src/lights.h @@ -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); diff --git a/src/objects.c b/src/objects.c index 4590436a..51347490 100644 --- a/src/objects.c +++ b/src/objects.c @@ -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) { diff --git a/src/racer.c b/src/racer.c index 22b2ddd8..4e28f4cb 100644 --- a/src/racer.c +++ b/src/racer.c @@ -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; diff --git a/src/rcp_dkr.c b/src/rcp_dkr.c index c3387b51..1024f5ef 100644 --- a/src/rcp_dkr.c +++ b/src/rcp_dkr.c @@ -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); } } diff --git a/src/rcp_dkr.h b/src/rcp_dkr.h index d28095fc..dc515bf1 100644 --- a/src/rcp_dkr.h +++ b/src/rcp_dkr.h @@ -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; diff --git a/src/tracks.h b/src/tracks.h index a5270ef4..eca9a621 100644 --- a/src/tracks.h +++ b/src/tracks.h @@ -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); diff --git a/src/waves.c b/src/waves.c index 6d05256a..ad45b429 100644 --- a/src/waves.c +++ b/src/waves.c @@ -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; diff --git a/ver/symbols/symbol_addrs.jpn.v79.txt b/ver/symbols/symbol_addrs.jpn.v79.txt index c5e2a1f0..19630e77 100644 --- a/ver/symbols/symbol_addrs.jpn.v79.txt +++ b/ver/symbols/symbol_addrs.jpn.v79.txt @@ -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; diff --git a/ver/symbols/symbol_addrs.pal.v77.txt b/ver/symbols/symbol_addrs.pal.v77.txt index dda79c5c..787c885a 100644 --- a/ver/symbols/symbol_addrs.pal.v77.txt +++ b/ver/symbols/symbol_addrs.pal.v77.txt @@ -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; diff --git a/ver/symbols/symbol_addrs.pal.v80.txt b/ver/symbols/symbol_addrs.pal.v80.txt index 3a472a35..1f07a460 100644 --- a/ver/symbols/symbol_addrs.pal.v80.txt +++ b/ver/symbols/symbol_addrs.pal.v80.txt @@ -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; diff --git a/ver/symbols/symbol_addrs.us.v77.txt b/ver/symbols/symbol_addrs.us.v77.txt index 4189f0e5..0012bd06 100644 --- a/ver/symbols/symbol_addrs.us.v77.txt +++ b/ver/symbols/symbol_addrs.us.v77.txt @@ -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; diff --git a/ver/symbols/symbol_addrs.us.v80.txt b/ver/symbols/symbol_addrs.us.v80.txt index 64408c8c..e26e7460 100644 --- a/ver/symbols/symbol_addrs.us.v80.txt +++ b/ver/symbols/symbol_addrs.us.v80.txt @@ -2182,9 +2182,9 @@ sControllerPaksPresent = 0x800DE9F8; gRumbleKillTimer = 0x800DE9FC; gRumbleEnable = 0x800DEA00; // has a diff from v1 - NEW DATA SYMBOL gGfxTaskMesgNums = 0x800DEA10; -sBGPrimColourrR = 0x800DEA30; -sBGPrimColourrG = 0x800DEA34; -sBGPrimColourrB = 0x800DEA38; +sBGPrimColourR = 0x800DEA30; +sBGPrimColourG = 0x800DEA34; +sBGPrimColourB = 0x800DEA38; sBackgroundFillColour = 0x800DEA3C; gTexBGShiftX = 0x800DEA40; gTexBGTex1 = 0x800DEA44;