Files
pokemon_pinball_wiki/applications-and-services.md
2026-07-06 20:06:06 -05:00

5.4 KiB

Applications and Services

Game Entry Points

Top-level symlinks:

Path Target
/games/game pokemon_pro/game
/games/conagent pokemon_pro/conagent
/games/data pokemon_pro/data
/games/spike3 pokemon_pro/spike3

Main executables:

Path Type Size
/games/pokemon_pro/game Stripped AArch64 PIE, dynamically linked 52,829,400
/games/pokemon_pro/conagent Stripped AArch64 PIE, dynamically linked 272,432
/games/pokemon_pro/spike3/bin/dprint Stripped AArch64 PIE, dynamically linked see artifact index
/games/pokemon_pro/spike3/bin/boot_display Stripped AArch64 PIE, dynamically linked see artifact index
/games/pokemon_pro/spike3/bin/bttest Stripped AArch64 PIE, dynamically linked see artifact index
/games/pokemon_pro/spike3/spike_menu/game Stripped AArch64 PIE, dynamically linked 4,645,784
/games/pokemon_pro/spike3/netbridge/netbridge.elf 32-bit ARM statically linked ELF with debug info, not stripped see artifact index

Large payloads:

  • /games/pokemon_pro/image.bin: 1,154,884,359 bytes.
  • /games/pokemon_pro/assets/godot/main.pck: 256,326,416 bytes.
  • /games/pokemon_pro/spike3/spike_menu/image.bin: 14,959,521 bytes.

Asset extraction status:

  • /games/pokemon_pro/assets/godot/main.pck has been statically extracted into workspace-local assets/; see godot-and-radium-assets.md.
  • /games/pokemon_pro/image.bin did not expose standard media signatures in first-pass static scans and remains a Radium/runtime image reverse-engineering target.

Game Data

Release-note files:

  • /games/pokemon_pro/data/pro_release_notes.txt
  • /games/pokemon_pro/data/premium_release_notes.txt

Version hints:

  • /games/spk/index/pokemon_pro.sidx -> pokemon_pro-0_83_0.sidx
  • /games/pokemon_pro/data/*_release_notes.txt match the Pokemon Pro/Premium title.

Bundled node firmware images:

  • coil4node-LPC1112_101-1_33_0.hex
  • pinnode-LPC1112_101-1_33_0.hex
  • hdmi_ws2812node-LPC1313-1_33_0.hex
  • tmc5041node-LPC1313-1_33_0.hex
  • pinnode-LPC1313-1_33_0.hex
  • lcdnode-LPC1113_302-1_33_0.hex
  • coil4_lednode-LPC1313-1_33_0.hex
  • coil4node-LPC1313-1_33_0.hex
  • magsensornode-LPC812-1_33_0.hex
  • hdminode-LPC1313-1_33_0.hex
  • ws2812pinnode-LPC1313-1_33_0.hex
  • node4-LPC1124_303-1_33_0.hex
  • node4-LPC812-1_33_0.hex
  • ws2812node-LPC1313-1_33_0.hex
  • pinnode-LPC1112_201-1_33_0.hex
  • coil4node-LPC1112_201-1_33_0.hex
  • tmc2590node-LPC1313-1_33_0.hex

These are likely firmware payloads for distributed SPIKE node boards.

Monitors

/etc/init.d/S95game starts these in the background when /games/game exists:

  • /etc/init.d/reboot_monitor
  • /etc/init.d/conagent_monitor
  • /etc/init.d/game_monitor
  • /etc/init.d/update

game_monitor:

  • Starts /games/game.
  • Interprets game exit codes:
    • 0: restart requested.
    • 1: reboot requested.
    • 2: exit requested, development-only control-C path.
    • 3: power loss.
    • 4: fatal error.
    • 5: dispatch timeout.
    • 6: deep sleep.
    • >=128: uncaught signal, encoded as exit_reason - 128.
  • On power loss or deep sleep, syncs filesystems, remounts /data and /connectivity read-only, and hangs waiting for power removal.
  • On reboot request, syncs, remounts persistent filesystems read-only, calls /sbin/reboot -f, and hangs.
  • On repeated fatal/non-normal exits, tracks restart sentinels under /tmp/game_restarts.
  • After more than 4 restart sentinels, clears selected /connectivity caches. If cache was already cleared and restart pressure continues, it reboots.

conagent_monitor:

  • Loops forever.
  • Starts /games/conagent.
  • Sleeps one second and restarts it whenever it exits.

reboot_monitor:

  • Tracks machine reboots under /connectivity/machine_reboots.
  • If more than 9 reboot markers exist before the system reaches 5 minutes uptime, it clears selected /connectivity caches.
  • Creates a reboot marker, sleeps 300 seconds, then clears reboot markers.

Display Utilities

/etc/init.d/shared resolves:

  • BOOT_DISPLAY=/games/spike3/bin/boot_display, fallback /usr/local/spike/boot_display.
  • DPRINT=/games/spike3/bin/dprint, fallback /usr/local/spike/dprint.

boot_display is launched early by S12lvds_panel; dprint is used by startup/update scripts to print messages to the boot display.

Bluetooth Support Scripts

Bundled scripts under /games/pokemon_pro/spike3/scripts:

  • find_trusted_devices.sh: walks /var/lib/bluetooth and prints device directories whose info contains Trusted=true.
  • find_untrusted_devices.sh: walks /var/lib/bluetooth and prints devices missing that trusted marker.
  • copy_newest_corefile_to_usb.sh: archives the newest core file from /connectivity/dump/cores into an encrypted 7z file and copies it to /media after mounting /dev/sda1 or /dev/sda.

Sensitive note: copy_newest_corefile_to_usb.sh reads a passphrase from /games/spike3/scripts/corefile_passphrase.txt; the value is not copied into this wiki.

Netbridge / Debug Hardware

/games/pokemon_pro/spike3/netbridge contains:

  • netbridge.elf: 32-bit ARM static executable with debug info, not stripped.
  • rp2040.cfg: OpenOCD RP2040 target config.
  • spike3-swd.cfg: OpenOCD config using bcm2835gpio.

spike3-swd.cfg maps:

  • SWCLK to GPIO 11.
  • SWDIO to GPIO 10.

This is a strong next target for understanding how the Pi interfaces with an RP2040 or other debug bridge in the machine.