yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
z3ed Doctor Commands

The doctor command suite provides diagnostic and repair tools for ROM data integrity. All commands support structured JSON output for automation.

Available Doctor Commands

Command Description
overworld-doctor Diagnose/repair overworld data (tile16, pointers, ZSCustom features)
overworld-validate Validate map32 pointers and decompression
dungeon-doctor Diagnose dungeon room data (objects, sprites, chests)
rom-doctor Validate ROM file integrity (header, checksums, expansions)
rom-compare Compare two ROMs for differences

Common Flags

All doctor commands support:

  • --rom <path> - Path to ROM file (required)
  • --format json|text - Output format (default: text)
  • --verbose - Show detailed output

overworld-doctor

Diagnose and repair overworld data corruption.

# Basic diagnosis
z3ed overworld-doctor --rom zelda3.sfc
# Compare against vanilla baseline
z3ed overworld-doctor --rom zelda3.sfc --baseline vanilla.sfc
# Apply fixes with dry-run preview
z3ed overworld-doctor --rom zelda3.sfc --fix --output fixed.sfc --dry-run
# JSON output for agents
z3ed overworld-doctor --rom zelda3.sfc --format json

Detects

  • ZSCustomOverworld version (Vanilla, v2, v3)
  • Expanded tile16/tile32 regions
  • Expanded pointer tables (tail map support)
  • Tile16 corruption at known problem addresses
  • Map pointer validity for all 160+ maps

dungeon-doctor

Diagnose dungeon room data integrity.

# Sample key rooms (fast)
z3ed dungeon-doctor --rom zelda3.sfc
# Analyze all 296 rooms
z3ed dungeon-doctor --rom zelda3.sfc --all
# Analyze specific room
z3ed dungeon-doctor --rom zelda3.sfc --room 0x10
# JSON output
z3ed dungeon-doctor --rom zelda3.sfc --format json --verbose

Validates

  • Room header pointers
  • Object counts (max 400 before lag)
  • Sprite counts (max 64 per room)
  • Chest counts (max 6 per room for item flags)
  • Object bounds (0-63 for x/y coordinates)

Sample Output (Text)

╔═══════════════════════════════════════════════════════════════╗
║ DUNGEON DOCTOR ║
╠═══════════════════════════════════════════════════════════════╣
║ Rooms Analyzed: 19 ║
║ Valid Rooms: 19 ║
║ Rooms with Warnings: 0 ║
║ Rooms with Errors: 0 ║
╠═══════════════════════════════════════════════════════════════╣
║ Total Objects: 890 ║
║ Total Sprites: 98 ║
╚═══════════════════════════════════════════════════════════════╝

rom-doctor

Validate ROM file integrity and expansion status.

# Basic validation
z3ed rom-doctor --rom zelda3.sfc
# Verbose with all findings
z3ed rom-doctor --rom zelda3.sfc --verbose
# JSON output for CI/automation
z3ed rom-doctor --rom zelda3.sfc --format json

Validates

  • SNES header (title, map mode, country)
  • Checksum verification (complement XOR checksum = 0xFFFF)
  • ROM size (vanilla 1MB vs expanded 2MB)
  • ZSCustomOverworld version detection
  • Expansion flags (tile16, tile32, pointer tables)
  • Free space analysis in expansion region

Sample Output (Text)

╔═══════════════════════════════════════════════════════════════╗
║ ROM DOCTOR ║
╠═══════════════════════════════════════════════════════════════╣
║ ROM Title: THE LEGEND OF ZELDA ║
║ Size: 0x200000 bytes (2048 KB) ║
║ Map Mode: LoROM ║
║ Country: USA ║
╠═══════════════════════════════════════════════════════════════╣
║ Checksum: 0xAF0D (complement: 0x50F2) - VALID ║
║ ZSCustomOverworld: Vanilla ║
║ Expanded Tile16: NO ║
║ Expanded Tile32: NO ║
║ Expanded Ptr Tables: NO ║
╚═══════════════════════════════════════════════════════════════╝

rom-compare

Compare two ROMs to identify differences.

# Basic comparison
z3ed rom-compare --rom my_rom.sfc --baseline vanilla.sfc
# Show detailed byte differences
z3ed rom-compare --rom my_rom.sfc --baseline vanilla.sfc --show-diff
# JSON output
z3ed rom-compare --rom my_rom.sfc --baseline vanilla.sfc --format json

Diagnostic Schema

All doctor commands produce findings with consistent structure:

{
"findings": [
{
"id": "tile16_corruption",
"severity": "error",
"message": "Corrupted tile16 at 0x1E878B",
"location": "0x1E878B",
"suggested_action": "Run with --fix to zero corrupted entries",
"fixable": true
}
],
"summary": {
"total_findings": 1,
"critical": 0,
"errors": 1,
"warnings": 0,
"info": 0,
"fixable": 1
}
}

Severity Levels

  • info - Informational, no action needed
  • warning - Potential issue, may need attention
  • error - Problem detected, should be fixed
  • critical - Severe issue, requires immediate attention

Agent Usage

For AI agents consuming doctor output:

# Get structured JSON for parsing
z3ed rom-doctor --rom zelda3.sfc --format json
# Chain with jq for specific fields
z3ed rom-doctor --rom zelda3.sfc --format json | jq '.checksum_valid'
# Check exit code for pass/fail
z3ed rom-doctor --rom zelda3.sfc --format json && echo "ROM OK"