{
  "_notes": [
    "0.1: Compiled by Horsepin.",
    "0.2: Switch from `packed` to `nibble`;",
    "     added `mask` to initials to get uppercase (Tom Collins)",
    "(only some entries have low nibble, so don't set _nibble for entire file)",
    "2025-11: Tom Collins added more game state",
    "2026-01: v5, Tom Collins fixed score addresses"
  ],
  "_fileformat": 0.8,
  "_metadata": {
    "version": 5,
    "copyright": [
      "Copyright (C) 2016 by Horsepin",
      "Copyright (C) 2025 by Tom Collins <tom@scorbit.io>"
    ],
    "license": "GNU Lesser General Public License v3.0",
    "platform": "dataeast",
    "roms": [
      "robo_a30"
    ]
  },
  "game_state": {
    "scores": [
      {
        "label": "Player 1",
        "start": "0x1A6",
        "encoding": "bcd",
        "length": 7,
        "nibble": "low"
      },
      {
        "label": "Player 2",
        "start": "0x24B",
        "encoding": "bcd",
        "length": 7,
        "nibble": "low"
      },
      {
        "label": "Player 3",
        "start": "0x2F0",
        "encoding": "bcd",
        "length": 7,
        "nibble": "low"
      },
      {
        "label": "Player 4",
        "start": "0x395",
        "encoding": "bcd",
        "length": 7,
        "nibble": "low"
      }
    ],
    "credits": {
      "label": "Credits",
      "start": "0x1DC9",
      "encoding": "int"
    },
    "max_credits": {
      "label": "Maximum Credits",
      "start": "0x1F31",
      "encoding": "int"
    },
    "free_play": {
      "label": "Free Play",
      "start": "0x1F47",
      "encoding": "bool"
    },
    "current_player": {
      "label": "Current Player",
      "start": "0x173F",
      "encoding": "int"
    },
    "player_count": {
      "label": "Player Count",
      "start": "0x173B",
      "encoding": "int"
    },
    "current_ball": {
      "label": "Current Ball",
      "start": "0x173D",
      "encoding": "int"
    },
    "ball_count": {
      "label": "Ball Count",
      "start": "0x1F2B",
      "encoding": "int"
    },
    "game_over": {
      "_notes": "0xFF for game over, 0x00 when in game",
      "label": "Game Over",
      "start": "0x173C",
      "encoding": "bool"
    }
  },
  "high_scores": [
    {
      "label": "Commander",
      "short_label": "GC",
      "initials": {
        "start": 7271,
        "encoding": "ch",
        "length": 3,
        "mask": "0xDF"
      },
      "score": {
        "start": 7264,
        "encoding": "bcd",
        "length": 7,
        "nibble": "low"
      }
    },
    {
      "label": "1st Place",
      "short_label": "1st",
      "initials": {
        "start": 7283,
        "encoding": "ch",
        "length": 3,
        "mask": "0xDF"
      },
      "score": {
        "start": 7276,
        "encoding": "bcd",
        "length": 7,
        "nibble": "low"
      }
    },
    {
      "label": "2nd Place",
      "short_label": "2nd",
      "initials": {
        "start": 7295,
        "encoding": "ch",
        "length": 3,
        "mask": "0xDF"
      },
      "score": {
        "start": 7288,
        "encoding": "bcd",
        "length": 7,
        "nibble": "low"
      }
    },
    {
      "label": "3rd Place",
      "short_label": "3rd",
      "initials": {
        "start": 7307,
        "encoding": "ch",
        "length": 3,
        "mask": "0xDF"
      },
      "score": {
        "start": 7300,
        "encoding": "bcd",
        "length": 7,
        "nibble": "low"
      }
    }
  ],
  "mode_champions": [
    {
      "label": "Jump Master",
      "short_label": "Jump Master",
      "initials": {
        "start": 7327,
        "encoding": "ch",
        "length": 3,
        "mask": "0xDF"
      },
      "score": {
        "start": 7320,
        "encoding": "int",
        "length": 1,
        "suffix": " Jumps"
      }
    }
  ],
  "adjustments": {
    "Feature Adjustments": {
      "01": {
        "label": "Replay Manual",
        "start": 7939,
        "encoding": "int",
        "min": 0,
        "max": 50,
        "default": 12,
        "special_values": {
          "0": "FIXED"
        }
      },
      "02": {
        "label": "Start Replay",
        "start": 7941,
        "encoding": "int",
        "min": 0,
        "max": 9900000,
        "default": 2400000,
        "scale": 100000
      },
      "03": {
        "label": "Levels Replay",
        "start": 7943,
        "encoding": "int",
        "min": 1,
        "max": 4,
        "default": 1
      },
      "06": {
        "label": "Easy Rules",
        "start": 7949,
        "encoding": "enum",
        "default": 0,
        "values": [
          "OFF",
          "ON"
        ]
      },
      "07": {
        "label": "Factory Rules",
        "start": 7951,
        "encoding": "enum",
        "values": [
          "OFF",
          "ON"
        ]
      },
      "08": {
        "label": "Hard Rules",
        "start": 7953,
        "encoding": "enum",
        "values": [
          "OFF",
          "ON"
        ]
      },
      "09": {
        "label": "Novelty Rules",
        "start": 7955,
        "encoding": "enum",
        "values": [
          "OFF",
          "ON"
        ]
      },
      "10": {
        "label": "5 Ball Rules",
        "start": 7957,
        "encoding": "enum",
        "values": [
          "OFF",
          "ON"
        ]
      },
      "11": {
        "label": "Add A Ball Rules",
        "start": 7959,
        "encoding": "enum",
        "values": [
          "OFF",
          "ON"
        ]
      },
      "12": {
        "label": "Coins",
        "start": 7961,
        "encoding": "enum",
        "values": [
          "OFF",
          "ON"
        ]
      },
      "13": {
        "label": "Avg Ball Time",
        "start": 7963,
        "encoding": "enum",
        "values": [
          "OFF",
          "ON"
        ]
      },
      "14": {
        "label": "Coins Reset",
        "start": 7965,
        "encoding": "enum",
        "values": [
          "OFF",
          "ON"
        ]
      },
      "15": {
        "label": "Audit Reset",
        "start": 7967,
        "encoding": "enum",
        "values": [
          "OFF",
          "ON"
        ]
      },
      "16": {
        "label": "Hi Score Reset",
        "start": 7969,
        "encoding": "enum",
        "values": [
          "OFF",
          "ON"
        ]
      },
      "17": {
        "label": "Expand Adjustment",
        "start": 7971,
        "encoding": "enum",
        "values": [
          "OFF",
          "ON"
        ]
      },
      "18": {
        "label": "Award Replay",
        "start": 7973,
        "encoding": "enum",
        "values": [
          "Credits",
          "Extra Ball",
          "Audit",
          "Ticket"
        ]
      },
      "19": {
        "label": "Award Replay",
        "start": 7975,
        "encoding": "enum",
        "values": [
          "Credits",
          "Extra Ball",
          "Score",
          "Ticket"
        ]
      },
      "20": {
        "label": "Match Feature",
        "start": 7977,
        "encoding": "enum",
        "values": [
          "OFF",
          "ON"
        ]
      },
      "21": {
        "label": "Balls Game",
        "start": 7979,
        "encoding": "int",
        "min": 2,
        "max": 9,
        "default": 3
      },
      "22": {
        "label": "Warning Tilt",
        "start": 7981,
        "encoding": "int",
        "min": 0,
        "max": 5,
        "default": 1
      },
      "23": {
        "label": "Extra Balls",
        "start": 7983,
        "encoding": "int",
        "min": 0,
        "max": 5,
        "default": 3
      },
      "24": {
        "label": "Credits Limit",
        "start": 7985,
        "encoding": "int",
        "min": 2,
        "max": 99,
        "default": 30
      },
      "25": {
        "label": "High Score Feature",
        "start": 7987,
        "encoding": "enum",
        "default": 1,
        "values": [
          "OFF",
          "ON"
        ]
      },
      "26": {
        "label": "Credits HiScore 1",
        "start": 7989,
        "encoding": "int",
        "min": 0,
        "max": 9,
        "default": 3
      },
      "27": {
        "label": "Credits HiScore 2",
        "start": 7991,
        "encoding": "int",
        "min": 0,
        "max": 9,
        "default": 0
      },
      "28": {
        "label": "Credits HiScore 3",
        "start": 7993,
        "encoding": "int",
        "min": 0,
        "max": 9,
        "default": 0
      },
      "29": {
        "label": "Credits HiScore 4",
        "start": 7995,
        "encoding": "int",
        "min": 0,
        "max": 9,
        "default": 0
      },
      "30": {
        "label": "Backup HiScore 1",
        "start": 7997,
        "encoding": "int",
        "min": 0,
        "max": 9900000,
        "default": 4000000,
        "scale": 100000
      },
      "31": {
        "label": "Backup HiScore 2",
        "start": 7999,
        "encoding": "int",
        "min": 0,
        "max": 9900000,
        "default": 3500000,
        "scale": 100000
      },
      "32": {
        "label": "Backup HiScore 3",
        "start": 8001,
        "encoding": "int",
        "min": 0,
        "max": 9900000,
        "default": 3000000,
        "scale": 100000
      },
      "33": {
        "label": "Backup HiScore 4",
        "start": 8003,
        "encoding": "int",
        "min": 0,
        "max": 9900000,
        "default": 2500000,
        "scale": 100000
      },
      "34": {
        "label": "Reset Every",
        "start": 8005,
        "encoding": "int",
        "min": 1,
        "max": 9,
        "default": 7,
        "scale": 100
      },
      "35": {
        "label": "Free Play",
        "start": 8007,
        "encoding": "enum",
        "values": [
          "OFF",
          "ON"
        ]
      },
      "41": {
        "label": "Message Custom",
        "start": 8019,
        "encoding": "enum",
        "values": [
          "OFF",
          "ON",
          "CHANGE"
        ]
      },
      "42": {
        "label": "Attract Music",
        "start": 8021,
        "encoding": "enum",
        "values": [
          "OFF",
          "ON",
          "OFTEN"
        ]
      },
      "43": {
        "label": "Buy In Feature",
        "start": 8023,
        "encoding": "enum",
        "values": [
          "OFF",
          "ON"
        ]
      },
      "44": {
        "label": "Flash Lamp",
        "start": 8025,
        "encoding": "enum",
        "values": [
          "OFF",
          "ON"
        ]
      },
      "45": {
        "label": "Stand Up Seq",
        "start": 8027,
        "encoding": "enum",
        "values": [
          "EASY",
          "HARD"
        ]
      },
      "46": {
        "label": "Spinner Lamp",
        "start": 8029,
        "encoding": "enum",
        "values": [
          "EASY",
          "HARD"
        ]
      },
      "47": {
        "label": "Spot StandUp",
        "start": 8031,
        "encoding": "enum",
        "values": [
          "EASY",
          "HARD"
        ]
      },
      "48": {
        "label": "Target Practice",
        "start": 8033,
        "encoding": "enum",
        "values": [
          "EASY",
          "HARD"
        ]
      },
      "49": {
        "label": "1 Meg Target",
        "start": 8035,
        "encoding": "int",
        "min": 1,
        "max": 8,
        "default": 4
      },
      "50": {
        "label": "Laser Kick On",
        "start": 8037,
        "encoding": "enum",
        "values": [
          "EASY",
          "HARD"
        ]
      },
      "51": {
        "label": "Special Target",
        "start": 8039,
        "encoding": "int",
        "min": 1,
        "max": 8,
        "default": 5
      },
      "52": {
        "label": "2X Scores Time",
        "start": 8041,
        "encoding": "int",
        "min": 5,
        "max": 25,
        "default": 10
      },
      "53": {
        "label": "All Lit Jumps",
        "start": 8043,
        "encoding": "int",
        "min": 5,
        "max": 25,
        "default": 5
      },
      "54": {
        "label": "Scanning Extra Ball",
        "start": 8045,
        "encoding": "int",
        "min": 5,
        "max": 50,
        "default": 25
      },
      "55": {
        "label": "Factory Restore",
        "start": 8047,
        "encoding": "enum",
        "values": [
          "OFF",
          "ON"
        ]
      }
    }
  }
}
