mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-01 00:27:20 -05:00
Pro 7.4.17 has no genuine copy anywhere; no_genuine_copy moves to it. The native references hold at the same lines in the DBTecno-signed Basic 4.1.15 bundle; its Java slot gate moved to MainActivity.java:3207-3213.
146 lines
8.5 KiB
YAML
146 lines
8.5 KiB
YAML
emulator: "Pizza Boy GBC"
|
|
type: standalone
|
|
core_classification: embedded_hle
|
|
source: "https://play.google.com/store/apps/details?id=it.dbtecno.pizzaboypro"
|
|
upstream: closed-source
|
|
version_source:
|
|
url: "https://play.google.com/store/apps/details?id=it.dbtecno.pizzaboypro&hl=en"
|
|
pattern: '\[\[\["([^"]+)"\]\],\[\[\[\d+'
|
|
no_genuine_copy: "7.4.17"
|
|
author: "Pizza Emulators"
|
|
profiled_date: "2026-10-24"
|
|
core_version: "6.0.6"
|
|
display_name: "Nintendo - Game Boy / Color (Pizza Boy GBC)"
|
|
mode: standalone
|
|
cores:
|
|
- "pizza-boy-gbc"
|
|
- "Pizza Boy GBC"
|
|
- "PIZZA-BOY-GBC"
|
|
systems:
|
|
- nintendo-gb
|
|
- nintendo-gbc
|
|
- nintendo-sgb
|
|
|
|
notes: |
|
|
Two Android packages, closed source, sold and given away on Google Play under the
|
|
Pizza Boy C name, reached by ES-DE through its PIZZA-BOY-GBC find rule and started
|
|
with the game passed as the rom_uri extra: it.dbtecno.pizzaboypro, the paid build the
|
|
rule names first, and it.dbtecno.pizzaboy, the free one. Two Play distribution builds
|
|
are read here, both carrying the developer certificate sha256
|
|
b3ee584096acf4667bb9346daa9cce19237ef7ce95c99e9260ac89be0f7d6130 (CN=Davide Berra,
|
|
O=DBTecno) and a source stamp: Pro 6.0.6 (versionCode 231), which supplies the Java
|
|
and the resources, and Basic 4.1.15 (versionCode 211, an APKMirror bundle of 22 Oct
|
|
2026 whose base and arm64-v8a splits carry a valid v2 and v3 signature by that
|
|
certificate), whose arm64-v8a libpizzaboy-jni.so ships DWARF and an unstripped symbol
|
|
table and supplies every native reference below as its own file and line. Every
|
|
native reference first read on Basic 4.1.14 falls on the same lines and functions in
|
|
4.1.15, and mmu_load_bios keeps the 0x10000 clear, the 0x2000 read and the 0x100 and
|
|
0x900 gate. Java line numbers are those of Pro 6.0.6 unless a Basic 4.1.15 reference
|
|
is named. The Pro on the store is 7.4.17 and no genuine copy of it is reachable:
|
|
apkcombo no longer resolves, APKPure lists 7.4.17 as coming soon with no file,
|
|
APKMirror carries the Basic package alone, apkvision stops at Pro 5.2.2, and
|
|
archive.org holds 6.0.6 alone. The Pro
|
|
ships its core as a stripped armeabi-v7a build. It carries the same log strings and
|
|
the same constants as the Basic core, the 64 KB clear, the 8192 byte read cap, the
|
|
256 byte header copy and the 256 and 2304 byte gate, and 65 of the 70 entry points
|
|
it exports are exported by the Basic 4.1.6 core as well. The Pro also ships
|
|
libpizza-jni.so, an older core exporting the free package JNI names and carrying no
|
|
BIOS entry point, which no loadLibrary call reaches.
|
|
|
|
Three systems are emulated from one tree named pizzaboy, whose compilation units
|
|
carry gameboy.c, mmu.c, sgb.c and camera.c: Game Boy, Game Boy Color and Super Game
|
|
Boy. The SGB command set, borders and palettes are handled by sgb.c behind a Super
|
|
Game Boy switch that is on by default, with a preference that gives Game Boy Color
|
|
precedence over Super Game Boy on a cartridge that offers both. camera.c drives the
|
|
Game Boy Camera cartridge from the device camera, and the Game Boy Printer is served
|
|
over the link port.
|
|
|
|
The boot ROM is the one file the user supplies, in two slots, Gameboy Classic ROMs
|
|
BIOS and Gameboy Color ROMs BIOS, and it is read only while Load BIOS file is on,
|
|
off by default (res/xml/pref_general.xml:89-99). In the free package the same three
|
|
preferences are declared android:enabled="false" behind a paid badge, and the Basic
|
|
4.1.15 Java keeps the whole handoff to the core behind them. A ROM whose name ends
|
|
in .gb or .sgb takes the first slot, every other name takes the second.
|
|
|
|
The library never examines the name, the extension or the content: the byte count of
|
|
the read decides the machine. A file of 256 bytes runs the cartridge as a Game Boy,
|
|
one of 2304 bytes as a Game Boy Color, and any other length is refused with "Unknown
|
|
BIOS file", after which the run continues with the boot skipped. The image is read
|
|
into a second MMU whose 0x100 to 0x1FF window is overwritten with the cartridge
|
|
header from the active one, the program counter starts at 0 instead of at the
|
|
cartridge entry, and the animation runs until it reaches 0x100, at which point the
|
|
active MMU returns to the cartridge and the accumulator is restored. A multiplayer
|
|
session exchanges the CRC32 of the Game Boy slot so that both peers run the same
|
|
file. The Basic 4.1.15 Java carries no such exchange, and its core skips the boot
|
|
while a multiplayer peer is connected.
|
|
|
|
Everything else the app opens it makes itself: the default skins and the cheat
|
|
descriptors are raw resources unpacked at first run, the box art, cheat, sticker,
|
|
layout and per-ROM databases are created by their own CREATE TABLE, and the save
|
|
states, the RTC files, the screenshots and the GIF captures are outputs. No boot ROM
|
|
is compiled into the library: neither Game Boy image nor the Nintendo logo appears
|
|
anywhere in the loaded sections, and the post-boot register state comes from the
|
|
reset path instead.
|
|
|
|
files:
|
|
- name: dmg_boot.bin
|
|
system: nintendo-gb
|
|
required: false
|
|
hle_fallback: true
|
|
agnostic: true
|
|
size: 256
|
|
validation: [size]
|
|
config_key: "bios_file"
|
|
description: "Game Boy (DMG) boot ROM"
|
|
note: >-
|
|
Chosen from any location under any name through the document picker and copied
|
|
into the application directory under the name the picker reports. The legacy
|
|
browser offers .gbc, .gb, .bin and .zip and writes the entry it extracts from a
|
|
zip to bios.bin. The absolute path is stored and handed to the library, which
|
|
copies it into a 256 byte buffer. It is used when the ROM name ends in .gb or
|
|
.sgb, and only on the first run of that ROM and with no multiplayer peer
|
|
connected. The file is read into a second MMU image, up to 8192 bytes, and a
|
|
count of exactly 256 starts the run as a Game Boy, keeping the default palette.
|
|
Nothing else is examined: no name, size range, header or hash test exists on
|
|
either side of the bridge, and a count that is neither 256 nor 2304 is refused.
|
|
A multiplayer session exchanges the CRC32 of this file so that both peers run
|
|
the same one. In Basic 4.1.15 the picker alone remains: the document is copied
|
|
into the temp directory, and when its name ends in zip every file entry is
|
|
extracted there instead, the last one written becoming the stored path.
|
|
source_ref: "Pizza Boy GBC Pro 6.0.6 MainActivity.java:702 (native method),
|
|
:8067-8081 (gate and slot selection), :1734-1757 (CRC32 of the file),
|
|
:1907, :2136 (multiplayer handshake), SettingsActivity.java:40-41 (request
|
|
codes), :96-113 (picker result and copy), :116-192 (both preferences),
|
|
Common.java:42 (copy to the application directory), FileDialog.java:949-975
|
|
(legacy browser, zip entry to bios.bin), res/xml/pref_general.xml:89-99
|
|
(defaults); Pizza Boy C Basic 4.1.15 MainActivity.java:3207-3213 (gate and slot
|
|
selection), SettingsActivity.java:66-155 (picker result, zip entries, copy),
|
|
wd.java:1607-1630 (copy to the temp directory), libpizzaboy-jni.so
|
|
pizza.c:1028-1029 (path into global_bios_file), global.c:28 (char[256]),
|
|
mmu.c:432-463 (open, 64 KB clear, 8192 byte read, cartridge header copy, 256 and
|
|
2304 gate, refusal), gameboy.c:1263-1283 (first run, peer and path tests, call),
|
|
:1163-1172 (log, read, failure), :1177-1199 (model, MMU switch, program counter
|
|
at 0, accumulator, palette), :1202-1242 (run to 0x100, return to the cartridge)"
|
|
|
|
- name: cgb_boot.bin
|
|
system: nintendo-gbc
|
|
required: false
|
|
hle_fallback: true
|
|
agnostic: true
|
|
size: 2304
|
|
validation: [size]
|
|
config_key: "bios_file_cgb"
|
|
description: "Game Boy Color (CGB) boot ROM"
|
|
note: >-
|
|
Same picker, same copy and same handoff as the Game Boy slot, used for every ROM
|
|
whose name does not end in .gb or .sgb. A count of exactly 2304 starts the run as
|
|
a Game Boy Color, which sets the accumulator to 0x11 and keeps the hardware
|
|
palettes instead of reloading the default one. The 0x100 to 0x1FF window of the
|
|
image is overwritten with the cartridge header before execution, which is the
|
|
gap the 2304 byte layout leaves for it.
|
|
source_ref: "Pizza Boy GBC Pro 6.0.6 MainActivity.java:8073-8078 (slot selection),
|
|
SettingsActivity.java:98 (preference key), :158-192 (preference and picker),
|
|
res/xml/pref_general.xml:97-99; Pizza Boy C Basic 4.1.15 libpizzaboy-jni.so
|
|
mmu.c:435-452 (read, header copy, 2304 gate), gameboy.c:1177-1180 (model from
|
|
the return value), :1193-1199 (program counter, accumulator, palette)"
|