Files
libretro/emulators/arcadeflashweb.yml
Abdessamad Derraz cf62ccae58 chore: name the release arcadeflashweb reads, not the repo
flash.html, swfobject.js and manifest.json ship in the release and exist
in no revision of the source tree: the profile marks them bundled. Cited
behind the repository's own name, the resolver stripped that name and
looked for them in the tree, where they have never been. Cited behind
ArcadeFlashWeb-release they read as what they are, an artefact no
declared revision can confirm or deny. 21 refs, none left to read.
2026-09-04 15:47:06 +02:00

169 lines
7.8 KiB
YAML

emulator: ArcadeFlashWeb
type: standalone
core_classification: launcher
source: "https://github.com/aureyoboss/ArcadeFlashWeb"
upstream: "https://github.com/aureyoboss/ArcadeFlashWeb"
profiled_date: "2026-08-11"
source_commit: "5de66e0cd69b48721a094887a28d042f71ddad08"
core_version: "1.0.2"
display_name: "Adobe Flash (ArcadeFlashWeb)"
cores:
- arcadeflashweb
systems:
- flash
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:<rom>, RetroBat adds -nodatetime,
-savedataflash: and -picturesfolder: and sets the working directory to the
program folder. The repository carries the Qt and QML sources and the
releases; arcadeflashweb.com no longer resolves and holds no archived
capture. Every string quoted below was also read back from the shipped
v1.0.2 executable, which matches the sources.
ref: src/ArcadeFlashWeb.pro:1-5, src/main.qml:34-35
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-release 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:///<appdir>/flash/flash.html?jeu=<rom>=<width>=<height>, and that page
splits the query on the equals signs, fits the movie to the window and calls
swfobject.embedSWF with scale exactfit and wmode direct. The version it asks
for is 32.0.0, so SWFObject creates the object only when the registered
plugin reports at least that. A -source: containing "http" loads in the view
unchanged and uses none of this.
ref: src/main.qml:317-347, src/Navigateur.qml:144-155,
ArcadeFlashWeb-release flash/flash.html:38-104
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 <appdir>/swfdump.exe -X -Y <rom> redirected to swf.txt in the
data directory and reads the second and fourth whitespace fields back.
ref: src/main.qml:109-128, src/main.qml:321-335, src/Navigateur.qml:147-148
-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-release 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
files:
- name: pepflashplayer.dll
required: true
bundled: true
description: "Adobe Pepper Flash Player runtime"
note: >-
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.
source_ref: "src/main.cpp:40, ArcadeFlashWeb-release flash/flash.html:102"
- name: flash.html
path: flash/flash.html
required: true
bundled: true
description: "Page that embeds the movie"
note: >-
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.
source_ref: "src/main.qml:327,334, src/Navigateur.qml:150"
- name: swfobject.js
path: flash/swfobject/swfobject.js
required: true
bundled: true
description: "SWFObject 2.2 embed library"
note: >-
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.
source_ref: "ArcadeFlashWeb-release flash/flash.html:38, ArcadeFlashWeb-release flash/swfobject/swfobject.js:1-4"
- name: background.jpg
path: flash/images/background.jpg
required: false
bundled: true
description: "Backdrop of the player page"
note: >-
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.
source_ref: "ArcadeFlashWeb-release flash/flash.html:110, src/qml.qrc:23"
- name: swfdump.exe
required: false
bundled: true
description: "SWFTools swfdump, reads the movie's natural size"
note: >-
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.
source_ref: "src/main.qml:324-325, src/Navigateur.qml:147-148"
- name: antimicro.exe
path: antimicro/antimicro.exe
required: false
bundled: true
description: "AntiMicro gamepad to keyboard mapper"
note: >-
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.
source_ref: "src/main.qml:309,311"
- name: arcadeflashweb.gamecontroller.amgp
path: antimicro/profiles/arcadeflashweb.gamecontroller.amgp
required: false
bundled: true
description: "AntiMicro mapping profile"
note: >-
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.
source_ref: "src/main.qml:309-312"
- name: pepper.vch
required: false
bundled: true
description: "Adobe Flash Access blob shipped with the runtime"
note: >-
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.
source_ref: "ArcadeFlashWeb v1.0.2 pepflashplayer.dll string table"