From acae62c919517d28dcb19dd749f880d0d2f09c27 Mon Sep 17 00:00:00 2001 From: ManDude <7569514+ManDude@users.noreply.github.com> Date: Fri, 5 May 2023 02:31:27 +0100 Subject: [PATCH] fix blit size being wrong most of the time (#2620) --- goal_src/jak1/pc/pckernel-common.gc | 31 ++++++++++++++++++++++--- goal_src/jak1/pc/pckernel-h.gc | 6 +++-- goal_src/jak1/pc/pckernel.gc | 6 ++--- goal_src/jak2/engine/gfx/sky/sky-tng.gc | 4 ++-- goal_src/jak2/pc/pckernel.gc | 6 ++--- 5 files changed, 40 insertions(+), 13 deletions(-) diff --git a/goal_src/jak1/pc/pckernel-common.gc b/goal_src/jak1/pc/pckernel-common.gc index 2a0a25dc70..1747853b1c 100644 --- a/goal_src/jak1/pc/pckernel-common.gc +++ b/goal_src/jak1/pc/pckernel-common.gc @@ -141,7 +141,7 @@ (pc-get-window-scale (&-> obj dpi-x) (&-> obj dpi-y)) (when (-> obj use-vis?) - (if (= (get-game-setting! obj 'aspect-ratio) 'aspect4x3) + (if (= (get-game-setting obj 'aspect-ratio) 'aspect4x3) (set-aspect-ratio! obj ASPECT_4X3) (set-aspect-ratio! obj ASPECT_16X9) ) @@ -340,6 +340,31 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defmethod get-current-game-width pc-settings ((obj pc-settings)) + "return the current width in pixels of the visible portion of the game" + + (cond + ((= (-> obj display-mode) 'windowed) + (if (-> obj letterbox?) + (-> obj lbox-width) + (-> obj real-width))) + (else + (-> obj width)) + ) + ) +(defmethod get-current-game-height pc-settings ((obj pc-settings)) + "return the current height in pixels of the visible portion of the game" + + (cond + ((= (-> obj display-mode) 'windowed) + (if (-> obj letterbox?) + (-> obj lbox-height) + (-> obj real-height))) + (else + (-> obj height)) + ) + ) + (when *debug-segment* (defmethod draw pc-settings ((obj pc-settings) (buf dma-buffer)) @@ -718,7 +743,7 @@ (format file " (fps ~D)~%" (-> obj target-fps)) (format file " (msaa ~D)~%" (-> obj gfx-msaa)) - (format file " (aspect-state ~A ~D ~D ~A)~%" (get-game-setting! obj 'aspect-ratio) + (format file " (aspect-state ~A ~D ~D ~A)~%" (get-game-setting obj 'aspect-ratio) (-> obj aspect-custom-x) (-> obj aspect-custom-y) (-> obj aspect-ratio-auto?)) (format file " (display-mode ~A)~%" (-> obj display-mode)) @@ -764,7 +789,7 @@ (format file " (music-fadein? ~A)~%" (-> obj music-fadein?)) (format file " (music-fadeout? ~A)~%" (-> obj music-fadeout?)) (format file " (hinttitles? ~A)~%" (-> obj hinttitles?)) - (format file " (game-language ~D)~%" (get-game-language! obj)) + (format file " (game-language ~D)~%" (get-game-language obj)) (format file " (text-language ~D)~%" (-> obj text-language)) (format file " (subtitle-speaker ~A)~%" (-> obj subtitle-speaker?)) diff --git a/goal_src/jak1/pc/pckernel-h.gc b/goal_src/jak1/pc/pckernel-h.gc index e7ff7c5067..9744ae9a12 100644 --- a/goal_src/jak1/pc/pckernel-h.gc +++ b/goal_src/jak1/pc/pckernel-h.gc @@ -340,9 +340,11 @@ (set-frame-rate! (_type_ int) int) (set-monitor! (_type_ int) none) (set-game-setting! (_type_ symbol symbol) object) - (get-game-setting! (_type_ symbol) symbol) + (get-game-setting (_type_ symbol) symbol) (set-game-language! (_type_ language-enum) language-enum) - (get-game-language! (_type_) language-enum) + (get-game-language (_type_) language-enum) + (get-current-game-width (_type_) int) + (get-current-game-height (_type_) int) (read-from-file (_type_ string) symbol) (write-to-file (_type_ string) symbol) (handle-input-settings (_type_ file-stream) object) diff --git a/goal_src/jak1/pc/pckernel.gc b/goal_src/jak1/pc/pckernel.gc index 9d69c5a708..35be298399 100644 --- a/goal_src/jak1/pc/pckernel.gc +++ b/goal_src/jak1/pc/pckernel.gc @@ -29,7 +29,7 @@ ) ) -(defmethod get-game-setting! pc-settings-jak1 ((obj pc-settings-jak1) (setting symbol)) +(defmethod get-game-setting pc-settings-jak1 ((obj pc-settings-jak1) (setting symbol)) (case setting (('video-mode) (-> *setting-control* default video-mode) @@ -38,7 +38,7 @@ (-> *setting-control* default aspect-ratio) ) (else - (format #t "unknown setting ~A to get-game-setting!" setting) + (format #t "unknown setting ~A to get-game-setting" setting) #f) ) ) @@ -47,7 +47,7 @@ (set! (-> *setting-control* default language) lang) ) -(defmethod get-game-language! pc-settings-jak1 ((obj pc-settings-jak1)) +(defmethod get-game-language pc-settings-jak1 ((obj pc-settings-jak1)) (-> *setting-control* default language) ) diff --git a/goal_src/jak2/engine/gfx/sky/sky-tng.gc b/goal_src/jak2/engine/gfx/sky/sky-tng.gc index 9453ed43b5..be90437e8c 100644 --- a/goal_src/jak2/engine/gfx/sky/sky-tng.gc +++ b/goal_src/jak2/engine/gfx/sky/sky-tng.gc @@ -918,7 +918,7 @@ vf31: cam 0 (premultiplied by hmge) (set! a1-46 128) (set! a2-55 128) ) - (let ((v1-57 (* (-> *pc-settings* lbox-height) 16)) + (let ((v1-57 (* (get-current-game-height *pc-settings*) 16)) (a3-16 0) ) (let ((t1-22 (the-as (inline-array qword) (-> s4-1 base))) @@ -928,7 +928,7 @@ vf31: cam 0 (premultiplied by hmge) (set-vector! (-> t1-22 2 vector4w) a0-57 a1-46 a2-55 128) (set-vector! (-> t1-22 3 vector4w) (* 0 16) v1-57 0 0) (set-vector! (-> t1-22 4 vector4w) (* 1792 16) #x7300 0 0) - (set-vector! (-> t1-22 5 vector4w) (* (-> *pc-settings* lbox-width) 16) a3-16 0 0) + (set-vector! (-> t1-22 5 vector4w) (* (get-current-game-width *pc-settings*) 16) a3-16 0 0) (set-vector! (-> t1-22 6 vector4w) (* 2304 16) #x8d00 0 0) (&+! (-> s4-1 base) 112) ) diff --git a/goal_src/jak2/pc/pckernel.gc b/goal_src/jak2/pc/pckernel.gc index 75e56ebcad..9c68a83c58 100644 --- a/goal_src/jak2/pc/pckernel.gc +++ b/goal_src/jak2/pc/pckernel.gc @@ -28,7 +28,7 @@ ) ) -(defmethod get-game-setting! pc-settings-jak2 ((obj pc-settings-jak2) (setting symbol)) +(defmethod get-game-setting pc-settings-jak2 ((obj pc-settings-jak2) (setting symbol)) (case setting (('video-mode) (-> *setting-control* user-default video-mode) @@ -37,7 +37,7 @@ (-> *setting-control* user-default aspect-ratio) ) (else - (format #t "unknown setting ~A to get-game-setting!" setting) + (format #t "unknown setting ~A to get-game-setting" setting) #f) ) ) @@ -46,7 +46,7 @@ (set! (-> *setting-control* user-default language) lang) ) -(defmethod get-game-language! pc-settings-jak2 ((obj pc-settings-jak2)) +(defmethod get-game-language pc-settings-jak2 ((obj pc-settings-jak2)) (get-current-language) )