ruffle - RetroBIOS¶
Technical 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.
Distribution is by nightly build: Batocera 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:89, core/src/avm2/globals.rs:546), 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:449, render/wgpu/src/shaders.rs:28-76).
H.264 video is the one external dependency. external_video is a default
feature and pulls ruffle_video_external with openh264
(desktop/Cargo.toml:26,83,90), and enable_openh264 defaults to true
(desktop/src/preferences.rs:283,307). OpenH264Codec::load first dlopens the
system sonames libopenh264.so.7, libopenh264.so.2.4.1 and libopenh264.so on
Linux, then falls back to
Text uses system fonts. fontdb::Database::load_system_fonts() fills the database at startup (desktop/src/app.rs:418-419), and both the Flash device fonts and the egui menu bar resolve family names against it, mmapping whatever face the host answers with (desktop/src/backends/ui.rs:281-314,395-421, desktop/src/gui/controller.rs:690-733). 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-412, desktop/src/gui/controller.rs:569-641), and on Unix fontconfig sorts the fallback chain (desktop/src/backends/ui.rs:318-329,460-472). No name, path, size or hash is fixed anywhere. The compiled-in Noto Sans subset sits behind the default_font feature, which the desktop build does not enable (core/src/player.rs:82-83, core/Cargo.toml:82,96, desktop/Cargo.toml:22), so 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:53-95), .sol SharedObjects under --save-directory (frontend-utils/src/backends/storage.rs:31-60), and the log file (desktop/src/main.rs:156-166). 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).
8 files | 0 required, 8 optional | 8 in repo, 0 missing
libopenh264-2.4.1-linux64.7.so optional in repo
OpenH264 2.4.1 decoder library, Linux x86_64
- Path:
video/libopenh264-2.4.1-linux64.7.so - System: flash
- SHA256:
1392d21466bc... - Validation: sha256
- Source:
video/external/src/decoder/openh264.rs:65-68,video/external/src/decoder/openh264.rs:104-146,video/external/src/decoder/openh264.rs:173-191
libopenh264-2.4.1-linux-arm64.7.so optional in repo
OpenH264 2.4.1 decoder library, Linux aarch64
- Path:
video/libopenh264-2.4.1-linux-arm64.7.so - System: flash
- SHA256:
e8ea7e42855c... - Validation: sha256
- Source:
video/external/src/decoder/openh264.rs:73-76,video/external/src/decoder/openh264.rs:104-146,video/external/src/decoder/openh264.rs:173-191
libopenh264-2.4.1-linux-arm.7.so optional in repo
OpenH264 2.4.1 decoder library, Linux arm
- Path:
video/libopenh264-2.4.1-linux-arm.7.so - System: flash
- SHA256:
fd1dfb27d30b... - Validation: sha256
- Source:
video/external/src/decoder/openh264.rs:69-72,video/external/src/decoder/openh264.rs:104-146,video/external/src/decoder/openh264.rs:173-191
libopenh264-2.4.1-linux32.7.so optional in repo
OpenH264 2.4.1 decoder library, Linux x86
- Path:
video/libopenh264-2.4.1-linux32.7.so - System: flash
- SHA256:
b7cf0e407f99... - Validation: sha256
- Source:
video/external/src/decoder/openh264.rs:61-64,video/external/src/decoder/openh264.rs:104-146,video/external/src/decoder/openh264.rs:173-191
libopenh264-2.4.1-mac-arm64.dylib optional in repo
OpenH264 2.4.1 decoder library, macOS aarch64
- Path:
video/libopenh264-2.4.1-mac-arm64.dylib - System: flash
- SHA256:
213ff93831cf... - Validation: sha256
- Source:
video/external/src/decoder/openh264.rs:81-84,video/external/src/decoder/openh264.rs:104-146,video/external/src/decoder/openh264.rs:173-191
libopenh264-2.4.1-mac-x64.dylib optional in repo
OpenH264 2.4.1 decoder library, macOS x86_64
- Path:
video/libopenh264-2.4.1-mac-x64.dylib - System: flash
- SHA256:
cc0ba518a637... - Validation: sha256
- Source:
video/external/src/decoder/openh264.rs:77-80,video/external/src/decoder/openh264.rs:104-146,video/external/src/decoder/openh264.rs:173-191
openh264-2.4.1-win64.dll optional in repo
OpenH264 2.4.1 decoder library, Windows x86_64
- Path:
video/openh264-2.4.1-win64.dll - System: flash
- SHA256:
081b0c081480... - Validation: sha256
- Source:
video/external/src/decoder/openh264.rs:89-92,video/external/src/decoder/openh264.rs:104-146,video/external/src/decoder/openh264.rs:173-191
openh264-2.4.1-win32.dll optional in repo
OpenH264 2.4.1 decoder library, Windows x86
- Path:
video/openh264-2.4.1-win32.dll - System: flash
- SHA256:
832701496404... - Validation: sha256
- Source:
video/external/src/decoder/openh264.rs:85-88,video/external/src/decoder/openh264.rs:104-146,video/external/src/decoder/openh264.rs:173-191
Generated on 2026-08-23T16:12:06Z