SWF Player - RetroBIOS¶
Technical notes
Android package com.issess.flashplayer, closed source, published on Google Play and reached by ES-DE through its SWF-PLAYER find rule. The build read here is 1.90 free (build 507), versionCode 507, arm64-v8a and armeabi-v7a, sha256 0a56e74d0f8bfdfbd984ce1b8aa2a700203fdd051f3aece3c95fb17f45d4383b, signed v1 and v2 with the developer certificate O=issess.com, CN=issess, sha256 c3a222b4339f9dde3a770bc1d0ceb551fa96e554679cdbd2056aadd0f1b843c8. Line numbers below are those of that package: jadx output for the classes, the shipped file itself for contents.html. The paid package com.issess.flashplayerpro, the other entry of the same find rule, is built from this class tree, its activity being spelled com.issess.flashplayer.player.FlashPlayerActivity. No genuine copy of it was obtainable: apkpure and apkcombo bounce the download of a paid app, apkvision holds none, mi9 serves zero bytes and archive.org has no item for either package.
Two engines ship in the package, one activity each, both exported and both answering android.intent.action.VIEW for application/swf, application/x-shockwave-flash and video/x-flv. FlashPlayerActivity is labelled "SWF Player by Ruffle" and runs the movie in a WebView; AirPlayerActivity is labelled "SWF Player by AdobeAIR", lives in a :air process and drives a captive Adobe AIR runtime. ES-DE names the first one and passes the movie as the content URI of its own provider, so it always gets the Ruffle engine. ref: AndroidManifest.xml activity com.issess.flashplayer.player.FlashPlayerActivity and .AirPlayerActivity, string play_ruffle_player, play_air_player, using_ruffle_plugin, using_air_plugin
The movie itself never stays where the user put it. BaseActivity.E reads the intent Uri
through the content resolver, or opens the path directly for a file:// intent, and writes
the bytes twice: to
The Ruffle engine serves everything over a virtual host. FlashPlayerActivity.g0 writes
Nothing is read from outside the package. The one mention of Adobe's own player is a main list row that opens market://details?id=com.adobe.flashplayer, a store link that loads no file, and the "Flash Player Not Found!" branch with its CallJava.notInstalled callback is the fallback content of the object element, reached only when neither a plugin nor the polyfill claims it. No plugin binary, BIOS, firmware or key is named anywhere in the class tree, and ES-DE's own table records no BIOS for this system. ref: MainListFragment.java:360, a2/b.java:452-468 (market intent), assets/contents.html:50-60, FlashPlayerActivity.java:179-183, ES-DE ANDROID.md:928
13 files | 10 required, 3 optional | 1 in repo, 12 missing
ruffle.js required missing bundled
Ruffle web loader and polyfill, nightly 2024-08-26
- Path:
assets/ruffle/ruffle.js - System: flash
- Size: 336.5 KB
- SHA1:
c58c63e0ae83... - MD5:
c0263e609d1a... - Source:
assets/contents.html:28,FlashPlayerActivity.java:305 - The only script the generated page includes. It replaces the shockwave-flash object with a Ruffle player and selects one of the two cores below by WebAssembly feature detection. Absent, nothing claims the object element and the page renders its fallback content instead, which reports back through CallJava.notInstalled.
core.ruffle.1c418e86b251861b5eca.js required missing bundled
Ruffle core bindings, WebAssembly extensions build
- Path:
assets/ruffle/core.ruffle.1c418e86b251861b5eca.js - System: flash
- Size: 88.3 KB
- SHA1:
0eabbed786f3... - MD5:
5b1d64812875... - Source:
assets/ruffle/ruffle.js webpack module 791,assets/ruffle/core.ruffle.1c418e86b251861b5eca.js is_wasm_simd_used - Glue for the SIMD core, webpack module 791. Loaded on a device whose WebAssembly engine carries the extensions, which is what is_wasm_simd_used reports back.
75a2b30a5d3fb1a3431d.wasm required missing bundled
Ruffle core, WebAssembly extensions build
- Path:
assets/ruffle/75a2b30a5d3fb1a3431d.wasm - System: flash
- Size: 12.5 MB
- SHA1:
d27da38e4d37... - MD5:
834f85979115... - Source:
assets/ruffle/ruffle.js webpack module 791 - The player itself for devices with the extensions. Its target features record simd128, which the baseline build below does not carry.
core.ruffle.9fa2f1e6feaba5f6767a.js required missing bundled
Ruffle core bindings, baseline build
- Path:
assets/ruffle/core.ruffle.9fa2f1e6feaba5f6767a.js - System: flash
- Size: 92.0 KB
- SHA1:
45815723a1bd... - MD5:
5aee868a91c0... - Source:
assets/ruffle/ruffle.js webpack module 797,assets/ruffle/core.ruffle.9fa2f1e6feaba5f6767a.js is_wasm_simd_used - Glue for the core without WebAssembly extensions, webpack module 797. Loaded when the device does not report them.
9541e862775deeb49470.wasm required missing bundled
Ruffle core, baseline build
- Path:
assets/ruffle/9541e862775deeb49470.wasm - System: flash
- Size: 12.7 MB
- SHA1:
fea8e60e86cb... - MD5:
fe843bd0152c... - Source:
assets/ruffle/ruffle.js webpack module 797 - The player itself for devices without the WebAssembly extensions.
contents.html required missing bundled
Template of the page the WebView loads
- Path:
assets/contents.html - System: flash
- Size: 2.4 KB
- SHA1:
0aaf20633888... - MD5:
39c997db73db... - Source:
a2/b.java:327-333,FlashPlayerActivity.java:276-291 - Read from the assets on every launch and rewritten into
/assetLoader/swf.html with the movie URL and the display preferences substituted. It carries the ruffle.js include and the object element. Unreadable, the generator returns null and the WebView is pointed at a page with no movie in it.
application.xml required missing bundled
Adobe AIR application descriptor, namespace 3.8
- Path:
assets/META-INF/AIR/application.xml - System: flash
- Size: 1.3 KB
- SHA1:
bc283d9ad8ad... - MD5:
de36d0dc1b74... - Source:
BaseActivity.java:616-630,assets/META-INF/AIR/application.xml:19,assets/META-INF/AIR/application.xml:27-35 - Copied out of the assets into
/app/ /assets/META-INF/AIR/ before the AIR engine starts, and read from there by the runtime. It declares cached.swf as the initial window content, which is the name the movie is copied under, plus fullscreen, gpu rendering and auto orientation.
libCore.so required missing bundled
Adobe AIR 51.1.1.3 captive runtime
- Path:
lib/arm64-v8a/libCore.so - System: flash
- Size: 20.0 MB
- SHA1:
d6d91ca32cbc... - MD5:
7fa447445563... - Source:
AndroidActivityWrapper.java:455-481,AirPlayerBaseActivity.java:59-70 - The AIR player, loaded by path first and then by name from the package. The runtime is captive: the wrapper classes live in the application's own dex and the library beside them, so no separate AIR package is consulted. The armeabi-v7a build of the same version is 14808220 bytes. Version read back from the library as "AND 51,1,1,3".
libc++_shared.so required in repo bundled
NDK C++ runtime for the AIR runtime
- Path:
lib/arm64-v8a/libc++_shared.so - System: flash
- Size: 1.0 MB
- SHA1:
8db47ede0607... - MD5:
77f7b0c9bba5... - Source:
AndroidActivityWrapper.java:459,AndroidActivityWrapper.java:472-478 - Named by the wrapper ahead of the runtime itself, by path and then by name, and listed as a DT_NEEDED of libCore.so. The armeabi-v7a build is 657000 bytes.
libswfplayer.so required missing bundled
JNI library of the application
- Path:
lib/arm64-v8a/libswfplayer.so - System: flash
- Size: 3.8 KB
- SHA1:
6118faa7947e... - MD5:
1301640830c7... - Source:
AirPlayerBaseActivity.java:31-33 - Loaded from the static initializer of the AIR activity's base class, so its absence stops that activity from being created. It exports one symbol, Java_com_issess_flashplayer_stringFromJNI, which nothing calls. The armeabi-v7a build is 2688 bytes.
sample1.swf optional missing bundled
Sample movie
- Path:
assets/sample1.swf - System: flash
- Size: 5.8 KB
- SHA1:
5194da518b3b... - MD5:
3d801b57e0b9... - Source:
SampleListFragment.java:65-81,SampleListFragment.java:109-117 - Unpacked into
/assetLoader on the sample list screen, then opened through a chooser like any other movie so either engine can take it.
sample2.swf optional missing bundled
Sample movie
- Path:
assets/sample2.swf - System: flash
- Size: 53.4 KB
- SHA1:
bef0ab961694... - MD5:
c583c7db1c54... - Source:
SampleListFragment.java:65-81,SampleListFragment.java:109-117 - Unpacked and opened on the same path as sample1.swf.
sample3.swf optional missing bundled
Sample movie
- Path:
assets/sample3.swf - System: flash
- Size: 23.0 KB
- SHA1:
f5992aebd3ba... - MD5:
505834e937b0... - Source:
SampleListFragment.java:65-81,SampleListFragment.java:109-117 - Unpacked and opened on the same path as sample1.swf.
Generated on 2026-08-23T16:12:06Z