{
  "_notes": [
    "Compiled by Tom Collins, based on pkrno_l1 (Phoenix L-1) map."
  ],
  "_fileformat": 0.8,
  "_metadata": {
    "version": 2,
    "copyright": "Copyright (C) 2025 by Tom Collins <tom@tomlogic.com>",
    "license": "GNU Lesser General Public License v3.0",
    "platform": "williams-system4",
    "roms": [
      "lucky_l1"
    ]
  },
  "game_state": {
    "credits": {
      "label": "Credits",
      "start": "0x0128",
      "length": 2,
      "encoding": "bcd"
    },
    "scores": [
      {
        "label": "Player 1",
        "start": "0x00",
        "length": 3,
        "encoding": "bcd"
      },
      {
        "label": "Player 2",
        "start": "0x04",
        "length": 3,
        "encoding": "bcd"
      },
      {
        "label": "Player 3",
        "start": "0x08",
        "length": 3,
        "encoding": "bcd"
      },
      {
        "label": "Player 4",
        "start": "0x0C",
        "length": 3,
        "encoding": "bcd"
      }
    ],
    "current_player": {
      "label": "Player",
      "start": "0x54",
      "encoding": "int",
      "offset": 1
    },
    "player_count": {
      "label": "Player Count",
      "start": "0x0F",
      "encoding": "int"
    },
    "current_ball": {
      "label": "Ball",
      "start": "0x03",
      "encoding": "bcd"
    },
    "ball_count": {
      "label": "Ball Count",
      "start": "0x0125",
      "length": 1,
      "encoding": "bcd"
    },
    "max_credits": {
      "label": "Maximum Credits",
      "start": "0x010A",
      "length": 2,
      "encoding": "bcd"
    },
    "free_play": {
      "_notes": "free play enabled when max_credits==0",
      "label": "Free Play",
      "start": "0x010A",
      "length": 2,
      "encoding": "bool",
      "invert": true
    },
    "game_over": {
      "_notes": "repurpose player count (0=game over)",
      "label": "Game Over",
      "start": "0x0F",
      "encoding": "bool",
      "invert": true
    }
  },
  "high_scores": [
    {
      "label": "First Place",
      "short_label": "1st",
      "score": {
        "start": "0x012A",
        "encoding": "bcd",
        "length": 6
      }
    }
  ],
  "audits": {
    "Standard Audits": {
      "18": {
        "label": "Current HSTD",
        "start": "0x012A",
        "encoding": "bcd",
        "length": 6
      },
      "19": {
        "label": "Coins, left chute",
        "start": "0x0130",
        "length": 6,
        "encoding": "bcd"
      },
      "20": {
        "label": "Coins, center chute",
        "start": "0x0136",
        "length": 6,
        "encoding": "bcd"
      },
      "21": {
        "label": "Coins, right chute",
        "start": "0x013C",
        "length": 6,
        "encoding": "bcd"
      },
      "22": {
        "label": "Total Paid Credits",
        "start": "0x0142",
        "length": 6,
        "encoding": "bcd"
      },
      "23": {
        "label": "Special Credits",
        "start": "0x0148",
        "length": 6,
        "encoding": "bcd"
      },
      "99": {
        "label": "Check Byte",
        "start": "0x0100",
        "length": 2,
        "encoding": "int",
        "special_values": {
          "90": "valid"
        }
      }
    }
  },
  "adjustments": {
    "Standard Adjustments": {
      "01": {
        "label": "Replay 1 Score",
        "_notes": [
          "manual calls for 0xFF to disable a replay level; unknown if 0 also works",
          "current map file format can't specify invalid BCD value to indicate this"
        ],
        "start": "0x0102",
        "length": 2,
        "encoding": "bcd",
        "scale": 10000
      },
      "02": {
        "label": "Replay 2 Score",
        "start": "0x0104",
        "length": 2,
        "encoding": "bcd",
        "scale": 10000
      },
      "03": {
        "label": "Replay 3 Score",
        "start": "0x0106",
        "length": 2,
        "encoding": "bcd",
        "scale": 10000
      },
      "04": {
        "label": "Replay 4 Score",
        "start": "0x0108",
        "length": 2,
        "encoding": "bcd",
        "scale": 10000
      },
      "05": {
        "label": "Maximum Credits",
        "start": "0x010A",
        "length": 2,
        "encoding": "bcd",
        "special_values": {
          "0": "Free Play"
        }
      },
      "06": {
        "label": "Match/Credit/Extra Ball",
        "_notes": [
          "based on manual referencing 'Chart 1', this is int and not bcd",
          "dips from chart 1: 0000, 0001, 0100, 0101"
        ],
        "start": "0x010C",
        "length": 2,
        "encoding": "int",
        "special_values": {
          "00": "match on, replay awards credit",
          "01": "match on, replay awards extra ball, no credit on special",
          "04": "match off, replay awards credit",
          "05": "match off, replay awards extra ball, no credit on special"
        }
      },
      "08": {
        "label": "HSTD Credits",
        "start": "0x0110",
        "length": 2,
        "encoding": "bcd"
      },
      "09": {
        "label": "Left Coin Slot Multiplier",
        "_notes": "pricing (09-14) reference 'Chart 1' so they are integers and not bcd",
        "start": "0x0118",
        "length": 2,
        "encoding": "int"
      },
      "10": {
        "label": "Center Coin Slot Multiplier",
        "start": "0x011A",
        "length": 2,
        "encoding": "int"
      },
      "11": {
        "label": "Right Coin Slot Multiplier",
        "start": "0x011C",
        "length": 2,
        "encoding": "int"
      },
      "12": {
        "label": "Coin Units Required for Credit",
        "start": "0x011E",
        "length": 2,
        "encoding": "int"
      },
      "13": {
        "label": "Coin Units Bonus Point",
        "start": "0x0120",
        "length": 2,
        "encoding": "int"
      },
      "14": {
        "label": "Coin Units Per Credit",
        "start": "0x0122",
        "length": 2,
        "encoding": "int"
      },
      "15A": {
        "label": "Special Awards",
        "start": "0x0124",
        "length": 1,
        "encoding": "enum",
        "values": [
          "normal play",
          "liberal play",
          "extra ball for special",
          "n/a",
          "no special or extra ball"
        ]
      },
      "15B": {
        "label": "Number of Balls",
        "start": "0x0125",
        "length": 1,
        "encoding": "bcd"
      },
      "16": {
        "label": "Tilt Warnings",
        "_notes": "setting to 0 disables tilt",
        "start": "0x0126",
        "length": 2,
        "encoding": "bcd",
        "min": 1,
        "max": 9
      }
    }
  }
}
