Nicheloom visits: 57,933 all-time · 7,694 in the last 7 days

The opportunity tracker for new startups.

Today: 1,953 launches · Niche of the day: specialized calculation tools · See what launched today →

I built a RISC-V emulator that runs DOOM

Get picks like this daily. Today's launch numbers, the top launches, AI and tech news, and a daily opportunity pick, straight to your inbox.

Want to reach these readers? Sponsor an issue.

Demo: https://www.youtube.com/watch?v=f5uygzEmdLwHi HN,I built a RISC-V emulator that implements the RV32IM instruction set and a minimal syscall interface to run DOOM. A few weeks ago, I got my first output with a simple hello world assembly program.Since then I have been working tirelessly to get DOOM to run.I needed to figure out how to run C programs first, and came across newlib, which allows the underlying environment to implement the syscall stubs one by one until the programs run.I have also added ELF loading, but currently only a single `PT_LOAD` segment is supported.To port DOOM, I used doomgeneric, which was quite convenient to get working once the required stubs were in place.DOOM renders to a fixed area in memory (0x705FDD = VRAM_START): 0x7FFFFF +-------------------------------------+ | | | QUEUE_SIZE (32 bytes) | | | 0x7FFFDF +-------------------------------------+ <-- QUEUE_START 0x7FFFDE | QUEUE_READ_IDX | 0x7FFFDD | QUEUE_WRITE_IDX | +-------------------------------------+ | | | | | VRAM (1,024,000 bytes) | | | | | 0x705FDD +-------------------------------------+ <-- STACK_START | Stack | | | | | v | | | | ^ | | | | | Program data + Heap | | | 0x000000 +-------------------------------------+ I made a small linker script so that the entry point of a C program is at _start and virtual address is always 0. That kept the ELF loader code simple.Inputs are written to the queue by rvcore which are then intercepted by DOOM running inside it.

HN · launched May 3, 2026 · 50 upvotes (top 16%) · 0 views

Niche: software and system emulators · 114 launches, 4 in the last 7 days ▼ -56% · Explore this niche →

Category and tags

  • Horizontal
  • Dev tools
  • Developer
  • Not AI
  • Hobby / open-source project

Visit website ↗ Source listing ↗

Could you build this?

No Developing a functional RISC-V CPU emulator (RV32IM instruction set) capable of executing Doom requires detailed computer architecture knowledge, instruction decoding, memory virtualization, and OS syscall emulation.

What it would actually take: The engine requires an accurate RISC-V instruction decoder and ALU implementing RV32I and the 'M' extension (hardware multiplication/division), virtual memory and address translation, and an integrated system call emulation layer (POSIX open, read, write, mmap). It also needs a minimal frame buffer driver (e.g., using SDL2 or WebAssembly/Canvas) to handle Doom's video memory and input event loops. Expertise in CPU architectures, compiler ABIs, and emulator development is necessary.

Discussion

4 comments analyzed.

Competitors

Other products that read as similar to this one : 328 launches clear the similarity bar, closest 8 shown.

Attention rank: #67 of 329 (itself plus its competitors, highest first, normalized so YC and Product Hunt are compared fairly).

Launched 177 days after the earliest competitor.

The niche, labels, vibe code rating and competitor comparison on this page are analysis by Nicheloom. If you use them, please credit nicheloom.com. How you may use our data.