Commit graph

79 commits

Author SHA1 Message Date
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
water111 fc1a8f37c6
Partially Implement Decompiler Type Analysis (#90)
* implement basic framework for decompiler type analysis

* before type system changes

* add some decompiler stuff to the type system

* try algorithm on a few functions
2020-10-18 15:44:19 -04:00
doctashay 9410e01aaf
Implement logging features for decompiler (#78)
* Begin spdlog integration for decompiler

* Replace old prints with spdlog equivalents

* clang-format

* Fixes

* Log output to /logs/decompiler.log.

The console now prints that the disassembly has begun and it may take a few minutes to complete. This will reduce the amount of verbose logging output directly to a console stream.

* Update .gitignore

Ignore decompiler output for now

* Resolve more issues

Fixed percentage printing and various other issues

* Fixed stuff I broke (sorry)

* Fix more broke stuff
2020-10-15 20:59:30 -04:00