69 Commits

Author SHA1 Message Date
Ranieri 8584c0613a Feature/runtime gs recompiler instructions (#73)
* feat: basic gs
feat: basic rasterizer
fix: a lot of fixes to runtime stubs
feat: basic vif intercepter
feat: return "ok" for some stubs
feat: disassembly code as comment
fix: fix code gen instructions set
fix: again jump
feat: remove unused macro
fix: fix some problematic macros
feat: track delayslots on runtime
and many more

* feat: added missing files

* fix: fix instruction test
2026-02-22 02:20:42 -03:00
Aslan Hud 130b8d2583 Fix: correct MULT/MULTU rd-register write and EI/DI COP0 Status bit (#72)
* fix: MULT/MULTU now write rd in addition to HI/LO (R5900 extension)

* fix: EI/DI instructions now toggle COP0 Status bit 16 (EIE) instead of bit 0 (IE)
2026-02-21 12:21:16 -03:00
Antonio Guastella d7701f9ea7 fix: reslice entry functions without container (#70) 2026-02-20 10:07:31 -03:00
Ranieri 4334e74342 fix: fixed entry slicing logic to avoid “same tail repeated” generation (#67) 2026-02-18 23:34:27 -03:00
Ranieri 8b1f4e00f2 Fix/fix jump tables (#65)
* feat: multipass discover additional entrypoints

* feat: added helpers for returning
feat: added game overrides

* added missing PS2_SHUFFLE_EPI8 macro after report from @playmer

* fix: fix jump tables

* fix: fix MMI comments
2026-02-18 22:07:20 -03:00
Ranieri 934672ac9a Feature/code gen entry (#62)
* feat: multipass discover additional entrypoints

* feat: added helpers for returning
feat: added game overrides

* added missing PS2_SHUFFLE_EPI8 macro after report from @playmer
2026-02-18 15:10:49 -03:00
Ranieri 043bf3bf8d Feature/stub by address (#61)
* feat: split runtime code in small files to be easy to develop

* feat: split stubs in inl files

* feat: function auto link function treat functions with underscore as same as without underscore

* feat: remove underscore prefix from stubs

* feat: thread and flags refactor

* feat: propagate request stop
feat: some elf validation on runtime

* feat: remove Z7 compiler options
feat: added a literal float case error on vu

* fix: fix critical recompiler error on marking pc calls

* feat: better system interrupt
refactor: small refactor on thread system

* feat: stubs implements for resident evil code veronica

* feat: merge fileio

* feat: stub by address

* feat: codegen now auto-routes J/JAL callssites with known relocation symbols to syscalls/stubs
2026-02-18 01:35:20 -03:00
Ranieri 4a538d3589 Feature/resident evil code veronica patch 1 (#60)
* feat: split runtime code in small files to be easy to develop

* feat: split stubs in inl files

* feat: function auto link function treat functions with underscore as same as without underscore

* feat: remove underscore prefix from stubs

* feat: thread and flags refactor

* feat: propagate request stop
feat: some elf validation on runtime

* feat: remove Z7 compiler options
feat: added a literal float case error on vu

* fix: fix critical recompiler error on marking pc calls

* feat: better system interrupt
refactor: small refactor on thread system

* feat: stubs implements for resident evil code veronica

* feat: merge fileio
2026-02-17 23:33:44 -03:00
Ranieri c4555f6723 feat: split runtime code in small files to be easy to develop (#56)
* feat: split runtime code in small files to be easy to develop

* feat: split stubs in inl files

* feat: function auto link function treat functions with underscore as same as without underscore

* feat: remove underscore prefix from stubs
2026-02-17 03:00:59 -03:00
Ranieri aa76cdbbf7 Feature/vu fixes (#55)
* fix: added missing header include for gcc

* fix: small thread fix on syscalls
fix: fix incorrect VU translations (they was using wrong register)

* feat: added authoritative system for function extraction, this will prevent functions overlap when we have debug symbols
2026-02-16 23:00:35 -03:00
Antonio Guastella 4961710407 Issue 11 vu0 macro (#48)
* Add missing VU0 Special1 macro translations

* Fix VU0 macro decode and field ops

Align Special2 decoding with fhi_flo, implement VCLIPw/VABS, and fix field variants (VADDx/VSUBx/VMULx). Keep C++17 compatibility by replacing unordered_set::contains and remove dead ADDIU return. Update Special2 metadata for VWAITQ.

* vu0: complete macro mappings and add coverage test

* review: clean up vu macro handling

* fix: restore C++20 contains in code generator

* fix: correct VU0 Special2 instruction encoding in decoder test

---------

Co-authored-by: Antonio Guastella <antonioguastella@energine.it>
Co-authored-by: Ranieri <ran-junior@hotmail.com>
2026-02-16 22:20:48 -03:00
Ranieri b7973593ee fix: added missing header include for gcc (#54) 2026-02-14 13:00:36 -03:00
Ranieri 8f747334d6 feat: refactor analyzer to not realy only on debug symbols (#53)
fix: patching NOP things that code gen already know how to handle
feat: added a bug on JAL/J/JAR code gen
feat: enhanced tom file
fix: fix memory layout for ps2 macros
feat: added a lot of not working garbabe to runtime (fix later)
feat: some code organization
feat: added new tests
feat: update readme
2026-02-13 15:02:34 -03:00
Ranieri df745d7ee9 Feature/analyzer workflow cleanup (#46)
* feat: added thread naming functionality
feat: improve function name sanitization

* fix: fix decode jump target
feat: better word read
feat: prevent unexpect path on output tom
feat: analyzeEntryPoint now lookup for correct entry insted of rely on names
fix: fix CFG graph
feat: mangled name are not handle and sysfunctions anymore
feat: heavy loop flag count is not 5 from 3

* fix: skip/stubs now under [general]
fix: patch address now saves as true hex insted of decimal with 0x
fix: fix J/JAL reconstruction (PC+4)
feat: better C++ identifier sanitization
feat: decoder now dont stop the execution anymore just keep going
2026-02-06 00:27:38 -03:00
Ranieri e567c4cf60 feat: added thread naming functionality (#44)
feat: improve function name sanitization
2026-02-05 02:07:49 -03:00
M. Sami Gürpınar 5d3be0e2e7 fix portability issue (#41)
* refactor: update function name checks to use contains method

* refactor: update code generation to use static_cast

* refactor: made member methods const

* refactor: made range-based loop

* refactor: make one variable constructor explicit

* refactor: remove redundant else

* refactor: turn includes to forward declarations

* refactor: brace placements turned into allman style

* refactor: structed binding for readability and clarity, used emplace_back to prevent extra-copied object

* fix: add dwarf_private.h include

* fix: update GPR_U32 and GPR_S32 macros to use _mm_extract_epi32 for SSE/AVX intrinsics
2026-02-03 10:25:22 -03:00
Ranieri 5e9139dd22 feat: better decoder (#40)
* feat: use rabbitizer for decode MIPs instructions

* feat: cleanup code generator

* feat: fix test and add a sefe check for generate functions
2026-02-02 13:29:12 -03:00
Ranieri d7306d2095 Feature/better analyzer v1 (#39)
* feat: pin dependencies

* feat: dwarf parse

* fix duplicated functions

* feat: small code cleanup

* feat: crash prevent

* feat: modernize code

* feat: split m_libFunctions from m_knownLibNames

* feat: added ghidra loader

* feat: auto bootstrap name for recompiler
2026-02-02 01:49:51 -03:00
M. Sami Gürpınar b7086d89de structured binding, fix copying extra object (#38)
* refactor: update function name checks to use contains method

* refactor: update code generation to use static_cast

* refactor: made member methods const

* refactor: made range-based loop

* refactor: make one variable constructor explicit

* refactor: remove redundant else

* refactor: turn includes to forward declarations

* refactor: brace placements turned into allman style

* refactor: structed binding for readability and clarity, used emplace_back to prevent extra-copied object
2026-02-01 03:03:37 -03:00
Joshua T. Fisher e770572116 ps2_recomp lib and runner separation, fix runtime default build (#36)
* Separate the exe and lib of ps2_recomp.

* Move macro header to runtime, don't generate it, apply generated diff.
2026-01-31 19:29:18 -03:00
M. Sami Gürpınar c218c64348 Made member methods const (#34)
* refactor: update function name checks to use contains method

* refactor: update code generation to use static_cast

* refactor: made member methods const

* refactor: made range-based loop

* refactor: make one variable constructor explicit

* refactor: remove redundant else

* refactor: turn includes to forward declarations

* refactor: brace placements turned into allman style
2026-01-31 13:14:56 -03:00
M. Sami Gürpınar e8f0c69de6 Use contains and static_cast (#33)
* refactor: update function name checks to use contains method

* refactor: update code generation to use static_cast
2026-01-30 11:04:22 -03:00
Joshua T. Fisher 91678d1977 Merge pull request #29 from playmer/playmer/fix_lookup
Convert CodeGenerator::m_symbols to unordered_map to fix O(n) lookups
2026-01-29 00:20:46 -03:00
DanielSvoboda 8430496557 Handle dots in function names during sanitization
Replace dots with underscores in function names
2026-01-28 15:34:37 -03:00
Ranieri 7b5f254f63 Merge pull request #20 from Lucasnribeiro/fix-static-keywords
fix: non static variable
2026-01-28 12:30:28 -03:00
Ran-j b8c1d7eaee feat: add runtime stubs for missing IOP calls
fix: fix small function on recompiler
2026-01-28 03:11:45 -03:00
Ran-j b1f86a7597 feat: auto set runtime internal stubs and syscalls on recompiled code 2026-01-27 17:12:35 -03:00
Lucas Ribeiro 6cb9b968d5 fix: non static variable 2026-01-27 14:55:56 -03:00
Ran-j 2e08d5e87b refactor: refactor runtime and recompile for better workflow and correct generating code and analyze output 2026-01-04 22:21:50 -03:00
Ran-j 2ca84c131a feat: call main entrypoint from the ps2 game (next commits will fix some missing feature for it) 2025-12-27 14:30:03 -03:00
Ran-j 2d1f7ec07f feat: added missing v0 instructions
feat: added threads inplementation on ps2 syscalls
feat: patch entrypoint on recompiler
feat: ps2 macros now is part of the runtime
feat: use thread to hold game loop
feat: sanitize functions like point out by chrisking1981
fix: fix old instructions cast
fix: fix missing patch for opcode j
2025-12-27 11:33:24 -03:00
Ran-j 409570c709 feat: added minitest framework
feat: added some unit tests for code gen and decoder
fix: backport some bugfix from chrisking1981 branch
2025-12-26 18:33:52 -03:00
Ran-j c05d8f1809 feat: misc fixes 2025-11-29 18:19:36 -03:00
Ran-j 2f58b17243 feat: remove namespace for now 2025-11-29 12:31:11 -03:00
Ran-j 4ea08199b0 feat: now we generate header file for stub functions 2025-11-29 12:26:39 -03:00
Ran-j cd2e7f4ea8 feat: correct read values from TOM file for config manager 2025-11-29 11:28:16 -03:00
Ran-j a311b73bf7 feat: added more ps2 libs to analyze
fix: fix some cast on code gen
2025-11-29 03:09:49 -03:00
Ran-j 3a0cea3286 fix: fix code gen function parameters call 2025-11-29 02:37:06 -03:00
Ran-j fae9a7ad71 feat: update ps2 CPU context 2025-11-29 02:28:05 -03:00
Ran-j 3f0e33d01c fix: fix macro gen 2025-11-29 01:36:12 -03:00
Ran-j c700c95087 feat: sync recompile and codegen output to match what are expected on runtime 2025-11-29 01:20:45 -03:00
Ran-j 68a8fc0fdd fix: fix some parsing logic
feat: added a lot of try/catch to make debug more easy
2025-11-29 01:13:18 -03:00
Ran-j 95c824ea61 feat: better MMI instruction on decoder 2025-11-29 00:44:52 -03:00
Ran-j 377786cf43 feat: added one more missing decoder instruction 2025-11-29 00:17:51 -03:00
Ran-j 69d4d26084 fix: fix generate header file when single cpp file are enable 2025-11-29 00:17:07 -03:00
Ran-j 563e1b105a feat: refactor some instructions 2025-06-23 22:48:27 -03:00
Ran-j 5fde9612a9 feat: runtime fixes and finish implementations 2025-05-29 18:11:53 -03:00
Ran-j e3ed780196 feat: added more missing instructions 2025-05-29 17:28:29 -03:00
Ran-j a0314c9847 feat: placeholder for exec VU0Microprogram 2025-05-29 16:21:00 -03:00
Ran-j 342bb19607 feat: added more instructions with revision 2025-05-29 16:20:08 -03:00