Commit Graph

1458 Commits

Author SHA1 Message Date
Tyler Wilding 704972dd6a decomp: resolve first batch of trivial files (#4266) 2026-05-08 18:54:05 -04:00
Hat Kid 580b190371 jak3: fix dark eco vent powerup anim (#4269)
Yet another case of the PS2 getting insanely lucky with buggy ND code,
the eco vents send an event to Jak to make him go into the powerup
state, but do not pass any event arguments which determine what
animation to play and at what speed/start frame. For the dark eco vents,
PS2 manages to somehow get the correct value of `7`, but we are not so
lucky.

As a side effect of this fix, we also get the originally intended
behavior for the light eco vents of playing the full powerup animation
from the start at a slower speed, rather than the much shorter one you
see on PS2.

Closes #4268
2026-05-06 04:29:15 +02:00
Hat Kid c4bc4d3ff4 jak3: fix region regression (#4264) 2026-05-04 21:47:47 +02:00
Aloqas 553edd3e68 jak2/jak3: Add subtitle speakers (#4230)
Adds subtitle speaker names to jak2/jak3 cutscenes, as well as the
progress menu option

<img width="962" height="752" alt="Näyttökuva 2026-04-18 005744"
src="https://github.com/user-attachments/assets/66b1cc46-9623-4e43-ad65-df7302a0156d"
/>
2026-05-04 18:49:08 +02:00
Hat Kid e6260e48ab decompiler: support animation export and support master art groups in build-actor tool (#4260)
Adds support for exporting animations for foreground models. It's not
perfect and doesn't handle the Jak 2/3 animations very well in some
cases (scale can often get messed up, especially for the LZO compressed
ones, I have no idea what is going on with the data in those art groups
sometimes, so that'll have to be revisited later...), but it does a
decent job on Jak 1.

Additionally, the `build-actor` tool has also been changed to support
setting the `master-art-group-name` and `master-art-group-index` fields
to allow for custom art groups to link their animations to a different
master art group, which lets you add custom animations to vanilla art
groups.
2026-05-04 17:19:41 +02:00
Matt Dallmeyer a7844c9b5d [jak3] Add roboskip autosplit, allow heromode secret selection (#4257)
addresses a couple issues from
https://github.com/open-goal/jak-project/issues/4214



https://github.com/user-attachments/assets/cc34aa77-3c5e-4b50-9d8b-4a1bf9f58353



https://github.com/user-attachments/assets/91edb7eb-5aab-497a-bdb5-8f6ffc00cbfd
2026-05-04 13:10:02 +02:00
Matt Dallmeyer 5b75cb74df [jak3] Prevent NaN propagation in spydroid attack state (#4237)
Another patch to prevent NaN propagation. Still doesn't address the root
cause of the NaNs, but should fix some mission behavior.

In some cases, crimson-guards will [return NaN vectors for their
`bullseye-joint`](https://github.com/open-goal/jak-project/blob/1dff57182004f058848b26f0f8bfbb111a96e480/goal_src/jak3/engine/ai/enemy.gc#L178-L183).
I suspect the root cause of these NaNs may be related to the guards
missing their torsos

<img width="1202" height="692" alt="image"
src="https://github.com/user-attachments/assets/c1a91266-cd50-44f9-80cb-de9b9415d36b"
/>

In the [spydroid's `attack`
state](https://github.com/open-goal/jak-project/blob/1dff57182004f058848b26f0f8bfbb111a96e480/goal_src/jak3/levels/common/enemy/spydroid.gc#L743-L772),
this NaN value will end up propagating to the spydroid's position.

This in turn causes issues like the infinite looping addressed in #4225.
Or another issue in "Defend HQ From Attack" - every spydroid spawned by
the task manager can end up with NaN positions. The spydroids will be
nowhere to be seen, but the task-manager still considers them alive and
won't spawn any other KG enemies.
2026-05-04 13:09:10 +02:00
Nick0778 fea7d3a15d [jak3] Fix Daxter's death quotes scenes not playing (#4243)
This PR fixes a bug in `target-death.gc` that was causing Daxter's death
quotes scenes to not play in OpenGoal.

Basically, these scenes weren’t working because `sv-96` was assigned an
invalid level, and as a result the `s4-1` check always returned `#f`.
So, the `(when s4-1 ...)` block that contains the logic for these scenes
was never executed.

<img width="1118" height="911" alt="png1"
src="https://github.com/user-attachments/assets/b92505f0-fa9b-4499-a113-b7524265c314"
/>

## Before the fix:


https://github.com/user-attachments/assets/58e2f412-814b-40ff-ab64-d22054a7232e

## After the fix:


https://github.com/user-attachments/assets/bf6ac0da-1a62-4cb4-b363-20af898dac7f
2026-04-26 16:10:15 -04:00
Tyler Wilding 6238f7f567 various decomp cleanups (#4247)
Removed a bunch of stuff, old scripts, cleaned up some decompiler
errors, added a new tool that should help with a future PR
2026-04-25 23:35:19 -04:00
Hat Kid 1dff571820 game: support splash screens (#4236)
Closes #1496 

This brings back the SCE splash screens. Also adds a runtime flag
`-nosplash` to skip it. Right now, it's on by default, but open to
changes on that (maybe always disable in debug to speed up start times,
etc.).
2026-04-20 03:19:08 +02:00
Matt Dallmeyer a63cb1d212 [jak2/jak3] Fix off by one bug in trick display (#4224)
fixes #3150 

the scoring system counts up to 16 (point-scoring) tricks, but the
opengoal-secret display system was ignoring the 16th one, causing score
discrepancies
2026-04-19 00:47:36 +02:00
water111 637990314b wip: better stack var support (#4222)
Closes #736

---------

Co-authored-by: Hat Kid <6624576+Hat-Kid@users.noreply.github.com>
2026-04-19 00:14:44 +02:00
Matt Dallmeyer 3e3542cb10 [jak3] Prevent NaN-induced infinite loop in ff-squad-control bubble sort (#4225)
This bit of ff-squad-control code is trying to sort guards based on
their distance from some shared target. In some cases the
`vector-vector-distance` returns NaN. In the bubble sort below this
change, the < operation always returns #t when NaN is involved, so the
NaN guard gets swapped back and forth endlessly, causing an infinite
loop.
2026-04-16 13:52:51 +01:00
Matt Dallmeyer 2f51e355dd [jak3] Implement trick display text secret (#4208)
ported the implementation from jak 2 into jak3 pretty much exactly.
added a new color for L2 tricks, and shrunk the text/width a bit so it
wouldn't end up covered by the minimap.

also fixed small bug in jak 2 (and 3) where dismounting jetboard
wouldn't reset the trick display, so displayed score wouldn't match the
granted score

---------

Co-authored-by: Tyler Wilding <xtvaser@gmail.com>
2026-04-14 01:40:27 -04:00
Hat Kid 7145890eee jak3: high fps fix for mech carry drop (#4223)
Closes #4205
2026-04-14 01:26:44 -04:00
Matt Dallmeyer 480fdaa282 [jak3] Fix some things relating to resetting speedruns (#4216)
addresses:
- starting new game from title screen with speedrun mode on -> shows
intro cutscene, doesn't start autosplitter, verification text not shown
- resetting run during intro cutscene leaves weird desert state across
training course (not an issue if we fix^)
- reset in hero mode after completing training course -> verification
text not shown
- resetting during tentacle grab leaves the water bubble sound playing
forever
2026-04-14 00:52:22 -04:00
Matt Dallmeyer d961e793ee [jak3] Make surround sound not the default (#4217) 2026-04-13 19:27:21 -04:00
Grateful Forest a18d74c6fd 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
2026-04-12 19:45:05 -04:00
Alex fedd27ebfd Adjust projectile focus fix to also work on semi-solid targets + fix tracking issues with dm-tentacles (#4207)
Fixes #4177 

Also additionally fixes the setting not doing anything to the
terraformer tentacles. Tentacles are no longer considered 'solid' when
dead while the setting is on.
2026-04-12 00:57:55 +01:00
Matt Dallmeyer c31662ef89 [jak3] Fix secrets option on title screen (#4194)
Fixes 2 things:
- secrets option on title screen not hidden if no secrets unlocked
(missing check, we just always drew it)
- off-by-one bug in the "skip over secrets option" logic


https://github.com/user-attachments/assets/0f94f310-ca23-4ba8-91d5-7c2c10793c33

This approach mirrors what we did in Jak 2, but feels a bit hacky... I
have another branch
[here](https://github.com/open-goal/jak-project/compare/master...dallmeyer:jak-project:b/title-secrets?expand=1)
which takes the ND approach of just switching between 2 static menus
like:
```lisp
     (if (memcard-unlocked-secrets? #f #f)
      (set! (-> this current-options) *title-secrets-pc*)
      (set! (-> this current-options) *title-pc*))
```
2026-04-09 20:14:43 -04:00
Hat Kid cfe3ec9229 decomp3: cam-debug, hover-nav-edit, pilot-recorder (#4203)
Should be the last remaining files aside from `anim-tester` which we
already have a better replacement for.
2026-04-09 06:27:00 +02:00
Matt Dallmeyer d2e9e6ea45 [jak2/jak3] Check target state != target-continue, instead of = target-stance, for speedrun post-init things (#4193)
Without this change, in hero mode speedruns you aren't given jetboard,
guns, etc if you are immediately moving when the game starts

(left side has these changes, right side does not)


https://github.com/user-attachments/assets/d581ca13-3734-4389-9986-0f815c76e906
2026-04-08 18:36:22 +02:00
Hat Kid 3f686854e6 decomp3: vivsol-edit, editable and nav mesh editor files (#4200)
- `visvol-edit`
- `editable`
- `editable-player`
- `mysql-nav-graph`
- `nav-graph-editor`
- `nav-mesh-editor-h`
- `nav-mesh-editor`

The SQL data is not filled in yet.
2026-04-08 17:42:13 +02:00
Tyler Wilding bd5bfe837b jak3: remove -debug from critical load-game logging function (#4187)
Closes #4183

Jak 2 didn't have this logging call so its fine, but jak 3 added this
which is a nice idea. TLDR - there's some settings we stopped loading
from the memcard as the source of truth, this function (`load-game...`)
skips said portions of the save file and in jak 3, includes a helpful
log message.

It constructed that log message by calling a `defun-debug` function,
which means that in retail mode, that function is gone, instead of that
being a straight forward crash, it returns garbage, which is passed to
`format`, which causes the crash. Fix is simple, make it a non-debug
function so it's always available.

Feels like something that could be improved about `goalc` but,
be-careful with debug only functions is the take away.

This would seem to impact any save file that wrote these related tags
(and thus, triggered the logging code) but it might also be semi-random
with how unlucky you get with the returned garbage addr
2026-04-06 01:10:49 -04:00
Matt Dallmeyer 147765fa23 [jak3] Update progress code to use DPROCESS_STACK_SIZE (#4186)
Mirroring [changes from
jak2](https://github.com/open-goal/jak-project/commit/ba12d804f7a6bed6e3c3dd7b6928bce5c02edb86#diff-a2dfc3363ae440ca32fdf57325fdbcd942fc0155877df70f12c447b9924d54a4),
this was actually causing crashes when opening Mission menu in modbase
2026-04-06 03:04:07 +02:00
Tyler Wilding c012005084 jak3: add unlock debug menu options (#4184)
Same as https://github.com/open-goal/jak-project/pull/3539
2026-04-05 18:18:17 -04:00
Tyler Wilding 1f1fdf834b jak3: support mirror mode (#4170)
Similar changes as have been done in the previous two games. Test the
following things:
- normal gameplay
- defend spargus turret
- satellite
- that desert mission where you shoot the gun
- that turret mission in haven forest

At a glance, i think that's everything...?

~~Didn't debug the crash yet either, hoping this is sufficient~~ (fixed,
thanks hatkid, needed to disable some blit related code)

Closes #4160
2026-04-05 17:52:15 -04:00
Hat Kid dc203502fc jak3: fix potential wascity-defend softlock, stick sens setting, fix freeze-screen regression (#4182)
There was some bad manual decomp in `wasdef-manager` that caused the
mission to sometimes softlock, preventing Jak from exiting the turret
after destroying all Makers.

Also adds stick sensitivity setting from Jak 2 and fixes a regression
with the Light Jak freeze screen overlay on PC aspect ratios.

Closes #4179 
Closes #4154
2026-04-05 16:58:19 +02:00
Tyler Wilding c3cc91c9ba jak2/3: update enemy method name related to playing sound effects (#4176)
Was investigating https://github.com/open-goal/jak-project/issues/3012
and found out it's no longer an issue, fixed at some point.

Updated the method name, it actually looks like quite a few methods were
nicely named / documented in jak 3, so i might automate backporting that
documentation (likely a bunch that can go all the way back to jak 1 as
well).

Closes #3012
2026-04-05 01:14:14 -04:00
Hat Kid c2dd821bd3 jak3: add sidekick feature to hero mode for runs (#4173) 2026-04-04 15:28:35 +02:00
Matt Dallmeyer 8aa9fb0afd Fix language settings not saving in jak 2/3, fix autosave from title screen new game in jak 3 (#4172)
fixes #4167 and #4164
2026-04-04 08:33:53 +02:00
Matt Dallmeyer fe8a664f52 [jak3] Support PC camera invert options (#4171)
Implement PC camera inversion toggles, for first/third
vertical/horizontal controls

Reuses vanilla placement of Camera Options menu (as opposed to under
Input Options like jak1/2)

fixes #4158
2026-04-04 08:26:36 +02:00
rocket 64baff9614 jak2/jak3: fix overlapping layers on non-playable Hellcats (#4161)
fix for issue #4120, along with other areas this happens in Jak II and
Jak 3

**Before**
<img width="2560" height="1440" alt="desoasis-hellcat"
src="https://github.com/user-attachments/assets/c77db831-c9c7-493d-a426-de12248312d4"
/>
**After**
<img width="2560" height="1440" alt="desoasis-hellcat-fixed"
src="https://github.com/user-attachments/assets/f75c57ec-dc76-43bb-b743-7fe659d36a15"
/>

**Before**
<img width="2560" height="1440" alt="ctywide-scenes-atoll-hellcat"
src="https://github.com/user-attachments/assets/73162526-9676-4937-96e8-78636248fbdc"
/>
**After**
<img width="2560" height="1440" alt="ctywide-scenes-atoll-hellcat-fixed"
src="https://github.com/user-attachments/assets/0f5b1e85-dd45-4933-98c1-589bc41aeafb"
/>

---------

Co-authored-by: Matt Dallmeyer <mattdallmeyer@gmail.com>
2026-04-03 20:41:47 +02:00
Matt Dallmeyer 259b74d7cc [jak3] Scale sandstorm push effect to better match PS2 (#4163)
Took @ManDude 's suggestion to make the sandstorm's push effect on Jak
slightly less aggressive, to better match the effect on PS2 where it
never hits 60fps. This was especially noticeable in finalboss. Tested at
higher FPS as well
2026-04-03 15:47:39 +02:00
Hat Kid 6de4b0e62c jak3: misc rpc and progress fixes (#4159)
- Fixed font scaling for main menu options and auto save info box
- Removed surround sound option (we probably won't be implementing this
any time soon)

Discord RPC fixes/additions:
- Now shows what gun you currently have out
- Fixed outdoor levels not showing their icons
- Added icons for vehicles and various other states
- Fixed glider mission not displaying
2026-04-03 03:27:53 +02:00
Matt Dallmeyer be18834432 [jak3] Port over R1/R2 swap and trigger effects from jak2 (#4151)
Exact same changes as jak 2, except I have the left trigger effect moved
from `target-darkjak-get-on` to `target-powerjak-get-on` (the crouching
state before he goes to dark or light jak)
2026-04-03 03:20:51 +02:00
Matt Dallmeyer c37304c2dd [jak3] Fix arena token not respawning bug (#4150)
a bit of a hack but I'm not sure what else to do besides completely
unload/reload wasstadb-obs. open to suggestions

here is the bug
https://youtu.be/C1KZlRFbjys?t=50
2026-04-03 03:15:32 +02:00
Tyler Wilding c4d34e3d0e jak3: Finish font DB implementation (support Cyrillic) (#4147)
Also add in all the other language stubs / copy over the custom text to
the correct enum ids.

Closes #4001
2026-04-02 01:10:39 -04:00
Hat Kid 0e0da376c3 jak3: remove old pal graphics menu and enable fps setting in retail (#4149) 2026-04-02 02:17:45 +02:00
Matt Dallmeyer 07a1fcacae [jak3] Give skull gems for heromode speedruns (#4148) 2026-04-02 02:02:13 +02:00
Grateful Forest 27627012dc jak1: fix memcard screen on custom aspects (#4116)
The particles for the grey memcard slots already had functions
associated with them, so scaling the grey boxes was simply a matter of
making use of those functions.

The memcard boxes expand and shrink with the aspect to resemble the PS2
behavior, where at 4:3 you get a short grey box and at 16:9 you get a
long grey box.

Although I added scaling to the grey boxes, I wasn't satisfied with the
way elements would "slip" as they would scale differently to each other.
Mainly, the collectable counts and their totals slide more and more off
from each other.

This is due to the game's use of integer offsets to decided UI
placements; they were the right numbers for 4:3, but once you start to
scale, they can slide more and more off. You can see this on a real PS2,
where at 4:3, the collectibles are centered above the totals, and at
16:9, the collectibles are more right-aligned above the totals.

To fix this, I used the same text flags on the totals as the counts, so
everything is snapped to each other.
Guards against `(-> *pc-settings* use-vis?)` ensure PS2 aspects remain
untouched, and at PS2 16:9, you still get the original game bug of more
right aligned counts.


https://github.com/user-attachments/assets/0fa00a5d-0090-4cd0-b68b-8b8f28816185
2026-03-27 19:52:40 -04:00
Matt Dallmeyer cd8252d227 [jak1] MP ILs - dont spawn the column that klaww breaks during cutscene (#4131)
Small thing I only noticed from the Gordon & Daxter mod since you skip
klaww and go through where this column spawns.

<img width="1920" height="1080" alt="image"
src="https://github.com/user-attachments/assets/2ea74b77-47db-4783-8917-d0b616dd1820"
/>
2026-03-17 22:07:56 -04:00
Matt Dallmeyer 3c985f8c3a [jak2/jak3] Unbreak split boxes debug option (#4133)
The `Split Boxes` option in jak2/3 currently crashes as soon as you
select it because of the `*debug-region-hide-empty*` code added in
openGOAL. The split boxes aren't true regions, but they reuse the
`debug-draw-region` functions, and crash trying to access `(-> this
region on-enter)`.

<img width="2160" height="1620" alt="image"
src="https://github.com/user-attachments/assets/e8753fcc-8234-40fa-9278-d2dca4dff71a"
/>
yay split boxes
2026-03-17 22:07:15 -04:00
Matt Dallmeyer a2b7fb3c15 [jak1] Restore Klaww cutscene skip for Mountain Pass IL speedruns (#4124)
Originally added in [this
PR](https://github.com/open-goal/jak-project/pull/2162/changes#diff-fcd36d04955bffd72ece8b8bf9b7a137d7b58f712660536bb6889b7850e07bea)
but I forgot to use `og:preserve-this` so it got wiped out in [a later
PR](https://github.com/open-goal/jak-project/commit/da3caf7b2850c37eb7801221461bb8ff918fa101#diff-fcd36d04955bffd72ece8b8bf9b7a137d7b58f712660536bb6889b7850e07beaL1154).

Updated a couple spots to use `og:preserve-this`.
2026-03-02 18:33:08 -05:00
Matt Dallmeyer ad3e55745a [jak2/jak3] Wait to reset autosplitter until after blackout (#4126)
Based on [similar changes we made awhile back for
jak1](https://github.com/open-goal/jak-project/pull/3902) - this way
runners don't need to figure out the -0.3s offset or whatever, and it
won't vary based on where they reset from.
2026-02-28 21:07:12 -05:00
Tyler Wilding d3cc739e43 jakx: Commit existing work from other PRs (#4112)
This attempts to get into master whatever work was done in this PR /
it's earlier PR https://github.com/open-goal/jak-project/pull/3965

I don't want this work to be lost / floating around in massive PRs.

However the changes are:
- switch to ntsc_v1 instead of PAL as the development target, as we have
done for all other games
- remove most of the copied-from-jak2/3 changes as they need to be
confirmed during the decompilation process not just assumed
- avoids committing any changes to `game/kernel/common` as it was not
clear to me if these were changes made in jak x's kernel that were not
properly broken out into it's own functions. We don't want to
accidentally introduce bugs into jak1-3's kernel code.
- in other words, if the change in the kernel only happens in jak x...it
should likely be specific to jak x's kernel, not common.

---------

Co-authored-by: VodBox <dillon@vodbox.io>
Co-authored-by: yodah <greenboyyodah@gmail.com>
2025-12-31 21:08:44 -05:00
Matt Dallmeyer a5ac2b0fcc Prevent array OOB access for traffic-height-map (#4106)
If the `arg0` vector has extreme values, `a2-0` and `a1-1` can end up
being negative, which leads to out-of-bounds access when using these
values to read from the `xz-height-map`'s `data` array, and crashes the
game (you can pretty easily reproduce this in jak 3 by overcharging the
"superfasthoverbikeglitch")

The `min` here already makes sure these values don't go too high, but
doesn't cover the case when they go negative.

As I understand it, this `data` in the `*traffic-height-map*` functions
as a 2d array, bucketing x/z coordinates into heights for the vehicle.
2025-12-28 16:26:00 -05:00
Grateful Forest 739a2ffeb6 jak1: fix balance-plats at high-fps (#4069)
Looking at the balance-plats, they showed an immediate visual clue,
which was the stuttering of Jak's feet on their surface.

This is precisely what happens when you don't include sticky on a
collision; it doesn't "pull" Jak along with it, and he repetitively
"falls" onto it's surface over and over as it moves downwards.

This is a mystery, since this actor does have sticky, in fact, it's not
even possible to detect riders without sticky, which these certainly do.
This same appears on PS2, so I knew fixing it was not an option.

I had an immediate theory of what was happening: since Jak is
continuously falling onto it as it moves downwards, he's only riding
some frames, and skipping others. A higher frame rate = more moments
he's touching.

This means that basically, the balance-plat's entire speed is determined
by when his feet happen to micro-stutter. This is the hardcoded scalar
for it's entire speed.

This means I needed to emulate the 60 FPS "falling" at different
framerates. I tried adding an fps counter to the actor so that the rider
check only ran once every 60th of a second, but I knew adding a variable
to the actor just for fps wasn't a good idea.

However, I was able to confirm that would work. Luckily, this
[comment](https://github.com/open-goal/jak-project/blob/0fa93ce7b83d1621f3fd040625bfa865eadaeef0/goal_src/jak1/engine/game/game-h.gc#L116)
gave me an idea, which meant I could use a variable of process drawable,
avoiding adding a variable.

This unique problem needs a unique solution, I gate rider checks so they
only pass if one sixtieth of a second `(seconds 0.01666666)` has passed
since the last ride. This makes it act like his feet are stuttering like
they do at 60 FPS, avoiding the extra frames where his feet are touching
at high framerates that add more speed.

I also added the same for the send-to messages, since at high frame
rates the passive return to center that runs every frame was stomping
the send-to-next velocities which run less often.

Then, I managed to refactor it down to a tiny edit, a guard in one place
that gates on 1/60th of a second, framerate already 60, or, self grow
(since you don't want to double-gate these).

```lisp
(when (or (= (-> *pc-settings* target-fps) 60)
          (time-elapsed? (-> self state-time) (seconds 0.01666666))
          (-> self got-grow))
```

It's just: this guard, `(set-state-time)` on ride, and
`(set-state-time)` on grow (limits increased-rate return to center
stomping grow).

Lastly, there was an issue with the existing multiplies by FPS RATIO,
which was a clear double scale of the acceleration (once when setting
accelerate, then again when adding the accelerate). I'm guessing since
the extra riding frames added so much speed, this double scalar helped
slow it down, however when corrected the double scalar made it too slow
since it was slowing down for framerate twice.
2025-12-28 15:43:34 -05:00
Aloqas f4512a41dd Jak 3 Finnish translation + Update Jak 1 & 2 translations (#4028)
Massive overhaul of Finnish translations

I guess it's time to finally push this out

I'll go insane if I have to proofread one more time :P
Every time I just realize my translations sucked and I keep tweaking
everything

---------

Co-authored-by: Tyler Wilding <xtvaser@gmail.com>
2025-12-28 15:12:26 -05:00
Grateful Forest 9560b08464 jak1: fix aspect settings selection (#4101)
I was changing aspect ratios when I noticed something was off, getting
different results for the same setting.
On screen positions are determined by both the aspect ratio you select
as well as the last time you selected a PS2 aspect ratio.
You get different result by choosing 4x3 (PS2), then 16:9, compared to
16:9 (PS2), then 16:9. The same is true for all aspects and Fit to
Screen.

By contrast, Jak 2 always uses the 'aspect4x3 scale factor for all
custom aspects, making the menu option you select consistent.

There is an intention to use 4x3 for custom aspects
[here](https://github.com/open-goal/jak-project/blob/abf27960f0033436b066c712c787160d2c9a5346/goal_src/jak1/pc/progress-pc.gc#L2618);
when `fit-to-screen` then `(set-aspect-ratio 'aspect4x3)`. However it
needs the extra lines to take effect.

This is helpful as the only cause of vertical misalignment on memory
cards is using PS2 16x9 on custom aspects:
<img width="1800" height="1013" alt="2"
src="https://github.com/user-attachments/assets/5a5e5ea9-00fc-439b-b3d6-dcf3419a8bd1"
/>
<img width="1800" height="1013" alt="4"
src="https://github.com/user-attachments/assets/4876d267-5a44-4074-bd63-d7a5d8ac02e5"
/>
2025-12-28 01:20:06 -05:00