mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2025-10-30 08:01:01 +00:00
This reverts commit 6a8cd86293.
This commit is contained in:
parent
6a8cd86293
commit
a56834ad43
6 changed files with 79 additions and 190 deletions
|
|
@ -24,12 +24,6 @@
|
||||||
.byte (\b - sequence_start) >> 8, (\b - sequence_start) & 0xff
|
.byte (\b - sequence_start) >> 8, (\b - sequence_start) & 0xff
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro seq_startchannel_extended a, b
|
|
||||||
.byte 0xb0
|
|
||||||
.byte \a
|
|
||||||
.byte (\b - sequence_start) >> 8, (\b - sequence_start) & 0xff
|
|
||||||
.endm
|
|
||||||
|
|
||||||
.macro seq_subtract a
|
.macro seq_subtract a
|
||||||
.byte 0xc8
|
.byte 0xc8
|
||||||
.byte \a
|
.byte \a
|
||||||
|
|
@ -86,12 +80,12 @@
|
||||||
|
|
||||||
.macro seq_disablechannels_extended a
|
.macro seq_disablechannels_extended a
|
||||||
.byte 0xc0
|
.byte 0xc0
|
||||||
.byte (\a >> 56) & 0xff, (\a >> 48) & 0xff, (\a >> 40) & 0xff, (\a >> 32) & 0xff, (\a >> 24) & 0xff, (\a >> 16) & 0xff, (\a >> 8) & 0xff, \a & 0xff
|
.byte \a >> 24, \a >> 16, \a >> 8, \a & 0xff
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro seq_initchannels_extended a
|
.macro seq_initchannels_extended a
|
||||||
.byte 0xc1
|
.byte 0xc1
|
||||||
.byte (\a >> 56) & 0xff, (\a >> 48) & 0xff, (\a >> 40) & 0xff, (\a >> 32) & 0xff, (\a >> 24) & 0xff, (\a >> 16) & 0xff, (\a >> 8) & 0xff, \a & 0xff
|
.byte \a >> 24, \a >> 16, \a >> 8, \a & 0xff
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro seq_changevol a
|
.macro seq_changevol a
|
||||||
|
|
|
||||||
|
|
@ -18,96 +18,20 @@ seq_setmutescale 0
|
||||||
seq_setvol 127
|
seq_setvol 127
|
||||||
.endif
|
.endif
|
||||||
seq_settempo 120
|
seq_settempo 120
|
||||||
seq_initchannels_extended 0xffffffffffffffff
|
#seq_initchannels 0xfff
|
||||||
|
seq_initchannels_extended 0xfff
|
||||||
# SOUND_BANK_ACTION
|
seq_startchannel 0, .channel0
|
||||||
seq_startchannel_extended 0, .channel0
|
seq_startchannel 1, .channel1
|
||||||
seq_startchannel_extended 1, .channel0
|
seq_startchannel 2, .channel2
|
||||||
seq_startchannel_extended 2, .channel0
|
seq_startchannel 3, .channel38
|
||||||
seq_startchannel_extended 3, .channel0
|
seq_startchannel 4, .channel4
|
||||||
seq_startchannel_extended 4, .channel0
|
seq_startchannel 5, .channel59
|
||||||
seq_startchannel_extended 5, .channel0
|
seq_startchannel 6, .channel6
|
||||||
seq_startchannel_extended 6, .channel0
|
seq_startchannel 7, .channel7
|
||||||
seq_startchannel_extended 7, .channel0
|
seq_startchannel 8, .channel38
|
||||||
|
seq_startchannel 9, .channel59
|
||||||
# SOUND_BANK_MOVING
|
seq_startchannel 10, .channel10
|
||||||
seq_startchannel_extended 8, .channel1
|
seq_startchannel 11, .channel11
|
||||||
seq_startchannel_extended 9, .channel1
|
|
||||||
seq_startchannel_extended 10, .channel1
|
|
||||||
seq_startchannel_extended 11, .channel1
|
|
||||||
seq_startchannel_extended 12, .channel1
|
|
||||||
seq_startchannel_extended 13, .channel1
|
|
||||||
seq_startchannel_extended 14, .channel1
|
|
||||||
seq_startchannel_extended 15, .channel1
|
|
||||||
|
|
||||||
# SOUND_BANK_MARIO_VOICE
|
|
||||||
seq_startchannel_extended 16, .channel2
|
|
||||||
seq_startchannel_extended 17, .channel2
|
|
||||||
seq_startchannel_extended 18, .channel2
|
|
||||||
seq_startchannel_extended 19, .channel2
|
|
||||||
seq_startchannel_extended 20, .channel2
|
|
||||||
seq_startchannel_extended 21, .channel2
|
|
||||||
seq_startchannel_extended 22, .channel2
|
|
||||||
seq_startchannel_extended 23, .channel2
|
|
||||||
|
|
||||||
# SOUND_BANK_GENERAL
|
|
||||||
seq_startchannel_extended 24, .channel38
|
|
||||||
seq_startchannel_extended 25, .channel38
|
|
||||||
seq_startchannel_extended 26, .channel38
|
|
||||||
seq_startchannel_extended 27, .channel38
|
|
||||||
|
|
||||||
# SOUND_BANK_ENV
|
|
||||||
seq_startchannel_extended 28, .channel4
|
|
||||||
seq_startchannel_extended 29, .channel4
|
|
||||||
seq_startchannel_extended 30, .channel4
|
|
||||||
seq_startchannel_extended 31, .channel4
|
|
||||||
|
|
||||||
# SOUND_BANK_OBJ
|
|
||||||
seq_startchannel_extended 32, .channel59
|
|
||||||
seq_startchannel_extended 33, .channel59
|
|
||||||
seq_startchannel_extended 34, .channel59
|
|
||||||
seq_startchannel_extended 35, .channel59
|
|
||||||
|
|
||||||
# SOUND_BANK_AIR
|
|
||||||
seq_startchannel_extended 36, .channel6
|
|
||||||
seq_startchannel_extended 37, .channel6
|
|
||||||
seq_startchannel_extended 38, .channel6
|
|
||||||
seq_startchannel_extended 39, .channel6
|
|
||||||
|
|
||||||
# SOUND_BANK_MENU
|
|
||||||
seq_startchannel_extended 40, .channel7
|
|
||||||
|
|
||||||
# SOUND_BANK_GENERAL2
|
|
||||||
seq_startchannel_extended 41, .channel38
|
|
||||||
seq_startchannel_extended 42, .channel38
|
|
||||||
seq_startchannel_extended 43, .channel38
|
|
||||||
seq_startchannel_extended 44, .channel38
|
|
||||||
|
|
||||||
# SOUND_BANK_OBJ2
|
|
||||||
seq_startchannel_extended 45, .channel59
|
|
||||||
seq_startchannel_extended 46, .channel59
|
|
||||||
seq_startchannel_extended 47, .channel59
|
|
||||||
|
|
||||||
# SOUND_BANK_LUIGI_VOICE
|
|
||||||
seq_startchannel_extended 48, .channel10
|
|
||||||
seq_startchannel_extended 49, .channel10
|
|
||||||
seq_startchannel_extended 50, .channel10
|
|
||||||
seq_startchannel_extended 51, .channel10
|
|
||||||
seq_startchannel_extended 52, .channel10
|
|
||||||
seq_startchannel_extended 53, .channel10
|
|
||||||
seq_startchannel_extended 54, .channel10
|
|
||||||
seq_startchannel_extended 55, .channel10
|
|
||||||
|
|
||||||
# SOUND_BANK_WARIO_VOICE
|
|
||||||
seq_startchannel_extended 56, .channel11
|
|
||||||
seq_startchannel_extended 57, .channel11
|
|
||||||
seq_startchannel_extended 58, .channel11
|
|
||||||
seq_startchannel_extended 59, .channel11
|
|
||||||
seq_startchannel_extended 60, .channel11
|
|
||||||
seq_startchannel_extended 61, .channel11
|
|
||||||
seq_startchannel_extended 62, .channel11
|
|
||||||
seq_startchannel_extended 63, .channel11
|
|
||||||
|
|
||||||
.seq_loop:
|
.seq_loop:
|
||||||
seq_delay 20000
|
seq_delay 20000
|
||||||
seq_jump .seq_loop
|
seq_jump .seq_loop
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
// N.B. sound banks are different from the audio banks referred to in other
|
// N.B. sound banks are different from the audio banks referred to in other
|
||||||
// files. We should really fix our naming to be less ambiguous...
|
// files. We should really fix our naming to be less ambiguous...
|
||||||
#define MAX_BACKGROUND_MUSIC_QUEUE_SIZE 6
|
#define MAX_BACKGROUND_MUSIC_QUEUE_SIZE 6
|
||||||
#define MAX_CHANNELS_PER_SOUND_BANK 8
|
#define MAX_CHANNELS_PER_SOUND_BANK 1
|
||||||
#define SOUND_INDEX_COUNT 40
|
#define SOUND_INDEX_COUNT 40
|
||||||
|
|
||||||
#define SEQUENCE_NONE 0xFF
|
#define SEQUENCE_NONE 0xFF
|
||||||
|
|
@ -393,9 +393,9 @@ STATIC_ASSERT(ARRAY_COUNT(sBackgroundMusicDefaultVolume) == 64,
|
||||||
u8 sCurrentBackgroundMusicSeqId = SEQUENCE_NONE;
|
u8 sCurrentBackgroundMusicSeqId = SEQUENCE_NONE;
|
||||||
u8 sMusicDynamicDelay = 0;
|
u8 sMusicDynamicDelay = 0;
|
||||||
u8 sSoundBankUsedListBack[SOUND_BANK_COUNT] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
u8 sSoundBankUsedListBack[SOUND_BANK_COUNT] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||||
u8 sSoundBankFreeListFront[SOUND_BANK_COUNT] = { 8, 8, 8, 4, 4, 4, 4, 1, 4, 3, 8, 8 };
|
u8 sSoundBankFreeListFront[SOUND_BANK_COUNT] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
|
||||||
u8 sNumSoundsInBank[SOUND_BANK_COUNT] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // only used for debugging
|
u8 sNumSoundsInBank[SOUND_BANK_COUNT] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // only used for debugging
|
||||||
u8 sMaxChannelsForSoundBank[SOUND_BANK_COUNT] = { 8, 8, 8, 4, 4, 4, 4, 1, 4, 3, 8, 8 };
|
u8 sMaxChannelsForSoundBank[SOUND_BANK_COUNT] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
|
||||||
|
|
||||||
// Banks 2 and 7 both grew from 0x30 sounds to 0x40 in size in US.
|
// Banks 2 and 7 both grew from 0x30 sounds to 0x40 in size in US.
|
||||||
#ifdef VERSION_JP
|
#ifdef VERSION_JP
|
||||||
|
|
@ -452,9 +452,10 @@ s8 D_SH_80343E48_pad[0x8];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct Sound sSoundRequests[0x100];
|
struct Sound sSoundRequests[0x100];
|
||||||
struct ChannelVolumeScaleFade D_80360928[SEQUENCE_PLAYERS][CHANNELS_MAX] = { 0 };
|
// Curiously, this has size 3, despite SEQUENCE_PLAYERS == 4 on EU
|
||||||
u8 sUsedChannelsForSoundBank[SOUND_BANK_COUNT] = { 0 };
|
struct ChannelVolumeScaleFade D_80360928[3][CHANNELS_MAX];
|
||||||
u8 sCurrentSound[SOUND_BANK_COUNT][MAX_CHANNELS_PER_SOUND_BANK] = { 0 }; // index into sSoundBanks
|
u8 sUsedChannelsForSoundBank[SOUND_BANK_COUNT];
|
||||||
|
u8 sCurrentSound[SOUND_BANK_COUNT][MAX_CHANNELS_PER_SOUND_BANK]; // index into sSoundBanks
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* For each sound bank, a pool containing the currently active sounds for that bank.
|
* For each sound bank, a pool containing the currently active sounds for that bank.
|
||||||
|
|
@ -1400,7 +1401,7 @@ static void update_game_sound(void) {
|
||||||
for (bank = 0; bank < SOUND_BANK_COUNT; bank++) {
|
for (bank = 0; bank < SOUND_BANK_COUNT; bank++) {
|
||||||
select_current_sounds(bank);
|
select_current_sounds(bank);
|
||||||
|
|
||||||
for (i = 0; i < sUsedChannelsForSoundBank[bank]; i++) {
|
for (i = 0; i < MAX_CHANNELS_PER_SOUND_BANK; i++) {
|
||||||
soundIndex = sCurrentSound[bank][i];
|
soundIndex = sCurrentSound[bank][i];
|
||||||
|
|
||||||
if (soundIndex < SOUND_INDEX_COUNT && sSoundBanks[bank][soundIndex].soundStatus != SOUND_STATUS_STOPPED) {
|
if (soundIndex < SOUND_INDEX_COUNT && sSoundBanks[bank][soundIndex].soundStatus != SOUND_STATUS_STOPPED) {
|
||||||
|
|
@ -1754,7 +1755,6 @@ static void update_game_sound(void) {
|
||||||
// (In practice sUsedChannelsForSoundBank[i] = sMaxChannelsForSoundBank[i] = 1, so this
|
// (In practice sUsedChannelsForSoundBank[i] = sMaxChannelsForSoundBank[i] = 1, so this
|
||||||
// doesn't do anything)
|
// doesn't do anything)
|
||||||
channelIndex += sMaxChannelsForSoundBank[bank] - sUsedChannelsForSoundBank[bank];
|
channelIndex += sMaxChannelsForSoundBank[bank] - sUsedChannelsForSoundBank[bank];
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,11 @@
|
||||||
|
|
||||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||||
#define SEQUENCE_PLAYERS 4
|
#define SEQUENCE_PLAYERS 4
|
||||||
#define SEQUENCE_CHANNELS 128
|
#define SEQUENCE_CHANNELS 48
|
||||||
#define SEQUENCE_LAYERS 64
|
#define SEQUENCE_LAYERS 64
|
||||||
#else
|
#else
|
||||||
#define SEQUENCE_PLAYERS 3
|
#define SEQUENCE_PLAYERS 3
|
||||||
#define SEQUENCE_CHANNELS 129
|
#define SEQUENCE_CHANNELS 32
|
||||||
#ifdef VERSION_JP
|
#ifdef VERSION_JP
|
||||||
#define SEQUENCE_LAYERS 48
|
#define SEQUENCE_LAYERS 48
|
||||||
#else
|
#else
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define LAYERS_MAX 8
|
#define LAYERS_MAX 8
|
||||||
#define CHANNELS_MAX 64
|
#define CHANNELS_MAX 32
|
||||||
|
|
||||||
#define NO_LAYER ((struct SequenceChannelLayer *)(-1))
|
#define NO_LAYER ((struct SequenceChannelLayer *)(-1))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,9 +38,9 @@ struct Note *gNotes;
|
||||||
static u8 pad[4];
|
static u8 pad[4];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct SequencePlayer gSequencePlayers[SEQUENCE_PLAYERS] = { 0 };
|
struct SequencePlayer gSequencePlayers[SEQUENCE_PLAYERS];
|
||||||
struct SequenceChannel gSequenceChannels[SEQUENCE_CHANNELS] = { 0 };
|
struct SequenceChannel gSequenceChannels[SEQUENCE_CHANNELS];
|
||||||
struct SequenceChannelLayer gSequenceLayers[SEQUENCE_LAYERS] = { 0 };
|
struct SequenceChannelLayer gSequenceLayers[SEQUENCE_LAYERS];
|
||||||
|
|
||||||
struct SequenceChannel gSequenceChannelNone;
|
struct SequenceChannel gSequenceChannelNone;
|
||||||
struct AudioListItem gLayerFreeList;
|
struct AudioListItem gLayerFreeList;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#include <PR/ultratypes.h>
|
#include <PR/ultratypes.h>
|
||||||
|
|
||||||
#if defined(DEVELOPMENT)
|
#if defined(AUDIO_DEVELOPMENT) || defined(DEVELOPMENT)
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -11,7 +11,6 @@
|
||||||
#include "heap.h"
|
#include "heap.h"
|
||||||
#include "load.h"
|
#include "load.h"
|
||||||
#include "seqplayer.h"
|
#include "seqplayer.h"
|
||||||
#include "pc/debuglog.h"
|
|
||||||
|
|
||||||
#define PORTAMENTO_IS_SPECIAL(x) ((x).mode & 0x80)
|
#define PORTAMENTO_IS_SPECIAL(x) ((x).mode & 0x80)
|
||||||
#define PORTAMENTO_MODE(x) ((x).mode & ~0x80)
|
#define PORTAMENTO_MODE(x) ((x).mode & ~0x80)
|
||||||
|
|
@ -189,7 +188,8 @@ void seq_channel_layer_free(struct SequenceChannel *seqChannel, s32 layerIndex)
|
||||||
}
|
}
|
||||||
|
|
||||||
void sequence_channel_disable(struct SequenceChannel *seqChannel) {
|
void sequence_channel_disable(struct SequenceChannel *seqChannel) {
|
||||||
for (s32 i = 0; i < LAYERS_MAX; i++) {
|
s32 i;
|
||||||
|
for (i = 0; i < LAYERS_MAX; i++) {
|
||||||
seq_channel_layer_free(seqChannel, i);
|
seq_channel_layer_free(seqChannel, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -199,7 +199,8 @@ void sequence_channel_disable(struct SequenceChannel *seqChannel) {
|
||||||
}
|
}
|
||||||
|
|
||||||
struct SequenceChannel *allocate_sequence_channel(void) {
|
struct SequenceChannel *allocate_sequence_channel(void) {
|
||||||
for (u32 i = 0; i < ARRAY_COUNT(gSequenceChannels); i++) {
|
s32 i;
|
||||||
|
for (i = 0; i < ARRAY_COUNT(gSequenceChannels); i++) {
|
||||||
if (gSequenceChannels[i].seqPlayer == NULL) {
|
if (gSequenceChannels[i].seqPlayer == NULL) {
|
||||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||||
return &gSequenceChannels[i];
|
return &gSequenceChannels[i];
|
||||||
|
|
@ -208,15 +209,16 @@ struct SequenceChannel *allocate_sequence_channel(void) {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_ERROR("RAN OUT OF SEQUENCE CHANNELS FOR ALLOCATION!");
|
|
||||||
return &gSequenceChannelNone;
|
return &gSequenceChannelNone;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sequence_player_init_channels(struct SequencePlayer *seqPlayer, u16 channelBits) {
|
void sequence_player_init_channels(struct SequencePlayer *seqPlayer, u16 channelBits) {
|
||||||
for (u32 i = 0; i < CHANNELS_MAX; i++) {
|
struct SequenceChannel *seqChannel;
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
for (i = 0; i < CHANNELS_MAX; i++) {
|
||||||
if (channelBits & 1) {
|
if (channelBits & 1) {
|
||||||
struct SequenceChannel *seqChannel = seqPlayer->channels[i];
|
seqChannel = seqPlayer->channels[i];
|
||||||
if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == TRUE && seqChannel->seqPlayer == seqPlayer) {
|
if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == TRUE && seqChannel->seqPlayer == seqPlayer) {
|
||||||
sequence_channel_disable(seqChannel);
|
sequence_channel_disable(seqChannel);
|
||||||
seqChannel->seqPlayer = NULL;
|
seqChannel->seqPlayer = NULL;
|
||||||
|
|
@ -244,10 +246,13 @@ void sequence_player_init_channels(struct SequencePlayer *seqPlayer, u16 channel
|
||||||
}
|
}
|
||||||
|
|
||||||
void sequence_player_disable_channels(struct SequencePlayer *seqPlayer, u16 channelBits) {
|
void sequence_player_disable_channels(struct SequencePlayer *seqPlayer, u16 channelBits) {
|
||||||
|
struct SequenceChannel *seqChannel;
|
||||||
|
s32 i;
|
||||||
|
|
||||||
eu_stubbed_printf_0("SUBTRACK DIM\n");
|
eu_stubbed_printf_0("SUBTRACK DIM\n");
|
||||||
for (u32 i = 0; i < CHANNELS_MAX; i++) {
|
for (i = 0; i < CHANNELS_MAX; i++) {
|
||||||
if (channelBits & 1) {
|
if (channelBits & 1) {
|
||||||
struct SequenceChannel *seqChannel = seqPlayer->channels[i];
|
seqChannel = seqPlayer->channels[i];
|
||||||
if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == TRUE) {
|
if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == TRUE) {
|
||||||
if (seqChannel->seqPlayer == seqPlayer) {
|
if (seqChannel->seqPlayer == seqPlayer) {
|
||||||
sequence_channel_disable(seqChannel);
|
sequence_channel_disable(seqChannel);
|
||||||
|
|
@ -271,22 +276,27 @@ void sequence_player_disable_channels(struct SequencePlayer *seqPlayer, u16 chan
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sequence_player_init_channels_extended(struct SequencePlayer* seqPlayer, u64 channelBits) {
|
void sequence_player_init_channels_extended(struct SequencePlayer* seqPlayer, u32 channelBits) {
|
||||||
LOG_DEBUG("Enabling channels (extended) with corresponding bits %llX", channelBits);
|
struct SequenceChannel* seqChannel;
|
||||||
|
s32 i;
|
||||||
|
|
||||||
for (u32 i = 0; i < CHANNELS_MAX; i++) {
|
#ifdef AUDIO_DEVELOPMENT
|
||||||
|
printf("debug: Enabling channels (extended) with corresponding bits %X\n", channelBits);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for (i = 0; i < CHANNELS_MAX; i++) {
|
||||||
if (channelBits & 1) {
|
if (channelBits & 1) {
|
||||||
struct SequenceChannel* seqChannel = seqPlayer->channels[i];
|
seqChannel = seqPlayer->channels[i];
|
||||||
if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == TRUE && seqChannel->seqPlayer == seqPlayer) {
|
if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == TRUE && seqChannel->seqPlayer == seqPlayer) {
|
||||||
sequence_channel_disable(seqChannel);
|
sequence_channel_disable(seqChannel);
|
||||||
seqChannel->seqPlayer = NULL;
|
seqChannel->seqPlayer = NULL;
|
||||||
}
|
}
|
||||||
seqChannel = allocate_sequence_channel();
|
seqChannel = allocate_sequence_channel();
|
||||||
if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == FALSE) {
|
if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == FALSE) {
|
||||||
eu_stubbed_printf_0("Audio:Track:Warning: No Free Notetrack\n");
|
|
||||||
gAudioErrorFlags = i + 0x10000;
|
gAudioErrorFlags = i + 0x10000;
|
||||||
seqPlayer->channels[i] = seqChannel;
|
seqPlayer->channels[i] = seqChannel;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
sequence_channel_init(seqChannel);
|
sequence_channel_init(seqChannel);
|
||||||
seqPlayer->channels[i] = seqChannel;
|
seqPlayer->channels[i] = seqChannel;
|
||||||
seqChannel->seqPlayer = seqPlayer;
|
seqChannel->seqPlayer = seqPlayer;
|
||||||
|
|
@ -295,10 +305,14 @@ void sequence_player_init_channels_extended(struct SequencePlayer* seqPlayer, u6
|
||||||
seqChannel->noteAllocPolicy = seqPlayer->noteAllocPolicy;
|
seqChannel->noteAllocPolicy = seqPlayer->noteAllocPolicy;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_DEBUG("Tried to enable channel (extended) %i with result of validity %u.", i, IS_SEQUENCE_CHANNEL_VALID(seqChannel));
|
#ifdef AUDIO_DEVELOPMENT
|
||||||
|
printf("debug: Tried to enable channel (extended) %i with result of validity %u.\n", i, IS_SEQUENCE_CHANNEL_VALID(seqChannel));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_DEBUG("Checked channel (extended) %i for enable with bit %llu.", i, channelBits & 1);
|
#ifdef AUDIO_DEVELOPMENT
|
||||||
|
printf("debug: Checked channel (extended) %i for enable with bit %u.\n", i, channelBits & 1);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef VERSION_EU
|
#ifdef VERSION_EU
|
||||||
channelBits = channelBits >> 1;
|
channelBits = channelBits >> 1;
|
||||||
|
|
@ -308,12 +322,17 @@ void sequence_player_init_channels_extended(struct SequencePlayer* seqPlayer, u6
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sequence_player_disable_channels_extended(struct SequencePlayer* seqPlayer, u64 channelBits) {
|
void sequence_player_disable_channels_extended(struct SequencePlayer* seqPlayer, u32 channelBits) {
|
||||||
LOG_DEBUG("Disabling channels (extended) with corresponding bits %llX", channelBits);
|
struct SequenceChannel* seqChannel;
|
||||||
|
s32 i;
|
||||||
|
|
||||||
for (u32 i = 0; i < CHANNELS_MAX; i++) {
|
#ifdef AUDIO_DEVELOPMENT
|
||||||
|
printf("debug: Disabling channels (extended) with corresponding bits %X\n", channelBits);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for (i = 0; i < CHANNELS_MAX; i++) {
|
||||||
if (channelBits & 1) {
|
if (channelBits & 1) {
|
||||||
struct SequenceChannel* seqChannel = seqPlayer->channels[i];
|
seqChannel = seqPlayer->channels[i];
|
||||||
if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == TRUE) {
|
if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == TRUE) {
|
||||||
if (seqChannel->seqPlayer == seqPlayer) {
|
if (seqChannel->seqPlayer == seqPlayer) {
|
||||||
sequence_channel_disable(seqChannel);
|
sequence_channel_disable(seqChannel);
|
||||||
|
|
@ -330,27 +349,6 @@ void sequence_player_disable_channels_extended(struct SequencePlayer* seqPlayer,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sequence_player_disable_all_channels(struct SequencePlayer *seqPlayer) {
|
|
||||||
eu_stubbed_printf_0("SUBTRACK DIM\n");
|
|
||||||
for (u32 i = 0; i < CHANNELS_MAX; i++) {
|
|
||||||
struct SequenceChannel *seqChannel = seqPlayer->channels[i];
|
|
||||||
if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == TRUE) {
|
|
||||||
if (seqChannel->seqPlayer == seqPlayer) {
|
|
||||||
sequence_channel_disable(seqChannel);
|
|
||||||
seqChannel->seqPlayer = NULL;
|
|
||||||
}
|
|
||||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
|
||||||
else {
|
|
||||||
#ifdef VERSION_EU
|
|
||||||
stubbed_printf("Audio:Track: Warning SUBTRACK PARENT CHANGED\n");
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
seqPlayer->channels[i] = &gSequenceChannelNone;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void sequence_channel_enable(struct SequencePlayer *seqPlayer, u8 channelIndex, void *script) {
|
void sequence_channel_enable(struct SequencePlayer *seqPlayer, u8 channelIndex, void *script) {
|
||||||
struct SequenceChannel *seqChannel = seqPlayer->channels[channelIndex];
|
struct SequenceChannel *seqChannel = seqPlayer->channels[channelIndex];
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
@ -380,15 +378,11 @@ void sequence_channel_enable(struct SequencePlayer *seqPlayer, u8 channelIndex,
|
||||||
seq_channel_layer_free(seqChannel, i);
|
seq_channel_layer_free(seqChannel, i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_DEBUG("Enabled sequence channel %d with script entry of %p", channelIndex, script);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sequence_player_disable(struct SequencePlayer *seqPlayer) {
|
void sequence_player_disable(struct SequencePlayer *seqPlayer) {
|
||||||
LOG_DEBUG("Disabling sequence player %p", seqPlayer);
|
sequence_player_disable_channels(seqPlayer, 0xffff);
|
||||||
|
|
||||||
sequence_player_disable_all_channels(seqPlayer);
|
|
||||||
note_pool_clear(&seqPlayer->notePool);
|
note_pool_clear(&seqPlayer->notePool);
|
||||||
seqPlayer->finished = TRUE;
|
seqPlayer->finished = TRUE;
|
||||||
seqPlayer->enabled = FALSE;
|
seqPlayer->enabled = FALSE;
|
||||||
|
|
@ -525,22 +519,6 @@ s32 m64_read_s32(struct M64ScriptState* state) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
s64 m64_read_s64(struct M64ScriptState* state) {
|
|
||||||
#ifdef DEVELOPMENT
|
|
||||||
assert(state != NULL);
|
|
||||||
assert(state->pc != NULL);
|
|
||||||
#endif
|
|
||||||
s64 ret = *(state->pc++) << 56;
|
|
||||||
ret = (*(state->pc++) << 48) | ret;
|
|
||||||
ret = (*(state->pc++) << 40) | ret;
|
|
||||||
ret = (*(state->pc++) << 32) | ret;
|
|
||||||
ret = (*(state->pc++) << 24) | ret;
|
|
||||||
ret = (*(state->pc++) << 16) | ret;
|
|
||||||
ret = (*(state->pc++) << 8) | ret;
|
|
||||||
ret = *(state->pc++) | ret;
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(VERSION_SH)
|
#if defined(VERSION_SH)
|
||||||
void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) {
|
void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) {
|
||||||
s32 cmd;
|
s32 cmd;
|
||||||
|
|
@ -2363,10 +2341,8 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) {
|
||||||
u8 temp;
|
u8 temp;
|
||||||
s32 value = 0;
|
s32 value = 0;
|
||||||
s32 i;
|
s32 i;
|
||||||
u8 u8v;
|
|
||||||
u16 u16v;
|
u16 u16v;
|
||||||
u32 u32v;
|
u32 u32v;
|
||||||
u64 u64v;
|
|
||||||
u8 *tempPtr;
|
u8 *tempPtr;
|
||||||
struct M64ScriptState *state;
|
struct M64ScriptState *state;
|
||||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||||
|
|
@ -2731,13 +2707,13 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0xc1: // seq_initchannels_extended
|
case 0xc1: // seq_initchannels_extended
|
||||||
u64v = m64_read_s64(state);
|
u32v = m64_read_s32(state);
|
||||||
sequence_player_init_channels_extended(seqPlayer, u64v);
|
sequence_player_init_channels_extended(seqPlayer, u32v);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0xc0: // seq_disablechannels_extended
|
case 0xc0: // seq_disablechannels_extended
|
||||||
u64v = m64_read_s64(state);
|
u32v = m64_read_s32(state);
|
||||||
sequence_player_disable_channels_extended(seqPlayer, u64v);
|
sequence_player_disable_channels_extended(seqPlayer, u32v);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0xd5: // seq_setmutescale
|
case 0xd5: // seq_setmutescale
|
||||||
|
|
@ -2847,11 +2823,6 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) {
|
||||||
break;
|
break;
|
||||||
case 0xa0:
|
case 0xa0:
|
||||||
break;
|
break;
|
||||||
case 0xb0: // seq_startchannel_extended
|
|
||||||
u8v = m64_read_u8(state);
|
|
||||||
u16v = m64_read_s16(state);
|
|
||||||
sequence_channel_enable(seqPlayer, u8v, seqPlayer->seqData + u16v);
|
|
||||||
break;
|
|
||||||
#if !defined(VERSION_EU) && !defined(VERSION_SH)
|
#if !defined(VERSION_EU) && !defined(VERSION_SH)
|
||||||
case 0xd8: // (this makes no sense)
|
case 0xd8: // (this makes no sense)
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue