Pizza Boy SC - RetroBIOS¶
Technical notes
Two Android packages, closed source, sold and given away on Google Play under the Pizza Boy SC name, reached by ES-DE through its PIZZA-BOY-SC find rule and started with the game passed as the rom_uri extra: it.dbtecno.pizzaboyscpro, the paid build the rule names first, and it.dbtecno.pizzaboyscbasic, the free one. The build read here is Basic 1.2.4 (versionCode 33), a Play distribution drop carrying the source stamp and signed by the Play App Signing certificate sha256 5ae32245362ccafab6977e759f658dda66bac81cebdd804581cb55db2f219149. The Pro on the store is 1.4.25 and no genuine copy of it is reachable: apkcombo bounces the download page of a paid app back to the app page, apkmirror carries no SC build, archive.org holds none, and the one apkvision copy, labelled Pro 1.3.7, is signed CN=APKVISION.ORG with no source stamp and was rejected. The Basic library serves both packages: besides its own entry points it exports Java_it_dbtecno_pizzaboyscpro_MainActivity_jniEnableCallback.
The core is libsc.so, a Rust tree built as one workspace whose compilation units are named in its own panic and log records: emulated/systems/genesis, emulated/systems/sms, emulated/systems/mega_cd, emulated/components/cdrom, emulated/common and frontend/android. The armeabi-v7a build shipped in the split is stripped and carries no DWARF, so the file and line of every reference below comes from the Location records the Rust log and panic paths embed. Four machines run: engine start compares the system name against SMS, GameGear and SegaCD and falls through to Genesis (lib.rs:481, 517, 538, 550), which covers Master System and Mark III, Game Gear, Mega Drive and Genesis, and Mega CD and Sega CD. Discs are read from cue and chd images through components/cdrom.
Four BIOS slots exist, one per machine, set in one call whose log reads "jni setBIOSFiles sms: {} gg: {} cd: {} md: {}" (lib.rs:424); a fifth setter stores a single path in a slot of its own that engine start never reads (lib.rs:416), and setBIOSBoot logs "TODO jni setBIOSboot" and does nothing. Each branch reads the slots its machines use, the Master System one reading the Game Gear slot as well, and an empty slot is an ordinary case for Master System, Game Gear and Mega Drive. Only the Mega CD slot is mandatory: without it the run stops at "MegaCD Bios not provided" (lib.rs:564) and engine start returns its failure code.
The Mega CD image is the only file the core examines. It is read and its length compared with 131072, then handed to the machine, which repeats the same comparison and panics on a mismatch (megacd_main_machine.rs:156-157). Nothing else about it is tested: no name, no header, no hash, and no region, the Game Region setting being passed separately as jap, usa or eu and never selecting a file.
The user supplies each file through the document picker, which filters nothing: the chosen document is copied into the application temp directory under the name the picker reports, or, when that name ends in zip, the first entry is extracted there instead, and the absolute path of the copy is stored. In the free package the BIOS preferences are declared android:enabled="false" behind a paid badge, and its Java never hands a path to the core.
Everything else the app opens it makes itself: the default skins, the cheat descriptors and the two shaders are raw resources unpacked at first run, and the box art, cheat, layout, sticker and per-ROM databases are created by their own CREATE TABLE.
8 files | 3 required, 5 optional | 8 in repo, 0 missing
bios_CD_U.bin required in repo
Sega CD boot ROM
- System: sega-megacd
- Size: 128.0 KB
- Validation: size
- Source:
Pizza Boy SC Basic 1.2.4 libsc.so frontend/android/src/lib.rs:424,Pizza Boy SC Basic 1.2.4 libsc.so frontend/android/src/lib.rs:517,Pizza Boy SC Basic 1.2.4 libsc.so frontend/android/src/lib.rs:564,Pizza Boy SC Basic 1.2.4 libsc.so frontend/android/src/lib.rs:567,Pizza Boy SC Basic 1.2.4 libsc.so frontend/android/src/lib.rs:573,Pizza Boy SC Basic 1.2.4 libsc.so frontend/android/src/lib.rs:580,Pizza Boy SC Basic 1.2.4 libsc.so frontend/android/src/lib.rs:592,Pizza Boy SC Basic 1.2.4 libsc.so frontend/android/src/lib.rs:596,emulated/systems/mega_cd/src/megacd_main_machine.rs:156-157,SettingsActivity.java:177-219,res/xml/pref_general.xml:105-123 - Platforms: batocera, emudeck, lakka, recalbox, retroarch, retrobat, retrodeck, retropie, rocknix, romm
- Chosen from any location under any name through the document picker, or, when the picked document is named .zip, taken from its first entry. The stored path is read at engine start and the byte count compared with 131072; the machine compares it a second time and panics when it differs. An absent path ends the run with "MegaCD Bios not provided", an empty one with "MegaCD BIOS path is missing", a failed read with "Error loading BIOS file", and a wrong length with "Invalid BIOS len". The core holds one Mega CD slot and applies no other test, so the boot ROM of any region satisfies it; the three are listed because the region of the discs decides which one has to be installed.
bios_CD_E.bin required in repo
Mega CD boot ROM
- System: sega-megacd
- Size: 128.0 KB
- Validation: size
- Source:
Pizza Boy SC Basic 1.2.4 libsc.so frontend/android/src/lib.rs:567-596,emulated/systems/mega_cd/src/megacd_main_machine.rs:156-157 - Platforms: batocera, emudeck, lakka, recalbox, retroarch, retrobat, retrodeck, retropie, rocknix, romm
- Same slot, same picker and same length test as the other Mega CD boot ROMs.
bios_CD_J.bin required in repo
Mega CD boot ROM (Japan)
- System: sega-megacd
- Size: 128.0 KB
- Validation: size
- Source:
Pizza Boy SC Basic 1.2.4 libsc.so frontend/android/src/lib.rs:567-596,emulated/systems/mega_cd/src/megacd_main_machine.rs:156-157 - Platforms: batocera, emudeck, lakka, recalbox, retroarch, retrobat, retrodeck, retropie, rocknix, romm
- Same slot, same picker and same length test as the other Mega CD boot ROMs.
bios_U.sms optional in repo
Master System boot ROM
- System: sega-mastersystem
- Source:
Pizza Boy SC Basic 1.2.4 libsc.so frontend/android/src/lib.rs:424,Pizza Boy SC Basic 1.2.4 libsc.so frontend/android/src/lib.rs:538,emulated/systems/sms/src/system.rs:202 - Platforms: lakka, recalbox, retroarch, retropie, romm
- Picked and stored like the Mega CD image and handed to the machine as a path. Nothing about the file is examined on either side of the bridge, and an empty slot is not an error: the cartridge runs with the boot sequence skipped.
bios_E.sms optional in repo
Master System boot ROM (Europe)
bios_J.sms optional in repo
Master System boot ROM (Japan)
bios.gg optional in repo
Game Gear boot ROM
- System: sega-gamegear
- Source:
Pizza Boy SC Basic 1.2.4 libsc.so frontend/android/src/lib.rs:424,Pizza Boy SC Basic 1.2.4 libsc.so frontend/android/src/lib.rs:481,Pizza Boy SC Basic 1.2.4 libsc.so frontend/android/src/lib.rs:538 - Platforms: lakka, recalbox, retroarch, retrodeck, retropie, rocknix, romm
- Its own slot, separate from the Master System one, both read on the branch that serves the two machines. Picked and stored the same way, handed to the machine as a path, and never examined; an empty slot is not an error.
bios_MD.bin optional in repo
Mega Drive TMSS boot ROM
- System: sega-megadrive
- Source:
Pizza Boy SC Basic 1.2.4 libsc.so frontend/android/src/lib.rs:424,Pizza Boy SC Basic 1.2.4 libsc.so frontend/android/src/lib.rs:550,emulated/systems/genesis/src/system.rs:270,emulated/systems/genesis/src/genesis_machine.rs:135 - Platforms: lakka, recalbox, retroarch, retrodeck, retropie, romm
- Read on the Genesis branch, the one engine start falls through to when the system name is neither SMS, GameGear nor SegaCD. Picked and stored the same way and never examined; the machine reports it as "BIOS detected" and runs without it when the slot is empty.
Generated on 2026-08-23T16:12:06Z