ArcadeFlashWeb - RetroBIOS¶
Technical notes
Qt 5.13 application that plays SWF files by hosting Adobe's Pepper Flash
runtime inside a QtWebEngine view. Windows only. ES-DE runs
ArcadeFlashWeb.exe -fullscreen -source:
The runtime is registered from the command line. main sets QTWEBENGINE_CHROMIUM_FLAGS to "--enable-pepper-testing --ppapi-flash-path=./pepflashplayer.dll" before QtWebEngine::initialize, so Chromium takes the plugin from that path. It is the one file resolved against the process working directory; everything else below hangs off applicationDirPath. No --ppapi-flash-version accompanies it, and nothing reads the manifest.json sitting beside the library: QtWebEngine builds the plugin entry from the two switches alone and the library never names that file. The manifest is still what identifies the build, Pepper Flash 32.0.0.371 for win/ia32. ref: src/main.cpp:37-44, ArcadeFlashWeb v1.0.2 manifest.json:2-7, qtwebengine 5.13 src/core/content_client_qt.cpp AddPepperFlashFromCommandLine
A local movie is not handed to the view. The url becomes
file:///
Natural dimensions come from swfdump. When -swfwidth: and -swfheight: are
not both given, which is the case for both ES-DE and RetroBat, the program
runs cmd /C
-profilantimicro: starts AntiMicro hidden with a profile from antimicro/profiles before the movie loads. Adding -controleurantimicro: replaces that argument with --profile-controller, and the profile file is then not passed at all. ref: src/main.qml:305-314
Written rather than expected: swf.txt, the QML LocalStorage database holding the last browser path with the bezel, screen mode and clock flags, the QtWebEngine cache and persistent storage under -savedataflash:, and the JPEG screenshots. The interface icons, the bezel, the CRT and scanline overlays and the wallpaper are compiled in through qml.qrc, so of the images only the copy under flash/images is read from disk, and it is byte for byte the compiled one. Two files ship unread: flash/swfobject/expressInstall.swf, which flash.html disables by passing false for the express install url, and flash/swfobject/test.swf, which nothing names. ref: src/qml.qrc:1-33, src/Sauvegarde.js:1-30, src/main.qml:132-159, ArcadeFlashWeb v1.0.2 flash/flash.html:102
The remainder of the release is the Qt 5.13.2 deployment of the program itself. VCRUNTIME140.dll and the UCRT stubs sit in the executable's import directory, so the Visual C++ 2017 x86 redistributable has to be installed, and the release carries its installer. ref: README.md:59, ArcadeFlashWeb v1.0.2 ArcadeFlashWeb.exe import directory
8 files | 3 required, 5 optional | 8 in repo, 0 missing
pepflashplayer.dll required in repo bundled
Adobe Pepper Flash Player runtime
- Source:
src/main.cpp:40,ArcadeFlashWeb v1.0.2 flash/flash.html:102 - Handed to Chromium as --ppapi-flash-path and resolved against the process working directory. Without it no plugin is registered, SWFObject finds no player and the movie is never embedded. The page asks for a reported version of at least 32.0.0; the build that ships is the 32-bit 32.0.0.371.
flash.html required in repo bundled
Page that embeds the movie
- Path:
flash/flash.html - Source:
src/main.qml:327,src/main.qml:334,src/Navigateur.qml:150 - Every local SWF goes through it, carrying the path and the two dimensions in the query string. Absent, the view is pointed at a file that does not exist and nothing plays.
swfobject.js required in repo bundled
SWFObject 2.2 embed library
- Path:
flash/swfobject/swfobject.js - Source:
ArcadeFlashWeb v1.0.2 flash/flash.html:38,ArcadeFlashWeb v1.0.2 flash/swfobject/swfobject.js:1-4 - The only definition of swfobject, included by flash.html before the script that calls embedSWF. It reads the player version from the Shockwave Flash plugin description, refines it from a probe object's $version, and refuses to embed below the version the page asks for.
background.jpg optional in repo bundled
Backdrop of the player page
- Path:
flash/images/background.jpg - Source:
ArcadeFlashWeb v1.0.2 flash/flash.html:110,src/qml.qrc:23 - Drawn behind the movie by the page's bg div. The same image is compiled into the binary for the QML side, so only this copy is read from disk.
swfdump.exe optional in repo bundled
SWFTools swfdump, reads the movie's natural size
- Source:
src/main.qml:324-325,src/Navigateur.qml:147-148 - Run through cmd /C with -X -Y and the output redirected to swf.txt, then parsed as the second and fourth whitespace fields. Skipped when both -swfwidth: and -swfheight: are given. Absent, the redirection still creates an empty file, both fields parse to NaN and the page sizes the object from that.
antimicro.exe optional in repo bundled
AntiMicro gamepad to keyboard mapper
- Path:
antimicro/antimicro.exe - Source:
src/main.qml:309,src/main.qml:311 - Started hidden before the movie loads, only when -profilantimicro: is given. The copy that ships is a 2016 build carrying its own Qt 5 runtime in the same folder.
arcadeflashweb.gamecontroller.amgp optional in repo bundled
AntiMicro mapping profile
- Path:
antimicro/profiles/arcadeflashweb.gamecontroller.amgp - Source:
src/main.qml:309-312 - Passed to AntiMicro as --profile under the name -profilantimicro: gives; the name that ships is the one the built-in help quotes. With -controleurantimicro: also set the call carries --profile-controller instead and no profile file is read.
pepper.vch optional in repo bundled
Adobe Flash Access blob shipped with the runtime
- Source:
ArcadeFlashWeb v1.0.2 pepflashplayer.dll string table - Named in the Flash library's own string table next to PepperFlashPlayer. PKCS#7 over 446144 opaque bytes, signed through the Adobe Flash Access chain under subject CN AdobeIV-202002031156. It carries DRM material and no plain SWF needs it.
Generated on 2026-08-23T16:12:06Z