Backup RAM

From NeoGeo Development Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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.
$D0003A
Coins needed for crediting player 1 (initialized to $01)
$D0003B
Credits added to player 1 (initialized to $01)
$D0003C
Coins needed for crediting player 2 (initialized to $01)
$D0003D
Credits added to player 2 (initialized to $02)
$D00042
Game select (1=Free, 0=Only when credited) (initialized to 0)
$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 $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.
  • FF: frame down-counter ($3C to $00)
  • SS: second counter ($00 to $3B)
  • MM: minute counter ($00 to $3B)
  • HH: hour counter *4 ($00 to $60 by 4 steps)
$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