From b81a4623e90eeb1d7a0d9e0f321b54ac6666798a Mon Sep 17 00:00:00 2001 From: Treeki Date: Tue, 13 Nov 2012 23:28:58 +0100 Subject: music fixes? --- src/koopatlas/core.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src/koopatlas') diff --git a/src/koopatlas/core.cpp b/src/koopatlas/core.cpp index 317c86c..5734300 100644 --- a/src/koopatlas/core.cpp +++ b/src/koopatlas/core.cpp @@ -2,6 +2,7 @@ #include "koopatlas/camera.h" #include "koopatlas/player.h" #include "koopatlas/subplayer.h" +#include "music.h" extern "C" void LoadMapScene(); @@ -192,7 +193,11 @@ bool WMInit_LoadResources2(void *ptr) { OSReport("Load map: %s\n", wm->mapPath); } - return wm->mapData.load(wm->mapPath); + if (wm->mapData.load(wm->mapPath)) { + wm->playBGM(); + return true; + } else + return false; } bool WMInit_SetupWait(void *ptr) { @@ -302,8 +307,6 @@ bool WMInit_SetupWipe(void *ptr) { SpammyReport("WMInit_SetupWipe returning true\n"); - wm->playBGM(); - return true; } @@ -416,7 +419,6 @@ int dScKoopatlas_c::onCreate() { return true; } -u8 hijackMusicWithSongName(const char *songName, int themeID, bool hasFast, bool useDrums, int *wantRealStreamID); extern "C" void PlaySoundWithFunctionB4(void *spc, nw4r::snd::SoundHandle *handle, int id, int unk); void dScKoopatlas_c::playBGM() { @@ -442,11 +444,12 @@ void dScKoopatlas_c::playBGM() { int realStreamID; OSReport("I'm going to play %s!\n", cleanName); - hijackMusicWithSongName(cleanName, -1, false, false, &realStreamID); + hijackMusicWithSongName(cleanName, -1, false, 16, 8, &realStreamID); OSReport("Real Stream ID: %d\n", realStreamID); PlaySoundWithFunctionB4(SoundRelatedClass, &bgm, realStreamID, 1); currentBGMTrack = GetSaveFile()->GetBlock(-1)->currentMapMusic; + OSReport("Enabling track %d by setting bitfield 0x%x to volume 1.0f and bitfield 0x%x to volume 0.0f; both over 0 frames\n", currentBGMTrack, 1 << currentBGMTrack, 0xFF ^ (1 << currentBGMTrack)); bgm.SetTrackVolume(0xFF ^ (1 << currentBGMTrack), 0, 0.0f); bgm.SetTrackVolume(1 << currentBGMTrack, 0, 1.0f); } @@ -455,6 +458,7 @@ void dScKoopatlas_c::setBGMTrack(int trackID) { if (currentBGMTrack == trackID) return; + OSReport("Enabling track %d and disabling track %d by setting bitfield 0x%x to volume 1.0f and bitfield 0x%x to volume 0.0f; both over 30 frames\n", trackID, currentBGMTrack, 1 << trackID, 1 << currentBGMTrack); bgm.SetTrackVolume(1 << currentBGMTrack, 30, 0.0f); bgm.SetTrackVolume(1 << trackID, 30, 1.0f); currentBGMTrack = trackID; -- cgit v1.2.3