Files
libretro/emulators/rvvm.yml
Abdessamad Derraz 31501211de feat: add 10 emulator profiles (119-series batch 4)
bennugd (game engine, no BIOS), cruzes (puzzle game, no BIOS),
dice (discrete arcade, no BIOS), ishiiruka (Dolphin fork, same BIOS),
mkxp_z (RPG Maker, 3 RTP dirs), onscripter (VN engine, no BIOS),
qemu (55 firmware files! SeaBIOS/VGA/iPXE/OpenBIOS/OpenSBI),
rustation (PS1 Rust, 22 BIOS by SHA-256), rvvm (RISC-V, OpenSBI),
reminiscence (Flashback engine, game data only)

135 total profiles.
2026-03-18 05:20:05 +01:00

101 lines
4.3 KiB
YAML

emulator: RVVM
type: libretro
source: "https://github.com/LekKit/RVVM"
systems: [riscv]
# RVVM is a RISC-V virtual machine / emulator. The libretro core loads a
# ".rvvm" config file that specifies bootrom, kernel, nvme drives, memory,
# CPU mode (rv32/rv64), cmdline, and framebuffer resolution.
#
# The core itself does NOT bundle any firmware. Users must supply:
# 1. A bootrom (M-mode firmware): typically OpenSBI fw_payload.bin or fw_jump.bin
# 2. Optionally a kernel payload (S-mode): Linux Image, U-Boot, etc.
# 3. Optionally a custom DTB (the core auto-generates one if not provided)
#
# The .rvvm file is a plain-text key=value config parsed by retro_load_game():
# bootrom=/path/to/fw_payload.bin
# kernel=/path/to/Image
# nvme=/path/to/rootfs.img
# mem=512
# smp=2
# rv64
# cmdline=root=/dev/nvme0n1 rootflags=discard rw console=tty0
#
# Paths in the .rvvm file are resolved relative to the .rvvm file's directory
# (the core chdir()s there before vm_init). The bootrom is mandatory - the core
# shows "RVVM: No bootrom" if missing.
# Source references:
# libretro binding: src/bindings/libretro/libretro.c
# firmware loading: src/rvvm.c:rvvm_load_firmware()
# kernel loading: src/rvvm.c:rvvm_load_kernel() (offset 0x200000 rv64, 0x400000 rv32)
# FDT generation: src/rvvm.c:rvvm_init_fdt() (auto-generated if not provided)
# CLI help: src/main.c:rvvm_print_help()
files:
# -- OpenSBI firmware (required) --
# M-mode firmware loaded at RESET_PC (0x80000000). This is the first code
# executed by the virtual machine. The standard choice is OpenSBI with
# U-Boot as payload (fw_payload.bin) or OpenSBI standalone (fw_jump.bin).
# The core calls rvvm_load_bootrom() which maps to rvvm_load_firmware().
- name: "fw_payload.bin"
path: "rvvm/fw_payload.bin"
required: true
source_ref: "libretro.c:309-315, rvvm.c:621-628"
note: >
OpenSBI firmware with U-Boot payload. This is the M-mode bootrom
loaded at physical address 0x80000000. Without this file, the VM
cannot start. Common builds: opensbi fw_payload (includes U-Boot),
or fw_jump.bin (jumps to kernel directly). The file is referenced
by the bootrom= key in the .rvvm config file.
# -- Kernel image (optional) --
# S-mode kernel loaded at offset 0x200000 (rv64) or 0x400000 (rv32) from
# RAM base. Used with fw_jump.bin to boot Linux directly without U-Boot.
- name: "Image"
path: "rvvm/Image"
required: false
source_ref: "libretro.c:316-318, rvvm.c:630-638"
note: >
Linux kernel image or other S-mode payload. Loaded at a fixed offset
from RAM base (0x200000 for rv64, 0x400000 for rv32). Only needed
when using fw_jump.bin as bootrom. Referenced by the kernel= key
in the .rvvm config file.
# -- Device Tree Blob (optional) --
# Custom FDT passed to the guest. The core auto-generates a complete DTB
# with cpu topology, memory map, and all attached devices if not provided.
- name: "machine.dtb"
path: "rvvm/machine.dtb"
required: false
source_ref: "rvvm.c:641-648, main.c:230"
note: >
Custom Flattened Device Tree. The core generates a DTB automatically
based on the machine configuration (cpus, memory, devices), so this
is only needed for special setups. The FDT address is passed to the
firmware in register a1 at boot.
notes:
emulation_target: >
RVVM emulates a RISC-V machine with rv64imafdcb (or rv32ima) ISA,
SiFive PLIC interrupt controller, NVMe storage, RTL8169 networking,
framebuffer display, HID keyboard/mouse, UART, Goldfish RTC, and
PCI bus. It includes a tracing JIT with x86_64/ARM64/RISC-V backends.
firmware_sources: >
OpenSBI builds: https://github.com/riscv-software-src/opensbi/releases
Pre-built fw_payload.bin (OpenSBI + U-Boot) for RVVM:
https://github.com/LekKit/RVVM/wiki/Running
config_format: >
The .rvvm file is a plain-text key=value config. Supported keys:
bootrom, kernel, nvme (up to 4), mem (MB), smp, cmdline, rv64/rv32.
Default: rv64, 256 MB RAM, 1 core, 640x480 framebuffer.
libretro_info: >
Core name: rvvm_libretro. Extension: .rvvm. Experimental: yes.
No save states, no cheats, needs_fullpath=true.
The core does not use the RetroArch system directory for firmware -
all paths are specified in the .rvvm config file relative to its
own directory.