{
  "_notes": [
    "Compiled by Tom Collins, based on Williams System 6 map.",
    "Flash (Williams, 1978)",
    "https://www.ipdb.org/machine.cgi?id=871",
    "Flash was originally System 4; this map is for the System 6 version.",
    "Game/player state information from Ideal Joker's 7eleven project."
  ],
  "_fileformat": 0.8,
  "_metadata": {
    "version": 3,
    "copyright": "Copyright (C) 2025 by Tom Collins <tom@tomlogic.com>",
    "license": "GNU Lesser General Public License v3.0",
    "platform": "williams-system6-6K",
    "roms": [
      "flash_l1",
      "flash_l1ff",
      "flash_t1",
      "flash_t1ff"
    ]
  },
  "game_state": {
    "credits": {
      "label": "Credits",
      "start": "0x0152",
      "length": 2,
      "encoding": "bcd"
    },
    "status": {
      "label": "Game Status",
      "start": "0x78",
      "encoding": "bits",
      "values": [
        "game over",
        "tilt",
        "EB pending",
        "EB earned",
        "ball time >1min",
        "?",
        "?",
        "playfield qualified"
      ]
    },
    "tilted": {
      "label": "Tilted",
      "start": "0x78",
      "mask": "0x02",
      "encoding": "bool"
    },
    "game_over": {
      "label": "Game Over",
      "start": "0x78",
      "mask": "0x01",
      "encoding": "bool"
    },
    "scores": [
      {
        "label": "Player 1",
        "start": "0x00",
        "length": 3,
        "encoding": "bcd",
        "scale": 10
      },
      {
        "label": "Player 2",
        "start": "0x04",
        "length": 3,
        "encoding": "bcd",
        "scale": 10
      },
      {
        "label": "Player 3",
        "start": "0x08",
        "length": 3,
        "encoding": "bcd",
        "scale": 10
      },
      {
        "label": "Player 4",
        "start": "0x0C",
        "length": 3,
        "encoding": "bcd",
        "scale": 10
      }
    ],
    "current_player": {
      "label": "Player",
      "start": "0x55",
      "encoding": "int",
      "offset": 1
    },
    "player_count": {
      "label": "Player Count",
      "start": "0x56",
      "encoding": "int",
      "offset": 1
    },
    "current_ball": {
      "label": "Ball",
      "start": "0x03",
      "encoding": "bcd"
    },
    "ball_count": {
      "label": "Ball Count",
      "start": "0x01A3",
      "length": 2,
      "encoding": "bcd"
    },
    "extra_balls": {
      "label": "Extra Balls",
      "start": "0x5B",
      "encoding": "int"
    },
    "max_credits": {
      "label": "Maximum Credits",
      "start": "0x018B",
      "length": 2,
      "encoding": "bcd"
    },
    "free_play": {
      "_notes": "Free Play enabled when Max Credits == 0",
      "label": "Free Play",
      "start": "0x018B",
      "length": 2,
      "encoding": "bool",
      "invert": true
    }
  },
  "player_state": {
    "_notes": "yet to be decoded",
    "_offsets": [
      0,
      18,
      36,
      54
    ],
    "raw": {
      "start": "0x94",
      "length": 18,
      "encoding": "raw"
    }
  },
  "high_scores": [
    {
      "label": "First Place",
      "short_label": "1st",
      "score": {
        "start": "0x0148",
        "encoding": "bcd",
        "length": 6
      }
    }
  ],
  "audits": {
    "Standard Audits": {
      "01": {
        "label": "Coins, left chute",
        "start": "0x0106",
        "length": 6,
        "encoding": "bcd"
      },
      "02": {
        "label": "Coins, center chute",
        "start": "0x010C",
        "length": 6,
        "encoding": "bcd"
      },
      "03": {
        "label": "Coins, right chute",
        "start": "0x0112",
        "length": 6,
        "encoding": "bcd"
      },
      "04": {
        "label": "Total Paid Credits",
        "start": "0x0118",
        "length": 6,
        "encoding": "bcd"
      },
      "05": {
        "label": "Special Credits",
        "start": "0x011E",
        "length": 6,
        "encoding": "bcd"
      },
      "06": {
        "label": "Replay Score Credits",
        "start": "0x0124",
        "length": 6,
        "encoding": "bcd"
      },
      "07": {
        "label": "Match Credits",
        "start": "0x012A",
        "length": 6,
        "encoding": "bcd"
      },
      "08": {
        "label": "Total Credits",
        "start": "0x0130",
        "length": 6,
        "encoding": "bcd"
      },
      "09": {
        "label": "Total Extra Balls",
        "start": "0x0136",
        "length": 6,
        "encoding": "bcd"
      },
      "10": {
        "label": "Total Ball Time",
        "start": "0x013C",
        "length": 6,
        "encoding": "bcd",
        "units": "minutes"
      },
      "11": {
        "label": "Total Balls Played",
        "start": "0x0142",
        "length": 6,
        "encoding": "bcd"
      },
      "12": {
        "label": "Current HSTD",
        "start": "0x0148",
        "encoding": "bcd",
        "length": 6
      },
      "99": {
        "label": "Check Byte",
        "start": "0x017F",
        "length": 2,
        "encoding": "int",
        "special_values": {
          "90": "valid"
        }
      }
    }
  },
  "adjustments": {
    "Standard Adjustments": {
      "13": {
        "label": "Backup HSTD",
        "start": "0x0181",
        "length": 2,
        "encoding": "bcd",
        "scale": 10000
      },
      "14": {
        "label": "Replay 1 Score",
        "start": "0x0183",
        "length": 2,
        "encoding": "bcd",
        "scale": 10000
      },
      "15": {
        "label": "Replay 2 Score",
        "start": "0x0185",
        "length": 2,
        "encoding": "bcd",
        "scale": 10000
      },
      "16": {
        "label": "Replay 3 Score",
        "start": "0x0187",
        "length": 2,
        "encoding": "bcd",
        "scale": 10000
      },
      "17": {
        "label": "Replay 4 Score",
        "start": "0x0189",
        "length": 2,
        "encoding": "bcd",
        "scale": 10000
      },
      "18": {
        "label": "Maximum Credits",
        "start": "0x018B",
        "length": 2,
        "encoding": "bcd",
        "special_values": {
          "0": "Free Play"
        }
      },
      "19": {
        "label": "Pricing Control",
        "start": "0x018D",
        "length": 2,
        "encoding": "bcd",
        "min": 0,
        "max": 7,
        "special_values": {
          "0": "Manual",
          "1": "1/$0.25, 3/$0.50",
          "2": "1/$0.25",
          "3": "1/1DM, 3/2DM, 14/5DM",
          "4": "1/1F, 6/5F",
          "5": "1/1F, 7/5F",
          "6": "1/25 Cent, 4/Guilder",
          "7": "1/50Y, 2/100Y"
        }
      },
      "20": {
        "label": "Left Coin Slot Multiplier",
        "start": "0x018F",
        "length": 2,
        "encoding": "bcd"
      },
      "21": {
        "label": "Center Coin Slot Multiplier",
        "start": "0x0191",
        "length": 2,
        "encoding": "bcd"
      },
      "22": {
        "label": "Right Coin Slot Multiplier",
        "start": "0x0193",
        "length": 2,
        "encoding": "bcd"
      },
      "23": {
        "label": "Coin Units Required for Credit",
        "start": "0x0195",
        "length": 2,
        "encoding": "bcd"
      },
      "24": {
        "label": "Coin Units Bonus Point",
        "start": "0x0197",
        "length": 2,
        "encoding": "bcd"
      },
      "25": {
        "label": "HSTD Credits",
        "start": "0x0199",
        "length": 2,
        "encoding": "bcd"
      },
      "26": {
        "label": "Match",
        "start": "0x019B",
        "length": 2,
        "encoding": "enum",
        "values": [
          "On",
          "Off"
        ]
      },
      "27": {
        "label": "Special Awards",
        "start": "0x019D",
        "length": 2,
        "encoding": "enum",
        "values": [
          "Credit",
          "Extra/Bonus Ball",
          "Points"
        ]
      },
      "28": {
        "label": "Replay Award",
        "start": "0x019F",
        "length": 2,
        "encoding": "enum",
        "values": [
          "Credit",
          "Extra/Bonus Ball"
        ]
      },
      "29": {
        "label": "Tilt Warnings",
        "start": "0x01A1",
        "length": 2,
        "encoding": "bcd",
        "min": 1,
        "max": 9
      },
      "30": {
        "label": "Number of Balls",
        "start": "0x01A3",
        "length": 2,
        "encoding": "bcd"
      }
    },
    "Game Adjustments": {
      "31": {
        "label": "Background Sound",
        "start": "0x01A5",
        "length": 2,
        "encoding": "enum",
        "values": [
          "off",
          "on"
        ]
      },
      "32": {
        "label": "SUPER FLASH Scoring",
        "start": "0x01A7",
        "length": 2,
        "encoding": "enum",
        "values": [
          "awards 50,000 points",
          "awards extra ball"
        ]
      },
      "33": {
        "label": "SUPER FLASH Restore",
        "start": "0x01A9",
        "length": 2,
        "encoding": "enum",
        "values": [
          "restores",
          "does not restore"
        ]
      },
      "34": {
        "label": "Extra Ball Control",
        "start": "0x01AB",
        "length": 2,
        "encoding": "enum",
        "values": [
          "extra ball allowed",
          "no extra ball"
        ]
      },
      "35A": {
        "label": "Eject Hole Lamps",
        "start": "0x01AD",
        "length": 1,
        "encoding": "enum",
        "values": [
          "restored",
          "not restored"
        ]
      },
      "35B": {
        "label": "5,000 Lamp",
        "start": "0x01AE",
        "length": 1,
        "encoding": "enum",
        "values": [
          "N/A",
          "lit initially",
          "not lit initially"
        ],
        "min": 1,
        "max": 2
      }
    }
  }
}
