Files
libretro/emulators/rvvm.yml
Abdessamad Derraz ebb55a445b feat: re-profile 40 emulators, harden CI workflows
profile emulators pd777 through tic80, add frozen snapshots
(puae2021, snes9x2002/2005/2010, stella2014/2023).

CI: replace github-script with gh CLI, add test execution,
job-level permissions, propagate changed output, pin jsonschema.
2026-03-25 07:00:17 +01:00

80 lines
3.0 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"
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: rvvm.c:621-628 (rvvm_load_firmware)
# kernel loading: rvvm.c:630-638 (rvvm_load_kernel)
# FDT loading: 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: "libretro.c:309-314, rvvm.c:621-628"
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: "libretro.c:316-318, rvvm.c:630-638"
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: "main.c:230, rvvm.c:641-648"
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.