mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 06:34:18 -04:00
jaudio_NES: link internal/system.c, minor refactors
This commit is contained in:
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user