# RISC-V Emulator
A toy Golang RISC-V emulator that can play [DOOM](https://github.com/smunaut/doom_riscv)

For now it uses [smunaut](https://github.com/smunaut) [bootloader](https://github.com/smunaut/ice40-playground/tree/master/projects/riscv_doom) and [riscv_doom](https://github.com/smunaut/doom_riscv) from the ICE40 project.

But since there is no M extensions on this emulator, the `CFLAGS` in makefiles should be changed to use the non-M version

```makefile
CFLAGS=CFLAGS=-Wall -march=rv32i -mabi=ilp32 (...)
```

The emulator is made to be used headless synchronously or assyncronously and easy to make new peripherials for it. I still need to do some documentation but you can see the doom example at `cmd/ui`.

![DOOM](doom.jpg)

When starting the UI mode, the following keyboard keys controls the flow:

* `C` => Continue emulation
* `P` => Pause emulation
* `S` => Step instruction