Files
libretro/emulators/ruffle.yml
T
Abdessamad Derraz ceaca2bf1d chore: record what each platform installs
Each platform's own packages were read at the revision our data pins, for every emulator and core it ships: Batocera, Recalbox, RetroPie, ROCKNIX, Lakka, RetroDECK, RetroBat and EmuDeck. Files a package installs where the emulator reads them are recorded with installed_on, and files a release bundles but a package leaves out with not_bundled_on, so each platform's pack brings what its users lack and nothing they already have. The standalone profiles never checked before were held against their releases the same way. Batocera's imame4all is the mame2000 core. The primary neogeo.zip was a 7.7 KB placeholder no platform pins and no pack served: removed, the real dumps stay in .variants.
2026-10-20 07:17:05 +02:00

170 lines
8.2 KiB
YAML

emulator: ruffle
type: standalone
core_classification: game_engine
source: "https://github.com/ruffle-rs/ruffle"
upstream: "https://github.com/ruffle-rs/ruffle"
profiled_date: "2026-09-17"
source_commit: "ed55e72394d21d7784b0a914fd4525608c6a5661"
core_version: "0.6.0"
display_name: "Adobe Flash (Ruffle)"
cores:
- ruffle
systems:
- flash
mode: standalone
notes: |
Flash Player and Adobe AIR runtime written in Rust, playing SWF files of any
ActionScript version, as a desktop binary or as a WebAssembly browser build.
Versioned releases sit next to the nightlies: Batocera 43.1 compiles the
nightly-2026-01-31 tag and installs ruffle_desktop as ruffle, RetroDECK pulls
the rs.ruffle.Ruffle Flathub build. ES-DE runs it as `ruffle --fullscreen
<rom>`, Batocera as `ruffle <rom>`, RetroBat as `ruffle.exe --graphics
<renderer> --force-align -q <quality> <rom>`, RetroDECK as `ruffle --graphics
vulkan --config /var/data/ruffle --save-directory <saves>/ruffle <rom>`. The
ActionScript class library is compiled by build_playerglobal into
playerglobal_avm1.swf and playerglobal_avm2.swf and linked into the binary
from OUT_DIR (core/src/avm1/globals.rs:88, core/src/avm2/globals.rs:549), so
startup reads nothing. Locale texts, wgsl shaders, the window icon and the
OpenH264 license are embedded the same way (desktop/src/gui/locale.rs:7-12,
desktop/src/app.rs:464, render/wgpu/src/shaders.rs:30-95,
desktop/src/gui/movie.rs:44,
desktop/src/gui/dialogs/preferences_dialog.rs:517).
H.264 video is the one external dependency. external_video is a default
feature and pulls ruffle_video_external with openh264
(desktop/Cargo.toml:27,84,92), and enable_openh264 defaults to true
(desktop/src/preferences.rs:291,316). OpenH264Codec::load first dlopens the
system sonames libopenh264.so.7, libopenh264.so.2.4.1 and libopenh264.so on
Linux, then falls back to <cache>/ruffle/video/ and fetches the Cisco binary
from ciscobinary.openh264.org bz2-compressed into it
(video/external/src/decoder/openh264.rs:53-56,109-133,173-191,
desktop/src/player.rs:234-241). Whether the library was already there or was
just downloaded, its SHA-256 is checked before loading and the size is read
only to format the mismatch message
(video/external/src/decoder/openh264.rs:135-146), and WelsGetCodecVersion must
answer 2.4.1 exactly (video/external/src/decoder/openh264.rs:46,153-166). The
cache root comes from dirs::cache_dir(), ~/.cache/ruffle by default, and
--cache-directory moves it (desktop/src/cli.rs:31-35,148). Without the library
the player still starts: ExternalVideoBackend wraps SoftwareVideoBackend, so
H.263, Screen Video and VP6 keep decoding and only H.264 streams fail
(video/external/src/backend.rs:41,51-69,73-80).
Text uses system fonts. fontdb::Database::load_system_fonts() fills the
database at startup (desktop/src/app.rs:433-434), and both the Flash device
fonts and the egui menu bar resolve family names against it and take whatever
face the host answers with (desktop/src/backends/ui.rs:321-360,
desktop/src/gui/controller.rs:741-787). The face is memory-mapped and parsed
by Ruffle's own rasterizer unless preferences.toml sets device_font_renderer
to freetype, which routes Linux builds through FreetypeFontRenderer instead;
the freetype default feature only compiles that branch, the preference
selects it (desktop/src/backends/ui.rs:190-192,443-487,489-519,
desktop/src/preferences/read.rs:74-75, desktop/Cargo.toml:84). The families
asked for are Times New Roman, Arial, Courier New and their metric-compatible
substitutes, plus the CJK, Hebrew, Arabic and Thai faces
(desktop/src/player.rs:361-414, desktop/src/gui/controller.rs:620-694), and
on Unix fontconfig sorts the fallback chain
(desktop/src/backends/ui.rs:363-376,536-628). No name, path, size or hash is
fixed anywhere. The compiled-in Noto Sans subset sits behind the default_font
feature, which the web and exporter crates enable and the desktop build does
not (core/src/player.rs:84-85, core/Cargo.toml:82,95, web/Cargo.toml:63-65,
exporter/Cargo.toml:16, desktop/Cargo.toml:23), so on the desktop an
unmatched family leaves the run without that face rather than falling back
to a bundled one.
Files the player writes rather than expects: preferences.toml, bookmarks.toml
and recents.toml under --config, each defaulted when absent
(desktop/src/preferences.rs:54-96), .sol SharedObjects under --save-directory
(frontend-utils/src/backends/storage.rs:31-60, desktop/src/cli.rs:137-138),
and the log file under <cache>/ruffle/log (desktop/src/main.rs:165-176).
ruffle-bundle.toml is the manifest inside a .ruf bundle, which is content
alongside the .swf rather than a runtime input
(frontend-utils/src/bundle/info.rs:11, frontend-utils/src/bundle.rs:42-53).
mms.cfg is not implemented, the name appears only in an AVM2 error string
(core/src/avm2/error_messages.rs:237).
files:
# -- OpenH264 2.4.1 decoder, one build per OS and architecture --
# The player fetches the build for its host into <cache>/ruffle/video/ the
# first time a movie loads, with no prompt, so none needs to be supplied.
- name: libopenh264-2.4.1-linux64.7.so
path: "video/libopenh264-2.4.1-linux64.7.so"
system: flash
required: false
bundled: true
description: "OpenH264 2.4.1 decoder library, Linux x86_64"
sha256: "1392d21466bc638e68151b716d5b2086d54cd812afd43253f1adb5b6e0185f51"
validation: [sha256]
source_ref: "video/external/src/decoder/openh264.rs:65-68, 104-146, 173-191"
- name: libopenh264-2.4.1-linux-arm64.7.so
path: "video/libopenh264-2.4.1-linux-arm64.7.so"
system: flash
required: false
bundled: true
description: "OpenH264 2.4.1 decoder library, Linux aarch64"
sha256: "e8ea7e42855ceb4a90e7bd0b3abeba0c58b5f97166e8b0a30eefd58e099557a4"
validation: [sha256]
source_ref: "video/external/src/decoder/openh264.rs:73-76, 104-146, 173-191"
- name: libopenh264-2.4.1-linux-arm.7.so
path: "video/libopenh264-2.4.1-linux-arm.7.so"
system: flash
required: false
bundled: true
description: "OpenH264 2.4.1 decoder library, Linux arm"
sha256: "fd1dfb27d30bb72e903c9d2b4c650104a4369d2e7ffe8a4a533e8db2e7e9b19e"
validation: [sha256]
source_ref: "video/external/src/decoder/openh264.rs:69-72, 104-146, 173-191"
- name: libopenh264-2.4.1-linux32.7.so
path: "video/libopenh264-2.4.1-linux32.7.so"
system: flash
required: false
bundled: true
description: "OpenH264 2.4.1 decoder library, Linux x86"
sha256: "b7cf0e407f99056d90cbf62787a34820a7595b2129b165319d50766e00a66704"
validation: [sha256]
source_ref: "video/external/src/decoder/openh264.rs:61-64, 104-146, 173-191"
- name: libopenh264-2.4.1-mac-arm64.dylib
path: "video/libopenh264-2.4.1-mac-arm64.dylib"
system: flash
required: false
bundled: true
description: "OpenH264 2.4.1 decoder library, macOS aarch64"
sha256: "213ff93831cfa3dd6d7ad0c3a3403a6ceedf4ac1341e1278b5b869d42fefb496"
validation: [sha256]
source_ref: "video/external/src/decoder/openh264.rs:81-84, 104-146, 173-191"
- name: libopenh264-2.4.1-mac-x64.dylib
path: "video/libopenh264-2.4.1-mac-x64.dylib"
system: flash
required: false
bundled: true
description: "OpenH264 2.4.1 decoder library, macOS x86_64"
sha256: "cc0ba518a63791c37571f3c851f0aa03a4fbda5410acc214ecd4f24f8d1c478e"
validation: [sha256]
source_ref: "video/external/src/decoder/openh264.rs:77-80, 104-146, 173-191"
- name: openh264-2.4.1-win64.dll
path: "video/openh264-2.4.1-win64.dll"
system: flash
required: false
bundled: true
description: "OpenH264 2.4.1 decoder library, Windows x86_64"
sha256: "081b0c081480d177cbfddfbc90b1613640e702f875897b30d8de195cde73dd34"
validation: [sha256]
source_ref: "video/external/src/decoder/openh264.rs:89-92, 104-146, 173-191"
- name: openh264-2.4.1-win32.dll
path: "video/openh264-2.4.1-win32.dll"
system: flash
required: false
bundled: true
description: "OpenH264 2.4.1 decoder library, Windows x86"
sha256: "83270149640469c994a62cc32a6d8c0413cd7b802b7f1f2f532159f5bdc1cedd"
validation: [sha256]
source_ref: "video/external/src/decoder/openh264.rs:85-88, 104-146, 173-191"