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.).
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>
This is primarily driven for proper mod-support. Mods would like to
isolate their settings and saves (potentially) and that is currently
done by find-and-replacing code before building. Bad!
Additionally, this has the side-effect of allowing for portable
installations of the game so, win-win.
Testing in progress, i'll merge once it is ready.
While trying to narrow down why sometimes SDL takes 20-40seconds to
initialize I built up some more profiling features.
TLDR - I still don't know why SDL is taking a long time but I've
narrowed it down to it initializing the `GAME_CONTROLLER` subsystem.
This isn't unprecedented, I found numerous github issues and articles
suggesting this is the problem:

I imagine it is hardware/OS related on some level, there are even some
recent commits in SDL that have made it worse on certain platforms. I've
had this problem myself so I will hope to get it again soon so i can
debug where in the SDL code the delay occurs and make a proper bug
report. Hopefully this helps but it's not yet confirmed -
https://github.com/open-goal/jak-project/pull/3384
This adds a new ImGUI menu to help filter out the clutter on screen.
https://user-images.githubusercontent.com/13153231/210192912-b1c28319-bacb-449c-ad7f-e7308fb75f50.mp4
This also:
- moves the imgui display bool into a game specific config file (you can
hide it in jak1, and not in jak2)
- the config file also persists the settings from this menu (except the
filters for now, future TODO)
- there is a new `ignore_imgui_hide_keybind` in this file to ignore
hiding it when you press Alt
This solves two main problems:
- the looming threat of running out of memory since every thread would
consume duplicate (and probably not needed) resources
- though I will point out, jak 2's offline tests seem to hardly use any
memory even with 400+ files, duplicated across many threads. Where as
jak 1 does indeed use tons more memory. So I think there is something
going on besides just the source files
- condense the output so it's much easier to see what is happening / how
close the test is to completing.
- one annoying thing about the multiple thread change was errors were
typically buried far in the middle of the output, this fixes that
- refactors the offline test code in general to be a lot more modular
The pretty printing is not enabled by default, run with `-p` or
`--pretty-print` if you want to use it
https://user-images.githubusercontent.com/13153231/205513212-a65c20d4-ce36-44f6-826a-cd475505dbf9.mp4
Favors the `lg` namespace over `fmt` directly, as this will output the
logs to a file / has log levels.
I also made assertion errors go to a file, this unfortunately means
importing `lg` and hence `fmt` which was attempted to be avoided before.
But I'm not sure how else to do this aspect without re-inventing the
file logging.
We have a lot of commented out prints as well that we should probably
cleanup at some point / switch them to trace level and default to `info`
level.
I noticed the pattern of disabling debug logs behind some boolean,
something to consider cleaning up in the future -- if our logs were more
structured (knowing where they are coming from) then a lot this
boilerplate could be eliminated.
Closes#1358
* Reverted default keyboard camera controls to IJKL and fixed bug where use mouse would always be set as false
* Fixed inverse axis on Right Y axis analog keyboard control
* Fixed newpad unit test, fixed variable typo, and fixed MapAnalog typo in newpad.h
Co-authored-by: animalstyletaco <animalstyletaco95@gmail.com>
* Added First working instance of controller/keyboard re-mapper
* Fixed clang formatting issues
* Updated newpad.cpp to inverse analog y-axis to make json labelling consistent
* Added mouse sensitivity options for X and Y axis in json, removed scroll mouse support, and other changes requested in feedback
* Added option to have ImGui debug menu appear on start up and remove hard coded set_imgui_visible calls
* Added newpad unit tests and updated function names to better describe intended functionalities
* Fixed formatting issue in newpad unit test
* Removed rumble unit test new pad
* Fixed codacy static analysis issues
* Fixed Linux build issues
* Implemented github feedback
* Implemented updated github feedback
* Fixed formatting errors
* Updated Pad::CheckPadIdx
* Implemented changes based on latest github feedback
* Implemented changes based on github feedback
Co-authored-by: animalstyletaco <animalstyletaco95@gmail.com>
* Add in-game option to switch fullscreen monitor
* mmm undefined memory :)
* Fix type consistency
* Optimize get_monitor and get_monitor_count since they're called often
* Address PR feedback
* Track fullscreen mode and minimized state to reduce GLFW calls per frame
* split rendering framebuffer
* fix blackout
* unhardcode c++ stuff
* optimization
* implement goal side of all this
* fix msaa
* sprite distort fixes
* fix resolution menu options
* save & load msaa
* linear filtering on the game screen
* fix bad texture units
* fun!
* unused
* make screenshot button capture the framebuffer and not the window buffer
* panik
* screenshot settings
* fix black screen on first frame of new framebuffer
* default fullscreen resolution to the screen size
* hide funny resolutions in windowed since it makes no sense
* extractor: refactor and cleanup for multi-game support
* deps: switch to `ghc::filesystem` as it is utf-8 everywhere by default
* extractor: finally working with unicode
* unicode: fix unicode cli args on windows in all `main` functions
* in-game vsync option, automatically framelimit correctly, fix minimize/alttab bugs
* fix jp text errors
* bump version number as panic
* this makes more sense i think
* clang
* oops delete debug print
* fix typo
* more typo
* shorten discord rpc text
* allow expanding enums after the fact (untested)
* make `game_text` work similar to subtitles
* update progress decomp
* update some types + `do-not-decompile` in bitfield
* fixes and fall back to original progress code
* update `progress` decomp with new enums
* update config files
* fix enums and debug menu
* always allocate (but not use) a lot of particles
* small rework to display mode options
* revert resolution/aspect-ratio symbol mess
* begin the override stuff
* make `progress-draw` more readable
* more fixes
* codacy good boy points
* first step overriding code
* finish progress overrides, game options menu fully functional!
* minor fixes
* Update game.gp
* Update sparticle-launcher.gc
* clang
* change camera controls text
* oops
* some cleanup
* derp
* nice job
* implement menu scrolling lol
* make scrollable menus less cramped, fix arrows
* make some carousell things i guess
* add msaa carousell to test
* oops
* Update progress-pc.gc
* make `pc-get-screen-size` (untested)
* resolution menu
* input fixes
* return when selecting resolution
* scroll fixes
* Update progress-pc.gc
* add "fit to screen" button
* bug
* complete resolutions menu
* aspect ratio menu
* subtitles language
* subtitle speaker
* final adjustments
* ref test
* fix tests
* fix ref!
* reduce redundancy a bit
* fix mem leaks?
* save settings on progress exit
* fix init reorder
* remove unused code
* rename goal project-like files to the project extension
* sha display toggle
* aspect ratio settings fixes
* dont store text db's in compiler
* properly save+load native aspect stuff
* MSAA
* support different TIE lods
* tfrag lod picking
* always compress screenshots
* mute annoying nvidia opengl message
* use a string here instead
* oops
* more mistakes...
* fix gamepad race condition, only allow gamepad for pad 0, fix `defstatehandler`, allow mapping any pad w/ keyboard
* dont render debug stuff with manylevel hack
* cmake: disable edit&continue flags
* goos: make the build system work for alternate file paths nicely
* vs: update vs config
* vscode: extend terminal buffer!
* vs: fix presets
* debugger: fix exception handler
* game: add logo to application
* decomp: get `cam-master` to "work" -- manually changed return type
* debugger: fix printing issue
* game: get the camera actually working
* game: neutralize the analog sticks
* game: support analog sticks
* tests: update ref tests
* temp commit - inprogress stuff
* fix `send-macro`
* turn camera stuff back on, seems to work. Still kernel-dispatch problem though
* address feedback
* formatting
* cleanup `main`
* whitespace
* start `progress` decomp pt1
* fill in more stuff
* Update label_types.jsonc
* run cheats
* clang
* make most of `progress` decompile
* `progress` pt 2
* [decompiler] support dynamic format strings
* Make `progress-draw` decompile and almost all `progress`
* make clang shut up
* fix unhandled format string
* fix `progress-draw`
* Update DecompilerTypeSystem.cpp
* fix?
* fixes
* fix a few functions
* make `language-enum`
* warn on weird floats
* fix minor pad bug
* dump stuff in `progress`
* make `progress-screen` enum
* progress progress
* update refs and fix stupid bug
* trying to get it to work
* it works!?
* disable sound functions
* fixes
* final touches
* tests
* tests
* add process allocations
* use the right register for windows
* another try for windows, counting is hard
* one more try
* use process allocations
Co-authored-by: water <awaterford111445@gmail.com>
* Begin spdlog integration for decompiler
* Replace old prints with spdlog equivalents
* clang-format
* Add Arch Linux documentation
* Remove spdlog (again)...
* improve label system
* clean up menu
* debug menu working, still need to fix tests
* cleanup-gfx
literally just renaming the window and a few debug prints
* fix readme typo
Co-authored-by: water <awaterford111445@gmail.com>