diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index 7d59cf625f..837e2986fc 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -1470,6 +1470,9 @@ (aspect-ratio-ps2 #x1039) (fit-to-screen #x103a) (vsync #x103b) + (aspect4x3-ps2 #x103c) + (aspect16x9-ps2 #x103d) + (aspect-fmt #x103e) (msaa #x1050) (x-times-fmt #x1051) (2-times #x1052) diff --git a/game/assets/jak1/subtitle/game_subtitle_en.gd b/game/assets/jak1/subtitle/game_subtitle_en.gd index 6e754ea08e..a4395b4d4b 100644 --- a/game/assets/jak1/subtitle/game_subtitle_en.gd +++ b/game/assets/jak1/subtitle/game_subtitle_en.gd @@ -1089,7 +1089,7 @@ (565 "KEIRA" "NO, NO! I MEAN ROCK VILLAGE IS BEING BOMBARDED WITH FLAMING BOULDERS!") (726) (807 "KEIRA" "OH! AND IT LOOKS LIKE THE BLUE SAGE IS WORKING ON A LEVITATION MACHINE TO MOVE THEM.") - (957 :offscreen "KEIRA" "ASSUMING IT'S OPERATIONAL,WE'RE GONNA NEED POWER CELLS TO FUEL IT.") + (957 :offscreen "KEIRA" "ASSUMING IT'S OPERATIONAL, WE'RE GONNA NEED POWER CELLS TO FUEL IT.") (1070 "KEIRA" "I GUESS YOU TWO ARE GOING TO HAVE TO FIND SOME MORE.") (1145 "SAGE" "WE'D BETTER TAKE A LOOK AT HIS NOTES.") (1220 :offscreen "SAGE" "JAK, GO CHECK ON THE VILLAGERS, THEN COME BACK AND GIVE US AN UPDATE.") diff --git a/game/assets/jak1/text/game_text_en.gs b/game/assets/jak1/text/game_text_en.gs index 2a5bcaf420..c167253551 100644 --- a/game/assets/jak1/text/game_text_en.gs +++ b/game/assets/jak1/text/game_text_en.gs @@ -86,6 +86,12 @@ "FIT TO SCREEN") (#x103b "V-SYNC" "V-SYNC") +(#x103c "4X3 (PS2)" + "4X3 (PS2)") +(#x103d "16X9 (PS2)" + "16X9 (PS2)") +(#x103e "~DX~D" + "~DX~D") (#x1050 "MSAA" "MSAA") diff --git a/goal_src/jak1/engine/ui/text-h.gc b/goal_src/jak1/engine/ui/text-h.gc index f65e3b3995..457bcf3b6b 100644 --- a/goal_src/jak1/engine/ui/text-h.gc +++ b/goal_src/jak1/engine/ui/text-h.gc @@ -620,6 +620,9 @@ (aspect-ratio-ps2 #x1039) (fit-to-screen #x103a) (vsync #x103b) + (aspect4x3-ps2 #x103c) + (aspect16x9-ps2 #x103d) + (aspect-fmt #x103e) (msaa #x1050) (x-times-fmt #x1051) (2-times #x1052) diff --git a/goal_src/jak1/pc/progress-pc.gc b/goal_src/jak1/pc/progress-pc.gc index 75808bc58b..e4438737dd 100644 --- a/goal_src/jak1/pc/progress-pc.gc +++ b/goal_src/jak1/pc/progress-pc.gc @@ -109,7 +109,7 @@ ) (define *game-options-pc* (new 'static 'boxed-array :type game-option - ;(new 'static 'game-option :option-type (game-option-type on-off) :name (game-text-id vibrations) :scale #t) + (new 'static 'game-option :option-type (game-option-type on-off) :name (game-text-id vibrations) :scale #t) (new 'static 'game-option :option-type (game-option-type on-off) :name (game-text-id play-hints) :scale #t) (new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id camera-options) :scale #t :param3 (game-option-menu camera-options)) (new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id accessibility-options) :scale #t :param3 (game-option-menu accessibility-options)) @@ -122,8 +122,6 @@ (new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id game-resolution) :scale #t :param3 (game-option-menu resolution)) (new 'static 'game-option :option-type (game-option-type display-mode) :name (game-text-id display-mode) :scale #t) (new 'static 'game-option :option-type (game-option-type on-off) :name (game-text-id vsync) :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-native) :name (game-text-id ps2-aspect-ratio) :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-ratio) :name (game-text-id aspect-ratio-ps2) :scale #t) (new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id aspect-ratio) :scale #t :param3 (game-option-menu aspect-ratio)) ;(new 'static 'game-option :option-type (game-option-type msaa) :name (game-text-id msaa) :scale #t) (new 'static 'game-option :option-type (game-option-type frame-rate) :name (game-text-id frame-rate) :scale #t) @@ -136,8 +134,6 @@ (new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id game-resolution) :scale #t :param3 (game-option-menu resolution)) (new 'static 'game-option :option-type (game-option-type display-mode) :name (game-text-id display-mode) :scale #t) (new 'static 'game-option :option-type (game-option-type on-off) :name (game-text-id vsync) :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-native) :name (game-text-id ps2-aspect-ratio) :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-ratio) :name (game-text-id aspect-ratio-ps2) :scale #t) (new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id aspect-ratio) :scale #t :param3 (game-option-menu aspect-ratio)) ;(new 'static 'game-option :option-type (game-option-type msaa) :name (game-text-id msaa) :scale #t) (new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id ps2-options) :scale #t :param3 (game-option-menu gfx-ps2-options)) @@ -177,10 +173,13 @@ (define *aspect-ratio-options* (new 'static 'boxed-array :type game-option (new 'static 'game-option :option-type (game-option-type aspect-new) :name (game-text-id fit-to-screen) :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-new) :name (game-text-id resolution-fmt) :param1 4.0 :param2 3.0 :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-new) :name (game-text-id resolution-fmt) :param1 16.0 :param2 9.0 :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-new) :name (game-text-id resolution-fmt) :param1 21.0 :param2 9.0 :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-new) :name (game-text-id resolution-fmt) :param1 64.0 :param2 27.0 :scale #t) + (new 'static 'game-option :option-type (game-option-type aspect-new) :name (game-text-id aspect-fmt) :param1 4.0 :param2 3.0 :scale #t) + (new 'static 'game-option :option-type (game-option-type aspect-new) :name (game-text-id aspect-fmt) :param1 16.0 :param2 9.0 :scale #t) + (new 'static 'game-option :option-type (game-option-type aspect-new) :name (game-text-id aspect4x3-ps2) :param1 -1.0 :scale #t) + (new 'static 'game-option :option-type (game-option-type aspect-new) :name (game-text-id aspect16x9-ps2) :param1 -2.0 :scale #t) + (new 'static 'game-option :option-type (game-option-type aspect-new) :name (game-text-id aspect-fmt) :param1 16.0 :param2 10.0 :scale #t) + (new 'static 'game-option :option-type (game-option-type aspect-new) :name (game-text-id aspect-fmt) :param1 21.0 :param2 9.0 :scale #t) + (new 'static 'game-option :option-type (game-option-type aspect-new) :name (game-text-id aspect-fmt) :param1 64.0 :param2 27.0 :scale #t) (new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t) ) ) @@ -285,9 +284,8 @@ (define-perm *temp-options-alloced* symbol #f) -(defconstant RESOLUTIONS 6) -(define *resolutions* (new 'static 'array int32 RESOLUTIONS - 640 720 768 800 960 1080)) +(define *resolutions* (new 'static 'boxed-array :type int32 + 640 720 768 800 900 960 1080)) ;; this is to avoid changing the value of *temp-options* or reallocating the options when reloading file (unless *temp-options-alloced* @@ -306,13 +304,13 @@ (until found - (dotimes (i RESOLUTIONS) + (dotimes (i (-> *resolutions* length)) (let ((thisr (the int (* mult (the float (-> *resolutions* i)))))) (cond ((< sy thisr) (if (zero? i) (*! mult 0.5)) - (set! i RESOLUTIONS) + (set! i (-> *resolutions* length)) (true! found) ) (else @@ -409,7 +407,7 @@ (set! aspect (-> *pc-settings* aspect-ratio)) (until (or done? (= (length *temp-options*) max-options)) - (countdown (i RESOLUTIONS) + (countdown (i (-> *resolutions* length)) (let* ((thisr (the int (* mult (the float (-> *resolutions* i))))) (thisx (the int (* aspect (the float thisr)))) (thisy thisr) @@ -627,19 +625,15 @@ (set! (-> *sound-options* 2 value-to-modify) (&-> *setting-control* default dialog-volume)) (set! (-> *yes-no-options* 0 value-to-modify) (&-> *progress-state* yes-no-choice)) ;; our options! - ;(set! (-> *game-options-pc* 0 value-to-modify) (&-> *setting-control* default vibration)) - (set! (-> *game-options-pc* 0 value-to-modify) (&-> *setting-control* default play-hints)) + (set! (-> *game-options-pc* 0 value-to-modify) (&-> *setting-control* default vibration)) + (set! (-> *game-options-pc* 1 value-to-modify) (&-> *setting-control* default play-hints)) (set! (-> *graphic-options-pc* 1 value-to-modify) (&-> *progress-carousell* int-backup)) (set! (-> *graphic-options-pc* 2 value-to-modify) (&-> *pc-settings* vsync?)) - (set! (-> *graphic-options-pc* 3 value-to-modify) (&-> *progress-carousell* aspect-native-choice)) - (set! (-> *graphic-options-pc* 4 value-to-modify) (&-> *progress-state* aspect-ratio-choice)) - ;(set! (-> *graphic-options-pc* 6 value-to-modify) (&-> *progress-carousell* int-backup)) - (set! (-> *graphic-options-pc* 6 value-to-modify) (&-> *progress-carousell* int-backup)) + ;(set! (-> *graphic-options-pc* 4 value-to-modify) (&-> *progress-carousell* int-backup)) + (set! (-> *graphic-options-pc* 4 value-to-modify) (&-> *progress-carousell* int-backup)) (set! (-> *graphic-options-no-frame-rate-pc* 1 value-to-modify) (&-> *progress-carousell* int-backup)) (set! (-> *graphic-options-no-frame-rate-pc* 2 value-to-modify) (&-> *pc-settings* vsync?)) - (set! (-> *graphic-options-no-frame-rate-pc* 3 value-to-modify) (&-> *progress-carousell* aspect-native-choice)) - (set! (-> *graphic-options-no-frame-rate-pc* 4 value-to-modify) (&-> *progress-state* aspect-ratio-choice)) - ;(set! (-> *graphic-options-pc* 6 value-to-modify) (&-> *progress-carousell* int-backup)) + ;(set! (-> *graphic-options-pc* 4 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* first-camera-h-inverted?)) (set! (-> *camera-options* 1 value-to-modify) (&-> *pc-settings* first-camera-v-inverted?)) @@ -758,8 +752,8 @@ (when (not (-> (the-as (pointer uint32) (-> options (-> obj option-index) value-to-modify)))) ;; it was on 'off' or 'no' (set! sound? #t) - ;; vibrate if this toggles vibration. broken in original game. - (if (= (-> options (-> obj option-index) value-to-modify) (&-> *setting-control* default vibration)) + ;; vibrate if this toggles vibration. this doesn't actually work AND it checks the wrong field. + (if (= (-> options (-> obj option-index) value-to-modify) (&-> *setting-control* current vibration)) (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.3)) ) ) @@ -1095,9 +1089,27 @@ ;; aspect ratio button. (let ((newx (the int (-> options (-> obj option-index) param1))) (newy (the int (-> options (-> obj option-index) param2)))) - (if (= (-> options (-> obj option-index) name) (game-text-id fit-to-screen)) - (true! (-> *pc-settings* aspect-ratio-auto?)) - (set-aspect! *pc-settings* newx newy))) + (cond + ((= (-> options (-> obj option-index) name) (game-text-id fit-to-screen)) + (set-aspect! *pc-settings* 4 3) + (false! (-> *pc-settings* use-vis?)) + (set-aspect-ratio 'aspect4x3) + (true! (-> *pc-settings* aspect-ratio-auto?)) + ) + ((= newx -1.0) + (set-aspect! *pc-settings* 4 3) + (true! (-> *pc-settings* use-vis?)) + (set! (-> *setting-control* default aspect-ratio) 'aspect4x3) + (set-aspect-ratio 'aspect4x3) + ) + ((= newx -2.0) + (set-aspect! *pc-settings* 4 3) + (true! (-> *pc-settings* use-vis?)) + (set! (-> *setting-control* default aspect-ratio) 'aspect16x9) + (set-aspect-ratio 'aspect16x9) + ) + (else + (set-aspect! *pc-settings* newx newy)))) (cpad-clear! 0 x) (cpad-clear! 0 circle) (cpad-clear! 0 square)