jaudio_NES: link internal/system.c, minor refactors

This commit is contained in:
Cuyler36
2025-11-03 06:26:45 -05:00
parent 6c81937894
commit ef3506df2f
6 changed files with 51 additions and 49 deletions
+1 -1
View File
@@ -60,7 +60,7 @@ extern void Na_GetStaffRollInfo(StaffRollInfo_c* info) {
subtrack = group->subtracks[i];
if (subtrack != nullptr) {
note = subtrack->note_layers[0];
if (note != nullptr && note->_00bit3) {
if (note != nullptr && note->channel_attached) {
channel = note->channel;
if (channel != nullptr && channel->common_ch.enabled) {
/* Found our enabled note channel, get mouth type */
+5 -5
View File
@@ -251,7 +251,7 @@ extern void Nas_UpdateChannel(void) {
}
} else {
if (playback_chan->current_parent_note != NA_NO_NOTE) {
playback_chan->current_parent_note->_00bit1 = TRUE;
playback_chan->current_parent_note->continuous_channel_released = TRUE;
}
Nas_StopVoice(chan);
@@ -262,7 +262,7 @@ extern void Nas_UpdateChannel(void) {
}
} else if (playback_chan->adsr_envp.state.flags.status == ADSR_STATUS_DISABLED) {
if (playback_chan->current_parent_note != NA_NO_NOTE) {
playback_chan->current_parent_note->_00bit1 = TRUE;
playback_chan->current_parent_note->continuous_channel_released = TRUE;
}
Nas_StopVoice(chan);
@@ -501,7 +501,7 @@ static void __Nas_Release_Channel_Main(note* n, int target) {
return;
}
n->_00bit3 = FALSE;
n->channel_attached = FALSE;
if (n->channel == NULL) {
return;
@@ -777,7 +777,7 @@ extern void Nas_EntryTrack(channel* chan, note* n) {
playback->current_parent_note = n;
playback->priority = subtrack->note_priority;
n->note_properties_need_init = TRUE;
n->_00bit3 = TRUE;
n->channel_attached = TRUE;
n->channel = chan;
subtrack->channel = chan;
subtrack->note = n;
@@ -949,7 +949,7 @@ extern channel* Nas_AllocationOnRequest(note* n) {
return chan;
null_return:
n->_00bit3 = TRUE;
n->channel_attached = TRUE;
return NULL;
}
+33 -33
View File
@@ -1731,24 +1731,22 @@ static void __WaveTouch(wtstr* wavetouch_str, u32 ram_addr, WaveMedia* wave_medi
}
}
// @non-matching - regswaps caused by AG not being loaded into r28
s32 Nas_BankOfsToAddr(s32 bank_id, u8* ctrl_p, WaveMedia* wave_media, s32 async) {
Bgloadreq* preload;
Bgloadreq* top_preload;
smzwavetable* wavetable;
s32 size;
s32 n_chunks;
u8* wave_ram_p;
s32 i;
s32 preloading;
s32 size = 0;
s32 n_chunks = 1;
u8* wave_ram_p = NULL;
s32 preloading = FALSE;
static ALHeap awheap;
u8 medium;
s32 i;
s8 medium = 0;
u8 __stack_pad[12];
s32* i_p = &i; // this feels wrong but w/e
// u8 __stack_pad[12];
// s32* i_p = &i; // this feels wrong but w/e
preloading = FALSE;
if (AG.num_requested_samples != 0) {
preloading = TRUE;
} else {
@@ -1760,7 +1758,7 @@ s32 Nas_BankOfsToAddr(s32 bank_id, u8* ctrl_p, WaveMedia* wave_media, s32 async)
size = 0;
for (i = 0; i < AG.num_used_samples; i++) {
size += ALIGN_NEXT(AG.used_samples[i]->size, 16);
size += ALIGN_NEXT(AG.used_samples[i]->size & 0xFFFFFF, 16);
}
for (i = 0; i < AG.num_used_samples; i++) {
@@ -1772,32 +1770,33 @@ s32 Nas_BankOfsToAddr(s32 bank_id, u8* ctrl_p, WaveMedia* wave_media, s32 async)
wave_ram_p = NULL;
switch (async) {
case FALSE:
medium = wavetable->medium;
if (medium == wave_media->wave0_media) {
case FALSE: {
u8 medium = wavetable->medium;
if (wavetable->medium == wave_media->wave0_media) {
wave_ram_p = (u8*)Nas_Alloc_Single(wavetable->size, wave_media->wave0_bank_id, wavetable->sample,
(s8)medium, CACHE_PERSISTENT);
} else if (medium == wave_media->wave1_media) {
(s8)(wavetable->medium & 0xFF), CACHE_PERSISTENT);
} else if (wavetable->medium == wave_media->wave1_media) {
wave_ram_p = (u8*)Nas_Alloc_Single(wavetable->size, wave_media->wave1_bank_id, wavetable->sample,
(s8)wavetable->medium, CACHE_PERSISTENT);
} else if (medium == MEDIUM_DISK_DRIVE) {
wave_ram_p = (u8*)Nas_Alloc_Single(wavetable->size, 0xFE, wavetable->sample, (s8)wavetable->medium,
(s8)(wavetable->medium & 0xFF), CACHE_PERSISTENT);
} else if (wavetable->medium == MEDIUM_DISK_DRIVE) {
wave_ram_p = (u8*)Nas_Alloc_Single(wavetable->size, 0xFE, wavetable->sample, (s8)(wavetable->medium & 0xFF),
CACHE_PERSISTENT);
}
break;
case TRUE:
medium = wavetable->medium;
if (medium == wave_media->wave0_media) {
wave_ram_p = (u8*)Nas_Alloc_Single(wavetable->size, wave_media->wave0_bank_id, wavetable->sample,
(s8)wavetable->medium, CACHE_TEMPORARY);
} else if (medium == wave_media->wave1_media) {
} break;
case TRUE: {
u8 medium = wavetable->medium;
if ((u8)wavetable->medium == wave_media->wave0_media) {
// the size & 0xFFFFFF is necessary... but only once...
wave_ram_p = (u8*)Nas_Alloc_Single(wavetable->size & 0xFFFFFF, wave_media->wave0_bank_id, wavetable->sample,
(u8)wavetable->medium, CACHE_TEMPORARY);
} else if ((u8)wavetable->medium == wave_media->wave1_media) {
wave_ram_p = (u8*)Nas_Alloc_Single(wavetable->size, wave_media->wave1_bank_id, wavetable->sample,
(s8)wavetable->medium, CACHE_TEMPORARY);
} else if (medium == MEDIUM_DISK_DRIVE) {
wave_ram_p = (u8*)Nas_Alloc_Single(wavetable->size, 0xFE, wavetable->sample, (s8)wavetable->medium,
CACHE_TEMPORARY);
(u8)wavetable->medium, CACHE_TEMPORARY);
} else if ((u8)wavetable->medium == MEDIUM_DISK_DRIVE) {
wave_ram_p = (u8*)Nas_Alloc_Single(wavetable->size, 0xFE, wavetable->sample, (u8)wavetable->medium,
CACHE_TEMPORARY);
}
break;
} break;
}
if (wave_ram_p == NULL) {
@@ -1830,9 +1829,10 @@ s32 Nas_BankOfsToAddr(s32 bank_id, u8* ctrl_p, WaveMedia* wave_media, s32 async)
AG.num_used_samples = 0;
if (AG.num_requested_samples != 0 && !preloading) {
top_preload = &AG.requested_samples[AG.num_requested_samples - 1];
i = AG.num_requested_samples - 1;
top_preload = &AG.requested_samples[i];
wavetable = top_preload->sample;
n_chunks = 1;
// n_chunks = 1;
n_chunks += (wavetable->size / 0x1000);
Nas_BgCopyReq(wavetable->sample, top_preload->ram_addr, wavetable->size, wavetable->medium, n_chunks,
&AG.preload_sample_queue, top_preload->encoded_info);
+9 -7
View File
@@ -320,9 +320,9 @@ static s32 Nas_EntryNoteTrack(sub* subtrack, int note_idx) {
entry_note->finished = FALSE;
entry_note->muted = FALSE;
entry_note->continuous = FALSE;
entry_note->_00bit3 = FALSE;
entry_note->channel_attached = FALSE;
entry_note->ignore_drum_pan = FALSE;
entry_note->_00bit1 = FALSE;
entry_note->continuous_channel_released = FALSE;
entry_note->note_properties_need_init = FALSE;
*(u8*)&entry_note->stereo_phase = 0;
entry_note->portamento_sweep.mode = 0;
@@ -601,11 +601,11 @@ static void __Stop_Note(note* n) {
}
static s32 __SetChannel(note* n, s32 same_sample) {
if (n->continuous == TRUE && n->_00bit1 == TRUE) {
if (n->continuous == TRUE && n->continuous_channel_released == TRUE) {
return 0;
}
if (n->continuous != TRUE || n->channel == nullptr || n->_00bit3 == FALSE || same_sample != TRUE ||
if (n->continuous != TRUE || n->channel == nullptr || n->channel_attached == FALSE || same_sample != TRUE ||
n->channel->playback_ch.current_parent_note != n) {
if (same_sample == FALSE) {
Nas_Release_Channel(n);
@@ -678,7 +678,7 @@ static s32 __Command_Seq(note* n) {
case NOTE_CMD_CONTINUOUS_ON:
case NOTE_CMD_CONTINUOUS_OFF:
n->continuous = cmd == NOTE_CMD_CONTINUOUS_ON;
n->_00bit1 = FALSE;
n->continuous_channel_released = FALSE;
Nas_Release_Channel(n);
break;
case NOTE_CMD_SET_SHORT_NOTE_DEFAULT_DELAY:
@@ -774,6 +774,8 @@ static s32 __Command_Seq(note* n) {
}
}
}
return cmd;
}
static s32 __SetVoice(note* n, s32 arg) {
@@ -1035,7 +1037,7 @@ static s32 __SetNote(note* n, s32 cmd) {
if (cmd == 0xC0) {
n->delay = Nas_ReadLengthData(m);
n->muted = TRUE;
n->_00bit1 = FALSE;
n->continuous_channel_released = FALSE;
return COMMON_SCRIPT_END;
}
@@ -1685,7 +1687,7 @@ static void Nas_SubSeq(sub* subtrack) {
subtrack->note_layers[lo_bits]->macro_player.pc = &grp->seq_data[cmdArgU16];
}
break;
// [0x90 - 0x93]
// [0x90 - 0x97] NOTE: 0x94-0x97 are invalid and will be changed to 0x90.
case SUBTRACK_CMD_NOTE_STOP_MASK: // stop note layer
Nas_CloseNoteTrack(subtrack, lo_bits);
break;