Backup RAM: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
mNo edit summary |
||
(14 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
The backup RAM is a battery-powered 64KiB RAM space used by [[MVS | The backup RAM is a [[battery-backed_RAM|battery-powered]] 64KiB RAM space used by the [[MVS]] to store game scores, cab infos and income logs. Access can be handled by [[BIOS calls]]. | ||
[[68k memory map|Memory region]]: $D00000~$D0FFFF (Mirrored up to $DFFFFF ?). | [[68k memory map|Memory region]]: $D00000~$D0FFFF (Mirrored up to $DFFFFF ?). | ||
Line 5: | Line 5: | ||
== Data structure == | == Data structure == | ||
All offset are taken from the sp-s2.bin | All offset are taken from the sp-s2.bin system ROM. | ||
{| class="regdef" | {| class="regdef" | ||
Line 30: | Line 30: | ||
|2 | |2 | ||
| | | | ||
|Coin deposit related (rising edge finding | |Coin deposit related (rising edge finding), old and new value of REG_STATUS_A | ||
|- | |- | ||
|'''$ | |$D00022 | ||
|'''$ | |$D00023 | ||
|2 | |||
| | |||
|Temp value for the coin deposit rising edge finding | |||
|- | |||
|$D00024 | |||
|$D00025 | |||
|2 | |||
| | |||
|Internal coin counter (not credit) | |||
|- | |||
|'''$D00026''' | |||
|'''$D0002F''' | |||
| | | | ||
| | | | ||
Line 42: | Line 54: | ||
|2 | |2 | ||
|$00 | |$00 | ||
|"Internal" credit counters for player 1 and player 2 (BCD) | |"Internal" credit counters for player 1 and player 2 (BCD) | ||
|- | |- | ||
|'''$D00036''' | |'''$D00036''' | ||
Line 60: | Line 72: | ||
;$D0003D: Credits added to player 2 (initialized to $02) | ;$D0003D: Credits added to player 2 (initialized to $02) | ||
;$D00042: Game select (1=Free, 0=Only when credited) (initialized to 0) | ;$D00042: Game select (1=Free, 0=Only when credited) (initialized to 0) | ||
;$D00044: Game start compulsion (max time in seconds in BCD between inserting a coin and starting the game) (initialized to $30) | ;$D00043: Game start compulsion (0 = enabled, 1 = disabled) | ||
;$D00044: Game start compulsion time (max time in seconds in BCD between inserting a coin and starting the game) (initialized to $30) | |||
;$D00046: Demo sound (1=Without) (initialized to 0) | ;$D00046: Demo sound (1=Without) (initialized to 0) | ||
|- | |- | ||
Line 67: | Line 80: | ||
|1 | |1 | ||
|SOUND_STOP | |SOUND_STOP | ||
|No sound at all if non-zero | |No sound at all if non-zero (except coinage sound effect) | ||
|- | |- | ||
|$D00047 | |$D00047 | ||
Line 75: | Line 88: | ||
|Number of detected slots (2 for slot1) | |Number of detected slots (2 for slot1) | ||
|- | |- | ||
|'''$ | |$D00048 | ||
|'''$ | |$D0004B | ||
|4 | |||
|PLAY TIME | |||
|Counter of second played on the game in hex. | |||
Reset to 0 by [[SYSTEM_RETURN]]. | |||
|- | |||
|$D0004C | |||
|$D0004C | |||
|1 | |||
|PLAY_TIME_FRAME_TIMER | |||
|Frame timer, start at $3C, decremented each frame. When the counter reach $00, PLAY_TIME is incremented and the counter is reseted to $3C | |||
|- | |||
|'''$D0004D''' | |||
|'''$D00057''' | |||
| | | | ||
| | | | ||
|? | |? | ||
|- | |||
|$D00058 | |||
|$D00058 | |||
|1 | |||
| | |||
|First slot number with a boot logo flag to 0 (playable by the system ROM) | |||
|- | |- | ||
|$D0005A | |$D0005A | ||
Line 106: | Line 139: | ||
|$D00108 | |$D00108 | ||
|1 | |1 | ||
|Selected slot number | |Selected slot number (start at 0) | ||
|Output directly to the EL panels | |Output directly to the EL panels | ||
|- | |- | ||
|'''$D00109''' | |'''$D00109''' | ||
|'''$D00109''' | |'''$D00109''' | ||
| | |1 | ||
| | |EL_PANEL | ||
|? | |State of the EL-PANEL ??? | ||
|- | |- | ||
|$D0010A | |$D0010A | ||
Line 154: | Line 187: | ||
|$D00127 | |$D00127 | ||
|4 | |4 | ||
|Slot-1 [[NGH number]] and game | |Slot-1 [[NGH number]] and bram game block ID (see below) | ||
|If not present $0000 as NGH and $FFFF as game name ID | |If not present $0000 as NGH and $FFFF as game name ID | ||
|- | |- | ||
Line 160: | Line 193: | ||
|$D0012B | |$D0012B | ||
|4 | |4 | ||
|Slot-2 [[NGH number]] and game | |Slot-2 [[NGH number]] and bram game block ID (see below) | ||
|If not present $0000 as NGH and $FFFF as game name ID. | |If not present $0000 as NGH and $FFFF as game name ID. | ||
On a slot1 always unset (slot1 are slot2 with the second one empty) | On a slot1 always unset (slot1 are slot2 with the second one empty) | ||
Line 167: | Line 200: | ||
|$D0012F | |$D0012F | ||
|4 | |4 | ||
|Slot-3 [[NGH number]] and game | |Slot-3 [[NGH number]] and bram game block ID (see below) | ||
|If not present $0000 as NGH and $FFFF as game name ID | |If not present $0000 as NGH and $FFFF as game name ID | ||
|- | |- | ||
Line 173: | Line 206: | ||
|$D00133 | |$D00133 | ||
|4 | |4 | ||
|Slot-4 [[NGH number]] and game | |Slot-4 [[NGH number]] and bram game block ID (see below) | ||
|If not present $0000 as NGH and $FFFF as game name ID | |If not present $0000 as NGH and $FFFF as game name ID | ||
|- | |- | ||
Line 179: | Line 212: | ||
|$D00137 | |$D00137 | ||
|4 | |4 | ||
|Slot-5 [[NGH number]] and game | |Slot-5 [[NGH number]] and bram game block ID (see below) | ||
|If not present $0000 as NGH and $FFFF as game name ID | |If not present $0000 as NGH and $FFFF as game name ID | ||
|- | |- | ||
Line 185: | Line 218: | ||
|$D0013B | |$D0013B | ||
|4 | |4 | ||
|Slot-6 [[NGH number]] and game | |Slot-6 [[NGH number]] and bram game block ID (see below) | ||
|If not present $0000 as NGH and $FFFF as game name ID | |If not present $0000 as NGH and $FFFF as game name ID | ||
|- | |- | ||
Line 191: | Line 224: | ||
|$D0013F | |$D0013F | ||
|4 | |4 | ||
|Slot-7 [[NGH number]] and game | |Slot-7 [[NGH number]] and bram game block ID (see below) | ||
|If not present $0000 as NGH and $FFFF as game name ID | |If not present $0000 as NGH and $FFFF as game name ID | ||
|- | |- | ||
Line 197: | Line 230: | ||
|$D00143 | |$D00143 | ||
|4 | |4 | ||
|Slot-8 [[NGH number]] and game | |Slot-8 [[NGH number]] and bram game block ID (see below) | ||
|If not present $0000 as NGH and $FFFF as game name ID | |If not present $0000 as NGH and $FFFF as game name ID | ||
|- | |- | ||
Line 276: | Line 309: | ||
|16 | |16 | ||
| | | | ||
| | |bram block 0 game name | ||
|- | |- | ||
|$D002B0 | |$D002B0 | ||
Line 282: | Line 315: | ||
|16 | |16 | ||
| | | | ||
| | |bram block 1 game name | ||
|- | |- | ||
|$D002C0 | |$D002C0 | ||
Line 288: | Line 321: | ||
|16 | |16 | ||
| | | | ||
| | |bram block 2 game name | ||
|- | |- | ||
|$D002D0 | |$D002D0 | ||
Line 294: | Line 327: | ||
|16 | |16 | ||
| | | | ||
| | |bram block 3 game name | ||
|- | |- | ||
|$D002E0 | |$D002E0 | ||
Line 300: | Line 333: | ||
|16 | |16 | ||
| | | | ||
| | |bram block 4 game name | ||
|- | |- | ||
|$D002F0 | |$D002F0 | ||
Line 306: | Line 339: | ||
|16 | |16 | ||
| | | | ||
| | |bram block 5 game name | ||
|- | |- | ||
|$D00300 | |$D00300 | ||
Line 312: | Line 345: | ||
|16 | |16 | ||
| | | | ||
| | |bram block 6 game name | ||
|- | |- | ||
|$D00310 | |$D00310 | ||
Line 318: | Line 351: | ||
|16 | |16 | ||
| | | | ||
| | |bram block 7 game name | ||
|- | |- | ||
|$D00320 | |$D00320 | ||
Line 324: | Line 357: | ||
|$1000 | |$1000 | ||
| | | | ||
| | |bram block 1 data | ||
|- | |- | ||
|$D01320 | |$D01320 | ||
Line 330: | Line 363: | ||
|$1000 | |$1000 | ||
| | | | ||
| | |bram block 2 data | ||
|- | |- | ||
|$D02320 | |$D02320 | ||
Line 336: | Line 369: | ||
|$1000 | |$1000 | ||
| | | | ||
| | |bram block 3 data | ||
|- | |- | ||
|$D03320 | |$D03320 | ||
Line 342: | Line 375: | ||
|$1000 | |$1000 | ||
| | | | ||
| | |bram block 4 data | ||
|- | |- | ||
|$D04320 | |$D04320 | ||
Line 348: | Line 381: | ||
|$1000 | |$1000 | ||
| | | | ||
| | |bram block 5 data | ||
|- | |- | ||
|$D05320 | |$D05320 | ||
Line 354: | Line 387: | ||
|$1000 | |$1000 | ||
| | | | ||
| | |bram block 6 data | ||
|- | |- | ||
|$D06320 | |$D06320 | ||
Line 360: | Line 393: | ||
|$1000 | |$1000 | ||
| | | | ||
| | |bram block 7 data | ||
|- | |- | ||
|$D07320 | |$D07320 | ||
Line 366: | Line 399: | ||
|$1000 | |$1000 | ||
| | | | ||
| | |bram block 8 data | ||
|- | |||
|$D09BA0 | |||
|$D09DE0 | |||
|$240 | |||
|YYMMDDdd - COIN1 - COIN2 - SERVICE | |||
|Bookkeeping - Current month coin | |||
Each entry is $10 byte long | |||
|- | |||
|$D09DE0 | |||
|$D0A01F | |||
|$240 | |||
|YYMMDDdd - PLAY - CONTINUE - TIME | |||
|Bookkeeping - Current month play | |||
Each entry is $10 byte long | |||
|- | |||
|$D0A020 | |||
|$D0A0DF | |||
|$C0 | |||
|00000000 - COIN1 - COIN2 - SERVICE | |||
|Bookkeeping - Year coin | |||
|- | |||
|$D0A0E0 | |||
|$D0A19F | |||
|$C0 | |||
|00000000 - PLAY - CONTINUE - TIME | |||
|Bookkeeping - Year play | |||
|} | |} | ||
[[Category:Cartridge systems]] | [[Category:Cartridge systems]] |
Latest revision as of 02:38, 21 October 2017
The backup RAM is a battery-powered 64KiB RAM space used by the MVS to store game scores, cab infos and income logs. Access can be handled by BIOS calls.
Memory region: $D00000~$D0FFFF (Mirrored up to $DFFFFF ?).
Data structure
All offset are taken from the sp-s2.bin system ROM.
Start | End | Size | Data | Description |
$D00000 | $D0000F | 16 | $00 | Unused, fill with $00 |
$D00010 | $D0001F | 16 | "BACKUP RAM OK!Ç" | The routine at $C125C8 will check if this string is present, if not it will test the ram (using the test_ram routine at $C13134) and re-init the backupram |
$D00020 | $D00021 | 2 | Coin deposit related (rising edge finding), old and new value of REG_STATUS_A | |
$D00022 | $D00023 | 2 | Temp value for the coin deposit rising edge finding | |
$D00024 | $D00025 | 2 | Internal coin counter (not credit) | |
$D00026 | $D0002F | ? | ||
$D00034 | $D00035 | 2 | $00 | "Internal" credit counters for player 1 and player 2 (BCD) |
$D00036 | $D00039 | ? | ||
$D0003A | $D00045 | 12 | Cab settings.
| |
$D00046 | $D00046 | 1 | SOUND_STOP | No sound at all if non-zero (except coinage sound effect) |
$D00047 | $D00047 | 1 | SLOT NUMBER | Number of detected slots (2 for slot1) |
$D00048 | $D0004B | 4 | PLAY TIME | Counter of second played on the game in hex.
Reset to 0 by SYSTEM_RETURN. |
$D0004C | $D0004C | 1 | PLAY_TIME_FRAME_TIMER | Frame timer, start at $3C, decremented each frame. When the counter reach $00, PLAY_TIME is incremented and the counter is reseted to $3C |
$D0004D | $D00057 | ? | ||
$D00058 | $D00058 | 1 | First slot number with a boot logo flag to 0 (playable by the system ROM) | |
$D0005A | $D0005D | 4 | HHMMSSFF | Timer based on frames.
|
$D0005E | $D00103 | ? | ||
$D00104 | $D00107 | 4 | YYMMDDdd | Current date |
$D00108 | $D00108 | 1 | Selected slot number (start at 0) | Output directly to the EL panels |
$D00109 | $D00109 | 1 | EL_PANEL | State of the EL-PANEL ??? |
$D0010A | $D0010D | 4 | Detailed game start book address | |
$D0010E | $D00111 | 4 | Total game start book address | |
$D00112 | $D00115 | 4 | Detailed cabinet coin book address (sub 0x240 for the start book one) | |
$D00116 | $D00119 | 4 | Current month cabinet coin book address (sub 0xC for the start book one) | |
$D0011A | $D00121 | ? | ||
$D00122 | $D00123 | 2 | $23 | The init_backupram routine write $23 there, purpose unknown. |
$D00124 | $D00127 | 4 | Slot-1 NGH number and bram game block ID (see below) | If not present $0000 as NGH and $FFFF as game name ID |
$D00128 | $D0012B | 4 | Slot-2 NGH number and bram game block ID (see below) | If not present $0000 as NGH and $FFFF as game name ID.
On a slot1 always unset (slot1 are slot2 with the second one empty) |
$D0012C | $D0012F | 4 | Slot-3 NGH number and bram game block ID (see below) | If not present $0000 as NGH and $FFFF as game name ID |
$D00130 | $D00133 | 4 | Slot-4 NGH number and bram game block ID (see below) | If not present $0000 as NGH and $FFFF as game name ID |
$D00134 | $D00137 | 4 | Slot-5 NGH number and bram game block ID (see below) | If not present $0000 as NGH and $FFFF as game name ID |
$D00138 | $D0013B | 4 | Slot-6 NGH number and bram game block ID (see below) | If not present $0000 as NGH and $FFFF as game name ID |
$D0013C | $D0013F | 4 | Slot-7 NGH number and bram game block ID (see below) | If not present $0000 as NGH and $FFFF as game name ID |
$D00140 | $D00143 | 4 | Slot-8 NGH number and bram game block ID (see below) | If not present $0000 as NGH and $FFFF as game name ID |
$D00144 | $D00147 | 4 | YYMMDDdd | Slot-1 book creation time YEAR-MONTH-DAY-day number |
$D00148 | $D0014B | 4 | YYMMDDdd | Slot-2 book creation time YEAR-MONTH-DAY-day number |
$D0014C | $D0014F | $4 | YYMMDDdd | Slot-3 book creation time YEAR-MONTH-DAY-day number |
$D00150 | $D00153 | 4 | YYMMDDdd | Slot-4 book creation time YEAR-MONTH-DAY-day number |
$D00154 | $D00157 | 4 | YYMMDDdd | Slot-5 book creation time YEAR-MONTH-DAY-day number |
$D00158 | $D0015B | 4 | YYMMDDdd | Slot-6 book creation time YEAR-MONTH-DAY-day number |
$D0015C | $D0015F | 4 | YYMMDDdd | Slot-7 book creation time YEAR-MONTH-DAY-day number |
$D00160 | $D00163 | 4 | YYMMDDdd | Slot-8 book creation time YEAR-MONTH-DAY-day number |
$D00164 | $D001A3 | ? | ||
$D001A4 | $D001A7 | 4 | Current month game start book | |
$D001A8 | $D0021F | ? | ||
$D00220 | $D0029F | 16*8 | Games soft DIPs settings (in which order ?) | |
$D002A0 | $D002AF | 16 | bram block 0 game name | |
$D002B0 | $D002BF | 16 | bram block 1 game name | |
$D002C0 | $D002CF | 16 | bram block 2 game name | |
$D002D0 | $D002DF | 16 | bram block 3 game name | |
$D002E0 | $D002EF | 16 | bram block 4 game name | |
$D002F0 | $D002FF | 16 | bram block 5 game name | |
$D00300 | $D0030F | 16 | bram block 6 game name | |
$D00310 | $D0031F | 16 | bram block 7 game name | |
$D00320 | $D0131F | $1000 | bram block 1 data | |
$D01320 | $D0231F | $1000 | bram block 2 data | |
$D02320 | $D0331F | $1000 | bram block 3 data | |
$D03320 | $D0431F | $1000 | bram block 4 data | |
$D04320 | $D0531F | $1000 | bram block 5 data | |
$D05320 | $D0631F | $1000 | bram block 6 data | |
$D06320 | $D0731F | $1000 | bram block 7 data | |
$D07320 | $D0831F | $1000 | bram block 8 data | |
$D09BA0 | $D09DE0 | $240 | YYMMDDdd - COIN1 - COIN2 - SERVICE | Bookkeeping - Current month coin
Each entry is $10 byte long |
$D09DE0 | $D0A01F | $240 | YYMMDDdd - PLAY - CONTINUE - TIME | Bookkeeping - Current month play
Each entry is $10 byte long |
$D0A020 | $D0A0DF | $C0 | 00000000 - COIN1 - COIN2 - SERVICE | Bookkeeping - Year coin |
$D0A0E0 | $D0A19F | $C0 | 00000000 - PLAY - CONTINUE - TIME | Bookkeeping - Year play |