{
  "_notes": [
    "Compiled by Tom Collins, based on Williams System 6 map.",
    "Alien Poker (Williams, 1980)",
    "https://www.ipdb.org/machine.cgi?id=48",
    "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": [
      "alpok_f6",
      "alpok_f6ff",
      "alpok_l2",
      "alpok_l2ff",
      "alpok_l6",
      "alpok_l6ff"
    ]
  },
  "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,
        "scale": 10
      }
    }
  ],
  "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,
        "scale": 10
      },
      "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": 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": "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"
      },
      "26A": {
        "label": "Extra Balls",
        "start": "0x019B",
        "length": 1,
        "encoding": "enum",
        "values": [
          "1 EB/Ball",
          "Multiple EBs/Ball"
        ]
      },
      "26B": {
        "label": "Match",
        "start": "0x019C",
        "length": 1,
        "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": {
      "31A": {
        "label": "POKER lamp memory",
        "start": "0x01A5",
        "length": 1,
        "encoding": "enum",
        "values": [
          "no memory",
          "lamps on memory"
        ]
      },
      "31B": {
        "label": "POKER 'P' lamp",
        "start": "0x01A6",
        "length": 1,
        "encoding": "enum",
        "values": [
          "not lit initially",
          "lit initially"
        ]
      },
      "32": {
        "label": "Extra Ball Control",
        "start": "0x01A7",
        "length": 2,
        "encoding": "enum",
        "values": [
          "lites with 'K' lamp",
          "no extra ball"
        ]
      },
      "33A": {
        "label": "Background Sound",
        "start": "0x01A9",
        "length": 1,
        "encoding": "enum",
        "values": [
          "on",
          "off"
        ]
      },
      "33B": {
        "label": "Ace Eject Hole Memory",
        "start": "0x01AA",
        "length": 1,
        "encoding": "enum",
        "values": [
          "no lamp memory",
          "lamps on memory"
        ]
      },
      "34": {
        "label": "Extra Ball Lamp Memory",
        "start": "0x01AB",
        "length": 2,
        "encoding": "enum",
        "values": [
          "lamp on memory",
          "no lamp memory"
        ]
      },
      "35A": {
        "label": "Attract Mode Sounds",
        "start": "0x01AD",
        "length": 1,
        "encoding": "enum",
        "values": [
          "on",
          "off"
        ]
      },
      "35B": {
        "label": "Royal Flush Value Memory",
        "start": "0x01AE",
        "length": 1,
        "encoding": "enum",
        "values": [
          "lamps on memory",
          "lamps reset to 100K"
        ]
      }
    }
  }
}
