From 597788dd054150be7fed9c1aad08d6398163d4fd Mon Sep 17 00:00:00 2001 From: ManDude <7569514+ManDude@users.noreply.github.com> Date: Sun, 19 Jun 2022 13:47:55 +0100 Subject: [PATCH] `main` PAL patch --- decompiler/config/jak1_pal.jsonc | 2 +- decompiler/config/jak1_pal/hacks.jsonc | 2 +- goal_src/engine/game/main.gc | 91 ++++++++++++++------------ 3 files changed, 50 insertions(+), 45 deletions(-) diff --git a/decompiler/config/jak1_pal.jsonc b/decompiler/config/jak1_pal.jsonc index b2e7c832f2..08f58aeec3 100644 --- a/decompiler/config/jak1_pal.jsonc +++ b/decompiler/config/jak1_pal.jsonc @@ -6,7 +6,7 @@ // if you want to filter to only some object names. // it will make the decompiler much faster. - "allowed_objects": ["logic-target", "eichar-ag", "deathcam-ag", "balloon-ag"], + "allowed_objects": ["main", "eichar-ag", "deathcam-ag", "balloon-ag"], "banned_objects": [], //////////////////////////// diff --git a/decompiler/config/jak1_pal/hacks.jsonc b/decompiler/config/jak1_pal/hacks.jsonc index 2ad22e11f3..adfdbd4b01 100644 --- a/decompiler/config/jak1_pal/hacks.jsonc +++ b/decompiler/config/jak1_pal/hacks.jsonc @@ -356,7 +356,7 @@ "adgif-shader<-texture-with-update!": [0, 1], - "display-loop": [44, 49, 66, 96], + "display-loop": [44, 49, 66, 99], "load-game-text-info": [12, 13, 14, 16, 17, 18], diff --git a/goal_src/engine/game/main.gc b/goal_src/engine/game/main.gc index fa59958735..5558703ed7 100644 --- a/goal_src/engine/game/main.gc +++ b/goal_src/engine/game/main.gc @@ -104,52 +104,57 @@ (defun set-master-mode ((new-mode symbol)) "Update pause masks for the given mode, and set *master-mode*" - (set! *master-mode* new-mode) - (if *debug-segment* - (menu-respond-to-pause) - ) - (case *master-mode* - (('pause) + ;; PAL patch here + (let ((gp-0 *master-mode*)) + (set! *master-mode* new-mode) + (if *debug-segment* + (menu-respond-to-pause) + ) + (case *master-mode* + (('pause) - ;; request the pause mask to be set in prevent-from-run. - ;; this will block any process with pause from running, pausing most game objects. - (if (not *debug-pause*) - (logior! (-> *setting-control* default process-mask) (process-mask pause)) - ) - - ;; allow the menu to run. - (logclear! (-> *setting-control* default process-mask) (process-mask menu)) - - ;; ?? - (set! *pause-lock* #f) - (sound-group-pause (sound-group sfx music dialog sog3 ambient sog5 sog6 sog7)) - (hide-progress-screen) - ) - (('menu) - ;; I believe these masks are just to make the progress go away work. - (logior! (-> *setting-control* default process-mask) (process-mask menu)) - (logclear! (-> *setting-control* default process-mask) (process-mask pause progress)) - (set! *pause-lock* #f) - (hide-progress-screen) - ) - (('progress) - ;; allow menu to run while in progress. - (logclear! (-> *setting-control* default process-mask) (process-mask menu)) - - ;; activate the progress menu. - (when (not *progress-process*) - (activate-progress *dproc* (progress-screen fuel-cell)) - (if (not *progress-process*) ;; if it doesn't want to activate, back to game. - (set-master-mode 'game) + ;; request the pause mask to be set in prevent-from-run. + ;; this will block any process with pause from running, pausing most game objects. + (if (not *debug-pause*) + (logior! (-> *setting-control* default process-mask) (process-mask pause)) ) + + ;; allow the menu to run. + (logclear! (-> *setting-control* default process-mask) (process-mask menu)) + + ;; ?? + (set! *pause-lock* #f) + (sound-group-pause (sound-group sfx music dialog sog3 ambient sog5 sog6 sog7)) + (hide-progress-screen) ) - ) - (('game) - ;; allow pausable/menu to run. - (logclear! (-> *setting-control* default process-mask) (process-mask pause menu)) - (sound-group-continue (sound-group sfx music dialog sog3 ambient sog5 sog6 sog7)) - (hide-progress-screen) - ) + (('menu) + ;; I believe these masks are just to make the progress go away work. + (logior! (-> *setting-control* default process-mask) (process-mask menu)) + (logclear! (-> *setting-control* default process-mask) (process-mask pause progress)) + (set! *pause-lock* #f) + (hide-progress-screen) + ) + (('progress) + ;; allow menu to run while in progress. + (logclear! (-> *setting-control* default process-mask) (process-mask menu)) + + ;; activate the progress menu. + (when (not *progress-process*) + (activate-progress *dproc* (progress-screen fuel-cell)) + (if (not *progress-process*) + (set-master-mode 'game) + ) + ) + ) + (('game) + ;; allow pausable/menu to run. + (logclear! (-> *setting-control* default process-mask) (process-mask pause menu)) + (if (!= gp-0 *master-mode*) + (sound-group-continue (sound-group sfx music dialog sog3 ambient sog5 sog6 sog7)) + ) + (hide-progress-screen) + ) + ) ) ;; apply settings now. (apply-settings *setting-control*)