summaryrefslogtreecommitdiff
path: root/src/koopatlas
diff options
context:
space:
mode:
Diffstat (limited to 'src/koopatlas')
-rw-r--r--src/koopatlas/core.cpp9
-rw-r--r--src/koopatlas/core.h3
-rw-r--r--src/koopatlas/map.cpp2
-rw-r--r--src/koopatlas/pathmanager.cpp5
4 files changed, 16 insertions, 3 deletions
diff --git a/src/koopatlas/core.cpp b/src/koopatlas/core.cpp
index fd6eace..03b8dae 100644
--- a/src/koopatlas/core.cpp
+++ b/src/koopatlas/core.cpp
@@ -193,7 +193,8 @@ bool WMInit_LoadResources2(void *ptr) {
}
if (wm->mapData.load(wm->mapPath)) {
- dKPMusic::play(GetSaveFile()->GetBlock(-1)->currentMapMusic);
+ if (!wm->isFirstPlay)
+ wm->startMusic();
return true;
} else
return false;
@@ -333,6 +334,10 @@ ActivateWipe(WIPE_MARIO);
DoStartLevel(GetGameMgr(), &sl);
}*/
+void dScKoopatlas_c::startMusic() {
+ dKPMusic::play(GetSaveFile()->GetBlock(-1)->currentMapMusic);
+}
+
int dScKoopatlas_c::onCreate() {
OSReport("KP scene settings: %08x\n", settings);
@@ -405,6 +410,8 @@ int dScKoopatlas_c::onCreate() {
SaveBlock *save = GetSaveFile()->GetBlock(-1);
currentMapID = save->current_world;
+ isFirstPlay = (currentMapID == 0) && (settings & 0x80000000);
+
somethingAboutSound(_8042A788);
return true;
diff --git a/src/koopatlas/core.h b/src/koopatlas/core.h
index 651b628..93cc257 100644
--- a/src/koopatlas/core.h
+++ b/src/koopatlas/core.h
@@ -112,6 +112,9 @@ class dScKoopatlas_c : public dScene_c {
dDvdLoader_c mapListLoader;
+ bool isFirstPlay;
+ void startMusic();
+
u32 iterateMapList(u32(*callback)(u32,const char *,int,int), u32 userData, int *ptrIndex = 0);
const char *getMapNameForIndex(int index);
int getIndexForMapName(const char *name);
diff --git a/src/koopatlas/map.cpp b/src/koopatlas/map.cpp
index c2cb13e..08cc0b3 100644
--- a/src/koopatlas/map.cpp
+++ b/src/koopatlas/map.cpp
@@ -120,7 +120,7 @@ void dWMMap_c::renderer_c::drawLayers() {
baseZ = -100.0f - (2 * data->layerCount);
- bool skipFirstLayer = (wm->currentMapID == 0) && !(wm->settings & 0x80000000);
+ bool skipFirstLayer = (wm->currentMapID == 0) && !(wm->isFirstPlay);
beginRendering();
diff --git a/src/koopatlas/pathmanager.cpp b/src/koopatlas/pathmanager.cpp
index a5e4294..0238cc7 100644
--- a/src/koopatlas/pathmanager.cpp
+++ b/src/koopatlas/pathmanager.cpp
@@ -116,7 +116,7 @@ void dWMPathManager_c::setup() {
else
waitAtStart = -1;
- if (wm->currentMapID == 0 && wm->settings & 0x80000000)
+ if (wm->isFirstPlay)
waitAtStart = 280;
SpammyReport("saved path node: %d\n", save->current_path_node);
@@ -423,6 +423,9 @@ void dWMPathManager_c::execute() {
nw4r::snd::SoundHandle something;
PlaySoundWithFunctionB4(SoundRelatedClass, &something, SE_VOC_MA_CS_COURSE_MISS, 1);
}
+
+ if (dScKoopatlas_c::instance->isFirstPlay)
+ dScKoopatlas_c::instance->startMusic();
}
return;
}