From a18d74c6fdf8bff5f38c2543a0ca7ac91c61d275 Mon Sep 17 00:00:00 2001 From: Grateful Forest <168700820+gratefulforest@users.noreply.github.com> Date: Mon, 13 Apr 2026 09:15:05 +0930 Subject: [PATCH] jak3: map fixes for pc port (#4199) Three fixes for fullscreen map screens: **1. Expand scanlines to cover whole screen** Instead of just the 4:3 square, scales dynamically without overshooting. **2. Fix map icon stretching** On a real PS2, map icons squash incorrectly at 16:9, gets worse with custom aspects. Fixed but preserves original game bug at PS2 16:9. **3. Stop fast map scrolling at high FPS** Same map scroll speed regardless of framerate. Fixes #4195 --- goal_src/jak3/engine/ui/bigmap.gc | 8 +++--- goal_src/jak3/pc/progress/progress-pc.gc | 31 ++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/goal_src/jak3/engine/ui/bigmap.gc b/goal_src/jak3/engine/ui/bigmap.gc index 5139a0865c..7953690f10 100644 --- a/goal_src/jak3/engine/ui/bigmap.gc +++ b/goal_src/jak3/engine/ui/bigmap.gc @@ -298,7 +298,8 @@ (s2-0 (new-stack-vector0)) (s3-2 (new-stack-vector0)) ) - (let ((f26-0 (-> *video-params* relative-x-scale)) + ;; og-preserve-this remove stretch on non-PS2 aspects + (let ((f26-0 (if (-> *pc-settings* use-vis?) (-> *video-params* relative-x-scale) 1.0)) (f28-0 (-> *video-params* relative-x-scale-reciprical)) ) (-> arg1 class) @@ -700,8 +701,9 @@ (let ((f30-0 (analog-input (the-as int (-> s5-0 leftx)) 128.0 32.0 110.0 4.0)) (f0-0 (analog-input (the-as int (-> s5-0 lefty)) 128.0 32.0 110.0 4.0)) ) - (+! (-> this scroll x) f30-0) - (+! (-> this scroll y) f0-0) + ;; og:preserve-this high fps map scroll + (+! (-> this scroll x) (* f30-0 DISPLAY_FPS_RATIO)) + (+! (-> this scroll y) (* f0-0 DISPLAY_FPS_RATIO)) ) ) ) diff --git a/goal_src/jak3/pc/progress/progress-pc.gc b/goal_src/jak3/pc/progress/progress-pc.gc index 90db6413f9..55af10a3c0 100644 --- a/goal_src/jak3/pc/progress/progress-pc.gc +++ b/goal_src/jak3/pc/progress/progress-pc.gc @@ -293,6 +293,37 @@ (none) ) +(defun begin-scan ((arg0 hud-box) (arg1 progress)) + (cond + ;; og:preserve-this branch for custom-aspect bigmap + ((and (not (-> *pc-settings* use-vis?)) (or (= (-> arg1 current) 'bigmap) (= (-> arg1 next) 'bigmap))) + (set! (-> arg0 box min x) (* 256.0 (- 1.0 (/ 1.0 (-> *video-params* relative-x-scale))))) + (set! (-> arg0 box min y) 0.0) + (set! (-> arg0 box max x) (+ 256.0 (* 256.0 (/ 1.0 (-> *video-params* relative-x-scale))))) + (set! (-> arg0 box max y) 416.0) + ) + ((or (= (-> arg1 current) 'bigmap) (= (-> arg1 next) 'bigmap)) + (set! (-> arg0 box min x) 0.0) + (set! (-> arg0 box min y) 0.0) + (set! (-> arg0 box max x) 512.0) + (set! (-> arg0 box max y) 416.0) + ) + ((= (get-aspect-ratio) 'aspect16x9) + (set! (-> arg0 box min x) 79.0) + (set! (-> arg0 box min y) 38.0) + (set! (-> arg0 box max x) 434.0) + (set! (-> arg0 box max y) 362.0) + ) + (else + (set! (-> arg0 box min x) 70.0) + (set! (-> arg0 box min y) 72.0) + (set! (-> arg0 box max x) 444.0) + (set! (-> arg0 box max y) 329.0) + ) + ) + 0 + ) + (defun end-scan ((arg0 hud-box) (arg1 float)) (with-dma-buffer-add-bucket ((s5-0 (-> *display* frames (-> *display* on-screen) global-buf)) (bucket-id bucket582)