From e004780f73229f3745f4b57d91337d19eeb58f8b Mon Sep 17 00:00:00 2001 From: ManDude <7569514+ManDude@users.noreply.github.com> Date: Fri, 14 Apr 2023 07:53:14 +0100 Subject: [PATCH] add a toggle for faster airlocks and elevators and enable by default (#2478) --- common/util/FontUtils.cpp | 16 +++---- goal_src/jak2/engine/common_objs/elevator.gc | 4 +- goal_src/jak2/engine/draw/drawable.gc | 5 +- goal_src/jak2/engine/gfx/hw/display.gc | 2 +- goal_src/jak2/pc/debug/default-menu-pc.gc | 48 ++++++-------------- goal_src/jak2/pc/pckernel-impl.gc | 10 ++++ goal_src/jak2/pc/pckernel.gc | 11 +++++ 7 files changed, 50 insertions(+), 46 deletions(-) diff --git a/common/util/FontUtils.cpp b/common/util/FontUtils.cpp index 92c35bd51..5b7901a3c 100644 --- a/common/util/FontUtils.cpp +++ b/common/util/FontUtils.cpp @@ -1096,8 +1096,8 @@ static std::vector s_replace_info_jak2 = { {"~Y~5L~Z~3L~]~-1H~Y~5L~Z~3L~Z~+26H", ""}, - {"~Y~39L~~~Z~3L~Z~5L~]~-1H~Y~39L~~~Z~" - "3L~Z~5L~Z~+26H", + {"~Y~39L~~~Z~3L~Z~5L~]~-1H~Y~39L~~~" + "Z~3L~Z~5L~Z~+26H", ""}, {"~Y~7L~Z~+15H~1L~Z~+30H~3L~Z~+47H", @@ -1105,12 +1105,12 @@ static std::vector s_replace_info_jak2 = { {"~Y~1L~Z~3L~Z~7L~]~-1H~Y~1L<" "FLAG_PART_FILL>~Z~3L~Z~7L~Z~+26H", ""}, - {"~Y~1L~Z~3L~Z~7L~]~-" - "1H~Y~1L~Z~3L~Z~+26H", + {"~Y~1L~Z~3L~Z~7L~]~-1H~Y~1L<" + "FLAG_PART_FILL>~Z~3L~Z~+26H", ""}, {"~Y~1L~Z~39L~]~-1H~Y~1L~Z~39L<" - "FLAG_PART_KOREA_TRIGRAMS_RIGHT>~Z~-11H~7L~Z~-11H~3L<" - "FLAG_PART_KOREA_CIRCLE_TOP>~Z~+26H", + "FLAG_PART_KOREA_TRIGRAMS_RIGHT>~Z~-11H~7L~Z~-11H~3L~Z~+26H", ""}, {"~Y~1L~]~-1H~Y~1L~Z~-11H~3L~Z~+26H", ""}, @@ -1153,8 +1153,8 @@ static std::vector s_encode_info_jak2 = { {"œ", {0x5e}}, // ligature o+e - {"", {0x7f}}, - {"", {0x80}}, + {"", {0x7f}}, + {"", {0x80}}, {"", {0x81}}, {"", {0x82}}, {"", {0x83}}, diff --git a/goal_src/jak2/engine/common_objs/elevator.gc b/goal_src/jak2/engine/common_objs/elevator.gc index 606723228..c2931122d 100644 --- a/goal_src/jak2/engine/common_objs/elevator.gc +++ b/goal_src/jak2/engine/common_objs/elevator.gc @@ -690,7 +690,9 @@ do so. (seek! (-> self path-pos) (-> self path-dest) - (* (/ (-> self params move-rate) (-> self move-dist)) (-> self clock seconds-per-frame)) + (* (/ (* (#if PC_PORT (if (eligible-for-fast-elevator? *pc-settings* self) 1.5 1.0) + 1.0) + (-> self params move-rate)) (-> self move-dist)) (-> self clock seconds-per-frame)) ) (let* ((f30-0 (-> self move-pos 0)) (f28-0 (-> self move-pos 1)) diff --git a/goal_src/jak2/engine/draw/drawable.gc b/goal_src/jak2/engine/draw/drawable.gc index b0c122ddd..02d5dff51 100644 --- a/goal_src/jak2/engine/draw/drawable.gc +++ b/goal_src/jak2/engine/draw/drawable.gc @@ -1745,7 +1745,10 @@ (tick! (-> arg0 bg-clock)) (set! (-> arg0 bg-clock frame-counter) (the-as time-frame (mod (-> arg0 bg-clock frame-counter) #x69780))) (tick! (-> arg0 part-clock)) - (#when PC_PORT + (with-pc + (if (-> *pc-settings* fast-airlock?) + (update-rates! *airlock-clock* (* *airlock-speed* (-> arg0 entity-clock clock-ratio))) + (update-rates! *airlock-clock* (-> arg0 entity-clock clock-ratio))) (tick! *airlock-clock*)) ; (when (and (nonzero? *screen-shot-work*) (!= (-> *screen-shot-work* count) -1)) diff --git a/goal_src/jak2/engine/gfx/hw/display.gc b/goal_src/jak2/engine/gfx/hw/display.gc index 2ba32ac70..cfe7d7be9 100644 --- a/goal_src/jak2/engine/gfx/hw/display.gc +++ b/goal_src/jak2/engine/gfx/hw/display.gc @@ -43,7 +43,7 @@ (#when PC_PORT (define *airlock-clock* (new 'global 'clock 13)) -(set! (-> *airlock-clock* clock-ratio) 1.5) +(define *airlock-speed* 1.5) ) (defun set-display ((arg0 display)) diff --git a/goal_src/jak2/pc/debug/default-menu-pc.gc b/goal_src/jak2/pc/debug/default-menu-pc.gc index 2fcafb67c..d15b49113 100644 --- a/goal_src/jak2/pc/debug/default-menu-pc.gc +++ b/goal_src/jak2/pc/debug/default-menu-pc.gc @@ -707,6 +707,10 @@ ) ) +(defun dm-set-msaa-pick-func ((msaa int) (msg debug-menu-msg)) + (when (= msg (debug-menu-msg press)) (set! (-> *pc-settings* gfx-msaa) (/ msaa 8))) + (= (-> *pc-settings* gfx-msaa) (/ msaa 8))) + (when (-> *debug-menu-context* root-menu) ;; (debug-menu-append-item (-> *debug-menu-context* root-menu) (debug-menu-make-load-menu *debug-menu-context*)) (debug-menu-append-item (-> *debug-menu-context* root-menu) (debug-menu-make-part-menu *debug-menu-context*)) @@ -797,6 +801,8 @@ ;(flag "PS2 Music" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-music?))) ;(flag "PS2 Sound effects" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-se?))) ;(flag "PS2 Hints" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-hints?))) + (flag "Faster airlocks" #f ,(dm-lambda-boolean-flag (-> *pc-settings* fast-airlock?))) + (flag "Faster elevators" #f ,(dm-lambda-boolean-flag (-> *pc-settings* fast-elevator?))) ) (menu "Level of detail" (flag "PS2 LOD " #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-lod-dist?))) @@ -824,18 +830,13 @@ ;; (flag "150" #f ,(lambda (arg (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) (set-frame-rate! *pc-settings* 150)) ;; (= (-> *pc-settings* target-fps) 150))) ;; ) - (menu "MSAA" - (flag "Off" #f ,(lambda (arg (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) (set! (-> *pc-settings* gfx-msaa) 1)) - (= (-> *pc-settings* gfx-msaa) 1))) - (flag "x2" #f ,(lambda (arg (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) (set! (-> *pc-settings* gfx-msaa) 2)) - (= (-> *pc-settings* gfx-msaa) 2))) - (flag "x4" #f ,(lambda (arg (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) (set! (-> *pc-settings* gfx-msaa) 4)) - (= (-> *pc-settings* gfx-msaa) 4))) - (flag "x8" #f ,(lambda (arg (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) (set! (-> *pc-settings* gfx-msaa) 8)) - (= (-> *pc-settings* gfx-msaa) 8))) - (flag "x16" #f ,(lambda (arg (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) (set! (-> *pc-settings* gfx-msaa) 16)) - (= (-> *pc-settings* gfx-msaa) 16))) - ) + (menu "MSAA" + (flag "Off" 1 dm-set-msaa-pick-func) + (flag "x2" 2 dm-set-msaa-pick-func) + (flag "x4" 4 dm-set-msaa-pick-func) + (flag "x8" 8 dm-set-msaa-pick-func) + (flag "x16" 16 dm-set-msaa-pick-func) + ) (flag "V-sync" #f ,(dm-lambda-boolean-flag (-> *pc-settings* vsync?))) (flag "All actors" #f ,(dm-lambda-boolean-flag (-> *pc-settings* force-actors?))) (flag "Display actor counts" *display-actor-counts* dm-boolean-toggle-pick-func) @@ -865,29 +866,6 @@ (int-var "City info x" *city-info-x* dm-int-var-func 10 1 #t 0 255 1) (int-var "City info y" *city-info-y* dm-int-var-func 10 1 #t 0 255 1) (int-var "City info z" *city-info-z* dm-int-var-func 10 1 #t 0 255 1) - ;; (menu "Mood override" - ;; (function "-- SIMPLE OVERRIDE" #f nothing) - ;; (flag "Palette 0" 0 dm-mood-override-palette-pick-func) - ;; (flag "Palette 1" 1 dm-mood-override-palette-pick-func) - ;; (flag "Palette 2" 2 dm-mood-override-palette-pick-func) - ;; (flag "Palette 3" 3 dm-mood-override-palette-pick-func) - ;; (flag "Palette 4" 4 dm-mood-override-palette-pick-func) - ;; (flag "Palette 5" 5 dm-mood-override-palette-pick-func) - ;; (flag "Palette 6" 6 dm-mood-override-palette-pick-func) - ;; (flag "Palette 7" 7 dm-mood-override-palette-pick-func) - ;; (menu "Advanced" - ;; (flag "Overwrite" copy dm-mood-override-pick-func) - ;; (flag "Multiply" mult dm-mood-override-pick-func) - ;; (float-fixed-var "Palette 0 Amt" 0 dm-mood-palette-float 0 10 #t 0 1000 3) - ;; (float-fixed-var "Palette 1 Amt" 1 dm-mood-palette-float 0 10 #t 0 1000 3) - ;; (float-fixed-var "Palette 2 Amt" 2 dm-mood-palette-float 0 10 #t 0 1000 3) - ;; (float-fixed-var "Palette 3 Amt" 3 dm-mood-palette-float 0 10 #t 0 1000 3) - ;; (float-fixed-var "Palette 4 Amt" 4 dm-mood-palette-float 0 10 #t 0 1000 3) - ;; (float-fixed-var "Palette 5 Amt" 5 dm-mood-palette-float 0 10 #t 0 1000 3) - ;; (float-fixed-var "Palette 6 Amt" 6 dm-mood-palette-float 0 10 #t 0 1000 3) - ;; (float-fixed-var "Palette 7 Amt" 7 dm-mood-palette-float 0 10 #t 0 1000 3) - ;; ) - ;; ) (flag "Joint names" *display-joint-names* dm-boolean-toggle-pick-func) (flag "Bone lines" *display-bones* dm-boolean-toggle-pick-func) (flag "Entity Lights" *display-lights* dm-boolean-toggle-pick-func) diff --git a/goal_src/jak2/pc/pckernel-impl.gc b/goal_src/jak2/pc/pckernel-impl.gc index 6534adce3..23bb0f87c 100644 --- a/goal_src/jak2/pc/pckernel-impl.gc +++ b/goal_src/jak2/pc/pckernel-impl.gc @@ -22,9 +22,16 @@ ;; The Jak 2 version of the pc-settings object. (deftype pc-settings-jak2 (pc-settings) ( + (fast-airlock? symbol) + (fast-elevator? symbol) + ;; debug (jetboard-trick-text? symbol) ;; enable rendering jetboard trick combo during minigame ) + + (:methods + (eligible-for-fast-elevator? (_type_ process) symbol) + ) ) (define *pc-settings* (the pc-settings-jak2 #f)) @@ -60,6 +67,9 @@ ((method-of-type pc-settings reset-misc) obj) (set! (-> obj jetboard-trick-text?) #t) + + (set! (-> obj fast-airlock?) #t) + (set! (-> obj fast-elevator?) #t) (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/goal_src/jak2/pc/pckernel.gc b/goal_src/jak2/pc/pckernel.gc index 91de4e0b8..c31bc0b84 100644 --- a/goal_src/jak2/pc/pckernel.gc +++ b/goal_src/jak2/pc/pckernel.gc @@ -86,6 +86,13 @@ ) +(defmethod eligible-for-fast-elevator? pc-settings-jak2 ((obj pc-settings-jak2) (proc process)) + "is this a valid process for a fast elevator?" + (and (-> obj fast-elevator?) (not (or (string= (-> proc name) "drill-lift-1") + (string= (-> proc name )"drill-lift-2")))) + ) + + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; file I/O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -97,6 +104,8 @@ ((method-of-type pc-settings handle-input-settings) obj file) (case-str *pc-temp-string* (("jetboard-trick-text?") (set! (-> obj jetboard-trick-text?) (file-stream-read-symbol file))) + (("fast-airlock?") (set! (-> obj fast-airlock?) (file-stream-read-symbol file))) + (("fast-elevator?") (set! (-> obj fast-elevator?) (file-stream-read-symbol file))) ) 0) @@ -105,6 +114,8 @@ ((method-of-type pc-settings handle-output-settings) obj file) (format file " (jetboard-trick-text? ~A)~%" (-> obj jetboard-trick-text?)) + (format file " (fast-airlock? ~A)~%" (-> obj fast-airlock?)) + (format file " (fast-elevator? ~A)~%" (-> obj fast-elevator?)) 0) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;