Commit Graph

2700 Commits

Author SHA1 Message Date
Hat Kid ef719d2ab7 custom models: better error for invalid envmap material (#3784)
When a material in Blender has its IOR level changed to anything other
than the default value of 0.5, the `KHR_materials_specular` extension is
applied during the glTF export, which is what we use to check for
envmaps in custom models. If an envmap is undesired, but the IOR value
was accidentally changed, the program would assert during model
processing if there is no metallic roughness texture attached to the
material.

Since this is an easy mistake to make and is hard to spot, this adds a
better error message for such cases.
2024-11-27 19:14:23 +01:00
Hat Kid 7848ba05b8 jak3: fix music not pausing (#3783) 2024-11-27 15:46:41 +01:00
Hat Kid f6c55eba9f custom models: increase default joint count (#3782) 2024-11-27 04:21:33 +01:00
Hat Kid 6a06291e6e jak1, jak2: add get-texture macro (#3778)
Ports the `get-texture` macro added in Jak 3 to Jak 1 and 2.
2024-11-26 11:29:34 +01:00
Tyler Wilding 9b393e2ddb ci: update minimum macOS supported version to Ventura (13) (#3780)
macOS 12 has been end of life for 2 months, GitHub is removing support
for the images very soon (within a week or so).

https://endoflife.date/macos
2024-11-25 14:43:48 -05:00
Brendan Shanks 3f7aca3c72 Taskfile: Call 'python3' on non-Windows platforms (#3752) 2024-11-25 13:40:56 -05:00
Hat Kid c263bc2114 custom models: envmap support (#3777)
Custom models and model replacements now support environment mapping.

Also fixed some cases in Jak 3 where tfrags had missing textures
(defaulting to texture 0 from tpage 0, which in Jak 3 is the default eye
texture) and replaced them with more suitable alternatives.

Fixes #3776 


https://github.com/user-attachments/assets/7c11b0de-b254-40cb-9719-11238dfb3d43


![image](https://github.com/user-attachments/assets/4cc60b55-4965-4cb8-b29d-096560e7b3aa)


![image](https://github.com/user-attachments/assets/cb46d0d1-57d7-482c-b235-15d0e633f62c)
2024-11-23 14:32:55 +01:00
Hat Kid 2ff49b9905 jak3: fix ragdolls settling too early (#3775)
`none` methods strike again

Fixes #3774
2024-11-22 02:36:50 +01:00
Brendan Shanks 8f445bda3e Create separate x86_64 and ARM64 macOS targets. (#3760)
Create explicit x86_64 and ARM64 macOS build targets, so it's clear that
the CI is building x86_64 binaries (on both Intel and ARM64 build
machines). Also, use the `CMAKE_APPLE_SILICON_PROCESSOR` CMake variable
(which sets `CMAKE_SYSTEM_PROCESSOR`) so `BUILD_X86_ON_MACOS` is not
necessary.

And update the README.
2024-11-17 15:59:57 -05:00
water111 24ad5515f8 [jak3] workaround for intro crash on screen filter (#3770)
Simple workaround to put an effect in a different bucket. I don't think
there's a difference in the result, but this is just easier to handle on
the PC renderer side.

Co-authored-by: water111 <awaterford1111445@gmail.com>
2024-11-17 12:09:22 -05:00
Hat Kid 7543acfb8a jak3: speedrunner mode (#3761)
Base implementation of the popup menu and speedrunner mode in Jak 3.
Autosplitter is untested because I'm on Linux.

Also a couple of other misc changes:

- Model replacements can now have custom bone weights. Needs the "Use
Custom Bone Weights" property (provided by the OpenGOAL Blender plugin)
enabled in Blender.
- Better error message for lump syntax errors in custom level JSON
files.
2024-11-17 06:45:34 +01:00
water111 5e3cb8faa6 [jak3] Fix stack layout for car spawn (#3765)
Fix for cars spawning under ground or in weird places

Co-authored-by: water111 <awaterford1111445@gmail.com>
2024-11-16 17:52:14 -05:00
water111 321a113dd7 [jak3] Fix overlord soundbank unload, fix warnings (#3762)
Fix compiler warnings, and a bug where the `snd_handle` of
`SoundBankInfo` was never set, leading to sound banks never unloading.

The game relies on unloading soundbanks to make sure certain sounds
don't play, like the blue gun 1 fire noise when using blue gun 2.

---------

Co-authored-by: water111 <awaterford1111445@gmail.com>
2024-11-16 15:04:56 -05:00
OpenGOAL Bot 63676c70a5 CI: Periodic Controller Database Update (#3757)
Updating Controller Database

Co-authored-by: OpenGOALBot <OpenGOALBot@users.noreply.github.com>
2024-11-13 11:16:40 -05:00
Tyler Wilding 2c6d41c87a macOS: Fix issue causing only part of the window to be rendered to (#3756)
The fundamental issue is related to hiDPI / Retina displays, I don't
think our rendering code is setup properly to handle the scaling between
the two (which you can derive by comparing `SDL_GetWindowSize` and
`SDL_GL_GetDrawableSize`).

So rather than opening that can of worms, I just removed the window
flag.

Also fixed an unrelated issue for displaying resolution options when in
windowed mode, it was previously only adding options to the list if they
were invalid for full-screen.

Fixes #3099
2024-11-13 11:16:30 -05:00
Matt Dallmeyer 2a41bc615e [jak2] Fix bug where spinning into grind doesnt break clasps in dig1 (#3740)
if you sideflip into grind in the digsite mission, the clasps wont break
because it is considered a `board-spin` attack instead of `board`. This
extends the condition to allow for `board-spin` as well.

~~Should I wrap this in an `#if PC_PORT`?~~ done
2024-11-12 20:59:21 +01:00
water111 7553877e57 Fix crash in ocean-far with invalid DMA size (#3746)
DMA sizes are 16-bits, not 12-bits. This would cause rare crashes when
the ocean far renderer uses more than this.

I'm not really sure what the ocean far rendering is doing at this time,
but it happens as stuff is loading in.

There's a chance this fixes crashes in jak 2 as well, since we used to
see errors that would be explained by this.

Co-authored-by: water111 <awaterford1111445@gmail.com>
2024-11-12 19:38:51 +01:00
Hat Kid af5cb9b1cb jak3: subtitle3, vag-player (#3758) 2024-11-12 02:45:16 +01:00
Tyler Wilding b55a918902 deps: commit rapidjson with 8 year old fix (#3755)
Fixes https://github.com/open-goal/jak-project/issues/3753 hopefully

Rapidjson is never cutting a release, ever, and even if they did, the
discord-rpc library is deprecated so it would never consume it.

Instead of updating 8 years worth of changes and praying that works, I
just made the alleged fix from 8 years ago and changed discord-rpc's
cmake to not pull from the release.
2024-11-10 11:57:50 -05:00
Tyler Wilding f8058f2138 Support Apple Silicon via Rosetta2 on MacOS Sequoia and Above (#3754) 2024-11-10 11:06:56 -05:00
OpenGOAL Bot e3efede029 CI: Periodic Controller Database Update (#3749)
Updating Controller Database

Co-authored-by: OpenGOALBot <OpenGOALBot@users.noreply.github.com>
2024-11-09 12:05:01 -05:00
Brendan Shanks 4604636593 Fix sprite3_3d.vert on macOS (#3750)
Fixes a regression in #3722.

```
[18:34] [error] Failed to compile vertex shader sprite3_3d:
ERROR: 0:122: '&' does not operate on 'unsigned int' and 'int'
ERROR: 0:129: Use of undeclared identifier 'xy0_vf19'
ERROR: 0:129: Use of undeclared identifier 'xy0_vf19'
ERROR: 0:144: '&' does not operate on 'unsigned int' and 'int'
ERROR: 0:151: Use of undeclared identifier 'xy0_vf19'
ERROR: 0:151: Use of undeclared identifier 'xy0_vf19'
```
2024-11-06 22:30:01 -05:00
Brendan Shanks 8930141b72 docs: Remove instructions to add go-task tap to Homebrew. (#3751)
Homebrew has its own formula for go-task which is up-to-date and
working.
2024-11-06 22:27:15 -05:00
water111 1e530714b7 [jak3] Fix for precd extraction (#3744)
It looks like one of the tie models in this level has bad color data in
the lowest LOD. For now, just skip extracting the lowest lod for this
TIE only.

Co-authored-by: water111 <awaterford1111445@gmail.com>
2024-11-03 11:43:27 -05:00
Hat Kid cbb8add81c jak2: fix consite crash (#3743)
Since #3735, loading consite in Jak 2 crashes due to an assert in the
code that handles the PC clut blender DMA. The unused and
half-implemented `kor-transform` texture animation doesn't have any
blenders as the texture names are commented out in the C++ definition
(and it seems that these textures are defined multiple times within
different tpages in the same DGO, leading to errors during startup if
uncommented), leading to a mismatch between the actual qwc in GOAL and
the assumed DMA data size in C++.
v0.2.18
2024-11-03 10:45:31 +00:00
Hat Kid 10d7dabfd7 game: move pc-encode-utf8-string to common kmachine code (#3742)
Also adds formatter rules for a couple of macros.
2024-11-03 01:28:48 +01:00
Alex ba9085fee0 [jak2] Correct behavior of hint subtitles toggle (#3741)
Re-uses the existing "hinttitles" toggle that's already there, and makes
it not depend on if the main subtitles are on or not.
2024-11-02 18:28:20 +00:00
OpenGOAL Bot 5e8ea23c30 CI: Periodic Controller Database Update (#3737)
Updating Controller Database

Co-authored-by: OpenGOALBot <OpenGOALBot@users.noreply.github.com>
2024-10-28 21:36:26 -04:00
ZedB0T 2f0a90b693 Update LICENSE, and add jak 2/3 iso_data folders (#3738)
- Updates the LICENSE
- Adds empty Jak 2/3 folders to iso_data following the pattern
established by the jak1 folder.
2024-10-29 00:29:19 +01:00
Hat Kid 348bf83b89 custom levels: add draco lib to support compressed glb files (#3723)
By adding the `draco` library as a dependency, `tinygltf` can support
GLB files compressed with the Draco compression algorithm which allows
for drastically reduced file sizes for custom levels (TFL's Crescent Top
GLB for example went from 135 MB to 37 MB).
2024-10-28 21:11:19 +01:00
water111 dff9ac163a [custom levels] A few bug fixes (#3736)
- Bug fix to KD tree splitting, should fix cases with bad vertex
colors/alphas.
- Normalize normals instead of asserting if they are the wrong length.
**the fact that blender exports normals incorrectly is a bug and I doubt
their implementation is correct if you've scaled things on only on
axis.**
- Automatically resize metallic texture (envmap strength) if it doesn't
match the size of the rgb texture instead of asserting

Co-authored-by: water111 <awaterford1111445@gmail.com>
2024-10-27 12:31:41 -04:00
water111 1962fbfb51 [jak2,3] Support loading clut blender animated textures to the pool (#3735)
Animated textures that use the clut blender can now upload them to the
texture pool, so they can get read by the eye renderer. This will also
fix darkjak's eyelids in jak 2.


![image](https://github.com/user-attachments/assets/5edbd20d-53c9-42c6-937d-6263823b8b45)

Co-authored-by: water111 <awaterford1111445@gmail.com>
2024-10-27 09:21:44 -04:00
water111 5bc61c5854 [jak3] Support texture anim in TIE (#3734)
Support animated textures in TIE. Apparently this is also used in jak 2
for robotank and we never noticed??


https://github.com/user-attachments/assets/bfa45a1a-4a96-4b25-817a-4327afcc7c98

Co-authored-by: water111 <awaterford1111445@gmail.com>
2024-10-26 15:47:34 -04:00
water111 510b23163f [jak3] Misc texture anim fixes (#3732)
- fix issue where animated textures that use the size-override feature,
and aren't being animated would show up as black - fix for black water
in spargus
- fix issue where animated texture uses another animated texture as an
input wouldn't get the animated version.
- fix math mistake in how animated texture rotations are handled. This
could cause textures to not rotate when a positions were rotated, but
textures (st's) weren't.
- fix definition of the ring texture to handle
set-alpha-texture-anim-layer-func



![image](https://github.com/user-attachments/assets/979748b0-7abf-46a5-bf9d-693fb0ef34fb)


![image](https://github.com/user-attachments/assets/3011662c-bfec-4ce9-ad72-8853b3784f77)



https://github.com/user-attachments/assets/0242a59d-62bd-4799-8f6f-2a0aba63649f

Co-authored-by: water111 <awaterford1111445@gmail.com>
2024-10-26 14:32:55 -04:00
OpenGOAL Bot cb51bd3f5b CI: Periodic Controller Database Update (#3726)
Updating Controller Database

Co-authored-by: OpenGOALBot <OpenGOALBot@users.noreply.github.com>
2024-10-21 20:49:38 -04:00
Tyler Wilding e76a4399e5 game: Update game's GPU test to output the GPU vendor info (#3717)
This is so I can get rid of wgpu from the launcher, where it's only
purpose is to figure out the GPU name for the support package.

The problem with it is that on some environments, it errors, but the
function cannot have it's errors gracefully handled (it panics and
crashes instead).

So I'm tired of it, do it ourselves.


![image](https://github.com/user-attachments/assets/fa8ae365-b3f7-4794-81ed-fde0c2ffc651)
2024-10-19 15:56:43 -04:00
Tyler Wilding e144406c16 g/j2: make the turret controls respect the camera settings (#3715)
Fixes #3664
2024-10-19 15:16:40 -04:00
water111 d82b6209b6 [jak3] Fix neosat particles and tentacle (#3722)
Fixes issue with not handling texture flipping flags in sprite renderer
(new jak 3 feature). As far as I can tell, there is no visible
difference because the textures that use this flag are symmetric.

Fix issue with not adding an `and` with `0xf` on the offset into the xy
table. This is added only in jak 3, where `vi07`'s upper bits are
sometimes nonzero, but doesn't hurt to have in all three games.
```
  iaddi vi09, vi00, 0xf      |  nop                      
  iand vi07, vi07, vi09      |  nop  
```

![image](https://github.com/user-attachments/assets/559d749a-957a-47dc-af6a-5b4b7d72a65b)

Fix issue with inf/nan causing the tentacle to not appear:

![image](https://github.com/user-attachments/assets/7c316cdf-7ff8-452d-b4af-ddb8d5ba4e44)

---------

Co-authored-by: water111 <awaterford1111445@gmail.com>
2024-10-19 14:05:42 -04:00
water111 eac11b5b93 [jak3] Fix target marker texture (#3721)
Fixes https://github.com/open-goal/jak-project/issues/3720.

The texture page and texture name appear multiple times with different
IDs, meaning that we insert the texture with the wrong ID. Fixed by
using IDs for common_tpage textures. Since this common_tpage feature is
only used for minimap stuff, I don't think it can mess up texture
animations.


![image](https://github.com/user-attachments/assets/0d5d45e9-b69a-48b5-86c9-b9c597f0872e)

Co-authored-by: water111 <awaterford1111445@gmail.com>
2024-10-19 11:21:30 -04:00
Tyler Wilding a6680cc26d game: fix game icon aspect ratio (#3718) 2024-10-18 23:02:19 -04:00
massimilianodelliubaldini 7dbacc72d3 Parameterize the iso_data folder for goalc (#3692)
I hope this is everything I needed, and nothing I didn't.

## What's Changed

This update adds a command-line parameter to goalc, `--iso-path`.
Providing a path to a directory like
`D:\Files\Repositories\ArchipelaGOAL\iso_data\jak1` will inform the
compiler to use that directory instead.

## Why is this useful?

When combined with `--proj-path`, the compiler can be pointed to a
completely different project folder, given the `(mi)` command, and
immediately begin building from that directory, with everything it
needs. This eliminates the need to copy `iso_data` to multiple `data`
directories.

If a subsequent change to the Launcher is made, each mod could be passed
an --iso-path pointing to a single shared folder, allowing mods to each
run their own REPL _without_ requiring a copy of `iso_data` in a
subfolder.

## Independent testing required!

My local repositories are a little suspect, with a mod, a fork of
mod-base, and a fork of jak-project, all on the same drive. My
decompiler_out and iso_data folders are in the mod repo, not mod-base
nor jak-project. So what I did was make the change in the mod-base fork,
point `--proj-path and --iso-path` to the mod folders, and then ran
`(mi)`. The output showed a build starting with no errors.

Then I had to create this PR, which my fork of mod-base is unable to do,
so I created a patch file, forked jak-project, then applied the patch
there.

All this is to say that it would be preferable if someone could apply
this code to their own installation and see if it works. Even I wouldn't
take my own word for this.

---------

Co-authored-by: Tyler Wilding <xtvaser@gmail.com>
2024-10-18 00:03:14 -04:00
OpenGOAL Bot b50652ce54 CI: Periodic Controller Database Update (#3714)
Updating Controller Database

Co-authored-by: OpenGOALBot <OpenGOALBot@users.noreply.github.com>
2024-10-14 15:23:43 -04:00
Hat Kid c623190bff decompiler: fix secret-disable form in defskelgroup detection (#3713) 2024-10-14 02:07:08 +02:00
OpenGOAL Bot a7a7110550 CI: Periodic Controller Database Update (#3711)
Updating Controller Database

Co-authored-by: OpenGOALBot <OpenGOALBot@users.noreply.github.com>
2024-10-07 21:22:12 -04:00
water111 10008caad1 [jak3] Add merc fade and support for no texture flag (#3710)
Fixes https://github.com/open-goal/jak-project/issues/3709


https://github.com/user-attachments/assets/9fadf624-60b8-460f-9887-693712cc36c0

Co-authored-by: water111 <awaterford1111445@gmail.com>
2024-10-05 14:47:13 -04:00
water111 452f1329dd [jak3] fix envmap texture and strength (#3704)
Fix the envmap texture using the eye texture by default (will require a
re-extract to fix), fix envmap strength in all three games being off by
2x. (oops)

With envmap scale fix:

![image](https://github.com/user-attachments/assets/3b0ef8b7-cbdc-4402-8a12-af368538c16e)

without envmap scale fix (but with texture fix):

![image](https://github.com/user-attachments/assets/fd72d75b-f0bb-455c-a7c9-56916fbd4a67)

---------

Co-authored-by: water111 <awaterford1111445@gmail.com>
2024-10-05 12:53:57 -04:00
water111 b8c77c65f5 [jak3] Fix flashing with maker projectiles (#3702)
Fix https://github.com/open-goal/jak-project/issues/3701, and possibly
other issues where projectiles were invisible/messed up. The use of
`align16` with the -16 was subtracting 16 in cases when the pointer was
already aligned, causing a bad value to be loaded for the quaternion.

I also renamed some variables and did some manual cleanup on a method in
process-drawable, since this one comes up a lot during debugging.

Co-authored-by: water111 <awaterford1111445@gmail.com>
2024-10-05 11:40:03 -04:00
Tyler Wilding eb544bcfc0 extractor: add error code messages around 3990 (#3699)
Also added a new error code to make invalid folder paths hopefully more
clear/obvious.
2024-10-05 01:45:29 -04:00
Tyler Wilding cb4f7772bb github: switch to using issue types were applicable in issue forms (#3696) 2024-10-03 18:23:12 -04:00
Matt Dallmeyer 03cae68c7d [jak1] Patch "NG+ glitch" (#3690)
Fixes #3644 which I believe is the same underlying issue as "NG+ glitch"

To reproduce the issue in #3644 you can:
- choose Hub 2 100% in the speedrun fast reset menu
- hit the blue sage warp gate switch
- go deep enough into any adjacent level (e.g. basin) where `village2`
display is turned off
- reset speedrun in the fast reset menu
- tasks are reset but the switch will be pressed, giving the cutscene
early

You can also grab orbs/scout flies in `village2`, and they won't be
reset properly because of this same bug.

It happens because of the way entity perm status is managed across both
`level` vs `game-info` objects.
- when `village2` is deactivated (still loaded but display hidden), its
entity perms are copied to `game-info`'s `perm-list`
- this is how we persist `warp-gate-switch-7` being pressed if village2
is ever unloaded
- during the speedrun reset `reset-actors` is called:
- any active levels (loaded+displayed) have their entity perm statuses
reset
- because `village2` is not displayed yet, its entity perm statuses are
not touched
  - `game-info` is re-initialized, clearing out its `perm-list`
  - continue is set to `firecanyon-end`
    - this unloads `rolling` or whatever to make room for `firecanyon`
    - `village2` is already loaded, and just gets displayed
- at this point the game does copy entity perm status from `game-info`
back to the `village2` level
- but we reset the game, so it has no data about the warp-gate-switch,
leaving it pressed!
2024-10-01 22:17:32 -04:00