A Nintendo Gameboy emulator for Emacs. This is a work in progress! Just got Tetris starting up, not tested with anything else.
It currently runs a constant loop without delay.
To get out of this loop, use the common C-g command.
The display is drawn using unicode, by default it is set for dark theme. Use the unicode list below when you have a light theme installed in Emacs.
(setq eboy-display-unicode-list eboy-display-unicode-list-light-theme)It has frameskip enabled, by default set to 20.
I always wanted to learn how to a make an emulator and want learn how to write packages for Emacs. So here my first emulator and first emacs package.
Emacs :)
For now just M-x eval-buffer or M-x byte-compile-file the following files: eboy-macros.el, eboy-cpu.el and eboy.el.
Load a rom using the M-x eboy-load-rom command.
| Gameboy | Eboy |
|---|---|
| Start | Enter |
| Select | Space |
| B | D |
| A | S |
| down | k |
| up | i |
| left | j |
| right | l |
To continue a game after you pressed C-g, use the M-x eboy-run command.
Eboy related messages are written to the buffer *Eboy Messages*.
- special: Seems to hang, without giving an error
- interrupts: Passed
- op hl,sp: F8 F8 Failed
- op r,imm: C6 DE Failed
- op rp: Passed
- ld r,r: Passed
- jr,jp,call,ret,rst: Seems to hang, without giving an error
- misc instrs: Passed
- op r,r: List of failing opcodes 3F, 07, 17, 0F, CB 00, CB 01, CB 02, CB 03, CB 05, CB 07, Cb 08, CB 09, CB 0A, CB 0B, CB 0C, CB 0D, CB 0F, CB 10, CB 11, CB 12, CB 13, CB 14, CB 15, CB 17, CB 20, CB 21, CB 22, CB 23, CB 24, CB 25, CB 27,
- bit ops: Passed
- op a,(hl): List of failing opcodes CB 0E,CB 2E,CB 3E,CB 46,CB 4E,CB 56,CB 5E,CB 66,CB 6E,CB 76,CB 7E,CB 86,CB 8E,CB 96,CB 9E,CB A6,CB AE,CB B6,CB BE,CB C6,CB CE,CB D6,CB DE,CB E6,CB EE,CB F6,CB FE
The test roms are hosted at: https://github.com/retrio/gb-test-roms
