{
  "_notes": [
    "2023-10 Initial version by Tom Collins.  Required new `nibble` attribute.",
    "NVRAM file mapped to memory address 0x200 in PinMAME",
    "Valid for all Stern M-100 MPU games.  See stern-m100-freeplay for 'fp' ROMs.",
    "Untested with blkshpsq (Astro game), draculc/wildfyrc (mod), stars/starsb7 (mod), stingrab (mod).",
    "Won't work with larger, modified ROMs: magicb, princesb."
  ],
  "_fileformat": 0.8,
  "_metadata": {
    "version": 4,
    "copyright": [
      "Copyright (C) 2023 by Tom Collins <tom@tomlogic.com>",
      "Copyright (C) 2025 by Tom Collins <tom@scorbit.io>"
    ],
    "license": "GNU Lesser General Public License v3.0",
    "platform": "stern-m100",
    "roms": [
      "dracula",
      "hothand",
      "lectrono",
      "magic",
      "memlane",
      "nugent",
      "pinball",
      "princess",
      "stars",
      "stingray",
      "trident",
      "tridenta",
      "wildfyre"
    ]
  },
  "game_state": {
    "match": {
      "label": "Match",
      "start": "0x0236",
      "length": 2,
      "encoding": "bcd",
      "_notes": "during a game, shows current ball (1-5)",
      "special_values": {
        "1": "n/a",
        "2": "n/a",
        "3": "n/a",
        "4": "n/a",
        "5": "n/a"
      }
    },
    "credits": {
      "label": "Credits",
      "start": "0x02D5",
      "length": 2,
      "encoding": "bcd"
    },
    "scores": [
      {
        "label": "Player 1",
        "start": "0x021E",
        "encoding": "bcd",
        "length": 6
      },
      {
        "label": "Player 2",
        "start": "0x0224",
        "encoding": "bcd",
        "length": 6
      },
      {
        "label": "Player 3",
        "start": "0x022A",
        "encoding": "bcd",
        "length": 6
      },
      {
        "label": "Player 4",
        "start": "0x0230",
        "encoding": "bcd",
        "length": 6
      }
    ],
    "final_scores": [
      {
        "label": "Final P1",
        "start": "0x023C",
        "encoding": "bcd",
        "length": 6
      },
      {
        "label": "Final P2",
        "start": "0x0242",
        "encoding": "bcd",
        "length": 6
      },
      {
        "label": "Final P3",
        "start": "0x0248",
        "encoding": "bcd",
        "length": 6
      },
      {
        "label": "Final P4",
        "start": "0x024E",
        "encoding": "bcd",
        "length": 6
      }
    ],
    "current_ball": {
      "label": "Current Ball",
      "start": "0x13",
      "encoding": "bcd"
    },
    "player_count": {
      "label": "Players",
      "start": "0x14",
      "encoding": "bcd"
    },
    "current_player": {
      "label": "Current Player",
      "start": "0x15",
      "encoding": "bcd"
    },
    "ball_count": {
      "label": "Ball Count",
      "encoding": "dipsw",
      "offsets": [
        7
      ],
      "values": [
        3,
        5
      ]
    },
    "max_credits": {
      "label": "Max Credits",
      "encoding": "dipsw",
      "offsets": [
        19,
        18,
        17
      ],
      "values": [
        5,
        10,
        15,
        20,
        25,
        30,
        35,
        40
      ]
    },
    "game_over": {
      "_notes": "reading 'game over' lamp",
      "label": "Game Over",
      "start": "0x20C",
      "encoding": "bool",
      "mask": "0x4",
      "invert": true
    },
    "tilted": {
      "_notes": "reading 'tilt' lamp",
      "label": "Tilted",
      "start": "0x20C",
      "encoding": "bool",
      "mask": "0x8",
      "invert": true
    }
  },
  "high_scores": [
    {
      "label": "High Score",
      "short_label": "HS",
      "score": {
        "start": "0x02CF",
        "length": 6,
        "encoding": "bcd"
      }
    }
  ],
  "adjustments": {
    "Adjustments": {
      "01": {
        "label": "Replay 1",
        "start": "0x02BD",
        "length": 6,
        "encoding": "bcd"
      },
      "02": {
        "label": "Replay 2",
        "start": "0x02C3",
        "length": 6,
        "encoding": "bcd"
      },
      "03": {
        "label": "Replay 3",
        "start": "0x02C9",
        "length": 6,
        "encoding": "bcd"
      },
      "04": {
        "label": "High Score",
        "start": "0x02CF",
        "length": 6,
        "encoding": "bcd"
      }
    }
  },
  "audits": {
    "Audits": {
      "05": {
        "label": "Credits",
        "start": "0x02D5",
        "length": 2,
        "encoding": "bcd"
      },
      "06": {
        "label": "Total Plays",
        "start": "0x02DB",
        "length": 6,
        "encoding": "bcd"
      },
      "07": {
        "label": "Total Replays",
        "start": "0x02E1",
        "length": 6,
        "encoding": "bcd"
      },
      "08": {
        "label": "HSTD Beaten",
        "start": "0x02E7",
        "length": 6,
        "encoding": "bcd"
      },
      "09": {
        "label": "Coin Chute 2",
        "start": "0x02ED",
        "length": 6,
        "encoding": "bcd"
      },
      "10": {
        "label": "Coin Chute 1",
        "start": "0x02F3",
        "length": 6,
        "encoding": "bcd"
      },
      "11": {
        "label": "Coin Chute 3",
        "start": "0x02F9",
        "length": 6,
        "encoding": "bcd"
      }
    }
  }
}
