8.3 KiB
Audio Asset Search
Summary
A whole-target-root static scan did not find standalone gameplay audio files in ordinary formats. The scan covered target-root directories, not just /games/pokemon_pro/assets, and wrote reproducible results under analysis/audio-search/.
Confirmed scan results:
analysis/audio-search/summary.jsoncounted7375target-root files.- Filename scanning found
74audio-related paths, but these are ALSA/BlueALSA/GStreamer support files, kernel sound modules, udev rules, two speaker-panel PNGs, and the exported Godot sound-id script; they are not gameplay sound content. file(1)classification produced284media/audio-looking hits:278were video containers and6were false-positive Wi-Fi firmware files reported asGTA audio index data (SDT).ffprobeparsed streams from281target-root files and found0files with audio streams.- Binary magic scanning found many codec/library false positives. No confirmed standalone Ogg, WAV, MP3, FLAC, Opus, or AAC gameplay-audio file was recovered from the target rootfs.
This extends the narrower Godot/Radium media scan documented in godot-and-radium-assets.md. That earlier generated-asset scan found one AAC-bearing MP4 after extracting /games/pokemon_pro/assets/godot/main.pck: assets/godot_raw/scenes/shared_items/gfx/bknd/Arena_Neon/Tournament_Neon_01_22_26_h265.mp4.
Important refinement from Ghidra cross-references and the follow-up image parser: the broad scan rules out plain loose audio files and directly recognizable target-root streams. The missing sounds are now confirmed to be image-backed: section 8 of /games/pokemon_pro/image.bin is a Radium table of headerless 16-bit PCM chunks. See radium-image-format.md.
Scope And Command
The scanner is workspace-local and does not execute target AArch64 binaries.
python3 rootfs-triage-wiki/scripts/search_audio_assets.py
The script scanned these target-root directories: bin, boot, connectivity, data, dev, etc, games, home, lib, lib64, linuxrc, lost+found, media, media2, mnt, opt, proc, root, run, sbin, sys, tmp, usr, and var.
Generated outputs:
analysis/audio-search/summary.jsonanalysis/audio-search/filename-hits.tsvanalysis/audio-search/file-type-hits.tsvanalysis/audio-search/magic-hits.tsvanalysis/audio-search/ffprobe-streams.tsvanalysis/audio-search/audio-related-strings.json
Target-Root Media Probe Results
analysis/audio-search/ffprobe-streams.tsv contains every target-root file where ffprobe could parse stream metadata:
| Count | Streams |
|---|---|
248 |
0:video:hevc |
30 |
0:video:h264 |
2 |
0:video:png |
1 |
0:video:ansi |
Every parsed target-root stream row has has_audio=False.
Filename Hits
analysis/audio-search/filename-hits.tsv found audio-related names such as:
/etc/alsa/conf.d/20-bluealsa.conf/usr/lib/libasound.so.2.0.0/usr/lib/gstreamer-1.0/libgstaudioconvert.so/usr/bin/aplay/usr/bin/bluealsa/lib/modules/6.6.28-v8/kernel/sound/usb/snd-usb-audio.ko.xz/games/pokemon_pro/assets/nuk/images/System/TestMode/spike_3_speaker_panel.png
These are system audio stack components, tests, images, or support files, not recovered gameplay audio content.
False Positives
file(1) reported six firmware files as GTA audio index data (SDT):
/lib/firmware/brcm/brcmfmac43436-sdio.bin/lib/firmware/brcm/brcmfmac43436s-sdio.bin/lib/firmware/cypress/cyfmac43430-sdio.bin/lib64/firmware/brcm/brcmfmac43436-sdio.bin/lib64/firmware/brcm/brcmfmac43436s-sdio.bin/lib64/firmware/cypress/cyfmac43430-sdio.bin
These paths and filenames identify them as Wi-Fi firmware. ffprobe did not parse audio streams from them.
Binary magic scanning also found Ogg-looking byte sequences in executable/library data. Two game-specific examples were carved and checked:
/games/pokemon_pro/gameat offset52183200/games/pokemon_pro/spike3/spike_menu/gameat offset4398800
file(1) labels the carved 1 MiB samples as Ogg data, but ffprobe rejects both with CRC mismatch. These are not confirmed playable audio streams. Based on their location in ELF binaries and nearby strings such as external/soloud/src/audiosource/wav/stb_vorbis.cpp, they are likely codec/test/parser data or static constants rather than asset payloads.
Native Sound Path Evidence
The absence of standalone audio files does not mean the game lacks sound support. Static strings in /games/pokemon_pro/game show a native audio path:
libasound.so.2ALSAAD_SOUND_MASTER_VOLUME_SETTINGAD_MUSIC_ATTENUATIONAD_SPEECH_ATTENUATIONAD_ENABLE_SPIKE3_BOOT_SOUNDPLAYING SOUND #%dSPEECH: 'SQUIRTLE'MUSIC: TEAM ROCKETMUSIC: MAINPLAYRadium::Soundvoid Radium::Sound::Play()external/soloud/src/audiosource/wav/stb_vorbis.cpp
Ghidra Xref Confirmation
Ghidra program: /games/pokemon_pro/game
String xrefs:
image.binat026daf08xrefs toFUN_008733e0andFUN_00872ed0.void Radium::Sound::Play()at026e3508xrefs toFUN_009ce680.src/Sound.cppat026e3528xrefs toFUN_009ce680.bool Radium::BinaryFile::Allocate(unsigned int)at026e2b40xrefs toFUN_009ce680and other asset-loading functions.././include/BinaryFile.hat026e2b70xrefs toFUN_009ce680and other asset-loading functions.
Relevant decompiler evidence:
FUN_00872ed0(uint image_index)returnsimage.binby default, or a stored alternate image path for non-default image slots.FUN_008733e0(uint image_index)buildsimage.binfor index0orimage-sc%02d.binfor non-zero indexes, opens it withopen64, checks size withfstat64, maps it read-only withmmap64(..., PROT_READ, MAP_SHARED, fd, 0), and copies header words from the mapped file into runtime image metadata.FUN_009ce680, identified by thevoid Radium::Sound::Play()assertion string, calls a BinaryFile factory (FUN_009fdc90), looks up an object using fields at the sound object aroundparam_1 + 0x118, allocates a buffer of the returned object size, reads the object bytes into that buffer, and passes the buffer toFUN_00a0c3a0.FUN_00a0c3a0wraps the buffer as an in-memory audio source and callsFUN_00a0c320.FUN_00a0c320reads the first four bytes and dispatches only two recognized container magics:0x5367674f(OggS) to the Ogg/Vorbis path and0x46464952(RIFF) to the WAV path. Other values return error3.FUN_00a0c230is the Ogg/Vorbis decode setup path and references the embedded stb_vorbis implementation.FUN_00a0c070is the WAV setup path; it checks forWAVE,fmt, anddatachunks.
Static exact byte search of the two image files still found no plain contiguous audio signatures:
| Path | OggS |
RIFF |
WAVE |
fLaC |
OpusHead |
|---|---|---|---|---|---|
/games/pokemon_pro/image.bin |
0 |
0 |
0 |
0 |
0 |
/games/pokemon_pro/spike3/spike_menu/image.bin |
0 |
0 |
0 |
0 |
0 |
Conclusion refined by radium-image-format.md: Ghidra confirms that the native game uses the mmap-backed runtime image for sound-related ranges. Section 8 of /games/pokemon_pro/image.bin is a table of 2491 headerless 16-bit PCM chunks with a validated CRC32 table checksum. These chunks do not carry OggS or RIFF magic until wrapped by the parser as WAV. The parser scans the full section 5 command-stream table, resolves 12710 opcode 0x0b references, and maps all 2491 chunks to local object IDs. All chunks are exported as previewable WAV files under analysis/radium-image/sounds/. A native GodotSpikeBridge registration table maps 25 object IDs to confirmed SE_* names. The Pokedex voice stream now maps 1137 objects (409 through 1545) to Pokemon description/name/category clips, including six duplicate description variants. Those aliases are previewable in sound-pokedex-voice.md, and complete best-name aliases are previewable in sound-best-named-export.md. The remaining work is assigning higher-level human-readable sound names and gameplay call sites for the other object IDs.
The current wiki also includes 1705 accepted local Whisper draft transcripts in sound-asr-draft-labels.md, produced from 2486 WAV candidates of 0.25s and longer. These are ASR-derived preview labels, not confirmed native names.