Infinity - RetroBIOS¶
Technical notes
Android package me.dt2dev.infinity, closed source, free with ads on Google Play. Two builds are read here, versionCode 501 (versionName 5, minSdk 32, targetSdk 37, xapk sha256 d0040583814a634c9aa2ff56b8245f1eb94f33ee0785c264bccfa5188cd3a273) and versionCode 404 (minSdk 30), both carrying lib/arm64-v8a, the Play app signing certificate sha256 eb7b3dd469cf44ab614abda7a367c20de540014a37bb2b915dffecf5f3268da2 and the Play distribution source stamp.
The engine is fake-08 compiled into libinfinity.so and driven through a nine method JNI bridge. Its Lua blobs are upstream: the settings cart is byte identical to fake-08 814991a and the default cart differs only where VER_STR is spliced, the Android build leaving that macro undefined so the boot cart reports v0.0.0.0. The global Lua glue is patched in five places, all in the pause menu, where "exit to menu" and "exit to settings" give way to a single "quit game" calling the native __quitgame, navigation wraps around and the menu holds eight items instead of nine. No menu entry reaches the cart browser or the settings cart any more, the Compose interface listing the library instead. ref: Fake8.java:27-44, 60, 95, libinfinity.so arm64 .rodata DefaultCart / FakoSettings / p8GlobalLuaFunctions blobs, symbol __quitgame
A cart never reaches the engine as a path. Java reads the bytes into a direct
ByteBuffer, from the application assets for a built-in cart or through the content
resolver for anything else, then hands the buffer to nativeStart with the save
state name
ES-DE targets me.dt2dev.infinity/.SchemeActivity with a VIEW intent on its own content provider. The activity reads the display name from the provider, accepts it only when it ends in .p8 or .p8.png, strips that extension and forwards infinity://game with cart_uri, filename, save_state=false and assets=false to MainActivity. The manifest filter announces the content scheme with the image/png type, which an explicit component bypasses. ref: SchemeActivity.java:25-84, AndroidManifest.xml activity me.dt2dev.infinity.SchemeActivity
Two graphics backends. OpenGL ES is the default and carries its three fragment programs as GLSL string literals inside the library. Vulkan, offered as beta, reads SPIR-V modules from the application assets instead, one vertex module plus one fragment module chosen by the display filter. Version 501 ships no shader asset at all, version 404 ships the four listed below, and both libraries name them; the loader takes no null check between AAssetManager_open and AAsset_getLength. The manifest requires only abi and density splits, so no asset pack can deliver them separately. ref: vh.java:381 graphics_backend default 0, vh.java:297 display_filter default 0, libinfinity.so arm64 0xa6ee0-0xa7098, 0x9c72c-0x9c828
10 files | 0 required, 10 optional | 10 in repo, 0 missing Categories: 10 game data
common.vert.spv optional in repo game_data bundled
Vulkan vertex shader module
- Path:
assets/shaders/common.vert.spv - System: pico8
- Size: 748 B
- SHA1:
20815dcbfaff... - MD5:
541e16aa5651... - Source:
libinfinity.so arm64 0xa7078,0x9c780-0x9c78c - Opened first whenever the Vulkan backend starts, whatever the display filter. Bytes from versionCode 404.
none.frag.spv optional in repo game_data bundled
Vulkan fragment shader module, unfiltered output
- Path:
assets/shaders/none.frag.spv - System: pico8
- Size: 580 B
- SHA1:
f3aae57c3f77... - MD5:
8437c4e750da... - Source:
libinfinity.so arm64 0xa6f04-0xa6f40,0xa7090-0xa7098,0x9c7ec-0x9c828 - Chosen for any display filter value other than 1 and 2, the stored default being 0. Bytes from versionCode 404.
crt.frag.spv optional in repo game_data bundled
Vulkan fragment shader module, CRT filter
- Path:
assets/shaders/crt.frag.spv - System: pico8
- Size: 1.8 KB
- SHA1:
92822c268c59... - MD5:
c4878a2aaee2... - Source:
libinfinity.so arm64 0xa6f34-0xa6f40,0xa7090-0xa7098,0x9c7ec-0x9c828 - Chosen when the display filter is 1. Bytes from versionCode 404.
lcd.frag.spv optional in repo game_data bundled
Vulkan fragment shader module, LCD filter
- Path:
assets/shaders/lcd.frag.spv - System: pico8
- Size: 1.7 KB
- SHA1:
1a3c0aa0b93c... - MD5:
76f36cbe6970... - Source:
libinfinity.so arm64 0xa6f10-0xa6f30,0xa7090-0xa7098,0x9c7ec-0x9c828 - Chosen when the display filter is 2. Bytes from versionCode 404.
7x7demake.p8.png optional in repo game_data bundled
Built-in cart, 7x7 Demake
- Path:
assets/7x7demake.p8.png - System: pico8
- Size: 7.3 KB
- SHA1:
35ec298b803b... - MD5:
1d6416a591c9... - Source:
qd.java:15-17,pg0.java:50,ok0.java:139-142 - Held as a file:///android_asset URI and prepended to the library when the built-in carts switch is on, the loader taking the path after the scheme and reading it from the assets.
tictactoe.p8.png optional in repo game_data bundled
Built-in cart, Infinity Tic Tac Toe
- Path:
assets/tictactoe.p8.png - System: pico8
- Size: 7.4 KB
- SHA1:
5a7d0bd289e9... - MD5:
4f508068de91... - Source:
qd.java:18-20,pg0.java:50,ok0.java:139-142 - Second entry of the same table, loaded the same way.
fake-08.md optional in repo game_data bundled
Licence text shown for fake-08
- Path:
assets/fake-08.md - System: pico8
- Size: 5.4 KB
- SHA1:
6d7e23241be0... - MD5:
a382a7e44633... - Source:
ry0.java:14-15,yq0.java:125 - First of four names paired with the library names fake-08, coil, okio and DocumentFileCompat, each read from the assets when its entry is opened.
coil.txt optional in repo game_data bundled
Licence text shown for coil
- Path:
assets/coil.txt - System: pico8
- Size: 11.1 KB
- SHA1:
14d28015d8a8... - MD5:
06f4dfd96b1e... - Source:
ry0.java:14-15,yq0.java:125
okio.txt optional in repo game_data bundled
Licence text shown for okio
- Path:
assets/okio.txt - System: pico8
- Size: 11.1 KB
- SHA1:
2b8b815229aa... - MD5:
3b83ef96387f... - Source:
ry0.java:14-15,yq0.java:125
dfc.txt optional in repo game_data bundled
Licence text shown for DocumentFileCompat
- Path:
assets/dfc.txt - System: pico8
- Size: 11.1 KB
- SHA1:
7df059597099... - MD5:
86d3f3a95c32... - Source:
ry0.java:14-15,yq0.java:125
Generated on 2026-08-23T16:12:06Z