A cross-platform CLI tool that discovers Warped Pinball Vector boards on your network, asks them to stream their memory directly to your computer, and displays the live memory snapshots in the terminal, highlighting recently-changed bytes so you can hunt down the addresses that drive scores, balls, game state, and anything else you want to inspect. Once you've found an address, you can also write values back to the machine's memory straight from the viewer.
Machine discovery, authentication, and memory writes are handled by the warpedpinball Python library.
Screenshots coming soon.
Download the latest build for your platform — these links always point to the newest release:
| Platform | Download |
|---|---|
| Linux (Ubuntu x86_64) | warped-pinball-memory-mapper-linux-amd64.deb |
| Raspberry Pi (Ubuntu ARM64) | warped-pinball-memory-mapper-linux-arm64-raspberry-pi.deb |
| macOS | warped-pinball-memory-mapper-macos |
| Windows | warped-pinball-memory-mapper-windows.exe |
On Ubuntu or Raspberry Pi, install the .deb with
sudo apt install ./<file>.deb; this places a memory-mapper command in
/usr/local/bin without requiring Python. On macOS and Windows, run the
downloaded executable directly.
pip install .
memory-mappermemory-mapperThe viewer starts immediately. In the background it continuously discovers
Vector machines on your local network, and when one is found it asks the
machine to stream its memory directly to this computer — prompting for the
Vector password in the app the first time it's needed (skip the prompt by
passing --password or setting $VECTOR_PASSWORD). Memory then starts
streaming in live. Press Ctrl-C or Q to exit; the stream is turned
back off on the way out. The machine sends only to this computer — nothing
is broadcast across your network.
To focus on a specific machine when several are on the network:
memory-mapper --machine elvira # by LAN name (partial names work)
memory-mapper --machine 192.168.1.50 # or by IPIf the stream is being started by something else (another tool, your own
script, or a machine on legacy broadcast firmware), run with --listen-only;
the tool then just listens on UDP port 2040 without touching the machine.
See the User Guide for the full walkthrough and
troubleshooting.
usage: memory-mapper [-h] [--version] [--machine NAME_OR_IP]
[--password PASSWORD] [--frequency-ms MS]
[--discover-timeout SECONDS] [--listen-only]
[--keep-broadcasting] [--group GROUP] [--port PORT]
[--highlight-duration SECONDS] [--bytes-per-row N]
[--source-filter IP]
options:
-h, --help show this help message and exit
--version show program's version number and exit
--machine NAME_OR_IP Vector machine to focus on, by LAN name or IP
(default: the first machine discovered)
--password PASSWORD Vector password for starting the memory stream
and writing memory (falls back to
$VECTOR_PASSWORD; otherwise the app prompts
when it's needed)
--frequency-ms MS How often the machine sends snapshots
(default: 100, clamped to 10-60000)
--discover-timeout SECONDS How long each background discovery round listens
(default: 5)
--listen-only Never discover or control machines; just listen
(something else must start the stream)
--keep-broadcasting Leave the memory stream running on exit
--group GROUP Multicast group address to join (default: 239.255.0.0)
--port PORT UDP port to listen on (default: 2040)
--highlight-duration SECONDS How long changed bytes stay highlighted (default: 3.0)
--bytes-per-row N Minimum bytes per row; auto-expands to fill the
terminal width (default: 16)
--source-filter IP Only process packets from this sender IP
Once running, single-key commands let you navigate the memory map, inspect individual bytes, and iteratively filter offsets by how each byte changed (changed, unchanged, increased, decreased, and bit-level variants) to track down the values you care about. Press W to write value(s) to memory at the cursor — every write shows the details and a warning first, and nothing is sent until you confirm. The User Guide documents every keyboard control and walks through the scan workflow.
- User Guide — installing, running, reading the screen, keyboard controls, the scan workflow, and troubleshooting.
- Contributing — development setup, the message format, and how builds and releases work.
Memory Mapper is released under the PolyForm Shield License 1.0.0. You may use it for any purpose, including commercially — except to provide a product that competes with Warped Pinball's products or services.