{
  "_notes": [
    "Operation: Thunder (1992), Gottlieb System 3, Alphanumeric, 9-digit scores",
    "Audits/Adjustments stored in triplicate at 0x680, 0x700, 0x780",
    "Based on surfnsaf.map.json."
  ],
  "_fileformat": 0.7,
  "_metadata": {
    "version": 5,
    "copyright": [
      "Copyright (C) 2025 by Tom Collins <tom@scorbit.io>"
    ],
    "license": "GNU Lesser General Public License v3.0",
    "platform": "gottlieb-system3",
    "roms": [
      "opthund"
    ]
  },
  "game_state": {
    "scores": [
      {
        "label": "Player 1",
        "encoding": "bcd",
        "nibble": "low",
        "length": 9,
        "start": "0x001"
      },
      {
        "label": "Player 2",
        "encoding": "bcd",
        "nibble": "low",
        "length": 9,
        "start": "0x00C"
      },
      {
        "label": "Player 3",
        "encoding": "bcd",
        "nibble": "low",
        "length": 9,
        "start": "0x015"
      },
      {
        "_notes": "Ignore if player_count < 4 (displaying 'BALL - X')",
        "label": "Player 4",
        "encoding": "bcd",
        "nibble": "low",
        "length": 9,
        "start": "0x020"
      }
    ],
    "credits": {
      "_notes": "mirrored to 0x53/0x54 (ascii), 0x5B1, and 0x642 as well",
      "label": "Credits",
      "start": "0x490",
      "encoding": "bcd"
    },
    "max_credits": {
      "label": "Max Credits",
      "start": "0x6C0",
      "encoding": "bcd"
    },
    "free_play": {
      "label": "Free Play",
      "start": "0x6CB",
      "encoding": "bool"
    },
    "current_ball": {
      "_notes": "set to 0 when game over; stores ASCII value (0x30 - 0x35)",
      "label": "Ball",
      "start": "0x52",
      "mask": "0x0F",
      "encoding": "bcd"
    },
    "ball_count": {
      "label": "Ball Count",
      "start": "0x6C2",
      "encoding": "bcd"
    },
    "current_player": {
      "_notes": "0-3; bit 7 (0x80) sometimes set?",
      "label": "Current Player",
      "short_label": "P#",
      "start": "0x35D",
      "encoding": "int",
      "mask": "0x0F",
      "offset": 1
    },
    "player_count": {
      "_notes": "set to 0 when game over",
      "label": "Player Count",
      "short_label": "Players",
      "start": "0x35C",
      "encoding": "int"
    },
    "game_over": {
      "label": "Game Over",
      "start": "0x35C",
      "encoding": "bool",
      "invert": true
    }
  },
  "high_scores": [
    {
      "label": "High Score #1",
      "short_label": "#1",
      "initials": {
        "start": "0x686",
        "encoding": "ch",
        "length": 3
      },
      "score": {
        "encoding": "bcd",
        "length": 4,
        "start": "0x69A",
        "scale": 10
      }
    },
    {
      "label": "High Score #2",
      "short_label": "#2",
      "initials": {
        "start": "0x68A",
        "encoding": "ch",
        "length": 3
      },
      "score": {
        "encoding": "bcd",
        "length": 4,
        "start": "0x69E",
        "scale": 10
      }
    },
    {
      "label": "High Score #3",
      "short_label": "#3",
      "initials": {
        "start": "0x68E",
        "encoding": "ch",
        "length": 3
      },
      "score": {
        "encoding": "bcd",
        "length": 4,
        "start": "0x6A2",
        "scale": 10
      }
    },
    {
      "label": "High Score #4",
      "short_label": "#4",
      "initials": {
        "start": "0x692",
        "encoding": "ch",
        "length": 3
      },
      "score": {
        "encoding": "bcd",
        "length": 4,
        "start": "0x6A6",
        "scale": 10
      }
    },
    {
      "label": "High Score #5",
      "short_label": "#5",
      "initials": {
        "start": "0x696",
        "encoding": "ch",
        "length": 3
      },
      "score": {
        "encoding": "bcd",
        "length": 4,
        "start": "0x6AA",
        "scale": 10
      }
    }
  ],
  "mode_champions": [
    {
      "label": "Five-Star General",
      "initials": {
        "start": "0x128",
        "length": 3,
        "encoding": "ch"
      }
    }
  ]
}
