GitHub - lalitshankarch/rvcore: A tiny RISC-V emulator that runs DOOM

1 min read Original article ↗

Output

rvcore is a RISC-V emulator that serves as a minimal environment capable of running DOOM. It implements the RV32IM ISA except for the FENCE and EBREAK instructions, which are currently stubbed.

Milestones

  • Run flat binaries written in assembly

  • Run flat binaries written in C

  • Load ELF binaries (binaries with a single PT_LOAD segment work)

  • Implement the newlib stubs needed to run DOOM

  • Get DOOM to boot

  • Make DOOM playable

  • Implement the M extension

  • Implement threaded dispatch

Build instructions

  1. To build, CMake and GCC/Clang is required (for Windows, MSYS2 with mingw-w64-ucrt-x86_64-toolchain or Cygwin is needed)

  2. Dependencies (SDL3): libsdl3-dev / sdl3-devel / sdl3

  3. Run

        mkdir build
        cmake -B build -DCMAKE_BUILD_TYPE=Release
        cd build
        cmake --build .
    

Build instructions for doomgeneric

  1. Clone https://github.com/lalitshankarch/doomgeneric
  2. riscv64-unknown-elf-gcc or the riscv64-gnu-toolchain configured with ./configure --with-multilib-generator="rv32im-ilp32--" must be installed
  3. Navigate to doomgeneric and run make