derekdai / chip8

Yet Another Chip8 Interpreter Implementation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Download source code

$ git clone git@github.com:derekdai/chip8.git

Install dependencies (libsdl2-dev and systemtap-sdt-dev are optional)

$ apt-get install -y \
  build-essential \
  meson \
  libsdl2-dev \
  systemtap-sdt-dev

Build with verbose log messages and enable trace points

$ cd chip8
$ meson build . -Dlog-level=127 -Denable-dtrace=true
$ meson compile -C build

Run nop example

$ build/examples/nop

Show IBM logo

$ build/examples/ibm-logo

Run arbitrary .ch8 images, press ESC to stop

$ build/src/chip8 images/IBM\ Logo.ch8

To measure time of every single steps with bpftrace, run this command in a terminal

$ sudo bpftrace -e '
  usdt:build/src/libchip8.so:exec_begin {@begin = nsecs;}
  usdt:build/src/libchip8.so:exec_end {printf("%dus\n", (nsecs - @begin) / 1000);}'

Then run chip8 command in another terminal

$ build/src/chip8 images/IBM\ Logo.ch8 30

Key mapping (not configurable yet)

      Chip8            PC Keyboard
+---------------+   +---------------+
| 1 | 2 | 3 | C |   | 1 | 2 | 3 | 4 |
+---+---+---+---+   +---+---+---+---+
| 4 | 5 | 6 | D | > | Q | W | E | R |
+---+---+---+---+   +---+---+---+---+
| 7 | 8 | 9 | E |   | A | S | D | F |
+---+---+---+---+   +---+---+---+---+
| A | 0 | B | F |   | Z | X | C | V |
+---------------+   +---------------+

About

Yet Another Chip8 Interpreter Implementation


Languages

Language:C 95.3%Language:Meson 4.3%Language:DTrace 0.4%