mirror of https://github.com/pmret/papermario.git
bgm_control wip
This commit is contained in:
parent
b4bb082669
commit
b38ba22a90
|
|
@ -627,22 +627,22 @@ typedef struct Worker {
|
|||
|
||||
typedef Worker* WorkerList[MAX_WORKERS];
|
||||
|
||||
typedef struct MusicSettings {
|
||||
typedef struct MusicControlData {
|
||||
/* 0x00 */ u16 flags;
|
||||
/* 0x02 */ s16 state;
|
||||
/* 0x04 */ s32 fadeOutTime;
|
||||
/* 0x08 */ s32 fadeInTime;
|
||||
/* 0x0C */ s16 fadeStartVolume;
|
||||
/* 0x0E */ s16 fadeEndVolume;
|
||||
/* 0x10 */ s32 songID;
|
||||
/* 0x10 */ s32 requestedSongID;
|
||||
/* 0x14 */ s32 variation;
|
||||
/* 0x18 */ s32 songName;
|
||||
/* 0x18 */ s32 songName; /// name or handle of currently playing song
|
||||
/* 0x1C */ s32 battleSongID;
|
||||
/* 0x20 */ s32 battleVariation;
|
||||
/* 0x24 */ s32 savedSongID;
|
||||
/* 0x28 */ s32 savedVariation;
|
||||
/* 0x2C */ s32 savedSongName;
|
||||
} MusicSettings; // size = 0x30
|
||||
} MusicControlData; // size = 0x30
|
||||
|
||||
typedef struct MusicProximityTrigger {
|
||||
/* 0x00 */ VecXZf pos;
|
||||
|
|
|
|||
|
|
@ -4684,15 +4684,6 @@ enum ProjectileHitboxAttackStates {
|
|||
PROJECTILE_HITBOX_STATE_DONE = 100
|
||||
};
|
||||
|
||||
enum MusicSettingsFlags {
|
||||
MUSIC_SETTINGS_FLAG_1 = 0x00000001,
|
||||
MUSIC_SETTINGS_FLAG_ENABLE_PROXIMITY_MIX = 0x00000002,
|
||||
MUSIC_SETTINGS_FLAG_4 = 0x00000004,
|
||||
MUSIC_SETTINGS_FLAG_8 = 0x00000008,
|
||||
MUSIC_SETTINGS_FLAG_10 = 0x00000010,
|
||||
MUSIC_SETTINGS_FLAG_20 = 0x00000020,
|
||||
};
|
||||
|
||||
// the lower byte of ColliderFlags
|
||||
enum SurfaceType {
|
||||
SURFACE_TYPE_DEFAULT = 0,
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ extern EvtScript EVS_NpcDefeat;
|
|||
extern EvtScript ShakeCam1;
|
||||
extern EvtScript ShakeCamX;
|
||||
|
||||
extern MusicSettings gMusicSettings[2];
|
||||
extern MusicControlData gMusicControlData[2];
|
||||
|
||||
// gfx
|
||||
extern DisplayContext* gDisplayContext;
|
||||
|
|
|
|||
90
src/audio.h
90
src/audio.h
|
|
@ -122,34 +122,47 @@ enum AuVoiceSyncFlags {
|
|||
};
|
||||
|
||||
typedef enum AuEffectType {
|
||||
AU_FX_NONE = 0,
|
||||
AU_FX_SMALLROOM = 1,
|
||||
AU_FX_BIGROOM = 2,
|
||||
AU_FX_CHORUS = 3,
|
||||
AU_FX_FLANGE = 4,
|
||||
AU_FX_ECHO = 5,
|
||||
AU_FX_CUSTOM_0 = 6,
|
||||
AU_FX_CUSTOM_1 = 7,
|
||||
AU_FX_CUSTOM_2 = 8,
|
||||
AU_FX_CUSTOM_3 = 9,
|
||||
AU_FX_OTHER_BIGROOM = 10
|
||||
AU_FX_NONE = 0,
|
||||
AU_FX_SMALLROOM = 1,
|
||||
AU_FX_BIGROOM = 2,
|
||||
AU_FX_CHORUS = 3,
|
||||
AU_FX_FLANGE = 4,
|
||||
AU_FX_ECHO = 5,
|
||||
AU_FX_CUSTOM_0 = 6,
|
||||
AU_FX_CUSTOM_1 = 7,
|
||||
AU_FX_CUSTOM_2 = 8,
|
||||
AU_FX_CUSTOM_3 = 9,
|
||||
AU_FX_OTHER_BIGROOM = 10,
|
||||
} AuEffectType;
|
||||
|
||||
typedef enum MusicState {
|
||||
MUSIC_STATE_0 = 0,
|
||||
MUSIC_STATE_1 = 1,
|
||||
MUSIC_STATE_2 = 2,
|
||||
MUSIC_STATE_IDLE = 0,
|
||||
MUSIC_STATE_STOP_CURRENT = 1,
|
||||
MUSIC_STATE_AWAIT_FADEOUT = 2,
|
||||
MUSIC_STATE_DELAY_2 = 3,
|
||||
MUSIC_STATE_DELAY_1 = 4,
|
||||
MUSIC_STATE_5 = 5,
|
||||
MUSIC_STATE_PLAY_NEXT = 5,
|
||||
} MusicState;
|
||||
|
||||
enum MusicFlags {
|
||||
MUSIC_FLAG_PLAYING = 0x01,
|
||||
MUSIC_FLAG_ENABLE_PROX_MIX = 0x02,
|
||||
MUSIC_FLAG_PUSHING = 0x04,
|
||||
MUSIC_FLAG_POPPING = 0x08,
|
||||
MUSIC_FLAG_IGNORE_POP = 0x10,
|
||||
MUSIC_FLAG_FADE_IN_NEXT = 0x20,
|
||||
};
|
||||
|
||||
enum MusicFades {
|
||||
MUSIC_CROSS_FADE = 0,
|
||||
};
|
||||
|
||||
typedef enum BGMPlayerState {
|
||||
BGM_PLAY_STATE_IDLE = 0,
|
||||
BGM_PLAY_STATE_ACTIVE = 1,
|
||||
BGM_PLAY_STATE_FETCH = 2,
|
||||
BGM_PLAY_STATE_INIT = 3,
|
||||
BGM_PLAY_STATE_STOP = 4
|
||||
BGM_PLAY_STATE_IDLE = 0,
|
||||
BGM_PLAY_STATE_ACTIVE = 1,
|
||||
BGM_PLAY_STATE_FETCH = 2,
|
||||
BGM_PLAY_STATE_INIT = 3,
|
||||
BGM_PLAY_STATE_STOP = 4,
|
||||
} BGMPlayerState;
|
||||
|
||||
typedef enum SegmentControlCommands {
|
||||
|
|
@ -159,7 +172,7 @@ typedef enum SegmentControlCommands {
|
|||
BGM_COMP_WAIT = 4,
|
||||
BGM_COMP_END_LOOP = 5,
|
||||
BGM_COMP_6 = 6,
|
||||
BGM_COMP_7 = 7
|
||||
BGM_COMP_7 = 7,
|
||||
} SegmentControlCommands;
|
||||
|
||||
typedef enum BGMSpecialSubops {
|
||||
|
|
@ -954,8 +967,8 @@ typedef struct AuEffectChange {
|
|||
|
||||
typedef struct SndGlobalsSub6C {
|
||||
/* 0x00 */ struct BGMPlayer* bgmPlayer;
|
||||
/* 0x04 */ u8 unk_4;
|
||||
/* 0x05 */ u8 unk_5;
|
||||
/* 0x04 */ u8 assigned;
|
||||
/* 0x05 */ u8 priority;
|
||||
} SndGlobalsSub6C;
|
||||
|
||||
// found at 801D57A0
|
||||
|
|
@ -1133,7 +1146,7 @@ typedef struct BGMPlayer {
|
|||
/* 0x21D */ u8 bgmInstrumentCount;
|
||||
/* 0x21E */ u8 unk_21E;
|
||||
/* 0x21F */ char unk_21F[0x1];
|
||||
/* 0x220 */ u8 unk_220;
|
||||
/* 0x220 */ u8 paused;
|
||||
/* 0x221 */ u8 masterState;
|
||||
/* 0x222 */ u8 unk_222;
|
||||
/* 0x223 */ u8 unk_223;
|
||||
|
|
@ -1155,8 +1168,9 @@ typedef struct BGMPlayer {
|
|||
} BGMPlayer; // size = 0xA9C
|
||||
|
||||
//TODO these are probably one struct with a union at offset 0x10
|
||||
// keep them separated so that only the "correct" element of the union can be used with functions taking these
|
||||
|
||||
typedef struct SongUpdateEventA {
|
||||
typedef struct SongUpdateRequestA {
|
||||
/* 0x00 */ s32 songName;
|
||||
/* 0x04 */ s32 duration;
|
||||
/* 0x08 */ s32 startVolume;
|
||||
|
|
@ -1164,29 +1178,29 @@ typedef struct SongUpdateEventA {
|
|||
/* 0x10 */ s32 variation;
|
||||
/* 0x14 */ s32 unk_14;
|
||||
/* 0x18 */ char pad_18[8];
|
||||
} SongUpdateEventA; // size = 0x1C or 0x20
|
||||
} SongUpdateRequestA; // size = 0x1C or 0x20
|
||||
|
||||
typedef struct SongUpdateEventB {
|
||||
typedef struct SongUpdateRequestB {
|
||||
/* 0x00 */ s32 songName;
|
||||
/* 0x04 */ s32 duration;
|
||||
/* 0x08 */ s32 unk_08;
|
||||
/* 0x0C */ s32 finalVolume;
|
||||
/* 0x10 */ AuCallback callback;
|
||||
/* 0x14 */ s32 unk_14;
|
||||
/* 0x14 */ s32 onPush;
|
||||
/* 0x18 */ char pad_18[8];
|
||||
} SongUpdateEventB; // size = 0x1C or 0x20
|
||||
} SongUpdateRequestB; // size = 0x1C or 0x20
|
||||
|
||||
typedef struct SongUpdateEventC {
|
||||
typedef struct SongUpdateRequestC {
|
||||
/* 0x00 */ s32 songName;
|
||||
/* 0x04 */ s32 duration;
|
||||
/* 0x08 */ s32 startVolume;
|
||||
/* 0x0C */ s32 finalVolume;
|
||||
/* 0x10 */ s32 index;
|
||||
/* 0x14 */ s32 unk_14;
|
||||
/* 0x14 */ s32 pauseMode;
|
||||
/* 0x18 */ char pad_18[8];
|
||||
} SongUpdateEventC; // size = 0x1C or 0x20
|
||||
} SongUpdateRequestC; // size = 0x1C or 0x20
|
||||
|
||||
typedef struct SongUpdateEventD {
|
||||
typedef struct SongUpdateRequestD {
|
||||
/* 0x00 */ s32 songName;
|
||||
/* 0x04 */ s32 unk_04;
|
||||
/* 0x08 */ s32 unk_08;
|
||||
|
|
@ -1194,18 +1208,18 @@ typedef struct SongUpdateEventD {
|
|||
/* 0x10 */ s32 mode; // 0 or 1
|
||||
/* 0x14 */ s32 unk_14;
|
||||
/* 0x18 */ char pad_18[8];
|
||||
} SongUpdateEventD; // size = 0x1C or 0x20
|
||||
} SongUpdateRequestD; // size = 0x1C or 0x20
|
||||
|
||||
// might be same as SongUpdateEventC
|
||||
typedef struct SongUpdateEventE {
|
||||
// might be same as SongUpdateRequestC
|
||||
typedef struct SongUpdateRequestE {
|
||||
/* 0x00 */ s32 songName;
|
||||
/* 0x04 */ s32 duration;
|
||||
/* 0x08 */ s32 startVolume;
|
||||
/* 0x0C */ s32 finalVolume;
|
||||
/* 0x10 */ s32 index;
|
||||
/* 0x14 */ s32 unk_14;
|
||||
/* 0x14 */ s32 pauseMode;
|
||||
/* 0x18 */ char pad_18[8];
|
||||
} SongUpdateEventE; // size = 0x1C or 0x20
|
||||
} SongUpdateRequestE; // size = 0x1C or 0x20
|
||||
|
||||
typedef struct MSEQTrackData {
|
||||
/* 0x0 */ u8 trackIndex;
|
||||
|
|
|
|||
|
|
@ -10,16 +10,16 @@ BSS s16 MusicTargetVolume;
|
|||
BSS s16 MusicMaxVolume;
|
||||
BSS s16 MusicCurrentVolume;
|
||||
|
||||
MusicSettings gMusicSettings[2];
|
||||
MusicControlData gMusicControlData[2];
|
||||
|
||||
MusicSettings BlankMusicSettings = {
|
||||
MusicControlData BlankMusicControlData = {
|
||||
.flags = 0,
|
||||
.state = MUSIC_STATE_0,
|
||||
.state = MUSIC_STATE_IDLE,
|
||||
.fadeOutTime = -1,
|
||||
.fadeInTime = 0,
|
||||
.fadeStartVolume = 0,
|
||||
.fadeEndVolume = 0,
|
||||
.songID = AU_SONG_NONE,
|
||||
.requestedSongID = AU_SONG_NONE,
|
||||
.variation = -1,
|
||||
.songName = -1,
|
||||
.battleSongID = 0,
|
||||
|
|
@ -64,8 +64,8 @@ s32 bgm_get_map_default_variation(s32 songID) {
|
|||
void bgm_reset_sequence_players(void) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(gMusicSettings); i++) {
|
||||
gMusicSettings[i] = BlankMusicSettings;
|
||||
for (i = 0; i < ARRAY_COUNT(gMusicControlData); i++) {
|
||||
gMusicControlData[i] = BlankMusicControlData;
|
||||
}
|
||||
|
||||
MusicTargetVolume = VOL_LEVEL_FULL;
|
||||
|
|
@ -80,95 +80,103 @@ void bgm_reset_volume(void) {
|
|||
}
|
||||
|
||||
//TODO refactor out constants
|
||||
void bgm_update_music_settings(void) {
|
||||
MusicSettings* music = gMusicSettings;
|
||||
void bgm_update_music_control(void) {
|
||||
MusicControlData* music = gMusicControlData;
|
||||
s32 i = 0;
|
||||
s16 state2 = MUSIC_STATE_2;
|
||||
s16 flag4 = MUSIC_SETTINGS_FLAG_4;
|
||||
s16 stateFadeOut = MUSIC_STATE_AWAIT_FADEOUT;
|
||||
s16 pushedFlag = MUSIC_FLAG_PUSHING;
|
||||
s32 flags;
|
||||
|
||||
for (i; i < ARRAY_COUNT(gMusicSettings); i++, music++) {
|
||||
for (i; i < ARRAY_COUNT(gMusicControlData); i++, music++) {
|
||||
switch (music->state) {
|
||||
case MUSIC_STATE_0:
|
||||
case MUSIC_STATE_IDLE:
|
||||
break;
|
||||
case MUSIC_STATE_1:
|
||||
if (music->flags & MUSIC_SETTINGS_FLAG_1) {
|
||||
case MUSIC_STATE_STOP_CURRENT:
|
||||
if (music->flags & MUSIC_FLAG_PLAYING) {
|
||||
if (music->fadeOutTime < 250) {
|
||||
if (!(music->flags & MUSIC_SETTINGS_FLAG_4)) {
|
||||
if (!(music->flags & MUSIC_FLAG_PUSHING)) {
|
||||
if (snd_song_stop(music->songName) == AU_RESULT_OK) {
|
||||
music->state = state2;
|
||||
music->state = stateFadeOut;
|
||||
}
|
||||
} else {
|
||||
if (func_80055AF0(music->songName) == AU_RESULT_OK) {
|
||||
music->state = state2;
|
||||
if (snd_song_UNK_push_stop(music->songName) == AU_RESULT_OK) {
|
||||
music->state = stateFadeOut;
|
||||
}
|
||||
}
|
||||
} else if (!(music->flags & MUSIC_SETTINGS_FLAG_4)) {
|
||||
if (snd_song_set_variation_fade_time(music->songName, music->fadeOutTime, NULL) == AU_RESULT_OK) {
|
||||
music->state = state2;
|
||||
} else if (!(music->flags & MUSIC_FLAG_PUSHING)) {
|
||||
if (snd_song_request_fade_out(music->songName, music->fadeOutTime, NULL) == AU_RESULT_OK) {
|
||||
music->state = stateFadeOut;
|
||||
}
|
||||
} else {
|
||||
if (func_80055BB8(music->songName, 250) == AU_RESULT_OK) {
|
||||
music->state = state2;
|
||||
if (snd_song_UNK_request_push_fade_out(music->songName, 250) == AU_RESULT_OK) {
|
||||
music->state = stateFadeOut;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (music->flags & MUSIC_SETTINGS_FLAG_4) {
|
||||
music->flags |= MUSIC_SETTINGS_FLAG_10;
|
||||
if (music->flags & MUSIC_FLAG_PUSHING) {
|
||||
// nothing was playing in this case, so remember to skip the next pop
|
||||
music->flags |= MUSIC_FLAG_IGNORE_POP;
|
||||
}
|
||||
music->flags &= ~flag4;
|
||||
music->state = MUSIC_STATE_5;
|
||||
music->flags &= ~pushedFlag;
|
||||
music->state = MUSIC_STATE_PLAY_NEXT;
|
||||
}
|
||||
break;
|
||||
case MUSIC_STATE_2:
|
||||
case MUSIC_STATE_AWAIT_FADEOUT:
|
||||
flags = music->flags;
|
||||
music->flags &= ~flag4;
|
||||
if (flags & MUSIC_SETTINGS_FLAG_1) {
|
||||
music->flags &= ~pushedFlag;
|
||||
if (flags & MUSIC_FLAG_PLAYING) {
|
||||
if (snd_song_is_playing(music->songName) == AU_RESULT_OK) {
|
||||
music->flags &= ~MUSIC_SETTINGS_FLAG_1;
|
||||
music->flags &= ~MUSIC_FLAG_PLAYING;
|
||||
music->state = MUSIC_STATE_DELAY_2;
|
||||
}
|
||||
} else {
|
||||
music->state = MUSIC_STATE_5;
|
||||
music->state = MUSIC_STATE_PLAY_NEXT;
|
||||
}
|
||||
break;
|
||||
case MUSIC_STATE_DELAY_2:
|
||||
music->state = MUSIC_STATE_DELAY_1;
|
||||
break;
|
||||
case MUSIC_STATE_DELAY_1:
|
||||
music->state = MUSIC_STATE_5;
|
||||
music->state = MUSIC_STATE_PLAY_NEXT;
|
||||
break;
|
||||
case MUSIC_STATE_5:
|
||||
if (!(music->flags & MUSIC_SETTINGS_FLAG_8)) {
|
||||
if (music->songID <= AU_SONG_NONE) {
|
||||
music->state = MUSIC_STATE_0;
|
||||
case MUSIC_STATE_PLAY_NEXT:
|
||||
if (!(music->flags & MUSIC_FLAG_POPPING)) {
|
||||
if (music->requestedSongID <= AU_SONG_NONE) {
|
||||
// new song is AU_SONG_NONE, play nothing
|
||||
music->state = MUSIC_STATE_IDLE;
|
||||
} else {
|
||||
music->songName = snd_song_load(music->songID, i);
|
||||
music->songName = snd_song_load(music->requestedSongID, i);
|
||||
// snd_song_lond may return either songName or an AuResult error code.
|
||||
// since song names are 4-character big-endian identifiers packed into an s32, we require
|
||||
// the upper half of the return value to be nonzero for songs which loaded without error.
|
||||
// this reserves return values from 0 to 0xFFFF for AuResult codes.
|
||||
if (music->songName > 0xFFFFU) {
|
||||
if ((music->flags & MUSIC_SETTINGS_FLAG_20)) {
|
||||
snd_song_set_variation_fade(music->songName, music->variation,
|
||||
if ((music->flags & MUSIC_FLAG_FADE_IN_NEXT)) {
|
||||
snd_song_request_fade_in(music->songName, music->variation,
|
||||
music->fadeInTime, music->fadeStartVolume, music->fadeEndVolume);
|
||||
music->flags &= ~MUSIC_SETTINGS_FLAG_20;
|
||||
music->flags &= ~MUSIC_FLAG_FADE_IN_NEXT;
|
||||
} else {
|
||||
// if we aren't fading in, just start at the default volume level
|
||||
bgm_set_target_volume(MusicDefaultVolume);
|
||||
}
|
||||
if (snd_song_start_variation(music->songName, music->variation) == 0) {
|
||||
music->flags |= MUSIC_SETTINGS_FLAG_1;
|
||||
music->state = MUSIC_STATE_0;
|
||||
/// @bug this is called even if we are trying to fade in, immediately overriding any fade parameters
|
||||
if (snd_song_request_play(music->songName, music->variation) == AU_RESULT_OK) {
|
||||
music->flags |= MUSIC_FLAG_PLAYING;
|
||||
music->state = MUSIC_STATE_IDLE;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (music->flags & MUSIC_SETTINGS_FLAG_10) {
|
||||
music->state = MUSIC_STATE_0;
|
||||
music->flags &= ~(MUSIC_SETTINGS_FLAG_10 | MUSIC_SETTINGS_FLAG_8);
|
||||
} else if (func_80055B28(music->savedSongName) == AU_RESULT_OK) {
|
||||
music->songID = music->savedSongID;
|
||||
if (music->flags & MUSIC_FLAG_IGNORE_POP) {
|
||||
music->state = MUSIC_STATE_IDLE;
|
||||
music->flags &= ~(MUSIC_FLAG_IGNORE_POP | MUSIC_FLAG_POPPING);
|
||||
} else if (snd_song_UNK_request_pop(music->savedSongName) == AU_RESULT_OK) {
|
||||
music->requestedSongID = music->savedSongID;
|
||||
music->variation = music->savedVariation;
|
||||
music->songName = music->savedSongName;
|
||||
music->state = MUSIC_STATE_0;
|
||||
music->flags |= MUSIC_SETTINGS_FLAG_1;
|
||||
music->flags &= ~MUSIC_SETTINGS_FLAG_8;
|
||||
music->state = MUSIC_STATE_IDLE;
|
||||
music->flags |= MUSIC_FLAG_PLAYING;
|
||||
music->flags &= ~MUSIC_FLAG_POPPING;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -178,19 +186,18 @@ void bgm_update_music_settings(void) {
|
|||
}
|
||||
|
||||
s32 _bgm_set_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume) {
|
||||
MusicSettings* musicSetting;
|
||||
MusicControlData* music;
|
||||
s32 mapSongVariation;
|
||||
|
||||
if (gGameStatusPtr->demoState != DEMO_STATE_NONE) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
musicSetting = &gMusicSettings[playerIndex];
|
||||
music = &gMusicControlData[playerIndex];
|
||||
|
||||
if (!gGameStatusPtr->musicEnabled) {
|
||||
snd_song_stop(musicSetting->songName);
|
||||
musicSetting->flags &= ~MUSIC_SETTINGS_FLAG_1;
|
||||
|
||||
snd_song_stop(music->songName);
|
||||
music->flags &= ~MUSIC_FLAG_PLAYING;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -199,47 +206,47 @@ s32 _bgm_set_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s
|
|||
variation = mapSongVariation;
|
||||
}
|
||||
|
||||
if (musicSetting->songID == songID && musicSetting->variation == variation) {
|
||||
if (music->requestedSongID == songID && music->variation == variation) {
|
||||
bgm_set_target_volume(volume);
|
||||
|
||||
if (musicSetting->flags & MUSIC_SETTINGS_FLAG_4) {
|
||||
func_80055B80(musicSetting->songName);
|
||||
musicSetting->flags &= ~MUSIC_SETTINGS_FLAG_4;
|
||||
if (music->flags & MUSIC_FLAG_PUSHING) {
|
||||
func_80055B80(music->songName);
|
||||
music->flags &= ~MUSIC_FLAG_PUSHING;
|
||||
}
|
||||
|
||||
return 2;
|
||||
}
|
||||
|
||||
MusicDefaultVolume = volume;
|
||||
musicSetting->songID = songID;
|
||||
musicSetting->variation = variation;
|
||||
musicSetting->fadeOutTime = fadeOutTime;
|
||||
musicSetting->state = MUSIC_STATE_1;
|
||||
musicSetting->flags &= ~MUSIC_SETTINGS_FLAG_ENABLE_PROXIMITY_MIX;
|
||||
music->requestedSongID = songID;
|
||||
music->variation = variation;
|
||||
music->fadeOutTime = fadeOutTime;
|
||||
music->state = MUSIC_STATE_STOP_CURRENT;
|
||||
music->flags &= ~MUSIC_FLAG_ENABLE_PROX_MIX;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
s32 bgm_set_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume) {
|
||||
gMusicSettings[playerIndex].flags &= ~MUSIC_SETTINGS_FLAG_8;
|
||||
gMusicControlData[playerIndex].flags &= ~MUSIC_FLAG_POPPING;
|
||||
|
||||
return _bgm_set_song(playerIndex, songID, variation, fadeOutTime, volume);
|
||||
}
|
||||
|
||||
s32 bgm_fade_in_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeInTime, s16 fadeStartVolume, s16 fadeEndVolume) {
|
||||
MusicSettings* musicSetting;
|
||||
b32 bgm_fade_in_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeInTime, s16 fadeStartVolume, s16 fadeEndVolume) {
|
||||
MusicControlData* music;
|
||||
s32 mapSongVariation;
|
||||
|
||||
if (gGameStatusPtr->demoState) {
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
musicSetting = &gMusicSettings[playerIndex];
|
||||
music = &gMusicControlData[playerIndex];
|
||||
|
||||
if (!gGameStatusPtr->musicEnabled) {
|
||||
snd_song_stop(musicSetting->songName);
|
||||
musicSetting->flags &= ~MUSIC_SETTINGS_FLAG_1;
|
||||
return 1;
|
||||
snd_song_stop(music->songName);
|
||||
music->flags &= ~MUSIC_FLAG_PLAYING;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
mapSongVariation = bgm_get_map_default_variation(songID);
|
||||
|
|
@ -247,71 +254,71 @@ s32 bgm_fade_in_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeInTime,
|
|||
variation = mapSongVariation;
|
||||
}
|
||||
|
||||
musicSetting->fadeInTime = fadeInTime;
|
||||
musicSetting->fadeStartVolume = fadeStartVolume;
|
||||
musicSetting->fadeEndVolume = fadeEndVolume;
|
||||
musicSetting->songID = songID;
|
||||
musicSetting->variation = variation;
|
||||
musicSetting->flags |= MUSIC_SETTINGS_FLAG_20;
|
||||
musicSetting->state = MUSIC_STATE_1;
|
||||
musicSetting->flags &= ~MUSIC_SETTINGS_FLAG_ENABLE_PROXIMITY_MIX;
|
||||
music->fadeInTime = fadeInTime;
|
||||
music->fadeStartVolume = fadeStartVolume;
|
||||
music->fadeEndVolume = fadeEndVolume;
|
||||
music->requestedSongID = songID;
|
||||
music->variation = variation;
|
||||
music->flags |= MUSIC_FLAG_FADE_IN_NEXT;
|
||||
music->state = MUSIC_STATE_STOP_CURRENT;
|
||||
music->flags &= ~MUSIC_FLAG_ENABLE_PROX_MIX;
|
||||
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
s32 bgm_adjust_proximity(s32 playerIndex, s32 mix, s16 state) {
|
||||
MusicSettings* musicSetting = &gMusicSettings[playerIndex];
|
||||
MusicControlData* music = &gMusicControlData[playerIndex];
|
||||
|
||||
if (!(musicSetting->flags & MUSIC_SETTINGS_FLAG_1)) {
|
||||
if (!(music->flags & MUSIC_FLAG_PLAYING)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!(musicSetting->flags & MUSIC_SETTINGS_FLAG_ENABLE_PROXIMITY_MIX)) {
|
||||
if (!(music->flags & MUSIC_FLAG_ENABLE_PROX_MIX)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
switch (state) {
|
||||
case MUSIC_PROXIMITY_FAR:
|
||||
snd_song_set_proximity_mix_far(musicSetting->songName, mix);
|
||||
snd_song_set_proximity_mix_far(music->songName, mix);
|
||||
break;
|
||||
case MUSIC_PROXIMITY_NEAR:
|
||||
snd_song_set_proximity_mix_near(musicSetting->songName, mix);
|
||||
snd_song_set_proximity_mix_near(music->songName, mix);
|
||||
break;
|
||||
case MUSIC_PROXIMITY_FULL:
|
||||
snd_song_set_proximity_mix_full(musicSetting->songName, mix);
|
||||
snd_song_set_proximity_mix_full(music->songName, mix);
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
AuResult bgm_set_track_volumes(s32 playerIndex, s16 trackVolSet) {
|
||||
MusicSettings* musicSetting = &gMusicSettings[playerIndex];
|
||||
MusicControlData* music = &gMusicControlData[playerIndex];
|
||||
|
||||
if (!(musicSetting->flags & MUSIC_SETTINGS_FLAG_1)) {
|
||||
if (!(music->flags & MUSIC_FLAG_PLAYING)) {
|
||||
return AU_RESULT_OK;
|
||||
}
|
||||
|
||||
return snd_song_set_track_volumes(musicSetting->songName, trackVolSet);
|
||||
return snd_song_set_track_volumes(music->songName, trackVolSet);
|
||||
}
|
||||
|
||||
AuResult bgm_clear_track_volumes(s32 playerIndex, s16 trackVolSet) {
|
||||
MusicSettings* musicSetting = &gMusicSettings[playerIndex];
|
||||
MusicControlData* music = &gMusicControlData[playerIndex];
|
||||
|
||||
if (!(musicSetting->flags & MUSIC_SETTINGS_FLAG_1)) {
|
||||
if (!(music->flags & MUSIC_FLAG_PLAYING)) {
|
||||
return AU_RESULT_OK;
|
||||
}
|
||||
|
||||
return snd_song_clear_track_volumes(musicSetting->songName, trackVolSet);
|
||||
return snd_song_clear_track_volumes(music->songName, trackVolSet);
|
||||
}
|
||||
|
||||
AuResult bgm_set_linked_mode(s32 playerIndex, s16 mode) {
|
||||
MusicSettings* musicSetting = &gMusicSettings[playerIndex];
|
||||
MusicControlData* music = &gMusicControlData[playerIndex];
|
||||
|
||||
if (!(musicSetting->flags & MUSIC_SETTINGS_FLAG_1)) {
|
||||
if (!(music->flags & MUSIC_FLAG_PLAYING)) {
|
||||
return AU_RESULT_OK;
|
||||
}
|
||||
|
||||
return snd_song_set_linked_mode(musicSetting->songName, mode);
|
||||
return snd_song_set_linked_mode(music->songName, mode);
|
||||
}
|
||||
|
||||
s32 bgm_init_music_players(void) {
|
||||
|
|
@ -358,76 +365,74 @@ void bgm_update_volume(void) {
|
|||
}
|
||||
|
||||
b32 bgm_is_any_song_playing(void) {
|
||||
MusicSettings* settings = gMusicSettings;
|
||||
MusicControlData* music = gMusicControlData;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(gMusicSettings); i++, settings++) {
|
||||
if (!(settings->flags & MUSIC_SETTINGS_FLAG_1)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (snd_song_is_playing(settings->songName)) {
|
||||
return TRUE;
|
||||
for (i = 0; i < ARRAY_COUNT(gMusicControlData); i++, music++) {
|
||||
if (music->flags & MUSIC_FLAG_PLAYING) {
|
||||
if (snd_song_is_playing(music->songName)) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void bgm_pop_song(void) {
|
||||
MusicSettings* musicSetting = gMusicSettings;
|
||||
MusicControlData* music = gMusicControlData;
|
||||
|
||||
if (gGameStatusPtr->demoState == DEMO_STATE_NONE) {
|
||||
musicSetting->flags |= MUSIC_SETTINGS_FLAG_8;
|
||||
_bgm_set_song(0, musicSetting->savedSongID, musicSetting->savedVariation, 0, VOL_LEVEL_FULL);
|
||||
music->flags |= MUSIC_FLAG_POPPING;
|
||||
_bgm_set_song(0, music->savedSongID, music->savedVariation, 0, VOL_LEVEL_FULL);
|
||||
}
|
||||
}
|
||||
|
||||
void bgm_push_song(s32 songID, s32 variation) {
|
||||
MusicSettings* musicSetting = gMusicSettings;
|
||||
MusicControlData* music = gMusicControlData;
|
||||
|
||||
if (gGameStatusPtr->demoState == DEMO_STATE_NONE) {
|
||||
musicSetting->savedSongID = musicSetting->songID;
|
||||
musicSetting->savedVariation = musicSetting->variation;
|
||||
musicSetting->savedSongName = musicSetting->songName;
|
||||
musicSetting->flags |= MUSIC_SETTINGS_FLAG_4;
|
||||
music->savedSongID = music->requestedSongID;
|
||||
music->savedVariation = music->variation;
|
||||
music->savedSongName = music->songName;
|
||||
music->flags |= MUSIC_FLAG_PUSHING;
|
||||
bgm_set_song(0, songID, variation, 500, VOL_LEVEL_FULL);
|
||||
}
|
||||
}
|
||||
|
||||
void bgm_pop_battle_song(void) {
|
||||
MusicSettings* musicSetting = gMusicSettings;
|
||||
MusicControlData* music = gMusicControlData;
|
||||
|
||||
if (gGameStatusPtr->demoState == DEMO_STATE_NONE) {
|
||||
if (gOverrideFlags & GLOBAL_OVERRIDES_DONT_RESUME_SONG_AFTER_BATTLE) {
|
||||
gOverrideFlags &= ~GLOBAL_OVERRIDES_DONT_RESUME_SONG_AFTER_BATTLE;
|
||||
} else {
|
||||
musicSetting->flags |= MUSIC_SETTINGS_FLAG_8;
|
||||
_bgm_set_song(0, musicSetting->savedSongID, musicSetting->savedVariation, 0, VOL_LEVEL_FULL);
|
||||
music->flags |= MUSIC_FLAG_POPPING;
|
||||
_bgm_set_song(0, music->savedSongID, music->savedVariation, 0, VOL_LEVEL_FULL);
|
||||
snd_ambient_resume(0, 250);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void bgm_push_battle_song(void) {
|
||||
MusicSettings* musicSetting = gMusicSettings;
|
||||
MusicControlData* music = gMusicControlData;
|
||||
|
||||
if (gGameStatusPtr->demoState == DEMO_STATE_NONE) {
|
||||
if (!(gOverrideFlags & GLOBAL_OVERRIDES_DONT_RESUME_SONG_AFTER_BATTLE)) {
|
||||
snd_ambient_pause(0, 250);
|
||||
musicSetting->savedSongID = musicSetting->songID;
|
||||
musicSetting->savedVariation = musicSetting->variation;
|
||||
musicSetting->savedSongName = musicSetting->songName;
|
||||
musicSetting->flags |= MUSIC_SETTINGS_FLAG_4;
|
||||
bgm_set_song(0, musicSetting->battleSongID, musicSetting->battleVariation, 500, VOL_LEVEL_FULL);
|
||||
music->savedSongID = music->requestedSongID;
|
||||
music->savedVariation = music->variation;
|
||||
music->savedSongName = music->songName;
|
||||
music->flags |= MUSIC_FLAG_PUSHING;
|
||||
bgm_set_song(0, music->battleSongID, music->battleVariation, 500, VOL_LEVEL_FULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void bgm_set_battle_song(s32 songID, s32 variation) {
|
||||
MusicSettings* musicSetting = gMusicSettings;
|
||||
MusicControlData* music = gMusicControlData;
|
||||
|
||||
musicSetting->battleSongID = songID;
|
||||
musicSetting->battleVariation = variation;
|
||||
music->battleSongID = songID;
|
||||
music->battleVariation = variation;
|
||||
}
|
||||
|
||||
void bgm_NOOP(void) {
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@ BGMPlayer* au_bgm_get_player_with_song_name(s32 songString) {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
AuResult au_bgm_dispatch_player_event(SongUpdateEventA* event) {
|
||||
AuResult au_bgm_process_init_song(SongUpdateRequestA* request) {
|
||||
BGMPlayer* player;
|
||||
BGMFileInfo* fileInfo;
|
||||
s32 songName;
|
||||
|
|
@ -144,13 +144,14 @@ AuResult au_bgm_dispatch_player_event(SongUpdateEventA* event) {
|
|||
u32 i;
|
||||
|
||||
status = AU_RESULT_OK;
|
||||
songName = event->songName;
|
||||
variation = event->variation;
|
||||
songName = request->songName;
|
||||
variation = request->variation;
|
||||
|
||||
if (songName != 0) {
|
||||
player = au_bgm_get_player_with_song_name(songName);
|
||||
if (player != NULL) {
|
||||
fileInfo = &player->bgmFile->info;
|
||||
duration = event->duration;
|
||||
duration = request->duration;
|
||||
if (duration != 0) {
|
||||
if (duration > SND_MAX_DURATION) {
|
||||
duration = SND_MAX_DURATION;
|
||||
|
|
@ -158,14 +159,14 @@ AuResult au_bgm_dispatch_player_event(SongUpdateEventA* event) {
|
|||
duration = SND_MIN_DURATION;
|
||||
}
|
||||
}
|
||||
volume0 = event->startVolume;
|
||||
volume0 = request->startVolume;
|
||||
if (volume0 > AU_MAX_VOLUME_8) {
|
||||
volume0 = AU_MAX_VOLUME_8;
|
||||
}
|
||||
if (volume0 != 0) {
|
||||
volume0 = AU_VOL_8_TO_16(volume0);
|
||||
}
|
||||
volume1 = event->finalVolume;
|
||||
volume1 = request->finalVolume;
|
||||
if (volume1 > AU_MAX_VOLUME_8) {
|
||||
volume1 = AU_MAX_VOLUME_8;
|
||||
}
|
||||
|
|
@ -203,6 +204,7 @@ AuResult au_bgm_dispatch_player_event(SongUpdateEventA* event) {
|
|||
player->drumsInfo = NULL;
|
||||
player->bgmDrumCount = 0;
|
||||
}
|
||||
|
||||
if (fileInfo->instruments != 0) {
|
||||
player->instrumentsInfo = AU_FILE_RELATIVE(player->bgmFile, fileInfo->instruments << 2);
|
||||
player->bgmInstrumentCount = fileInfo->instrumentCount;
|
||||
|
|
@ -210,6 +212,7 @@ AuResult au_bgm_dispatch_player_event(SongUpdateEventA* event) {
|
|||
player->instrumentsInfo = NULL;
|
||||
player->bgmInstrumentCount = 0;
|
||||
}
|
||||
|
||||
player->songName = songName;
|
||||
au_bgm_player_initialize(player);
|
||||
} else {
|
||||
|
|
@ -281,12 +284,12 @@ b32 au_bgm_player_is_active(BGMPlayer* player) {
|
|||
}
|
||||
}
|
||||
|
||||
AuResult func_8004DB4C(SongUpdateEventB* s) {
|
||||
AuResult au_bgm_process_fade_out(SongUpdateRequestB* request) {
|
||||
AuResult status;
|
||||
BGMPlayer* player;
|
||||
u32 songName = s->songName;
|
||||
u32 duration = s->duration;
|
||||
s16 volume = s->finalVolume;
|
||||
u32 songName = request->songName;
|
||||
u32 duration = request->duration;
|
||||
s16 volume = request->finalVolume;
|
||||
|
||||
status = AU_RESULT_OK;
|
||||
if (songName != 0) {
|
||||
|
|
@ -295,12 +298,12 @@ AuResult func_8004DB4C(SongUpdateEventB* s) {
|
|||
if (player != NULL) {
|
||||
if (player->songName == songName) {
|
||||
if (player->masterState != BGM_PLAY_STATE_IDLE) {
|
||||
if (!player->unk_220) {
|
||||
if (!player->paused) {
|
||||
player->fadeInfo.baseTarget = volume;
|
||||
player->fadeInfo.baseTicks = (duration * 1000) / AU_FRAME_USEC;
|
||||
player->fadeInfo.baseStep = ((volume << 0x10) - player->fadeInfo.baseVolume) / player->fadeInfo.baseTicks;
|
||||
player->fadeInfo.onCompleteCallback = s->callback;
|
||||
if (s->unk_14 == 1) {
|
||||
player->fadeInfo.onCompleteCallback = request->callback;
|
||||
if (request->onPush == 1) {
|
||||
player->fadeSongName = songName;
|
||||
}
|
||||
}
|
||||
|
|
@ -319,19 +322,19 @@ AuResult func_8004DB4C(SongUpdateEventB* s) {
|
|||
}
|
||||
|
||||
AuResult func_8004DC80(s32 songName) {
|
||||
SongUpdateEventC s;
|
||||
SongUpdateRequestC s;
|
||||
|
||||
s.songName = songName;
|
||||
s.duration = 0;
|
||||
s.startVolume = 0;
|
||||
s.finalVolume = 0;
|
||||
s.index = 0;
|
||||
s.unk_14 = 0;
|
||||
s.index = MUSIC_CROSS_FADE;
|
||||
s.pauseMode = FALSE;
|
||||
|
||||
return func_8004DCB8(&s, 0);
|
||||
return au_bgm_process_suspend(&s, 0);
|
||||
}
|
||||
|
||||
AuResult func_8004DCB8(SongUpdateEventC* update, s32 clearChanged) {
|
||||
AuResult au_bgm_process_suspend(SongUpdateRequestC* request, s32 clearChanged) {
|
||||
AuResult status;
|
||||
BGMPlayer* playerA;
|
||||
BGMPlayer* playerB;
|
||||
|
|
@ -340,29 +343,29 @@ AuResult func_8004DCB8(SongUpdateEventC* update, s32 clearChanged) {
|
|||
u32 i;
|
||||
u32 j;
|
||||
|
||||
songName = update->songName;
|
||||
index = update->index;
|
||||
songName = request->songName;
|
||||
index = request->index;
|
||||
status = AU_RESULT_OK;
|
||||
|
||||
if (songName != 0) {
|
||||
playerA = au_bgm_get_player_with_song_name(songName);
|
||||
if (playerA != NULL) {
|
||||
if (update->unk_14 == 0) {
|
||||
playerB = au_unk_80053F64(index);
|
||||
if (!request->pauseMode) {
|
||||
playerB = au_unk_get_temp_player_for_index(index);
|
||||
if (playerB != NULL) {
|
||||
if (songName == playerA->songName) {
|
||||
if (!clearChanged) {
|
||||
for (i = 0; i < ARRAY_COUNT(playerA->tracks); i++) {
|
||||
BGMPlayerTrack* track = &playerA->tracks[i];
|
||||
if (track->bgmReadPos != 0) {
|
||||
if (track->bgmReadPos != NULL) {
|
||||
for (j = track->firstVoice; j < track->lastVoice; j++) {
|
||||
track->changed.all = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
playerA->globals->unk_globals_6C[index].unk_5 = playerA->priority;
|
||||
playerA->globals->unk_globals_6C[index].unk_4 = 1;
|
||||
playerA->globals->unk_globals_6C[index].priority = playerA->priority;
|
||||
playerA->globals->unk_globals_6C[index].assigned = 1;
|
||||
playerA->fadeSongName = 0;
|
||||
au_copy_words(playerA, playerB, sizeof(*playerA));
|
||||
if (clearChanged == 0) {
|
||||
|
|
@ -375,7 +378,7 @@ AuResult func_8004DCB8(SongUpdateEventC* update, s32 clearChanged) {
|
|||
} else {
|
||||
if (songName == playerA->songName) {
|
||||
if (playerA->masterState != BGM_PLAY_STATE_IDLE) {
|
||||
playerA->unk_220 = TRUE;
|
||||
playerA->paused = TRUE;
|
||||
au_bgm_reset_all_voices(playerA);
|
||||
}
|
||||
}
|
||||
|
|
@ -389,7 +392,7 @@ AuResult func_8004DCB8(SongUpdateEventC* update, s32 clearChanged) {
|
|||
return status;
|
||||
}
|
||||
|
||||
AuResult func_8004DE2C(SongUpdateEventE* update) {
|
||||
AuResult au_bgm_process_resume(SongUpdateRequestE* request) {
|
||||
AuResult status;
|
||||
BGMPlayer* playerA;
|
||||
BGMPlayer* playerB;
|
||||
|
|
@ -399,19 +402,19 @@ AuResult func_8004DE2C(SongUpdateEventE* update) {
|
|||
s32 volume1;
|
||||
s32 duration;
|
||||
|
||||
songName = update->songName;
|
||||
index = update->index;
|
||||
songName = request->songName;
|
||||
index = request->index;
|
||||
status = AU_RESULT_OK;
|
||||
|
||||
if (songName != 0) {
|
||||
if (update->unk_14 == 0) {
|
||||
playerA = au_unk_80053F64(index);
|
||||
if (playerA != NULL && playerA->globals->unk_globals_6C[index].unk_4 == 1) {
|
||||
playerB = au_unk_80054248(playerA->globals->unk_globals_6C[index].unk_5);
|
||||
if (!request->pauseMode) {
|
||||
playerA = au_unk_get_temp_player_for_index(index);
|
||||
if (playerA != NULL && playerA->globals->unk_globals_6C[index].assigned == 1) {
|
||||
playerB = au_get_client_by_priority(playerA->globals->unk_globals_6C[index].priority);
|
||||
if (playerB != NULL) {
|
||||
if (!au_bgm_player_is_active(playerB)) {
|
||||
status = au_unk_80053E58(playerA->songID, playerA->bgmFile);
|
||||
duration = update->duration;
|
||||
duration = request->duration;
|
||||
if (duration != 0) {
|
||||
if (duration > SND_MAX_DURATION) {
|
||||
duration = SND_MAX_DURATION;
|
||||
|
|
@ -419,14 +422,14 @@ AuResult func_8004DE2C(SongUpdateEventE* update) {
|
|||
duration = SND_MIN_DURATION;
|
||||
}
|
||||
}
|
||||
volume0 = update->startVolume;
|
||||
volume0 = request->startVolume;
|
||||
if (volume0 > AU_MAX_VOLUME_8) {
|
||||
volume0 = AU_MAX_VOLUME_8;
|
||||
}
|
||||
if (volume0 != 0) {
|
||||
volume0 = AU_VOL_8_TO_16(volume0);
|
||||
}
|
||||
volume1 = update->finalVolume;
|
||||
volume1 = request->finalVolume;
|
||||
if (volume1 > AU_MAX_VOLUME_8) {
|
||||
volume1 = AU_MAX_VOLUME_8;
|
||||
}
|
||||
|
|
@ -455,8 +458,8 @@ AuResult func_8004DE2C(SongUpdateEventE* update) {
|
|||
playerB = au_bgm_get_player_with_song_name(songName);
|
||||
if (playerB != NULL) {
|
||||
if (songName == playerB->songName) {
|
||||
if (playerB->unk_220) {
|
||||
playerB->unk_220 = FALSE;
|
||||
if (playerB->paused) {
|
||||
playerB->paused = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -499,14 +502,14 @@ void func_8004DFD4(AuGlobals* globals) {
|
|||
globals->unk_80 = 0;
|
||||
}
|
||||
|
||||
AuResult au_bgm_adjust_volume(SongUpdateEventA* update) {
|
||||
AuResult au_bgm_adjust_volume(SongUpdateRequestA* request) {
|
||||
BGMPlayer* player;
|
||||
AuResult status = AU_RESULT_OK;
|
||||
|
||||
if (update->songName != 0) {
|
||||
player = au_bgm_get_player_with_song_name(update->songName);
|
||||
if (request->songName != 0) {
|
||||
player = au_bgm_get_player_with_song_name(request->songName);
|
||||
if (player != NULL) {
|
||||
au_unk_80053B04(&player->fadeInfo, update->duration, update->finalVolume);
|
||||
au_fade_calc_envelope(&player->fadeInfo, request->duration, request->finalVolume);
|
||||
}
|
||||
else {
|
||||
status = AU_ERROR_SONG_NOT_PLAYING;
|
||||
|
|
@ -542,7 +545,7 @@ void au_bgm_player_init(BGMPlayer* player, s32 priority, s32 busID, AuGlobals* g
|
|||
player->masterVolumeStep = 0;
|
||||
player->masterPitchShift = 0;
|
||||
player->detune = 0;
|
||||
player->unk_220 = FALSE;
|
||||
player->paused = FALSE;
|
||||
player->trackVolsConfig = NULL;
|
||||
player->bFadeConfigSetsVolume = FALSE;
|
||||
player->masterState = BGM_PLAY_STATE_IDLE;
|
||||
|
|
@ -591,7 +594,7 @@ void au_bgm_player_init(BGMPlayer* player, s32 priority, s32 busID, AuGlobals* g
|
|||
note->pendingTick = FALSE;
|
||||
}
|
||||
|
||||
au_fade_set_vol_scale(&player->fadeInfo, AU_MAX_VOLUME_16);
|
||||
au_fade_set_envelope(&player->fadeInfo, AU_MAX_VOLUME_16);
|
||||
snd_bgm_clear_legacy_commands(player);
|
||||
}
|
||||
|
||||
|
|
@ -667,7 +670,7 @@ s32 au_bgm_player_audio_frame_update(BGMPlayer* player) {
|
|||
hasMore = FALSE;
|
||||
break;
|
||||
case BGM_PLAY_STATE_ACTIVE:
|
||||
if (!player->unk_220) {
|
||||
if (!player->paused) {
|
||||
au_bgm_player_update_playing(player);
|
||||
if (player->masterState == BGM_PLAY_STATE_ACTIVE) {
|
||||
hasMore = FALSE;
|
||||
|
|
@ -789,7 +792,7 @@ void au_bgm_player_initialize(BGMPlayer* player) {
|
|||
player->effectValues[i] = 0;
|
||||
}
|
||||
|
||||
player->unk_220 = FALSE;
|
||||
player->paused = FALSE;
|
||||
player->songPlayingCounter = 0;
|
||||
for (i = 0; i < ARRAY_COUNT(player->compLoopStartLabels); i++) {
|
||||
player->compLoopStartLabels[i] = player->compReadPos;
|
||||
|
|
@ -990,7 +993,7 @@ void au_bgm_load_phrase(BGMPlayer* player, u32 cmd) {
|
|||
void au_bgm_player_update_stop(BGMPlayer* player) {
|
||||
s32 i;
|
||||
|
||||
player->unk_220 = FALSE;
|
||||
player->paused = FALSE;
|
||||
player->songName = 0;
|
||||
player->fadeSongName = 0;
|
||||
player->unk_58 = FALSE;
|
||||
|
|
@ -2053,7 +2056,7 @@ void au_bgm_reset_all_voices(BGMPlayer* player) {
|
|||
}
|
||||
}
|
||||
|
||||
AuResult au_bgm_set_linked_tracks(SongUpdateEventD* update) {
|
||||
AuResult au_bgm_set_linked_tracks(SongUpdateRequestD* request) {
|
||||
BGMPlayer* player;
|
||||
BGMPlayerTrack* track;
|
||||
BGMPlayerTrack* linkTrack;
|
||||
|
|
@ -2062,8 +2065,8 @@ AuResult au_bgm_set_linked_tracks(SongUpdateEventD* update) {
|
|||
s32 voiceIdx;
|
||||
s8 oldVolume;
|
||||
|
||||
s32 songName = update->songName;
|
||||
s32 linkIndex = update->mode;
|
||||
s32 songName = request->songName;
|
||||
s32 linkIndex = request->mode;
|
||||
AuResult status = AU_RESULT_OK;
|
||||
|
||||
if (songName != 0) {
|
||||
|
|
|
|||
|
|
@ -52,17 +52,17 @@ void au_fade_clear(Fade* fade);
|
|||
void au_fade_update(Fade* fade);
|
||||
void au_fade_set_volume(u8 arg0, u16 arg1, s32 arg2);
|
||||
void au_fade_flush(Fade* fade);
|
||||
void au_fade_set_vol_scale(Fade* fade, s16 value);
|
||||
void au_unk_80053B04(Fade* fade, u32 arg1, s32 target);
|
||||
void au_fade_set_envelope(Fade* fade, s16 value);
|
||||
void au_fade_calc_envelope(Fade* fade, u32 arg1, s32 target);
|
||||
void au_fade_update_envelope(Fade* fade);
|
||||
Instrument* au_get_instrument(AuGlobals* globals, BankSetIndex bank, s32 patch, EnvelopeData* arg3);
|
||||
void au_get_bgm_player_and_file(u32 playerIndex, BGMHeader** outCurrentTrackData, BGMPlayer** outPlayer);
|
||||
void au_get_bgm_player(u32 playerIndex, BGMPlayer** outPlayer);
|
||||
AuResult au_load_song_files(u32 arg0, BGMHeader* arg1, BGMPlayer* arg2);
|
||||
AuResult au_unk_80053E58(s32 songID, BGMHeader* arg1);
|
||||
BGMPlayer* au_unk_80053F64(s32 arg0);
|
||||
BGMPlayer* au_unk_get_temp_player_for_index(s32 arg0);
|
||||
AuResult au_ambient_load(u32 arg0);
|
||||
BGMPlayer* au_unk_80054248(u8 arg0);
|
||||
BGMPlayer* au_get_client_by_priority(u8 arg0);
|
||||
void au_load_INIT(AuGlobals* arg0, s32 romAddr, ALHeap* heap);
|
||||
AuResult au_fetch_SBN_file(u32 fileIdx, AuFileFormat format, SBNFileEntry* arg2);
|
||||
void au_load_PER(AuGlobals* globals, s32 romAddr);
|
||||
|
|
|
|||
|
|
@ -78,8 +78,8 @@ void au_engine_init(s32 outputRate) {
|
|||
globals->audioThreadCallbacks[1] = NULL;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(globals->unk_globals_6C); i++) {
|
||||
globals->unk_globals_6C[i].unk_4 = 0;
|
||||
globals->unk_globals_6C[i].unk_5 = 0;
|
||||
globals->unk_globals_6C[i].assigned = 0;
|
||||
globals->unk_globals_6C[i].priority = 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(globals->effectChanges); i++) {
|
||||
|
|
@ -460,14 +460,14 @@ void au_fade_flush(Fade* fade) {
|
|||
}
|
||||
}
|
||||
|
||||
void au_fade_set_vol_scale(Fade* fade, s16 value) {
|
||||
void au_fade_set_envelope(Fade* fade, s16 value) {
|
||||
fade->envelopeVolume = value << 16;
|
||||
fade->envelopeTarget = value;
|
||||
fade->envelopeTicks = 0;
|
||||
fade->envelopeStep = 0;
|
||||
}
|
||||
|
||||
void au_unk_80053B04(Fade* fade, u32 duration, s32 target) {
|
||||
void au_fade_calc_envelope(Fade* fade, u32 duration, s32 target) {
|
||||
s16 ticks;
|
||||
s32 delta;
|
||||
|
||||
|
|
@ -619,23 +619,25 @@ AuResult au_unk_80053E58(s32 songID, BGMHeader* bgmFile) {
|
|||
SBNFileEntry fileEntry;
|
||||
SBNFileEntry sbnEntry;
|
||||
SBNFileEntry* bkFileEntry;
|
||||
AuGlobals* soundData;
|
||||
AuGlobals* globals;
|
||||
InitSongEntry* songInfo;
|
||||
s32 i;
|
||||
u16 bkFileIndex;
|
||||
|
||||
soundData = gSoundGlobals;
|
||||
songInfo = &soundData->songList[songID];
|
||||
status = au_fetch_SBN_file(songInfo[0].bgmFileIndex, AU_FMT_BGM, &sbnEntry);
|
||||
globals = gSoundGlobals;
|
||||
songInfo = &globals->songList[songID];
|
||||
status = au_fetch_SBN_file(songInfo->bgmFileIndex, AU_FMT_BGM, &sbnEntry);
|
||||
if (status == AU_RESULT_OK) {
|
||||
// load BGM file
|
||||
au_read_rom(sbnEntry.offset, bgmFile, sbnEntry.data & 0xFFFFFF);
|
||||
|
||||
// load any auxiliary banks required by this BGM
|
||||
for (i = 0; i < ARRAY_COUNT(songInfo->bkFileIndex); i++) {
|
||||
bkFileIndex = songInfo->bkFileIndex[i];
|
||||
if (bkFileIndex != 0) {
|
||||
bkFileEntry = &soundData->sbnFileList[bkFileIndex];
|
||||
bkFileEntry = &globals->sbnFileList[bkFileIndex];
|
||||
|
||||
fileEntry.offset = (bkFileEntry->offset & 0xFFFFFF) + soundData->baseRomOffset;
|
||||
fileEntry.offset = (bkFileEntry->offset & 0xFFFFFF) + globals->baseRomOffset;
|
||||
fileEntry.data = bkFileEntry->data;
|
||||
|
||||
if ((fileEntry.data >> 0x18) == AU_FMT_BK) {
|
||||
|
|
@ -650,9 +652,9 @@ AuResult au_unk_80053E58(s32 songID, BGMHeader* bgmFile) {
|
|||
return status;
|
||||
}
|
||||
|
||||
BGMPlayer* au_unk_80053F64(s32 variation) {
|
||||
if (variation == 0) {
|
||||
return gSoundGlobals->unk_globals_6C[0].bgmPlayer;
|
||||
BGMPlayer* au_unk_get_temp_player_for_index(s32 index) {
|
||||
if (index == MUSIC_CROSS_FADE) {
|
||||
return gSoundGlobals->unk_globals_6C[MUSIC_CROSS_FADE].bgmPlayer;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -726,13 +728,13 @@ AuResult au_ambient_load(u32 ambSoundID) {
|
|||
return AU_RESULT_OK;
|
||||
}
|
||||
|
||||
BGMPlayer* au_unk_80054248(u8 arg0) {
|
||||
switch (arg0) {
|
||||
case 1:
|
||||
BGMPlayer* au_get_client_by_priority(u8 priority) {
|
||||
switch (priority) {
|
||||
case AU_PRIORITY_BGM_PLAYER_MAIN:
|
||||
return gBGMPlayerA;
|
||||
case 2:
|
||||
case AU_PRIORITY_BGM_PLAYER_AUX:
|
||||
return gBGMPlayerB;
|
||||
case 4:
|
||||
case AU_PRIORITY_SFX_MANAGER:
|
||||
return (BGMPlayer*)gSoundManager; // TODO: why return pointer to SoundManager?
|
||||
default:
|
||||
return NULL;
|
||||
|
|
|
|||
|
|
@ -48,17 +48,17 @@ s16 au_sfx_manager_audio_frame_update(SoundManager* manager);
|
|||
// ----------------------------------------------------------------------------------
|
||||
void au_bgm_begin_video_frame(BGMPlayer* player);
|
||||
BGMPlayer* au_bgm_get_player_with_song_name(s32 songString);
|
||||
AuResult au_bgm_dispatch_player_event(SongUpdateEventA* event);
|
||||
AuResult au_bgm_process_init_song(SongUpdateRequestA* event);
|
||||
AuResult au_bgm_stop_song(s32 songName);
|
||||
void au_bgm_stop_all(void);
|
||||
AuResult au_bgm_is_song_playing(s32 songName);
|
||||
b32 au_bgm_player_is_active(BGMPlayer* player);
|
||||
AuResult func_8004DB4C(SongUpdateEventB* s);
|
||||
AuResult au_bgm_process_fade_out(SongUpdateRequestB* s);
|
||||
AuResult func_8004DC80(s32 songName);
|
||||
AuResult func_8004DCB8(SongUpdateEventC* update, s32 clearChanged);
|
||||
AuResult func_8004DE2C(SongUpdateEventE* update);
|
||||
AuResult au_bgm_process_suspend(SongUpdateRequestC* update, s32 clearChanged);
|
||||
AuResult au_bgm_process_resume(SongUpdateRequestE* update);
|
||||
void func_8004DFD4(AuGlobals* globals);
|
||||
AuResult au_bgm_adjust_volume(SongUpdateEventA* update);
|
||||
AuResult au_bgm_adjust_volume(SongUpdateRequestA* update);
|
||||
void au_bgm_player_init(BGMPlayer* player, s32 arg1, s32 arg2, AuGlobals* arg3);
|
||||
void au_bgm_set_effect_indices(BGMPlayer* player, u8* list);
|
||||
void au_bgm_update_fade(BGMPlayer* player);
|
||||
|
|
@ -107,7 +107,7 @@ void au_bgm_change_track_volume(BGMPlayer* player, s32 trackIdx, s16 arg2, u8 ar
|
|||
void au_bgm_set_track_volumes(BGMPlayer* player, u8* arg1, s32 arg2);
|
||||
void au_bgm_set_prox_mix_fade(BGMPlayer* player, BGMPlayerTrack* track, s32 target, s32 duration);
|
||||
void au_bgm_reset_all_voices(BGMPlayer* player);
|
||||
AuResult au_bgm_set_linked_tracks(SongUpdateEventD* arg0);
|
||||
AuResult au_bgm_set_linked_tracks(SongUpdateRequestD* arg0);
|
||||
|
||||
// ----------------------------------------------------------------------------------
|
||||
// snd_interface.c
|
||||
|
|
@ -140,20 +140,20 @@ void snd_ambient_radio_setup(s32 arg0);
|
|||
AuResult snd_ambient_radio_stop(s32 arg0);
|
||||
AuResult snd_ambient_radio_select(s32 arg0);
|
||||
AuResult snd_song_load(s32 songID, s32 playerIndex);
|
||||
AuResult snd_song_start_default(s32 songName);
|
||||
AuResult snd_song_start_variation(s32 songName, s32 variation);
|
||||
AuResult snd_song_request_play_default(s32 songName);
|
||||
AuResult snd_song_request_play(s32 songName, s32 variation);
|
||||
AuResult snd_song_stop(s32 songName);
|
||||
void snd_song_stop_all(void);
|
||||
AuResult snd_song_is_playing(s32 songName);
|
||||
AuResult snd_song_set_variation_fade(s32 songName, s32 variation, s32 fadeInTime, s32 startVolume, s32 endVolume);
|
||||
AuResult snd_song_set_default_fade(s32 songName, s32 fadeInTime, s32 startVolume, s32 endVolume);
|
||||
AuResult snd_song_set_variation_fade_time(s32 songName, s32 fadeTime, AuCallback callback);
|
||||
AuResult func_80055AF0(s32 songName);
|
||||
AuResult func_80055B28(s32 songName);
|
||||
AuResult snd_song_request_fade_in(s32 songName, s32 variation, s32 fadeInTime, s32 startVolume, s32 endVolume);
|
||||
AuResult snd_song_request_fade_in_default(s32 songName, s32 fadeInTime, s32 startVolume, s32 endVolume);
|
||||
AuResult snd_song_request_fade_out(s32 songName, s32 fadeTime, AuCallback callback);
|
||||
AuResult snd_song_UNK_push_stop(s32 songName);
|
||||
AuResult snd_song_UNK_request_pop(s32 songName);
|
||||
AuResult func_80055B80(s32 songName);
|
||||
AuResult func_80055BB8(s32 songName, s32 fadeTime);
|
||||
AuResult func_80055BF0(s32 songName);
|
||||
AuResult func_80055C2C(s32 songName);
|
||||
AuResult snd_song_UNK_request_push_fade_out(s32 songName, s32 fadeTime);
|
||||
AuResult snd_song_request_pause(s32 songName);
|
||||
AuResult snd_song_request_unpause(s32 songName);
|
||||
AuResult snd_song_set_volume_quiet(s32 songName);
|
||||
AuResult snd_song_set_volume_full(s32 songName);
|
||||
AuResult snd_song_set_linked_mode(s32 songName, s32 mode);
|
||||
|
|
|
|||
|
|
@ -31,21 +31,22 @@ AuResult snd_ambient_enable(s32 arg0);
|
|||
void snd_ambient_radio_setup(s32 arg0);
|
||||
AuResult snd_ambient_radio_stop(s32 arg0);
|
||||
AuResult snd_ambient_radio_select(s32 arg0);
|
||||
/// return value may be either an AuResult error code OR a valid songName
|
||||
AuResult snd_song_load(s32 songID, s32 playerIndex);
|
||||
AuResult snd_song_start_default(s32 songName);
|
||||
AuResult snd_song_start_variation(s32 songName, s32 variation);
|
||||
AuResult snd_song_request_play_default(s32 songName);
|
||||
AuResult snd_song_request_play(s32 songName, s32 variation);
|
||||
AuResult snd_song_stop(s32 songName);
|
||||
void snd_song_stop_all(void);
|
||||
AuResult snd_song_is_playing(s32 songName);
|
||||
AuResult snd_song_set_variation_fade(s32 songName, s32 variation, s32 fadeInTime, s32 startVolume, s32 endVolume);
|
||||
AuResult snd_song_set_default_fade(s32 songName, s32 fadeInTime, s32 startVolume, s32 endVolume);
|
||||
AuResult snd_song_set_variation_fade_time(s32 songName, s32 fadeTime, AuCallback callback);
|
||||
AuResult func_80055AF0(s32 songName);
|
||||
AuResult func_80055B28(s32 songName);
|
||||
AuResult snd_song_request_fade_in(s32 songName, s32 variation, s32 fadeInTime, s32 startVolume, s32 endVolume);
|
||||
AuResult snd_song_request_fade_in_default(s32 songName, s32 fadeInTime, s32 startVolume, s32 endVolume);
|
||||
AuResult snd_song_request_fade_out(s32 songName, s32 fadeTime, AuCallback callback);
|
||||
AuResult snd_song_UNK_push_stop(s32 songName);
|
||||
AuResult snd_song_UNK_request_pop(s32 songName);
|
||||
AuResult func_80055B80(s32 songName);
|
||||
AuResult func_80055BB8(s32 songName, s32 fadeTime);
|
||||
AuResult func_80055BF0(s32 songName);
|
||||
AuResult func_80055C2C(s32 songName);
|
||||
AuResult snd_song_UNK_request_push_fade_out(s32 songName, s32 fadeTime);
|
||||
AuResult snd_song_request_pause(s32 songName);
|
||||
AuResult snd_song_request_unpause(s32 songName);
|
||||
AuResult snd_song_set_volume_quiet(s32 songName);
|
||||
AuResult snd_song_set_volume_full(s32 songName);
|
||||
AuResult snd_song_set_linked_mode(s32 songName, s32 mode);
|
||||
|
|
@ -89,9 +90,9 @@ s32 bgm_set_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s1
|
|||
void bgm_set_battle_song(s32, s32);
|
||||
void bgm_push_battle_song(void);
|
||||
s32 bgm_adjust_proximity(s32 playerIndex, s32 arg1, s16 arg2);
|
||||
s32 bgm_fade_in_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeInTime, s16 arg4, s16 arg5);
|
||||
b32 bgm_fade_in_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeInTime, s16 arg4, s16 arg5);
|
||||
|
||||
void bgm_update_music_settings(void);
|
||||
void bgm_update_music_control(void);
|
||||
b32 bgm_is_any_song_playing(void);
|
||||
void bgm_reset_sequence_players(void);
|
||||
void bgm_pop_song(void);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,11 @@
|
|||
|
||||
static u8* snd_song_get_track_volumes_set(MusicTrackVols arg0);
|
||||
|
||||
/// While TRUE, the audio thread skips BGM player updates.
|
||||
/// Used by the game thread to lock out BGM updates while modifying player state,
|
||||
/// to prevent race conditions.
|
||||
s32 PreventBGMPlayerUpdate = FALSE;
|
||||
|
||||
u16 SoundEngineReady = 0;
|
||||
u16 AmbienceRadioChannel = 0;
|
||||
|
||||
|
|
@ -126,7 +130,7 @@ void snd_legacy_sound_dispatch(u32 id) {
|
|||
s32 filename = snd_song_load((id >> 4) & 0xFF, 0);
|
||||
|
||||
if (filename > ASCII_TO_U32('0', ' ', ' ', '\0')) {
|
||||
snd_song_start_variation(filename, (id >> 0xC) & 3);
|
||||
snd_song_request_play(filename, (id >> 0xC) & 3);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -135,7 +139,7 @@ void snd_legacy_sound_dispatch(u32 id) {
|
|||
}
|
||||
|
||||
/// Part of an unused system for inter-thread communication with a BGM player using commands.
|
||||
/// Use functions in bgm_control to manipualte gMusicSettings instead.
|
||||
/// Use functions in bgm_control to manipualte gMusicControlData instead.
|
||||
void snd_bgm_clear_legacy_commands(BGMPlayer* player) {
|
||||
s32 i;
|
||||
|
||||
|
|
@ -151,7 +155,7 @@ void snd_bgm_clear_legacy_commands(BGMPlayer* player) {
|
|||
|
||||
/// Unused
|
||||
/// Part of an unused system for inter-thread communication with a BGM player using commands.
|
||||
/// Use functions in bgm_control to manipualte gMusicSettings instead.
|
||||
/// Use functions in bgm_control to manipualte gMusicControlData instead.
|
||||
void snd_bgm_enqueue_legacy_command(u32 cmd) {
|
||||
BGMPlayer* player = NULL;
|
||||
u32 playerID = cmd & 0xF;
|
||||
|
|
@ -454,26 +458,28 @@ AuResult snd_song_load(s32 songID, s32 playerIndex) {
|
|||
}
|
||||
}
|
||||
|
||||
AuResult snd_song_start_default(s32 songName) {
|
||||
/// Unused -- snd_song_request_play but always uses BGM_VARIATION_0
|
||||
AuResult snd_song_request_play_default(s32 songName) {
|
||||
AuResult status;
|
||||
SongUpdateEventA s;
|
||||
SongUpdateRequestA s;
|
||||
|
||||
PreventBGMPlayerUpdate = TRUE;
|
||||
s.songName = songName;
|
||||
s.duration = 0;
|
||||
s.startVolume = AU_MAX_VOLUME_8;
|
||||
s.finalVolume = AU_MAX_VOLUME_8;
|
||||
s.variation = 0;
|
||||
s.variation = BGM_VARIATION_0;
|
||||
s.unk_14 = 0;
|
||||
status = au_bgm_dispatch_player_event(&s);
|
||||
status = au_bgm_process_init_song(&s);
|
||||
PreventBGMPlayerUpdate = FALSE;
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
AuResult snd_song_start_variation(s32 songName, s32 variation) {
|
||||
/// Called from bgm_control to start playing a particular song + variation
|
||||
AuResult snd_song_request_play(s32 songName, s32 variation) {
|
||||
AuResult status;
|
||||
SongUpdateEventA s;
|
||||
SongUpdateRequestA s;
|
||||
|
||||
PreventBGMPlayerUpdate = TRUE;
|
||||
s.songName = songName;
|
||||
|
|
@ -482,7 +488,7 @@ AuResult snd_song_start_variation(s32 songName, s32 variation) {
|
|||
s.finalVolume = AU_MAX_VOLUME_8;
|
||||
s.variation = variation;
|
||||
s.unk_14 = 0;
|
||||
status = au_bgm_dispatch_player_event(&s);
|
||||
status = au_bgm_process_init_song(&s);
|
||||
PreventBGMPlayerUpdate = FALSE;
|
||||
|
||||
return status;
|
||||
|
|
@ -500,9 +506,10 @@ AuResult snd_song_is_playing(s32 songName) {
|
|||
return au_bgm_is_song_playing(songName);
|
||||
}
|
||||
|
||||
AuResult snd_song_set_variation_fade(s32 songName, s32 variation, s32 fadeInTime, s32 startVolume, s32 endVolume) {
|
||||
/// Called from bgm_control to fade in a particular song + variation
|
||||
AuResult snd_song_request_fade_in(s32 songName, s32 variation, s32 fadeInTime, s32 startVolume, s32 endVolume) {
|
||||
AuResult status;
|
||||
SongUpdateEventA s;
|
||||
SongUpdateRequestA s;
|
||||
|
||||
PreventBGMPlayerUpdate = TRUE;
|
||||
s.songName = songName;
|
||||
|
|
@ -511,15 +518,16 @@ AuResult snd_song_set_variation_fade(s32 songName, s32 variation, s32 fadeInTime
|
|||
s.finalVolume = endVolume;
|
||||
s.variation = variation;
|
||||
s.unk_14 = 0;
|
||||
status = au_bgm_dispatch_player_event(&s);
|
||||
status = au_bgm_process_init_song(&s);
|
||||
PreventBGMPlayerUpdate = FALSE;
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
AuResult snd_song_set_default_fade(s32 songName, s32 fadeInTime, s32 startVolume, s32 endVolume) {
|
||||
/// Unused
|
||||
AuResult snd_song_request_fade_in_default(s32 songName, s32 fadeInTime, s32 startVolume, s32 endVolume) {
|
||||
AuResult status;
|
||||
SongUpdateEventA s;
|
||||
SongUpdateRequestA s;
|
||||
|
||||
PreventBGMPlayerUpdate = TRUE;
|
||||
s.songName = songName;
|
||||
|
|
@ -528,109 +536,109 @@ AuResult snd_song_set_default_fade(s32 songName, s32 fadeInTime, s32 startVolume
|
|||
s.finalVolume = endVolume;
|
||||
s.variation = 0;
|
||||
s.unk_14 = 0;
|
||||
status = au_bgm_dispatch_player_event(&s);
|
||||
status = au_bgm_process_init_song(&s);
|
||||
PreventBGMPlayerUpdate = FALSE;
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
AuResult snd_song_set_variation_fade_time(s32 songName, s32 fadeTime, AuCallback callback) {
|
||||
SongUpdateEventB s;
|
||||
AuResult snd_song_request_fade_out(s32 songName, s32 fadeTime, AuCallback callback) {
|
||||
SongUpdateRequestB s;
|
||||
|
||||
s.songName = songName;
|
||||
s.duration = fadeTime;
|
||||
s.unk_08 = 0;
|
||||
s.finalVolume = 0;
|
||||
s.callback = callback;
|
||||
s.unk_14 = 0;
|
||||
s.onPush = 0;
|
||||
|
||||
return func_8004DB4C(&s);
|
||||
return au_bgm_process_fade_out(&s);
|
||||
}
|
||||
|
||||
AuResult func_80055AF0(s32 songName) {
|
||||
SongUpdateEventC s;
|
||||
AuResult snd_song_UNK_push_stop(s32 songName) {
|
||||
SongUpdateRequestC s;
|
||||
|
||||
s.songName = songName;
|
||||
s.duration = 0;
|
||||
s.startVolume = 0;
|
||||
s.finalVolume = 0;
|
||||
s.index = 0;
|
||||
s.unk_14 = 0;
|
||||
s.index = MUSIC_CROSS_FADE;
|
||||
s.pauseMode = FALSE;
|
||||
|
||||
return func_8004DCB8(&s, 0);
|
||||
return au_bgm_process_suspend(&s, 0);
|
||||
}
|
||||
|
||||
AuResult func_80055B28(s32 songName) {
|
||||
AuResult snd_song_UNK_request_pop(s32 songName) {
|
||||
AuResult status;
|
||||
SongUpdateEventE s;
|
||||
SongUpdateRequestE s;
|
||||
|
||||
PreventBGMPlayerUpdate = TRUE;
|
||||
s.songName = songName;
|
||||
s.duration = 2000;
|
||||
s.startVolume = 1;
|
||||
s.finalVolume = AU_MAX_VOLUME_8;
|
||||
s.index = 0;
|
||||
s.unk_14 = 0;
|
||||
status = func_8004DE2C(&s);
|
||||
s.index = MUSIC_CROSS_FADE;
|
||||
s.pauseMode = FALSE;
|
||||
status = au_bgm_process_resume(&s);
|
||||
PreventBGMPlayerUpdate = FALSE;
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
AuResult func_80055B80(s32 songName) {
|
||||
SongUpdateEventC s;
|
||||
SongUpdateRequestC s;
|
||||
|
||||
s.songName = songName;
|
||||
s.duration = 0;
|
||||
s.startVolume = 0;
|
||||
s.finalVolume = 0;
|
||||
s.index = 0;
|
||||
s.unk_14 = 0;
|
||||
s.index = MUSIC_CROSS_FADE;
|
||||
s.pauseMode = FALSE;
|
||||
|
||||
return func_8004DCB8(&s, 1);
|
||||
return au_bgm_process_suspend(&s, 1);
|
||||
}
|
||||
|
||||
AuResult func_80055BB8(s32 songName, s32 fadeTime) {
|
||||
SongUpdateEventB s;
|
||||
AuResult snd_song_UNK_request_push_fade_out(s32 songName, s32 fadeTime) {
|
||||
SongUpdateRequestB s;
|
||||
|
||||
s.songName = songName;
|
||||
s.duration = fadeTime;
|
||||
s.unk_08 = 0;
|
||||
s.finalVolume = 0;
|
||||
s.callback = NULL;
|
||||
s.unk_14 = 1;
|
||||
s.onPush = 1;
|
||||
|
||||
return func_8004DB4C(&s);
|
||||
return au_bgm_process_fade_out(&s);
|
||||
}
|
||||
|
||||
AuResult func_80055BF0(s32 songName) {
|
||||
SongUpdateEventC s;
|
||||
AuResult snd_song_request_pause(s32 songName) {
|
||||
SongUpdateRequestC s;
|
||||
|
||||
s.songName = songName;
|
||||
s.duration = 0;
|
||||
s.startVolume = 0;
|
||||
s.finalVolume = 0;
|
||||
s.index = 0;
|
||||
s.unk_14 = 1;
|
||||
s.index = MUSIC_CROSS_FADE;
|
||||
s.pauseMode = TRUE;
|
||||
|
||||
return func_8004DCB8(&s, 0);
|
||||
return au_bgm_process_suspend(&s, 0);
|
||||
}
|
||||
|
||||
AuResult func_80055C2C(s32 songName) {
|
||||
SongUpdateEventE s;
|
||||
AuResult snd_song_request_unpause(s32 songName) {
|
||||
SongUpdateRequestE s;
|
||||
|
||||
s.songName = songName;
|
||||
s.duration = 0;
|
||||
s.startVolume = 0;
|
||||
s.finalVolume = 0;
|
||||
s.index = 0;
|
||||
s.unk_14 = 1;
|
||||
s.index = MUSIC_CROSS_FADE;
|
||||
s.pauseMode = TRUE;
|
||||
|
||||
return func_8004DE2C(&s);
|
||||
return au_bgm_process_resume(&s);
|
||||
}
|
||||
|
||||
AuResult snd_song_set_volume_quiet(s32 songName) {
|
||||
SongUpdateEventA s;
|
||||
SongUpdateRequestA s;
|
||||
|
||||
s.songName = songName;
|
||||
s.duration = 500;
|
||||
|
|
@ -640,7 +648,7 @@ AuResult snd_song_set_volume_quiet(s32 songName) {
|
|||
}
|
||||
|
||||
AuResult snd_song_set_volume_full(s32 songName) {
|
||||
SongUpdateEventA s;
|
||||
SongUpdateRequestA s;
|
||||
|
||||
s.songName = songName;
|
||||
s.duration = 500;
|
||||
|
|
@ -650,7 +658,7 @@ AuResult snd_song_set_volume_full(s32 songName) {
|
|||
}
|
||||
|
||||
AuResult snd_song_set_linked_mode(s32 songName, s32 mode) {
|
||||
SongUpdateEventD s;
|
||||
SongUpdateRequestD s;
|
||||
|
||||
s.songName = songName;
|
||||
s.mode = mode;
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ typedef struct {
|
|||
/* 0xC */ s32 unkC;
|
||||
} AmbientSoundSettings;
|
||||
|
||||
BSS MusicSettings gMusicSettings[2];
|
||||
BSS MusicControlData gMusicControlData[2];
|
||||
BSS IMG_BIN D_80159B50[0x200];
|
||||
BSS Window gWindows[64];
|
||||
BSS CollisionStatus gCollisionStatus;
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ API_CALLABLE(EnableMusicProximityMix) {
|
|||
Bytecode* args = script->ptrReadPos;
|
||||
s32 playerIndex = evt_get_variable(script, *args++);
|
||||
|
||||
gMusicSettings[playerIndex].flags |= MUSIC_SETTINGS_FLAG_ENABLE_PROXIMITY_MIX;
|
||||
gMusicControlData[playerIndex].flags |= MUSIC_FLAG_ENABLE_PROX_MIX;
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ void step_game_loop(void) {
|
|||
step_current_game_mode();
|
||||
update_entities();
|
||||
func_80138198();
|
||||
bgm_update_music_settings();
|
||||
bgm_update_music_control();
|
||||
update_ambient_sounds();
|
||||
sfx_update_env_sound_params();
|
||||
update_windows();
|
||||
|
|
|
|||
|
|
@ -381,7 +381,7 @@ API_CALLABLE(N(SavePhonographUpdateScriptIDs)) {
|
|||
data->updateScaleScriptID = evt_get_variable(NULL, MV_UpdateScaleScript);
|
||||
data->updateCrankScriptID = evt_get_variable(NULL, MV_UpdateCrankScript);
|
||||
data->updateRecordScriptID = evt_get_variable(NULL, MV_UpdateRecordScript);
|
||||
data->songName = gMusicSettings->songName;
|
||||
data->songName = gMusicControlData->songName;
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -309,7 +309,7 @@ sfx_clear_sounds = 0x8014E6C8;
|
|||
sfx_update_env_sound_params = 0x8014E7E4;
|
||||
sfx_stop_env_sounds = 0x8014E8E8;
|
||||
bgm_reset_sequence_players = 0x8014F548;
|
||||
bgm_update_music_settings = 0x8014F5F8;
|
||||
bgm_update_music_control = 0x8014F5F8;
|
||||
D_80164000 = 0x80164000;
|
||||
heap_collisionHead = 0x80268000;
|
||||
shim_create_audio_system_obfuscated = 0x802B2000;
|
||||
|
|
@ -1999,7 +1999,7 @@ Entity_Signpost_RenderScript = 0x802E5F70; // rom:0x10C850
|
|||
Entity_Signpost = 0x802E5F8C; // rom:0x10C86C
|
||||
snd_song_stop = 0x80055674; // type:func rom:0x30A74
|
||||
snd_song_load = 0x80055584; // type:func rom:0x30984
|
||||
snd_song_set_variation_fade_time = 0x8005576C; // type:func rom:0x30B6C
|
||||
snd_song_request_fade_out = 0x8005576C; // type:func rom:0x30B6C
|
||||
func_80055B80 = 0x80055830; // type:func rom:0x30C30
|
||||
snd_ambient_stop_slow = 0x80055198; // type:func rom:0x30598
|
||||
world_action_sneaky_parasol_ROM_END = 0x00E343B0;
|
||||
|
|
@ -2008,7 +2008,7 @@ load_asset_by_name = 0x8005A9A0; // type:func rom:0x35DA0
|
|||
guRotateRPYF = 0x800642A0; // type:func rom:0x3F6A0
|
||||
gCurrentDisplayContextIndex = 0x800741D4; // rom:0x4F5D4
|
||||
func_800E06C0 = 0x800E06A0; // type:func rom:0x79B50
|
||||
snd_song_set_variation_fade = 0x800556C8; // type:func rom:0x30AC8
|
||||
snd_song_request_fade_in = 0x800556C8; // type:func rom:0x30AC8
|
||||
gItemIconPaletteOffsets = 0x8008E91C; // rom:0x69D1C
|
||||
snd_song_set_proximity_mix_near = 0x80055CF4; // type:func rom:0x310F4
|
||||
gItemEntityScripts = 0x8008DDA4; // rom:0x691A4
|
||||
|
|
@ -2039,24 +2039,24 @@ snd_ambient_pause = 0x800551EC; // type:func rom:0x305EC
|
|||
general_heap_free = 0x8002AC38; // type:func rom:0x6038
|
||||
CreateEntityVarArgBuffer = 0x80161750;
|
||||
gCurrentModels = 0x8015632C;
|
||||
snd_song_start_variation = 0x80055620; // type:func rom:0x30A20
|
||||
snd_song_request_play = 0x80055620; // type:func rom:0x30A20
|
||||
snd_song_set_track_volumes = 0x80055A8C; // type:func rom:0x30E8C
|
||||
gWindows = 0x8015ECD0;
|
||||
gPlayerStatusPtr = 0x800F7CC0; // rom:0x91170
|
||||
guOrtho = 0x80063A10; // type:func rom:0x3EE10
|
||||
guScale = 0x800676E0; // type:func rom:0x42AE0
|
||||
snd_song_set_proximity_mix_far = 0x80055CD8; // type:func rom:0x310D8
|
||||
func_80055BB8 = 0x80055868; // type:func rom:0x30C68
|
||||
snd_song_UNK_request_push_fade_out = 0x80055868; // type:func rom:0x30C68
|
||||
_heap_malloc = 0x8002902C; // type:func rom:0x442C
|
||||
gItemIconRasterOffsets = 0x8008E3A8; // rom:0x697A8
|
||||
func_80055B28 = 0x800557D8; // type:func rom:0x30BD8
|
||||
snd_song_UNK_request_pop = 0x800557D8; // type:func rom:0x30BD8
|
||||
snd_song_clear_track_volumes = 0x80055AF8; // type:func rom:0x30EF8
|
||||
npc_raycast_down_around = 0x800DC758; // type:func rom:0x75C08
|
||||
npc_test_move_simple_with_slipping = 0x800DDC24; // type:func rom:0x770D4
|
||||
is_player_dismounted = 0x800DFCD4; // type:func rom:0x79184
|
||||
heap_spriteHead = 0x8034F800;
|
||||
general_heap_malloc = 0x8002ABE8; // type:func rom:0x5FE8
|
||||
gMusicSettings = 0x8015EA70;
|
||||
gMusicControlData = 0x8015EA70;
|
||||
transform_point = 0x800295E0; // type:func rom:0x49E0
|
||||
gCurrentModelTreeNodeInfo = 0x8009A5D4;
|
||||
cosine = 0x80029394; // type:func rom:0x4794
|
||||
|
|
@ -2066,7 +2066,7 @@ gMessageBoxFrameParts = 0x8008FEB0; // rom:0x6B2B0
|
|||
copy_matrix = 0x800296E0; // type:func rom:0x4AE0
|
||||
snd_start_sound_with_shift = 0x80054EF0; // type:func rom:0x302F0
|
||||
suggest_player_anim_always_forward = 0x800DFF58; // type:func rom:0x79408
|
||||
func_80055AF0 = 0x800557A0; // type:func rom:0x30BA0
|
||||
snd_song_UNK_push_stop = 0x800557A0; // type:func rom:0x30BA0
|
||||
get_current_partner_id = 0x800E505C; // type:func rom:0x7E50C
|
||||
snd_set_sfx_reverb_type = 0x80055E94; // type:func rom:0x31294
|
||||
dist3D = 0x80029EEC; // type:func rom:0x52EC
|
||||
|
|
@ -2481,7 +2481,7 @@ sfx_adjust_env_sound_params = 0x8014EC94; // type:func rom:0xE3B24
|
|||
sfx_play_sound_at_npc = 0x8014EDB8; // type:func rom:0xE3C48
|
||||
sfx_compute_spatialized_sound_params_ignore_depth = 0x8014F008; // type:func rom:0xE3E98
|
||||
sfx_compute_spatialized_sound_params_with_depth = 0x8014F264; // type:func rom:0xE40F4
|
||||
BlankMusicSettings = 0x80154790; // rom:0xE9620
|
||||
BlankMusicControlData = 0x80154790; // rom:0xE9620
|
||||
SongsUsingVariationFlag = 0x801547C0; // rom:0xE9650
|
||||
NextVolumeUpdateTimer = 0x801547D8; // rom:0xE9668
|
||||
bgm_get_map_default_variation = 0x8014F4E0; // type:func rom:0xE4370
|
||||
|
|
|
|||
|
|
@ -547,16 +547,16 @@ func_8004D484 = 0x8004D484; // type:func rom:0x28884
|
|||
au_sfx_reset_players = 0x8004D4BC; // type:func rom:0x288BC
|
||||
au_bgm_begin_video_frame = 0x8004D510; // type:func rom:0x28910
|
||||
au_bgm_get_player_with_song_name = 0x8004D794; // type:func rom:0x28B94
|
||||
au_bgm_dispatch_player_event = 0x8004D7E0; // type:func rom:0x28BE0
|
||||
au_bgm_process_init_song = 0x8004D7E0; // type:func rom:0x28BE0
|
||||
au_bgm_stop_song = 0x8004DA0C; // type:func rom:0x28E0C
|
||||
au_bgm_stop_all = 0x8004DA74; // type:func rom:0x28E74
|
||||
au_bgm_stop_player = 0x8004DAA8; // type:func rom:0x28EA8
|
||||
au_bgm_is_song_playing = 0x8004DAE0; // type:func rom:0x28EE0
|
||||
au_bgm_player_is_active = 0x8004DB28; // type:func rom:0x28F28
|
||||
func_8004DB4C = 0x8004DB4C; // type:func rom:0x28F4C
|
||||
au_bgm_process_fade_out = 0x8004DB4C; // type:func rom:0x28F4C
|
||||
func_8004DC80 = 0x8004DC80; // type:func rom:0x29080
|
||||
func_8004DCB8 = 0x8004DCB8; // type:func rom:0x290B8
|
||||
func_8004DE2C = 0x8004DE2C; // type:func rom:0x2922C
|
||||
au_bgm_process_suspend = 0x8004DCB8; // type:func rom:0x290B8
|
||||
au_bgm_process_resume = 0x8004DE2C; // type:func rom:0x2922C
|
||||
func_8004DFD4 = 0x8004DFD4; // type:func rom:0x293D4
|
||||
au_bgm_adjust_volume = 0x8004E0F4; // type:func rom:0x294F4
|
||||
au_bgm_player_init = 0x8004E158; // type:func rom:0x29558
|
||||
|
|
@ -657,17 +657,17 @@ au_fade_clear = 0x80053A18; // type:func rom:0x2EE18
|
|||
au_fade_update = 0x80053A28; // type:func rom:0x2EE28
|
||||
au_fade_set_volume = 0x80053A98; // type:func rom:0x2EE98
|
||||
au_fade_flush = 0x80053AC8; // type:func rom:0x2EEC8
|
||||
au_fade_set_vol_scale = 0x80053AEC; // type:func rom:0x2EEEC
|
||||
au_unk_80053B04 = 0x80053B04; // type:func rom:0x2EF04
|
||||
au_fade_set_envelope = 0x80053AEC; // type:func rom:0x2EEEC
|
||||
au_fade_calc_envelope = 0x80053B04; // type:func rom:0x2EF04
|
||||
au_fade_update_envelope = 0x80053BA8; // type:func rom:0x2EFA8
|
||||
au_get_instrument = 0x80053BE8; // type:func rom:0x2EFE8
|
||||
au_get_bgm_player_and_file = 0x80053C58; // type:func rom:0x2F058
|
||||
au_get_bgm_player = 0x80053CB4; // type:func rom:0x2F0B4
|
||||
au_load_song_files = 0x80053CF8; // type:func rom:0x2F0F8
|
||||
au_unk_80053E58 = 0x80053E58; // type:func rom:0x2F258
|
||||
au_unk_80053F64 = 0x80053F64; // type:func rom:0x2F364
|
||||
au_unk_get_temp_player_for_index = 0x80053F64; // type:func rom:0x2F364
|
||||
au_ambient_load = 0x80053F80; // type:func rom:0x2F380
|
||||
au_unk_80054248 = 0x80054248; // type:func rom:0x2F648
|
||||
au_get_client_by_priority = 0x80054248; // type:func rom:0x2F648
|
||||
au_load_INIT = 0x800542BC; // type:func rom:0x2F6BC
|
||||
au_fetch_SBN_file = 0x8005447C; // type:func rom:0x2F87C
|
||||
au_load_PER = 0x800544F8; // type:func rom:0x2F8F8
|
||||
|
|
@ -713,20 +713,20 @@ snd_ambient_radio_setup = 0x80055760; // type:func rom:0x30B60
|
|||
snd_ambient_radio_stop = 0x800557CC; // type:func rom:0x30BCC
|
||||
snd_ambient_radio_select = 0x80055848; // type:func rom:0x30C48
|
||||
snd_song_load = 0x800558D4; // type:func rom:0x30CD4
|
||||
snd_song_start_default = 0x8005591C; // type:func rom:0x30D1C
|
||||
snd_song_start_variation = 0x80055970; // type:func rom:0x30D70
|
||||
snd_song_request_play_default = 0x8005591C; // type:func rom:0x30D1C
|
||||
snd_song_request_play = 0x80055970; // type:func rom:0x30D70
|
||||
snd_song_stop = 0x800559C4; // type:func rom:0x30DC4
|
||||
snd_song_stop_all = 0x800559E0; // type:func rom:0x30DE0
|
||||
snd_song_is_playing = 0x800559FC; // type:func rom:0x30DFC
|
||||
snd_song_set_variation_fade = 0x80055A18; // type:func rom:0x30E18
|
||||
snd_song_set_default_fade = 0x80055A6C; // type:func rom:0x30E6C
|
||||
snd_song_set_variation_fade_time = 0x80055ABC; // type:func rom:0x30EBC
|
||||
func_80055AF0 = 0x80055AF0; // type:func rom:0x30EF0
|
||||
func_80055B28 = 0x80055B28; // type:func rom:0x30F28
|
||||
snd_song_request_fade_in = 0x80055A18; // type:func rom:0x30E18
|
||||
snd_song_request_fade_in_default = 0x80055A6C; // type:func rom:0x30E6C
|
||||
snd_song_request_fade_out = 0x80055ABC; // type:func rom:0x30EBC
|
||||
snd_song_UNK_push_stop = 0x80055AF0; // type:func rom:0x30EF0
|
||||
snd_song_UNK_request_pop = 0x80055B28; // type:func rom:0x30F28
|
||||
func_80055B80 = 0x80055B80; // type:func rom:0x30F80
|
||||
func_80055BB8 = 0x80055BB8; // type:func rom:0x30FB8
|
||||
func_80055BF0 = 0x80055BF0; // type:func rom:0x30FF0
|
||||
func_80055C2C = 0x80055C2C; // type:func rom:0x3102C
|
||||
snd_song_UNK_request_push_fade_out = 0x80055BB8; // type:func rom:0x30FB8
|
||||
snd_song_request_pause = 0x80055BF0; // type:func rom:0x30FF0
|
||||
snd_song_request_unpause = 0x80055C2C; // type:func rom:0x3102C
|
||||
snd_song_set_volume_quiet = 0x80055C64; // type:func rom:0x31064
|
||||
snd_song_set_volume_full = 0x80055C94; // type:func rom:0x31094
|
||||
snd_song_set_linked_mode = 0x80055CC4; // type:func rom:0x310C4
|
||||
|
|
@ -4426,7 +4426,7 @@ sfx_compute_spatialized_sound_params_with_depth = 0x8014A1B4; // type:func rom:0
|
|||
bgm_get_map_default_variation = 0x8014A430; // type:func rom:0xE0B30
|
||||
bgm_reset_sequence_players = 0x8014A498; // type:func rom:0xE0B98
|
||||
bgm_reset_volume = 0x8014A52C; // type:func rom:0xE0C2C
|
||||
bgm_update_music_settings = 0x8014A548; // type:func rom:0xE0C48
|
||||
bgm_update_music_control = 0x8014A548; // type:func rom:0xE0C48
|
||||
_bgm_set_song = 0x8014A7E0; // type:func rom:0xE0EE0
|
||||
bgm_set_song = 0x8014A918; // type:func rom:0xE1018
|
||||
bgm_fade_in_song = 0x8014A964; // type:func rom:0xE1064
|
||||
|
|
@ -5189,7 +5189,7 @@ MusicTargetVolume = 0x80159AE2; // rom:0xF01E2
|
|||
MusicMaxVolume = 0x80159AE4; // rom:0xF01E4
|
||||
MusicCurrentVolume = 0x80159AE6; // rom:0xF01E6
|
||||
D_80159AE8 = 0x80159AE8; // rom:0xF01E8
|
||||
gMusicSettings = 0x80159AF0; // rom:0xF01F0
|
||||
gMusicControlData = 0x80159AF0; // rom:0xF01F0
|
||||
UseSettingsFrom = 0x802CB860; // type:func rom:0xF0210
|
||||
D_80159B50 = 0x80159B50; // rom:0xF0250
|
||||
LoadSettings = 0x802CB9F8; // type:func rom:0xF03A8
|
||||
|
|
|
|||
Loading…
Reference in New Issue