Commit graph

881 commits

Author SHA1 Message Date
water111 c28c47b4c8
[decompiler] Fix stores of constant enum/bitfield (#1011)
This fixes an issue where storing a constant integer in a location with
a type that is both an enum/bitfield and a child of signed integer. The
logic for dropping casts for signed integer constants was accidentally
being applied to any child of `integer`.
2021-12-13 19:38:21 -05:00
Tyler Wilding 83b88d74ff
decomp: finish target-ice (#1005) 2021-12-12 23:27:18 -05:00
water111 f6b40637a3
add declare-file debug (#1004) 2021-12-12 12:52:23 -05:00
Tyler Wilding 7edfc8bcec
decomp: Re-attempting previously blocked state decomp files (#907)
* blocked: `part-tester` - `code` handler thinks it returns nothing

* blocked: `crates` finished but `go` is returning none causing issues

* blocked: `(event ram-boss-idle)::snow-ram-boss` expression building fails due to delay slot issue

* decomp: finish `snow-ram` | `seagull` blocked, new static data issue

* decomp: finish `snow-bumper`

* stuck: `snow-ball` close, can't figure out a type made on the stack

* decomp: finish `spider-egg`

* decomp: finish `puffer`

* decomp: finish `driller-lurker`

* decomp: finish `dark-crystal`

* stuck: `kermit` - mostly done but stuck on a joint related callback arg

* decomp: finish `gnawer`

* decomp: finish `mother-spider-egg`

* decomp: finish `swamp-blimp`

* stuck: `mistycannon` prebind function signature

* decomp: finish `citb-plat`

* decomp: finish `darkvine`

* blocked: `jungle-mirrors` - issues with `link` macro

* decomp: finish `launcherdoor`

* decomp: finish `quicksandlurker` except for 1 unused function

* stuck: `balloonlurker` - `(code balloonlurker-mine-explode)` has some weird joint related code

* stuck: need to decompile an asm func in `orbit-plat`

* decomp: finish `voicebox`

* blocked: `mother-spider` has issues where `go` returns none

* decomp: finish `bully`

* decomp: finish `seagull`

* fixed up after merge conflicts

* decomp: finish `jungle-mirrors`

* update gsrc

* double checked files, fixed issues

* decomp: revert change to projectile methods

* decomp: some more fixes

* address feedback

* fix up remaining method calls in `cam-states`

* fix jungle-mirrors
2021-12-11 13:27:24 -05:00
ManDude 59a12029a0
[decomp] cleanup default-menu, fix dangerous IOP bug, autoconvert ints in pairs to/from bintegers (#997)
* fix a couple macros in ref tests

* `default-menu` cleanup

* add `find-instance-by-name` func

* improve debugger slightly hopefully

* fix IOP PLAY buffer overrun bug

* fix `default-menu` more

* automatically convert ints in static pairs to/from bintegers

* fix test

* clang

* fix a few more lambdas

* update refs

* add custom menu cuz cool

* oopsie! also make `default-level` and `halfpipe` go away

* add camera teleport menu

* update types in debug menu
2021-12-09 18:39:40 -05:00
water111 dbc266c00b
New Pretty Printer (#994)
* begin work on improved pretty printer

* update ref

* finish pretty printer

* force line break for defstate
2021-12-04 16:06:01 -05:00
water111 28b6584cd4
add ref tests for tfrag (#989) 2021-12-04 13:14:40 -05:00
water111 083202929c
[graphics] tfrag3 renderer (#978)
* 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
2021-12-04 12:33:18 -05:00
ManDude d845524c23
[decompiler] detect cpad-hold? and cpad-pressed? (#986)
* [decompiler] detect `cpad-hold?` and `cpad-pressed?`

* cleanup cpad macro button lookup

* better

* fix
2021-12-01 19:41:49 -05:00
ManDude 6a38597cbc
[decomp] make use of the generated load boundary data (#984)
* make use of the generated load boundary data

* reverse load boundaries
2021-11-30 19:14:43 -05:00
Tyler Wilding 111af1ec19
decomp: finish the remainder of untouched gameplay code (#893)
* decomp: finish `sidekick`

* decomp: got a lot of `target` done

* decompiler: Add support for non power of 2 offsets for inline arr access

* decomp: finish `target` mostly

* decomp: finish `water`

* decomp: finished `robotboss-weapon`

* decomp: finish `robotboss-misc`

* decomp: finish the majority of `robotboss`

* blocked: `racer` has an issue around entering a state

* blocked: `target-racer` done mostly, but NYI case in one function

* blocked: `racer-states` mostly finished, but bitfield issue

* blocked: `billy` on state decomping

* blocked: `bully` on state decomping

* waiting: `rolling-lightning-mole` waiting on navigate for 2 funcs

* blocked: `rolling-robber` finished but `s6-1` issue

* blocked: `ogreboss` uint64's for types cant label load em!

* blocked: `mother-spider` state decompilation

* half-done `target-flut`

* blocked: `target-flut` some sort of new bitfield state

* some improvements in `racer-states` with my new-found knowledge

* progress: started on `target-death`

* blocked: `target-death` handle casts

* decomp: finish `collide-reaction-racer`

* blocked: `target-handler` handler forced to return `none`

* decomp: 99% of `target2` finished

* decomp: finish `target2`

* gsrc: update

* update post merge

* address feedback

* scripts: add script to detect decomp issues

* fix wide-spread `collide-shape` method missing arg

* some small things i changed from master

* address feedback

* fix typeconsistency issue
2021-11-24 00:33:10 -05:00
ManDude 25b0e1be7d
[decomp] collectables + works ingame! (#971)
* decomp: `collectables`

* fix types

* `powerups` and fixes

* fixes

* Merge branch 'pr/929' into d/temp/collectables

* fix collide stuff

* update things...

* update

* update

* temp bump global heap mem

* fix `defstate` hooks wrong/unnecessary sets & collide stuff for collectables

* dumb mistakes :)

* stub out broken process-drawable stuff

* update refs

* add `:no-inspect` key and save some memory & remove birth logs

* Update kmachine.h

* clang

* add citadel

* fix no-inspect key

* fix tests!!

* fix stupid mistake in `collide-shape-prim-sphere` alloc

* comment annoying print

* feedback

* fix edge-case probably

* remove `:no-inspect`s
2021-11-23 18:25:57 -05:00
ManDude 80a002f8c0
[decomp] entity birth (#964)
* make birthing work

* fix float representation on defskelgroup

* test

* update

* debugger improvements & dont upload aux sprites

* ?

* fix progress

* fixes

* fixes

* Create bea.gd

* fix test

* fix xmm reg clobbering in kernel (water)

* cleanup cam-start

* clear gamepad state every frame

* allow controller connects and disconnects while running
2021-11-15 19:05:28 -05:00
water111 380e7b3580
clean up a few small things (#968) 2021-11-14 12:45:47 -05:00
Tyler Wilding c8a31d4d1b
decomp: Pass of the final remaining gameplay related files (#921)
* blocked: `plant-boss` has `go` returning none issues

* blocked: `ice-cube` return value getting forced to none

* blocked: `ropebridge` has static data isue

* blocked: `double-lurker` handle cast issues

* decomp: finish `billy`

* decomp: finish `lurkerworm`

* blocked: `pelican` handle casts

* decomp: finish `citb-bunny`

* blocked: inherited states in `snow-bunny`

* blocked: CFG resolution in `lavatube-energy`

* decomp: finish `citadel-sages`

* progress: working through `collectables`

* blocked: finished as much as currently possible in `collectables`

- process-tree's 10 method pparently has a 3rd arg -- im doubtful
- set-to-run function
- branch delay unimplemented case
- weird method 21 eco-collectable

* pre-merge

* decomp: update source files / ref tests

* decomp: finish `floating-launcher`, `shover`, `steam-cap`, `sun-iris-door`, `whirlpool`

* decomp: address feedback

* update ref tests and gsrc
2021-11-14 11:14:43 -05:00
Tyler Wilding f605b0ee38
decomp: generic-obs (#894)
* stash

* more

* and more

* like 80% done

* trying to update things

* refreshed work on generic-obs

* blocked: down to only decompiler issues!

* decomp: finish `generic-obs` skip over the failing functions for now

* `pair` -> `object`s and fix 2/4 of the functions i had skipped

* address feedback
2021-11-13 23:31:29 -05:00
Tyler Wilding 44c43610ce
game: Get camera code working (#965)
* 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
2021-11-13 22:41:15 -05:00
water111 3afd99a8e3
[graphics] partial tfrag implementation (#958)
* 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
2021-11-13 20:44:17 -05:00
ManDude ae22ba42d0
[decomp] orb-cache (#956)
* begin

* tests

* missing stuff
2021-11-09 23:22:31 -05:00
Tyler Wilding 5f1ed7ab60
decomp: decompile *-obs files (#856)
* 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

* decomp: start working on beach-obs

* blocked: `beach-obs` mostly finished, but handle cast issues and unknown `prebind` func signature

* blocked: `villagep-obs` done, `s6` not being referred to as `self`

* decomp: finish `citadel-obs`

* decomp: finish `darkcave-obs`

* blocked: need to allow `hud-h` to decompile properly (#f as static pointer)

* decomp: finish `jungle-obs`

* decomp: finish `village-obs`

* blocked: `misty-obs` handle cast issues

* decomp: finish `village2-obs`

* decomp: 1 function left in `swamp-obs`, particle related -- maybe we know now?

* decomp: finish `swamp-obs`

* blocked: `maincave-obs` handle casts

* decomp: finish `sunken-obs`

* blocked: `rolling-obs` handle casts and hud-parts

* decomp: finish `firecanyon-obs`

* decomp: finish `ogre-obs`

* blocked: `village3-obs` gives up type analysis!

* blocked: `snow-obs` has hud-parts and handle casts code

* decomp: finish `snow-flutflut-obs`

* blocked: `lavatube-obs` has s6-1 issue

* blocked: `title-obs` handle cast issues

* fixed post merge problems

* decomp: finish `jungleb-obs`

* blocked: `training-obs` has `s6-1` issue

* fix type consistency

* scripts: Extend update script to handle the game-text-id enum as well

* git: Update git attributes to effectively halve PR burden

* fixed `sound-play-by-name` signature

* fix particle definitions in firecanyon-obs

* fix func signature in racer-states

* update ref tests

* tests: update current ref tests

* tests: add `joint` to ref-tests

* tests: add `process-drawable` to ref-tests

* updated gsrc

* add back manual fix

* address most feedback, update source files

* get rid of forward declarations in `darkcave-obs`

Co-authored-by: ManDude <7569514+ManDude@users.noreply.github.com>
2021-11-05 21:29:32 -04:00
ManDude 2ea2d6a58a
[decompiler] implement defskelgroup (#955)
* implement `defskelgroup` in decompiler

0 lines removed!

* clang

* fix matcher code

* it was fine actually

* update all files (pt 1)

* update all files

* remaining fixes!

* null deref

* use METER_LENGTH

* move max lod warning

* clang

* math error

* fix macros too

* fix bug in a print
2021-11-04 19:10:39 -04:00
water111 8846968963
[Debugger] windows debugger and process drawable (#953)
* Update assert.h

* stuff for `process-drawable` to work

* add windows code for debugger

* debugger attaches

* something works

* remove bad ideas

* `(:break)` works

* connection fixes

* fixes + update docs

* crates & `defskelgroup` macro

* clang

* update tests and a few types

* temp

* temp

* fix files

* game builds

* reverse TypeConsistency operation

* add eye stuff for merc art login

* add `(:sym-name)`

* oops

* add `--auto-dbg` option to gc args

* codacy

* improve robustness of dgo unpacker and objectfiledb reading

* `cavegeyserrock`

* hopefully fix linux

* windows FormatMessage weirdness?

* mutex fixes

* fix merge conflicts

Co-authored-by: ManDude <7569514+ManDude@users.noreply.github.com>
2021-10-31 11:01:15 -04:00
Tyler Wilding 6299335625
decomp: finish junglesnake and viewer (#951)
* decomp: finish `junglesnake`

* decomp: finish `viewer`
2021-10-29 19:19:51 -04:00
water111 8b25a19e92
add ref test for text (#947) 2021-10-26 21:35:23 -04:00
water111 66bd7cb464
[decomp] memory usage (#945)
* fix type bug for memory-usage

* avoid name conflict in link method and function
2021-10-26 21:14:50 -04:00
Tyler Wilding 5f040792e9
decomp: finish merc-death and some progress on ocean / powerups (#940)
* blocked: `powerups` finicky handle casts

* stuck: decompiled `ocean-texture` but `ocean-verts` is a mystery to me

* decomp: finish `merc-death`

* fix some issues, add a way to remind us for files we've manually touched

* tests: add `ambient` to ref tests, uncover compiler error

* tests: add `main` and `font` to ref tests
2021-10-26 19:16:16 -04:00
Tyler Wilding 236f298138
decomp: add default-menu to ref tests, cleanup irrelevant gsrc forward decls (#941)
* decomp: add `default-menu` to ref tests, cleanup gsrc

* re-disable function

* decomp: add `drawable-group` to ref-tests
2021-10-25 19:22:52 -04:00
ManDude b24cc78cec
Fix first 3 audios being discarded + move some redundant code (#937) 2021-10-25 19:12:54 -04:00
water111 d6e82eedb0
[decomp] fix and decomp part tester (#935)
* temp

* update tests
2021-10-23 20:15:31 -04:00
ManDude 20e5f671b1
[decompiler] jak 1 PAL demo support + couple fixes (#934)
* add configs

* final fixes

* Update main.gc

* fix "NO-XGO" gen bug

* oops grr
2021-10-23 19:03:19 -04:00
water111 d6f631383e
decomp more level stuff (#932)
* more level stuff

* vi1 to jun load working, with multiple skies

* small fixes

* add level ref test

* clang
2021-10-23 16:00:49 -04:00
ManDude 8ca67a5c21
[decomp] add (most) PAL changes to main (#925)
* add (most) PAL changes to `main`

* fix examplecam movement

* fix up camera code

* Use `score` system when decompiling structures

* typo

* restore asserts
2021-10-23 15:38:06 -04:00
water111 49e3fa2963
fix decomp bugs and add ref tests (#930) 2021-10-23 10:41:11 -04:00
water111 44626cfedd
fix issues and decompile racer-states (#924)
* fix issues and decompile racer-states

* type fix
2021-10-21 22:38:39 -04:00
water111 b7fe8447e2
[decomp] improve types around enter-state (#923)
* clean up

* restore hack
2021-10-20 20:55:25 -04:00
water111 18714ba536
[decomp] load boundaries (#922)
* mostly working

* fixes

* very small fixes

* fix tests

* clang
2021-10-20 19:49:32 -04:00
ManDude 0e96cdb6c5
[de/compiler] New text tool (#918)
* fix `citb-drop-plat` a bit and PAL `fisher`

* Clean up `pc-pad-utils`. Looks so clean!

* Increase process stacks by ~2x

* Convert `game_text` custom encoding to and from a readable one (UTF-8)

* clang

* add missing characters

* support all diacritic variants

* fix a character

* remaining cases

* fix tests

* fix memory leak?

* clang

* add custom characters w/ diacritics

* Update all-types.gc

* robustness

* minor bug

* move custom font decoding function to `FontUtils.cpp`

* Move valid source chars patching to Reader constructor
2021-10-19 00:02:18 -04:00
Tyler Wilding 45318be063
decomp: finish _almost all of_ the remaining camera code (#845)
* 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>
2021-10-16 21:01:23 -04:00
water111 993f348c93
[decomp] recognize most cases send-event macro (#906)
* recognize send-event macro

* missing forward def

* resolve merge conflicts
2021-10-16 15:12:01 -04:00
ManDude caac740aff
[decomp] fisher and FIN.DGO (finalboss) level (#899)
* decomp `fisher`, `robotboss`, `light-eco`, `green-eco-lurker`, `sage-finalboss`, `robotboss-weapon`, `robotboss-misc`

* fixes

* add files

* add `:states` list to `deftype` and fix files

* test state forward decl's on a few more types

* also the refs

* add light-eco

* whatever
2021-10-16 14:06:33 -04:00
water111 9225d28444
clean up casts around conds with elses (#904) 2021-10-16 12:02:49 -04:00
water111 f87646e8ce
Small state fixes (#901)
* small fixes

* catch uncaught exception
2021-10-15 21:31:22 -04:00
ManDude bacf9fd130
PAL jak 1 decompiler profile (#891)
* [decompiler] pal "support"

* inoffensively add some PAL-updated types

* fixes!

* clarify some things for windows

* Update README.md

* dummy

* config fixes

* dummy
2021-10-15 18:17:51 -04:00
water111 3a1c9eaf75
[decompiler] clean up offline test program, reorganize decomp order (#895)
* make a new offline test

* finish up offline test and fix crash bugs
2021-10-12 20:33:26 -04:00
water111 b2052016e2
[decomp] sky/time of day (#883)
* 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
2021-10-10 20:07:03 -04:00
Tyler Wilding 2cb00f4a02
decomp: anim-tester and a bunch of progress on files that are blocked (#884)
* blocked: `puffer` has state decomp issues

* blocked: decomp crash when adding process-drawble cast in `helix-water`

* blocked: `green-eco-lurker` no nice way to cast value out of EMB

* decomp: started on `citadel-sages`

* decomp: `seagull` blocked state decomp

* blocked: `sunken-pipegame` runs into handle related issues

* blocked: `snow-ram` and `snow-ram-boss` state decomp

* decomp: `rolling-race-ring` blocked, handle casts

* blocked: state decomp in `part-tester`

* decomp: started `joint-exploder`

* blocked: `anim-tester` has rare cmove-#f-zero usage

* decomp: I lied! `anim-tester` finished

* config: update banned list
2021-10-10 19:53:19 -04:00
Tyler Wilding 28e3ba4863
decomp: finish effect-control -- fixed ambient-sound type def (#876) 2021-10-10 18:44:47 -04:00
ManDude 4665b5a246
change type of seconds and clean up opengl includes (#887)
* 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
2021-10-06 19:32:58 -04:00
Tyler Wilding f703d625a5
decomp: finish misty-conveyor (#878)
* decomp: finish `misty-conveyor`

* address feedback
2021-10-05 23:21:19 -04:00
Tyler Wilding 2b28d9b5f6
decomp: finish battlecontroller (#877)
* decomp: finish `battlecontroller`

* address feedback
2021-10-05 23:06:20 -04:00
water111 184720b7ca
finish up some functions in mood (#875) 2021-10-02 12:47:39 -04:00
water111 911a8e32a4
[decomp] minor type cleanup (#874)
* clean up some types

* clean up settings
2021-10-02 11:50:12 -04:00
Tyler Wilding fdd8615204
decomp: hud-classes (#819)
* maybe fix symbol decompile issue

* try again on a label

* stash

* very close on `hud-classes`

* 1 function remaining, whats `key` off the cpuinfo?

* some more work on hud-classes, 1 function to go...

* start updating `collectables` to new state handling

* decomp: finish `hud-classes`

* blocked: `hud` crashes in `(code hud-collecting)` around states

* fix tests

* address feedback

* damn submodules

Co-authored-by: water <awaterford111445@gmail.com>
2021-10-02 09:28:06 -04:00
water111 845802ca45
memory cards (in progress) (#868)
* c++ memory card stuff

* saving kinda works

* load working

* more progress

* clean up
2021-10-01 23:12:34 -04:00
Tyler Wilding e891b01c0b
decomp: relocate and collide (#867)
* decomp: finish `relocate`

* decomp: finish `collide`
2021-09-29 21:00:36 -04:00
Tyler Wilding fbcc1542f3
decomp: decompile remaining particle files (#865)
* decomp: finish `beach-part`

* decomp: finish `citadel-part`

* decomp: finish `robotboss-part`

* decomp: finish `sage-finalboss-part`

* decomp: finish `jungle-part`

* decomp: finish `flut-part`

* decomp: finish `firecanyon-part`

* decomp: finish `village2-part2`

* decomp: finish `swamp-part`

* decomp: finish `maincave-part`

* decomp: finish `sunken-part0-5`

* decomp: finish `ogre-part`

* decomp: finish `robocave-part` and `snow-part`

* decomp: finish `collectables-part`

* decomp: finish `village1-part`

* decomp: finish `village1-part2

* decomp: finish `training-part`

* decomp: finish `misty-part`

* decomp: finish `village2-part`

* decomp: finish `village3-part`

* decomp: finish `lavatube-part`

* decomp: finish `hud-h`, `target-racer-h`, `racer-part`

* address feedback
2021-09-29 20:33:40 -04:00
water111 b1e987c42f
fix pointer set to #f in static (#864) 2021-09-28 22:20:45 -04:00
water111 7ebbe812b1
Cleanup sparticle, add ref tests, name a few methods (#863)
* temp

* add reference tests
2021-09-28 21:17:38 -04:00
Tyler Wilding dd959d0d0d
decomp: Continuing full pass of gameplay code (#839)
* decomp: finish `babak` - :code is called in `(code nav-enemy-patrol babak)`

* decomp: almost finish `process-taskable`

* blocked: mistycannon / pelican

* decomp: finish `babak-with-cannon` write a script to fix gsrc

* decomp: finish `process-taskable`

* decomp: finish `flutflut` and `yakow`

* decomp: finish `fishermans-boat`

* blocked: state decomp `training-obs`

* decomp: finish `muse`

* decomp: finish `bonelurker`

* blocked: state decomp in `quicksandlurker`| `balloonlurker`

* decomp: finish `assistant-village2`

* scripts: script to help updating goal_src

* starting to update goal_src

* tests: update ref tests

* src: more src updating

* src: waiting on `process-taskable` and `muse`

* blocked: `citb-plat` state decomp

* decomp: finish `square-platform`

* blocked: `orbit-plat` due to overlays + static data

* decomp: finish `qbert-plat`

* blocked: almost finish `misty-conveyor`, sparticle-callback

* blocked: jungle-mirrors

* blocked: state decomp in `swamp-blimp`

* decomp: finish `swamp-bat`

* decomp: finish `swamp-rat`

* decomp: finish `swamp-rat-nest`

* blocked: state decomp `kermit`

* decomp: finish `cavecrystal-light`

* decomp: finish `spiderwebs`

* blocked: state decomp `dark-crystal`

* decomp: finish `baby-spider`

* decomp: finish `mother-spider-h`

* decomp: finish `mother-spider-proj`

* blocked: state decomp in `gnawer`

* blocked: state decomp in `driller-lurker`

* blocked: `sun-exit-chamber` breaks when adding handle cast

* decomp: finish `sunken-water`

* blocked: `target-tube` ShortCircuitElement::push_to_stack

* decomp: finish `sunken-fish`

* blocked: `minecart` decomp crash when adding stack cast

* decomp: finish `assistant-village3`

* decomp: finish `sage-village3`

* blocked: `cave-trap` done but ran into `go` issue

* blocked: `spider-egg` state decomp

* decomp: finish `target-snowball`

* blocked/stuck: `target-ice` decomp issue around cpad

* pausing: ice-cube has some weird collide-shape-prim handling

* blocked: `snow-ball` state decomp

* blocked: `snow-bumper` state decomp

* decomp: finish `snow-ram-h`

* decomp: finish `yeti`

* decomp: finish `assistant-lavatube`

* re-enable the float cast log

* decomp: updating to new sparticle definitions

* decomp: address feedback up to `swamp-rat-nest`

* address remaining feedback

* all-types: move the `pointer` def

* add back temporary `hud-hidden?`
2021-09-28 20:42:00 -04:00
water111 188373a3f6
decompile some drawable stuff and fix a few small bugs (#859) 2021-09-28 19:24:09 -04:00
water111 f0ceea8b2e
[sparticle] 2d hud particles (#849)
* 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
2021-09-26 11:41:58 -04:00
ManDude d8e659df66
[decomp] flying-lurker (#846)
* `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`
2021-09-21 18:40:38 -04:00
water111 5683f04046
[decomp] handle handle->process inside an and (#851)
* fix the loader example

* improve compiler error message

* fix missing cast issue
2021-09-21 00:12:37 -04:00
Tyler Wilding df92a55749
tooling: breaking off my tooling changes in the big batch PR so they can be used (#850) 2021-09-19 21:45:14 -04:00
water111 f9d8fcd6e4
[decomp] add mips2c converter (#842)
* 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
2021-09-11 20:52:35 -04:00
water111 9fdbc2d974
[goalc] fix static array length (#836)
* fix static array length

* add some more small fixes
2021-09-08 18:49:49 -04:00
Tyler Wilding 4ff2130d55
decomp: decompile almost all the platform related files (#812)
* deocmp: `plat` finished, `baseplat` started

* decomp: finish `baseplat`

* decomp: finish `plat-button`

* decomp: finish `plat-eco`

* decomp: finish `citb-drop-plat-CIT`

* decomp: finish `cit-drop-plat-L1`

* decomp: finish `plat-flip`

* decomp: added a bunch of label defs

* decomp: `plat-button` ref test added

* stash

* decomp: finish `baseplat`

* decomp: finish `plat`

* decomp: finish `plat-button`

* tests: fix offline-test to handle multi-DGO files better

* decomp: finish `citb-drop-plat-CIT`

* decomp: finish `plat-flip`

* decomp: finish `wedge-plats`

* tools: fix memory analyzer, skip invalid type

* decomp: finish `wall-plat`

* fix ordering

* fix some casting issues

* cleanup after conflict resolution

* address reviews
2021-09-06 21:10:19 -04:00
ManDude 89ccb8cbc7
[decomp] progress (#780)
* 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>
2021-09-06 20:35:03 -04:00
Tyler Wilding d1f16b34ff
decomp: another batch of easy files (#823)
* decomp: finish `sharkey`

* decomp: finish `lurkercrab`

* decomp: finish `lurkerpuppy`

* decomp: finish `assistant-citadel`

* decomp: finish `static-screen`

* decomp: finish `robotboss-h`

* decomp: finish `final-door`

* decomp: finish `aphid`

* addressed review
2021-09-06 15:34:31 -04:00
Tyler Wilding 7c25b721f1
decomp: easy batch number 2 (#824)
* decomp: finish `jungle-elevator`

* decomp: finish `bouncer`

* decomp: finish `hopper`

* decomp: finish `junglefish`

* decomp: finish `blocking-plane`

* decomp: finish `sidekick-human`

* decomp: finish `assistant-firecanyon`

* decomp: finish `sage-bluehut`

* decomp: finish `flutflut-bluehut`

* fix arg type
2021-09-06 14:29:06 -04:00
water111 a96eb800c4
update readme and fix unused function issue (#821) 2021-09-03 19:19:51 -04:00
Tyler Wilding 442d5ed570
decomp: projectiles (#777)
* 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`
2021-09-02 20:00:29 -04:00
Tyler Wilding 4943c125ad
decomp: target-part (#688)
* decomp: finish decompiling `target-part` waiting on label issue

Hitting exception at data_decompile.cppL182

* fixed pointer labels, but blocked by :inline fields from static data

* decomp: finish `target-part`

* address feedback
2021-09-02 19:19:54 -04:00
water111 31d98cf0d0
update gtest, fix some small bugs (#818) 2021-09-02 18:32:22 -04:00
water111 4616f436f1
fix missing bitfield (#811) 2021-09-01 21:02:16 -04:00
water111 9b0480c50d
[decompiler] process initialization macros (#807)
* implementation and a few working cases

* fix self issue

* fix run-function-in-process

* fix up set-to-run
2021-09-01 16:59:26 -04:00
water111 6d120c1ac8
fix self issue (#808) 2021-09-01 16:42:24 -04:00
Tyler Wilding 42f7a675b2
decomp: a few files that were done except for sp-launch-group (#802)
* decomp: dark-eco-pool blocked by sparticle-launch-group label

* decomp: finalize `dark-eco-pool`

* decomp: mostly finish `beach-rocks` waiting for sparticle label supp

* decomp: almost done `beach-rocks` but potential new handle case

* decomp: finish `beach-rocks`

* decomp: finish `assistant`

* decomp: finish `miners`
2021-09-01 11:20:05 -04:00
water111 b58d9ec65d
support vector 4 (#803) 2021-09-01 10:02:20 -04:00
Tyler Wilding 1c7c2132eb
decomp: weather-part (#798)
* 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`
2021-08-31 21:36:19 -04:00
water111 c2c6d3ba46
[decompiler] detect res-lump macros (#796)
* support res lump float

* handle data macro

* rest of res macros

* add vi3 to the build system

* missing close paren
2021-08-31 15:01:54 -04:00
water111 41507f1aee
nest floating point addition and multiply operations (#794)
* nest floating point addition and multiply operations

* fix mood
2021-08-31 12:04:46 -04:00
water111 34e8afa0ee
get started on entity (#793) 2021-08-31 11:05:03 -04:00
water111 d9f9e076af
[decompiler] automatically label things when possible (#784)
* improve label system

* clean up menu

* debug menu working, still need to fix tests

* fix tests and clean up
2021-08-29 11:13:06 -04:00
Tyler Wilding 05648e0a96
decomp: finish basebutton (#762)
* decomp: finish `basebutton`

* decomp: finalize `basebutton` and fix `evilbro`

* fix some methods / args
2021-08-22 23:16:55 -04:00
Tyler Wilding 4c61343cb7
decomp: evilbro (#774)
* 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`
2021-08-22 21:03:47 -04:00
Tyler Wilding 991a438927
decomp: decompile target-util | logic-target (#662)
* 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
2021-08-22 20:46:37 -04:00
water111 403bb5f4de
[decomp] game-info (#779)
* support more process stuff

* more of game info

* add ref file

* progress on save
2021-08-22 20:12:47 -04:00
water111 30d1e1d6c9
[decompiler] maybe fix symbol decompile issue (#776)
* maybe fix symbol decompile issue

* try again on a label

* allow int to float on seconds
2021-08-21 10:20:55 -04:00
water111 11e11d2c04
[decompiler] Several small fixes (#775)
* fix assorted bugs

* stricter return types

* only look for functions in code files
2021-08-19 20:35:12 -04:00
Tyler Wilding 253d7996e8
decomp: almost all of the NPCs! (#748)
* all-types: add all missing `:heap-base`s

* decomp: error encountered when compiling `mayor`

`IR_StoreConstOffset::do_codegen can't handle this` for method `play-anim!`

* decomp: finalize `mayor`

* decomp: finish `bird-lady`

* decomp: finish `bird-lady-beach`

* decomp: finish `sculptor`

* decomp: finish `geologist`

* decomp: finish `oracle`

* decomp: finish `farmer` | `explorer` | almost `assistant`

blocked on sparticle-launch-group

* decomp: finish `sage`

* decomp: finish `gambler`

* decomp: finish `warrior`

* decomp: mostly finish `miners`, blocked by sp-launch-group

* fix issue in `sage`

* fix all the reference tests to use the new state stuff

* fix all of goal_src

* address feedback

* re-gen with `until` fixes
2021-08-18 21:33:31 -04:00
water111 e4f5e8eebd
improve warnings (#770) 2021-08-18 20:19:01 -04:00
water111 1f0c2e0e71
[decomp] Split condition and body of until after building expressions (#768)
* improve until decomp

* fix tests
2021-08-18 19:36:52 -04:00
water111 4a896aaa71
fix bug (#765) 2021-08-17 21:19:52 -04:00
water111 97ab6a4e12
add support for non virtual states (#764)
* 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
2021-08-17 20:54:03 -04:00
ManDude ebe24a9b79 fix test 2021-08-16 16:13:10 +01:00
ManDude a83bae17a5 Merge branch 'master' into d/cpad-test 2021-08-16 15:46:06 +01:00
ManDude ff3174f292 more cpad stuff + make font-flags 2021-08-16 03:50:36 +01:00
water ee81b709a4 add merc 2021-08-14 23:31:17 -04:00
water 78928e4c04 temp 2021-08-14 23:15:10 -04:00
water 72340811e5 decomp decomp 2021-08-14 16:49:45 -04:00
water e473ede677 sort enum bit fields 2021-08-14 13:17:24 -04:00
water 51dd1bdae8 Merge branch 'master' of github.com:water111/jak-project into w/sprite-distort-stub 2021-08-14 13:07:17 -04:00
water 097ae07bb8 clean up font color 2021-08-14 13:06:43 -04:00
Tyler Wilding b3dc755f06
address _almost_ all feedback 2021-08-14 12:45:25 -04:00
Tyler Wilding 9f36419e37
fix goal_src 2021-08-13 22:16:33 -04:00
Tyler Wilding dda8756a35
Merge remote-tracking branch 'water111/master' into decomp/nav-enemy 2021-08-13 22:00:18 -04:00
Tyler Wilding 05f25e60f8
decomp: finalize nav-enemy 2021-08-13 21:57:58 -04:00
water 23748dfeef start on debug graphics 2021-08-13 21:48:56 -04:00
Tyler Wilding eaee7e1451
finalizing 2021-08-13 21:14:05 -04:00
water 5aa15afe29 decompile sprite-distort without vu1 stuff 2021-08-13 18:50:29 -04:00
water d5f05f723e Merge branch 'master' of https://github.com/water111/jak-project into w/dma-for-font 2021-08-12 20:31:51 -04:00
water 43a39b197e fix merge 2021-08-12 19:33:47 -04:00
Tyler Wilding 0dbaba6470
Merge remote-tracking branch 'water111/master' into decomp/sunken-elevator 2021-08-12 19:30:01 -04:00
water ee71b52b27 Merge branch 'master' of https://github.com/water111/jak-project into w/dma-for-font 2021-08-12 19:27:51 -04:00
Tyler Wilding 266ce07fd4
Merge remote-tracking branch 'water111/master' into decomp/sunken-elevator 2021-08-12 19:23:19 -04:00
Tyler Wilding 47391e7a7d
Merge remote-tracking branch 'water111/master' into all-types/heap-base 2021-08-12 19:21:06 -04:00
water ebc580822e clean up 2021-08-12 19:03:33 -04:00
water111 a0f9817acf
Merge pull request #682 from xTVaser/decomp/wateranim-rigid-body
decomp: `water-anim` | `rigid-body` | `mud`
2021-08-12 19:02:22 -04:00
water111 e743fe8f71
Merge pull request #751 from ManDude/d/new-new-vag-tool
[vag tool] split language outputs by folder
2021-08-11 22:59:17 -04:00
Tyler Wilding f2e072cff0
fix method name 2021-08-11 22:33:31 -04:00
Tyler Wilding ca1d540849
Merge remote-tracking branch 'water111/master' into decomp/wateranim-rigid-body 2021-08-11 20:57:05 -04:00
Tyler Wilding 409721018b
Merge remote-tracking branch 'water111/master' into decomp/misty-teetertotter 2021-08-11 20:24:55 -04:00
water 71f0a71c4c Merge branch 'master' of https://github.com/water111/jak-project into w/dma-for-font 2021-08-11 20:24:50 -04:00
water a65357642d fix debugger 2021-08-11 20:21:58 -04:00
Tyler Wilding 2f2ad69a0c
remove unneeded casts, switch to :allow-misaligned 2021-08-11 19:54:03 -04:00
Tyler Wilding 11efc31e5c
Merge remote-tracking branch 'water111/master' into decomp/twister 2021-08-10 20:44:22 -04:00
Tyler Wilding 38d2b2d02e
fix dynamic element 2021-08-10 20:43:25 -04:00
water 843c3a899c Merge branch 'master' of https://github.com/water111/jak-project into w/dma-for-font 2021-08-09 22:08:48 -04:00
Tyler Wilding bcae0d0b5f
decomp: finish wobbler (#745)
Co-authored-by: water <awaterford111445@gmail.com>
2021-08-09 22:07:39 -04:00
Tyler Wilding 3cfd50b618
decomp: finish ticky (#744)
Co-authored-by: water <awaterford111445@gmail.com>
2021-08-09 21:55:05 -04:00
water 9495e91259 online tests pass 2021-08-09 21:54:40 -04:00
water 40ecd92272 Merge branch 'master' of https://github.com/water111/jak-project into w/dma-for-font 2021-08-09 21:41:25 -04:00
Tyler Wilding 42e73f64d9
decomp: finish tippy (#742)
Co-authored-by: water <awaterford111445@gmail.com>
2021-08-09 21:09:59 -04:00
ManDude 946284c05d
add goal enum utils to standard libs (#740)
* add goal enum utils to standard libs

* Update .gitattributes
2021-08-09 19:18:53 -04:00
Tyler Wilding 2495066453
Merge remote-tracking branch 'water111/master' into decomp/wateranim-rigid-body 2021-08-09 19:11:46 -04:00
Tyler Wilding f438ba4e84
decomp: shadow (#681)
* 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
2021-08-09 19:07:11 -04:00
Tyler Wilding 7878167cd9
decomp: 1 function left - new decomp issue now
ConditionalMoveFalseElement::push_to_stack
2021-08-09 00:26:38 -04:00
Tyler Wilding b325a285dd
Merge branch 'master' into decomp/nav-enemy 2021-08-09 00:11:48 -04:00
ManDude df05e8519b [vag tool] split language outputs by folder 2021-08-09 02:06:34 +01:00
Tyler Wilding 72194ef243
decomp: finish misty-warehouse 2021-08-08 20:15:12 -04:00
Tyler Wilding 8ed6650ec6
decomp: finish sunken-elevator 2021-08-08 19:32:54 -04:00
Tyler Wilding e7c100e060
decomp: mostly finish misty-warehouse blocked by sllv from PP 2021-08-08 18:50:35 -04:00
Tyler Wilding a9816f9d28
decomp: finish misty-teetertotter 2021-08-08 17:00:51 -04:00
Tyler Wilding f29e9cb8ce
decomp: finish mud 2021-08-08 16:07:21 -04:00
Tyler Wilding 887152a5cd
all-types: add all missing :heap-bases 2021-08-08 15:15:51 -04:00
Tyler Wilding 0d0442eeb4
decomp: finish twister 2021-08-08 13:28:47 -04:00
water f25b0f0de2 some clean up 2021-08-08 13:20:54 -04:00
water 66f95d3c8a text working with no textures 2021-08-07 21:16:44 -04:00
Tyler Wilding 4f331b5f79
decomp: finalize rigid-body 2021-08-07 18:29:44 -04:00
Tyler Wilding ef81529855
decomp: almost finish rigid-body stuck on symbol param from an event! 2021-08-07 17:31:29 -04:00
Tyler Wilding 20196852f5
decomp: finallize water-anim 2021-08-07 16:15:41 -04:00
Tyler Wilding c9708901a6
Merge branch 'master' into decomp/wateranim-rigid-body 2021-08-07 15:37:12 -04:00
water 21684bd104 misc bug fixes, now draw string generates dma data 2021-08-05 20:29:36 -04:00
water 821c2ab42a display loop runs 2021-08-04 21:30:08 -04:00
water 0c7f9e1850 work on getting font stuff working 2021-08-03 22:40:07 -04:00
water111 5293f583a8
[decomp] clean up sync info (#735)
* clean up sync info

* clean up trajectory
2021-08-02 21:49:05 -04:00
water111 12446037bd
[decompiler] Make addition nicer (#733)
* temp

* update refs

* update reference

* fix tests
2021-08-01 18:24:58 -04:00
Tyler Wilding 75f7609baa
decomp: ocean-transition (#616)
* 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`
2021-08-01 17:42:40 -04:00
ManDude 26c3fb65e9
make some macros for DMA stuff (#725)
* [compiler] allow infinite args for `logior`

* make some dma macros and use them on `display`

* [goos] add `string->symbol`

* make a sketchy macro

* fix tests

* `with-dma-bucket` and `dma-buffer-add-vector4w-2`

* cleanup `debug`

* cleanup `menu`

* go thru `texture` pt 1

* finish `texture`

* `sprite` pt 1

* `sprite` pt 2

* `generic`

* `gs` and `main`
2021-08-01 17:11:32 -04:00
Tyler Wilding d400ec3b2d
decomp: mood (#672)
* decomp: Almost finished `mood`, but confused over the `mood-context` type!

* only function that remains involves vftoi / ppach instructions

* stash

* decomp: fix inline array access issue

* decomp: finalize `mood`

* linting
2021-08-01 16:11:22 -04:00
water111 9c9579aef3
add try catch around static refs (#732) 2021-07-30 22:51:55 -04:00
Tyler Wilding d37e6c548e
decomp: camera | cam-combiner | cam-start | cam-update (#621)
* 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
2021-07-30 22:18:35 -04:00
Tyler Wilding d317497c64
decomp: main-collide and support a bunch of new inline-asm operations (#673)
* decomp/goal-lib: Implement all fixed point macros

* decompiler/goalc: Support half-word and byte parallel extend ops

* decompiler/goalc: Support all parallel compare instructions

* decompiler/goalc: Wire up PPACH and parallel bitwise operations

* goalc: Add emitter tests

* decomp: finalize `main-collide`

* codacy lint
2021-07-27 19:57:14 -04:00
water111 eee8390ec0
support inline arrays on stack (#726) 2021-07-26 21:39:05 -04:00
water111 bd9f550d82
add ref test for sprite and support nested bitfields in static data (#723) 2021-07-26 20:02:16 -04:00
water111 92a5d84a5b
fix sc when the block after the delay slot is optimized out (#721) 2021-07-25 16:42:37 -04:00
ManDude af52341050
[decomp] make anim-tester decompilable (#719)
* make `anim-tester` decompile

* add the anon behaviors

* fix tests
2021-07-25 16:28:57 -04:00
water111 2b6684aa5c
[decompiler] Working toward bsp (#717)
* 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
2021-07-25 15:30:37 -04:00
ManDude 8ef73ee457
give defstate a parent type and allow anonymous behaviors inside (#715)
* give `defstate` a parent type and allow anonymous behaviors inside

* add defstate type stack leak detection+correction, remove debug print
2021-07-25 00:23:30 -04:00
water111 95366d21df
Get started on collide-func and clean up log forms in decompiler (#713)
* wip

* temp

* temp2

* first part of log macros

* more log macros

* logtest

* clean up

* dont initialize game info because we are missing stuff
2021-07-23 20:51:26 -04:00
ManDude 03ffb97176
define every skeleton-group, name every inherited virtual state (#712)
* define every skeleton-group, name every inherited virtual state

* typo!
2021-07-23 20:38:05 -04:00
ManDude 1e11a588f5
[decomp] loader prelim work + some cleanup (#697)
* [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
2021-07-23 18:30:49 -04:00
water111 c76b51d805
clean up to gsound! (#709) 2021-07-19 20:49:33 -04:00
water111 9ed1170046
add some really old vag file unpacking stuff (#708) 2021-07-18 19:28:56 -04:00
water111 b70fcb2f7a
support non-virtual gos in decompiler (#707) 2021-07-17 18:07:21 -04:00
water111 4989470828
recognize +! and set-vector (#706)
"
2021-07-17 15:00:10 -04:00
water111 2754a8f2c4
get res decompiling (#705) 2021-07-17 13:41:05 -04:00
water111 ef011f4fe8
[goalc] add a build system (#704)
* add first attempt at build system

* fix stupid bug

* try again
2021-07-15 21:37:15 -04:00
Tyler Wilding fe618235d1
most of nav-enemy completed 2021-07-13 22:45:58 -04:00
Tyler Wilding 48ec6f8ffb
decomp: vast majority of nav-enemy done 2021-07-13 00:20:57 -04:00
water111 f6d5952498
[decompiler] handle nested conditionals and gotos better (#693)
* diff check

* try that again

* more small fixes
2021-07-11 21:59:27 -04:00
water111 0a9cc68a27
[decompiler] Use meters, degrees, and seconds (#689)
* use meters degrees and seconds

* update changelog
2021-07-11 18:19:41 -04:00
water111 656489e942
[decomp] Clean up - part 2 (#687)
* temp

* temp2

* basic case support

* working for or without else

* support more cases

* clean up to drawable headers

* ocean

* format json
2021-07-11 16:35:25 -04:00
Tyler Wilding 1b5c5239b1
decomp: mostly finish aligner (#686)
* decomp: mostly finish `aligner`

Issues in aligner/aligner-h that require hand-editing after decompilation

* linting
2021-07-11 16:19:03 -04:00
Tyler Wilding f0d8943bd7
stash 2021-07-10 21:16:26 -04:00
Tyler Wilding adce4fd821
stash 2021-07-10 16:00:05 -04:00
Tyler Wilding 0e4a9d2679
decomp: finish path (#685)
* decomp: finish `path`

* address feedback
2021-07-10 10:18:48 -04:00
water111 1898c7c52a
[decomp] texture (#684)
* temp

* more cleanup

* fix merge issue

* handle no texture correctly
2021-07-09 22:20:37 -04:00
Tyler Wilding 3219180e60
decomp: finish air (#683) 2021-07-09 21:44:48 -04:00
Tyler Wilding a55f3b52f4
decomp: Very close to finishing water-anim and rigid-body 2021-07-07 23:33:02 -04:00
water111 551a9c4955
[decompiler] ASM Branching Support (#677)
* basic example working in geometry

* before updating offline'

* clean up

* temp

* progress
2021-07-05 16:07:07 -04:00
Tyler Wilding 17aedd894d
decomp: hint-control | menu | default-menu (as much as possible) (#632)
* 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
2021-07-04 18:25:08 -04:00
water111 e251f8b2d9
Support Behaviors (#678)
* 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
2021-07-04 16:54:07 -04:00
Tyler Wilding 833ca06618
decomp: finish tfrag-work (#679) 2021-07-04 16:19:20 -04:00
water111 784cd5debb
[decomp] get started on game info (#674)
* temp

* menu text

* wip

* recognize handle to process

* more
2021-07-03 16:18:41 -04:00
Tyler Wilding bc41241234
decomp: task-control (#654)
* 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
2021-07-02 15:11:28 -04:00
water111 6366068bc0
Support dir tpages (#671)
* support dir tpages

* fix warnings and bad return

* one more try

* revive the offline test script

* fix this null bug
2021-07-02 14:50:58 -04:00
water111 b96d865e2b
fix labmda defs (#670) 2021-07-02 12:27:46 -04:00
water111 4bea175140
[decompiler/compiler] Fixes for task-control (#668)
* fix decompiler for task control

* support in compiler

* changelog

* typo
2021-07-01 21:38:19 -04:00
Tyler Wilding 2556284293
decomp: decompile shrub-work | tie-work (#657)
* decomp: finish `shrub-work`

* decomp: update reference tests

* decomp: update `goal_src` entries

* decomp: finish `tie-work`

* decomp: add to `goal_src`
2021-06-30 21:57:13 -04:00
water111 a81aef889a
Level load test (#656)
* tweaks for loading VI1

* temp

* clean up
2021-06-30 19:20:31 -04:00
water111 322a4ed9b2
Fix compiler crashes and improve return statements. (#652)
* fix a few small bugs

* fi

* fix merge conflict
2021-06-30 00:11:46 -04:00
ManDude 1af0f4a1a7
[decomp] most of level and some game loop functions + couple decomp… (#651)
* [decomp] most of `level` and some game loop functions + couple decompiler fixes

* add ART.CGO to fake-iso
2021-06-29 20:30:52 -04:00
Tyler Wilding 385b8b5785
decomp: settings (#641)
* decomp: finalize `settings`

* decomp: cleanup
2021-06-28 00:32:29 -04:00
water111 2506325f30
fix cast bug (#640) 2021-06-27 22:23:27 -04:00
water111 a6d5c4eda3
[decompiler] clean up vector detection and add vector float product detection (#638)
* change

* recognize vector float product and update tests
2021-06-27 17:24:35 -04:00
water111 bfb1fbe1fc
[decompiler] recognize more inlined vector functions (#637)
* detect vector+

* recognize reset
2021-06-27 12:11:30 -04:00
water111 b19a2c82f0
[decomp] detect vector-! inlined. (#633)
* fix flipped order

* format

* parser hack

* actually flip

* detect
2021-06-26 22:52:52 -04:00
water111 10b00e57ae
[decomp] Fix flipped byte addressing add and support some VU ops in the parser (#631)
* fix flipped order

* format

* parser hack

* actually flip
2021-06-26 20:02:21 -04:00
water111 69e24ae577
recognize vector, matrix, quaternion constructors in a better way (#630)
* recognize vector, matrix, quaternion constructors in a better way

* fix bad bug
2021-06-26 18:30:35 -04:00
water111 ae2666a7c5
fix use def issues (#629) 2021-06-26 16:31:38 -04:00
water111 1ffd42e090
[decomp] clean up and make level-update-after-load work (#628)
* temp

* make level-update-after-load work

* add missing const
2021-06-26 13:03:31 -04:00
water111 490633d434
add countdown (#627) 2021-06-25 20:51:25 -04:00
water111 409be41596
[decompiler] fix bad cast and crash on bad and/or recognition (#626)
* fix small bugs

* fix missing inlining of derefs
2021-06-25 20:13:22 -04:00
water111 9e6dec9829
[decomp] make bg decompile (#624)
* make bg decopmile

* fix parent method call
2021-06-24 20:06:12 -04:00
Tyler Wilding d54eb0b98d
decomp: entity-table (#614)
* decomp: `entity-table` done but problem with the label cast

* decomp: `entity-table`

* decomp: finalize `entity-table`
2021-06-23 23:29:24 -04:00
water111 83c5852465
allow terrible method hack to decompiler (#623) 2021-06-23 22:42:02 -04:00
water111 44f8ff6d25
[decompiler] bug fixes related to infinite loop CFGs, argument registers (#622)
* temp

* clean up

* more clean
2021-06-23 22:09:02 -04:00
ManDude 997d5b57db
[memdump] Make it work on fields of type (array basic) (#620)
* 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.
2021-06-23 22:07:17 -04:00
Tyler Wilding fc105e1f55
decomp: collide-frag (#618)
* decomp: Good portion of `collide-frag`

* decomp: Remove redundant method declarations for drawable types

* decomp: Finish `collide-frag`

Co-authored-by: water111 <48171810+water111@users.noreply.github.com>
2021-06-21 20:18:27 -04:00
ManDude a123f02c32
[decomp] prepare for some files, fill in some types (#617)
* [mips disasm] don't multiply `vcallms` parameter by 8

* [decomp] prep some game loop files
2021-06-21 19:47:39 -04:00
Tyler Wilding 87961bdb3b
decomp: generic (#611)
* decomp: Fix casting issue with uint64's from static data

* decomp: `generic`

* add forward declaration

Co-authored-by: water111 <48171810+water111@users.noreply.github.com>
2021-06-20 16:02:15 -04:00
water111 4f8403d8e6
support type-ref (#613) 2021-06-20 12:59:39 -04:00
ManDude adcb9fad55
Fix console scrolling issues on windows (#609)
* Fix console scrolling issues on windows

* Add super extremely important spaces
2021-06-19 22:46:36 -04:00
water111 06ae38d464
[decomp] clean up type def formatting and remove all-forward-definitions.gc (#608)
* clean up

* fix test
2021-06-19 15:50:52 -04:00
ManDude 46b83bda2a
[decomp] debug (#607)
* [decomp] `debug`

* shut up
2021-06-19 14:24:55 -04:00
water111 bc87c4426f
[decompiler] Fix deref bug and add some more new type pass stuff (#606)
* add copy on write and clean up some register stuff

* fix bug in multiple field lookup

* format
2021-06-18 21:10:00 -04:00
water111 409c1f5a7d
[Decompiler] WIP new type analysis tools (#601)
* add multi-lookup

* use multi-lookup
2021-06-17 21:50:36 -04:00
water111 af49ac60cd
fix shl by 16 constant being mistaken for a dynamic bitfield construction (#600) 2021-06-16 22:15:22 -04:00
water111 d26de26d21
[decompiler] Small bitfield fixes (#599)
* fix a bunch of small bitfield related things

* fix up test

* format
2021-06-16 21:11:21 -04:00
Tyler Wilding b209c9e1ba
Fixing organization error in all-types (#553)
* 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
2021-06-16 20:29:15 -04:00
water111 d79937fb62
Improve forward declaring types (#596)
* improve forward declare type

* display type differences

* make codacy happy
2021-06-15 21:03:55 -04:00
ManDude 928673cd13
[decomp] prepare joint stuff (#594)
* [decomp] prepare `joint` stuff

* fix types

* fix a missing declaration

* update references
2021-06-14 23:45:21 -04:00
water111 0aa474f12b
[decomp] finish actor-link-h and a few more (#592)
* finish actor-link-h

* decompile files

* fix pp issue
2021-06-14 20:46:54 -04:00
water111 13b5695b63
[decompiler] Workaround for GOAL fpr -> gpr spill bug and fix >16-bit signed FP loads (#587)
* fix up broken stuff for collectables

* exception for stack spill float in gpr bug
2021-06-13 13:55:55 -04:00
Tyler Wilding 506b5d8ceb
Decompile: prototype | video | vol-h | air-h | nav-enemy-h | rigid-body-h (#575)
* decomp: `prototype` done

* tests/ref: Update all reference tests

* decomp: `video` done

* decomp: Add `video` to src

* decomp: `vol-h` done

* tests/ref: Update reference tests again

* decomp: Add `vol-h` to ref tests, leave `entity` in process as a `basic` for now!

* decomp: `air-h` done, compiler issue though

* decomp: `nav-enemy-h` done, compiler issue though

* decomp: `rigid-body-h` done, compiler issue though

* Address feedback and fix the failing to compile files

* linting

* finish `video` off
2021-06-12 21:52:55 -04:00
water111 8faded6400
[decompiler] bitfield support for sound-name (#582)
* fix 64-bit fields in 128-bit bitfields

* support sound-name

* fix merge

* support some more sound stuff in overlord
2021-06-12 12:55:38 -04:00
ManDude 877e3d161c
[decomp] gsound (#583) 2021-06-12 10:48:38 -04:00
water111 50fbbc45aa
[decomp] start on actor-link-h (#579)
* wip

* fix tests
2021-06-11 19:04:47 -04:00
water111 92afd62e2c
[decompiler] fix missing casts issue (#573)
* fix casts issue

* fix bug

* one last small fix
2021-06-09 21:35:13 -04:00
water111 12d72c7897
detect small integer not equal (#572) 2021-06-08 23:39:01 -04:00
water111 5b24e43143
Change syntax for boxed array to support different length and allocated-length (#568)
* change syntax for boxed array

* fix test and make the flava thing kind of work
2021-06-07 20:22:06 -04:00
water111 f516737cf7
[decompile] bsp-h (#562)
* decompile bsp-h

* a few more

* some more

* fix merge conflicts
2021-06-07 18:30:16 -04:00
ManDude e0a15d5990
[decomp] yet even more res (#565) 2021-06-07 16:26:21 -04:00
Tyler Wilding 698d96cc4e
Decompilation: Next batch of files (#539)
* decomp: `collide-frag-h`

* decomp: `effect-control-h`

* decomp: `cam-update-h`

* decomp: `collide-func`

variable pass failed on ray-plane-intersect: invalid unordered_map<K, T> key

* decomp: `cylinder` with vector dot product issue

* decomp: `debug-sphere`

* decomp: `generic`

* decomp: fix `effect-control-h`

* scripts: improve decomp-next script

* decomp: Fix `debug-sphere` issues via type casting

* decomp: Add `collide-frag-h` to reference tests

* scripts: Add script to add a new reference test

* decomp: Add `cam-update-h` to reference tests

* goalc: Fix empty let removal issue

* decomp: Not adding cylinder to goal_src yet either

* decomp: Add `debug-sphere` to reference tests

* decomp: Attempt to finish `generic` but blocked by decomp issue

https://github.com/water111/jak-project/issues/563

* linting

* decomp: Resolve failing tests

* decomp: Address feedback
2021-06-06 23:01:30 -04:00
Tyler Wilding c19bcd37aa
decomp: credits (#533)
* decomp: `credits` but there are still issues

* issues over creating a `new` `font-context`

* decomp: finalized `credits`
2021-06-06 19:57:40 -04:00
water111 fef7fad65a
[decompiler] process-drawable-h (#561)
* decomile process-drawable-h

* one more
2021-06-05 23:55:36 -04:00
water111 54f72e9b10
[decomp] joint-mod-h (#560)
* decompile joint-mod-h

* format'

* missing include

* fix test
2021-06-05 20:22:03 -04:00
water111 a572587a0e
add types (#559) 2021-06-05 16:58:32 -04:00
water111 2851cae13b
[decompile] fact-h (#556)
* decompile fact-h

* fix unused var

* codacy again
2021-06-05 11:15:34 -04:00
water111 542edfb164
[compiler/decompiler] Take the address of a variable (#554)
* support taking the address of variables

* partially working stack variables

* implement type cast stuff

* remove final
2021-06-04 13:43:19 -04:00
ManDude 9b905f903c
random clean-up (#551)
* 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
2021-06-04 13:22:50 -04:00
Tyler Wilding 2bfe13d0be
decomp: entity-h, camera-h, cam-update-h and cam-interface[-h] (#501)
* 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
2021-06-02 20:09:04 -04:00
Tyler Wilding 2b3c4d957a
Organize all types (#523)
* 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
2021-06-01 22:41:37 -04:00
ManDude 784119188c
[decomp] even more res (#529)
* [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
2021-06-01 16:07:45 -04:00
water111 3d8013633a
[decompiler] Fix rlet in top level and detect matrix and stack inline construction (#547)
* top level in rlet

* detect matrix and vector inline 0

* pretty print the symbol map
2021-05-31 18:14:18 -04:00
water111 84c0522102
[decompiler] Add pass to generate a symbol definition map file (#546)
* add symbol order file

* class to struct fix for windows
2021-05-31 10:43:25 -04:00
water111 c4f44e265f
[decompiler] Better support for non-virtual methods (#543)
* fix up nonvirtual method calls and stack new method calls

* look at final in compiler too
2021-05-30 22:52:40 -04:00
water111 b1a76b2291
[decomp] Small fixes (#541)
* fix a few bugs

* fix local vars missing in top level

* more small fixes

* support missing inline array access case

* one more fix
2021-05-30 19:57:11 -04:00
Tyler Wilding c910a22c1b
decomp: a bunch of files (#532)
* decomp: `eye-h`

* decomp: `projectile-h`

* decomp: `sky-utils`

* decomp: decompile `water-h` and add `smush-control-h` to ref tests

* decomp: `task-control-h`
2021-05-28 20:11:06 -04:00
Tyler Wilding fb939726e8
decomp: Decompile ripple (#512)
* decomp: Decompile `ripple`

* decomp: Finish decompiling `ripple`

* update necessary src files
2021-05-26 19:40:12 -04:00
ManDude ec45182b42
[decomp] more of res + change a few macros (#527)
* 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
2021-05-25 16:36:36 -04:00
water111 0f0902eabf
add config option for changing cond splitting behavior (#522) 2021-05-24 19:52:19 -04:00
water111 d719bf5677
[decompiler] support break (#516)
* support break

* finish implementation of break, decomp method 19 of res
2021-05-23 20:16:34 -04:00
water111 a96710f0c5
VU micro mode disassembler (#517)
* wip

* more

* the rest of the disassembler
2021-05-23 16:59:09 -04:00
water111 3fbdd662dc
[decompiler] Support accessing 128-bit bitfields (#514)
* support some 128-bit bitfield stuff

* fix bug

* support type stuff correctly
2021-05-21 20:36:04 -04:00
ManDude 6ac399ca33
decomp some of res to get started (#439)
* decomp some of `res` to get started

* update scripts
2021-05-21 10:41:50 -04:00
water111 46e5d1928b
support float stack spills (#513) 2021-05-21 10:29:05 -04:00
water111 663b5c7899
[OpenGOAL] Support for 128-bit arguments and return values (WIP) (#510)
* xmm call and return working, needs some careful double checking and tests

* clean up and test
2021-05-20 20:12:49 -04:00
Tyler Wilding 174a079dbd
decomp: Decompile stats-h (#504)
* decomp: Decompile `stats-h`

* linting
2021-05-20 13:53:19 -04:00
Tyler Wilding ce6ebc385c
decomp: decompile trajectory (#499)
* decomp: decompile `trajectory`

* address review feedback

* some more corrections
2021-05-18 21:50:08 -04:00
water111 ec412c7777
[decomp] ramdisk, load-dgo and rpc-h (#496)
* decompile ramdisk load-dgo and rpc-h

* add a bunch of offline tests

* clang-format
2021-05-16 21:07:22 -04:00
Tyler Wilding b75a64fc29
(init-vf0-vector) to make vector code a bit more readable (#494)
* decomp: Use a macro for loading VF0 (maybe should be in goal-lib.gc?)

* update references

* lint: format

* delete now unused file
2021-05-16 13:49:24 -04:00
Tyler Wilding bf6e9fc9e9
decomp: Decompile transformq (#492)
* decomp: type changes for `transformq`

* decomp: decompile `transformq`

* address feedback
2021-05-16 12:43:50 -04:00
water111 79d10979da
[decomp] math-camera (#491)
* decompile math camera

* missing line
2021-05-15 20:08:08 -04:00
Tyler Wilding af2836c452
decomp: Decompile aligner-h (#490)
* scripts: Automatically re-decompile if all-types is modified

* decomp: `aligner-h`

* remove inspect method
2021-05-15 19:42:23 -04:00
water111 d73501cf19
[decompiler] Get rid of FormStack peek and fix virtual method calls (#488)
* fix, but it was too easy

* try again
2021-05-15 13:11:20 -04:00
water111 613efbd768
[decomp] transformq-h, clean up trig, and offline test for trig (#485)
* clean up

* fix store vf fallback errors
2021-05-15 10:38:14 -04:00
water111 c95e501cec
handle zero case in enum comparison (#484) 2021-05-14 20:12:59 -04:00
water111 d9f9d36f37
[OpenGOAL] make multiplication/divsion like GOAL and support in decompiler (#483)
* support in compiler

* multiplication in the decompiler

* update divisions
2021-05-14 18:43:12 -04:00
water111 b3eb05e37f
[decompiler] fix (gpr->fpr when an integer arg is converted to float (#482)
* fix gpr fpr bug

* remove unused variable
2021-05-14 14:33:08 -04:00
Tyler Wilding 790e65a78c
decomp: Decompile wind (#480)
* decomp: Decompile `wind`

* include `<limits>`
2021-05-13 20:46:37 -04:00
water111 0ab916e122
fix quote issue and decompile level-info (#474) 2021-05-12 21:57:19 -04:00
ManDude 7d69311552
[decomp] some of fact-h (#473)
* update scripts

* decomp some of `fact-h`
2021-05-12 21:45:36 -04:00
water111 129ab54fd4
[decompiler] clean up if/when/cond and recognize define-perm (#472)
* clean up if and when and cond decisions

* recognize define perm
2021-05-12 19:46:17 -04:00
Tyler Wilding 3897258753
decomp: mood-tables (#460)
* decomp: Decompile `mood-tables`

* decomp: Cleanup `mood-tables` and add REF file

* all-types cleanup

* decomp: Add missing float types (that may be optional now)

* linting / formatting
2021-05-12 19:33:29 -04:00
water111 8d4b644a14
fix cond with else that is empty bug (#470) 2021-05-12 15:54:33 -04:00
water111 223adeeb0c
Automatically get float label type in most cases (#463)
* automatically get float type in most cases

* try harder to print json errors

* fix test
2021-05-11 21:57:05 -04:00
water111 0599d144f8
[decompiler] Clean up config more (#458)
* remove global config

* fix dir
2021-05-11 20:49:54 -04:00
water111 d7d563814f
clean up config (#456) 2021-05-11 19:19:23 -04:00
water111 433993074a
Clean up some errors/crashes in decompiler (#452)
* fix offline tests, clean up some warnings

* clean up warnings during decomp

* fix remaining crash issues
2021-05-11 16:43:13 -04:00
Tyler Wilding 4c788b7f50
Decompilation: shadow-h and target-h (#428)
* decomp: `target-h`

* decomp: `shadow-h`

* decomp: Add reference / source files

* Use `define-perm` in goal_src file
2021-05-11 00:01:37 -04:00
ManDude fef9b139d7
Force-enable assert on release mode Windows build (#440) 2021-05-10 23:03:56 -04:00
water c5922df12e Merge branch 'decomp/cleanup-alltypes' of https://github.com/xTVaser/jak-project into xTVaser-decomp/cleanup-alltypes2 2021-05-09 17:09:40 -04:00
Tyler Wilding 2a315419de
tests: Automate the offline reference tests better (#427)
* tests: Move all files to new directories

* scripts: Update decomp scripts

* tests: Remove hard-coded list for offline tests

* linting
2021-05-09 17:03:58 -04:00
Tyler Wilding 7cbf6e6174
decomp: Cleanup all unknown-types that we've actually defined 2021-05-08 22:19:36 -04:00
Tyler Wilding 971e0e3e24
decomp: pov-camera-h and hud-h (#425)
* decomp: `pov-camera-h`

* decomp: decompile `hud-h` and update offline tests

* linting
2021-05-07 22:56:37 -04:00
Tyler Wilding 73a4f2c83e
decomp: lights.gc (#420)
* scripts: Hack script to quickly identify the next goal_src file that hasn't been decomp'd yet

* config: Delete old type_hints file

* decomp: Decompile lights.gc

* decomp-tests: Add offline tests and temporary forward defs

* vs: Rename / add new offline test run config

* decomp: Add formatted lights.gc source

* decomp: Temporary define stub in geometry,gc

* decomp: Cleanup `lights-group` handling
2021-05-07 20:54:20 -04:00
ManDude cc3f8ffbf5
[decomp] headers for generic, mercneric, tieneric, merc, cpu shadow renderers, art, joint and bone (#424)
* decomp a bunch of renderer files

* fixes
2021-05-07 00:41:42 -04:00
ManDude 812efd92ca
[decomp] prototype-h, a few enums and other random things (#422)
* [decompiler] fix missing error in asm output

* decomp prototype-h, cleanup pat-h and res-h, prep for fact-h & res

* fix types

* Update all-types.gc

* fix a methos in `res-h`
2021-05-06 19:00:30 -04:00
Tyler Wilding 233d887790
decomp: Avoid ' in error output (#421) 2021-05-06 18:47:32 -04:00
water111 21fefa0aaa
[decompiler] small fixes for methods and more reference tests (#419)
* clean up method stuff, fix a few small bugs, and add references for easy -h files

* more small fixes and reference tests
2021-05-06 00:42:49 -04:00
water111 0a6602e320
[Decompile] connect, text-h, settings-h, capture, memory-usage-h (#410)
* decompile stuff

* temp

* temp2

* fix

* temp

* preparing for merge

* working

* fix stupid format

* fix codacy
2021-05-05 17:38:16 -04:00
ManDude 8d99bee88c
[decompile] decomp time-of-day-h, fix mood-h, update sky-h, make art-h almost work (#415)
* [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
2021-05-04 21:36:22 -04:00
ManDude 2beaa7a340
[decomp] cleanup drawable and ocean stuff (#414)
* 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`
2021-05-03 08:54:49 -04:00
ManDude 7cb04c6cd5
[decomp] font-h, fix a vector type, minor decompiler fixes (#411)
* 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
2021-05-01 21:09:48 -04:00
water111 7018827a50
decompile display (#408) 2021-05-01 15:51:53 -04:00
water111 56625bb0ee
Make buttons a bitfield and fix let bug (#399)
* make pad buttons bitfields

* fix stupid let bug

* update tests
2021-04-29 20:25:45 -04:00
water111 70d93354eb
[Decompile] file-io, loader-h, texture-h, level-h, math-camera-h (#397)
* file-io and loader-h

* add test for level-h

* math camera-h
2021-04-28 20:51:17 -04:00
water111 14028b90bc
[Decompile] vector.gc (finally) (#394)
* support psubw

* do half of vector

* rest of vector

* add test

* format
2021-04-28 17:14:54 -04:00
water111 53a70d8e43
clean up display-h (#392) 2021-04-27 19:40:14 -04:00
water111 3d2ca71fe3
[Decompile] pad and gs (#389)
* update stuff

* gs reference added

* update config
2021-04-26 21:40:08 -04:00
ManDude 8619e6df19
Fix gs-bgcolor and display-frame + decompiler types (#390) 2021-04-26 08:44:13 -04:00
water111 2002db359a
[Decompiler] WIP: Stack Spills (#382)
* 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
2021-04-25 14:48:54 -04:00
water111 fa122356ec
[Decompiler] Fixes for dma-disasm (#377)
* small tweaks

* fix up some more dma stuff
2021-04-23 20:29:15 -04:00
water111 060b125324
[Compiler/Decompiler] Better support for Bitfield and Enum types (#374)
* compiler fixes, a decent amount of decompiler stuff is working too

* more support in decompiler, fix some casts

* decompile static data too
2021-04-22 19:08:58 -04:00
ManDude 26accb8714
Fix +1 macros to 1+ and update some timer types (#375)
* Correct `+1` macros to `1+`

* update some `timer-h` types
2021-04-22 18:31:54 -04:00
ManDude 0560136f08
Allow enum names to serve as types (using the enum's type) (#372)
* 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
2021-04-19 20:29:38 -04:00
water111 c09e18f3a7
Fix stack new and add size-of to compiler (#370)
* make decompiler output stack-no-clear

* add size-of
2021-04-18 19:51:15 -04:00
water111 7737817ac7
[Decomp] Fix bitfields in dma-bucket (#367)
* fix bitfields in dma-bucket

* fix dma-bucket
2021-04-18 12:08:08 -04:00
water111 9867155e7c
[Decompiler] More support for bitfields (#363)
* temp

* initial support for dynamic bitfields

* some more progress on display

* dma-buffer good

* small fixes
2021-04-17 18:35:50 -04:00
ManDude 9fbbe1a79c
prepare for decompiling display (#359)
* 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)
2021-04-16 18:36:19 -04:00
ManDude 8b62de35ea
[texture-h] fixes (#356)
* move commonly used scripts to specific folders

* fixes

* Update test.sh

* Update test.sh

* Fix file permission

* move commonly used scripts to specific folders

* fixes

* Update test.sh

* Update test.sh

* Fix file permission

* [texture-h] fixes

* [display-h] use bitfield types
2021-04-13 20:22:34 -04:00
ManDude fcbf5b60ff
[gs] fill in most of the register types (#355)
* [gs] fill in most of the register types

that was kinda boring to do

* [display-h] minor decompiler fixes

* Update all-types.gc
2021-04-13 00:36:05 -04:00
water111 e5f0fecf17
[Decompiler] bitfield support and clean up of DMA (#350)
* get to vif

* support basic bitfield access

* make bitfields in dma work

* clean up dma

* fix merge conflict
2021-04-11 16:07:01 -04:00
ManDude 64ae2d6d39
[decomp] sync-info 1 (#351)
* move commonly used scripts to specific folders

* fixes

* Update test.sh

* Update test.sh

* Fix file permission

* move commonly used scripts to specific folders

* fixes

* Update test.sh

* Update test.sh

* Fix file permission

* [dynamics-h] clean-up

* make things neat

* update surface-h

* [sync-info] decomp 1

* move commonly used scripts to specific folders

* fixes

* Update test.sh

* Update test.sh

* Fix file permission

* move commonly used scripts to specific folders

* fixes

* Update test.sh

* Update test.sh

* Fix file permission

* [sync-info] update decomp

* Update gravity-h.gc

* [windows] separate scripts for runtime w/ or w/o display

* Update dynamics-h.gc

* Add offline test for sync-info

* clang
2021-04-10 21:17:36 -04:00
water111 9969445cf7
[Decomp] Math library: transform and quaternion (#344)
* decompile transform

* types for quaternion

* part of quaternion

* finish quaternion

* fix offline test reference

* wip fix to let issue

* fix
2021-04-02 11:35:14 -04:00
ManDude 7867de8fd7
update some physics code (#347)
* move commonly used scripts to specific folders

* fixes

* Update test.sh

* Update test.sh

* Fix file permission

* move commonly used scripts to specific folders

* fixes

* Update test.sh

* Update test.sh

* Fix file permission

* scripts to annoy me less

* [dynamics-h] clean-up

* make things neat

* more cleanup

* update surface-h

* fix error

* fix typo

* Spoonfeed the compiler

* [surface-h] rename sqrt to sqrtf
2021-03-29 18:30:58 -04:00
water111 0a76e6e157
[Decompiler] Make matrix decompile (#341)
* small fixes

* update

* add instructions

* finish matrix

* add matrix test cases
2021-03-28 20:26:30 -04:00
water111 64c35ca453
[Decompiler] Stack Variables (#338)
* clean up type analysis

* get everything set up

* basic stack variables working

* partial load fix

* most of matrix

* add offline tests
2021-03-27 15:18:59 -04:00
water111 7fac11ddf5
Support 128-bit variables (#336)
* wip 128 bit support

* add a few more files to offline test
2021-03-25 16:02:48 -04:00
water111 99683c0dac
[decompiler] Add tests and fixes for vector-h and math (#333)
* before messing with ssa stuff

* fix ash

* bounding box
2021-03-24 19:16:31 -04:00
water111 9ffc6014e1
fix printing and add gstate (#330) 2021-03-22 20:04:00 -04:00
water111 123f3b509d
[Decompiler] Fix let bug (#328)
* fix let definition bug

* remove debug prints and add test
2021-03-22 16:46:02 -04:00
ManDude 8e1c147ad8
move commonly used scripts to specific folders (#325)
* move commonly used scripts to specific folders

* fixes

* Update test.sh

* Update test.sh

* Fix file permission
2021-03-18 16:43:37 -04:00
water111 4262145c99
fix set! missing typecast (#324) 2021-03-17 19:26:35 -04:00
water111 d60d9b639a
support anonymous functions (#323) 2021-03-14 19:06:51 -04:00
water111 e93d97dd07
[decompiler] gkernel offline test (#321)
* working on pointer math

* bug fixes

* gkernel passing with no anon functions

* update tests
2021-03-14 16:11:42 -04:00
water111 814480f9e5
[Decompiler] Replace type hint system and improve variable types. (#320)
* 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
2021-03-13 16:10:39 -05:00
water111 9074a35b9b
[Decompiler] Fix printing of lets (#314)
* fix let prints and windows warnings

* missing include for windows

* windows again
2021-03-07 12:01:59 -05:00
water111 d8a82eeca1
[Decompiler] Fix up pretty printing and other small changes (#311)
* fix up pretty printing

* wip

* fix pointer cast signed vs unsigned issue
2021-03-06 20:16:48 -05:00
water111 0bf189f582
make decompiler at least unpack jak 2 and jak 3 files again (#313) 2021-03-06 19:06:45 -05:00
water111 26da66b29c
move dgo decompression to common utils and support it in the dgo unpacker (#312) 2021-03-06 16:06:08 -05:00
Tyler Wilding f123bf368a
decomp - vector.gc - Decompile vector.gc (#289)
* 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
2021-03-06 10:46:26 -05:00
water111 b352dcefa9
recognize dotimes (#310) 2021-03-05 21:46:39 -05:00
water111 65ffe83468
[Decompiler] Decompile let (#309)
* test

* fix bug

* fix tests for let

* missing formatting fix
2021-03-05 18:48:01 -05:00
ManDude e77478e2e6
[decompiler] Print floats as neatly as possible (#307)
* [decompiler] Print floats as neatly as possible

* style fixes

* more

* Update test.bat

* Add and fix tests

* Jesus christ fine
2021-03-04 00:47:46 -05:00
water111 d9aa535dd0
[Decompiler] Fix issues in gcommon (#305)
* fix several issues

* small fixes
2021-03-03 20:52:25 -05:00
water111 413c1f5c74
[Decompiler] Add offline tests (#303)
* add offline test for gcommon as an example.

* fix test

* unused var
2021-03-03 15:42:55 -05:00
water111 8f68d35cbb
[Decomp] Some more collision header files and speed up tests (#296)
* some more

* faster tests

* on by default
2021-03-01 11:15:24 -05:00
water111 b0686b1ea7
fix decompiler crash (#294) 2021-02-28 19:22:53 -05:00
water111 9d3b056b7a
Fix asize bug, decompile a few files (#293)
* fix bug in asize of basic

* more decomp
2021-02-28 18:05:07 -05:00
water111 c15c163333
[Decomp] Add SSA based check for expression building (#292)
* wip

* tests pass

* fix warnings
2021-02-28 12:38:29 -05:00
water111 57eca1dee9
[Decomp] Decompile more files. (#290)
* decompile ocean trans tables

* more

* exclude tables from decomp progress

* format'
2021-02-27 14:40:18 -05:00
Tyler Wilding 049489c85b
Fix a small regression impacting MSVC debug builds (#285)
* decomp: Fix nonempty_intersection impl for MSVC Debugging use-case

* docs: Add info on getting ASan builds running on Visual Studio w/o exceptions
2021-02-27 13:38:04 -05:00
water111 b7f040986e
[Decomp] Decompile connect.gc (#288)
* decompile connect

* decompile lots of types
2021-02-26 22:22:54 -05:00
water111 d6d5203695
[Decomp] Minor fixes plus some math camera decomp (#287)
* make some progress on math camera

* minor fixes plus start of decomp of math camera
2021-02-26 15:27:13 -05:00
ManDude d952475c77
[glist/glist-h] Decompile this stupidity (#286)
* [glist/glist-h] Decompile this stupidity

* [glist] fix macros

* [glist] fix return types
2021-02-26 08:59:28 -05:00
water111 791c4abfc0
[Decompiler] Static Data Decomp (#280)
* update all-types

* begin work on static data decompiler

* working for vif disasm array

* mostly working

* finish static data decompilation
2021-02-25 09:51:28 -05:00
ManDude 9d84ba8ca4
Decomp assert and debug-h (#282)
* [assert-h] decomp

* [assert] decomp

* Update assert.gc

* [debug-h] decomp

* oops
2021-02-24 22:58:20 -05:00
water111 f6a6b4c107
[Decompiler] Fix coloring moves (#281)
* fixed

* final fix
2021-02-24 19:08:55 -05:00
water111 5ec9a91eb9
Decompiler fixes + decompiling (#276)
* decomp pad

* more decompilation

* update

* fix test name
2021-02-22 09:36:30 -05:00
ManDude b92a2823bb
Make a fake-asm macro for (mips) assembly we want to show but not use + some other fixes (#277)
* 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
2021-02-22 01:02:12 -05:00
water111 4b1b7e9507
[Decompile] DMA and similar (#275)
* add some dma

* clean up

* add progress script and make codacy happy
2021-02-21 11:02:28 -05:00
ManDude ea1a4ef1bb
specify a label_types_file variable in jak1 config (#274)
* 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
2021-02-20 23:05:52 -05:00
water111 8775840265
[Decomp] Decompile engine math library types (#272)
* decompile some stuff

* fix typo

* playing around with trigonometry

* more progress on trig

* more trig

* comments and small fixes

* finish trig
2021-02-20 11:42:46 -05:00
water111 db48d94270
[Decompiler] Clean Up (#271)
* clean up

* fix up until generic ops

* finish kernel

* documentation

* types

* add missing file
2021-02-18 11:35:45 -05:00
water111 f1a93886e7
[Decomp] Decompile gstring (#267)
* decompile gstring

* update

* Update code_status.md

* Update code_status.md

* decompile gstate

* add test for states, hope it passes

* also test throw and catch xmms

* update doc
2021-02-16 20:37:48 -05:00
water111 aa9bcd07f4
[Decompiler] Flag uses of vf registers for values outside of functions (#263)
* clean up warning system

* add bad dependency warning

* add q and acc
2021-02-15 11:55:10 -05:00
water111 af1691a0bc
[Decompiler] More progress on method stuff (#264)
* more progress on method

* fix method issues
2021-02-15 11:36:59 -05:00
water111 14d602c594
[Decompiler] More fixes for gkernel (#261)
* fix bugs and more address of support

* support for zero checks

* fix tests
2021-02-14 18:50:45 -05:00
water111 d01ecf0a9e
[Decompiler] Support virtual method calls (#260)
* support virtual methods kinda

* more
2021-02-13 16:35:27 -05:00
water b0780ce2c8 fix some instruction decodings 2021-02-13 12:05:50 -05:00
water111 126dfc1c45
[Decompiler] Misc fixes for gkernel/math (#257)
* more cases

* some work on math and floating point stuff

* some decompiling for fun
2021-02-13 11:32:52 -05:00
water e8231c2708 fix 2021-02-11 16:13:03 -05:00
water111 d9a8f28e52
remove useless sets (#252) 2021-02-11 14:35:28 -05:00
water111 43c1d223a6
[Decomp] Decompile gcommon, gstring-h, and gkernel-h (#249)
* begin decomp

* untabify

* finish decomp of gcommon

* warning with function name

* clean up gkernel-h

* fix all types
2021-02-11 09:49:15 -05:00
water111 6e0ff4c9d0
[Decompiler] Clean up the output (#245)
* 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'
2021-02-09 20:59:14 -05:00
ManDude fa061ef7eb
[timer decomp] (#248)
* [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
2021-02-09 20:24:33 -05:00
ManDude 3c7067fe4a
[timer-h decomp] timer-h decomp (#246)
* 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
2021-02-09 11:00:49 -05:00
ManDude 47fbc5e106
update decomp.bat in accordance to project directory changes + bugfix (#243)
* ObjectFileDB: Fix crash if obj list text has no objects

* rename "decomp.bat" to "decomp-jak1.bat"
2021-02-07 21:51:44 -05:00
water111 499f614cd1
create output folder (#242) 2021-02-07 19:06:05 -05:00
water111 e01e065170
[gcommon decomp] compiler and decompiler fixes (#239)
* wip

* decompile file-io

* a

* fix
2021-02-07 18:21:00 -05:00
water111 f8b63a3f92
[Decompiler] Put likely delay slots in their own block (#237)
* first part of fix

* atomic op conversion fix

* update tests

* oops
2021-02-06 17:04:03 -05:00
Tyler Wilding 5b6a8dcf98
third-party/licensing: Switch miniLZO usage to LZOkay (#232)
* 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
2021-02-06 09:54:23 -05:00
water111 ddffda1e8c
[Decompilation] Fixes to compiler/decompiler for gcommon (#227)
* fix shift naming issue

* fix bad argument variable names

* fix missing variable issue

* small missing things

* wip

* cleanup

* wip

* fix conditions

* small bug fix in rewriter

* fix incredibly stupid printing bug
2021-02-05 19:41:09 -05:00
Tyler Wilding 65206823ef
Compiler - Implementing more VU Instructions (Part 1 of 2) (#221)
* A little project cleanup

* Script to grep decompiler results

* Compiler: Implement VNOP -> FNOP (.nop.vf)


temp: test new addition

* Compiler: Implement VMUL.xyzw (.mul.vf)


squash: cleaning up files i don't want to accidentally stage

* Compiler: Implement V[ADD|SUB|MUL].dest instructions

* Compiler:  Implement V[ADD|SUB|MUL][x|y|w|z].dest instructions

* Compiler: Implement V[MIN|MAX]{[x|y|z|w]}.dest instructions

* Compiler: Implement V[ABS]{[x|y|z|w]}.dest instructions

* Cleanup review feedback before adding tests and docs

* Tests: Added missing emitter tests

* tests/compiler: Comprehensively test all new instructions

* docs: Add documentation for newly supported operations

* Remove unused vector-h function

* Address review feedback
2021-02-05 15:00:17 -05:00
bb010g 2436a8a541
Nixpkgs support (#228)
* Use env shebangs

* CMake cleanup, install() invocations, & CTest

`ctest` & the `test` target work now

* Nixpkgs support
2021-02-03 21:29:46 -05:00
water111 a870bb53e4
[Decompiler] Expression 5 (#218)
* new method of inline-array-class

* up to new array

* wip side effect stuff

* prepare for pop barrier stuff

* add pop barrier

* add local vars hack to compiler

* fix bug, make sort work

* add test for array

* bug fixes

* another bug fix

* refactoring env variable print for casts

* more tweaks

* updates

* final cleanup

* codacy fixes
2021-02-01 20:41:37 -05:00
water111 51f70b6f4b
[Tools] Add DGO packer and unpacker (#219)
* add dgo tools

* make codacy happy
2021-01-27 20:46:58 -05:00
water111 3ea8cbea6f
misc small improvements (#217) 2021-01-27 15:39:50 -05:00
water111 b35beab372
[Decompiler] Add more expressions (Part 4) (#215)
* ref

* more

* one more

* up to insert cons

* recognize new

* fix memory bug!

* some mods to pair fields
2021-01-27 13:47:54 -05:00
water111 b59e33c005
[Decompiler] Expressions (Part 3) (#213)
* before inserting bonus instruction

* first part of refactor for return values

* find parent method working
2021-01-25 22:08:58 -05:00
water111 2f722e6379
[Decompiler] Expression Building (#211)
* up to ash

* add more expressions

* fix some return variable usage nonsense

* bfloat print working

* basic-type working

* type working, fix decompiler on all files

* clang format
2021-01-24 16:39:15 -05:00
water111 27f0a7ca44
[Decompiler] Begin expression conversion, rearrange tests (#209)
* refactor tests and analysis passes

* identity test working

* combine test categories with only a few cases

* more fixes
2021-01-23 16:32:56 -05:00
water111 4a97e15b40
[Decompiler] Remove most IR1 Analysis (#207)
* temp

* remove some of ir1
2021-01-22 22:03:58 -05:00
water 56d4ed1228 add stacking framework 2021-01-22 20:50:37 -05:00
water111 679b17ae6f
[Decompiler] Get used variables, handle function calls better, and minor cleanup (#205)
* small fixes, implement getting used variables

* improve printing of variables

* missing include
2021-01-19 21:45:17 -05:00
water111 40d328f4eb
[Decompiler] Test framework for decompiler regression tests and gcommon tests (#200)
* test framework for pre-expression compact stuff

* check ordering

* more tests

* final tests gcommon
2021-01-18 13:33:32 -05:00
water111 d6bbca5620
[Decompiler] IR2 form implementation (#197)
* begin ir2 form implementation

* temp

* small fixes

* fix test
2021-01-17 18:08:18 -05:00
water111 1071ff6003
[Decompiler] WIP Conversion to SSA and variable naming (#195)
* begin ssa algorithm

* ssa based splitting appears to work

* add merge pass

* finish basic implementation

* better output

* bug fix
2021-01-16 10:54:09 -05:00
water111 8f86f0f00e
add register usage pass (#194) 2021-01-12 19:20:08 -05:00
water111 fe693b5da2
[Decompiler] Implement IR2 Type Analysis Pass (#193)
* type analysis setup

* more framework

* update printing

* wip

* add type analysis pass

* fix tests
2021-01-10 20:46:49 -05:00
Tyler Wilding e63abb0ea1
Improved test namings for multi-operations, added new ones, still a few failures (#190)
* Improved test namings for multi-operations, added new ones, still a few failures

* Review - Modifications to get all tests passing
2021-01-10 15:46:46 -05:00
water111 cd9a9af6dd
fix register info duplication (#191) 2021-01-10 11:08:03 -05:00
ManDude e5b0541d98
Typo fixes & Windows QoL changes (#189)
* Add a Release build configuration.

* Batch file alternatives for decomp/gc/gk

For the shell-less, or people with a different Windows configuration.

* all-types.gc: Fix typo.

* gcommon.gc: Typo.

* debugger: use enum class for InstructionInfo::Kind

* decompilerIR: use enum class for IR_Store::Kind

* Update all-types.gc

* decompiler: tab to spaces

* root batch files: update directories

* Use a gitignore inside "log" folder to fix windows crashes

* Revert "Update all-types.gc"

This reverts commit 5ef179bb4e.
2021-01-10 10:39:32 -05:00
water111 2901f4a99e
[Decompiler] Write IR2 to file and implement some Atomic Op conversions (#187) 2021-01-09 20:01:48 -05:00
water111 5093b97cda
[Decompiler - New IR] Add AtomicOp (#181)
* 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
2021-01-06 20:04:15 -05:00
water111 3331e9cd00
Replace spdlog (#185)
* remove spdlog

* clang format and fix windows

* add format shared

* windows sucks
2021-01-06 12:16:39 -05:00
water111 95c81b675a
add asan build (#179) 2021-01-03 12:31:42 -05:00
water111 7af6dce1b2
[Decompiler] WIP Expression Stacking (#178)
* wip

* fix the stupid if thing

* update

* fix

* fix some ordering issues
2021-01-02 18:24:45 -05:00
water111 a80b331c27
[Compiler] In-progress support for vector float (AVX) (#171)
* begin work on vf support

* split reg kind into reg hw kind and class, use class for ireg

* try test

* clang format

* add some more ops and some example functions

* better lvf on statics

* add documentation
2020-12-30 15:33:51 -05:00
water111 c811778d00
[Compiler] Add reset-here option to colored and constrained rlet vars (#169)
* add reset-here to clear coloring at entry to rlet

* update doc
2020-12-27 14:21:48 -05:00
water111 25301a8bbc
[Decompiler, Game] Run type prop on gstring (#168)
* run type prop on gstring

* add types-h

* new settings

* cmake switch

* down to 4 failing functions

* clang format
2020-12-26 11:09:59 -05:00
water111 6bf9d97c51
[Decompiler] Improve reverse field lookup (#167)
* start on new reverse lookup

* use new reverse lookup
2020-12-25 15:04:03 -05:00
water111 cae3871730
[Decompiler] Experimental Expression Stack (#157)
* begin framework for expressions

* more

* clean up warnings

* small fixes

* update

* wip type prop improvements

* see if nasm works

* fix format strings
2020-12-17 15:48:07 -05:00
water111 ba919a069c
Add another kernel test, fix small bugs (#156)
* temp

* run function in process test

* windows debug

* debug

* update

* update

* again

* update

* fix same bug in debugger
2020-12-10 20:26:40 -05:00
water111 e05f3ceefc
Implement gkernel: Part 2 (#155)
* update

* small fixes

* deactivate

* simple kernel test
2020-12-08 21:41:36 -05:00
water111 d86964985a
Improve Register Allocator (#154)
* before adding IRegSet stuff

* use bitsets for live analysis

* speed up

* add stack structures

* organize new better
2020-12-06 15:42:26 -05:00
water111 06918e1fea
Implement gkernel: Part 1 (#150)
* start gkernel implementation

* progress

* more of kernel

* swap to new dispatcher, will it work on windows

* update
2020-12-05 17:09:46 -05:00
water111 ea479bee98
Add enums and some cleanup (#148)
* support enums

* better compiler warnings

* tweaks to build with clang
2020-12-02 19:51:42 -05:00
water111 71dda76e2b
Add some compiler features and documentation (#147)
* update doc

* add disassemble and type checking

* improve compiler error messages
2020-12-01 21:39:46 -05:00
water 435b0da144 Merge branch 'master' of https://github.com/water111/jak-project into w/kernel-type-prop 2020-11-29 10:10:33 -05:00
Whitehole 8bbe21c648 Fix and rename rgba16_to_rgba32 2020-11-29 03:14:12 +01:00
water 5f91651c92 fix types 2020-11-28 21:02:50 -05:00
water 5b4b5c238e update 2020-11-28 19:59:23 -05:00
water111 9b32835faa
Type Prop - Second Attempt (#142)
* setup and run on identity

* temp

* temp2

* temp

* update

* mroe

* successful in gcommon
2020-11-28 15:35:38 -05:00
water fb13f223fd remove old bad type analysis code 2020-11-27 16:46:25 -05:00
water 921ae50669 add more utils 2020-11-27 16:38:36 -05:00
water 4fb8381105 add reginfo to basic ops 2020-11-27 14:46:55 -05:00
water a9cfa19f92 add IR atomic interface and switch all basic ops to these 2020-11-26 22:16:59 -05:00
water d6ad0c0bb5 fix memory bug 2020-11-26 17:28:33 -05:00
water111 09142d1712
Support "game count" and v4 objects (#140)
* generate object, but not supported in linker yet

* add link and tests

* update types
2020-11-24 20:48:38 -05:00
water111 19b8bb81c9
Add the STR RPC to overlord and game code (#134)
* work in progress streaming rpc, simple test is working

* actually add the test

* debug windows failure

* windows fix maybe

* windows 2

* use str-load-status

* update types
2020-11-22 12:59:55 -05:00
water 4cafe04af3 support loading streaming data in decompiler 2020-11-21 15:58:51 -05:00
water111 660ef41136
Update documentation and clean up (#129)
* cleanup

* clean up file layout
2020-11-21 12:52:38 -05:00
water111 29e4ff9e51
remove match param (#127) 2020-11-20 20:17:37 -05:00
water111 953c1512db
Process Text Files in Decompiler (#122)
* begin support for v2

* export game text

* generate text files

* working text load

* fix windows

* add test and clean up game tests a bit

* load the right file

* add separate program to launch the data compiler

* add offline test script
2020-11-19 21:22:16 -05:00
water111 0767321934
Extract Textures (#119)
* temp

* cleanup

* documentation, enable alpha

* add subfolder

* support all textures
2020-11-16 19:57:45 -05:00
water111 a45d180f2c
Try to speed up the build (#106)
* first attempt

* attempt 2

* windows and formatting fix
2020-10-29 21:27:52 -04:00
water111 dfe129373a
fix float loads, add dgo loading to game test (#101)
* fix float loads, add dgo loading to game test

* build and load dgos in order
2020-10-25 20:30:25 -04:00
water acb91dbf48 some work on vector types 2020-10-25 18:02:03 -04:00
water 710f6be13b Merge branch 'master' of https://github.com/water111/jak-project into w/add-types-to-all-types 2020-10-25 13:21:34 -04:00
water a198196842 more types 2020-10-25 13:21:27 -04:00
water 15a66d9c62 add types 2020-10-25 12:07:10 -04:00
Tyler Wilding 5a5d88eb17 Amalgamate FileIO and remove duplicate Timer header
Closes #8
2020-10-25 02:27:48 -04:00
water111 b56025412b
Recognize auto-generated inspect methods and create deftypes from them (#95)
- Recognize new type definitions/parents/type flags in the decompiler
- Analyze autogenerated inspect methods and dump guesses at fields to a file
- Utility functions for accessing static data by label
- Better ordering in the decompiler to go through functions in the order they appeared in the source
- Added a decent number of types to `all-types.gc` based on the new field analyzer
- Correct a few `int`/`integer` mistakes in `gcommon.gc` (this should really be a warning)
- Correct a few type issues in `gcommon` and `gkernel-h`
- Option in the decompiler to be strict about `define-extern` redefining a type of a symbol
- Add a test to check consistency in types between `all-types.gc` (used by decompiler) and `goal_src` (used by the compiler)
2020-10-24 22:51:40 -04:00
water111 b561cdfade
Make decompiler naming consistent (#94)
* use a fixed object file naming by default, option to allow new map file creation

* fix prints

* fixing up edge cases

* update json config
2020-10-24 14:27:50 -04:00
water111 0bc2466f86
Add prototype decompiler GUI (#93)
* json output for basic ops

* add prototype gui

* add some more fields and layout the gui a little bit nicer
2020-10-23 17:20:04 -04:00