From d494d5dcf7a8ceec5aaeb0c7b0b1b701b37cb983 Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Wed, 26 Mar 2025 20:43:33 -0400 Subject: [PATCH] Audio struct fixes, and other random documenting things (#491) * Migrade rodata for thread3_main, fix game.c not having a defined rodata in the splat yaml files, and run the formatter. * func_80066CDC NON_MATCHING * Minor stuff * Small docs * Fix some audio stuff * Undo some var moving. --- include/PR/libaudio.h | 14 ++- libultra/src/audio/mips1/csplayer.c | 4 +- libultra/src/audio/mips1/cspsetfadein.c | 2 +- libultra/src/audio/mips1/seqchannel.c | 4 +- libultra/src/audio/mips1/seqplayer.c | 2 +- libultra/src/audio/mips1/unknown_064690.c | 2 +- libultra/src/audio/seqchannel.h | 4 +- src/audio.c | 70 +++++++-------- src/audio.h | 14 +-- src/camera.c | 105 ++++++++++++---------- src/game_ui.c | 9 +- src/main.c | 2 +- src/memory.c | 2 +- src/menu.c | 30 +++---- src/object_functions.c | 1 - src/textures_sprites.c | 2 +- src/thread3_main.c | 20 ++--- src/video.c | 6 +- ver/splat/dkr.jpn.v79.yaml | 3 +- ver/splat/dkr.pal.v77.yaml | 3 +- ver/splat/dkr.pal.v80.yaml | 3 +- ver/splat/dkr.us.v77.yaml | 3 +- ver/splat/dkr.us.v80.yaml | 3 +- ver/symbols/symbol_addrs.jpn.v79.txt | 3 - ver/symbols/symbol_addrs.pal.v77.txt | 3 - ver/symbols/symbol_addrs.pal.v80.txt | 3 - ver/symbols/symbol_addrs.us.v77.txt | 3 - ver/symbols/symbol_addrs.us.v80.txt | 3 - 28 files changed, 158 insertions(+), 165 deletions(-) diff --git a/include/PR/libaudio.h b/include/PR/libaudio.h index df2e92cf..d6a0465b 100644 --- a/include/PR/libaudio.h +++ b/include/PR/libaudio.h @@ -734,7 +734,7 @@ typedef struct { u8 maxChannels; /* max MIDI channels to support (16)*/ u8 debugFlags; /* control which error get reported */ ALHeap *heap; /* ptr to initialized heap */ - u8 unknown_0x10; + u8 voiceLimit; void *initOsc; void *updateOsc; void *stopOsc; @@ -798,10 +798,8 @@ typedef struct { ALVoiceState *vAllocHead; /* list head for allocated voices */ ALVoiceState *vAllocTail; /* list tail for allocated voices */ ALVoiceState *vFreeList; /* list of free voice state structs */ - s8 unk70; - s8 unk71; - s8 unk72; - s8 unk73; + u8 voiceLimit; + u8 mappedVoices; ALOscInit initOsc; ALOscUpdate updateOsc; ALOscStop stopOsc; @@ -832,10 +830,8 @@ typedef struct { /* 0x64 */ ALVoiceState *vAllocHead; /* list head for allocated voices */ /* 0x68 */ ALVoiceState *vAllocTail; /* list tail for allocated voices */ /* 0x6C */ ALVoiceState *vFreeList; /* list of free voice state structs */ - /* 0x70 */ s8 unk70; - /* 0x71 */ s8 unk71; - /* 0x72 */ s8 unk72; - /* 0x73 */ s8 unk73; + /* 0x70 */ u8 voiceLimit; + /* 0x71 */ u8 mappedVoices; /* 0x74 */ ALOscInit initOsc; /* 0x78 */ ALOscUpdate updateOsc; /* 0x7C */ ALOscStop stopOsc; diff --git a/libultra/src/audio/mips1/csplayer.c b/libultra/src/audio/mips1/csplayer.c index 710624a0..3466b104 100644 --- a/libultra/src/audio/mips1/csplayer.c +++ b/libultra/src/audio/mips1/csplayer.c @@ -87,8 +87,8 @@ void alCSPNew(ALCSPlayer *seqp, ALSeqpConfig *c) seqp->initOsc = c->initOsc; seqp->updateOsc = c->updateOsc; seqp->stopOsc = c->stopOsc; - seqp->unk71 = 0; - seqp->unk70 = c->unknown_0x10; + seqp->mappedVoices = 0; + seqp->voiceLimit = c->voiceLimit; seqp->nextEvent.type = AL_SEQP_API_EVT; /* this will start the voice handler "spinning" */ diff --git a/libultra/src/audio/mips1/cspsetfadein.c b/libultra/src/audio/mips1/cspsetfadein.c index f6ae4e94..f2aa3808 100644 --- a/libultra/src/audio/mips1/cspsetfadein.c +++ b/libultra/src/audio/mips1/cspsetfadein.c @@ -1,6 +1,6 @@ #include -void alCSPSetFadeIn(ALSeqPlayer *seqp, u8 chan, ALPan pan) { +void alCSPSetFadeIn(ALCSPlayer *seqp, u8 chan, ALPan pan) { ALEvent evt; evt.type = AL_SEQP_MIDI_EVT; diff --git a/libultra/src/audio/mips1/seqchannel.c b/libultra/src/audio/mips1/seqchannel.c index 4c13e8ae..b2823a23 100644 --- a/libultra/src/audio/mips1/seqchannel.c +++ b/libultra/src/audio/mips1/seqchannel.c @@ -1,6 +1,6 @@ #include -void alSeqChOff(ALSeqPlayer *seqp, u8 chan) { +void alSeqChOff(ALCSPlayer *seqp, u8 chan) { ALEvent evt; evt.type = AL_SEQP_MIDI_EVT; @@ -11,7 +11,7 @@ void alSeqChOff(ALSeqPlayer *seqp, u8 chan) { alEvtqPostEvent(&seqp->evtq, &evt, 0); } -void alSeqChOn(ALSeqPlayer *seqp, u8 chan) { +void alSeqChOn(ALCSPlayer *seqp, u8 chan) { ALEvent evt; evt.type = AL_SEQP_MIDI_EVT; diff --git a/libultra/src/audio/mips1/seqplayer.c b/libultra/src/audio/mips1/seqplayer.c index e99be245..6a019783 100644 --- a/libultra/src/audio/mips1/seqplayer.c +++ b/libultra/src/audio/mips1/seqplayer.c @@ -458,6 +458,6 @@ void __seqpStopOsc(ALSeqPlayer *seqp, ALVoiceState *vs) /** * The voice limit bytes seem to be unique to this game. */ -void set_voice_limit(ALSeqPlayer *seqp, s8 voiceLimit) { +void set_voice_limit(ALCSPlayer *seqp, s8 voiceLimit) { seqp->voiceLimit = voiceLimit; } diff --git a/libultra/src/audio/mips1/unknown_064690.c b/libultra/src/audio/mips1/unknown_064690.c index f3df3d2e..49271292 100644 --- a/libultra/src/audio/mips1/unknown_064690.c +++ b/libultra/src/audio/mips1/unknown_064690.c @@ -1,6 +1,6 @@ #include -void func_80063A90(ALSeqPlayer *seqp, u8 chan) { +void func_80063A90(ALCSPlayer *seqp, u8 chan) { ALEvent evt; evt.type = AL_SEQP_MIDI_EVT; diff --git a/libultra/src/audio/seqchannel.h b/libultra/src/audio/seqchannel.h index e8a5aba8..8a4de9f2 100644 --- a/libultra/src/audio/seqchannel.h +++ b/libultra/src/audio/seqchannel.h @@ -5,7 +5,7 @@ #include "types.h" #include "audio_internal.h" -void alSeqChOff(ALSeqPlayer *seqp, u8 chan); -void alSeqChOn(ALSeqPlayer *seqp, u8 chan); +void alSeqChOff(ALCSPlayer *seqp, u8 chan); +void alSeqChOn(ALCSPlayer *seqp, u8 chan); #endif diff --git a/src/audio.c b/src/audio.c index 1bfe7ece..d2aafc1e 100644 --- a/src/audio.c +++ b/src/audio.c @@ -13,8 +13,8 @@ /************ .data ************/ -ALSeqPlayer *gMusicPlayer = NULL; -ALSeqPlayer *gJinglePlayer = NULL; +ALCSPlayer *gMusicPlayer = NULL; +ALCSPlayer *gJinglePlayer = NULL; u8 gMusicBaseVolume = 127; u8 sfxRelativeVolume = 127; u8 gCanPlayMusic = TRUE; @@ -190,8 +190,8 @@ void sound_volume_change(s32 behaviour) { set_sound_channel_volume(1, 32767); set_sound_channel_volume(2, 0); set_sound_channel_volume(4, 0); - alCSPSetVol((ALCSPlayer *) gMusicPlayer, (s16) (gMusicBaseVolume * gMusicSliderVolume >> 2)); - alCSPSetVol((ALCSPlayer *) gJinglePlayer, 0); + alCSPSetVol(gMusicPlayer, (s16) (gMusicBaseVolume * gMusicSliderVolume >> 2)); + alCSPSetVol(gJinglePlayer, 0); break; case VOLUME_LOWER_AMBIENT: // Mute the ambient channel, making course elements stop making noise. set_sound_channel_volume(0, 0); @@ -210,8 +210,8 @@ void sound_volume_change(s32 behaviour) { set_sound_channel_volume(1, 32767); set_sound_channel_volume(2, 32767); set_sound_channel_volume(4, 32767); - alCSPSetVol((ALCSPlayer *) gMusicPlayer, (s16) (gMusicBaseVolume * gMusicSliderVolume)); - alCSPSetVol((ALCSPlayer *) gJinglePlayer, (s16) (get_sfx_volume_slider() * sfxRelativeVolume)); + alCSPSetVol(gMusicPlayer, (s16) (gMusicBaseVolume * gMusicSliderVolume)); + alCSPSetVol(gJinglePlayer, (s16) (get_sfx_volume_slider() * sfxRelativeVolume)); break; } gAudioVolumeSetting = behaviour; @@ -242,7 +242,7 @@ void music_play(u8 seqID) { if (gCanPlayMusic) { music_sequence_start(gCurrentSequenceID, gMusicPlayer); } - gMusicTempo = alCSPGetTempo((ALCSPlayer *) gMusicPlayer); + gMusicTempo = alCSPGetTempo(gMusicPlayer); audioPrevCount = osGetCount(); gMusicPlaying = TRUE; gDynamicMusicChannelMask = MUSIC_CHAN_MASK_NONE; @@ -355,7 +355,7 @@ void sound_update_queue(u8 updateRate) { music_sequence_init(gMusicPlayer, gMusicSequenceData, &gMusicNextSeqID, &gMusicSequence); music_sequence_init(gJinglePlayer, gJingleSequenceData, &gJingleNextSeqID, &gJingleSequence); if (sMusicTempo == -1 && gMusicPlayer->target) { - sMusicTempo = 60000000 / alCSPGetTempo((ALCSPlayer *) gMusicPlayer); + sMusicTempo = 60000000 / alCSPGetTempo(gMusicPlayer); } } @@ -438,7 +438,7 @@ void music_channel_on(u8 channel) { */ void music_channel_pan_set(u8 channel, ALPan pan) { if (channel < AUDIO_CHANNELS) { - alCSPSetChlPan((ALCSPlayer *) gMusicPlayer, channel, pan); + alCSPSetChlPan(gMusicPlayer, channel, pan); } } @@ -448,7 +448,7 @@ void music_channel_pan_set(u8 channel, ALPan pan) { */ void music_channel_volume_set(u8 channel, u8 volume) { if (channel < AUDIO_CHANNELS) { - alCSPSetChlVol((ALCSPlayer *) gMusicPlayer, channel, volume); + alCSPSetChlVol(gMusicPlayer, channel, volume); } } @@ -460,7 +460,7 @@ UNUSED u8 music_channel_volume(u8 channel) { if (channel >= AUDIO_CHANNELS) { return 0; } else { - return alCSPGetChlVol((ALCSPlayer *) gMusicPlayer, channel); + return alCSPGetChlVol(gMusicPlayer, channel); } } @@ -480,7 +480,7 @@ u8 music_channel_fade(u8 channel) { if (channel >= AUDIO_CHANNELS) { return 0; } - return alCSPGetFadeIn((ALCSPlayer *) gMusicPlayer, channel); + return alCSPGetFadeIn(gMusicPlayer, channel); } /** @@ -505,17 +505,17 @@ UNUSED u8 func_80001358(u8 arg0, u8 arg1, s32 arg2) { // u8 fadeIn_chan = arg0; if (!(arg0 == 100)) { - val_1f = arg2 + alCSPGetChlVol((ALCSPlayer *) gMusicPlayer, arg0); + val_1f = arg2 + alCSPGetChlVol(gMusicPlayer, arg0); if (val_1f > 127) { val_1f = 127; } - alCSPSetChlVol((ALCSPlayer *) gMusicPlayer, arg0, val_1f); + alCSPSetChlVol(gMusicPlayer, arg0, val_1f); } if (arg1 != 100) { - updatedVol = alCSPGetChlVol((ALCSPlayer *) gMusicPlayer, arg1); + updatedVol = alCSPGetChlVol(gMusicPlayer, arg1); val_1e = (updatedVol > arg2) ? updatedVol - arg2 : 0; - alCSPSetChlVol((ALCSPlayer *) gMusicPlayer, arg1, val_1e); + alCSPSetChlVol(gMusicPlayer, arg1, val_1e); return val_1e; } else { return 127 - val_1f; @@ -526,7 +526,7 @@ UNUSED void func_80001440(u8 *arg0) { s32 s0 = 0; if (gMusicPlayer->maxChannels > 0) { do { - arg0[s0] = alSeqpGetChlFXMix(gMusicPlayer, s0); + arg0[s0] = alSeqpGetChlFXMix((ALSeqPlayer *) gMusicPlayer, s0); s0++; } while (s0 < gMusicPlayer->maxChannels); } @@ -548,7 +548,7 @@ void music_tempo_set_relative(f32 tempo) { void music_tempo_set(s32 tempo) { if (tempo != 0) { f32 inv_tempo = (1.0f / tempo); - alCSPSetTempo((ALCSPlayer *) gMusicPlayer, (s32) (inv_tempo * 60000000.0f)); + alCSPSetTempo(gMusicPlayer, (s32) (inv_tempo * 60000000.0f)); sMusicTempo = tempo; } } @@ -565,7 +565,7 @@ s16 music_tempo(void) { * Returns true if background music is currently playing. */ u8 music_is_playing(void) { - return (alCSPGetState((ALCSPlayer *) gMusicPlayer) == AL_PLAYING); + return (alCSPGetState(gMusicPlayer) == AL_PLAYING); } /** @@ -614,7 +614,7 @@ void music_jingle_play_safe(u8 jingleID) { */ void sound_jingle_tempo_set(s32 tempo) { f32 inv_tempo = (1.0f / tempo); - alCSPSetTempo((ALCSPlayer *) gJinglePlayer, (s32) (inv_tempo * 60000000.0f)); + alCSPSetTempo(gJinglePlayer, (s32) (inv_tempo * 60000000.0f)); } /** @@ -697,7 +697,7 @@ void music_volume_set(u8 volume) { gMusicBaseVolume = volume; normalized_vol = gMusicSliderVolume * gMusicBaseVolume * sMusicFadeVolume; - alCSPSetVol((ALCSPlayer *) gMusicPlayer, (s16) ((s32) (gGlobalMusicVolume * normalized_vol) >> 8)); + alCSPSetVol(gMusicPlayer, (s16) ((s32) (gGlobalMusicVolume * normalized_vol) >> 8)); } /** @@ -710,7 +710,7 @@ void music_volume_config_set(u32 slider_val) { slider_val = (slider_val <= 256) ? slider_val : 256; gMusicSliderVolume = slider_val; normalized_vol = gMusicSliderVolume * gMusicBaseVolume * sMusicFadeVolume; - alCSPSetVol((ALCSPlayer *) gMusicPlayer, (s16) ((s32) (gGlobalMusicVolume * normalized_vol) >> 8)); + alCSPSetVol(gMusicPlayer, (s16) ((s32) (gGlobalMusicVolume * normalized_vol) >> 8)); } /** @@ -733,7 +733,7 @@ s32 music_volume_config(void) { */ void music_jingle_volume_set(u8 arg0) { sfxRelativeVolume = arg0; - alCSPSetVol((ALCSPlayer *) gJinglePlayer, (s16) (get_sfx_volume_slider() * sfxRelativeVolume)); + alCSPSetVol(gJinglePlayer, (s16) (get_sfx_volume_slider() * sfxRelativeVolume)); } /** @@ -742,7 +742,7 @@ void music_jingle_volume_set(u8 arg0) { void music_jingle_pan_set(ALPan pan) { u32 iChan; for (iChan = 0; iChan < AUDIO_CHANNELS; iChan++) { - alCSPSetChlPan((ALCSPlayer *) gJinglePlayer, iChan, pan); + alCSPSetChlPan(gJinglePlayer, iChan, pan); } } @@ -944,13 +944,13 @@ u8 gSoundBank_GetSoundDecayTime(u16 soundID) { /** * Allocate space, then initialise a sequence player for audio playback. */ -ALSeqPlayer *sound_seqplayer_init(s32 maxVoices, s32 maxEvents) { +ALCSPlayer *sound_seqplayer_init(s32 maxVoices, s32 maxEvents) { ALCSPlayer *cseqp; ALSeqpConfig config; config.maxVoices = maxVoices; config.maxEvents = maxEvents; - config.unknown_0x10 = maxVoices; // this member doesn't exist in other versions of ALSeqpConfig + config.voiceLimit = maxVoices; // this member doesn't exist in other versions of ALSeqpConfig config.maxChannels = AUDIO_CHANNELS; config.heap = &gALHeap; config.initOsc = NULL; @@ -962,13 +962,13 @@ ALSeqPlayer *sound_seqplayer_init(s32 maxVoices, s32 maxEvents) { alCSPSetBank(cseqp, gSequenceBank->bankArray[0]); cseqp->unk36 = 127; - return (ALSeqPlayer *) cseqp; + return cseqp; } /** * Stop the current sequence then set the parameters for the next sequence. */ -void music_sequence_start(u8 seqID, ALSeqPlayer *seqPlayer) { +void music_sequence_start(u8 seqID, ALCSPlayer *seqPlayer) { music_sequence_stop(seqPlayer); if (seqID < gSequenceTable->seqCount) { if (seqPlayer == gMusicPlayer) { @@ -984,16 +984,16 @@ void music_sequence_start(u8 seqID, ALSeqPlayer *seqPlayer) { /** * If the sequence player is currently inactive, start a new sequence with the current properties. */ -void music_sequence_init(ALSeqPlayer *seqp, void *sequence, u8 *seqID, ALCSeq *seq) { +void music_sequence_init(ALCSPlayer *seqp, void *sequence, u8 *seqID, ALCSeq *seq) { s32 i; - if ((alCSPGetState((ALCSPlayer *) seqp) == AL_STOPPED) && (*seqID != 0)) { + if ((alCSPGetState(seqp) == AL_STOPPED) && (*seqID != 0)) { load_asset_to_address(ASSET_AUDIO, (u32) sequence, gSequenceTable->seqArray[*seqID].offset - get_rom_offset_of_asset(ASSET_AUDIO, 0), (s32) gSeqLengthTable[*seqID]); alCSeqNew(seq, sequence); - alCSPSetSeq((ALCSPlayer *) seqp, seq); - alCSPPlay((ALCSPlayer *) seqp); + alCSPSetSeq(seqp, seq); + alCSPPlay(seqp); if (seqp == gMusicPlayer) { music_volume_set(gSeqSoundTable[*seqID].volume); if (gSeqSoundTable[*seqID].tempo != 0) { @@ -1026,14 +1026,14 @@ void music_sequence_init(ALSeqPlayer *seqp, void *sequence, u8 *seqID, ALCSeq *s /** * Stops the current playing sequence for the given sequence player. */ -void music_sequence_stop(ALSeqPlayer *seqPlayer) { +void music_sequence_stop(ALCSPlayer *seqPlayer) { if (gMusicPlayer == seqPlayer && gMusicPlaying) { - alCSPStop((ALCSPlayer *) seqPlayer); + alCSPStop(seqPlayer); gMusicPlaying = FALSE; gCurrentSequenceID = SEQUENCE_NONE; gMusicNextSeqID = SEQUENCE_NONE; } else if (gJinglePlayer == seqPlayer && gJinglePlaying) { - alCSPStop((ALCSPlayer *) seqPlayer); + alCSPStop(seqPlayer); gJinglePlaying = FALSE; gJingleNextSeqID = SEQUENCE_NONE; } diff --git a/src/audio.h b/src/audio.h index 202c524c..679ca5c4 100644 --- a/src/audio.h +++ b/src/audio.h @@ -45,12 +45,12 @@ typedef struct DelayedSound { void alCSPNew(ALCSPlayer *seqp, ALSeqpConfig *config); //lib/src/al/csplayer.c void alCSPSetBank(ALCSPlayer *seqp, ALBank *b); //lib/src/unknown_0C8660.c -void set_voice_limit(ALSeqPlayer *seqp, u8 voiceLimit); //lib/src/mips1/alseqplayer.c +void set_voice_limit(ALCSPlayer *seqp, u8 voiceLimit); //lib/src/mips1/alseqplayer.c void *alHeapDBAlloc(u8 *file, s32 line, ALHeap *hp, s32 num, s32 size); //lib/src/al/alHeapDBAlloc.c void alCSPSetChlPan(ALCSPlayer *seqp, u8 channel, ALPan pan); //lib/src/unknown_0C84E0.c void alCSPSetChlVol(ALCSPlayer *, u8 channel, u8 volume); //lib/src/unknown_0C84E0.c u8 alCSPGetChlVol(ALCSPlayer *seqp, u8 channel); //lib/src/al -void alCSPSetFadeIn(ALSeqPlayer *seqp, u8 channel, ALPan pan); //lib/src/unknown_0647A0.c +void alCSPSetFadeIn(ALCSPlayer *seqp, u8 channel, ALPan pan); //lib/src/unknown_0647A0.c u8 alCSPGetFadeIn(ALCSPlayer *seqp, u8 channel); //lib/src/mips1/al/unknown_064800.c u8 alSeqpGetChlFXMix(ALSeqPlayer *seqp, u8 channel); //lib/src/al/alSeqpGetChlFXMix.c void alFxReverbSet(u8 arg0); //lib/src/mips1/al/reverb.c @@ -112,14 +112,14 @@ u16 sound_count(void); u8 music_sequence_count(void); void sound_table_properties(SoundData **table, s32 *size, s32 *count); u8 gSoundBank_GetSoundDecayTime(u16 soundID); -ALSeqPlayer *sound_seqplayer_init(s32 maxVoices, s32 maxEvents); -void music_sequence_start(u8 seqID, ALSeqPlayer *seqPlayer); -void music_sequence_stop(ALSeqPlayer *seqPlayer); +ALCSPlayer *sound_seqplayer_init(s32 maxVoices, s32 maxEvents); +void music_sequence_start(u8 seqID, ALCSPlayer *seqPlayer); +void music_sequence_stop(ALCSPlayer *seqPlayer); void sound_reverb_set(u8 setting); void alSeqFileNew(ALSeqFile *file, u8 *base); -void func_80063A90(ALSeqPlayer *seqp, u8 channel); +void func_80063A90(ALCSPlayer *seqp, u8 channel); void sound_volume_set_relative(u16 soundID, void *soundState, u8 volume); -void music_sequence_init(ALSeqPlayer *seqp, void *sequence, u8 *seqID, ALCSeq *seq); +void music_sequence_init(ALCSPlayer *seqp, void *sequence, u8 *seqID, ALCSeq *seq); void sound_play(u16 soundID, s32* soundMask); f32 music_animation_fraction(void); void func_80009B7C(s32 *soundState, f32 x, f32 y, f32 z); diff --git a/src/camera.c b/src/camera.c index 40271e4d..3efb8a69 100644 --- a/src/camera.c +++ b/src/camera.c @@ -604,30 +604,27 @@ UNUSED void copy_framebuffer_size_to_coords(s32 *x1, s32 *y1, s32 *x2, s32 *y2) *y2 = GET_VIDEO_HEIGHT(widthAndHeight); } -#ifdef NON_EQUIVALENT -// viewport_main -// Alternative attempt: https://decomp.me/scratch/rcJYo -// Still a work-in-progress but it doesn't seem to cause any problems, -// which is why it is labeled under NON_EQUIVALENT +#ifdef NON_MATCHING #define SCISSOR_INTERLACE G_SC_NON_INTERLACE +// viewport_main void func_80066CDC(Gfx **dlist, MatrixS **mats) { - u32 sp58_y; - u32 sp54_x; - u32 sp50_altPosY; - u32 sp4C_altPosX; - u32 posX; - u32 posY; - u32 x; u32 y; + u32 x; + u32 pad0; + u32 sp58_height; + u32 sp54_width; + u32 posY; + u32 posX; // sp4C + u32 pad1; u32 videoHeight; u32 videoWidth; u32 widthAndHeight; - s32 savedCameraID; - s32 originalCameraID; - s32 tempCameraID; s32 viewports; + s32 originalCameraID; // sp34 + s32 savedCameraID; // sp30 + s32 tempCameraID; // sp2C originalCameraID = gActiveCameraID; savedCameraID = gActiveCameraID; @@ -647,77 +644,95 @@ void func_80066CDC(Gfx **dlist, MatrixS **mats) { gScreenViewports[gActiveCameraID].scissorY2); viewport_rsp_set(dlist, 0, 0, 0, 0); gActiveCameraID = tempCameraID; - if (mats != 0) { + if (mats != NULL) { func_80067D3C(dlist, mats); } gActiveCameraID = originalCameraID; return; } + viewports = gNumberOfViewports; if (viewports == VIEWPORTS_COUNT_3_PLAYERS) { viewports = VIEWPORTS_COUNT_4_PLAYERS; + // Fake match + if ((x && x) && x) {} } - y = videoHeight >> 1; + y = (videoHeight >> 1) & 0xFFFFFFFFFFFFFFFF; x = videoWidth >> 1; - sp54_x = x; - sp58_y = y; + sp54_width = x; + sp58_height = y; + if (osTvType == OS_TV_TYPE_PAL) { - sp58_y = 145; + sp58_height = 145; } - switch (viewports) { + switch (viewports ^ 0) { case VIEWPORTS_COUNT_1_PLAYER: - posY = sp58_y; + posY = sp58_height; if (osTvType == OS_TV_TYPE_PAL) { posY -= 18; + // Fake match + if (!gScreenViewports[gActiveCameraID].scissorX2) {} } gDPSetScissor((*dlist)++, SCISSOR_INTERLACE, 0, 0, videoWidth, videoHeight); posX = x; break; case VIEWPORTS_COUNT_2_PLAYERS: + // 2 players = split screen horizontally + // first player has top half if (gActiveCameraID == 0) { posY = videoHeight >> 2; if (osTvType == OS_TV_TYPE_PAL) { posY -= 12; } - gDPSetScissor((*dlist)++, SCISSOR_INTERLACE, 0, 0, videoWidth, (y - (videoHeight >> 7))); + gDPSetScissor((*dlist)++, SCISSOR_INTERLACE, 0, 0, videoWidth, y - (videoHeight >> 7)); } else { - posY = y; + // second player has bottom half + posY = sp58_height; posY += videoHeight >> 2; - gDPSetScissor((*dlist)++, SCISSOR_INTERLACE, 0, (y + (videoHeight >> 7)), videoWidth, - (videoHeight - (videoHeight >> 7))); + gDPSetScissor((*dlist)++, SCISSOR_INTERLACE, 0, y + (videoHeight >> 7), videoWidth, + videoHeight - (videoHeight >> 7)); } posX = x; break; + // this is probably never reached because of an if above that sets the viewport to 4 players if its currently 3 + // players case VIEWPORTS_COUNT_3_PLAYERS: + posY = sp58_height; + // 3 player splits screen in 4 parts, first player = top left, second = top right, third = bottom left and + // bottom right has map of race track if (gActiveCameraID == 0) { - posY = sp58_y; posX = videoWidth >> 2; gDPSetScissor((*dlist)++, SCISSOR_INTERLACE, 0, 0, x - (videoWidth >> 8), videoHeight); } else { - posY = sp58_y; - // posX = x; posX = x + (videoWidth >> 2); gDPSetScissor((*dlist)++, SCISSOR_INTERLACE, x + (videoWidth >> 8), 0, videoWidth - (videoWidth >> 8), videoHeight); } break; case VIEWPORTS_COUNT_4_PLAYERS: - sp58_y >>= 1; - sp54_x = x >> 1; - posY = 0; + sp58_height >>= 1; + sp54_width >>= 1; posX = 0; + posY = 0; switch (gActiveCameraID) { case 0: // Using posX and posY here is not smart since IDO can't optimize out the zero now. // Why here of all places did they do this instead of just setting zero like everywhere else? - gDPSetScissor((*dlist)++, SCISSOR_INTERLACE, posX, posY, (x - (videoWidth >> 8)), - (y - (videoHeight >> 7))); + gDPSetScissor((*dlist)++, SCISSOR_INTERLACE, posX, posY, x - (videoWidth >> 8), + y - (videoHeight >> 7)); break; case 1: posX = x; - gDPSetScissor((*dlist)++, SCISSOR_INTERLACE, (sp54_x + (videoWidth >> 8)), 0, - ((sp54_x + sp54_x) - (videoWidth >> 8)), (y - (videoHeight >> 7))); + gDPSetScissor((*dlist)++, SCISSOR_INTERLACE, x + (videoWidth >> 8), 0, (x + x) - (videoWidth >> 8), + y - (videoHeight >> 7)); + + // Fake + if (1) {} + if (1) {} + if (1) {} + if (1) {} + break; case 2: posY = y; @@ -725,16 +740,17 @@ void func_80066CDC(Gfx **dlist, MatrixS **mats) { (y + y) - (videoHeight >> 7)); break; case 3: - posY = y; posX = x; - gDPSetScissor((*dlist)++, SCISSOR_INTERLACE, (sp54_x + (videoWidth >> 8)), y + (videoHeight >> 7), + posY = y; + gDPSetScissor((*dlist)++, SCISSOR_INTERLACE, x + (videoWidth >> 8), y + (videoHeight >> 7), (x + x) - (videoWidth >> 8), (y + y) - (videoHeight >> 7)); break; } - posY += sp58_y; - posX += sp54_x; + // This should probably assign to a temp variable first? + posY += sp58_height; + posX += sp54_width; if (osTvType == OS_TV_TYPE_PAL) { - if (gActiveCameraID <= VIEWPORTS_COUNT_2_PLAYERS) { + if (gActiveCameraID <= 3) { posY -= 20; } else { posY -= 6; @@ -742,16 +758,15 @@ void func_80066CDC(Gfx **dlist, MatrixS **mats) { } break; default: - //@bug These values are unset! - posY = sp50_altPosY; - posX = sp4C_altPosX; + posY = sp58_height; + posX = x; break; } if (osTvType == OS_TV_TYPE_PAL) { posX -= 4; } - viewport_rsp_set(dlist, sp54_x, sp58_y, posX, posY); + viewport_rsp_set(dlist, sp54_width, sp58_height, posX, posY); if (mats != NULL) { func_80067D3C(dlist, mats); } diff --git a/src/game_ui.c b/src/game_ui.c index 5ea861f6..9cdccf9f 100644 --- a/src/game_ui.c +++ b/src/game_ui.c @@ -426,9 +426,8 @@ void render_hud(Gfx **dList, MatrixS **mtx, Vertex **vertexList, Object *obj, s3 gHudIndicatorTimer = 0; } } - } else if (input_pressed(D_80126D10) & D_CBUTTONS && - racer->raceFinished == FALSE && !(gHudLevelHeader->race_type & RACETYPE_CHALLENGE) && - gHudRaceStart) { + } else if (input_pressed(D_80126D10) & D_CBUTTONS && racer->raceFinished == FALSE && + !(gHudLevelHeader->race_type & RACETYPE_CHALLENGE) && gHudRaceStart) { if (D_800E2794[gHUDNumPlayers][racer->playerIndex] < PLAYER_FOUR) { D_800E2794[gHUDNumPlayers][racer->playerIndex]++; } else { @@ -436,8 +435,8 @@ void render_hud(Gfx **dList, MatrixS **mtx, Vertex **vertexList, Object *obj, s3 } sound_play((SOUND_TING_HIGHEST - (D_800E2794[gHUDNumPlayers][racer->playerIndex] == 0)), NULL); } - if (input_pressed(D_80126D10) & R_CBUTTONS && racer->raceFinished == FALSE && - gHudRaceStart && gMinimapOpacity == 0) { + if (input_pressed(D_80126D10) & R_CBUTTONS && racer->raceFinished == FALSE && gHudRaceStart && + gMinimapOpacity == 0) { gHudToggleSettings[gHUDNumPlayers] = 1 - gHudToggleSettings[gHUDNumPlayers]; if (gHudToggleSettings[gHUDNumPlayers] == 0) { sound_play(SOUND_TING_LOW, NULL); diff --git a/src/main.c b/src/main.c index b8f92306..4e50ef29 100644 --- a/src/main.c +++ b/src/main.c @@ -22,7 +22,7 @@ OSThread gThread3; // OSThread for thread 3 void mainproc(void) { osInitialize(); #ifdef AVOID_UB - bzero(&gMainMemoryPool, RAM_END - (s32)(&gMainMemoryPool)); + bzero(&gMainMemoryPool, RAM_END - (s32) (&gMainMemoryPool)); #endif osCreateThread(&gThread1, 1, &thread1_main, 0, &gThread1Stack[STACKSIZE(STACK_IDLE)], OS_PRIORITY_IDLE); osStartThread(&gThread1); diff --git a/src/memory.c b/src/memory.c index b4834abb..6af1a234 100644 --- a/src/memory.c +++ b/src/memory.c @@ -401,7 +401,7 @@ s32 mempool_locked_set(u8 *address) { /** * Search the memory pool for the current address. * Check if the slot is marked with 0x02. - * Unset that flag and return 1 if so, otherise 0. + * Unset that flag and return 1 if so, otherwise 0. */ s32 mempool_locked_unset(u8 *address) { s32 slotIndex; diff --git a/src/menu.c b/src/menu.c index 149b44fa..9aa39f34 100644 --- a/src/menu.c +++ b/src/menu.c @@ -783,8 +783,7 @@ char **gContPakStrings[11] = { NULL, gContPakCorruptDataStrings, gContPakNeed2ndAdvStrings }; -s32 unused_800DFC08 = 0; -s32 unused_800DFC0C = 0xFFFF; +UNUSED DrawTexture unused_800DFC08[] = { { NULL, 0, -1 } }; /*** Icons in the save options menu. ***/ DrawTexture gDrawTexN64Icon[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; @@ -794,13 +793,13 @@ DrawTexture gDrawTexFileIcon[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; DrawTexture gDrawTexContPakIcon[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; DrawTexture gDrawTexTrashIcon[2] = { { NULL, 0, 0 }, { NULL, 0, 0 } }; -u8 unused_800DFC70[8] = { 0x40, 0x40, 0x04, 0x04, 0xFF, 0, 0, 0 }; +UNUSED s8 unused_800DFC70[] = { 0x40, 0x40, 0x04, 0x04, -1 }; -s16 gSaveMenuObjectIndices[26] = { 0x0024, 0x0025, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x003D, - 0x003F, 0x003E, 0x003C, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, - 0x0049, 0x004A, 0x004B, 0x0040, 0x0041, 0x0002, 0xFFFF, 0x0000 }; +s16 gSaveMenuObjectIndices[] = { 0x0024, 0x0025, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x003D, + 0x003F, 0x003E, 0x003C, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, + 0x0049, 0x004A, 0x004B, 0x0040, 0x0041, 0x0002, -1 }; -s16 gSaveMenuImageIndices[4] = { 0x000B, 0x000C, 0x0002, 0xFFFF }; +s16 gSaveMenuImageIndices[] = { 0x000B, 0x000C, 0x0002, -1 }; MenuElement gControllerPakMenuElement[7] = { { 161, 32, 161, 33, 161, 32, 0, 0, 0, 255, 128, ASSET_FONTS_BIGFONT, 12, 0, { NULL }, { { 0, 0, 0, 0 } } }, @@ -2093,14 +2092,14 @@ void load_menu_text(s32 language) { for (langIndex = 0; sCorruptDataMenuText[langIndex] != NULL; langIndex++) {} - sCorruptDataMenuText[langIndex] = menuText[ASSET_MENU_TEXT_CORRUPTDATA_1]; // "TRY AGAIN!" - sInsertControllerPakMenuText[0] = menuText[ASSET_MENU_TEXT_INSERTDEVICE_3]; // "If you wish to use" - sInsertControllerPakMenuText[1] = menuText[ASSET_MENU_TEXT_INSERTDEVICE_4]; // "the Controller Pak" + sCorruptDataMenuText[langIndex] = menuText[ASSET_MENU_TEXT_CORRUPTDATA_1]; // "TRY AGAIN!" + sInsertControllerPakMenuText[0] = menuText[ASSET_MENU_TEXT_INSERTDEVICE_3]; // "If you wish to use" + sInsertControllerPakMenuText[1] = menuText[ASSET_MENU_TEXT_INSERTDEVICE_4]; // "the Controller Pak" #if VERSION == VERSION_77 - sInsertControllerPakMenuText[2] = menuText[ASSET_MENU_TEXT_INSERTDEVICE_6]; // "insert it now!" - sInsertRumblePakMenuText[0] = menuText[ASSET_MENU_TEXT_INSERTDEVICE_3]; // "If you wish to use" - sInsertRumblePakMenuText[1] = menuText[ASSET_MENU_TEXT_INSERTDEVICE_5]; // "the Rumble Pak" - sInsertRumblePakMenuText[2] = menuText[ASSET_MENU_TEXT_INSERTDEVICE_6]; // "insert it now!" + sInsertControllerPakMenuText[2] = menuText[ASSET_MENU_TEXT_INSERTDEVICE_6]; // "insert it now!" + sInsertRumblePakMenuText[0] = menuText[ASSET_MENU_TEXT_INSERTDEVICE_3]; // "If you wish to use" + sInsertRumblePakMenuText[1] = menuText[ASSET_MENU_TEXT_INSERTDEVICE_5]; // "the Rumble Pak" + sInsertRumblePakMenuText[2] = menuText[ASSET_MENU_TEXT_INSERTDEVICE_6]; // "insert it now!" #else // TODO: Figure out what these text values are for these versions. sInsertControllerPakMenuText[2] = menuText[161]; @@ -7235,8 +7234,7 @@ void menu_caution_init(void) { s32 menu_caution_loop(s32 updateRate) { if (gMenuDelay) { gMenuDelay += updateRate; - } else if (gIgnorePlayerInputTime <= 0 && - (input_pressed(PLAYER_ONE) & (A_BUTTON | B_BUTTON | START_BUTTON))) { + } else if (gIgnorePlayerInputTime <= 0 && (input_pressed(PLAYER_ONE) & (A_BUTTON | B_BUTTON | START_BUTTON))) { sound_play(SOUND_SELECT2, NULL); gMenuDelay = 1; transition_begin(&sMenuTransitionFadeIn); diff --git a/src/object_functions.c b/src/object_functions.c index 0c0339fd..41b315db 100644 --- a/src/object_functions.c +++ b/src/object_functions.c @@ -6144,7 +6144,6 @@ void obj_init_midifade(Object *obj, LevelObjectEntry_MidiFade *entry) { f32 tempF2; s32 i; - obj->segment.trans.rotation.y_rotation = entry->angleY << 8 << 2; // Two shifts needed to skip a register. obj64 = obj->unk64; scaleF = (f32) (((s32) entry->scale) & 0xFFFF); diff --git a/src/textures_sprites.c b/src/textures_sprites.c index 64b47ccf..b325bde7 100644 --- a/src/textures_sprites.c +++ b/src/textures_sprites.c @@ -457,7 +457,7 @@ TextureHeader *load_texture(s32 arg0) { numberOfTextures = (gTempTextureHeader->header.numOfTextures >> 8) & 0xFFFF; if (!gTempTextureHeader->header.isCompressed) { - tex = (TextureHeader * )mempool_alloc((numberOfTextures * 0x60) + assetSize, gTexColourTag); + tex = (TextureHeader *) mempool_alloc((numberOfTextures * 0x60) + assetSize, gTexColourTag); if (tex == NULL) { return NULL; } diff --git a/src/thread3_main.c b/src/thread3_main.c index ce72cb91..7b31ac65 100644 --- a/src/thread3_main.c +++ b/src/thread3_main.c @@ -68,7 +68,7 @@ UNUSED char gBuildString[] = "Version 7.9 14/10/97 19.40 L.Schuneman"; UNUSED char gBuildString[] = "Version 7.7 29/09/97 15.00 L.Schuneman"; #endif -s8 sAntiPiracyTriggered = 0; +s8 sAntiPiracyTriggered = FALSE; UNUSED s32 D_800DD378 = 1; s32 gSaveDataFlags = 0; // Official Name: load_save_flags s32 gScreenStatus = OSMESG_SWAP_BUFFER; @@ -80,13 +80,11 @@ s16 gLevelLoadTimer = 0; s8 gPauseLockTimer = 0; // If this is above zero, the player cannot pause the game. s8 gFutureFunLandLevelTarget = FALSE; s8 gDmemInvalid = FALSE; -UNUSED s32 D_800DD3A4 = 0; -UNUSED s32 D_800DD3A8 = 0; -UNUSED s32 D_800DD3AC = 0; -s32 gNumF3dCmdsPerPlayer[4] = { 4500, 7000, 11000, 11000 }; -s32 gNumHudVertsPerPlayer[4] = { 300, 600, 850, 900 }; -s32 gNumHudMatPerPlayer[4] = { 300, 400, 550, 600 }; -s32 gNumHudTrisPerPlayer[4] = { 20, 30, 40, 50 }; +UNUSED s32 D_800DD3A4[] = { 0, 0, 0 }; +s32 gNumF3dCmdsPerPlayer[MAXCONTROLLERS] = { 4500, 7000, 11000, 11000 }; +s32 gNumHudVertsPerPlayer[MAXCONTROLLERS] = { 300, 600, 850, 900 }; +s32 gNumHudMatPerPlayer[MAXCONTROLLERS] = { 300, 400, 550, 600 }; +s32 gNumHudTrisPerPlayer[MAXCONTROLLERS] = { 20, 30, 40, 50 }; s8 gDrawFrameTimer = 0; FadeTransition D_800DD3F4 = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_OUT, FADE_COLOR_BLACK, 20, 0); UNUSED FadeTransition D_800DD3FC = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_NONE, FADE_COLOR_WHITE, 20, -1); @@ -1439,14 +1437,12 @@ void default_alloc_displaylist_heap(void) { gDisplayLists[0] = (Gfx *) mempool_alloc_safe(totalSize, COLOUR_TAG_RED); gMatrixHeap[0] = (MatrixS *) ((u8 *) gDisplayLists[0] + (gNumF3dCmdsPerPlayer[numberOfPlayers] * sizeof(Gwords))); gVertexHeap[0] = (Vertex *) ((u8 *) gMatrixHeap[0] + (gNumHudMatPerPlayer[numberOfPlayers] * sizeof(Matrix))); - gTriangleHeap[0] = - (Triangle *) ((u8 *) gVertexHeap[0] + (gNumHudVertsPerPlayer[numberOfPlayers] * sizeof(Vertex))); + gTriangleHeap[0] = (Triangle *) ((u8 *) gVertexHeap[0] + (gNumHudVertsPerPlayer[numberOfPlayers] * sizeof(Vertex))); gDisplayLists[1] = (Gfx *) mempool_alloc_safe(totalSize, COLOUR_TAG_YELLOW); gMatrixHeap[1] = (MatrixS *) ((u8 *) gDisplayLists[1] + (gNumF3dCmdsPerPlayer[numberOfPlayers] * sizeof(Gwords))); gVertexHeap[1] = (Vertex *) ((u8 *) gMatrixHeap[1] + (gNumHudMatPerPlayer[numberOfPlayers] * sizeof(Matrix))); - gTriangleHeap[1] = - (Triangle *) ((u8 *) gVertexHeap[1] + (gNumHudVertsPerPlayer[numberOfPlayers] * sizeof(Vertex))); + gTriangleHeap[1] = (Triangle *) ((u8 *) gVertexHeap[1] + (gNumHudVertsPerPlayer[numberOfPlayers] * sizeof(Vertex))); gCurrNumF3dCmdsPerPlayer = gNumF3dCmdsPerPlayer[numberOfPlayers]; gCurrNumHudMatPerPlayer = gNumHudMatPerPlayer[numberOfPlayers]; diff --git a/src/video.c b/src/video.c index 11e143ec..5f74930a 100644 --- a/src/video.c +++ b/src/video.c @@ -19,7 +19,7 @@ VideoModeResolution gVideoModeResolutions[] = { }; // This value exists in order to make sure there are no out of bounds accesses of gVideoModeResolutions -#define NUM_RESOLUTION_MODES ((sizeof(gVideoModeResolutions) / sizeof(VideoModeResolution)) - 1) +#define NUM_RESOLUTION_MODES ((s32) (sizeof(gVideoModeResolutions) / sizeof(VideoModeResolution)) - 1) /*******************************/ @@ -71,7 +71,7 @@ void video_init(s32 videoModeIndex, OSSched *sc) { if (osTvType == OS_TV_TYPE_PAL) { s32 i; - for (i = 0; i < 8; i++) { + for (i = 0; i <= NUM_RESOLUTION_MODES; i++) { gVideoModeResolutions[i].height += PAL_HEIGHT_DIFFERENCE; } } @@ -148,7 +148,7 @@ void fb_init_vi(void) { osViSetMode(&osViModeTable[viModeTableIndex]); break; case VIDEO_MODE_LOWRES_LPN: - //@bug: The video mode being set here is Point sampled + //!@bug: The video mode being set here is Point sampled // but the printf implies it was intended to be Anti-aliased. // By my understanding, this is the case we will always hit in code, // So maybe it was swapped out late in development? diff --git a/ver/splat/dkr.jpn.v79.yaml b/ver/splat/dkr.jpn.v79.yaml index 01f0a40a..adbd4727 100644 --- a/ver/splat/dkr.jpn.v79.yaml +++ b/ver/splat/dkr.jpn.v79.yaml @@ -344,7 +344,8 @@ segments: - [0xE9620, .rodata, ../libultra/src/audio/mips1/synthesizer] - [0xE9630, .rodata, main] - [0xE9660, .rodata, camera] - - [0xE9870, .rodata, thread3_main] + - [0xE9870, .rodata, game] + - [0xE98D0, .rodata, thread3_main] - [0xE9970, .rodata, memory] - [0xE9D90, .rodata, save_data] - [0xE9F60, .rodata, ../libultra/src/sc/sched] diff --git a/ver/splat/dkr.pal.v77.yaml b/ver/splat/dkr.pal.v77.yaml index ddb5200d..3d5ff232 100644 --- a/ver/splat/dkr.pal.v77.yaml +++ b/ver/splat/dkr.pal.v77.yaml @@ -344,7 +344,8 @@ segments: - [0xE7B50, .rodata, ../libultra/src/audio/mips1/synthesizer] - [0xE7B60, .rodata, main] - [0xE7B90, .rodata, camera] - - [0xE7D40, .rodata, thread3_main] + - [0xE7D40, .rodata, game] + - [0xE7DA0, .rodata, thread3_main] - [0xE7EA0, .rodata, memory] - [0xE8220, .rodata, save_data] - [0xE8490, .rodata, ../libultra/src/sc/sched] diff --git a/ver/splat/dkr.pal.v80.yaml b/ver/splat/dkr.pal.v80.yaml index ccf3fa59..795e6929 100644 --- a/ver/splat/dkr.pal.v80.yaml +++ b/ver/splat/dkr.pal.v80.yaml @@ -344,7 +344,8 @@ segments: - [0xE80E0, .rodata, ../libultra/src/audio/mips1/synthesizer] - [0xE80F0, .rodata, main] - [0xE8120, .rodata, camera] - - [0xE82D0, .rodata, thread3_main] + - [0xE82D0, .rodata, game] + - [0xE8330, .rodata, thread3_main] - [0xE8430, .rodata, memory] - [0xE87B0, .rodata, save_data] - [0xE8A20, .rodata, ../libultra/src/sc/sched] diff --git a/ver/splat/dkr.us.v77.yaml b/ver/splat/dkr.us.v77.yaml index 302ece7f..bb04caa8 100644 --- a/ver/splat/dkr.us.v77.yaml +++ b/ver/splat/dkr.us.v77.yaml @@ -344,7 +344,8 @@ segments: - [0xE7AC0, .rodata, ../libultra/src/audio/mips1/synthesizer] - [0xE7AD0, .rodata, main] - [0xE7B00, .rodata, camera] - - [0xE7CB0, .rodata, thread3_main] + - [0xE7CB0, .rodata, game] + - [0xE7D10, .rodata, thread3_main] - [0xE7E10, .rodata, memory] - [0xE8190, .rodata, save_data] - [0xE8400, .rodata, ../libultra/src/sc/sched] diff --git a/ver/splat/dkr.us.v80.yaml b/ver/splat/dkr.us.v80.yaml index 33215419..43809f67 100644 --- a/ver/splat/dkr.us.v80.yaml +++ b/ver/splat/dkr.us.v80.yaml @@ -344,7 +344,8 @@ segments: - [0xE8050, .rodata, ../libultra/src/audio/mips1/synthesizer] - [0xE8060, .rodata, main] - [0xE8090, .rodata, camera] - - [0xE8240, .rodata, thread3_main] + - [0xE8240, .rodata, game] + - [0xE82A0, .rodata, thread3_main] - [0xE83A0, .rodata, memory] - [0xE8720, .rodata, save_data] - [0xE8990, .rodata, ../libultra/src/sc/sched] diff --git a/ver/symbols/symbol_addrs.jpn.v79.txt b/ver/symbols/symbol_addrs.jpn.v79.txt index ef421d49..7f39c2a8 100644 --- a/ver/symbols/symbol_addrs.jpn.v79.txt +++ b/ver/symbols/symbol_addrs.jpn.v79.txt @@ -2369,8 +2369,6 @@ gPauseLockTimer = 0x800DED38; gFutureFunLandLevelTarget = 0x800DED3C; gDmemInvalid = 0x800DED40; D_800DD3A4 = 0x800DED44; -D_800DD3A8 = 0x800DED48; -D_800DD3AC = 0x800DED4C; gNumF3dCmdsPerPlayer = 0x800DED50; // size:0x10 gNumHudVertsPerPlayer = 0x800DED60; // size:0x10 gNumHudMatPerPlayer = 0x800DED70; // size:0x10 @@ -2551,7 +2549,6 @@ gContPakSwitchToRumbleStrings = 0x800E1604; gContPakNeed2ndAdvStrings = 0x800E161C; gContPakStrings = 0x800E163C; unused_800DFC08 = 0x800E1668; -unused_800DFC0C = 0x800E166C; gDrawTexN64Icon = 0x800E1670; gDrawTexTTIcon = 0x800E1680; gDrawTexGhostIcon = 0x800E1690; diff --git a/ver/symbols/symbol_addrs.pal.v77.txt b/ver/symbols/symbol_addrs.pal.v77.txt index 647d3d2f..21615efc 100644 --- a/ver/symbols/symbol_addrs.pal.v77.txt +++ b/ver/symbols/symbol_addrs.pal.v77.txt @@ -2235,8 +2235,6 @@ gPauseLockTimer = 0x800DD428; gFutureFunLandLevelTarget = 0x800DD42C; gDmemInvalid = 0x800DD430; D_800DD3A4 = 0x800DD434; -D_800DD3A8 = 0x800DD438; -D_800DD3AC = 0x800DD43C; gNumF3dCmdsPerPlayer = 0x800DD440; // size:0x10 gNumHudVertsPerPlayer = 0x800DD450; // size:0x10 gNumHudMatPerPlayer = 0x800DD460; // size:0x10 @@ -2398,7 +2396,6 @@ gContPakSwitchToRumbleStrings = 0x800DFC34; gContPakNeed2ndAdvStrings = 0x800DFC4C; gContPakStrings = 0x800DFC6C; unused_800DFC08 = 0x800DFC98; -unused_800DFC0C = 0x800DFC9C; gDrawTexN64Icon = 0x800DFCA0; gDrawTexTTIcon = 0x800DFCB0; gDrawTexGhostIcon = 0x800DFCC0; diff --git a/ver/symbols/symbol_addrs.pal.v80.txt b/ver/symbols/symbol_addrs.pal.v80.txt index 0449c37a..598bd1ee 100644 --- a/ver/symbols/symbol_addrs.pal.v80.txt +++ b/ver/symbols/symbol_addrs.pal.v80.txt @@ -2162,8 +2162,6 @@ gPauseLockTimer = 0x800DD998; gFutureFunLandLevelTarget = 0x800DD99C; gDmemInvalid = 0x800DD9A0; D_800DD3A4 = 0x800DD9A4; -D_800DD3A8 = 0x800DD9A8; -D_800DD3AC = 0x800DD9AC; gNumF3dCmdsPerPlayer = 0x800DD9B0; // size:0x10 gNumHudVertsPerPlayer = 0x800DD9C0; // size:0x10 gNumHudMatPerPlayer = 0x800DD9D0; // size:0x10 @@ -2326,7 +2324,6 @@ gContPakSwitchToRumbleStrings = 0x800E01B4; gContPakNeed2ndAdvStrings = 0x800E01CC; gContPakStrings = 0x800E01EC; unused_800DFC08 = 0x800E0218; -unused_800DFC0C = 0x800E021C; gDrawTexN64Icon = 0x800E0220; gDrawTexTTIcon = 0x800E0230; gDrawTexGhostIcon = 0x800E0240; diff --git a/ver/symbols/symbol_addrs.us.v77.txt b/ver/symbols/symbol_addrs.us.v77.txt index 0df9ceef..f5520be5 100644 --- a/ver/symbols/symbol_addrs.us.v77.txt +++ b/ver/symbols/symbol_addrs.us.v77.txt @@ -2364,8 +2364,6 @@ gPauseLockTimer = 0x800DD398; gFutureFunLandLevelTarget = 0x800DD39C; gDmemInvalid = 0x800DD3A0; D_800DD3A4 = 0x800DD3A4; -D_800DD3A8 = 0x800DD3A8; -D_800DD3AC = 0x800DD3AC; gNumF3dCmdsPerPlayer = 0x800DD3B0; // size:0x10 gNumHudVertsPerPlayer = 0x800DD3C0; // size:0x10 gNumHudMatPerPlayer = 0x800DD3D0; // size:0x10 @@ -2543,7 +2541,6 @@ gContPakSwitchToRumbleStrings = 0x800DFBA4; gContPakNeed2ndAdvStrings = 0x800DFBBC; gContPakStrings = 0x800DFBDC; unused_800DFC08 = 0x800DFC08; -unused_800DFC0C = 0x800DFC0C; gDrawTexN64Icon = 0x800DFC10; gDrawTexTTIcon = 0x800DFC20; gDrawTexGhostIcon = 0x800DFC30; diff --git a/ver/symbols/symbol_addrs.us.v80.txt b/ver/symbols/symbol_addrs.us.v80.txt index 94e875c6..c3d57c0d 100644 --- a/ver/symbols/symbol_addrs.us.v80.txt +++ b/ver/symbols/symbol_addrs.us.v80.txt @@ -2159,8 +2159,6 @@ gPauseLockTimer = 0x800DD908; gFutureFunLandLevelTarget = 0x800DD90C; gDmemInvalid = 0x800DD910; D_800DD3A4 = 0x800DD914; -D_800DD3A8 = 0x800DD918; -D_800DD3AC = 0x800DD91C; gNumF3dCmdsPerPlayer = 0x800DD920; // size:0x10 gNumHudVertsPerPlayer = 0x800DD930; // size:0x10 gNumHudMatPerPlayer = 0x800DD940; // size:0x10 @@ -2323,7 +2321,6 @@ gContPakSwitchToRumbleStrings = 0x800E0124; gContPakNeed2ndAdvStrings = 0x800E013C; gContPakStrings = 0x800E015C; unused_800DFC08 = 0x800E0188; -unused_800DFC0C = 0x800E018C; gDrawTexN64Icon = 0x800E0190; gDrawTexTTIcon = 0x800E01A0; gDrawTexGhostIcon = 0x800E01B0;