Rewrites specific kinds of lets where the return value of the `set!`
itself is meant to be used to just be `set!`s. Implemented at the let
rewrite level. Seems to work for Jak 2 so far.
Fixes#1854 .
* all-types: improve all-types generation
* all-types: re-generate all-types
* tests: remove the test reporting feature
the format indeed doesn't work, and all current actions require too many permissions for forked PRs.
I'll make my own eventually that works properly (use the new markdown feature)
* all-types: put the states in the method table instead
* all-types: replace all `*time*...uint64` fields with `time-frame` type
* all-types: address feedback
* 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
* some jp support to fix some errors in the original game
* music fade toggle
* recognize `process-new` macros!!
* strip casts in this macro
* rename macro
* fix cast typecheck
* update source 1
* detect kernel stack case
* less boilerplate
* `manipy-spawn` special case
* pretty printer improvements
* revert dumb thing from earlier
* use shell detection on `send-event`
* fix some events
* remove unused argument
* detect `static-attack-info` and add `CondNoElse` to shell detect
* better `attack-info` detect
* support `process-spawn` in multi-lets
* detect `rand-float-gen` pt 1
* detect as return value
* detect in `countdown` and `dotimes`
* oops this wasnt working
* fancier `send-event`s
* clang
* update source!!
* fix tests
* fine jeez
* uh okay
* fix some accidental regressions
* fix more regressions
* regression fixes
* fix big bug...
* extra safety!
* update refs
* [decompiler] read and process art groups
* finish decompiler art group selection & detect in `ja-group?`
* make art stuff work on offline tests!
* [decompiler] detect `ja-group!` (primitive)
* corrections.
* more
* use new feature on skel groups!
* find `loop!` as well
* fully fledged `ja` macro & decomp + `loop` detect
* fancy fixed point printing!
* update source
* `:num! max` (i knew i should've done this)
* Update jak1_ntsc_black_label.jsonc
* hi imports
* make compiling the game work
* fix `defskelgroup`
* clang
* update refs
* fix chan
* fix seek and finalboss
* fix tests
* delete unused function
* track let rewrite stats
* reorder `rewrite_let`
* Update .gitattributes
* fix bug with `:num! max`
* Update robotboss-part.gc
* Update goal-lib.gc
* document `ja`
* get rid of pc fixes thing
* use std::abs
* decompiler: support adding new strings to the game_text.txt file
* gsrc: expand the pckernel type and functions to work better with the menu
* gsrc: add new text-ids
* gsrc: add new macros to help with menu code
* gsrc: make a new type to generalize their list menu options
* gsrc: add new menu options and enums
* gsrc: cleanup and refactor the list menu option drawing code
this allows us to easily add a new list menu option...well as easy as the rest is atleast (setting up static lists properly, etc)
* gsrc: add and cleanup handling of new menu options
* scripts: add checks with nice error messages for user facing taskfile recipes
* lint: formatting
* address simple feedback
* gsrc: move modified files to `pc/` folder
* gsrc: revert changes to originally decompiled files
* gsrc: move modified and new files to `goal_src/pc` folder
* gsrc: update paths in `all_files.gc`
* update jak 2 config and hack to make game text dumpable
* update stuff
* update src
* do `cspace<-parented-transformq-joint!`
* progress.... kind of...
* more drawable stuff
* clagng
* bones begin
* more bones
* even more bones
* everything builds
* touches
* errors
* ?
* fix `quicksandlurker`
* updates
* update refs
* more fixes
* update refs
* 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
* decomp: mostly finish `cam-master`
* decomp/scripts: lots of work in cam-states
* stash
* Merge remote-tracking branch 'water111/master' into decomp/camera-master
Updated submodule third-party/googletest
* decompiler: Add support for non power of 2 offsets for inline arr access
* decomp: mostly finish `cam-states` need to fix a macro issue
* blocked: `cam-master` decompiler crash when adding casts
* decomp: finish `cam-states-dbg`
* decomp: mostly finish `pov-camera` with the exception of joint-related code
* decomp: `cam-debug` finished decompiling, no way does this compile yet though
* decomp: considerable work done in `cam-layout`
* decomp: `cam-layout` almost done!
* decomp: `pov-camera` finished, TC tests will fail for now
* decomp: working on resolving issues
* decomp: cam-layout decompiling
* fixing more issues in cam-master...one event handler remains
* skip problematic function in `cam-master` for now
* gsrc: update res macros
* decomp: finish `cam-states`
* decomp: giving up on `cam-debug`
* tests: allow skipping state handlers in ref tests
* decomp: working through cam-layout bugs
* decomp: allow for shifting non-integers
* decomp: finalize `cam-layout` and `cam-master`
* decomp: finalize `cam-states`
* cleanup: bi-annual formatting of the casting files
* formatting
* address feedback - leave the float labels alone for now
* address feedback
* linting/formatting
* update gsrc and ref tests
Co-authored-by: ManDude <7569514+ManDude@users.noreply.github.com>
* [decompiler] pal "support"
* inoffensively add some PAL-updated types
* fixes!
* clarify some things for windows
* Update README.md
* dummy
* config fixes
* dummy
* mips 2 c basic version, not yet tested
* calling works without crashing, but the function doesn't
* it works
* add test
* cleanup and actually add the test
* dont use mips2c by default for font
* clean up formatting
* 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
* set up types
* cleaned up type analysis and got things working through atomic ops
* expression working, need types
* improved types and names
* getting close
* finish up dma-disasm
* fix
* temp: commit what i have so far
decomp: Fix nonempty_intersection impl for MSVC Debugging use-case
docs: Add info on getting ASan builds running on Visual Studio w/o exceptions
* decomp: initial rlet implementation
* decomp: cleanup pass of vector-rewrite stage
* decomp: Commit in-progress vector.gc, shortcomings are TODO commented
* decomp: More cleanup, rename from being `vector` instr specific
Fundamentally, this process can be used for re-writing ANY inline-asm instruction
* decomp: Support 4th arg ACC instructions
* decomp: Final pass of vector.gc before implementing last instructions
* decomp: Better warnings when hitting unimplemented instructs
* compiler: Implement inverse-sqrt and mov.vf
* decomp: Final manual pass over vector.gc, documented gaps
* decomp: Finish decompiling what currently is possible in vector.gc
* decomp: Fix Variable -> RegisterAccess conflict
* decomp: codacy lint
* Address review feedback
* Address feedback part 2
* Resolve build failures
* fix parent issue
* fix compiler issue
* update
* add error messages
* fix error
* fix array access, temporary
* more clean
* fix
* rename arg variables better
* fix method name
* fix no return value in decompiler
* many small fixes
* cheat types so it works
* name map
* fix old test'
* add rough jak 2 config so the decompiler can atleast unpack dgos
* third-party: commit lzokay
* Switch to lzokay for DGO decompression
* third-party: Remove minilzo library
* third-party: Add lzokay as a SHARED lib
* wip decompiler ir
* add AtomicOp stuff
* fix windows build and warnings
* add instruction parser
* include
* make minilzo shared
* odr fix
* a
* fix merge conflicts
* move decompiler into namespace
* update the code coverage to include the decompiler
* add demo test
* add register use test to example test