{
  "_notes": [
    "Compiled by HorsePin",
    "2025-02: Tested on all three System 9 games by Tom Collins",
    "2025-07: Split sorcr to separate file (12K ROM vs 16K ROM)",
    "2025-09: Add game_state, audits, adjustments.",
    "Split from generic.map.json: Space Shuttle's Match adjustment has a third setting (Fancy Match) that Comet does not."
  ],
  "_fileformat": 0.8,
  "_metadata": {
    "version": 1,
    "copyright": [
      "Copyright (C) 2022 https://github.com/horseyhorsey",
      "Copyright (C) 2025 by Tom Collins <tom@scorbit.io>"
    ],
    "license": "GNU Lesser General Public License v3.0",
    "platform": "williams-system9-16K",
    "roms": [
      "sshtl_l7"
    ]
  },
  "game_state": {
    "scores": [
      {
        "label": "Player 1",
        "start": "0x38",
        "encoding": "bcd",
        "length": 4
      },
      {
        "label": "Player 2",
        "start": "0x3C",
        "encoding": "bcd",
        "length": 4
      },
      {
        "label": "Player 3",
        "start": "0x40",
        "encoding": "bcd",
        "length": 4
      },
      {
        "label": "Player 4",
        "start": "0x44",
        "encoding": "bcd",
        "length": 4
      }
    ],
    "game_over": {
      "label": "Game Over",
      "start": "0xCA",
      "encoding": "bool"
    },
    "player_count": {
      "label": "Players",
      "start": "0xCD",
      "encoding": "int",
      "offset": 1,
      "special_values": {
        "256": "n/a"
      }
    },
    "current_player": {
      "label": "Current Player",
      "start": "0xCE",
      "encoding": "int",
      "offset": 1
    },
    "credits": {
      "label": "Credits",
      "start": "0x744",
      "encoding": "bcd"
    },
    "ball_count": {
      "label": "Ball Count",
      "start": "0x78E",
      "encoding": "bcd"
    },
    "max_credits": {
      "label": "Max Credits",
      "start": "0x79A",
      "encoding": "bcd"
    },
    "free_play": {
      "_notes": "free play enabled when max_credits==0",
      "label": "Free Play",
      "start": "0x79A",
      "encoding": "bool",
      "invert": true
    },
    "current_ball": {
      "label": "Ball",
      "start": "0x58",
      "encoding": "bcd",
      "mask": "0x0F",
      "special_values": {
        "0": "n/a"
      }
    },
    "match": {
      "label": "Match",
      "start": "0x58",
      "encoding": "bcd",
      "special_values": {
        "1": "n/a",
        "2": "n/a",
        "3": "n/a",
        "4": "n/a",
        "5": "n/a"
      }
    }
  },
  "high_scores": [
    {
      "label": "High Score #1",
      "score": {
        "encoding": "bcd",
        "length": 4,
        "start": 1844
      }
    },
    {
      "label": "High Score #2",
      "score": {
        "encoding": "bcd",
        "length": 4,
        "start": 1848
      }
    },
    {
      "label": "High Score #3",
      "score": {
        "encoding": "bcd",
        "length": 4,
        "start": 1852
      }
    },
    {
      "label": "High Score #4",
      "score": {
        "encoding": "bcd",
        "length": 4,
        "start": 1856
      }
    }
  ],
  "audits": {
    "Standard Audits": {
      "01": {
        "label": "Coins, Left Chute",
        "start": "0x702",
        "length": 2,
        "encoding": "bcd"
      },
      "02": {
        "label": "Coins, Center Chute",
        "start": "0x704",
        "length": 2,
        "encoding": "bcd"
      },
      "03": {
        "label": "Coins, Right Chute",
        "start": "0x706",
        "length": 2,
        "encoding": "bcd"
      },
      "04": {
        "label": "Total Paid Credits",
        "start": "0x708",
        "length": 2,
        "encoding": "bcd"
      },
      "05": {
        "label": "Special Credits",
        "start": "0x70A",
        "length": 2,
        "encoding": "bcd"
      },
      "06": {
        "label": "Replay Credits",
        "start": "0x70C",
        "length": 2,
        "encoding": "bcd"
      },
      "07": {
        "label": "Match Credits",
        "start": "0x70E",
        "length": 2,
        "encoding": "bcd"
      },
      "08": {
        "label": "Total Credits",
        "start": "0x710",
        "length": 2,
        "encoding": "bcd"
      },
      "09": {
        "label": "Extra Balls",
        "start": "0x712",
        "length": 2,
        "encoding": "bcd"
      },
      "10": {
        "label": "Ball Time",
        "units": "minutes",
        "start": "0x714",
        "length": 2,
        "encoding": "bcd"
      },
      "11": {
        "label": "Balls Played",
        "start": "0x716",
        "length": 2,
        "encoding": "bcd"
      },
      "14": {
        "label": "Reached Replay 1",
        "start": "0x72A",
        "length": 2,
        "encoding": "bcd"
      },
      "15": {
        "label": "Reached Replay 2",
        "start": "0x72C",
        "length": 2,
        "encoding": "bcd"
      },
      "16": {
        "label": "Reached Replay 3",
        "start": "0x72E",
        "length": 2,
        "encoding": "bcd"
      },
      "17": {
        "label": "Reached Replay 4",
        "start": "0x730",
        "length": 2,
        "encoding": "bcd"
      }
    },
    "Game Audits": {
      "42": {
        "label": "Game Audit #1",
        "start": "0x718",
        "length": 2,
        "encoding": "bcd"
      },
      "43": {
        "label": "Game Audit #2",
        "start": "0x71A",
        "length": 2,
        "encoding": "bcd"
      },
      "44": {
        "label": "Game Audit #3",
        "start": "0x71C",
        "length": 2,
        "encoding": "bcd"
      },
      "45": {
        "label": "Game Audit #4",
        "start": "0x71E",
        "length": 2,
        "encoding": "bcd"
      },
      "46": {
        "label": "Game Audit #5",
        "start": "0x720",
        "length": 2,
        "encoding": "bcd"
      },
      "47": {
        "label": "Game Audit #6",
        "start": "0x722",
        "length": 2,
        "encoding": "bcd"
      },
      "48": {
        "label": "Game Audit #7",
        "start": "0x724",
        "length": 2,
        "encoding": "bcd"
      },
      "49": {
        "label": "Game Audit #8",
        "start": "0x726",
        "length": 2,
        "encoding": "bcd"
      }
    }
  },
  "adjustments": {
    "Standard Adjustments": {
      "13a": {
        "label": "Backup High Score 1",
        "start": "0x782",
        "encoding": "bcd",
        "default": 25,
        "scale": 100000
      },
      "13b": {
        "label": "Backup High Score 2",
        "start": "0x783",
        "encoding": "bcd",
        "default": 20,
        "scale": 100000
      },
      "13c": {
        "label": "Backup High Score 3",
        "start": "0x784",
        "encoding": "bcd",
        "default": 15,
        "scale": 100000
      },
      "13d": {
        "label": "Backup High Score 4",
        "start": "0x785",
        "encoding": "bcd",
        "default": 11,
        "scale": 100000
      },
      "14": {
        "label": "First Replay Level",
        "start": "0x786",
        "encoding": "bcd",
        "default": 10,
        "scale": 100000
      },
      "15": {
        "label": "Second Replay Level",
        "start": "0x787",
        "encoding": "bcd",
        "scale": 100000
      },
      "16": {
        "label": "Third Replay Level",
        "start": "0x788",
        "encoding": "bcd",
        "scale": 100000
      },
      "17": {
        "label": "Fourth Replay Level",
        "start": "0x789",
        "encoding": "bcd",
        "scale": 100000
      },
      "18": {
        "label": "Maximum Credits",
        "start": "0x79A",
        "encoding": "bcd",
        "default": 30,
        "special_values": {
          "0": "FREE PLAY"
        }
      },
      "19": {
        "label": "Standard/Custom Pricing",
        "start": "0x79B",
        "encoding": "enum",
        "default": 1,
        "values": [
          "custom",
          "1/$0.25, 4/$1",
          "1/1DM, 2/2DM, 6/5DM",
          "1/$0.50; 2/100Y; 1/200Lire",
          "1/3F, 2/5F, 5/10F",
          "1/$0.40, 3/$1",
          "1/10p, 5/50p",
          "1/1F, 3/2F",
          "1/10F"
        ]
      },
      "20": {
        "label": "Left Coin-Slot Multiplier",
        "start": "0x79C",
        "encoding": "bcd",
        "default": 1
      },
      "21": {
        "label": "Center Coin-Slot Multiplier",
        "start": "0x79D",
        "encoding": "bcd",
        "default": 4
      },
      "22": {
        "label": "Right Coin-Slot Multiplier",
        "start": "0x79E",
        "encoding": "bcd",
        "default": 1
      },
      "23": {
        "label": "Coin Units/Credit",
        "start": "0x79F",
        "encoding": "bcd",
        "default": 1
      },
      "24": {
        "label": "Units for Bonus Credit",
        "start": "0x7A0",
        "encoding": "bcd"
      },
      "25": {
        "label": "Minimum Coin Units",
        "start": "0x7A1",
        "encoding": "bcd"
      },
      "26": {
        "label": "Match",
        "start": "0x78A",
        "encoding": "enum",
        "values": [
          "Standard Match (awards 10% replays)",
          "Match off",
          "Fancy Match"
        ]
      },
      "27": {
        "label": "Special Awards",
        "start": "0x78B",
        "encoding": "enum",
        "values": [
          "CREDIT",
          "EXTRA BALL",
          "POINTS"
        ]
      },
      "28": {
        "label": "Replay Awards",
        "start": "0x78C",
        "encoding": "enum",
        "values": [
          "CREDIT",
          "EXTRA BALL",
          "NOTHING"
        ]
      },
      "29": {
        "label": "Tilt Warnings",
        "start": "0x78D",
        "encoding": "bcd",
        "default": 3
      },
      "30": {
        "label": "Number of Balls",
        "start": "0x78E",
        "encoding": "bcd",
        "default": 3
      },
      "40": {
        "label": "Max High Score Credits",
        "start": "0x798",
        "encoding": "bcd",
        "default": 3
      },
      "41": {
        "label": "Max Extra Balls",
        "start": "0x799",
        "encoding": "bcd",
        "default": 4
      }
    },
    "Game Adjustments": {
      "31": {
        "label": "Game Adjustment #1",
        "start": "0x78F",
        "encoding": "bcd"
      },
      "32": {
        "label": "Game Adjustment #2",
        "start": "0x790",
        "encoding": "bcd"
      },
      "33": {
        "label": "Game Adjustment #3",
        "start": "0x791",
        "encoding": "bcd"
      },
      "34": {
        "label": "Game Adjustment #4",
        "start": "0x792",
        "encoding": "bcd"
      },
      "35": {
        "label": "Game Adjustment #5",
        "start": "0x793",
        "encoding": "bcd"
      },
      "36": {
        "label": "Game Adjustment #6",
        "start": "0x794",
        "encoding": "bcd"
      },
      "37": {
        "label": "Game Adjustment #7",
        "start": "0x795",
        "encoding": "bcd"
      },
      "38": {
        "label": "Game Adjustment #8",
        "start": "0x796",
        "encoding": "bcd"
      },
      "39": {
        "label": "Game Adjustment #9",
        "start": "0x797",
        "encoding": "bcd"
      }
    }
  }
}
