Backup RAM: Difference between revisions

From NeoGeo Development Wiki
Jump to navigation Jump to search
Line 4: Line 4:


== Data structure ==
== Data structure ==
All offset are taken from the sp-s2.bin bios.
{| class="regdef"
| '''Start'''
| '''End'''
| '''Size'''
| '''Data'''
| '''Description'''
|-
|$D00000
|$D0000F
|$F
|$00
|Unused, fill with $00
|-
|$D00010
|$D0001F
|$F
|"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
|$D00039
|$19
|$00
|Unused, fill with $00
|-
|$D0003A
|$D00045
|$C
|$01010102010101030000303B0000
|the init_backupram routine ($C125F4) will copy $C data from $C1F000 there.
|-
|$D00122
|$D00123
|$2
|$23
|The init_backupram routine write $23 there, purpose unknown.
|-
|$D00124
|$D00127
|$4
|Slot-1 [[NGH number]] and game name ID (see below)
|If not present $0000 as NGH and $FFFF as game name ID
|-
|$D00128
|$D0012B
|$4
|Slot-2 [[NGH number]] and game name 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 game name ID (see below)
|If not present $0000 as NGH and $FFFF as game name ID
|-
|$D00130
|$D00133
|$4
|Slot-4 [[NGH number]] and game name ID (see below)
|If not present $0000 as NGH and $FFFF as game name ID
|-
|$D00134
|$D00137
|$4
|Slot-5 [[NGH number]] and game name ID (see below)
|If not present $0000 as NGH and $FFFF as game name ID
|-
|$D00138
|$D0013B
|$4
|Slot-6 [[NGH number]] and game name ID (see below)
|If not present $0000 as NGH and $FFFF as game name ID
|-
|$D0013C
|$D0013F
|$4
|Slot-7 [[NGH number]] and game name ID (see below)
|If not present $0000 as NGH and $FFFF as game name ID
|-
|$D00140
|$D00143
|$4
|Slot-8 [[NGH number]] and game name 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
|-
|$D002A0
|$D002AF
|$F
|Game Name 0
|
|-
|$D002B0
|$D002BF
|$F
|Game Name 1
|
|-
|$D002C0
|$D002CF
|$F
|Game Name 2
|
|-
|$D002D0
|$D002DF
|$F
|Game Name 3
|
|-
|$D002E0
|$D002EF
|$F
|Game Name 4
|
|-
|$D002F0
|$D002FF
|$F
|Game Name 5
|
|-
|$D00300
|$D0030F
|$F
|Game Name 6
|
|-
|$D00310
|$D0031F
|$F
|Game Name 7
|
|}


*$D00000~$D0000F: Nothing ($00)
*$D00000~$D0000F: Nothing ($00)

Revision as of 15:53, 17 September 2011

The backup RAM is a battery-powered 64KiB RAM space used by MVS systems to store game scores, cab infos and income logs. Access is handled by the BIOSes.

Memory region: $D00000~$D0FFFF (Mirrored up to $DFFFFF ?).

Data structure

All offset are taken from the sp-s2.bin bios.

Start End Size Data Description
$D00000 $D0000F $F $00 Unused, fill with $00
$D00010 $D0001F $F "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 $D00039 $19 $00 Unused, fill with $00
$D0003A $D00045 $C $01010102010101030000303B0000 the init_backupram routine ($C125F4) will copy $C data from $C1F000 there.
$D00122 $D00123 $2 $23 The init_backupram routine write $23 there, purpose unknown.
$D00124 $D00127 $4 Slot-1 NGH number and game name ID (see below) If not present $0000 as NGH and $FFFF as game name ID
$D00128 $D0012B $4 Slot-2 NGH number and game name 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 game name ID (see below) If not present $0000 as NGH and $FFFF as game name ID
$D00130 $D00133 $4 Slot-4 NGH number and game name ID (see below) If not present $0000 as NGH and $FFFF as game name ID
$D00134 $D00137 $4 Slot-5 NGH number and game name ID (see below) If not present $0000 as NGH and $FFFF as game name ID
$D00138 $D0013B $4 Slot-6 NGH number and game name ID (see below) If not present $0000 as NGH and $FFFF as game name ID
$D0013C $D0013F $4 Slot-7 NGH number and game name ID (see below) If not present $0000 as NGH and $FFFF as game name ID
$D00140 $D00143 $4 Slot-8 NGH number and game name 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
$D002A0 $D002AF $F Game Name 0
$D002B0 $D002BF $F Game Name 1
$D002C0 $D002CF $F Game Name 2
$D002D0 $D002DF $F Game Name 3
$D002E0 $D002EF $F Game Name 4
$D002F0 $D002FF $F Game Name 5
$D00300 $D0030F $F Game Name 6
$D00310 $D0031F $F Game Name 7
  • $D00000~$D0000F: Nothing ($00)
  • $D00010: "BACKUP RAM OK !",$80
  • $D00020.l: ?
  • $D00021.b: btst 0,1,2,3,4
  • $D00024.l: adresse ?
  • $D00034.l: adresse ?
  • $D00038.w: ? bit 4 tst
  • $D0003A: Start of ? (13 bytes)
  • $D00042.b: tst ?
  • $D00043.b: tst ?
  • $D00044.w: ?
  • $D00046.b: SOUND_STOP, No sound at all if non-zero
  • $D00047.b: Number of detected slots
  • $D00048.l: ?
  • $D0004C.b: ? ($3B)
  • $D00058.b: First valid slot
  • $D0005E.b: Something to do with tested slot? tst
  • $D0005A.b: heure ?
  • $D00060.w: multi-slot flag
  • $D00104: year,month,day ? (3 bytes) Modify date
  • $D00108.b: Selected tested slot
  • $D00109.b: Compared with 8
  • $D0011A: Start of ?
  • $D00122.b: ? ($23)
  • $D00124: adresses ? (4 bytes * nb of slots ?)
  • $D00144: Date (Year, Month, Day, ? *8 ?) Creation date
  • $D001AC.l: $F0F0F0F0
  • $D001B0.w: $FFFF
  • $D002A0: Title of game (16 bytes *8 ?)
  • $D00320: ?