Files
libretro/emulators/rvvm.yml
T
Abdessamad Derraz 11da070128 chore: recale the profile refs onto their pins
Upstream moved under 145 profiles: 679 refs shifted and 452 followed a
renamed file, against 6,483 that still anchor where they were written.
The recale rewrites the located ranges only, keeping the annotations and
the sentences that carry them, and 106 pins advance in the same commit
because refs and source_commit name one revision or the profile
describes two at once.

Nothing here was guessed. The 183 refs that are CHANGED, GONE or
AMBIGUOUS are untouched, and the 57 profiles holding them keep their old
pin until someone reads the diff: profile_sync refuses to recale a
profile while any of its refs needs a re-read. trident kept its pin too,
its annotated ref being one the writer will not rewrite.
2026-09-04 14:41:44 +02:00

81 lines
3.1 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: "7195d47431b1f9643a61a306bed6650571e6ecca"
core_version: "0.6-git"
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: libretro.c:332-421 (retro_load_game)
# VM init + loading: libretro.c:288-330 (vm_init)
# firmware loading: src/rvvm.c:621-628 (rvvm_load_firmware)
# kernel loading: src/rvvm.c:630-638 (rvvm_load_kernel)
# FDT loading: src/rvvm.c:641-648 (rvvm_load_fdt, standalone only)
# standalone CLI: main.c:213-282 (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:625-632"
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:634-642"
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:214, src/core/rvvm.c:645-652"
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. Correct: the core loads firmware via
user-specified paths in the .rvvm config, not from system_dir.