Memory card: Difference between revisions
m (→FAT 1) |
mNo edit summary |
||
Line 5: | Line 5: | ||
The official SNK memory card was a battery-based 2KiB card using a LH5116 CMOS SRAM chip and voltage switching circuitry. Data retention voltage: 2V. | The official SNK memory card was a battery-based 2KiB card using a LH5116 CMOS SRAM chip and voltage switching circuitry. Data retention voltage: 2V. | ||
The SP-S2 [[ | The SP-S2 [[system ROM]] can handle memory cards up to 16KiB | ||
Replaced by a 8KiB fixed battery-backed RAM chip in the [[CD systems]]. | Replaced by a 8KiB fixed battery-backed RAM chip in the [[CD systems]]. |
Revision as of 05:24, 28 October 2015
JEIDA V3 memory cards used in AES and some MVS systems to store game saves and/or high scores. The original SNK card could only hold 2KiB of data.
The official SNK memory card was a battery-based 2KiB card using a LH5116 CMOS SRAM chip and voltage switching circuitry. Data retention voltage: 2V.
The SP-S2 system ROM can handle memory cards up to 16KiB
Replaced by a 8KiB fixed battery-backed RAM chip in the CD systems.
See the CARD BIOS call description for memory card operations.
Data format
BIOS can handle 8 different card size (2K, 4K, 6K, 8K, 10K, 14K and 16K) and different card type (8 bits wide, 16 bits wide, 16 bits doubled wide and SNK ROM card).
All the data here are for all the card, it's just a matter on how to read the data between different type of card.
The internal card data are splitted into 5 regions.
Header
Always $80 bytes.
Address | Name | Size | Description |
$0~$9 | 10 bytes | Zero or "SNK ROM " (Development unit I think)
For 16bits doubled card, $6 is set to $0001 | |
$A | CARD_SIZE | word | Size of the memcard |
$C | byte | 0 | |
$D | CARD_FAT_1_CHKSUM | byte | Checksum of the FAT 1 |
$E | CARD_FAT_2_CHKSUM | byte | Checksum of the FAT 2 |
$F | CARD_USERNAME_AVAILABLE | byte | 0 : Username available, !0 : Username unavailable |
$10 | CARD_USERNAME | 16 bytes | Card holder username |
$20 | CARD_MAGIC | 16 bytes | $4e $XX $45 $XX $4f $XX $2d $XX $47 $XX $45 $XX $4f $XX 80 $XX "NEO-GEO" + $80 |
$30 | CARD_REGION | byte | Region of slot that formated the card, 0 = Japan, 1 = USA, 2 = Europe |
Directory
List of saves. Size depends on card size, it can hold 32, 64, 96, 128, 160, 192, 224 or 256 entries.
Each entry have this format :
Address | Size | Description |
$0 | byte | Game Sub number (CARD_SUB), 0 to 15. $FF if entry is free |
$1 | word | Game NGH number |
$3 | byte | FAT entry number (see below) |
FAT 1
List of used blocks. Size depends on card size, it can hold 64, 128 192 or 256 entries.
- $02 is a BIOS reserved block
- $01 is a game used block
- $00 is a free block
FAT 2
FAT 2 is simply a mirror of FAT 1.
Game Data
Normally 64 bytes but maybe some games use more that one block ?
The first 20 bytes are the data title (generally the game name + the stage name).
Card pinout
Pin | Goes to | Signal name | PC Card name |
1 | GND | ||
2 | 9 G0 | MCD3 | D3 |
3 | 11 G0 | MCD4 | D4 |
4 | 12 G0 | MCD5 | D5 |
5 | 13 G0 | MCD6 | D6 |
6 | 14 G0 | MCD7 | D7 |
7 | 42, 27 C1 | CRDC | /CE1 |
8 | 23 E0 | Y10 | A10 |
9 | 30 C1 | CRDO | /OE |
10 | 24 E0 | Y11 | A11 |
11 | 22 E0 | Y9 | A9 |
12 | 14 E0 | Y8 | A8 |
13 | 28 E0 | Y13 | A13 |
14 | 29 E0 | Y14 | A14 |
15 | 6 HC32 | (31 C1 (CRDW) OR REG_CRDUNLOCK1 OR /REG_CRDUNLOCK2) | /WE |
16 | NC | READY | |
17 | VCC | ||
18 | VCC | ||
19 | 39 E0 | Y16 | A16 |
20 | 30 E0 | Y15 | A15 |
21 | 27 E0 | Y12 | A12 |
22 | 13 E0 | Y7 | A7 |
23 | 12 E0 | Y6 | A6 |
24 | 11 E0 | Y5 | A5 |
25 | 9 E0 | Y4 | A4 |
26 | 8 E0 | Y3 | A3 |
27 | 7 E0 | Y2 | A2 |
28 | 6 E0 | Y1 | A1 |
29 | 5 E0 | Y0 | A0 |
30 | 6 G0 | MCD0 | D0 |
31 | 7 G0 | MCD1 | D1 |
32 | 8 G0 | MCD2 | D2 |
33 | 88 C1 | IN26 (REG_STATUS_B bit 6) | WP (Write Protect) |
34 | GND |
Pin | Goes to | Signal name | PC Card name |
35 | GND | ||
36 | 73 C1 | IN24 (REG_STATUS_B bit 4) | /CD1 (Card Detect 1) |
37 | 30 G0 | MCD11 | D11 |
38 | 43 G0 | MCD12 | D12 |
39 | 44 G0 | MCD13 | D13 |
40 | 45 G0 | MCD14 | D14 |
41 | 46 G0 | MCD15 | D15 |
42 | 7 | /CE2 | |
43 | NC | /VS1 | |
44 | NC | /IORD | |
45 | NC | /IOWR | |
46 | 40 E0 | Y17 | A17 |
47 | 41 E0 | Y18 | A18 |
48 | 43 E0 | Y19 | A19 |
49 | 44 E0 | Y20 | A20 |
50 | 45 E0 | Y21 | A21 |
51 | VCC | ||
52 | VCC | ||
53 | 46 E0 | Y22 | A22 |
54 | 47 E0 | Y23 | A23 |
55 | NC | A24 | |
56 | NC | A25 | |
57 | NC | /VS2 | |
58 | NC | RESET | |
59 | NC | /WAIT | |
60 | NC | Reserved | |
61 | 8 HC32 | (REG_CRDREGSEL OR CRDO) | /REG |
62 | NC | BVD2 | |
63 | NC | BVD1 | |
64 | 27 G0 | MCD8 | D8 |
65 | 28 G0 | MCD9 | D9 |
66 | 29 G0 | MCD10 | D10 |
67 | 87 C1 | IN25 (REG_STATUS_B bit 5) | /CD2 (Card Detect 2) |
68 | GND |