summaryrefslogtreecommitdiff
path: root/src/sceneGlue.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sceneGlue.cpp')
-rw-r--r--src/sceneGlue.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/sceneGlue.cpp b/src/sceneGlue.cpp
new file mode 100644
index 0000000..3e2167a
--- /dev/null
+++ b/src/sceneGlue.cpp
@@ -0,0 +1,22 @@
+#include <game.h>
+#include <stage.h>
+
+extern char CurrentLevel, CurrentWorld;
+extern u8 MaybeFinishingLevel[2];
+extern "C" void ExitStageReal(int scene, int sceneParams, int powerupStoreType, int wipe);
+
+extern "C" void ExitStageWrapper(int scene, int sceneParams, int powerupStoreType, int wipe) {
+ if (scene == WORLD_MAP && powerupStoreType == BEAT_LEVEL) {
+ if (CurrentWorld == 6 && CurrentLevel == STAGE_DOOMSHIP) {
+ if (MaybeFinishingLevel[0] == 6 && MaybeFinishingLevel[1] == STAGE_DOOMSHIP) {
+ // We're done with 7-38
+ ExitStage(MOVIE, 0x10000000, powerupStoreType, wipe);
+ return;
+ }
+ }
+ }
+
+ ExitStageReal(scene, sceneParams, powerupStoreType, wipe);
+}
+
+