load_romLABSCO SUMMARY
Labels that mean something, from three passes over the binary.
Pass one collects every JSR, JMP and branch target; pass two traces execution to mark bytes as code or data; pass three names them by priority, user labels first. The result reads as subroutine and data names with hardware registers resolved, instead of a wall of addresses.
What it is
A .NET server for reverse-engineering Atari 8-bit ROMs, XEX binaries and ATR disk images. Multi-pass disassembly separates code from data and generates labels, against a built-in table of the Atari hardware registers.
What you get
- Binaries and disk images loaded and inspected — load_rom, rom_info, atr_info, atr_header, load_atr_file, load_atr_boot, list_atr_directory, analyze_boot_sector, sector_dump, search_boot_sector
- ATRs written to: files extracted and injected copy-on-write, images created from scratch, raw sectors written, and a custom layout defined for non-DOS disks — extract_atr_file, inject_atr_file, create_atr, write_atr_sector, write_atr_file, define_filesystem
- 6502 disassembly in listing, ca65, atasm or mac65 format, with analysis generating labels, splitting code from data and emitting segment and procedure directives — disassemble, analyze_disassembly, hex_dump
- Segments defined, listed and cleared by type, and a cc65 linker configuration generated from them — define_segment, remove_segment, list_segments, clear_segments, generate_linker_config
- Analysis — x_ref, find_pattern with wildcards, find_strings, trace_control_flow, probe_data with confidence scoring, generate_callgraph, analyze_coverage, diff_roms
- Symbols and zero page — define_symbol, remove_symbol, lookup_symbol, list_symbols, set_symbols to switch groups on and off, load_labels and save_labels to a sidecar file, annotate_zero_page, show_zero_page_map
- A hardware symbol table of over 200 entries covering GTIA, POKEY, PIA, ANTIC and OS ROM entry points
- Batch work through run_script, plus calculate, hex_to_decimal and decimal_to_hex
Requirements
.NET SDK 10.0 or newer, on Linux, macOS or Windows. Build with dotnet build, then launch either dotnet run --project AtariHackerMCP or the published executable over stdio.
Setup effort
Build from source — get the source and build it, then follow the project's own run instructions
USE CASES
Understanding a ROM nobody documented
Disassemble with analysis on and get generated labels, code and data separated, and procedure headers listing what each subroutine calls.
Working out what a byte range holds
Probe the range and get a data type back with a confidence score — text, graphics, table, charset, display list, sprite or map data.
Getting a file off a disk image and back on
List the directory, extract the file, then inject the modified version copy-on-write so the original image stays intact.
Building a labelled project you can reassemble
Define segments by type, save your labels to a sidecar file, and generate a cc65 linker configuration from the segments you set.
Comparing two versions of a binary
Diff two ROMs or ATRs as a summary, verbose listing or hex diff, and cross-reference the addresses that changed.
45 tools
Listed in project docs. Your client may show a different list.
rom_infoatr_infoatr_headerload_atr_fileload_atr_bootlist_atr_directoryanalyze_boot_sectorsector_dumpsearch_boot_sectorextract_atr_fileinject_atr_filecreate_atrwrite_atr_sectorwrite_atr_filedefine_filesystemhex_dumpdisassembleanalyze_disassemblydefine_segmentremove_segmentlist_segmentsclear_segmentsgenerate_linker_configx_reffind_patternfind_stringstrace_control_flowprobe_datagenerate_callgraphanalyze_coveragediff_romsdefine_symbolremove_symbollookup_symbollist_symbolsset_symbolsload_labelssave_labelsannotate_zero_pageshow_zero_page_maprun_scriptcalculatehex_to_decimaldecimal_to_hexBEFORE YOU INSTALL
What to know first
Tools you get
45 tools named in the project's documentation.
Requires
.NET SDK 10.0+
INSTALLATION
Connect your client
You clone and build this one yourself.
Server setup
Configuration file
{
"mcpServers": {
"atari-hacker": {
"command": "dotnet",
"args": [
"run",
"--project",
"<YOUR_PATH_TO_ATARI_HACKER_MCP>/AtariHackerMCP.csproj",
"--no-build"
]
}
}
}dotnet
dotnet build