* 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
* `flying-lurker`
* why'd this get left behind?
* also `ambient` and add a `banned_objects` config and fix offline tests
* clang
* fix `ambient-type-sound`
* 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
* 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>
* decomp: close to finishing `projectile`
blocked by #754
* decomp: finish `projectiles`
* decompiler: Add support for `sparticle-launch-group` from static data
* fix sparticle-launch-group instances
* decomp: change arg0 to `entity`
* stash
* decomp: finish what is currently possible in `time-of-day`
* need to know how sp-field-init-spec's functions are called
* solved some issues, but going to be blocked by the sparticle-group-item
* decompiler: Add support for `sparticle-launch-group` from static data
* decomp: finish `weather-part`
* add script to make adding lambda label casts a bit easier
* decomp: almost finish `evil-bro`
blocked by handle -> process conversion it seems:
`No method or function named .asm.sllv.r0 for type (pointer process-tree)`
* so close! SLLV issue (not a simple handle scenario)
* decomp: finalize `evilbro` blocked by func return type
* decomp: finish `evilbro`
* add IR syntax highlighting
* set the filterFileRegex properly!
* stash
* decompiler: Add print if conditional fails
* decomp: Mostly finish `target-util`
* decomp: figured out a bit more with `target-util`, a bit stuck now
* decomp: *deep breath* `logic-target` mostly complete
* decompiler: More robust arg_count checking for `format` calls
* decomp: some more work in `target-util`
* fix sllv usage
* decomp: `logic-target` is compiling
* decomp: `target-util` very close - blocked by decomp issue!
* decomp: finish `target-util` except for one issue
#772
* demp: update goal_src
* linting
* add back the one remaining method
* address feedback, update source files
* 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
* decomp: Almost finish `shadow` blocked on static inline-array
* decomp: Add support for `sparticle-launcher` static data
* decomp: finalize `shadow`
* add definitions for sparticle related symbols
* actually fix the crash
* some work on `ocean-transition`
* decomp: finished non-blocked `ocean-transition` functions
* decompiler: Support <0 unsigned comparison
* decompiler/goalc: Support half-word and byte parallel extend ops
* attempt to add support for byte stack spills, assertion errors
`Assertion failed: idx < n_src, file ..\..\..\decompiler\Disasm\Instruction.cpp, line 353`
* decomp: fix byte stack spills, only 1 issue remains in `draw-ocean-transition`
* almost there...
* closer, but unknowns about `dma-buffer` blocking
* dealing with dma-buffer issues
* some more fixes, only an obscure xmm issue remains
* add two problematic functions to blacklists, avoid goal_src additions for now
* fix building/compilation but TypeConsistency hits an assertion error
the `ocean-mid-masks`'s `data` field is none of the types
* decomp: finalize `ocean-transition`
* address feedback - 1 issue remains
* decomp: finalize `ocean-transition`
* started process on `camera`
* the bulk of `camera` is finished, with the exception of a few
* decomp: Confirmed function ret value
* decomp: `cam-combiner` dead code issue
* stash
* decomp: finish `cam-combiner`
* decomp: finish `cam-start`
* decomp: mostly finish `cam-update`, just needs polish now
* `cam-standard-event-handler` still causing issues
* `cam-combiner` issues with top-level `s6` usage
* decomp: update reference tests
* decomp: finalize `cam-start`
* decomp: `cam-update` cleaned up everything except the array of planes issue
* label correction
* still blocked in cam-combiner over casting issues
* decomp: resolve issues in `cam-start`
* decomp: finalize `cam-update`
* stash
* decomp: finalize `cam-combiner`
* decomp: finalize `camera`
* decomp: address feedback
* clean up
* before int to float stuff
* before trying to eliminate the separate read and write maps
* partial fix for register issues
* add missing include
* [decomp] `loader` prelim work + some cleanup
* more things
* more
* even more
* yet even more
* minor fixes
* decompiler fix + use behaviors for two funcs
* last functions
* Create loader_REF.gc
* more work
* change vag tool config format + unrelated farmer and yakow stuff
* update some things
* fix some decomp
* cleanup things i came across + make dgo compileable
* fix consistency test
* update refs
* offline test: skip buggy `external-art-buffer` method
* fix test
* decomp: mostly done `hint-control`
* decomp: Started and decent chunk of `menu` done
* temp stash
* decomp: escape from `menu` hell
* decomp: starting on `default-menu`
* decomp: As much as i can do in `default-menu` at this time
* decomp: clean up `hint-control`
* decomp: fix reference tests
* temp stash
* decomp: finalize `menu`
* decomp: add `menu` to goal_src
* decomp: finalize `hint-control`
* decomp: Resolve TypeConsistency issues
* and fix reference tests
* address feedback
* format and lint
* fix tests
* temp
* working, but type pass got really slow
* clean up
* changelog and flip order
* clean up and add tests
* fix zero size array
* handle lambdas correctly
* another windows fix
* stash
* decompiler: support symbols in arrays
* decomp: a ton of lambda casts
* finish task control?
* add lambda label casts
* decomp: resolve some issues, add enums
* decomp: One last decompiler issue remains
* decomp: finalize `task-control`
* linting
* revert change to test change, didn't mean to commit
* decomp: comment out function call for now
* 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.
* scripts: improve decomp-next script
* script: Make it possible to consistently cleanup `all-types`
* now use the actual parent type!
* adjust the symbol order for collectables
* re-organize
* manually fix this edge-case for now
* clean-up various files, do `game-h` and `generic-obs-h`
* cleanup `smush-control-h`
* cleanup `collide-edge-grab-h`, `collide-mesh-h`, `collide-shape-h`
* [goal lib]organize minor things
* Fix a library command before I forget again
* fix
* waiting for `entity-camera` / `entity-ambient` issue
* stash
* add missing definitions
* decomp: `cam-interface`
* as far as i can get with `path-h`, how do you specify pointers on the stack?
* correction, no way these are just simple integers but `etype`is still a mystery...
* decomp: `camera-h` | `cam-interface` | `cam-interface-h` and `entity-h`
* revert change to `process` doesn't seem likely
* get a full mapping of all `symbol:file-name` for jak1
* cleanup before any additional work is done
* more pre-organize changes
* scripts: script written to cleanup all-types...but what will cleanup the script...
* resolve clashing enum symbol names
* some manual changes to symbol order
* very close! don't completely lose types that are fully commented out
* scripts: New symbol mapping and further script polishing
* changes needed to make the script function properly
* brand new all-types!
* remove now irrelevant symbol definitions
* formatting cpp
* decompiler: Remove symbol dumping feature, not accurate anyway
* [decomp] even more `res`
* [decompiler] make `logand` with pointers and constants return pointer
* [decomp] more work
* update offline tests
* fix tests(?)
* `*res-static-buf*`
* fixes
* fix reference
* [opengoal] make `logand` work directly with pointers
* [decomp] `inspect res-lump`
* use the inline methods
* don't use a math mode for pointers
* [compiler] allow optionally setting disassembly output file
* [x86 disasm] Keep casing consistent between instructions and offsets
* disable asan for windows because it is too slow
* add `deref` and `&deref` macros, change `case` construct
* update `res`
* update `case` usages
* Fix some `res` methods
* `res-lump` method 9
* [decompiler] make certain floats decompile to constants
* update various types in `mood-h`, `time-of-day-h` and `art-h`
* fix `time-of-day-context`
* add some offline tests
* make `new-dynamic-structure` decompile at least
* formatting
* Update all-types.gc
* Update all-types.gc
* use `kmalloc-flags` for goal `kmalloc`
* cleanup some drawable stuff, add offline tests
* cleanup generic-h a bit
* make decompiler work on 16-bit static data
* cleanup ocean stuff
* fix `ocean-spheres`
* oops forgot this
* I forgot to actually make `ocean-tables`
* Make `:do-not-decompile` work on field lookup as well
* decompile `font-h` and update a vector type + minor fixes
* fix some types
* fix font-h
* fix font-h (again)
* update a script
* fixes
* Fix segfault
* Fix `PROT_NONE` page protection on windows
* 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
* Allow enum names to serve as types (using the enum's type)
* Formatting
* add doc to `get_enum_type_name`
* Ban enum forward-declaring, and remove unneeded checks
* prepare for decompiling display
Needs some work on the decompiler (mostly bitfield stuff) before a more proper decomp can be done
* make `(profile-bar draw)`, `set-display-gs-state-offset` and `set-display-env` decompile
decompiler should now support unsigned divide
* fill in some dma-h types
* Fill in a few VIF bitfields + other minor fixes
* Update all-types.gc
* Fix stupid mistake in `vif-mask`
* update dma-h reference
* this uint32 is actually a `vif-tag` (oops)
* get gkernel and gkernel-h at least somewhat working in the offline tests
* strip comments from json
* switch hints to casts. online tests passing, offline passing up to gkernel
* variable retyping is added
* fix up casts in lets
* update
* 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
* use new fake-asm macro
* [timer] update some docs and code for clarity
* Fix typos
* uncomment "sync" instructions
* some decimal to hex
* move fake-asm's to gcommon
* [timer] document timer-mode more.
* Fix errors
* i dont like this
* ObjectFileDB: Fix crash if obj list text has no objects
* rename "decomp.bat" to "decomp-jak1.bat"
* config: enable expression analysis
* decompile timer-h
* Tab to space.
* add a note to deftype profile-name for the future
* timer-mode: use register name instead of full name
looking at the other types, it looks like NDI seemed to have preferred it this way
* [timer-h] set -> timer-bank mode type to timer-mode
* [timer-h] use register-friendly return value for method
* [timer-h] comment out unsupported feature
* [main-h] remove redundant quote
* Update .gitignore
* Update main-h.gc
* specify a label_types_file variable in jak1 config
* 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'
* [timer decomp] preliminary decomp
* [goal-lib] add inplace macros for logior, logxor, lognor and logand
* [timer decomp] Finish decomp for now
* [timer decomp] OCD whitespace
* [all-types] fix type consistency
Sorry mr. decompiler but you will have to take the hit
* [timer decomp] Fix more type consistency
* [timer decomp] ACTUALLY fix it + script so I don't forget
* [timer] automatically choose gpr for rlet's
* ObjectFileDB: Fix crash if obj list text has no objects
* rename "decomp.bat" to "decomp-jak1.bat"
* config: enable expression analysis
* decompile timer-h
* Tab to space.
* add a note to deftype profile-name for the future
* timer-mode: use register name instead of full name
looking at the other types, it looks like NDI seemed to have preferred it this way
* [timer-h] set -> timer-bank mode type to timer-mode
* [timer-h] use register-friendly return value for method
* [timer-h] comment out unsupported feature