You've already forked Microtransactions64
mirror of
https://github.com/Print-and-Panic/Microtransactions64.git
synced 2026-01-21 10:17:19 -08:00
Sound effect tables now support up to 255 sounds instead of 128 (#465)
This commit is contained in:
@@ -7,6 +7,7 @@
|
|||||||
#include "external.h"
|
#include "external.h"
|
||||||
#include "playback.h"
|
#include "playback.h"
|
||||||
#include "synthesis.h"
|
#include "synthesis.h"
|
||||||
|
#include "game/debug.h"
|
||||||
#include "game/main.h"
|
#include "game/main.h"
|
||||||
#include "game/level_update.h"
|
#include "game/level_update.h"
|
||||||
#include "game/object_list_processor.h"
|
#include "game/object_list_processor.h"
|
||||||
@@ -696,6 +697,7 @@ struct SPTask *create_next_audio_frame_task(void) {
|
|||||||
* Called from threads: thread5_game_loop
|
* Called from threads: thread5_game_loop
|
||||||
*/
|
*/
|
||||||
void play_sound(s32 soundBits, f32 *pos) {
|
void play_sound(s32 soundBits, f32 *pos) {
|
||||||
|
assert(((soundBits & SOUNDARGS_MASK_SOUNDID) >> SOUNDARGS_SHIFT_SOUNDID) != 0xff, "Sfx tables do not support a sound id of 0xff!");
|
||||||
sSoundRequests[sSoundRequestCount].soundBits = soundBits;
|
sSoundRequests[sSoundRequestCount].soundBits = soundBits;
|
||||||
sSoundRequests[sSoundRequestCount].position = pos;
|
sSoundRequests[sSoundRequestCount].position = pos;
|
||||||
sSoundRequestCount++;
|
sSoundRequestCount++;
|
||||||
|
|||||||
@@ -1620,11 +1620,11 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) {
|
|||||||
case 0xc5: // chan_dynsetdyntable
|
case 0xc5: // chan_dynsetdyntable
|
||||||
if (value != -1) {
|
if (value != -1) {
|
||||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||||
seqData = (*seqChannel->dynTable)[value];
|
seqData = (*seqChannel->dynTable)[(u8) value];
|
||||||
sp38 = (u16)((seqData[0] << 8) + seqData[1]);
|
sp38 = (u16)((seqData[0] << 8) + seqData[1]);
|
||||||
seqChannel->dynTable = (void *) (seqPlayer->seqData + sp38);
|
seqChannel->dynTable = (void *) (seqPlayer->seqData + sp38);
|
||||||
#else
|
#else
|
||||||
sp5A = (u16)((((*seqChannel->dynTable)[value])[0] << 8) + (((*seqChannel->dynTable)[value])[1]));
|
sp5A = (u16)((((*seqChannel->dynTable)[(u8) value])[0] << 8) + (((*seqChannel->dynTable)[(u8) value])[1]));
|
||||||
seqChannel->dynTable = (void *) (seqPlayer->seqData + sp5A);
|
seqChannel->dynTable = (void *) (seqPlayer->seqData + sp5A);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -1893,7 +1893,7 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) {
|
|||||||
eu_stubbed_printf_0("Audio:Track: CTBLCALL Macro Level Over Error!\n");
|
eu_stubbed_printf_0("Audio:Track: CTBLCALL Macro Level Over Error!\n");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
seqData = (*seqChannel->dynTable)[value];
|
seqData = (*seqChannel->dynTable)[(u8) value];
|
||||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||||
state->stack[state->depth++] = state->pc;
|
state->stack[state->depth++] = state->pc;
|
||||||
sp38 = (u16)((seqData[0] << 8) + seqData[1]);
|
sp38 = (u16)((seqData[0] << 8) + seqData[1]);
|
||||||
@@ -2011,11 +2011,11 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 0xb5:
|
case 0xb5:
|
||||||
seqChannel->unkC8 = *(u16 *) (*seqChannel->dynTable)[value];
|
seqChannel->unkC8 = *(u16 *) (*seqChannel->dynTable)[(u8) value];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0xb6:
|
case 0xb6:
|
||||||
value = (*seqChannel->dynTable)[0][value];
|
value = (*seqChannel->dynTable)[0][(u8) value];
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -2045,7 +2045,7 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) {
|
|||||||
|
|
||||||
case 0x98:
|
case 0x98:
|
||||||
if (value != -1 && seq_channel_set_layer(seqChannel, loBits) != -1) {
|
if (value != -1 && seq_channel_set_layer(seqChannel, loBits) != -1) {
|
||||||
seqData = (*seqChannel->dynTable)[value];
|
seqData = (*seqChannel->dynTable)[(u8) value];
|
||||||
sp5A = ((seqData[0] << 8) + seqData[1]);
|
sp5A = ((seqData[0] << 8) + seqData[1]);
|
||||||
seqChannel->layers[loBits]->scriptState.pc = seqPlayer->seqData + sp5A;
|
seqChannel->layers[loBits]->scriptState.pc = seqPlayer->seqData + sp5A;
|
||||||
}
|
}
|
||||||
@@ -2121,7 +2121,7 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) {
|
|||||||
|
|
||||||
case 0xb0: // chan_dynsetlayer
|
case 0xb0: // chan_dynsetlayer
|
||||||
if (value != -1 && seq_channel_set_layer(seqChannel, loBits) != -1) {
|
if (value != -1 && seq_channel_set_layer(seqChannel, loBits) != -1) {
|
||||||
seqData = (*seqChannel->dynTable)[value];
|
seqData = (*seqChannel->dynTable)[(u8) value];
|
||||||
sp5A = ((seqData[0] << 8) + seqData[1]);
|
sp5A = ((seqData[0] << 8) + seqData[1]);
|
||||||
seqChannel->layers[loBits]->scriptState.pc = seqPlayer->seqData + sp5A;
|
seqChannel->layers[loBits]->scriptState.pc = seqPlayer->seqData + sp5A;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user