{
  "_notes": [
    "Compiled by Francis De Brabandere.",
    "Generic map valid for all Williams System 7 games.",
    "Game-specific audits/adjustments vary from game to game.",
    "Rat Race (Williams 1983) not tested.",
    "Thunderball (Williams 1982) not tested.",
    "Varkon (Williams 1982) not tested.",
    "2025-04 v0.2: Tom Collins updated with information from Jess Askey",
    "http://gamearchive.askey.org/Pinball/Manufacturers/Williams/PinBuilder/text/williams_lvl7_programming.html",
    "Game/player state information from Ideal Joker's 7eleven project."
  ],
  "_fileformat": 0.8,
  "_metadata": {
    "version": 4,
    "copyright": [
      "Copyright (C) 2024 by Francis De Brabandere <francisdb@gmail.com>",
      "Copyright (C) 2025 by Tom Collins <tom@scorbit.io>"
    ],
    "license": "GNU Lesser General Public License v3.0",
    "platform": "williams-system7-12K",
    "roms": [
      "dfndr_l4",
      "hypbl_l6",
      "ratrc_l1",
      "strlt_l1",
      "thund_p2",
      "thund_p3"
    ]
  },
  "game_state": {
    "credits": {
      "label": "Credits",
      "start": "0x016E",
      "length": 2,
      "encoding": "bcd"
    },
    "scores": [
      {
        "label": "Player 1",
        "start": "0x38",
        "length": 4,
        "encoding": "bcd"
      },
      {
        "label": "Player 2",
        "start": "0x3C",
        "length": 4,
        "encoding": "bcd"
      },
      {
        "label": "Player 3",
        "start": "0x40",
        "length": 4,
        "encoding": "bcd"
      },
      {
        "label": "Player 4",
        "start": "0x44",
        "length": 4,
        "encoding": "bcd"
      }
    ],
    "tilted": {
      "_notes": "2 when tilted",
      "label": "Tilted",
      "start": "0xC8",
      "encoding": "bool"
    },
    "tilt_warnings": {
      "label": "Tilt Warnings",
      "start": "0xD3",
      "encoding": "int"
    },
    "game_over": {
      "label": "Game Over",
      "start": "0xC9",
      "encoding": "bool"
    },
    "playfield_valid": {
      "_notes": "0 with ball in shooter lane, 4 when valid?",
      "label": "Playfield Valid",
      "start": "0xD6",
      "encoding": "int"
    },
    "self_test": {
      "label": "Self Test",
      "start": "0xCB",
      "encoding": "int"
    },
    "player_count": {
      "label": "Players",
      "start": "0xCC",
      "encoding": "int",
      "offset": 1
    },
    "current_player": {
      "label": "Current Player",
      "start": "0xCD",
      "encoding": "int",
      "offset": 1
    },
    "current_ball": {
      "label": "Ball",
      "start": "0x58",
      "encoding": "bcd",
      "mask": "0x0F"
    },
    "ball_count": {
      "label": "Ball Count",
      "start": "0x0193",
      "length": 2,
      "encoding": "bcd"
    },
    "extra_balls": {
      "label": "Extra Balls",
      "start": "0xD0",
      "encoding": "int"
    },
    "bonus_time": {
      "_notes": "0xFF if in Bonus Ball Time at end of game; countdown is bcd at 0x0C",
      "label": "Bonus Time",
      "start": "0xCA",
      "encoding": "int"
    },
    "max_credits": {
      "label": "Maximum Credits",
      "start": "0x01AB",
      "length": 2,
      "encoding": "bcd"
    },
    "free_play": {
      "_notes": "free play enabled when max_credits==0",
      "label": "Free Play",
      "start": "0x01AB",
      "length": 2,
      "encoding": "bool",
      "invert": true
    }
  },
  "high_scores": [
    {
      "label": "First Place",
      "short_label": "1st",
      "score": {
        "start": "0x0166",
        "encoding": "bcd",
        "length": 8
      }
    }
  ],
  "audits": {
    "Standard Audits": {
      "01": {
        "label": "Coins, left chute",
        "start": "0x0102",
        "length": 4,
        "encoding": "bcd"
      },
      "02": {
        "label": "Coins, center chute",
        "start": "0x0106",
        "length": 4,
        "encoding": "bcd"
      },
      "03": {
        "label": "Coins, right chute",
        "start": "0x010A",
        "length": 4,
        "encoding": "bcd"
      },
      "04": {
        "label": "Total Paid Credits",
        "start": "0x010E",
        "length": 4,
        "encoding": "bcd"
      },
      "05": {
        "label": "Special Credits",
        "start": "0x0112",
        "length": 4,
        "encoding": "bcd"
      },
      "06": {
        "label": "Replay Score Credits",
        "start": "0x0116",
        "length": 4,
        "encoding": "bcd"
      },
      "07": {
        "label": "Match Credits",
        "start": "0x011A",
        "length": 4,
        "encoding": "bcd"
      },
      "08": {
        "label": "Total Credits",
        "start": "0x011E",
        "length": 4,
        "encoding": "bcd"
      },
      "09": {
        "label": "Total Extra Balls",
        "start": "0x0122",
        "length": 4,
        "encoding": "bcd"
      },
      "10": {
        "label": "Ball Time",
        "start": "0x0126",
        "length": 4,
        "encoding": "bcd",
        "units": "minutes"
      },
      "11": {
        "label": "Total Balls Played",
        "start": "0x012A",
        "length": 4,
        "encoding": "bcd"
      },
      "12": {
        "label": "Current HSTD",
        "start": "0x0166",
        "encoding": "bcd",
        "length": 8
      },
      "13": {
        "label": "HSTD Credits",
        "start": "0x014E",
        "length": 4,
        "encoding": "bcd"
      },
      "14": {
        "label": "Replay 1 Awarded",
        "start": "0x0152",
        "length": 4,
        "encoding": "bcd"
      },
      "15": {
        "label": "Replay 2 Awarded",
        "start": "0x0156",
        "length": 4,
        "encoding": "bcd"
      },
      "16": {
        "label": "Replay 3 Awarded",
        "start": "0x015A",
        "length": 4,
        "encoding": "bcd"
      },
      "17": {
        "label": "Replay 4 Awarded",
        "start": "0x015E",
        "length": 4,
        "encoding": "bcd"
      }
    },
    "Game Audits": {
      "42": {
        "label": "Game Audit 1",
        "start": "0x012E",
        "length": 4,
        "encoding": "bcd"
      },
      "43": {
        "label": "Game Audit 2",
        "start": "0x0132",
        "length": 4,
        "encoding": "bcd"
      },
      "44": {
        "label": "Game Audit 3",
        "start": "0x0136",
        "length": 4,
        "encoding": "bcd"
      },
      "45": {
        "label": "Game Audit 4",
        "start": "0x013A",
        "length": 4,
        "encoding": "bcd"
      },
      "46": {
        "label": "Game Audit 5",
        "start": "0x013E",
        "length": 4,
        "encoding": "bcd"
      },
      "47": {
        "label": "Game Audit 6",
        "start": "0x0142",
        "length": 4,
        "encoding": "bcd"
      },
      "48": {
        "label": "Game Audit 7",
        "start": "0x0146",
        "length": 4,
        "encoding": "bcd"
      },
      "49": {
        "label": "Burn-In Cycles",
        "start": "0x014A",
        "length": 4,
        "encoding": "bcd"
      },
      "99": {
        "label": "CMOS Checksum",
        "start": "0x017D",
        "length": 4,
        "encoding": "int",
        "special_values": {
          "45733": "valid"
        }
      }
    }
  },
  "adjustments": {
    "Standard Adjustments": {
      "13": {
        "label": "Backup HSTD",
        "start": "0x0181",
        "length": 2,
        "encoding": "bcd",
        "scale": 100000
      },
      "14": {
        "label": "Replay 1 Score",
        "start": "0x0183",
        "length": 2,
        "encoding": "bcd",
        "scale": 100000
      },
      "15": {
        "label": "Replay 2 Score",
        "start": "0x0185",
        "length": 2,
        "encoding": "bcd",
        "scale": 100000
      },
      "16": {
        "label": "Replay 3 Score",
        "start": "0x0187",
        "length": 2,
        "encoding": "bcd",
        "scale": 100000
      },
      "17": {
        "label": "Replay 4 Score",
        "start": "0x0189",
        "length": 2,
        "encoding": "bcd",
        "scale": 100000
      },
      "18": {
        "label": "Maximum Credits",
        "start": "0x01AB",
        "length": 2,
        "encoding": "bcd",
        "special_values": {
          "0": "Free Play"
        }
      },
      "19": {
        "label": "Pricing Control",
        "start": "0x01AD",
        "length": 2,
        "encoding": "bcd",
        "min": 0,
        "max": 8,
        "special_values": {
          "0": "Manual",
          "1": "1/$0.25, 4/$1",
          "2": "1/1DM, 3/2DM, 10/5DM",
          "3": "1/$0.50, 3/$1, 6/$2",
          "4": "1/2F, 3/5F only, 8/10F only",
          "5": "1/$0.50, 2/$0.75, 3/$1",
          "6": "1/25 Cent, 4/Guilder",
          "7": "1/5F, 2/10F or 1/10F, 2/20F",
          "8": "1/10F"
        }
      },
      "20": {
        "label": "Left Coin Slot Multiplier",
        "start": "0x01AF",
        "length": 2,
        "encoding": "bcd"
      },
      "21": {
        "label": "Center Coin Slot Multiplier",
        "start": "0x01B1",
        "length": 2,
        "encoding": "bcd"
      },
      "22": {
        "label": "Right Coin Slot Multiplier",
        "start": "0x01B3",
        "length": 2,
        "encoding": "bcd"
      },
      "23": {
        "label": "Coin Units Required for Credit",
        "start": "0x01B5",
        "length": 2,
        "encoding": "bcd"
      },
      "24": {
        "label": "Coin Units Bonus Point",
        "start": "0x01B7",
        "length": 2,
        "encoding": "bcd"
      },
      "25": {
        "label": "Minimum Coin Units",
        "start": "0x01B9",
        "length": 2,
        "encoding": "bcd"
      },
      "26": {
        "label": "Match",
        "start": "0x018B",
        "length": 2,
        "encoding": "enum",
        "values": [
          "On",
          "Off"
        ]
      },
      "27": {
        "label": "Special Awards",
        "start": "0x018D",
        "length": 2,
        "encoding": "enum",
        "values": [
          "Credit",
          "Extra/Bonus Ball",
          "Points"
        ]
      },
      "28": {
        "label": "Replay Award",
        "start": "0x018F",
        "length": 2,
        "encoding": "enum",
        "values": [
          "Credit",
          "Extra/Bonus Ball"
        ]
      },
      "29": {
        "label": "Tilt Warnings",
        "start": "0x0191",
        "length": 2,
        "encoding": "bcd"
      },
      "30": {
        "label": "Number of Balls",
        "start": "0x0193",
        "length": 2,
        "encoding": "bcd"
      },
      "40": {
        "label": "HSTD Credits",
        "start": "0x01A7",
        "length": 2,
        "encoding": "bcd"
      },
      "41": {
        "label": "Maximum Extra Balls",
        "start": "0x01A9",
        "length": 2,
        "encoding": "bcd"
      }
    },
    "Game Adjustments": {
      "31": {
        "label": "Game Adjust 1",
        "start": "0x0195",
        "length": 2,
        "encoding": "bcd"
      },
      "32": {
        "label": "Game Adjust 2",
        "start": "0x0197",
        "length": 2,
        "encoding": "bcd"
      },
      "33": {
        "label": "Game Adjust 3",
        "start": "0x0199",
        "length": 2,
        "encoding": "bcd"
      },
      "34": {
        "label": "Game Adjust 4",
        "start": "0x019B",
        "length": 2,
        "encoding": "bcd"
      },
      "35": {
        "label": "Game Adjust 5",
        "start": "0x019D",
        "length": 2,
        "encoding": "bcd"
      },
      "36": {
        "label": "Game Adjust 6",
        "start": "0x019F",
        "length": 2,
        "encoding": "bcd"
      },
      "37": {
        "label": "Game Adjust 7",
        "start": "0x01A1",
        "length": 2,
        "encoding": "bcd"
      },
      "38": {
        "label": "Game Adjust 8",
        "start": "0x01A3",
        "length": 2,
        "encoding": "bcd"
      },
      "39": {
        "label": "Game Adjust 9",
        "start": "0x01A5",
        "length": 2,
        "encoding": "bcd"
      }
    }
  }
}
