A game runs native. The Forge lane's chip8.sg emulator core executed a real ROM and rendered its framebuffer — and it did it as a native cc0-compiled binary, no VM, no interpreter, no Python, and no emulator layer underneath it.
LD I + DRW pair drawing an 'F' sprite. 64×32 native display, upscaled 8× to 512×256.What's actually running
The program is 20 bytes, hand-authored in CHIP-8 bytecode — the same two opcodes any CHIP-8 hello-world leans on: LD I, addr to point the index register at the sprite data, then DRW Vx, Vy, 8 to blit an 8-row sprite onto the display. Feed those bytes to the chip8.sg core and it does what a real emulator does: decodes the opcodes, updates its registers and memory, and writes pixels into a framebuffer. The 'F' you see above is that framebuffer, straight out of the core.
The part worth pausing on is how it runs. This isn't a CHIP-8 interpreter hosted inside another emulator, or a Python script pretending to be a console. It's a native binary — the Sigil source compiled by cc0 to real machine code — standing on the new mem_map keystone (a fixed anonymous read/write mapping cc0 landed this week), which is what lets the emulator carve out and address its own guest memory the way a native program would.
Why the keystone matters
An emulator is, at bottom, a program that manages another machine's memory. Until mem_map, that lower-level primitive wasn't available to compiled Sigil on the desktop, so the emulation track was gated. With it, the CHIP-8 core allocates its guest RAM, maps its display buffer, and runs — all in-process, all native. It's a small ROM, but it exercises the full path: bytecode in, machine state updated, pixels out, with nothing interpreted along the way.
Being honest about the milestone
This is a headless render proof: the core runs the ROM and we capture the resulting frame as an image. What it does not yet have is an on-screen window, live input, or audio — a person can't sit down and play it. Those are the next steps. But the hard part of "does the emulator core actually execute and render, natively?" is answered, and the answer is yes.
It also lands next to a milestone on the download side: Forge's v0.1 native desktop preview is now published for all three platforms — macOS (Apple Silicon), Linux x86-64, and Windows x86-64 — each a single cc0-compiled binary with a published SHA-256. Same story, same toolchain: written once in Sigil, compiled per platform, no runtime underneath.
Next up on the gaming lane: a windowed CHIP-8 core with keypad input and sound, then the same treatment for the heavier cores. The framebuffer works; now it needs a window to live in.