Hi everyone!

I’d like to share NConsole, a homemade 8-bit game console I designed from scratch and built inside Godot 4.7. It has its own CPU, instruction set, video and audio hardware, cartridge format, assembler, and debugger. No existing console is being emulated here — this is an entirely custom machine.
The console
-
N8 CPU: 8-bit processor with A/X/Y registers, a 64 KB address space, around 120 opcodes, flags, a stack, subroutines, and a VBlank interrupt.
-
Graphics: 160×120 resolution, 16-color palette, tile-based backgrounds, scrolling, sprites, and fixed status-bar rows.
-
Audio: four channels — two pulse waves, triangle, and noise — with note lengths and volume decay. Audio register writes are synchronized to CPU cycles.
-
Cartridges: a custom
.nc8format with banked program ROM and tile sets.
Development tools
The project includes a two-pass assembler with labels, local labels, expressions, and bank support. Tiles can be defined directly in assembly source.
There’s also a built-in machine-code monitor with breakpoints, memory write watches, single-stepping, execution tracing, and a label-aware disassembler. Press F2 while a game is running to open it.
Games
Both games are written entirely in N8 assembly:
-
Snake
-
Gem Hopper — a side-scrolling platformer featuring two levels stored in separate ROM banks, stompable beetles, gems, and a soundtrack.
Under the hood
The emulated hardware — CPU, video, audio, memory bus, and cartridge system — is implemented as a native C++ GDExtension. The assembler, debugger, 2D display, and interactive 3D console model are built in GDScript.
The project currently has 296 automated checks, including end-to-end playthroughs of both games. GitHub Actions builds for Linux, Windows, and macOS.
You can integrate the console into your own Godot project or run the included games using the provided 2D screen or interactive 3D model.
It started as a spin-off of a larger project: a Unix-like OS simulation for a hacker game. I wanted to see how far I could take the idea of a proper emulated machine inside Godot — and it grew into a project of its own.
Repository (MIT license): GitHub - uxerror/NConsole · GitHub
I’m happy to hear feedback, ideas, and suggestions, especially from people who have worked with real 8-bit hardware. A tile and sprite editor is next on my list!
