Commit graph

554 commits

Author SHA1 Message Date
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
ManDude 87f2984cf5
add emacs temp files to gitignore + remove some redundant quotes (#273)
* 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
2021-02-18 22:24:10 -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 1b5b9a2469
add sqrt (#270) 2021-02-17 00:57:21 -05:00
Tyler Wilding cdce4d9612
compiler: Support the majority of the remaining VU VF instructions (#258)
* compiler: Support the majority of the remaining VU VF instructions

- VWAIT
- VMADD variants
- VMSUB variants
- VSQRT
- VDIV
- outer product (VOPMULA + VOPMSUB)

* compiler: Fix some bugs / optimize some instructions

* tests/compiler: Add test coverage for new instructions

* docs: Add documentation for new inline assembly functions

* lint: Formatting / fix failing test

* Remove my comment about ftf/fsf encoding, it's been fixed

* address review feedback

* correct VSQRTPS implementation
2021-02-16 21:41:33 -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
water111 fab2e6c9b6
Merge pull request #259 from water111/w/fix-vsqrt-vrsqrt-vdiv
[Decompiler] Disassemble vdiv/vsqrt/vrsqrt properly
2021-02-13 12:30:24 -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
water111 a3b31d3c0e
Merge pull request #256 from bb010g/master
Correct Nix flake licensing & add ISC License
2021-02-11 22:32:57 -05:00
Dusk Banks 28682ba37f Correct Nix flake licensing & add ISC License
woo, removal of miniLZO means no more GPLv3+!

(All contributors signed off on this relicense.)
2021-02-11 19:29:51 -08:00
water111 87ad3985c9
Merge pull request #253 from water111/w/constants-in-conditions
[Decompiler] Fixes for gkernel and pad
2021-02-11 16:21:38 -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 45f74f078a
[Compiler] Implement and/or in the compiler instead of a macro (#231)
* fix sc

* doc update

* another doc update
2021-02-03 16:12:51 -05:00
water111 425cc6794c
[Compiler] Bug fixes (#230)
* fix method name and use-after-free during compile error

* doc fix
2021-02-03 11:07:47 -05:00
water111 bbe5a10d76
fix stuck inline test (#229) 2021-02-03 08:36:22 -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
water111 8135c18e91
Merge pull request #206 from water111/w/ir2-stacking
[Decompiler] Add stacking framework
2021-01-22 21:08:10 -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 af328ffa29
Merge pull request #204 from VodBox/patch-1
doc: fix heading
2021-01-19 18:54:54 -05:00
Dillon Pentz bd5e0e07f7
doc: fix heading 2021-01-20 12:47:55 +13:00
water111 f94818e184
Merge pull request #203 from ManDude/master
doc: typo fixes
2021-01-19 18:40:54 -05:00
doctashay 79ed82425b
Append README.md to include Arch Linux documentation (#202)
* Begin spdlog integration for decompiler

* Replace old prints with spdlog equivalents

* clang-format

* Add Arch Linux documentation

* Remove spdlog (again)...
2021-01-19 18:40:11 -05:00
ManDude 1876e02314 doc: typo fixes 2021-01-19 23:38:28 +00: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