A few issues:
- lwidea's fr3 is getting loaded and unloaded all the time
- the debug line drawing clipping is wrong (doesn't seem wrong in pcsx2,
so I think this is on us)
- nothing actually using vis data yet
- at a large distance, our view frustum culling seems slightly too
aggressive (might be that viewport scissoring is wrong)
- in the city, things seem darker as you move away. unclear how this is
happening (fog?)
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
* Update default-menu.gc
* make fog hack slightly less aggressive
* add `reload-text` back but kinda fixed
* more unlocks for non-guaranteed musics
* smarter language save & load
* also save pc settings on autosave
* more special music log cases
* one more
* 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 screenshot hotkey and added a toggle to debug GUI to disable screenshot hotkey (#1765)
* Renamed gfx_dumps folder to screenshots and screenshots taken with hotkey now use game render options not debug gui screenshot render options (#1765)
* Updated get current timestamp to use strftime
* fixed clang formating errors for screenshot hotkey
Co-authored-by: sardap <sardap@users.noreply.github.com>
* scripts: remove references to non-existent script
* game: fix transition from fullscreen (not borderless) to windowed
* game: ensure window is position away from the corner of the display when switching from fullscreen
* game: restore windowed mode settings properly
* game: use the game version for saving settings/saves
* game: prevent windowed mode from being auto-centered on initial init
* game: save and restore window coordinates
* lint: formatting
* redo cheat encodings
* fix error
* add no texture cheat
* tiny cleanup + add sidekick stats button
* crappy implementation of big/small head mode
* more correct bone scaling
* redo bone manip code a bit
* jp text fixes
* improved matrix math!
* add big fist cheat, minor type cleanup, add some debug toggles
* move all this mess to a new file
* slightly rework joint scaling function
* add big head npc cheat
* subtitles typo
* WIP mirror mode
* fix mirrored hud sprites
* fix mirror mode sound pan
* add cheats to menu!
* split some subtitles
* 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>
* use `game-text-id->string` function here
* small cleanup to pc progress code
* better way to handle "locked" texts
* this is better
* fix potential incompatibilities with merc & ocean renderers
* show cheat requirements in menu + change requirements
* increase size of money starburst
* split some more subtitles
* potentially fix a vsync bug?
* change territory encoding logic
* pass game territory to compiler
* ugh LOL
* 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
* raise particles cap to 10x
* change a text line
* allow sound bank load during vag
* fix default settings and fps setting
* keep "auto save disabled" option in menu
* cheats menu!
* Update game_text_ja.gs
* fix battle hud crash
* add cheats menu to title
* update settings version
* Update all-types.gc
* disable envmap fade out with hires actor lod setting
* disable merc fadeout if not using ps2 actor lods
* dont update aspect ratio if game size is bad
* set vsync later
* increase memory for generic, sprite and dma.
* fix issues with aspect ratio not saving
* split forcing envmap to a separate toggle
* too slow, dont expose to users yet
* [graphics] a few optimizations
* fullscreen crap
* working, other than aspect ratio thing
* same behavior as before
* fix blackout bug, add more error messages
* fix error when 0 size buffer
* rm warning
* one last 0 size issue
* Fix instanced sprite distort renderer not always using the most recent sine table
Sometimes the game won't update the sine table on the same frame the aspect ratio changes (for example if the player is in a cutscene), but the renderer assumed that it was always up-to-date on the next frame. This caused it to occasionally use outdated vertex/tex coord data that usually made the distort sprites a little too small/big.
* Same fix, but better
* 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
* fix utf-8 handling around env-vars
* fix file opening errors related to unicode
* add uncaught exception handler in `gk` to ensure something is logged
* gracefully fail if window icon cant be loaded and work with unicode
* linux fix and add changes to vendor file
* [WIP] initial sprite distort implementation
* Clean up
* More clean up + document sprite distort VU program
* Format code
* Address CI issues
* Adjust hacks in distort fragment shader
* oops
* Optimize sprite distort rendering down to one draw call
~2x speed up
* Format file
* Clean up distort rendering and add separate profile scopes
* Fix glVertexAttribPointer
* Fix sprite distort getting messed up when the viewable area doesn't fit the window perfectly
* Add debug option to disable sprite distort
* One evil space to fail CI...
* oops
* Increase sprite-aux-list size when PC_BIG_MEMORY is true
* Address lints
* 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
* Remove assets folder, use more std::filesystem
* windows fix
* another one for windows
* another one
* better system for different folders
* rm debugging stuff
* let extractor override everything
* dont revert jak1 change
* [extractor] validate files when extracted as folder
* jp text fixes
* move game text version to the text file and fix subtitle editor escape chars
* make bad subtitles not crash the game
* fix texscroll in lag
* fix mood, fix decomp of other versions, fix text decomp
* clang
* fix tests
* oops dammit
* new fixes
* shut up codacy
* fix nonexistant subtitles crashing the game
* fix text hacks and extractor re-use on folders
* 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
* [cleanup] remove merc1, fix memory bugs, reduce memory usage
* change compiler log to see actual info from build_level
* save file
* editing text is hard
* wip
* learning about colors
* gltf node stuff working
* cleanup
* support textures
* bvh generation seems reasonable
* tree layout
* frag packer, untested and doesnt do real stripping yet
* temp
* working collide frags
* handle bad inputs better
* clean up
* format
* include
* another include
* reorganize for release build use
* docs for ee merc code
* 150fps support but it replaces 60fps
* oops switched wrong mode
* oops 50.0 not 50
* formatting
* fix cutscene speed
* oops
* Replace latest merc.md, not sure what happened
* Automatically switch between video modes (ntsc or 150fps) based on
refresh rate. Cleanup particle timing
* cleanup
* fix idle animation
* linter
* fix village2 crash
* can load all levels again
* update loader output and replace sparticle time with formula
* Add 100fps support, add some comments, fix build
* formatting
Co-authored-by: water <awaterford111445@gmail.com>
* stash
* temp
* tools: subtitle tool works! just gotta fill out the db / polish UX
* tools: added configuration for every subtitle we have so far
* tools: add some colors to the editor, time for repl controls and make it run the code!
* tools: continuing polish of tool, getting very close
* tools: finished UX polish, just need to write deserializers
* tools: added deserializer for subtitle data
* tools: exported subtitle files, all data appears intact
* tools: more UX polish and test all the cutscenes, majority work
* assets: update subtitle files
* lint: formatting and cleanup
* lint: codacy lints
* music flava hack toggle
* fix hint subtitles not being considered offscreen
* music player works
* fixes + citadel, maincave, lavatube music
* add remaining tracks
* fix test
* fixes
* fix lib
* add "quit game" option to title
* reduce amount of particles in particle system
* increase merc2 memory
* enable extra particles by default
* fix tests
* tfrag3 data for merc2
* dma hooks for merc2
* start designing merc2 opengl, seems like the simple approach will be the best here
* before bone packing experiment
* fix up bones.gc
* use uniform buffer
* speedup, fix faces and eyes
* final fixes
* first pass at loader updates, tie is still bad
* temp
* improved loader
* run iop less often
* tfrag3 data for merc2
* dma hooks for merc2
* start designing merc2 opengl, seems like the simple approach will be the best here
* before bone packing experiment
* fix up bones.gc
* use uniform buffer
* speedup, fix faces and eyes
* final fixes
* [gtie] tie inst and proto functions
* first chain input to generic ee looks good
* m
* works
* ugh
* add tie generic
* rm debug print
* rm generic ties from fr3
* srpc: Implement part of VBlank_Handler
And call it on RPC message for lack of better ways
* ssound: Fix distance calculation
avoids negative array index
* srpc: fix sound id assignment
* srpc: bail out on missing sound id
* ssound: Fixes for angle and volume calculation
* srpc: Fix VAG filename stuff
* ssound: Fix CalculateAngle
* ssound: UpdateAutoVol fixes
* srpc: Fix up SET_PARAM command
* ci: fix windows releases (hopefully)
* scripts: fix Taskfile file references for linux
* asserts: add `ASSERT_MSG` macro and ensure `stdout` is flushed before `abort`ing
* asserts: refactor all `assert(false);` with a preceeding message instances
* lint: format
* temp...
* fix compiler errors
* assert: allow for string literals in `ASSERT_MSG`
* lint: formatting
* revert temp change for testing
* 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
* [goalc] macro expansion in integer constants
* working
* didn't break it yet
* support conditional compilation
* fix up some more small bugs
* fix duplicate evaluation of bitfield definitions
* paranoid
* first attempt
* fix
* zip to tar
* windows
* try again, std::filesystem sucks
* std::filesystem is still garbage
* std::filesystem is terrible
* std::filesystem continues to waste my time
* again
* neadsflaldksal;df
* decompile 90% of shrubbery
* some more progress
* some more
* big function decompiled
* went through `draw-prototype-inline-array-shrub` and made more notes
* shrub: start implementing extract_shrub
* read through current notes and add the info to current decomp
* decomp: allow skipping inline-asm from output
* add code to BspHeader to get GOAL types for shrubs
* add doc
* wip
* fix bad merge
Co-authored-by: Tyler Wilding <xtvaser@gmail.com>
Co-authored-by: Tyler Wilding <xTVaser@users.noreply.github.com>
* add ocean-vu0 mips2c and decomp ocean-texture
* vu1 texture setup
* temp
* unoptimized version working
* optimized version by default
* update ref test
* temp
* name the obvious ones
* un-pipelined the fast case in generic vu1
* generic2 dma
* pass2
* first pass at opengl
* many fixes
* fix hud, strip
* windows fix
* final tweaks
* memcard folder
* add missing include
* bug & crash fixes
* relax fog hack slightly
* buff particles more
* borderless hack
* tone down sprite hack
* int consts in `deftype` + increase sparticle queue
* move a menu button around
* clang + test fixes
* less confusing image
* add test for new deftype feature
* begin generic merc
* more generic stuff
* generic dma generation not crashing, at least until high-speed-reject
* c
* unpacker for generic
* starting to work
* small fixes
* more fixes
* more progress
* cleanup
* fix tests
* no custom imgui assert on windows
* add subtitles support (tools + goal + text file).
* add to build system proper
* better handling of line speakers
* billy test subtitles
* adjust timings
* better handling of subtitle timing + citadel subs
* press square to toggle cutscene subtitles
* improve DirectRenderer performance
* clang
* dont error out if there's no user files
* make system supports multiple inputs for subtitles
* clang
* oh no typo!!
* avoid future issues
* fix warp gate crash
* remove no longer necessary code in DirectRenderer
* remove temp prints
* delete triplicate code
* i found a better way
* fix make issues with subtitles
* force avx compilation
* first pass
* first pass at shrinking fr3s
* only need to load vertices once
* avx2 detect and switch
* fix build
* another ifx'
* one more
* fix the sky and stupid math bug in size check
* MSAA
* support different TIE lods
* tfrag lod picking
* always compress screenshots
* mute annoying nvidia opengl message
* use a string here instead
* oops
* more mistakes...
* ci: switch to codacy for coverage
* docs: update badges
* decomp: allow overriding config flags via CLI
* cleanup: top level file cleanup
* docs: big README overhaul
Attempt to close#1128 and #1086
* decomp: attempt to detect if `iso_data` is missing or wrongly extracted
* game: switch to `fpng` for screenshots, allow for compression
closes#1035
* game: switch vsync control to a checkbox
* lint: format cpp files
* lint: format json files
* docs/scripts: organize taskfile
* delete unused shaders
* hide some options in debug menu
* change fullscreen logic a bit
* add "all actors" toggle
* borderless fix and fix alpha in direct renderer untextured (do we need a separate shader for that?)
* fix fuel cell orbit icons in widescreen
* fix `curve` types
* refs
* fix levitator task...
* fix some task stuff
* update font code a bit (temp)
* cmake, third-party and visual studio overhaul
* Update .gitmodules
* update modules
* clone repos
* fix encoding in zydis
* where did these come from
* try again
* add submodule
* Update 11zip
* Update 11zip
* Update 11zip
* delete
* try again
* clang
* update compiler flags
* delete 11zip. go away.
* Create memory-dump-p2s.py
* properly
* fix minimum architecture c++ compiler flags
* fix zydis
* oops
* Update all-types.gc
* fix clang-cl tests
* make "all actors" work better, entity debug qol
* update game-text conversion code to be more modularized
* Create vendor.txt
* fix typos and minor things
* update refs
* clang
* Attempt to add clang-cl support to vs2019 and CI
* vs2022 + clang-cl
* srsly? fix clang build
* Update launch.vs.json
* extend windows CI timer
* merc dma generation
* wip very early version of merc
* small fixes
* fix
* fix more merc bugs
* derp fixed min
* oops we did need something weird on max
* merc for everything
* program optimization 1
* more optimization
* windows
* windows 2
* clean up
* fix test
* BLERC
* a crapton of fixes
* Update cavecrystal-light.gc
* damn you
* fix bunnies
* change codegen for int -> float cast (just add sign extension now)
* fix test
* this file is tagged anyway
* fix some stack types
* remove bad camera debug funcs
* add more heap bars and entity pick menu
* finish entity menu and make `music-flava` enum
* fix some `process-taskable` fields
* citadel sage crash fix
* fix citadel drop plats
* fix tests
* fix some casts
* update refs
* finish `village3-obs` and `snow-ball`
* Update README.md
* fix sidekick too
* fix issue?
* more entity inspect hardcoded checks
* more
* use `*display-actor-anim*` for something!
* CRAP
* also clear actor anim when deselecting entity
* *display-actor-anim* already renders this!
* do not display `path` tag info
* entity debug inspect tool
* one more
* make debug string even larger
* missing res tag types
* more polish and more known tags
* last few
* also add a new sprite renderer
* claaaang
* goal build fix
* fix tests, add stack singleton option
* make all event-message-blocks the same
* diskboot
* fill collide cache with bounding box working
* yprobe fully working for background at least
* target
* final cleanup, add a bit more foreground mesh stuff that is untested
* warnings, merge issues
* tests
* revert debug changes, format'
* rendering perf
* Add remaining levels to build system
* add a particles menu
* Update default-menu.gc
* Update part-tester.gc
* make part tester non-destructive
* Make the "ps2 particles" toggle work!
* Update kmachine.h
* fix test
* fix test
* update progress code and fix our frame "scissoring"
* aspect ratio hacks
* expand progress tint for widescreen
* give up and comment things properly
* properly undo hacks
* optimize sprite texture flush + update shaders
* fix bugs
* change logic a bit
* crunch PNGs
* hud size fix
* clang
* remove shaders from list
* use really small alpha cut-off point for sprites
* ad `flat` to vertex shaders too
* increase cut-off very slightly
* take *2 into account
* ok for real this should be good enough
* improve performance on intel graphics
* more tweaks, add a glfinish button
* remove divide in fragment shader
* temp
* add cpu sky blend
* use vao
* change format
* use floats in direct renderer
* format
* format again
* tfrag ice
* temp
* temp
* wip
* more progress on the instance asm
* first half of tie extraction, up to dma lists
* more tie extraction
* first part figured out maybe
* bp1 loop seems to work, bp2 loop does not
* bp1 and bp2 appear working. sadly ip is needed
* ip1 outline, not working ip2
* just kidding, ip2 seems to work
* extraction seems to work
* basic rendering working
* tie fixes
* performance optimization of tie renderer
* hook up tie to engine
* fix more bugs
* cleanup and perf improvements
* fix tests
* ref tests
* mm256i for gcc
* CLANG
* windows
* more compile fixes
* fix fast time of day
* small fixes
* fix after merge
* clang
* 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
* begin work
* work
* working objs
* exporting
* it works
* before some time of day fixes
* add time of day interp and also fix zbuffer
* some small blending fixes
* improve randomess
* clean up extraction and missing blend mode
* culling, time of day, more level fixes
* more cleanup
* cleanup memory usage
* windows fix
* 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
* temp
* some decomp
* tfrag dma setup
* fix negative label bug
* tfrag dma setup
* tfrag, with pipeline tricks
* kinda works
* cleanup before trying some color stuff
* time of day works
* clean up
* temp before render changes
* a few more fixes
* fix up tests
* clean up
* fix
* fix alignment
* one more cleanup
* time of day
* goal code seems to work
* stars at wrong spot
* stars and sun work
* debugging clouds
* fix texture correction
* sky works
* cleanup, add profiler
* clean up
* final clean up
* offline tests
* missing include
* change type of `seconds`
* fixes to pc pad input (visual only)
* strip down openGL to the version we're actually using for now (4.3 no extensions)
* turn on this opengl message
* really minor inconsequential change
* wip, taking a break to work on asm stuff first
* the goal code for sparticle
* mips2c the first sparticle asm function
* temp
* particle processing no longer crashing
* temp
* working texture cache for vi1 and hud textures
* sprites
* cleanup 1
* temp
* temp
* add zstd library
* temp
* working
* tests
* include fix
* uncomment
* better decomp of sparticle stuff, part 1
* update references
* 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>
* add support for non virtual states
* typecheck go
* start on virtual states
* more support for virtual states
* offline passes
* fix tests
* use behavior shortcut instead of lambda
* final cleanup of virtual go
* unused var warnings and fix inconsistent enum decompile order on win vs linux
* fix thread safety bug with goal symbol table and vif1 interrupt handler
* fix type mistake
* revamp gfx and display systems a bit
* Use some fancy c++ pointers instead of just raw pointers
* Tidy some things up.
* clang
* clang 2
* fixes
* fixesss
* error detection when making display
* use `std::function` for this because that's what you're meant to do
* [memdump] Analyze fields of type `(array basic)`
* fix test
* Massively simplify things.
* fix warnings in repl lib and add macros to autocomplete
* fix crash on ctrl-c, build runtime as static lib and make goos prompt look fancier
* some tweaks for linux build
* Implement runtime display (test)
* Update runtime.cpp
* [game display] add "-nodisplay" argument
* style fixes
* Update gfx.cpp
* [deci2server] fix deadlock when killing a Deci2Server
* add libxrandr to linux github test
* correct package name to libxrandr-dev
* set g_main_thread_id in exec_runtime
* add libxinerama to linux test packages
* correct the name
* add libxcursor1 package
* Update linux-workflow.yaml
* add libxi-dev
* fix constructor for g_main_thread_id
* fix submodules + use -nodisplay during tests
* move the gfx loop to its own function and use a lambda for exit conditions
* fix include
* fix include
* fix includes (for real this time)