Files
libretro/emulators/rvvm.yml
T
Abdessamad Derraz e7aa9e870b fix: state libretro core versions from their code
Each libretro profile records version_basis and core_version is read
there at its pin. snes9x states 1.63 in snes9x.h, nestopia 2.0.0, mgba
0.11.0, vice 3.10, atari800's libretro tree 7.0.0. Cores whose build
takes its version from git carry the nearest tag in describe form
(flycast v2.7-90-ge88b0ce, ppsspp, duckstation, gearcoleco), placeholders
copied from .info files (Git, SVN) are replaced by the code's statement,
and a code that states none is null with kind none.
2026-10-27 19:21:27 +01:00

85 lines
3.3 KiB
YAML

emulator: RVVM
type: libretro
core_classification: official_port
source: "https://github.com/LekKit/RVVM"
upstream: "https://github.com/LekKit/RVVM"
profiled_date: "2026-03-25"
source_commit: "343f6784c8922446083c5d5bd111d7c1eb8590eb"
core_version: "0.7"
version_basis:
kind: file
path: "CMakeLists.txt"
pattern: '^set\(RVVM_VERSION ([0-9.]+)\)'
display_name: "RVVM"
cores: [rvvm]
systems: [riscv]
# RVVM emulates a RISC-V machine (rv64imafdcb or rv32ima). The libretro core
# loads a .rvvm plain-text config file specifying bootrom, kernel, nvme drives,
# memory, CPU mode, cmdline, and framebuffer resolution.
#
# The core does NOT use the RetroArch system directory. All firmware paths are
# specified in the .rvvm config file and resolved relative to its directory.
# The core chdir()s to the .rvvm file's parent before initializing the VM.
#
# The .rvvm config format (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
#
# The libretro binding uses an older RVVM API (rvvm_load_bootrom, 4-param
# rvvm_create_machine) that has been renamed in the current upstream
# (rvvm_load_firmware, 3-param rvvm_create_machine). The binding may not
# compile against RVVM HEAD without updates.
# Source references:
# libretro binding: src/bindings/libretro/libretro.c
# config parsing: src/bindings/libretro/libretro.c:332-421 (retro_load_game)
# VM init + loading: src/bindings/libretro/libretro.c:288-330 (vm_init)
# firmware loading: src/core/rvvm.c:629-636 (rvvm_load_firmware)
# kernel loading: src/core/rvvm.c:638-647 (rvvm_load_kernel)
# FDT loading: src/core/rvvm.c:649-656 (rvvm_load_fdt, standalone only)
# standalone CLI: src/main.c:211-280 (rvvm_cli_configure)
files:
- name: "fw_payload.bin"
path: "rvvm/fw_payload.bin"
required: true
source_ref: "src/bindings/libretro/libretro.c:309-314, src/core/rvvm.c:629-636"
note: >
M-mode firmware loaded at 0x80000000. Typically OpenSBI with U-Boot
payload (fw_payload.bin) or standalone (fw_jump.bin). Referenced by
the bootrom= key in the .rvvm config.
- name: "Image"
path: "rvvm/Image"
required: false
source_ref: "src/bindings/libretro/libretro.c:316-318, src/core/rvvm.c:638-646"
note: >
S-mode kernel payload loaded at offset 0x200000 (rv64) or 0x400000
(rv32) from RAM base. Only needed with fw_jump.bin as bootrom.
Referenced by the kernel= key in the .rvvm config.
- name: "machine.dtb"
path: "rvvm/machine.dtb"
required: false
mode: standalone
source_ref: "src/main.c:220, src/core/rvvm.c:649-656"
note: >
Custom Flattened Device Tree. The core auto-generates a DTB based on
machine configuration. The libretro binding does not parse a dtb= key
in the .rvvm config, so this is only usable via the standalone CLI
(-dtb flag).
notes:
firmware_sources: >
OpenSBI: https://github.com/riscv-software-src/opensbi/releases.
Pre-built images for RVVM: https://github.com/LekKit/RVVM/wiki/Running
info_firmware_count: >
.info declares 0 firmware. The core loads firmware via
user-specified paths in the .rvvm config, not from system_dir.