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_LOADsegment work) -
Implement the
newlibstubs needed to run DOOM -
Get DOOM to boot
-
Make DOOM playable
-
Implement the M extension
Build instructions
-
To build, CMake and GCC/Clang is required (for Windows, MSYS2 with
mingw-w64-ucrt-x86_64-toolchainor Cygwin is needed) -
Dependencies (SDL3):
libsdl3-dev/sdl3-devel/sdl3 -
Run
mkdir build cmake -B build -DCMAKE_BUILD_TYPE=Release cd build cmake --build .
Build instructions for doomgeneric
- Clone https://github.com/lalitshankarch/doomgeneric
riscv64-unknown-elf-gccor theriscv64-gnu-toolchainconfigured with./configure --with-multilib-generator="rv32im-ilp32--"must be installed- Navigate to
doomgenericand runmake
Running other programs
Navigate to the examples directory to see how to run simple C programs on rvcore. Only a few essential newlib stubs are implemented.
To implement a new stub, first modify stubs.h and then add the appropriate handler in cpu.cpp.
