GEMU is an emulator for a custom designed CPU - the Gravy 16, also complete with a mini language to produce programs for it! I made it to learn and improve my c++ skills as I was quite new to the language while writing it. I also made it to learn and undertsand key concepts of low level computing.
- Read binary/hexadecimal values from a .txt file and store in ROM
- FDE cycle
- Custom ISA
- Mini programming language based on assembly
- Graphics using a framebuffer and raylib window
Before using GEMU, ensure that Raylib is installed and correctly configured on your system.
Create your program in GASM (Gravy Assembly) and save it with the .gasm extension.
Example: example.gasm
For information about the GASM language and instruction set, see: docs/GASM.txt
Store all source files in the programs/ directory.
Run the assembler: python GASM/compiler.py
When prompted:
- Enter the name of your source file (e.g.
example.gasm) - Enter a name for the output ROM
The compiled ROM will be saved in the roms/ directory.
Compile: src/GEMU.cpp using your preferred C++ compiler and Raylib installation.
Run the emulator executable. When prompted, enter the path to the ROM you wish to load.
Example: roms/example.rom
When GEMU starts, you can enable verbose mode. Verbose mode displays information about each instruction as it is executed, including the current cycle, instruction name, and accumulator value.
This has been purposely slowed down. The emulator is much faster

