From 84b2ba43beff7797cd97398a953b00aaad6cabaa Mon Sep 17 00:00:00 2001 From: Matt Dallmeyer <2515356+dallmeyer@users.noreply.github.com> Date: Wed, 11 May 2022 15:28:27 -0700 Subject: [PATCH] Camera inversion/flipped support for main first+third person cameras (#1355) * Split cam inversion settings into first/third person settings. Connect settings to controls for main first/third person cameras * inverted -> flipped everywhere * cam-billy first-person camera impl * respect camera inversion in cam-stick (debug option only), launcher cams * refactor into common functions * couple more cams * tweak menu text and size, fix function ordering * convert to macros, more descriptive names * pc port comments * one missed comment * menu text/size/display tweaks * respect flipped in main debug cam --- decompiler/config/all-types.gc | 124 ++++++++++++----------- game/assets/jak1/text/game_text_en.gs | 16 +-- goal_src/engine/camera/cam-states-dbg.gc | 4 +- goal_src/engine/camera/cam-states.gc | 29 ++++-- goal_src/engine/game/generic-obs.gc | 6 +- goal_src/engine/ps2/pad.gc | 32 ++++++ goal_src/engine/ui/progress-h.gc | 2 +- goal_src/engine/ui/text-h.gc | 122 +++++++++++----------- goal_src/levels/jungle/jungle-mirrors.gc | 5 +- goal_src/pc/pckernel-h.gc | 12 ++- goal_src/pc/pckernel.gc | 12 ++- goal_src/pc/progress-pc.gc | 41 ++++---- 12 files changed, 231 insertions(+), 174 deletions(-) diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index 4954051476..71c500ec3d 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -1305,66 +1305,68 @@ (europe #xf11) ;; extra IDs for pc port - (camera-options #x1000) - (normal #x1001) - (inverted #x1002) - (camera-controls-horz #x1003) - (camera-controls-vert #x1004) - (misc-options #x100f) - (accessibility-options #x1010) - (money-starburst #x1011) - (ps2-options #x1020) - (ps2-load-speed #x1021) - (ps2-parts #x1022) - (discord-rpc #x1030) - (display-mode #x1031) - (windowed #x1032) - (borderless #x1033) - (fullscreen #x1034) - (game-resolution #x1035) - (resolution-fmt #x1036) - (ps2-aspect-ratio #x1037) - (ps2-aspect-ratio-msg #x1038) - (aspect-ratio-ps2 #x1039) - (fit-to-screen #x103a) - (msaa #x1050) - (x-times-fmt #x1051) - (2-times #x1052) - (4-times #x1053) - (8-times #x1054) - (16-times #x1055) - (frame-rate #x1060) - (lod-bg #x1070) - (lod-fg #x1071) - (lod-highest #x1072) - (lod-high #x1073) - (lod-mid #x1074) - (lod-low #x1075) - (lod-lowest #x1076) - (lod-ps2 #x1077) - (subtitles #x1078) - (hinttitles #x1079) - (subtitles-language #x107a) - (subtitles-speaker #x107b) - (speaker-always #x107c) - (speaker-never #x107d) - (speaker-auto #x107e) - (hint-log #x107f) - (cheats #x1080) - (cheat-eco-blue #x1090) - (cheat-eco-red #x1091) - (cheat-eco-green #x1092) - (cheat-eco-yellow #x1093) - (cheat-sidekick-alt #x1094) - (cheat-invinc #x1095) - (music-player #x10c0) - (scene-player #x10c1) - (play-credits #x10c2) - (scrapbook #x10c3) - (scene-0 #x1100) - (scene-255 #x11ff) - (hint-0 #x1200) - (hint-511 #x13ff) + (camera-options #x1000) + (normal #x1001) + (flipped #x1002) + (camera-controls-first-horz #x1003) + (camera-controls-first-vert #x1004) + (camera-controls-third-horz #x1005) + (camera-controls-third-vert #x1006) + (misc-options #x100f) + (accessibility-options #x1010) + (money-starburst #x1011) + (ps2-options #x1020) + (ps2-load-speed #x1021) + (ps2-parts #x1022) + (discord-rpc #x1030) + (display-mode #x1031) + (windowed #x1032) + (borderless #x1033) + (fullscreen #x1034) + (game-resolution #x1035) + (resolution-fmt #x1036) + (ps2-aspect-ratio #x1037) + (ps2-aspect-ratio-msg #x1038) + (aspect-ratio-ps2 #x1039) + (fit-to-screen #x103a) + (msaa #x1050) + (x-times-fmt #x1051) + (2-times #x1052) + (4-times #x1053) + (8-times #x1054) + (16-times #x1055) + (frame-rate #x1060) + (lod-bg #x1070) + (lod-fg #x1071) + (lod-highest #x1072) + (lod-high #x1073) + (lod-mid #x1074) + (lod-low #x1075) + (lod-lowest #x1076) + (lod-ps2 #x1077) + (subtitles #x1078) + (hinttitles #x1079) + (subtitles-language #x107a) + (subtitles-speaker #x107b) + (speaker-always #x107c) + (speaker-never #x107d) + (speaker-auto #x107e) + (hint-log #x107f) + (cheats #x1080) + (cheat-eco-blue #x1090) + (cheat-eco-red #x1091) + (cheat-eco-green #x1092) + (cheat-eco-yellow #x1093) + (cheat-sidekick-alt #x1094) + (cheat-invinc #x1095) + (music-player #x10c0) + (scene-player #x10c1) + (play-credits #x10c2) + (scrapbook #x10c3) + (scene-0 #x1100) + (scene-255 #x11ff) + (hint-0 #x1200) + (hint-511 #x13ff) ;; GAME-TEXT-ID ENUM ENDS ) @@ -15534,7 +15536,7 @@ (button 8) ;; extra types for pc port - (normal-inverted) + (normal-flipped) (display-mode) (msaa) (frame-rate) diff --git a/game/assets/jak1/text/game_text_en.gs b/game/assets/jak1/text/game_text_en.gs index 6b19d8509c..4201dbe48d 100644 --- a/game/assets/jak1/text/game_text_en.gs +++ b/game/assets/jak1/text/game_text_en.gs @@ -8,12 +8,16 @@ "CAMERA OPTIONS") (#x1001 "NORMAL" "NORMAL") -(#x1002 "INVERTED" - "INVERTED") -(#x1003 "HORIZONTAL CAMERA CONTROL" - "HORIZONTAL CAMERA CONTROL") -(#x1004 "VERTICAL CAMERA CONTROL" - "VERTICAL CAMERA CONTROL") +(#x1002 "FLIPPED" + "FLIPPED") +(#x1003 "1ST-PERSON HORIZONTAL CAMERA" + "1ST-PERSON HORIZONTAL CAMERA") +(#x1004 "1ST-PERSON VERTICAL CAMERA" + "1ST-PERSON VERTICAL CAMERA") +(#x1005 "3RD-PERSON HORIZONTAL CAMERA" + "3RD-PERSON HORIZONTAL CAMERA") +(#x1006 "3RD-PERSON VERTICAL CAMERA" + "3RD-PERSON VERTICAL CAMERA") (#x100f "MISCELLANEOUS" "MISCELLANEOUS") diff --git a/goal_src/engine/camera/cam-states-dbg.gc b/goal_src/engine/camera/cam-states-dbg.gc index 813bf2daa9..499297e830 100644 --- a/goal_src/engine/camera/cam-states-dbg.gc +++ b/goal_src/engine/camera/cam-states-dbg.gc @@ -295,8 +295,8 @@ (when *camera-read-analog* (let ((f28-14 (analog-input (the-as int (-> *cpad-list* cpads arg3 leftx)) 128.0 48.0 110.0 -1.0)) (f30-14 (analog-input (the-as int (-> *cpad-list* cpads arg3 lefty)) 128.0 48.0 110.0 -1.0)) - (f24-0 (analog-input (the-as int (-> *cpad-list* cpads arg3 rightx)) 128.0 48.0 110.0 -1.0)) - (f26-0 (analog-input (the-as int (-> *cpad-list* cpads arg3 righty)) 128.0 48.0 110.0 -1.0)) + (f24-0 (analog-input-horizontal-first (the-as int (-> *cpad-list* cpads arg3 rightx)) 128.0 48.0 110.0 -1.0)) ;; changed for pc port + (f26-0 (analog-input-vertical-first (the-as int (-> *cpad-list* cpads arg3 righty)) 128.0 48.0 110.0 -1.0)) ;; changed for pc port ) (when *display-load-boundaries* (when (and (!= arg3 1) diff --git a/goal_src/engine/camera/cam-states.gc b/goal_src/engine/camera/cam-states.gc index b77a22b3a4..0ab9737523 100644 --- a/goal_src/engine/camera/cam-states.gc +++ b/goal_src/engine/camera/cam-states.gc @@ -433,6 +433,7 @@ (new 'static 'cam-eye-bank :rot-speed 364.0889 :max-degrees 12743.111 :max-fov 11650.845 :min-fov 6189.511) ) +;; main first-person camera (defstate cam-eye (camera-slave) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) @@ -484,7 +485,7 @@ (s5-0 (new-stack-matrix0)) ) (when *camera-read-analog* - (let ((f30-0 (analog-input + (let ((f30-0 (analog-input-horizontal-first ;; changed for pc port (the-as int (+ (-> *cpad-list* cpads 0 rightx) -256 (-> *cpad-list* cpads 0 leftx))) (the-as float 0.0) (the-as float 48.0) @@ -492,7 +493,7 @@ (the-as float -1.0) ) ) - (f0-0 (analog-input + (f0-0 (analog-input-vertical-first ;; changed for pc port (the-as int (+ (-> *cpad-list* cpads 0 righty) -256 (-> *cpad-list* cpads 0 lefty))) (the-as float 0.0) (the-as float 48.0) @@ -607,6 +608,7 @@ (define *CAM_BILLY-bank* (new 'static 'cam-billy-bank :rot-speed 364.0889 :tilt-degrees -1820.4445)) +;; first person camera for rat game (defstate cam-billy (camera-slave) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) @@ -658,7 +660,7 @@ 0.0 (when *camera-read-analog* (let ((f1-0 - (analog-input + (analog-input-horizontal-first ;; changed for pc port (the-as int (+ (-> *cpad-list* cpads 0 rightx) -256 (-> *cpad-list* cpads 0 leftx))) (the-as float 0.0) (the-as float 48.0) @@ -946,6 +948,7 @@ ) ) +;; third person cam used to focus on various entities (defbehavior cam-circular-position-into-max-angle camera-slave ((arg0 vector) (arg1 vector) (arg2 float)) (let* ((f30-0 (vector-normalize-ret-len! arg0 (the-as float 1.0))) (f26-0 (vector-normalize-ret-len! arg1 (the-as float 1.0))) @@ -954,7 +957,7 @@ (s3-0 (new 'stack-no-clear 'matrix)) ) (when *camera-read-analog* - (let ((f24-0 (analog-input + (let ((f24-0 (analog-input-horizontal-third ;; changed for pc port (the-as int (-> *cpad-list* cpads 0 rightx)) (the-as float 128.0) (the-as float 32.0) @@ -962,7 +965,7 @@ (* 8192.0 (-> *display* seconds-per-frame)) ) ) - (f1-2 (analog-input + (f1-2 (analog-input-vertical-third ;; changed for pc port (the-as int (-> *cpad-list* cpads 0 righty)) (the-as float 128.0) (the-as float 32.0) @@ -2324,11 +2327,16 @@ ((< 160 arg0) (set! f0-0 (fmin arg1 (* 0.0125 (+ -160.0 (the float arg0)) arg1))) ) - ) - f0-0 + ) + ;; changed for pc port, only used for Third-Person Vertical camera + (* + (if (and PC_PORT (-> *pc-settings* third-camera-vflip?)) 1.0 -1.0) + f0-0 ) ) +) +;; main third-person camera (defbehavior cam-string-joystick camera-slave () (set! (-> self options) (logand -257 (-> self options))) (let ((f28-0 (cam-dist-analog-input (the-as int (-> *cpad-list* cpads 0 righty)) (the-as float 0.05))) @@ -2419,7 +2427,7 @@ ) ) (when *camera-read-analog* - (let ((f0-29 (analog-input + (let ((f0-29 (analog-input-horizontal-third ;; changed for pc port (the-as int (-> *cpad-list* cpads 0 rightx)) (the-as float 128.0) (the-as float 32.0) @@ -3098,6 +3106,7 @@ (none) ) +;; third person camera (in debug menu, and fishermans-boat-player-control w/o autopilot?) (defstate cam-stick (camera-slave) :event cam-standard-event-handler @@ -3134,7 +3143,7 @@ (when (not (paused?)) (when *camera-read-analog* (let ((f0-0 - (analog-input + (analog-input-vertical-third ;; changed for pc port (the-as int (-> *cpad-list* cpads 0 righty)) (the-as float 128.0) (the-as float 32.0) @@ -3163,7 +3172,7 @@ (lerp (-> *CAM_STICK-bank* min-z) (-> *CAM_STICK-bank* max-z) (-> self view-off-param)) ) (when *camera-read-analog* - (let ((f0-16 (analog-input + (let ((f0-16 (analog-input-horizontal-third ;; changed for pc port (the-as int (-> *cpad-list* cpads 0 rightx)) (the-as float 128.0) (the-as float 32.0) diff --git a/goal_src/engine/game/generic-obs.gc b/goal_src/engine/game/generic-obs.gc index a56f9aa8d1..a82a41f2f8 100644 --- a/goal_src/engine/game/generic-obs.gc +++ b/goal_src/engine/game/generic-obs.gc @@ -1763,12 +1763,13 @@ ) ) +;; unused blue eco(?) launcher cam (defbehavior cam-launcher-joystick camera-slave () (when *camera-read-analog* (let ((s5-0 (new-stack-matrix0)) (gp-0 (vector-reset! (new 'stack-no-clear 'vector))) ) - (let* ((f0-0 (analog-input (the-as int (+ (-> *cpad-list* cpads 0 rightx) -128)) 0.0 48.0 110.0 -1.0)) + (let* ((f0-0 (analog-input-horizontal-third (the-as int (+ (-> *cpad-list* cpads 0 rightx) -128)) 0.0 48.0 110.0 -1.0)) ;; changed for pc port (f1-1 (* -546.13336 f0-0)) (f0-2 (fmin 546.13336 (fmax -546.13336 f1-1))) ) @@ -1840,10 +1841,11 @@ ) ) +;; blue eco launcher cam (not used for enclosed launchers like in jungle temple) (defbehavior cam-launcher-long-joystick camera-slave () (when *camera-read-analog* (let ((gp-0 (new-stack-matrix0))) - (let* ((f0-0 (analog-input (the-as int (+ (-> *cpad-list* cpads 0 rightx) -128)) 0.0 48.0 110.0 -1.0)) + (let* ((f0-0 (analog-input-horizontal-third (the-as int (+ (-> *cpad-list* cpads 0 rightx) -128)) 0.0 48.0 110.0 -1.0)) ;; changed for pc port (f1-1 (* -546.13336 f0-0)) (f0-2 (fmin 546.13336 (fmax -546.13336 f1-1))) ) diff --git a/goal_src/engine/ps2/pad.gc b/goal_src/engine/ps2/pad.gc index 2a9ad56298..2a5fdb148e 100644 --- a/goal_src/engine/ps2/pad.gc +++ b/goal_src/engine/ps2/pad.gc @@ -200,6 +200,38 @@ ) ) +(defmacro analog-input-vertical-first (in offset center-val max-val out-range) + "Same as analog-input but respects First-Person Vertical camera control setting." + `(* + (if (and PC_PORT (-> *pc-settings* first-camera-vflip?)) 1.0 -1.0) + (analog-input ,in ,offset ,center-val ,max-val ,out-range) + ) +) + +(defmacro analog-input-horizontal-first (in offset center-val max-val out-range) + "Same as analog-input but respects First-Person Horizontal camera control setting." + `(* + (if (and PC_PORT (-> *pc-settings* first-camera-hflip?)) 1.0 -1.0) + (analog-input ,in ,offset ,center-val ,max-val ,out-range) + ) +) + +(defmacro analog-input-vertical-third (in offset center-val max-val out-range) + "Same as analog-input but respects Third-Person Vertical camera control setting." + `(* + (if (and PC_PORT (-> *pc-settings* third-camera-vflip?)) 1.0 -1.0) + (analog-input ,in ,offset ,center-val ,max-val ,out-range) + ) +) + +(defmacro analog-input-horizontal-third (in offset center-val max-val out-range) + "Same as analog-input but respects Third-Person Horizontal camera control setting." + `(* + (if (and PC_PORT (-> *pc-settings* third-camera-hflip?)) 1.0 -1.0) + (analog-input ,in ,offset ,center-val ,max-val ,out-range) + ) +) + (defun cpad-set-buzz! ((pad cpad-info) (buzz-idx int) (buzz-amount int) (duration time-frame)) "Turn on vibration motor 'buzz-idx' for duration, at magnitude buzz-amount." (cond diff --git a/goal_src/engine/ui/progress-h.gc b/goal_src/engine/ui/progress-h.gc index ff111dc071..549a70d813 100644 --- a/goal_src/engine/ui/progress-h.gc +++ b/goal_src/engine/ui/progress-h.gc @@ -136,7 +136,7 @@ (button 8) ;; extra types for pc port - (normal-inverted) + (normal-flipped) (display-mode) (msaa) (frame-rate) diff --git a/goal_src/engine/ui/text-h.gc b/goal_src/engine/ui/text-h.gc index 6480f2e165..c416bc219a 100644 --- a/goal_src/engine/ui/text-h.gc +++ b/goal_src/engine/ui/text-h.gc @@ -457,66 +457,68 @@ (europe #xf11) ;; extra IDs for pc port - (camera-options #x1000) - (normal #x1001) - (inverted #x1002) - (camera-controls-horz #x1003) - (camera-controls-vert #x1004) - (misc-options #x100f) - (accessibility-options #x1010) - (money-starburst #x1011) - (ps2-options #x1020) - (ps2-load-speed #x1021) - (ps2-parts #x1022) - (discord-rpc #x1030) - (display-mode #x1031) - (windowed #x1032) - (borderless #x1033) - (fullscreen #x1034) - (game-resolution #x1035) - (resolution-fmt #x1036) - (ps2-aspect-ratio #x1037) - (ps2-aspect-ratio-msg #x1038) - (aspect-ratio-ps2 #x1039) - (fit-to-screen #x103a) - (msaa #x1050) - (x-times-fmt #x1051) - (2-times #x1052) - (4-times #x1053) - (8-times #x1054) - (16-times #x1055) - (frame-rate #x1060) - (lod-bg #x1070) - (lod-fg #x1071) - (lod-highest #x1072) - (lod-high #x1073) - (lod-mid #x1074) - (lod-low #x1075) - (lod-lowest #x1076) - (lod-ps2 #x1077) - (subtitles #x1078) - (hinttitles #x1079) - (subtitles-language #x107a) - (subtitles-speaker #x107b) - (speaker-always #x107c) - (speaker-never #x107d) - (speaker-auto #x107e) - (hint-log #x107f) - (cheats #x1080) - (cheat-eco-blue #x1090) - (cheat-eco-red #x1091) - (cheat-eco-green #x1092) - (cheat-eco-yellow #x1093) - (cheat-sidekick-alt #x1094) - (cheat-invinc #x1095) - (music-player #x10c0) - (scene-player #x10c1) - (play-credits #x10c2) - (scrapbook #x10c3) - (scene-0 #x1100) - (scene-255 #x11ff) - (hint-0 #x1200) - (hint-511 #x13ff) + (camera-options #x1000) + (normal #x1001) + (flipped #x1002) + (camera-controls-first-horz #x1003) + (camera-controls-first-vert #x1004) + (camera-controls-third-horz #x1005) + (camera-controls-third-vert #x1006) + (misc-options #x100f) + (accessibility-options #x1010) + (money-starburst #x1011) + (ps2-options #x1020) + (ps2-load-speed #x1021) + (ps2-parts #x1022) + (discord-rpc #x1030) + (display-mode #x1031) + (windowed #x1032) + (borderless #x1033) + (fullscreen #x1034) + (game-resolution #x1035) + (resolution-fmt #x1036) + (ps2-aspect-ratio #x1037) + (ps2-aspect-ratio-msg #x1038) + (aspect-ratio-ps2 #x1039) + (fit-to-screen #x103a) + (msaa #x1050) + (x-times-fmt #x1051) + (2-times #x1052) + (4-times #x1053) + (8-times #x1054) + (16-times #x1055) + (frame-rate #x1060) + (lod-bg #x1070) + (lod-fg #x1071) + (lod-highest #x1072) + (lod-high #x1073) + (lod-mid #x1074) + (lod-low #x1075) + (lod-lowest #x1076) + (lod-ps2 #x1077) + (subtitles #x1078) + (hinttitles #x1079) + (subtitles-language #x107a) + (subtitles-speaker #x107b) + (speaker-always #x107c) + (speaker-never #x107d) + (speaker-auto #x107e) + (hint-log #x107f) + (cheats #x1080) + (cheat-eco-blue #x1090) + (cheat-eco-red #x1091) + (cheat-eco-green #x1092) + (cheat-eco-yellow #x1093) + (cheat-sidekick-alt #x1094) + (cheat-invinc #x1095) + (music-player #x10c0) + (scene-player #x10c1) + (play-credits #x10c2) + (scrapbook #x10c3) + (scene-0 #x1100) + (scene-255 #x11ff) + (hint-0 #x1200) + (hint-511 #x13ff) ;; GAME-TEXT-ID ENUM ENDS ) diff --git a/goal_src/levels/jungle/jungle-mirrors.gc b/goal_src/levels/jungle/jungle-mirrors.gc index f428b3723c..7d82b8387b 100644 --- a/goal_src/levels/jungle/jungle-mirrors.gc +++ b/goal_src/levels/jungle/jungle-mirrors.gc @@ -654,6 +654,7 @@ :longest-edge (meters 0) ) +;; jungle eco connector first-person cam (defstate cam-periscope (camera-slave) :event cam-standard-event-handler @@ -694,7 +695,7 @@ (when (not (or (paused?) (-> (the-as periscope (-> self change-event-from 0)) aligned?))) (vector-reset! s5-0) (when *camera-read-analog* - (let ((f26-0 (analog-input + (let ((f26-0 (analog-input-horizontal-first ;; changed for pc port (the-as int (+ (-> *cpad-list* cpads 0 rightx) -256 (-> *cpad-list* cpads 0 leftx))) 0.0 48.0 @@ -702,7 +703,7 @@ -1.0 ) ) - (f0-0 (analog-input + (f0-0 (analog-input-vertical-first ;; changed for pc port (the-as int (+ (-> *cpad-list* cpads 0 righty) -256 (-> *cpad-list* cpads 0 lefty))) 0.0 48.0 diff --git a/goal_src/pc/pckernel-h.gc b/goal_src/pc/pckernel-h.gc index 5beba5c5eb..ab3e257d5b 100644 --- a/goal_src/pc/pckernel-h.gc +++ b/goal_src/pc/pckernel-h.gc @@ -269,8 +269,10 @@ (hinttitles? symbol) ;; if on, non-cutscene subtitles will show up (subtitle-language pc-subtitle-lang) ;; language for subtitles (subtitle-speaker? symbol) ;; #f (force off), #t (force on), auto (on for offscreen) - (camera-hflip? symbol) ;; horizontal camera invert - (camera-vflip? symbol) ;; vertical camera invert + (first-camera-hflip? symbol) ;; first-person horizontal camera flipped + (first-camera-vflip? symbol) ;; first-person vertical camera flipped + (third-camera-hflip? symbol) ;; third-person horizontal camera flipped + (third-camera-vflip? symbol) ;; third-person vertical camera flipped (money-starburst? symbol) ;; add a starburst to the money (fixes pc-fixes :inline) ;; extra game fixes @@ -444,8 +446,10 @@ (set! (-> obj hinttitles?) #t) (set! (-> obj subtitle-speaker?) 'auto) (set! (-> obj subtitle-language) (pc-subtitle-lang english)) - (set! (-> obj camera-hflip?) #f) - (set! (-> obj camera-vflip?) #f) + (set! (-> obj first-camera-hflip?) #f) + (set! (-> obj first-camera-vflip?) #f) + (set! (-> obj third-camera-hflip?) #f) + (set! (-> obj third-camera-vflip?) #f) (set! (-> obj money-starburst?) #f) (none)) diff --git a/goal_src/pc/pckernel.gc b/goal_src/pc/pckernel.gc index 2cc6d28870..8610d676ef 100644 --- a/goal_src/pc/pckernel.gc +++ b/goal_src/pc/pckernel.gc @@ -541,8 +541,10 @@ (("subtitles?") (set! (-> obj subtitles?) (file-stream-read-symbol file))) (("hinttitles?") (set! (-> obj hinttitles?) (file-stream-read-symbol file))) (("discord-rpc?") (set! (-> obj discord-rpc?) (file-stream-read-symbol file))) - (("camera-hflip?") (set! (-> obj camera-hflip?) (file-stream-read-symbol file))) - (("camera-vflip?") (set! (-> obj camera-vflip?) (file-stream-read-symbol file))) + (("first-camera-hflip?") (set! (-> obj first-camera-hflip?) (file-stream-read-symbol file))) + (("first-camera-vflip?") (set! (-> obj first-camera-vflip?) (file-stream-read-symbol file))) + (("third-camera-hflip?") (set! (-> obj third-camera-hflip?) (file-stream-read-symbol file))) + (("third-camera-vflip?") (set! (-> obj third-camera-vflip?) (file-stream-read-symbol file))) (("money-starburst?") (set! (-> obj money-starburst?) (file-stream-read-symbol file))) (("scenes-seen") (dotimes (i 197) @@ -660,8 +662,10 @@ (format file " (use-vis? ~A)~%" (-> obj use-vis?)) (format file " (skip-movies? ~A)~%" (-> obj skip-movies?)) (format file " (discord-rpc? ~A)~%" (-> obj discord-rpc?)) - (format file " (camera-hflip? ~A)~%" (-> obj camera-hflip?)) - (format file " (camera-vflip? ~A)~%" (-> obj camera-vflip?)) + (format file " (first-camera-hflip? ~A)~%" (-> obj first-camera-hflip?)) + (format file " (first-camera-vflip? ~A)~%" (-> obj first-camera-vflip?)) + (format file " (third-camera-hflip? ~A)~%" (-> obj third-camera-hflip?)) + (format file " (third-camera-vflip? ~A)~%" (-> obj third-camera-vflip?)) (format file " (money-starburst? ~A)~%" (-> obj money-starburst?)) (format file " (force-actors? ~A)~%" (-> obj force-actors?)) (format file " (subtitles? ~A)~%" (-> obj subtitles?)) diff --git a/goal_src/pc/progress-pc.gc b/goal_src/pc/progress-pc.gc index 1c912400fc..63004670b9 100644 --- a/goal_src/pc/progress-pc.gc +++ b/goal_src/pc/progress-pc.gc @@ -155,9 +155,11 @@ ) (define *camera-options* - (new 'static 'boxed-array :type game-option :length 3 :allocated-length 3 - (new 'static 'game-option :option-type (game-option-type normal-inverted) :name (game-text-id camera-controls-horz) :scale #t) - (new 'static 'game-option :option-type (game-option-type normal-inverted) :name (game-text-id camera-controls-vert) :scale #t) + (new 'static 'boxed-array :type game-option :length 5 :allocated-length 5 + (new 'static 'game-option :option-type (game-option-type normal-flipped) :name (game-text-id camera-controls-first-horz) :scale #t) + (new 'static 'game-option :option-type (game-option-type normal-flipped) :name (game-text-id camera-controls-first-vert) :scale #t) + (new 'static 'game-option :option-type (game-option-type normal-flipped) :name (game-text-id camera-controls-third-horz) :scale #t) + (new 'static 'game-option :option-type (game-option-type normal-flipped) :name (game-text-id camera-controls-third-vert) :scale #t) (new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t) ) ) @@ -506,8 +508,10 @@ (set! (-> *graphic-options-pc* 3 value-to-modify) (&-> *progress-state* aspect-ratio-choice)) (set! (-> *graphic-options-pc* 5 value-to-modify) (&-> *progress-carousell* int-backup)) (set! (-> *misc-options* 0 value-to-modify) (&-> *pc-settings* discord-rpc?)) - (set! (-> *camera-options* 0 value-to-modify) (&-> *pc-settings* camera-hflip?)) - (set! (-> *camera-options* 1 value-to-modify) (&-> *pc-settings* camera-vflip?)) + (set! (-> *camera-options* 0 value-to-modify) (&-> *pc-settings* first-camera-hflip?)) + (set! (-> *camera-options* 1 value-to-modify) (&-> *pc-settings* first-camera-vflip?)) + (set! (-> *camera-options* 2 value-to-modify) (&-> *pc-settings* third-camera-hflip?)) + (set! (-> *camera-options* 3 value-to-modify) (&-> *pc-settings* third-camera-vflip?)) (set! (-> *accessibility-options* 0 value-to-modify) (&-> *pc-settings* money-starburst?)) (set! (-> *gfx-ps2-options* 0 value-to-modify) (&-> *progress-carousell* int-backup)) (set! (-> *gfx-ps2-options* 1 value-to-modify) (&-> *progress-carousell* int-backup)) @@ -606,7 +610,7 @@ (case (-> options (-> obj option-index) option-type) (((game-option-type on-off) (game-option-type yes-no) - (game-option-type normal-inverted) + (game-option-type normal-flipped) (game-option-type aspect-native)) ;; pressed left on an on/off yes/no option (when (not (-> (the-as (pointer uint32) (-> options (-> obj option-index) value-to-modify)))) @@ -723,7 +727,7 @@ (case (-> options (-> obj option-index) option-type) (((game-option-type on-off) (game-option-type yes-no) - (game-option-type normal-inverted) + (game-option-type normal-flipped) (game-option-type aspect-native) ) ;; play sound if it was on 'yes' because we're going to 'no' now @@ -833,7 +837,7 @@ (set! (-> (the-as (pointer language-enum) (-> options (-> obj option-index) value-to-modify))) (-> *progress-state* language-backup)) ) - (((game-option-type on-off) (game-option-type normal-inverted)) + (((game-option-type on-off) (game-option-type normal-flipped)) (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) (-> *progress-state* on-off-backup)) ) @@ -939,7 +943,7 @@ (((game-option-type language-subtitles)) (set! (-> (the-as (pointer pc-subtitle-lang) (-> options (-> obj option-index) value-to-modify))) (-> *pc-settings* subtitle-language)) ) - (((game-option-type on-off) (game-option-type normal-inverted)) + (((game-option-type on-off) (game-option-type normal-flipped)) (set! (-> *progress-state* on-off-backup) (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify)))) ) @@ -1170,20 +1174,20 @@ (set! option-str (string-format "~D" (the int (-> (the-as (pointer float) (-> options index value-to-modify)))))) (set! option-x (+ (the int (* 2.5 (-> (the-as (pointer float) (-> options index value-to-modify))))) -100)) ) - (((game-option-type on-off) (game-option-type normal-inverted) (game-option-type aspect-native)) + (((game-option-type on-off) (game-option-type normal-flipped) (game-option-type aspect-native)) ;; on-off option or some other toggle. same logic as yes-no. changed to cut down code duping. (let ( (on-str (case (-> options index option-type) (((game-option-type on-off) (game-option-type aspect-native)) (lookup-text! *common-text* (game-text-id on) #f)) - (((game-option-type normal-inverted)) + (((game-option-type normal-flipped)) (lookup-text! *common-text* (game-text-id normal) #f)) )) (off-str (case (-> options index option-type) (((game-option-type on-off) (game-option-type aspect-native)) (lookup-text! *common-text* (game-text-id off) #f)) - (((game-option-type normal-inverted)) - (lookup-text! *common-text* (game-text-id inverted) #f)) + (((game-option-type normal-flipped)) + (lookup-text! *common-text* (game-text-id flipped) #f)) )) ) (if (-> (the-as (pointer symbol) (-> options index value-to-modify))) @@ -1290,6 +1294,7 @@ (game-option-type lod-bg) (game-option-type lod-fg) (game-option-type speaker) + (game-option-type normal-flipped) ) ;; slider and aspect ratio options just show their text (set! option-str (lookup-text! *common-text* (-> options index name) #f)) @@ -1302,14 +1307,6 @@ (lookup-text! *common-text* (game-text-id off) #f) ))) ) - (((game-option-type normal-inverted)) - ;; etc - (set! option-str (string-format "~S: ~S" (lookup-text! *common-text* (-> options index name) #f) - (if (-> (the-as (pointer uint32) (-> options index value-to-modify))) - (lookup-text! *common-text* (game-text-id normal) #f) - (lookup-text! *common-text* (game-text-id inverted) #f) - ))) - ) (((game-option-type language)) ;; language options show their text + language name (set! option-str (string-format "~S: ~S" (lookup-text! *common-text* (-> options index name) #f) @@ -1424,7 +1421,7 @@ (((progress-screen camera-options)) ;; camera options lines are a bit too big (hide-progress-icons) - (draw-options self 115 36 0.77) + (draw-options self 125 30 0.65) ) (((progress-screen gfx-ps2-options)) (hide-progress-icons)