All Projects → BlockoS → Etripator

BlockoS / Etripator

Licence: GPL-3.0 license
A PC-Engine disassembler

Programming Languages

c
50402 projects - #5 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to Etripator

discovery
辅助Android开发者在多模块工程间跨模块获取接口(或抽象类)的实现类的开源库,可实现模块的顺序初始化、业务的动态组合等实现。基于AGP和ASM开发。
Stars: ✭ 46 (+187.5%)
Mutual labels:  asm
ICE
ICE Compiler for the TI-84 Plus CE
Stars: ✭ 12 (-25%)
Mutual labels:  asm
pyevmasm
Ethereum Virtual Machine (EVM) disassembler and assembler
Stars: ✭ 206 (+1187.5%)
Mutual labels:  dissassembler
HuDK
ASM and C open source software development kit for the NEC PC Engine
Stars: ✭ 27 (+68.75%)
Mutual labels:  pc-engine
z80-sample-program
This is a small Z80 assembler program that just puts some colored lines on the ZX Spectrum's screen. The intention is to use this as a kind of tutorial for DeZog (Z80 debugger).
Stars: ✭ 14 (-12.5%)
Mutual labels:  asm
c8c
The chip8 compiler, assembler, and virtual machine
Stars: ✭ 110 (+587.5%)
Mutual labels:  asm
dcc
Direct/Interactive C Compiler
Stars: ✭ 18 (+12.5%)
Mutual labels:  asm
BlueRetro
Multiplayer Bluetooth controllers adapter for retro video game consoles
Stars: ✭ 520 (+3150%)
Mutual labels:  pc-engine
arTIfiCE
arTIfiCE is a jailbreak for TI CE calculators with OS 5.5 and 5.6. It brings back ASM programs and games.
Stars: ✭ 60 (+275%)
Mutual labels:  asm
Shockky
Shockwave File Disassember
Stars: ✭ 41 (+156.25%)
Mutual labels:  dissassembler
z80count
A tool to annotate Z80 assembler with cycle counts
Stars: ✭ 28 (+75%)
Mutual labels:  asm
cmake-nasm-test
Building a nasm hello world app with cmake
Stars: ✭ 18 (+12.5%)
Mutual labels:  asm
CopyToAsm-Plugin-x86
CopyToAsm (x86) - A Plugin For x64dbg
Stars: ✭ 23 (+43.75%)
Mutual labels:  asm
ArvernOS
💾 A minimal, experimental and "toy" monolithic kernel to learn about OS development // Work In Progress
Stars: ✭ 313 (+1856.25%)
Mutual labels:  asm
creating-controls-in-assembler
Gitbook: https://mrfearless.gitbooks.io/creating-controls-in-assembler
Stars: ✭ 20 (+25%)
Mutual labels:  asm
512-byte-vm
A VM image in 512 bytes. Yes, you read it right.
Stars: ✭ 29 (+81.25%)
Mutual labels:  asm
asm-inline
Inline raw ASM instructions in Java
Stars: ✭ 23 (+43.75%)
Mutual labels:  asm
asm
🏃 An x86-64 assembler written in Go.
Stars: ✭ 76 (+375%)
Mutual labels:  asm
cortexm-AES
high performance AES implementations optimized for cortex-m microcontrollers
Stars: ✭ 18 (+12.5%)
Mutual labels:  asm
asmdot
[Unstable] Fast, zero-copy and lightweight (Arm | Mips | x86) assembler in (C | C++ | C# | Go | Haskell | Javascript | Nim | OCaml | Python | Rust).
Stars: ✭ 23 (+43.75%)
Mutual labels:  asm

Etripator : a PC Engine disassembler

Github action Status AppVeyor Build status Coverity Scan Build Status

Examples

Usage

etripator [options] <cfg> <in>

The options are :

  • --irq-detect or -i : automatically detect and extract irq vectors when disassembling a ROM, or extract opening code and gfx from CDROM IPL data.
  • --cd or -c : cdrom image disassembly. Irq detection and rom header jump are not performed.
  • --help or -h : displays help.
  • --out or -o < file > : main asm file containing includes for all sections as long the irq vector table if the irq-detect option is enabled.
  • --labels or -l < file > : labels definition filename.
  • --labels-out : extracted labels output filename. Otherwise the labels will be written to .YYMMDDhhmmss.lbl.\n"
  • cfg : configuration file. It is optional if irq detection is enabled.
  • in : binary to be disassembled (ROM or CDROM track).

Configuration file format

The configuration file is a standard JSON file. The supported fields are :

  • filename (mandatory) : name of the output file. If multiple sections have the same output filename, their output will be appended to that file. On the other hand, note that the output file will be overwritten at each session.

  • type (mandatory) : values are code or data.

    • code indicates that the section will be disassembled and output as asm code.
    • data means that the section contains data, but it will be output as code directives (.db or .dw) or binary according to the data configuration.
  • page (mandatory) : memory page of the current section. It will be used to compute the file offset of the section if the offset field is missing.

  • logical (mandatory) : logical address. Just like page', it will be used to compute file offset if there's no offset field.

  • offset : input file offset. This field is mandatory for CD-ROM disassembly.

  • size : section size. For code section, a zero (or missing size) means that the disassembly will stop when a RTS or RTI instruction is found. This field is mandatory for data sections. and CD-ROM disassembly.

  • id : section id. If this option is set, all the label will be postfixed with this value. Otherwise the section index will be used.

  • mpr : an array containing the page value for each memory page register.

  • data : an object with 2 entries :

    • type : binary, hex or string.
    • element_size (default value: 1) : element size in bytes. The only supported values are 1 or 2.
    • elements_per_line (default value: 16) : number of elements per line.
  • description (optional): description as a string or an array of strings for multiline description.

There must be only one occurence of each field per section.

Example:

{
    "cdbios_functions": {
        "filename": "syscard.asm",
        "type": "code",
        "page": "0",
        "logical" : "e000",
        "size": "505",
        "mpr": ["ff", "f8", 0, 0, 0, 0, 0, 0 ],
        "description": "CDROM Bios functions"
    },
    "ex_colorcmd.impl": {
        "filename": "syscard.asm",
        "type": "code",
        "page": "0",
        "logical" : "e509",
        "size": "ce",
        "mpr": ["ff", "f8", 0, 0, 0, 0, 0, 0 ]
    },
    "irq_vectors": {
        "filename": "syscard.asm",
        "type": "data",
        "page": "0",
        "logical": "fff6",
        "size": "a",
        "mpr": ["ff", "f8", 0, 0, 0, 0, 0, 0 ],
        "data": { "type": "hex", "element_size": 2, "elements_per_line": 1 }
    }

}

Labels definition file format

The labels definition file is a standard JSON file containing an array of labels. Each entry is an object containing the following fields:

  • name: label name.
  • logical : logical address of the label in hexadecimal.
  • page : physical page, i.e. the value of the mpr of the logical address.
  • description (optional) : description (as a string or as an array of strings).

Example:

[
    { "name":"cd_reset", "logical":"e22a", "page":"00", "description": [
        "Reset CD drive",
        "input: none",
        "output: A - $00: OK",
        "            sub error code"
    ]},
    { "name":"irq_2", "logical":"eaa3", "page":"00"},
    { "name":"irq_1", "logical":"eba5", "page":"00"},
    { "name":"irq_timer", "logical":"ea9c", "page":"00"},
    { "name":"irq_nmi", "logical":"ea9b", "page":"00"},
    { "name":"irq_reset", "logical":"eab3", "page":"00"},
    { "name":"main", "logical":"f8a4", "page":"00"}
]

Build

Etripator uses CMake as its build system. Theorically you can build Etripator for any platform supported by CMake. Here are the build step:

Configuration

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release

Build

cmake --build . --config Release

Authors

Vincent "MooZ" Cruz

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].