Skip to content

WIP disassembler capable of disassembling machine code of PlayStation 2's Emotion Engine CPU (TX79)

License

Notifications You must be signed in to change notification settings

TimoSalomaki/EmotionEngineDisassembler

Repository files navigation

Emotion Engine Disassembler

Disassembler screenshot

Work-in-progress disassembler capable of disassembling machine code of PlayStation 2's Emotion Engine CPU (C790), built with C#. The current version is single threaded and can decode and parse around 700'000 instructions per second on a Dell Latitude E7240 laptop (i7-4600U @ 2.10GHz). There are still important tasks that should be done before this is ready for any real use, for example the register names are not parsed yet and tests are completely missing. It's also very likely that some of the instructions are decoded incorrectly.

All the implementation so far has been done by following the official documentation of the processor from Toshiba.

TODO

CPU

  • Support the default instruction set
  • Support the extended C790-specific instruction set
  • Support the COP0 system control coprocessor instruction set
  • Register name decoding
  • Assembler
  • Pseudo instructions (nop is already one)

FPU

  • Support the COP1 (FPU) coprocessor instruction set
  • Registers

VPU

  • Support the VPU instruction set
  • Registers

UI

  • AvalonEdit integration
  • Syntax highlighting for MIPS instructions
  • Hierarchical code view (custom-drawn SkiaSharp control?)
  • Jump and branch arrows
  • Go to address functionality
  • Hex line numbers
  • Docking

General

  • Optimizations (there's way too many conversions, allocations etc. going on right now but that's on purpose to get everything up and running before optimizing)
  • Unit tests
  • Open/save file
  • Persist the created instruction instances for future use (currently they're just collected by the GC at some point)
  • Multithreading

About

WIP disassembler capable of disassembling machine code of PlayStation 2's Emotion Engine CPU (TX79)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages