<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.neogeodev.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ArcadeTV</id>
	<title>NeoGeo Development Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.neogeodev.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ArcadeTV"/>
	<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php/Special:Contributions/ArcadeTV"/>
	<updated>2026-10-07T01:46:54Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Memory_mapped_registers&amp;diff=9288</id>
		<title>Memory mapped registers</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Memory_mapped_registers&amp;diff=9288"/>
		<updated>2026-08-12T10:33:33Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: /* System registers */ Correction: (From the off. SNK Docs) $3A000F -&amp;gt; Palette Bank 0, $3A001F -&amp;gt; Palette Bank 1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=Address decode masks=&lt;br /&gt;
&lt;br /&gt;
Decode masks aren&#039;t verified !&lt;br /&gt;
&lt;br /&gt;
Decode masks are used to know which register will be mapped to a given address, they can be seen as a sort of mirroring range notation.&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;1&amp;quot; bit means that the corresponding address bit is involved in decoding, a &amp;quot;0&amp;quot; means it&#039;s ignored.&lt;br /&gt;
&lt;br /&gt;
For example, {{Reg|REG_P1CNT}}&#039;s base is $300000 and its mask is $FE0001:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BASE 00110000 00000000 00000000&lt;br /&gt;
MASK 11111110 00000000 00000001&lt;br /&gt;
     0011000x xxxxxxxx xxxxxxx0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This means that it&#039;s also accessible at $300002, $300004, $300006... up to $31FFFE. The highest address is BASE OR (NOT MASK).&lt;br /&gt;
&lt;br /&gt;
==Mirror guesser==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;mirror-guesser&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;mguessresult&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Register descriptions=&lt;br /&gt;
&lt;br /&gt;
==I/O registers==&lt;br /&gt;
&lt;br /&gt;
===REG_P1CNT===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;regdef&amp;quot; style=&amp;quot;float:right; margin-left:16px; width:600px;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|[[Joypad]] port 1 inputs (active low)&lt;br /&gt;
{{8BitRegister|D|1|C|1|B|1|A|1|Right|1|Left|1|Down|1|Up|1}}&lt;br /&gt;
|?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Address: $300000&lt;br /&gt;
*Decode mask: $FE0001&lt;br /&gt;
*Handled by: {{Chipname|NEO-C1}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===REG_DIPSW===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;regdef&amp;quot; style=&amp;quot;float:right; margin-left:16px; width:600px;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|[[Hardware DIPs]] (active low) {{8BitRegister|Freeze game|1|Freeplay|1|Enable [[Multiplayer]]|1|Multiplayer ID code|2|0:Normal controller&amp;lt;br&amp;gt;1:Mahjong keyboard|1|0:1 coin chute&amp;lt;br&amp;gt;1:2 coin chutes|1|Settings mode|1}}&lt;br /&gt;
|Kick [[watchdog]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Address: $300001&lt;br /&gt;
*Decode mask: $FE0081 (not sure for write)&lt;br /&gt;
*Handled by: {{Chipname|NEO-F0}} (read), {{Chipname|NEO-B1}} (write)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===REG_SYSTYPE===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;regdef&amp;quot; style=&amp;quot;float:right; margin-left:16px; width:600px;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|{{8BitRegister|[[Test button]]|1|[[NEO-F0|Type]]&amp;lt;br/&amp;gt;0: 2 slots&amp;lt;br/&amp;gt;1: 4 or 6 slots|1|?|6}}&lt;br /&gt;
|?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Reads the unused [[Hardware DIPs|DSW2]] on {{PCB|MV4}} boards. Used for system ID on other boards.&lt;br /&gt;
&lt;br /&gt;
*Address: $300081&lt;br /&gt;
*Decode mask: $FE0081&lt;br /&gt;
*Handled by: {{Chipname|NEO-F0}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===REG_SOUND===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;regdef&amp;quot; style=&amp;quot;float:right; margin-left:16px; width:600px;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|[[68k/Z80 communication|Read Z80 reply code]]&lt;br /&gt;
|Send command to {{Chipname|Z80}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Address: $320000&lt;br /&gt;
*Decode mask: $FE0001&lt;br /&gt;
*Handled by: {{Chipname|NEO-C1}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===REG_STATUS_A ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;regdef&amp;quot; style=&amp;quot;float:right; margin-left:16px; width:600px;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Switch inputs are active low&lt;br /&gt;
{{8BitRegister|[[RTC]] data bit|1|RTC time pulse|1|0:4-SLOT&amp;lt;br&amp;gt;1:6-SLOT|1|[[Coin_switch|Coin-in]] 4|1|Coin-in 3|1|[[Service button]]|1|Coin-in 2|1|Coin-in 1|1}}&lt;br /&gt;
|?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Address: $320001&lt;br /&gt;
*Decode mask: $FE0001&lt;br /&gt;
*Handled by: {{Chipname|NEO-F0}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===REG_P2CNT===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;regdef&amp;quot; style=&amp;quot;float:right; margin-left:16px; width:600px;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Joypad port 2 inputs (active low)&lt;br /&gt;
{{8BitRegister|D|1|C|1|B|1|A|1|Right|1|Left|1|Down|1|Up|1}}&lt;br /&gt;
|?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Address: $340000&lt;br /&gt;
*Decode mask: $FE0001&lt;br /&gt;
*Handled by: {{Chipname|NEO-C1}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===REG_STATUS_B===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;regdef&amp;quot; style=&amp;quot;float:right; margin-left:16px; width:600px;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|On cart-based systems&lt;br /&gt;
{{8BitRegister|0:AES&amp;lt;br&amp;gt;1:MVS|1|1:[[Memory card]]&amp;lt;br&amp;gt;is write protected|1|00:Memory card&amp;lt;br&amp;gt;correctly inserted|2|Select P2|1|Start P2|1|Select P1|1|Start P1|1|}}&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|On CD systems&lt;br /&gt;
{{8BitRegister|Always 0|4|Select P2|1|Start P2|1|Select P1|1|Start P1|1|}}&lt;br /&gt;
|?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Address: $380000&lt;br /&gt;
*Decode mask: $FE0001&lt;br /&gt;
*Handled by: {{Chipname|NEO-C1}}&lt;br /&gt;
&lt;br /&gt;
The player controls bits are active low.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===REG_POUTPUT===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;regdef&amp;quot; style=&amp;quot;float:right; margin-left:16px; width:600px;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|Joypad ports [[Pinouts#joypad ports|outputs]]&lt;br /&gt;
{{8BitRegister|?|2|P2 outputs|3|P1 outputs|3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Address: $380001&lt;br /&gt;
*Decode mask: $FE0071&lt;br /&gt;
*Handled by: {{Chipname|NEO-D0}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===REG_CRDBANK===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;regdef&amp;quot; style=&amp;quot;float:right; margin-left:16px; width:600px;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|{{8BitRegister| |5|Memory card bank selection|3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Address: $380011&lt;br /&gt;
*Decode mask: $FE0071&lt;br /&gt;
*Handled by: {{Chipname|NEO-D0}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===REG_SLOT===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;regdef&amp;quot; style=&amp;quot;float:right; margin-left:16px; width:600px;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|{{8BitRegister|?|5|Slot #|3|}}&lt;br /&gt;
(Mirror of REG_POUTPUT on the AES)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Address: $380021&lt;br /&gt;
*Decode mask: $FE00F1&lt;br /&gt;
*Handled by: {{Chipname|NEO-F0}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===REG_LEDLATCHES===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;regdef&amp;quot; style=&amp;quot;float:right; margin-left:16px; width:600px;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|{{8BitRegister|?|2|Latch LED2 data|1|Latch LED1 data|1|Latch [[marquee]] data|1|?|3}}&lt;br /&gt;
LED data is latched on 1 to 0 transition.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Address: $380031&lt;br /&gt;
*Decode mask: $FE00F1&lt;br /&gt;
*Handled by: {{Chipname|NEO-F0}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===REG_LEDDATA===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;regdef&amp;quot; style=&amp;quot;float:right; margin-left:16px; width:600px;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|8-bit data for credits displays and the [[marquee]]. See [[MV-LED]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Address: $380041&lt;br /&gt;
*Decode mask: $FE00F1&lt;br /&gt;
*Handled by: {{Chipname|NEO-F0}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===REG_RTCCTRL===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;regdef&amp;quot; style=&amp;quot;float:right; margin-left:16px; width:600px;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|MAME upd4990a_control_16_w {{8BitRegister||5|[[RTC]] Strobe|1|RTC Clock|1|RTC DIN|1|}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Address: $380051&lt;br /&gt;
*Decode mask: $FE00F1&lt;br /&gt;
*Handled by: {{Chipname|NEO-F0}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===REG_RESETCC1===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;regdef&amp;quot; style=&amp;quot;float:right; margin-left:16px; width:600px;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|Any, [[coin counter]] 1 floats&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Address: $380061&lt;br /&gt;
*Decode mask: $FE00F1&lt;br /&gt;
*Handled by: {{Chipname|NEO-I0}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===REG_RESETCC2===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;regdef&amp;quot; style=&amp;quot;float:right; margin-left:16px; width:600px;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|Any, [[coin counter]] 2 floats&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Address: $380063&lt;br /&gt;
*Decode mask: $FE00F1&lt;br /&gt;
*Handled by: {{Chipname|NEO-I0}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===REG_RESETCL1===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;regdef&amp;quot; style=&amp;quot;float:right; margin-left:16px; width:600px;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|Any, [[coin lockout]] 1 floats&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Address: $380065&lt;br /&gt;
*Decode mask: $FE00F1&lt;br /&gt;
*Handled by: {{Chipname|NEO-I0}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===REG_RESETCL2===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;regdef&amp;quot; style=&amp;quot;float:right; margin-left:16px; width:600px;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|Any, [[coin lockout]] 2 floats&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Address: $380067&lt;br /&gt;
*Decode mask: $FE00F1&lt;br /&gt;
*Handled by: {{Chipname|NEO-I0}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===REG_SETCC1===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;regdef&amp;quot; style=&amp;quot;float:right; margin-left:16px; width:600px;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|Any, coin counter 1 sinks current&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Address: $3800E1&lt;br /&gt;
*Decode mask: $FE00F1&lt;br /&gt;
*Handled by: {{Chipname|NEO-I0}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===REG_SETCC2===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;regdef&amp;quot; style=&amp;quot;float:right; margin-left:16px; width:600px;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|Any, coin counter 2 sinks current&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Address: $3800E3&lt;br /&gt;
*Decode mask: $FE00F1&lt;br /&gt;
*Handled by: {{Chipname|NEO-I0}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===REG_SETCL1===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;regdef&amp;quot; style=&amp;quot;float:right; margin-left:16px; width:600px;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|Any, coin lockout 1 sinks current&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Address: $3800E5&lt;br /&gt;
*Decode mask: $FE00F1&lt;br /&gt;
*Handled by: {{Chipname|NEO-I0}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===REG_SETCL2===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;regdef&amp;quot; style=&amp;quot;float:right; margin-left:16px; width:600px;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|Any, coin lockout 2 sinks current&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Address: $3800E7&lt;br /&gt;
*Decode mask: $FE00F1&lt;br /&gt;
*Handled by: {{Chipname|NEO-I0}}&lt;br /&gt;
&lt;br /&gt;
==System registers==&lt;br /&gt;
&lt;br /&gt;
Data written doesn&#039;t matter. Odd byte writes only. Decode mask: $FE0001.&lt;br /&gt;
&lt;br /&gt;
Registers go in pairs, bit 4 of the address is actually the data bit.&lt;br /&gt;
&lt;br /&gt;
Handled by a 74HC259 addressable latch on cart systems. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;regdef&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Address&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$3A0001&lt;br /&gt;
|REG_NOSHADOW&lt;br /&gt;
|Normal video output&lt;br /&gt;
|-&lt;br /&gt;
|$3A0011&lt;br /&gt;
|REG_SHADOW&lt;br /&gt;
|[[Video DAC|Darken]] video output&lt;br /&gt;
|-&lt;br /&gt;
|$3A0003&lt;br /&gt;
|REG_SWPBIOS&lt;br /&gt;
|Use the |BIOS [[Vector_table_swap|vector table]]&lt;br /&gt;
|-&lt;br /&gt;
|$3A0013&lt;br /&gt;
|REG_SWPROM 	&lt;br /&gt;
|Use the cart&#039;s vector table&lt;br /&gt;
|-&lt;br /&gt;
|$3A0005&lt;br /&gt;
|REG_CRDUNLOCK1&lt;br /&gt;
|Enable writes to [[memory card]] (unused in CD systems)&lt;br /&gt;
|-&lt;br /&gt;
|$3A0015&lt;br /&gt;
|REG_CRDLOCK1&lt;br /&gt;
|Disable writes to memory card (unused in CD systems)&lt;br /&gt;
|-&lt;br /&gt;
|$3A0007&lt;br /&gt;
|REG_CRDLOCK2&lt;br /&gt;
|Disable writes to memory card (unused in CD systems)&lt;br /&gt;
|-&lt;br /&gt;
|$3A0017&lt;br /&gt;
|REG_CRDUNLOCK2&lt;br /&gt;
|Enable writes to memory card (unused in CD systems)  &lt;br /&gt;
|-&lt;br /&gt;
|$3A0009&lt;br /&gt;
|REG_CRDREGSEL&lt;br /&gt;
|Enable &amp;quot;Register select&amp;quot; for memory card&lt;br /&gt;
|-&lt;br /&gt;
|$3A0019&lt;br /&gt;
|REG_CRDNORMAL&lt;br /&gt;
|Disable &amp;quot;Register select&amp;quot; for memory card&lt;br /&gt;
|-&lt;br /&gt;
|$3A000B&lt;br /&gt;
|REG_BRDFIX	&lt;br /&gt;
|Use the embedded [[SFIX ROM]] and [[SM1]] ROM&lt;br /&gt;
|-&lt;br /&gt;
|$3A001B&lt;br /&gt;
|REG_CRTFIX 	&lt;br /&gt;
|Use the cart&#039;s [[S ROM]] and [[M1 ROM]]&lt;br /&gt;
|-&lt;br /&gt;
|$3A000D&lt;br /&gt;
|REG_SRAMLOCK 	&lt;br /&gt;
|Write-protects [[backup RAM]] (MVS)&lt;br /&gt;
|-&lt;br /&gt;
|$3A001D&lt;br /&gt;
|REG_SRAMUNLOCK 	&lt;br /&gt;
|Unprotects backup RAM (MVS)&lt;br /&gt;
|-&lt;br /&gt;
|$3A000F&lt;br /&gt;
|REG_PALBANK0 	&lt;br /&gt;
|Use [[palette RAM|palette]] bank 0&lt;br /&gt;
|-&lt;br /&gt;
|$3A001F&lt;br /&gt;
|REG_PALBANK1&lt;br /&gt;
|Use palette bank 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Video registers==&lt;br /&gt;
&lt;br /&gt;
Handled by the [[LSPC]]. Byte writes are only effective on even addresses and they store the same data in both bytes. Odd addresses aren&#039;t mapped ? Decode mask: $FE0001.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;regdef&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Address&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$3C0000&lt;br /&gt;
|REG_VRAMADDR 	&lt;br /&gt;
|Read from [[VRAM]] (address doesn&#039;t change)&lt;br /&gt;
|Sets VRAM address&lt;br /&gt;
|-&lt;br /&gt;
|$3C0002&lt;br /&gt;
|REG_VRAMRW&lt;br /&gt;
|Read from VRAM (address doesn&#039;t change)&lt;br /&gt;
|Write to VRAM (modulo is applied after)&lt;br /&gt;
|-&lt;br /&gt;
|$3C0004&lt;br /&gt;
|REG_VRAMMOD&lt;br /&gt;
|Reads VRAM address modulo&lt;br /&gt;
|Sets VRAM address modulo&lt;br /&gt;
|-&lt;br /&gt;
|$3C0006&lt;br /&gt;
|REG_LSPCMODE&lt;br /&gt;
|{{16BitRegister|Raster line counter.&amp;lt;br&amp;gt;See [[Display_timing#Vertical|Display timing]]|9|0|3|1:50Hz&amp;lt;br&amp;gt;0:60Hz ([[GPU|LSPC2]] only)|1|[[Auto animation]] counter|3}}&lt;br /&gt;
|{{16BitRegister|Auto animation speed&amp;lt;br&amp;gt;(in frames)|8|[[Timer interrupt]]&amp;lt;br&amp;gt;mode|3|Timer interrupt enable|1|Disable auto animation|1|Unused|3}}&lt;br /&gt;
Reset value: ????????00000---&lt;br /&gt;
|-&lt;br /&gt;
|$3C0008&lt;br /&gt;
|REG_TIMERHIGH&lt;br /&gt;
|Like REG_VRAMADDR.&lt;br /&gt;
|16 highest bits of the [[timer interrupt|timer]] reload value.&lt;br /&gt;
|-&lt;br /&gt;
|$3C000A&lt;br /&gt;
|REG_TIMERLOW&lt;br /&gt;
|Like REG_VRAMRW.&lt;br /&gt;
|16 lowest bits of the timer reload value.&lt;br /&gt;
|-&lt;br /&gt;
|$3C000C&lt;br /&gt;
|REG_IRQACK 	&lt;br /&gt;
|Like REG_VRAMMOD.&lt;br /&gt;
|[[68k interrupts|Interrupt]] acknowledge.&lt;br /&gt;
{{8BitRegister|Unused|5|Ack VBlank IRQ|1|Ack timer IRQ|1|Ack IRQ3|1}}&lt;br /&gt;
|-&lt;br /&gt;
|$3C000E&lt;br /&gt;
|REG_TIMERSTOP&lt;br /&gt;
|Like REG_LSPCMODE.&lt;br /&gt;
|Bit 0=1: Stops timer counter during first and last 16 lines (32 total) when in PAL mode.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==NeoGeo CD registers==&lt;br /&gt;
&lt;br /&gt;
[[NEO-MGA]] / [[LC8953]] / [[LC98000]] ?&lt;br /&gt;
&lt;br /&gt;
===CD drive===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;regdef&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Address&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Handled by&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$FF0161&lt;br /&gt;
|REG_CDDINPUT&lt;br /&gt;
|Byte&lt;br /&gt;
|{{8BitRegister|-|3|CDCK input|1|4-bit bus from the [[CD drive]]|4}}&lt;br /&gt;
|?&lt;br /&gt;
|[[NEO-MGA]]&lt;br /&gt;
|-&lt;br /&gt;
|$FF0163&lt;br /&gt;
|REG_CDDOUTPUT&lt;br /&gt;
|Byte&lt;br /&gt;
|?&lt;br /&gt;
|{{8BitRegister|-|4|4-bit bus to the [[CD drive]]|4}}&lt;br /&gt;
|[[NEO-MGA]]&lt;br /&gt;
|-&lt;br /&gt;
|$FF0165&lt;br /&gt;
|REG_CDDCTRL&lt;br /&gt;
|Byte&lt;br /&gt;
|?&lt;br /&gt;
|{{8BitRegister|-|4|Must be 0|2|Signal selection&amp;lt;br&amp;gt;0:4-bit bus direction&amp;lt;br&amp;gt;1:HOCK output|1|State&amp;lt;br&amp;gt;Dir:0:Out 1:In&amp;lt;br&amp;gt;HOCK:0:Low 1:High|1}}&lt;br /&gt;
|[[NEO-MGA]]&lt;br /&gt;
|-&lt;br /&gt;
|$FF0167&lt;br /&gt;
|REG_CDDSTAT&lt;br /&gt;
|Byte&lt;br /&gt;
|[[CD drive]] status lines.{{8BitRegister|-|3|MUTE|1|SBSO|1|SCOR|1|WFCK|1|EXCK|1}}&lt;br /&gt;
|{{8BitRegister|-|7|EXCK|1}}&lt;br /&gt;
|[[NEO-MGA]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Video===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;regdef&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Address&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Handled by&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$FF0111&lt;br /&gt;
|REG_DISBLSPR&lt;br /&gt;
|Byte&lt;br /&gt;
|?&lt;br /&gt;
|1=Disable 0=Enable sprites&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|[[NEO-GRC]]/[[NEO-OFC]]&lt;br /&gt;
|-&lt;br /&gt;
|$FF0115&lt;br /&gt;
|REG_DISBLFIX&lt;br /&gt;
|Byte&lt;br /&gt;
|?&lt;br /&gt;
|1=Disable 0=Enable fix layer&lt;br /&gt;
|-&lt;br /&gt;
|$FF0119&lt;br /&gt;
|REG_ENVIDEO&lt;br /&gt;
|Byte&lt;br /&gt;
|?&lt;br /&gt;
|1=Enable 0=Disable video output.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Memory===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;regdef&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Address&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Handled by&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$FF01A1&lt;br /&gt;
|REG_SPRBANK&lt;br /&gt;
|Byte&lt;br /&gt;
|?&lt;br /&gt;
|Upload zone 1MiB SPR DRAM bank selection (2 LSBs).&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|$FF01A3&lt;br /&gt;
|REG_PCMBANK&lt;br /&gt;
|Byte&lt;br /&gt;
|?&lt;br /&gt;
|Upload zone 512KiB PCM DRAM bank selection (1 LSB).&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|$FF01A7&lt;br /&gt;
|REG_???BANK&lt;br /&gt;
|Byte&lt;br /&gt;
|?&lt;br /&gt;
|$A00000 zone bank number. What is this ?&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|$FF0121&lt;br /&gt;
|REG_UPMAPSPR&lt;br /&gt;
|rowspan=&amp;quot;8&amp;quot;|Byte&lt;br /&gt;
|rowspan=&amp;quot;8&amp;quot;|?&lt;br /&gt;
|NeoSetSpriteSlot(1);&lt;br /&gt;
Set [[68k memory map|upload zone]] to SPR [[DRAM]]&lt;br /&gt;
|rowspan=&amp;quot;8&amp;quot;|?&lt;br /&gt;
|-&lt;br /&gt;
|$FF0123&lt;br /&gt;
|REG_UPMAPPCM&lt;br /&gt;
|Set upload zone to PCM DRAM&lt;br /&gt;
|-&lt;br /&gt;
|$FF0127&lt;br /&gt;
|REG_UPMAPZ80&lt;br /&gt;
|Set upload zone to Z80 DRAM&lt;br /&gt;
|-&lt;br /&gt;
|$FF0129&lt;br /&gt;
|REG_UPMAPFIX&lt;br /&gt;
|Set upload zone to FIX DRAM&lt;br /&gt;
|-&lt;br /&gt;
|$FF0141&lt;br /&gt;
|REG_UPUNMAPSPR&lt;br /&gt;
|Unset SPR DRAM to upload zone&lt;br /&gt;
|-&lt;br /&gt;
|$FF0143&lt;br /&gt;
|REG_UPUNMAPPCM&lt;br /&gt;
|Unset PCM DRAM to upload zone&lt;br /&gt;
|-&lt;br /&gt;
|$FF0147&lt;br /&gt;
|REG_UPUNMAPZ80&lt;br /&gt;
|Unset Z80 DRAM to upload zone&lt;br /&gt;
|-&lt;br /&gt;
|$FF0149&lt;br /&gt;
|REG_UPUNMAPFIX&lt;br /&gt;
|Unset FIX DRAM to upload zone&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===DMA===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;regdef&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Address&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Handled by&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$FF0061&lt;br /&gt;
|?&lt;br /&gt;
|Byte&lt;br /&gt;
|?&lt;br /&gt;
|Bit 6: Execute DMA microcode&lt;br /&gt;
|rowspan=&amp;quot;7&amp;quot;|[[LC8953]]&lt;br /&gt;
|-&lt;br /&gt;
|$FF0064~$FF0067&lt;br /&gt;
|REG_DMA_ADDR1&lt;br /&gt;
|Longword&lt;br /&gt;
|?&lt;br /&gt;
|Sets DMA source address.&lt;br /&gt;
|-&lt;br /&gt;
|$FF0068~$FF006B&lt;br /&gt;
|REG_DMA_ADDR2&lt;br /&gt;
|Longword&lt;br /&gt;
|?&lt;br /&gt;
|Sets DMA destination address.&lt;br /&gt;
|-&lt;br /&gt;
|$FF006C~$FF006F&lt;br /&gt;
|REG_DMA_VALUE&lt;br /&gt;
|Longword&lt;br /&gt;
|?&lt;br /&gt;
|Sets DMA value for filling.&lt;br /&gt;
|-&lt;br /&gt;
|$FF0070~$FF0073&lt;br /&gt;
|REG_DMA_COUNT&lt;br /&gt;
|Longword&lt;br /&gt;
|?&lt;br /&gt;
|Sets DMA length.&lt;br /&gt;
|-&lt;br /&gt;
|$FF007E&lt;br /&gt;
|REG_DMA_MODE&lt;br /&gt;
|Word&lt;br /&gt;
|?&lt;br /&gt;
|Sets DMA mode.&lt;br /&gt;
|-&lt;br /&gt;
|$FF007E~$FF008E&lt;br /&gt;
|?&lt;br /&gt;
|Words&lt;br /&gt;
|?&lt;br /&gt;
|Microcode (16x 9-bit opcodes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Misc===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;regdef&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Address&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Handled by&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$FF0002&lt;br /&gt;
|?&lt;br /&gt;
|Word&lt;br /&gt;
|?&lt;br /&gt;
|Enables Vector 22 interrupts. NeoRaine calls load_files.&lt;br /&gt;
|rowspan=&amp;quot;8&amp;quot;|[[LC8953]]&lt;br /&gt;
|-&lt;br /&gt;
|$FF0004&lt;br /&gt;
|?&lt;br /&gt;
|Word&lt;br /&gt;
|?&lt;br /&gt;
|CDM3-2 BIOS writes 0,1,3,7&lt;br /&gt;
|-&lt;br /&gt;
|$FF0006&lt;br /&gt;
|?&lt;br /&gt;
|Word&lt;br /&gt;
|?&lt;br /&gt;
|CDM3-2 BIOS writes 0x71FF, CDZ writes 0x71FF&lt;br /&gt;
|-&lt;br /&gt;
|$FF0008&lt;br /&gt;
|?&lt;br /&gt;
|Word&lt;br /&gt;
|?&lt;br /&gt;
|CDM3-2 BIOS writes 0x0000, CDZ writes 0x0000&lt;br /&gt;
|-&lt;br /&gt;
|$FF000A&lt;br /&gt;
|?&lt;br /&gt;
|Word&lt;br /&gt;
|?&lt;br /&gt;
|CDM3-2 BIOS writes 0x7E40, CDZ writes 0x7E00&lt;br /&gt;
|-&lt;br /&gt;
|$FF000C&lt;br /&gt;
|?&lt;br /&gt;
|Word&lt;br /&gt;
|?&lt;br /&gt;
|Read and stored on vector 23 interrupt.&lt;br /&gt;
|-&lt;br /&gt;
|$FF000F&lt;br /&gt;
|?&lt;br /&gt;
|Byte&lt;br /&gt;
|?&lt;br /&gt;
|[[68k interrupts|Interrupt]] acknowledge.&lt;br /&gt;
{{8BitRegister|?|2|Vector 21|1|Vector 22|1|Vector 23|1|?|3}}&lt;br /&gt;
|-&lt;br /&gt;
|$FF0010/11&lt;br /&gt;
|?&lt;br /&gt;
|Byte&lt;br /&gt;
|?&lt;br /&gt;
|CDM3-2 BIOS writes $FE&lt;br /&gt;
|-&lt;br /&gt;
|$FF0017&lt;br /&gt;
|?&lt;br /&gt;
|Byte&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|CD mode, maybe CDDA mute ? Bit 0: 0=Audio 1=Data.&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|$FF0101&lt;br /&gt;
|?&lt;br /&gt;
|Byte&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|LC8951 register address (4 LSB)&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|[[LC89515]]&lt;br /&gt;
|-&lt;br /&gt;
|$FF0103&lt;br /&gt;
|?&lt;br /&gt;
|Byte&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|LC8951 register  value&lt;br /&gt;
|-&lt;br /&gt;
|$FF0105&lt;br /&gt;
|REG_TRANSAREA&lt;br /&gt;
|Byte&lt;br /&gt;
|?&lt;br /&gt;
|Set active transfer area&lt;br /&gt;
*0:Sprites&lt;br /&gt;
*1:ADPCM&lt;br /&gt;
*4:Z80&lt;br /&gt;
*5:Fix&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|$FF0108&lt;br /&gt;
|?&lt;br /&gt;
|Word&lt;br /&gt;
|?&lt;br /&gt;
|CDM3-2 BIOS writes $5555&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|$FF010C&lt;br /&gt;
|?&lt;br /&gt;
|Word&lt;br /&gt;
|?&lt;br /&gt;
|CDM3-2 BIOS writes $5555 and reads&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|$FF011C&lt;br /&gt;
|REG_CDCONFIG&lt;br /&gt;
|Word&lt;br /&gt;
|{{16BitRegister|1|2|CD Mech&amp;lt;br&amp;gt;0:TOP/CDZ&amp;lt;br&amp;gt;1:FRONT|1|Lid Status&amp;lt;br&amp;gt;(Opposite on CDZ)|1|Configuration&amp;lt;br&amp;gt;jumpers|4|?|8}}&lt;br /&gt;
|?&lt;br /&gt;
|[[NEO-CDD boards|NEO-CDD board]]&lt;br /&gt;
|-&lt;br /&gt;
|$FF016D&lt;br /&gt;
|&lt;br /&gt;
|Byte&lt;br /&gt;
|?&lt;br /&gt;
|MapVectorTable(!(byteValue == 0xFF));&lt;br /&gt;
|rowspan=&amp;quot;4&amp;quot;|[[NEO-MGA]]&lt;br /&gt;
|-&lt;br /&gt;
|$FF016F&lt;br /&gt;
|REG_UPLOAD_EN&lt;br /&gt;
|Byte&lt;br /&gt;
|?&lt;br /&gt;
|Enable/disable writes to the [[68k memory map|upload zone]] ($E00000)&lt;br /&gt;
|-&lt;br /&gt;
|$FF0181&lt;br /&gt;
|REG_CDIRQ_EN&lt;br /&gt;
|Byte&lt;br /&gt;
|?&lt;br /&gt;
|Bit 0: Enable CD drive interrupt&lt;br /&gt;
|-&lt;br /&gt;
|$FF0183&lt;br /&gt;
|REG_Z80RST&lt;br /&gt;
|Byte&lt;br /&gt;
|?&lt;br /&gt;
|Active-low Z80 RESET ($0/$FF)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===CDDA===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;regdef&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Address&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Read&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Write&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Handled by&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$FF0188&lt;br /&gt;
|REG_CDDALEFTL&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Word&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|See [[Reading CDDA sound levels]]&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|No effect&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|[[NEO-MGA]]&lt;br /&gt;
|-&lt;br /&gt;
|$FF018A&lt;br /&gt;
|REG_CDDARIGHTL&lt;br /&gt;
|-&lt;br /&gt;
|$FF01FC&lt;br /&gt;
|?&lt;br /&gt;
|Word&lt;br /&gt;
|?&lt;br /&gt;
|CDDA control ?&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|$FF01FE&lt;br /&gt;
|?&lt;br /&gt;
|Word&lt;br /&gt;
|?&lt;br /&gt;
|CD music/data switch ?&lt;br /&gt;
|?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Base system]]&lt;br /&gt;
[[Category:Code]]&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=68k_ASM_defines&amp;diff=9287</id>
		<title>68k ASM defines</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=68k_ASM_defines&amp;diff=9287"/>
		<updated>2026-08-12T10:10:49Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: corrected: BIOS_P2TIMER equ $10FD9F because $10FD99 is BIOS_P1TIMER&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are assembly defines/aliases for memory locations and constants. For detailed descriptions, see [[Memory mapped registers]].&lt;br /&gt;
&lt;br /&gt;
These can be copied into a file and included in your assembly project to use register names instead of their (meaningless) addresses.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
;Hard DIPs:&lt;br /&gt;
DIPSW_SETTINGS  equ 0&lt;br /&gt;
DIPSW_CHUTES    equ 1&lt;br /&gt;
DIPSW_CTRL      equ 2&lt;br /&gt;
DIPSW_ID0       equ 3&lt;br /&gt;
DIPSW_ID1       equ 4&lt;br /&gt;
DIPSW_MULTI     equ 5&lt;br /&gt;
DIPSW_FREEPLAY  equ 6&lt;br /&gt;
DIPSW_FREEZE    equ 7&lt;br /&gt;
&lt;br /&gt;
;VRAM zones:&lt;br /&gt;
SCB1            equ $0000   ;Sprite tilemaps&lt;br /&gt;
FIXMAP          equ $7000&lt;br /&gt;
SCB2            equ $8000   ;Sprite shrink values&lt;br /&gt;
SCB3            equ $8200   ;Sprite Y positions, heights and flags&lt;br /&gt;
SCB4            equ $8400   ;Sprite X positions&lt;br /&gt;
&lt;br /&gt;
;Basic colors:&lt;br /&gt;
BLACK           equ $8000&lt;br /&gt;
MIDRED          equ $4700&lt;br /&gt;
RED             equ $4F00&lt;br /&gt;
MIDGREEN        equ $2070&lt;br /&gt;
GREEN           equ $20F0&lt;br /&gt;
MIDBLUE         equ $1007&lt;br /&gt;
BLUE            equ $100F&lt;br /&gt;
MIDYELLOW       equ $6770&lt;br /&gt;
YELLOW          equ $6FF0&lt;br /&gt;
MIDMAGENTA      equ $5707&lt;br /&gt;
MAGENTA         equ $5F0F&lt;br /&gt;
MIDCYAN         equ $3077&lt;br /&gt;
CYAN            equ $30FF&lt;br /&gt;
ORANGE          equ $6F70&lt;br /&gt;
MIDGREY         equ $7777&lt;br /&gt;
WHITE           equ $7FFF&lt;br /&gt;
&lt;br /&gt;
;Zones:&lt;br /&gt;
RAMSTART        equ $100000   ;68k work RAM&lt;br /&gt;
PALETTES        equ $400000   ;Palette RAM&lt;br /&gt;
BACKDROP        equ PALETTES+(16*2*256)-2&lt;br /&gt;
MEMCARD         equ $800000   ;Memory card&lt;br /&gt;
SYSROM          equ $C00000   ;System ROM&lt;br /&gt;
&lt;br /&gt;
;Registers:&lt;br /&gt;
REG_P1CNT       equ $300000&lt;br /&gt;
REG_DIPSW       equ $300001   ;Dipswitches/Watchdog&lt;br /&gt;
REG_SOUND       equ $320000   ;Z80 I/O&lt;br /&gt;
REG_STATUS_A    equ $320001&lt;br /&gt;
REG_P2CNT       equ $340000&lt;br /&gt;
REG_STATUS_B    equ $380000&lt;br /&gt;
REG_POUTPUT     equ $380001   ;Joypad port outputs&lt;br /&gt;
REG_SLOT        equ $380021   ;Slot select&lt;br /&gt;
&lt;br /&gt;
REG_NOSHADOW    equ $3A0001   ;Video output normal/dark&lt;br /&gt;
REG_SHADOW      equ $3A0011&lt;br /&gt;
REG_BRDFIX      equ $3A000B   ;Use embedded fix tileset&lt;br /&gt;
REG_CRTFIX      equ $3A001B   ;Use game fix tileset&lt;br /&gt;
REG_PALBANK1    equ $3A000F   ;Use palette bank 1&lt;br /&gt;
REG_PALBANK0    equ $3A001F   ;Use palette bank 0 (default)&lt;br /&gt;
&lt;br /&gt;
REG_VRAMADDR    equ $3C0000&lt;br /&gt;
REG_VRAMRW      equ $3C0002&lt;br /&gt;
REG_VRAMMOD     equ $3C0004&lt;br /&gt;
REG_LSPCMODE    equ $3C0006&lt;br /&gt;
REG_TIMERHIGH   equ $3C0008&lt;br /&gt;
REG_TIMERLOW    equ $3C000A&lt;br /&gt;
REG_IRQACK      equ $3C000C&lt;br /&gt;
REG_TIMERSTOP   equ $3C000E&lt;br /&gt;
&lt;br /&gt;
;System ROM calls:&lt;br /&gt;
SYS_INT1          equ $C00438&lt;br /&gt;
SYS_RETURN        equ $C00444&lt;br /&gt;
SYS_IO            equ $C0044A&lt;br /&gt;
SYS_CREDIT_CHECK  equ $C00450&lt;br /&gt;
SYS_CREDIT_DOWN   equ $C00456&lt;br /&gt;
SYS_READ_CALENDAR equ $C0045C   ;MVS only&lt;br /&gt;
SYS_CARD          equ $C00468&lt;br /&gt;
SYS_CARD_ERROR    equ $C0046E&lt;br /&gt;
SYS_HOWTOPLAY     equ $C00474   ;MVS only&lt;br /&gt;
SYS_FIX_CLEAR     equ $C004C2&lt;br /&gt;
SYS_LSP_1ST       equ $C004C8   ;Clear sprites&lt;br /&gt;
SYS_MESS_OUT      equ $C004CE&lt;br /&gt;
&lt;br /&gt;
;RAM locations:&lt;br /&gt;
BIOS_SYSTEM_MODE  equ $10FD80&lt;br /&gt;
BIOS_MVS_FLAG     equ $10FD82&lt;br /&gt;
BIOS_COUNTRY_CODE equ $10FD83&lt;br /&gt;
BIOS_GAME_DIP     equ $10FD84   ;Start of soft DIPs settings (up to $10FD93)&lt;br /&gt;
&lt;br /&gt;
;Set by SYS_IO:&lt;br /&gt;
BIOS_P1STATUS   equ $10FD94&lt;br /&gt;
BIOS_P1PREVIOUS equ $10FD95&lt;br /&gt;
BIOS_P1CURRENT  equ $10FD96&lt;br /&gt;
BIOS_P1CHANGE   equ $10FD97&lt;br /&gt;
BIOS_P1REPEAT   equ $10FD98&lt;br /&gt;
BIOS_P1TIMER    equ $10FD99&lt;br /&gt;
&lt;br /&gt;
BIOS_P2STATUS   equ $10FD9A&lt;br /&gt;
BIOS_P2PREVIOUS equ $10FD9B&lt;br /&gt;
BIOS_P2CURRENT  equ $10FD9C&lt;br /&gt;
BIOS_P2CHANGE   equ $10FD9D&lt;br /&gt;
BIOS_P2REPEAT   equ $10FD9E&lt;br /&gt;
BIOS_P2TIMER    equ $10FD9F&lt;br /&gt;
&lt;br /&gt;
BIOS_STATCURNT    equ $10FDAC&lt;br /&gt;
BIOS_STATCHANGE   equ $10FDAD&lt;br /&gt;
BIOS_USER_REQUEST equ $10FDAE&lt;br /&gt;
BIOS_USER_MODE    equ $10FDAF&lt;br /&gt;
BIOS_START_FLAG   equ $10FDB4&lt;br /&gt;
BIOS_MESS_POINT   equ $10FDBE&lt;br /&gt;
BIOS_MESS_BUSY    equ $10FDC2&lt;br /&gt;
&lt;br /&gt;
;Memory card:&lt;br /&gt;
BIOS_CRDF       equ $10FDC4   ;Byte: function to perform when calling BIOSF_CRDACCESS&lt;br /&gt;
BIOS_CRDRESULT  equ $10FDC6   ;Byte: 00 on success, else 80+ and encodes the error&lt;br /&gt;
BIOS_CRDPTR     equ $10FDC8   ;Longword: pointer to read from/write to&lt;br /&gt;
BIOS_CRDSIZE    equ $10FDCC   ;Word: how much data to read/write from/to card&lt;br /&gt;
BIOS_CRDNGH     equ $10FDCE   ;Word: usually game NGH. Unique identifier for the game that owns the save file&lt;br /&gt;
BIOS_CRDFILE    equ $10FDD0   ;Word: each NGH has up to 16 save files associated with&lt;br /&gt;
&lt;br /&gt;
;Calendar, MVS only (in BCD):&lt;br /&gt;
BIOS_YEAR       equ $10FDD2   ;Last 2 digits of year&lt;br /&gt;
BIOS_MONTH      equ $10FDD3&lt;br /&gt;
BIOS_DAY        equ $10FDD4&lt;br /&gt;
BIOS_WEEKDAY    equ $10FDD5   ;Sunday = 0, Monday = 1 ... Saturday = 6&lt;br /&gt;
BIOS_HOUR       equ $10FDD6   ;24 hour time&lt;br /&gt;
BIOS_MINUTE     equ $10FDD7&lt;br /&gt;
BIOS_SECOND     equ $10FDD8&lt;br /&gt;
&lt;br /&gt;
BIOS_SELECT_TIMER equ $10FDDA   ;Byte: game start countdown&lt;br /&gt;
BIOS_DEVMODE      equ $10FE80   ;Byte: non-zero for developer mode&lt;br /&gt;
&lt;br /&gt;
;Upload system ROM call:&lt;br /&gt;
BIOS_UPDEST     equ $10FEF4   ;Longword&lt;br /&gt;
BIOS_UPSRC      equ $10FEF8   ;Longword&lt;br /&gt;
BIOS_UPSIZE     equ $10FEFC   ;Longword&lt;br /&gt;
BIOS_UPZONE     equ $10FEDA   ;Byte: zone (0=PRG, 1=FIX, 2=SPR, 3=Z80, 4=PCM, 5=PAT)&lt;br /&gt;
BIOS_UPBANK     equ $10FEDB   ;Byte: bank&lt;br /&gt;
&lt;br /&gt;
SOUND_STOP      equ $D00046&lt;br /&gt;
&lt;br /&gt;
;Button definitions:&lt;br /&gt;
CNT_UP	        equ 0&lt;br /&gt;
CNT_DOWN	equ 1&lt;br /&gt;
CNT_LEFT	equ 2&lt;br /&gt;
CNT_RIGHT	equ 3&lt;br /&gt;
CNT_A	        equ 4&lt;br /&gt;
CNT_B	        equ 5&lt;br /&gt;
CNT_C	        equ 6&lt;br /&gt;
CNT_D	        equ 7&lt;br /&gt;
CNT_START1      equ 0&lt;br /&gt;
CNT_SELECT1     equ 1&lt;br /&gt;
CNT_START2      equ 2&lt;br /&gt;
CNT_SELECT2     equ 3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==CD only==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
;System ROM calls&lt;br /&gt;
SYS_VIDEOEN     equ $C00470&lt;br /&gt;
SYS_UPLOAD      equ $C00546   ;Upload to DRAM&lt;br /&gt;
SYS_CDDACMD     equ $C0056A   ;Issue CDDA command&lt;br /&gt;
&lt;br /&gt;
;DMA:&lt;br /&gt;
REG_DMACPYSRC   equ $FF0064&lt;br /&gt;
REG_DMAFILDEST  equ $FF0064&lt;br /&gt;
REG_DMACPYDEST  equ $FF0068&lt;br /&gt;
REG_DMAFILVAL   equ $FF006C&lt;br /&gt;
REG_DMASIZE     equ $FF0070&lt;br /&gt;
REG_DMASTART    equ $FF0060&lt;br /&gt;
&lt;br /&gt;
REG_DISBLSPR    equ $FF0111&lt;br /&gt;
REG_DISBLFIX    equ $FF0115&lt;br /&gt;
REG_ENVIDEO     equ $FF0119&lt;br /&gt;
REG_CDCONFIG    equ $FF011C&lt;br /&gt;
&lt;br /&gt;
REG_UPMAPSPR    equ $FF0121&lt;br /&gt;
REG_UPMAPPCM    equ $FF0123&lt;br /&gt;
REG_UPMAPZ80    equ $FF0127&lt;br /&gt;
REG_UPMAPFIX    equ $FF0129&lt;br /&gt;
REG_UPUNMAPSPR  equ $FF0141&lt;br /&gt;
REG_UPUNMAPPCM  equ $FF0143&lt;br /&gt;
REG_UPUNMAPZ80  equ $FF0147&lt;br /&gt;
REG_UPUNMAPFIX  equ $FF0149&lt;br /&gt;
REG_DISBLIRQ    equ $FF016F&lt;br /&gt;
REG_ENZ80       equ $FF0183&lt;br /&gt;
&lt;br /&gt;
REG_CDDALEFTL   equ $FF0188   ;CD audio levels&lt;br /&gt;
REG_CDDARIGHTL  equ $FF018A&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Code]]&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=PROG-G2&amp;diff=6827</id>
		<title>PROG-G2</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=PROG-G2&amp;diff=6827"/>
		<updated>2021-09-26T09:07:35Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: Added Viewpoint to the list of games this board is used for.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Prog-g2_mvs.jpg|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
Board only used for [[Super Sidekicks]],[[Viewpoint]] and [[Fatal Fury 2]]. Can host [[SNK-9201]] as a security chip.&lt;br /&gt;
&lt;br /&gt;
==Jumpers==&lt;br /&gt;
&lt;br /&gt;
[[File:prog-g2.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Max capacity==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Cartridge boards]]&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=File:Fixlayout-tmpl.png&amp;diff=6586</id>
		<title>File:Fixlayout-tmpl.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=File:Fixlayout-tmpl.png&amp;diff=6586"/>
		<updated>2020-04-06T17:13:00Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: Programmatically created grid of the Fix layout for easy reference.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Programmatically created grid of the Fix layout for easy reference.&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{cc-zero}}&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Fix_layer&amp;diff=6585</id>
		<title>Fix layer</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Fix_layer&amp;diff=6585"/>
		<updated>2020-04-06T17:11:30Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The fix layer is a non-scrollable, tile-based layer with transparency which has the highest priority on the display (it always overlaps [[sprites]]). It is most often used to display text or HUDs like scores and health bars.&lt;br /&gt;
&lt;br /&gt;
It is somewhat limited compared to sprites:&lt;br /&gt;
* Tilesets can only contain a maximum of 4096 tiles (128KiB) without using bankswitching (see below).&lt;br /&gt;
* Only the first 16 palettes can be used.&lt;br /&gt;
&lt;br /&gt;
=Graphics format=&lt;br /&gt;
&lt;br /&gt;
Fix tiles are 8*8 pixels, they&#039;re stored in the [[S ROM]], or in [[FIX file]]s before getting loaded to [[PSRAM]] in CD systems.&lt;br /&gt;
In some MVS systems, there is an embedded fix tileset stored in the [[SFIX ROM]] which can be swapped with the cartridge&#039;s one.&lt;br /&gt;
&lt;br /&gt;
The tiles graphics are 4BPP like sprites tiles (15 colors, index 0 is transparent), each can be individually mapped to one of the first 16 [[palettes]] (4bit palette index).&lt;br /&gt;
&lt;br /&gt;
See [[Fix graphics format]] for more details.&lt;br /&gt;
&lt;br /&gt;
=Fix map=&lt;br /&gt;
&lt;br /&gt;
[[File:Fixlayout.png|frame|Fix layout. The grey area is part of the display but only the area in the red rectangle should be used.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Fixlayout-tmpl.png|frame|Complete Fix layout map for reference.]]&lt;br /&gt;
&lt;br /&gt;
The map is in [[VRAM]] starting at address $7000. The area used for display is 40*32 = 1280 words in size, but only 40x28 tiles are drawn in NTSC mode (2 hidden lines on the top and bottom).&lt;br /&gt;
&lt;br /&gt;
Most games don&#039;t use the leftmost and rightmost columns, as some CRT screens can cut them off. SNK recomends only using a centered 38x28 safe zone.&lt;br /&gt;
&lt;br /&gt;
Each map entry in VRAM uses a 16 bit word:&lt;br /&gt;
&lt;br /&gt;
{{16BitRegister|Palette number|4|Tile number|12}}&lt;br /&gt;
&lt;br /&gt;
Tiles are mapped from &#039;&#039;&#039;top to bottom, and left to right&#039;&#039;&#039; (see layout). The {{Reg|VRAM_MOD ($3C0004)}} register can be set to 32 if tiles need to be updated in lines. See [[Displaying text]].&lt;br /&gt;
&lt;br /&gt;
=Bankswitching=&lt;br /&gt;
&lt;br /&gt;
Games using the [[NEO-CMC]] chips are able to use more than 4096 fix tiles by using VRAM space $7500+. See [[Fix bankswitching]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Video system]]&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=File:Pcc-dim.jpg&amp;diff=6569</id>
		<title>File:Pcc-dim.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=File:Pcc-dim.jpg&amp;diff=6569"/>
		<updated>2019-11-12T10:21:18Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: https://web.archive.org/web/20081225064420/http://pcmcia.org/pccard.htm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
https://web.archive.org/web/20081225064420/http://pcmcia.org/pccard.htm&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free Non commercial or educational}}&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=JEIDA_V3&amp;diff=6568</id>
		<title>JEIDA V3</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=JEIDA_V3&amp;diff=6568"/>
		<updated>2019-11-12T10:20:28Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: Created page with &amp;quot;The PC Card Standard defines a 68-pin interface between the peripheral card and the socket into which it gets inserted. It defines three standard PC Card form factors, called...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The PC Card Standard defines a 68-pin interface between the peripheral card and the socket into which it gets inserted. It defines three standard PC Card form factors, called Type I, Type II and Type III. All PC Cards measure the same length and width, differing only in thickness. Smaller cards can fit in larger sockets.&lt;br /&gt;
In addition to electrical and physical specifications, the PC Card Standard defines a software architecture to provide &amp;quot;plug and play&amp;quot; capability across the widest range of products. This software is made up of Socket Services and Card Services. It is Card and Socket Services that allow for interoperability of PC Cards.&lt;br /&gt;
&lt;br /&gt;
== PC Card Physical Characteristics ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;regdef&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Property&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Value&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Physical Interface&lt;br /&gt;
|68 Pins &lt;br /&gt;
|-&lt;br /&gt;
|Back End I/O Conn.&lt;br /&gt;
|Proprietary&lt;br /&gt;
|-&lt;br /&gt;
|Length&lt;br /&gt;
|85.6 mm&lt;br /&gt;
|-&lt;br /&gt;
|Width&lt;br /&gt;
|54.0 mm&lt;br /&gt;
|-&lt;br /&gt;
|Thickness&lt;br /&gt;
|Type I (appropriate for Neo Geo) = 3.3 mm&amp;lt;br&amp;gt;&lt;br /&gt;
Type II = 5.0 mm&amp;lt;br&amp;gt;&lt;br /&gt;
Type III = 10.5 mm&lt;br /&gt;
|-&lt;br /&gt;
|Operating Temp.&lt;br /&gt;
|0 to 55 C&lt;br /&gt;
|-&lt;br /&gt;
|Storage Temp.&lt;br /&gt;
|minus 20 to 65 C&lt;br /&gt;
|-&lt;br /&gt;
|Minimum Insertions&lt;br /&gt;
|Office Env. 10,000&amp;lt;br&amp;gt;&lt;br /&gt;
Harsh Env.  5,000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:pcc-dim.jpg]]&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Memory_card&amp;diff=6567</id>
		<title>Memory card</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Memory_card&amp;diff=6567"/>
		<updated>2019-11-12T10:04:00Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:snkmemcard.jpg|thumb|SRAM memory card, showing the SRAM chip and voltage detection circuit. Picture by [[User:HPMAN|HPMAN]]]]&lt;br /&gt;
&lt;br /&gt;
[[File:NEO-IC8_front.jpg|thumb|NEO-IC8, original SNK card. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
[[File:NEO-IC8_back.jpg|thumb|NEO-IC8, back of original SNK card. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
The NeoGeo home console and some [[MVS hardware|MVS]] cabs can use [[JEIDA V3]] memory cards to store game saves and/or high scores, allowing players to save their progress and continue on any system running the same game.&lt;br /&gt;
&lt;br /&gt;
Even if the memory card [[68k memory map|address space]] can be freely used, games should only perform memory card operations through the [[CARD]] system ROM call to avoid data corruption.&lt;br /&gt;
&lt;br /&gt;
=Supported card types=&lt;br /&gt;
&lt;br /&gt;
The SP-S2 [[system ROM]] (and probably all the others) can handle 8 memory card sizes from 2KiB up to 16KiB, in 2KiB steps:&lt;br /&gt;
*2KiB&lt;br /&gt;
*4KiB&lt;br /&gt;
*6KiB&lt;br /&gt;
*8KiB&lt;br /&gt;
*10KiB&lt;br /&gt;
*14KiB&lt;br /&gt;
*16KiB&lt;br /&gt;
&lt;br /&gt;
And 4 different card types:&lt;br /&gt;
*8 bits wide (only the low byte is used)&lt;br /&gt;
*16 bits wide&lt;br /&gt;
*16 bits wide &amp;quot;doubled&amp;quot;&lt;br /&gt;
*&amp;quot;SNK ROM&amp;quot; cards&lt;br /&gt;
&lt;br /&gt;
=Original SNK card=&lt;br /&gt;
&lt;br /&gt;
The original SNK-branded memory card was a [[:File:CR2016_battery.jpg|battery-backed]] 8-bit wide 2KiB card using a [[LH5116|LH5116 SRAM chip]] and voltage switching circuitry.&lt;br /&gt;
&lt;br /&gt;
Since it uses a battery, it may be prone to data loss if the voltage drops below 2V. It is unclear if the battery is charged up when plugged into a powered system or not.&lt;br /&gt;
&lt;br /&gt;
There are at least 2 known versions of the original SNK Memory Card, each with its individual design and circuit-board:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:NEO-IC8_versions.png|640px]]&lt;br /&gt;
&lt;br /&gt;
The first version has the [[C10075-X2-2]] while the later one hase the [[EZ866]] board.&lt;br /&gt;
&lt;br /&gt;
=CD systems=&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;virtual&amp;quot; memory card is embedded in [[CD systems]] as a 8KiB battery-backed SRAM chip.&lt;br /&gt;
&lt;br /&gt;
=Data format=&lt;br /&gt;
&lt;br /&gt;
All cards use the same format regardless of capacity, only regions sizes differ. Since the JEIDA data bus is 16-bits wide, make sure to double the address for 8-bit cards if you choose to access their memory directly.&lt;br /&gt;
&lt;br /&gt;
The data is referred to as &amp;quot;blocks&amp;quot;, one block being 64 bytes. The header always occupies the first block. Eg. A 2KiB card can hold (2048/64)-1 = 31 blocks.&lt;br /&gt;
&lt;br /&gt;
The data is split into 5 regions:&lt;br /&gt;
&lt;br /&gt;
==Header==&lt;br /&gt;
&lt;br /&gt;
Always 64 bytes.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Address&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$0~$9&lt;br /&gt;
|&lt;br /&gt;
|10 bytes&lt;br /&gt;
|Zeros or &amp;quot;SNK ROM &amp;quot; (development unit ?)&lt;br /&gt;
&lt;br /&gt;
For 16 bits &amp;quot;doubled&amp;quot; cards, $6 is set to $0001&lt;br /&gt;
|-&lt;br /&gt;
|$A&lt;br /&gt;
|CARD_SIZE&lt;br /&gt;
|word&lt;br /&gt;
|Address space used by the memory card. Eg. A 2KiB 8-bit card is $1000.&lt;br /&gt;
|-&lt;br /&gt;
|$C&lt;br /&gt;
|&lt;br /&gt;
|byte&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|$D&lt;br /&gt;
|CARD_FAT_1_CHKSUM&lt;br /&gt;
|byte&lt;br /&gt;
|Checksum of FAT 1&lt;br /&gt;
|-&lt;br /&gt;
|$E&lt;br /&gt;
|CARD_FAT_2_CHKSUM&lt;br /&gt;
|byte&lt;br /&gt;
|Checksum of FAT 2&lt;br /&gt;
|-&lt;br /&gt;
|$F&lt;br /&gt;
|CARD_USERNAME_AVAILABLE&lt;br /&gt;
|byte&lt;br /&gt;
|0 : Username unavailable, !0 : Username available&lt;br /&gt;
|-&lt;br /&gt;
|$10&lt;br /&gt;
|CARD_USERNAME&lt;br /&gt;
|16 bytes&lt;br /&gt;
|Card holder&#039;s username&lt;br /&gt;
|-&lt;br /&gt;
|$20&lt;br /&gt;
|CARD_MAGIC&lt;br /&gt;
|16 bytes&lt;br /&gt;
|$4E $XX $45 $XX $4F $XX $2D $XX $47 $XX $45 $XX $4F $XX $80 $XX (&amp;quot;NEO-GEO&amp;quot;, $80)&lt;br /&gt;
|-&lt;br /&gt;
|$30&lt;br /&gt;
|CARD_REGION&lt;br /&gt;
|byte&lt;br /&gt;
|Region of the system that formated the card, 0 = Japan, 1 = USA, 2 = Europe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Directory==&lt;br /&gt;
&lt;br /&gt;
List of saves of 32, 64, 96, 128, 160, 192, 224 or 256 entries. The size depends on the card&#039;s capacity.&lt;br /&gt;
&lt;br /&gt;
Note that since the header occupies the first block, there will always be at least one unused directory entry.&lt;br /&gt;
&lt;br /&gt;
Each entry is 4 bytes, with the following format:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;regdef&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Address&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$0&lt;br /&gt;
|byte&lt;br /&gt;
|Save sub-number (CARD_SUB), 0 to 15. $FF if entry is free.&lt;br /&gt;
|-&lt;br /&gt;
|$1&lt;br /&gt;
|word&lt;br /&gt;
|Game&#039;s [[NGH number]]&lt;br /&gt;
|-&lt;br /&gt;
|$3&lt;br /&gt;
|byte&lt;br /&gt;
|FAT entry index (see below)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==FAT 1==&lt;br /&gt;
&lt;br /&gt;
List of used blocks of 64, 128, 192, or 256 entries. The size depends on the card&#039;s capacity.&lt;br /&gt;
* $02 is a block reserved by the system ROM&lt;br /&gt;
* $01 is a block used by a game&lt;br /&gt;
* $00 is a free block&lt;br /&gt;
&lt;br /&gt;
==FAT 2==&lt;br /&gt;
&lt;br /&gt;
FAT 2 is simply a mirror of FAT 1.&lt;br /&gt;
&lt;br /&gt;
If any of the FAT tables checksum is bad, the correct table is written over the other one. If both checksums are bad, the system ROM displays an error.&lt;br /&gt;
&lt;br /&gt;
==Game Data==&lt;br /&gt;
&lt;br /&gt;
Many games use only one block, but some may use more.&lt;br /&gt;
&lt;br /&gt;
The first 20 bytes contain the data title (usually the game and stage name).&lt;br /&gt;
&lt;br /&gt;
=Registers=&lt;br /&gt;
&lt;br /&gt;
* Write is enabled if {{Reg|REG_CRDUNLOCK1}} and {{Reg|REG_CRDUNLOCK2}} are written to&lt;br /&gt;
* The WP (Write Protect) pin is read through bit 6 of {{Reg|REG_STATUS_B}}&lt;br /&gt;
* CD1 (Card Detect 1) is read through bit 4 of {{Reg|REG_STATUS_B}}&lt;br /&gt;
* CD2 (Card Detect 2) is read through bit 5 of {{Reg|REG_STATUS_B}}&lt;br /&gt;
** Both must be 0 if the card is inserted correctly&lt;br /&gt;
* Attribute memory is selected if {{Reg|REG_CRDREGSEL}} is written to, never used ?&lt;br /&gt;
&lt;br /&gt;
=Pinout=&lt;br /&gt;
&lt;br /&gt;
See [[Memory card pinout]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Cartridge systems]]&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=C10075-X2-2&amp;diff=6561</id>
		<title>C10075-X2-2</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=C10075-X2-2&amp;diff=6561"/>
		<updated>2019-11-11T21:09:18Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: /* Battery */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:neo-ic8_pcb_C10075-X2-2_front.jpg|thumb|Front of PCB. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
[[File:neo-ic8_pcb_C10075-X2-2_front_sram-removed.jpg|thumb|Front of PCB with SRAM removed. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
[[File:neo-ic8_pcb_C10075-X2-2_back.jpg|thumb|Back of PCB. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
Printed circuit board of an original SNK [[memory card]] NEO-IC8.&lt;br /&gt;
&lt;br /&gt;
Found in this version of the NEO-IC8 Memory Card:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:NEO-IC8_front.jpg|200px|NEO-IC8, original SNK card.]]&lt;br /&gt;
&lt;br /&gt;
== PCB Dimensions ==&lt;br /&gt;
&lt;br /&gt;
* Thickness: 0.5 mm&lt;br /&gt;
* Width: 46.1 mm&lt;br /&gt;
* Height: 51.4 mm&lt;br /&gt;
&lt;br /&gt;
== Connector ==&lt;br /&gt;
&lt;br /&gt;
The board uses a 68-pin connector which was manufactured by MOLEX and HIROSE among others.&lt;br /&gt;
&lt;br /&gt;
* MOLEX Series: 89415 (obsolet)&lt;br /&gt;
* HIROSE Series: IC1 (obsolet)&lt;br /&gt;
&lt;br /&gt;
[[File:HIROSE_IC1K-68RD-1.27SF.png|640px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Datasheet for Hirose IC1 Series Connector:&lt;br /&gt;
[[File:Hirose_connector_IC1.pdf|Datasheet for Hirose IC1 Series Connector]]&lt;br /&gt;
&lt;br /&gt;
== Battery ==&lt;br /&gt;
&lt;br /&gt;
The is a CR2016 lithium battery with solder-tabs on the PCB which powers the [[LH5116|LH5116 SRAM chip]].&lt;br /&gt;
[[File:CR2016_battery.jpg|thumb|CR2016 battery found on PCB. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=C10075-X2-2&amp;diff=6560</id>
		<title>C10075-X2-2</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=C10075-X2-2&amp;diff=6560"/>
		<updated>2019-11-11T19:35:17Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:neo-ic8_pcb_C10075-X2-2_front.jpg|thumb|Front of PCB. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
[[File:neo-ic8_pcb_C10075-X2-2_front_sram-removed.jpg|thumb|Front of PCB with SRAM removed. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
[[File:neo-ic8_pcb_C10075-X2-2_back.jpg|thumb|Back of PCB. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
Printed circuit board of an original SNK [[memory card]] NEO-IC8.&lt;br /&gt;
&lt;br /&gt;
Found in this version of the NEO-IC8 Memory Card:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:NEO-IC8_front.jpg|200px|NEO-IC8, original SNK card.]]&lt;br /&gt;
&lt;br /&gt;
== PCB Dimensions ==&lt;br /&gt;
&lt;br /&gt;
* Thickness: 0.5 mm&lt;br /&gt;
* Width: 46.1 mm&lt;br /&gt;
* Height: 51.4 mm&lt;br /&gt;
&lt;br /&gt;
== Connector ==&lt;br /&gt;
&lt;br /&gt;
The board uses a 68-pin connector which was manufactured by MOLEX and HIROSE among others.&lt;br /&gt;
&lt;br /&gt;
* MOLEX Series: 89415 (obsolet)&lt;br /&gt;
* HIROSE Series: IC1 (obsolet)&lt;br /&gt;
&lt;br /&gt;
[[File:HIROSE_IC1K-68RD-1.27SF.png|640px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Datasheet for Hirose IC1 Series Connector:&lt;br /&gt;
[[File:Hirose_connector_IC1.pdf|Datasheet for Hirose IC1 Series Connector]]&lt;br /&gt;
&lt;br /&gt;
== Battery ==&lt;br /&gt;
&lt;br /&gt;
The is a CR2016 lithium battery with solder-tabs on the PCB which powers the SRAM.&lt;br /&gt;
[[File:CR2016_battery.jpg|thumb|CR2016 battery found on PCB. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Memory_card&amp;diff=6559</id>
		<title>Memory card</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Memory_card&amp;diff=6559"/>
		<updated>2019-11-11T16:03:03Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: /* Original SNK card */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:snkmemcard.jpg|thumb|SRAM memory card, showing the SRAM chip and voltage detection circuit. Picture by [[User:HPMAN|HPMAN]]]]&lt;br /&gt;
&lt;br /&gt;
[[File:NEO-IC8_front.jpg|thumb|NEO-IC8, original SNK card. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
[[File:NEO-IC8_back.jpg|thumb|NEO-IC8, back of original SNK card. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
The NeoGeo home console and some [[MVS hardware|MVS]] cabs can use JEIDA V3 memory cards to store game saves and/or high scores, allowing players to save their progress and continue on any system running the same game.&lt;br /&gt;
&lt;br /&gt;
Even if the memory card [[68k memory map|address space]] can be freely used, games should only perform memory card operations through the [[CARD]] system ROM call to avoid data corruption.&lt;br /&gt;
&lt;br /&gt;
=Supported card types=&lt;br /&gt;
&lt;br /&gt;
The SP-S2 [[system ROM]] (and probably all the others) can handle 8 memory card sizes from 2KiB up to 16KiB, in 2KiB steps:&lt;br /&gt;
*2KiB&lt;br /&gt;
*4KiB&lt;br /&gt;
*6KiB&lt;br /&gt;
*8KiB&lt;br /&gt;
*10KiB&lt;br /&gt;
*14KiB&lt;br /&gt;
*16KiB&lt;br /&gt;
&lt;br /&gt;
And 4 different card types:&lt;br /&gt;
*8 bits wide (only the low byte is used)&lt;br /&gt;
*16 bits wide&lt;br /&gt;
*16 bits wide &amp;quot;doubled&amp;quot;&lt;br /&gt;
*&amp;quot;SNK ROM&amp;quot; cards&lt;br /&gt;
&lt;br /&gt;
=Original SNK card=&lt;br /&gt;
&lt;br /&gt;
The original SNK-branded memory card was a [[:File:CR2016_battery.jpg|battery-backed]] 8-bit wide 2KiB card using a [[LH5116|LH5116 SRAM chip]] and voltage switching circuitry.&lt;br /&gt;
&lt;br /&gt;
Since it uses a battery, it may be prone to data loss if the voltage drops below 2V. It is unclear if the battery is charged up when plugged into a powered system or not.&lt;br /&gt;
&lt;br /&gt;
There are at least 2 known versions of the original SNK Memory Card, each with its individual design and circuit-board:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:NEO-IC8_versions.png|640px]]&lt;br /&gt;
&lt;br /&gt;
The first version has the [[C10075-X2-2]] while the later one hase the [[EZ866]] board.&lt;br /&gt;
&lt;br /&gt;
=CD systems=&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;virtual&amp;quot; memory card is embedded in [[CD systems]] as a 8KiB battery-backed SRAM chip.&lt;br /&gt;
&lt;br /&gt;
=Data format=&lt;br /&gt;
&lt;br /&gt;
All cards use the same format regardless of capacity, only regions sizes differ. Since the JEIDA data bus is 16-bits wide, make sure to double the address for 8-bit cards if you choose to access their memory directly.&lt;br /&gt;
&lt;br /&gt;
The data is referred to as &amp;quot;blocks&amp;quot;, one block being 64 bytes. The header always occupies the first block. Eg. A 2KiB card can hold (2048/64)-1 = 31 blocks.&lt;br /&gt;
&lt;br /&gt;
The data is split into 5 regions:&lt;br /&gt;
&lt;br /&gt;
==Header==&lt;br /&gt;
&lt;br /&gt;
Always 64 bytes.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Address&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$0~$9&lt;br /&gt;
|&lt;br /&gt;
|10 bytes&lt;br /&gt;
|Zeros or &amp;quot;SNK ROM &amp;quot; (development unit ?)&lt;br /&gt;
&lt;br /&gt;
For 16 bits &amp;quot;doubled&amp;quot; cards, $6 is set to $0001&lt;br /&gt;
|-&lt;br /&gt;
|$A&lt;br /&gt;
|CARD_SIZE&lt;br /&gt;
|word&lt;br /&gt;
|Address space used by the memory card. Eg. A 2KiB 8-bit card is $1000.&lt;br /&gt;
|-&lt;br /&gt;
|$C&lt;br /&gt;
|&lt;br /&gt;
|byte&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|$D&lt;br /&gt;
|CARD_FAT_1_CHKSUM&lt;br /&gt;
|byte&lt;br /&gt;
|Checksum of FAT 1&lt;br /&gt;
|-&lt;br /&gt;
|$E&lt;br /&gt;
|CARD_FAT_2_CHKSUM&lt;br /&gt;
|byte&lt;br /&gt;
|Checksum of FAT 2&lt;br /&gt;
|-&lt;br /&gt;
|$F&lt;br /&gt;
|CARD_USERNAME_AVAILABLE&lt;br /&gt;
|byte&lt;br /&gt;
|0 : Username unavailable, !0 : Username available&lt;br /&gt;
|-&lt;br /&gt;
|$10&lt;br /&gt;
|CARD_USERNAME&lt;br /&gt;
|16 bytes&lt;br /&gt;
|Card holder&#039;s username&lt;br /&gt;
|-&lt;br /&gt;
|$20&lt;br /&gt;
|CARD_MAGIC&lt;br /&gt;
|16 bytes&lt;br /&gt;
|$4E $XX $45 $XX $4F $XX $2D $XX $47 $XX $45 $XX $4F $XX $80 $XX (&amp;quot;NEO-GEO&amp;quot;, $80)&lt;br /&gt;
|-&lt;br /&gt;
|$30&lt;br /&gt;
|CARD_REGION&lt;br /&gt;
|byte&lt;br /&gt;
|Region of the system that formated the card, 0 = Japan, 1 = USA, 2 = Europe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Directory==&lt;br /&gt;
&lt;br /&gt;
List of saves of 32, 64, 96, 128, 160, 192, 224 or 256 entries. The size depends on the card&#039;s capacity.&lt;br /&gt;
&lt;br /&gt;
Note that since the header occupies the first block, there will always be at least one unused directory entry.&lt;br /&gt;
&lt;br /&gt;
Each entry is 4 bytes, with the following format:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;regdef&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Address&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$0&lt;br /&gt;
|byte&lt;br /&gt;
|Save sub-number (CARD_SUB), 0 to 15. $FF if entry is free.&lt;br /&gt;
|-&lt;br /&gt;
|$1&lt;br /&gt;
|word&lt;br /&gt;
|Game&#039;s [[NGH number]]&lt;br /&gt;
|-&lt;br /&gt;
|$3&lt;br /&gt;
|byte&lt;br /&gt;
|FAT entry index (see below)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==FAT 1==&lt;br /&gt;
&lt;br /&gt;
List of used blocks of 64, 128, 192, or 256 entries. The size depends on the card&#039;s capacity.&lt;br /&gt;
* $02 is a block reserved by the system ROM&lt;br /&gt;
* $01 is a block used by a game&lt;br /&gt;
* $00 is a free block&lt;br /&gt;
&lt;br /&gt;
==FAT 2==&lt;br /&gt;
&lt;br /&gt;
FAT 2 is simply a mirror of FAT 1.&lt;br /&gt;
&lt;br /&gt;
If any of the FAT tables checksum is bad, the correct table is written over the other one. If both checksums are bad, the system ROM displays an error.&lt;br /&gt;
&lt;br /&gt;
==Game Data==&lt;br /&gt;
&lt;br /&gt;
Many games use only one block, but some may use more.&lt;br /&gt;
&lt;br /&gt;
The first 20 bytes contain the data title (usually the game and stage name).&lt;br /&gt;
&lt;br /&gt;
=Registers=&lt;br /&gt;
&lt;br /&gt;
* Write is enabled if {{Reg|REG_CRDUNLOCK1}} and {{Reg|REG_CRDUNLOCK2}} are written to&lt;br /&gt;
* The WP (Write Protect) pin is read through bit 6 of {{Reg|REG_STATUS_B}}&lt;br /&gt;
* CD1 (Card Detect 1) is read through bit 4 of {{Reg|REG_STATUS_B}}&lt;br /&gt;
* CD2 (Card Detect 2) is read through bit 5 of {{Reg|REG_STATUS_B}}&lt;br /&gt;
** Both must be 0 if the card is inserted correctly&lt;br /&gt;
* Attribute memory is selected if {{Reg|REG_CRDREGSEL}} is written to, never used ?&lt;br /&gt;
&lt;br /&gt;
=Pinout=&lt;br /&gt;
&lt;br /&gt;
See [[Memory card pinout]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Cartridge systems]]&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Memory_card&amp;diff=6558</id>
		<title>Memory card</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Memory_card&amp;diff=6558"/>
		<updated>2019-11-11T16:02:30Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: /* Original SNK card */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:snkmemcard.jpg|thumb|SRAM memory card, showing the SRAM chip and voltage detection circuit. Picture by [[User:HPMAN|HPMAN]]]]&lt;br /&gt;
&lt;br /&gt;
[[File:NEO-IC8_front.jpg|thumb|NEO-IC8, original SNK card. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
[[File:NEO-IC8_back.jpg|thumb|NEO-IC8, back of original SNK card. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
The NeoGeo home console and some [[MVS hardware|MVS]] cabs can use JEIDA V3 memory cards to store game saves and/or high scores, allowing players to save their progress and continue on any system running the same game.&lt;br /&gt;
&lt;br /&gt;
Even if the memory card [[68k memory map|address space]] can be freely used, games should only perform memory card operations through the [[CARD]] system ROM call to avoid data corruption.&lt;br /&gt;
&lt;br /&gt;
=Supported card types=&lt;br /&gt;
&lt;br /&gt;
The SP-S2 [[system ROM]] (and probably all the others) can handle 8 memory card sizes from 2KiB up to 16KiB, in 2KiB steps:&lt;br /&gt;
*2KiB&lt;br /&gt;
*4KiB&lt;br /&gt;
*6KiB&lt;br /&gt;
*8KiB&lt;br /&gt;
*10KiB&lt;br /&gt;
*14KiB&lt;br /&gt;
*16KiB&lt;br /&gt;
&lt;br /&gt;
And 4 different card types:&lt;br /&gt;
*8 bits wide (only the low byte is used)&lt;br /&gt;
*16 bits wide&lt;br /&gt;
*16 bits wide &amp;quot;doubled&amp;quot;&lt;br /&gt;
*&amp;quot;SNK ROM&amp;quot; cards&lt;br /&gt;
&lt;br /&gt;
=Original SNK card=&lt;br /&gt;
&lt;br /&gt;
The original SNK-branded memory card was a [[:File:CR2016_battery.jpg|battery-backed]] 8-bit wide 2KiB card using a [[LH5116|LH5116 SRAM chip]] and voltage switching circuitry.&lt;br /&gt;
&lt;br /&gt;
Since it uses a battery, it may be prone to data loss if the voltage drops below 2V. It is unclear if the battery is charged up when plugged into a powered system or not.&lt;br /&gt;
&lt;br /&gt;
There are at least 2 known versions of the original SNK Memory Card, each with its individual design and circuit-board:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:NEO-IC8_versions.png]]&lt;br /&gt;
&lt;br /&gt;
The first version has the [[C10075-X2-2]] while the later one hase the [[EZ866]] board.&lt;br /&gt;
&lt;br /&gt;
=CD systems=&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;virtual&amp;quot; memory card is embedded in [[CD systems]] as a 8KiB battery-backed SRAM chip.&lt;br /&gt;
&lt;br /&gt;
=Data format=&lt;br /&gt;
&lt;br /&gt;
All cards use the same format regardless of capacity, only regions sizes differ. Since the JEIDA data bus is 16-bits wide, make sure to double the address for 8-bit cards if you choose to access their memory directly.&lt;br /&gt;
&lt;br /&gt;
The data is referred to as &amp;quot;blocks&amp;quot;, one block being 64 bytes. The header always occupies the first block. Eg. A 2KiB card can hold (2048/64)-1 = 31 blocks.&lt;br /&gt;
&lt;br /&gt;
The data is split into 5 regions:&lt;br /&gt;
&lt;br /&gt;
==Header==&lt;br /&gt;
&lt;br /&gt;
Always 64 bytes.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Address&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$0~$9&lt;br /&gt;
|&lt;br /&gt;
|10 bytes&lt;br /&gt;
|Zeros or &amp;quot;SNK ROM &amp;quot; (development unit ?)&lt;br /&gt;
&lt;br /&gt;
For 16 bits &amp;quot;doubled&amp;quot; cards, $6 is set to $0001&lt;br /&gt;
|-&lt;br /&gt;
|$A&lt;br /&gt;
|CARD_SIZE&lt;br /&gt;
|word&lt;br /&gt;
|Address space used by the memory card. Eg. A 2KiB 8-bit card is $1000.&lt;br /&gt;
|-&lt;br /&gt;
|$C&lt;br /&gt;
|&lt;br /&gt;
|byte&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|$D&lt;br /&gt;
|CARD_FAT_1_CHKSUM&lt;br /&gt;
|byte&lt;br /&gt;
|Checksum of FAT 1&lt;br /&gt;
|-&lt;br /&gt;
|$E&lt;br /&gt;
|CARD_FAT_2_CHKSUM&lt;br /&gt;
|byte&lt;br /&gt;
|Checksum of FAT 2&lt;br /&gt;
|-&lt;br /&gt;
|$F&lt;br /&gt;
|CARD_USERNAME_AVAILABLE&lt;br /&gt;
|byte&lt;br /&gt;
|0 : Username unavailable, !0 : Username available&lt;br /&gt;
|-&lt;br /&gt;
|$10&lt;br /&gt;
|CARD_USERNAME&lt;br /&gt;
|16 bytes&lt;br /&gt;
|Card holder&#039;s username&lt;br /&gt;
|-&lt;br /&gt;
|$20&lt;br /&gt;
|CARD_MAGIC&lt;br /&gt;
|16 bytes&lt;br /&gt;
|$4E $XX $45 $XX $4F $XX $2D $XX $47 $XX $45 $XX $4F $XX $80 $XX (&amp;quot;NEO-GEO&amp;quot;, $80)&lt;br /&gt;
|-&lt;br /&gt;
|$30&lt;br /&gt;
|CARD_REGION&lt;br /&gt;
|byte&lt;br /&gt;
|Region of the system that formated the card, 0 = Japan, 1 = USA, 2 = Europe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Directory==&lt;br /&gt;
&lt;br /&gt;
List of saves of 32, 64, 96, 128, 160, 192, 224 or 256 entries. The size depends on the card&#039;s capacity.&lt;br /&gt;
&lt;br /&gt;
Note that since the header occupies the first block, there will always be at least one unused directory entry.&lt;br /&gt;
&lt;br /&gt;
Each entry is 4 bytes, with the following format:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;regdef&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Address&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$0&lt;br /&gt;
|byte&lt;br /&gt;
|Save sub-number (CARD_SUB), 0 to 15. $FF if entry is free.&lt;br /&gt;
|-&lt;br /&gt;
|$1&lt;br /&gt;
|word&lt;br /&gt;
|Game&#039;s [[NGH number]]&lt;br /&gt;
|-&lt;br /&gt;
|$3&lt;br /&gt;
|byte&lt;br /&gt;
|FAT entry index (see below)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==FAT 1==&lt;br /&gt;
&lt;br /&gt;
List of used blocks of 64, 128, 192, or 256 entries. The size depends on the card&#039;s capacity.&lt;br /&gt;
* $02 is a block reserved by the system ROM&lt;br /&gt;
* $01 is a block used by a game&lt;br /&gt;
* $00 is a free block&lt;br /&gt;
&lt;br /&gt;
==FAT 2==&lt;br /&gt;
&lt;br /&gt;
FAT 2 is simply a mirror of FAT 1.&lt;br /&gt;
&lt;br /&gt;
If any of the FAT tables checksum is bad, the correct table is written over the other one. If both checksums are bad, the system ROM displays an error.&lt;br /&gt;
&lt;br /&gt;
==Game Data==&lt;br /&gt;
&lt;br /&gt;
Many games use only one block, but some may use more.&lt;br /&gt;
&lt;br /&gt;
The first 20 bytes contain the data title (usually the game and stage name).&lt;br /&gt;
&lt;br /&gt;
=Registers=&lt;br /&gt;
&lt;br /&gt;
* Write is enabled if {{Reg|REG_CRDUNLOCK1}} and {{Reg|REG_CRDUNLOCK2}} are written to&lt;br /&gt;
* The WP (Write Protect) pin is read through bit 6 of {{Reg|REG_STATUS_B}}&lt;br /&gt;
* CD1 (Card Detect 1) is read through bit 4 of {{Reg|REG_STATUS_B}}&lt;br /&gt;
* CD2 (Card Detect 2) is read through bit 5 of {{Reg|REG_STATUS_B}}&lt;br /&gt;
** Both must be 0 if the card is inserted correctly&lt;br /&gt;
* Attribute memory is selected if {{Reg|REG_CRDREGSEL}} is written to, never used ?&lt;br /&gt;
&lt;br /&gt;
=Pinout=&lt;br /&gt;
&lt;br /&gt;
See [[Memory card pinout]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Cartridge systems]]&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=File:NEO-IC8_versions.png&amp;diff=6557</id>
		<title>File:NEO-IC8 versions.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=File:NEO-IC8_versions.png&amp;diff=6557"/>
		<updated>2019-11-11T16:01:43Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game cover}}&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=File:NEO-IC8_versions.svg&amp;diff=6556</id>
		<title>File:NEO-IC8 versions.svg</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=File:NEO-IC8_versions.svg&amp;diff=6556"/>
		<updated>2019-11-11T15:59:53Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: ArcadeTV uploaded a new version of File:NEO-IC8 versions.svg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Vector graphic of the memory cards created by ArcadeTV.&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game cover}}&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=File:NEO-IC8_versions.svg&amp;diff=6555</id>
		<title>File:NEO-IC8 versions.svg</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=File:NEO-IC8_versions.svg&amp;diff=6555"/>
		<updated>2019-11-11T15:59:34Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: ArcadeTV uploaded a new version of File:NEO-IC8 versions.svg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Vector graphic of the memory cards created by ArcadeTV.&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game cover}}&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=File:NEO-IC8_versions.svg&amp;diff=6554</id>
		<title>File:NEO-IC8 versions.svg</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=File:NEO-IC8_versions.svg&amp;diff=6554"/>
		<updated>2019-11-11T15:47:45Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: ArcadeTV uploaded a new version of File:NEO-IC8 versions.svg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Vector graphic of the memory cards created by ArcadeTV.&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game cover}}&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=File:NEO-IC8_versions.svg&amp;diff=6553</id>
		<title>File:NEO-IC8 versions.svg</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=File:NEO-IC8_versions.svg&amp;diff=6553"/>
		<updated>2019-11-11T15:45:06Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: ArcadeTV uploaded a new version of File:NEO-IC8 versions.svg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Vector graphic of the memory cards created by ArcadeTV.&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game cover}}&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Memory_card&amp;diff=6552</id>
		<title>Memory card</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Memory_card&amp;diff=6552"/>
		<updated>2019-11-11T15:40:36Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: /* Original SNK card */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:snkmemcard.jpg|thumb|SRAM memory card, showing the SRAM chip and voltage detection circuit. Picture by [[User:HPMAN|HPMAN]]]]&lt;br /&gt;
&lt;br /&gt;
[[File:NEO-IC8_front.jpg|thumb|NEO-IC8, original SNK card. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
[[File:NEO-IC8_back.jpg|thumb|NEO-IC8, back of original SNK card. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
The NeoGeo home console and some [[MVS hardware|MVS]] cabs can use JEIDA V3 memory cards to store game saves and/or high scores, allowing players to save their progress and continue on any system running the same game.&lt;br /&gt;
&lt;br /&gt;
Even if the memory card [[68k memory map|address space]] can be freely used, games should only perform memory card operations through the [[CARD]] system ROM call to avoid data corruption.&lt;br /&gt;
&lt;br /&gt;
=Supported card types=&lt;br /&gt;
&lt;br /&gt;
The SP-S2 [[system ROM]] (and probably all the others) can handle 8 memory card sizes from 2KiB up to 16KiB, in 2KiB steps:&lt;br /&gt;
*2KiB&lt;br /&gt;
*4KiB&lt;br /&gt;
*6KiB&lt;br /&gt;
*8KiB&lt;br /&gt;
*10KiB&lt;br /&gt;
*14KiB&lt;br /&gt;
*16KiB&lt;br /&gt;
&lt;br /&gt;
And 4 different card types:&lt;br /&gt;
*8 bits wide (only the low byte is used)&lt;br /&gt;
*16 bits wide&lt;br /&gt;
*16 bits wide &amp;quot;doubled&amp;quot;&lt;br /&gt;
*&amp;quot;SNK ROM&amp;quot; cards&lt;br /&gt;
&lt;br /&gt;
=Original SNK card=&lt;br /&gt;
&lt;br /&gt;
The original SNK-branded memory card was a [[:File:CR2016_battery.jpg|battery-backed]] 8-bit wide 2KiB card using a [[LH5116|LH5116 SRAM chip]] and voltage switching circuitry.&lt;br /&gt;
&lt;br /&gt;
Since it uses a battery, it may be prone to data loss if the voltage drops below 2V. It is unclear if the battery is charged up when plugged into a powered system or not.&lt;br /&gt;
&lt;br /&gt;
There are at least 2 known versions of the original SNK Memory Card, each with its individual design and circuit-board:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:NEO-IC8_versions.svg]]&lt;br /&gt;
&lt;br /&gt;
The first version has the [[C10075-X2-2]] while the later one hase the [[EZ866]] board.&lt;br /&gt;
&lt;br /&gt;
=CD systems=&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;virtual&amp;quot; memory card is embedded in [[CD systems]] as a 8KiB battery-backed SRAM chip.&lt;br /&gt;
&lt;br /&gt;
=Data format=&lt;br /&gt;
&lt;br /&gt;
All cards use the same format regardless of capacity, only regions sizes differ. Since the JEIDA data bus is 16-bits wide, make sure to double the address for 8-bit cards if you choose to access their memory directly.&lt;br /&gt;
&lt;br /&gt;
The data is referred to as &amp;quot;blocks&amp;quot;, one block being 64 bytes. The header always occupies the first block. Eg. A 2KiB card can hold (2048/64)-1 = 31 blocks.&lt;br /&gt;
&lt;br /&gt;
The data is split into 5 regions:&lt;br /&gt;
&lt;br /&gt;
==Header==&lt;br /&gt;
&lt;br /&gt;
Always 64 bytes.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Address&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$0~$9&lt;br /&gt;
|&lt;br /&gt;
|10 bytes&lt;br /&gt;
|Zeros or &amp;quot;SNK ROM &amp;quot; (development unit ?)&lt;br /&gt;
&lt;br /&gt;
For 16 bits &amp;quot;doubled&amp;quot; cards, $6 is set to $0001&lt;br /&gt;
|-&lt;br /&gt;
|$A&lt;br /&gt;
|CARD_SIZE&lt;br /&gt;
|word&lt;br /&gt;
|Address space used by the memory card. Eg. A 2KiB 8-bit card is $1000.&lt;br /&gt;
|-&lt;br /&gt;
|$C&lt;br /&gt;
|&lt;br /&gt;
|byte&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|$D&lt;br /&gt;
|CARD_FAT_1_CHKSUM&lt;br /&gt;
|byte&lt;br /&gt;
|Checksum of FAT 1&lt;br /&gt;
|-&lt;br /&gt;
|$E&lt;br /&gt;
|CARD_FAT_2_CHKSUM&lt;br /&gt;
|byte&lt;br /&gt;
|Checksum of FAT 2&lt;br /&gt;
|-&lt;br /&gt;
|$F&lt;br /&gt;
|CARD_USERNAME_AVAILABLE&lt;br /&gt;
|byte&lt;br /&gt;
|0 : Username unavailable, !0 : Username available&lt;br /&gt;
|-&lt;br /&gt;
|$10&lt;br /&gt;
|CARD_USERNAME&lt;br /&gt;
|16 bytes&lt;br /&gt;
|Card holder&#039;s username&lt;br /&gt;
|-&lt;br /&gt;
|$20&lt;br /&gt;
|CARD_MAGIC&lt;br /&gt;
|16 bytes&lt;br /&gt;
|$4E $XX $45 $XX $4F $XX $2D $XX $47 $XX $45 $XX $4F $XX $80 $XX (&amp;quot;NEO-GEO&amp;quot;, $80)&lt;br /&gt;
|-&lt;br /&gt;
|$30&lt;br /&gt;
|CARD_REGION&lt;br /&gt;
|byte&lt;br /&gt;
|Region of the system that formated the card, 0 = Japan, 1 = USA, 2 = Europe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Directory==&lt;br /&gt;
&lt;br /&gt;
List of saves of 32, 64, 96, 128, 160, 192, 224 or 256 entries. The size depends on the card&#039;s capacity.&lt;br /&gt;
&lt;br /&gt;
Note that since the header occupies the first block, there will always be at least one unused directory entry.&lt;br /&gt;
&lt;br /&gt;
Each entry is 4 bytes, with the following format:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;regdef&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Address&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$0&lt;br /&gt;
|byte&lt;br /&gt;
|Save sub-number (CARD_SUB), 0 to 15. $FF if entry is free.&lt;br /&gt;
|-&lt;br /&gt;
|$1&lt;br /&gt;
|word&lt;br /&gt;
|Game&#039;s [[NGH number]]&lt;br /&gt;
|-&lt;br /&gt;
|$3&lt;br /&gt;
|byte&lt;br /&gt;
|FAT entry index (see below)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==FAT 1==&lt;br /&gt;
&lt;br /&gt;
List of used blocks of 64, 128, 192, or 256 entries. The size depends on the card&#039;s capacity.&lt;br /&gt;
* $02 is a block reserved by the system ROM&lt;br /&gt;
* $01 is a block used by a game&lt;br /&gt;
* $00 is a free block&lt;br /&gt;
&lt;br /&gt;
==FAT 2==&lt;br /&gt;
&lt;br /&gt;
FAT 2 is simply a mirror of FAT 1.&lt;br /&gt;
&lt;br /&gt;
If any of the FAT tables checksum is bad, the correct table is written over the other one. If both checksums are bad, the system ROM displays an error.&lt;br /&gt;
&lt;br /&gt;
==Game Data==&lt;br /&gt;
&lt;br /&gt;
Many games use only one block, but some may use more.&lt;br /&gt;
&lt;br /&gt;
The first 20 bytes contain the data title (usually the game and stage name).&lt;br /&gt;
&lt;br /&gt;
=Registers=&lt;br /&gt;
&lt;br /&gt;
* Write is enabled if {{Reg|REG_CRDUNLOCK1}} and {{Reg|REG_CRDUNLOCK2}} are written to&lt;br /&gt;
* The WP (Write Protect) pin is read through bit 6 of {{Reg|REG_STATUS_B}}&lt;br /&gt;
* CD1 (Card Detect 1) is read through bit 4 of {{Reg|REG_STATUS_B}}&lt;br /&gt;
* CD2 (Card Detect 2) is read through bit 5 of {{Reg|REG_STATUS_B}}&lt;br /&gt;
** Both must be 0 if the card is inserted correctly&lt;br /&gt;
* Attribute memory is selected if {{Reg|REG_CRDREGSEL}} is written to, never used ?&lt;br /&gt;
&lt;br /&gt;
=Pinout=&lt;br /&gt;
&lt;br /&gt;
See [[Memory card pinout]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Cartridge systems]]&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=File:NEO-IC8_versions.svg&amp;diff=6551</id>
		<title>File:NEO-IC8 versions.svg</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=File:NEO-IC8_versions.svg&amp;diff=6551"/>
		<updated>2019-11-11T15:39:55Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: Vector graphic of the memory cards created by ArcadeTV.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Vector graphic of the memory cards created by ArcadeTV.&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game cover}}&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=C10075-X2-2&amp;diff=6550</id>
		<title>C10075-X2-2</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=C10075-X2-2&amp;diff=6550"/>
		<updated>2019-11-11T15:25:54Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:neo-ic8_pcb_C10075-X2-2_front.jpg|thumb|Front of PCB. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
[[File:neo-ic8_pcb_C10075-X2-2_front_sram-removed.jpg|thumb|Front of PCB with SRAM removed. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
[[File:neo-ic8_pcb_C10075-X2-2_back.jpg|thumb|Back of PCB. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
Printed circuit board of an original SNK [[memory card]] NEO-IC8.&lt;br /&gt;
&lt;br /&gt;
Found in this version of the NEO-IC8 Memory Card:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:NEO-IC8_front.jpg|200px|NEO-IC8, original SNK card.]]&lt;br /&gt;
&lt;br /&gt;
== PCB Dimensions ==&lt;br /&gt;
&lt;br /&gt;
* Thickness: 0.5 mm&lt;br /&gt;
* Width: 46.1 mm&lt;br /&gt;
* Height: 51.4 mm&lt;br /&gt;
&lt;br /&gt;
== Connector ==&lt;br /&gt;
&lt;br /&gt;
The board uses a 68-pin connector which was manufactured by MOLEX and HIROSE among others.&lt;br /&gt;
&lt;br /&gt;
* MOLEX Series: 89415 (obsolet)&lt;br /&gt;
* HIROSE Series: IC1 (obsolet)&lt;br /&gt;
&lt;br /&gt;
[[File:HIROSE_IC1K-68RD-1.27SF.png|640px|[[File:Hirose_connector_IC1.pdf|Datasheet:Hirose IC1 Series Connector]]]]&lt;br /&gt;
&lt;br /&gt;
== Battery ==&lt;br /&gt;
&lt;br /&gt;
The is a CR2016 lithium battery with solder-tabs on the PCB which powers the SRAM.&lt;br /&gt;
[[File:CR2016_battery.jpg|thumb|CR2016 battery found on PCB. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=C10075-X2-2&amp;diff=6549</id>
		<title>C10075-X2-2</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=C10075-X2-2&amp;diff=6549"/>
		<updated>2019-11-11T15:18:15Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:neo-ic8_pcb_C10075-X2-2_front.jpg|thumb|Front of PCB. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
[[File:neo-ic8_pcb_C10075-X2-2_front_sram-removed.jpg|thumb|Front of PCB with SRAM removed. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
[[File:neo-ic8_pcb_C10075-X2-2_back.jpg|thumb|Back of PCB. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
Printed circuit board of an original SNK [[memory card]] NEO-IC8.&lt;br /&gt;
&lt;br /&gt;
Found in this version of the NEO-IC8 Memory Card:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:NEO-IC8_front.jpg|200px|NEO-IC8, original SNK card.]]&lt;br /&gt;
&lt;br /&gt;
== PCB Dimensions ==&lt;br /&gt;
&lt;br /&gt;
* Thickness: 0.5 mm&lt;br /&gt;
* Width: 46.1 mm&lt;br /&gt;
* Height: 51.4 mm&lt;br /&gt;
&lt;br /&gt;
== Connector ==&lt;br /&gt;
&lt;br /&gt;
The board uses a 68-pin connector which was manufactured by MOLEX and HIROSE among others.&lt;br /&gt;
&lt;br /&gt;
* MOLEX Series: 89415 (obsolet)&lt;br /&gt;
* HIROSE Series: IC1 (obsolet)&lt;br /&gt;
&lt;br /&gt;
[[File:HIROSE_IC1K-68RD-1.27SF.png|thumb|[[File:Hirose_connector_IC1.pdf|Datasheet:Hirose IC1 Series Connector]]]]&lt;br /&gt;
&lt;br /&gt;
== Battery ==&lt;br /&gt;
&lt;br /&gt;
The is a CR2016 lithium battery with solder-tabs on the PCB which powers the SRAM.&lt;br /&gt;
[[File:CR2016_battery.jpg|thumb|CR2016 battery found on PCB. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=File:Hirose_connector_IC1.pdf&amp;diff=6548</id>
		<title>File:Hirose connector IC1.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=File:Hirose_connector_IC1.pdf&amp;diff=6548"/>
		<updated>2019-11-11T15:17:11Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=File:HIROSE_IC1K-68RD-1.27SF.png&amp;diff=6547</id>
		<title>File:HIROSE IC1K-68RD-1.27SF.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=File:HIROSE_IC1K-68RD-1.27SF.png&amp;diff=6547"/>
		<updated>2019-11-11T15:16:36Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=C10075-X2-2&amp;diff=6546</id>
		<title>C10075-X2-2</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=C10075-X2-2&amp;diff=6546"/>
		<updated>2019-11-11T15:16:18Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:neo-ic8_pcb_C10075-X2-2_front.jpg|thumb|Front of PCB. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
[[File:neo-ic8_pcb_C10075-X2-2_front_sram-removed.jpg|thumb|Front of PCB with SRAM removed. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
[[File:neo-ic8_pcb_C10075-X2-2_back.jpg|thumb|Back of PCB. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
Printed circuit board of an original SNK [[memory card]] NEO-IC8.&lt;br /&gt;
&lt;br /&gt;
Found in this version of the NEO-IC8 Memory Card:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:NEO-IC8_front.jpg|200px|NEO-IC8, original SNK card.]]&lt;br /&gt;
&lt;br /&gt;
== Dimensions ==&lt;br /&gt;
&lt;br /&gt;
* Thickness: 0.5 mm&lt;br /&gt;
* Width: 46.1 mm&lt;br /&gt;
* Height: 51.4 mm&lt;br /&gt;
&lt;br /&gt;
== Connector ==&lt;br /&gt;
&lt;br /&gt;
The board uses a 68-pin connector which was manufactured by MOLEX and HIROSE among others.&lt;br /&gt;
&lt;br /&gt;
* MOLEX Series: 89415 (obsolet)&lt;br /&gt;
* HIROSE Series: IC1 (obsolet)&lt;br /&gt;
&lt;br /&gt;
[[File:HIROSE_IC1K-68RD-1.27SF.png|thumb|[[File:Hirose_connector_IC1.pdf|Datasheet:Hirose IC1 Series Connector]]]]&lt;br /&gt;
&lt;br /&gt;
== Battery ==&lt;br /&gt;
&lt;br /&gt;
The is a CR2016 lithium battery with solder-tabs on the PCB which powers the SRAM.&lt;br /&gt;
[[File:CR2016_battery.jpg|thumb|CR2016 battery found on PCB. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Memory_card&amp;diff=6545</id>
		<title>Memory card</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Memory_card&amp;diff=6545"/>
		<updated>2019-11-11T13:20:09Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: /* Original SNK card */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:snkmemcard.jpg|thumb|SRAM memory card, showing the SRAM chip and voltage detection circuit. Picture by [[User:HPMAN|HPMAN]]]]&lt;br /&gt;
&lt;br /&gt;
[[File:NEO-IC8_front.jpg|thumb|NEO-IC8, original SNK card. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
[[File:NEO-IC8_back.jpg|thumb|NEO-IC8, back of original SNK card. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
The NeoGeo home console and some [[MVS hardware|MVS]] cabs can use JEIDA V3 memory cards to store game saves and/or high scores, allowing players to save their progress and continue on any system running the same game.&lt;br /&gt;
&lt;br /&gt;
Even if the memory card [[68k memory map|address space]] can be freely used, games should only perform memory card operations through the [[CARD]] system ROM call to avoid data corruption.&lt;br /&gt;
&lt;br /&gt;
=Supported card types=&lt;br /&gt;
&lt;br /&gt;
The SP-S2 [[system ROM]] (and probably all the others) can handle 8 memory card sizes from 2KiB up to 16KiB, in 2KiB steps:&lt;br /&gt;
*2KiB&lt;br /&gt;
*4KiB&lt;br /&gt;
*6KiB&lt;br /&gt;
*8KiB&lt;br /&gt;
*10KiB&lt;br /&gt;
*14KiB&lt;br /&gt;
*16KiB&lt;br /&gt;
&lt;br /&gt;
And 4 different card types:&lt;br /&gt;
*8 bits wide (only the low byte is used)&lt;br /&gt;
*16 bits wide&lt;br /&gt;
*16 bits wide &amp;quot;doubled&amp;quot;&lt;br /&gt;
*&amp;quot;SNK ROM&amp;quot; cards&lt;br /&gt;
&lt;br /&gt;
=Original SNK card=&lt;br /&gt;
&lt;br /&gt;
The original SNK-branded memory card was a [[:File:CR2016_battery.jpg|battery-backed]] 8-bit wide 2KiB card using a [[LH5116|LH5116 SRAM chip]] and voltage switching circuitry.&lt;br /&gt;
&lt;br /&gt;
Since it uses a battery, it may be prone to data loss if the voltage drops below 2V. It is unclear if the battery is charged up when plugged into a powered system or not.&lt;br /&gt;
&lt;br /&gt;
=CD systems=&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;virtual&amp;quot; memory card is embedded in [[CD systems]] as a 8KiB battery-backed SRAM chip.&lt;br /&gt;
&lt;br /&gt;
=Data format=&lt;br /&gt;
&lt;br /&gt;
All cards use the same format regardless of capacity, only regions sizes differ. Since the JEIDA data bus is 16-bits wide, make sure to double the address for 8-bit cards if you choose to access their memory directly.&lt;br /&gt;
&lt;br /&gt;
The data is referred to as &amp;quot;blocks&amp;quot;, one block being 64 bytes. The header always occupies the first block. Eg. A 2KiB card can hold (2048/64)-1 = 31 blocks.&lt;br /&gt;
&lt;br /&gt;
The data is split into 5 regions:&lt;br /&gt;
&lt;br /&gt;
==Header==&lt;br /&gt;
&lt;br /&gt;
Always 64 bytes.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Address&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$0~$9&lt;br /&gt;
|&lt;br /&gt;
|10 bytes&lt;br /&gt;
|Zeros or &amp;quot;SNK ROM &amp;quot; (development unit ?)&lt;br /&gt;
&lt;br /&gt;
For 16 bits &amp;quot;doubled&amp;quot; cards, $6 is set to $0001&lt;br /&gt;
|-&lt;br /&gt;
|$A&lt;br /&gt;
|CARD_SIZE&lt;br /&gt;
|word&lt;br /&gt;
|Address space used by the memory card. Eg. A 2KiB 8-bit card is $1000.&lt;br /&gt;
|-&lt;br /&gt;
|$C&lt;br /&gt;
|&lt;br /&gt;
|byte&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|$D&lt;br /&gt;
|CARD_FAT_1_CHKSUM&lt;br /&gt;
|byte&lt;br /&gt;
|Checksum of FAT 1&lt;br /&gt;
|-&lt;br /&gt;
|$E&lt;br /&gt;
|CARD_FAT_2_CHKSUM&lt;br /&gt;
|byte&lt;br /&gt;
|Checksum of FAT 2&lt;br /&gt;
|-&lt;br /&gt;
|$F&lt;br /&gt;
|CARD_USERNAME_AVAILABLE&lt;br /&gt;
|byte&lt;br /&gt;
|0 : Username unavailable, !0 : Username available&lt;br /&gt;
|-&lt;br /&gt;
|$10&lt;br /&gt;
|CARD_USERNAME&lt;br /&gt;
|16 bytes&lt;br /&gt;
|Card holder&#039;s username&lt;br /&gt;
|-&lt;br /&gt;
|$20&lt;br /&gt;
|CARD_MAGIC&lt;br /&gt;
|16 bytes&lt;br /&gt;
|$4E $XX $45 $XX $4F $XX $2D $XX $47 $XX $45 $XX $4F $XX $80 $XX (&amp;quot;NEO-GEO&amp;quot;, $80)&lt;br /&gt;
|-&lt;br /&gt;
|$30&lt;br /&gt;
|CARD_REGION&lt;br /&gt;
|byte&lt;br /&gt;
|Region of the system that formated the card, 0 = Japan, 1 = USA, 2 = Europe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Directory==&lt;br /&gt;
&lt;br /&gt;
List of saves of 32, 64, 96, 128, 160, 192, 224 or 256 entries. The size depends on the card&#039;s capacity.&lt;br /&gt;
&lt;br /&gt;
Note that since the header occupies the first block, there will always be at least one unused directory entry.&lt;br /&gt;
&lt;br /&gt;
Each entry is 4 bytes, with the following format:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;regdef&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Address&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$0&lt;br /&gt;
|byte&lt;br /&gt;
|Save sub-number (CARD_SUB), 0 to 15. $FF if entry is free.&lt;br /&gt;
|-&lt;br /&gt;
|$1&lt;br /&gt;
|word&lt;br /&gt;
|Game&#039;s [[NGH number]]&lt;br /&gt;
|-&lt;br /&gt;
|$3&lt;br /&gt;
|byte&lt;br /&gt;
|FAT entry index (see below)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==FAT 1==&lt;br /&gt;
&lt;br /&gt;
List of used blocks of 64, 128, 192, or 256 entries. The size depends on the card&#039;s capacity.&lt;br /&gt;
* $02 is a block reserved by the system ROM&lt;br /&gt;
* $01 is a block used by a game&lt;br /&gt;
* $00 is a free block&lt;br /&gt;
&lt;br /&gt;
==FAT 2==&lt;br /&gt;
&lt;br /&gt;
FAT 2 is simply a mirror of FAT 1.&lt;br /&gt;
&lt;br /&gt;
If any of the FAT tables checksum is bad, the correct table is written over the other one. If both checksums are bad, the system ROM displays an error.&lt;br /&gt;
&lt;br /&gt;
==Game Data==&lt;br /&gt;
&lt;br /&gt;
Many games use only one block, but some may use more.&lt;br /&gt;
&lt;br /&gt;
The first 20 bytes contain the data title (usually the game and stage name).&lt;br /&gt;
&lt;br /&gt;
=Registers=&lt;br /&gt;
&lt;br /&gt;
* Write is enabled if {{Reg|REG_CRDUNLOCK1}} and {{Reg|REG_CRDUNLOCK2}} are written to&lt;br /&gt;
* The WP (Write Protect) pin is read through bit 6 of {{Reg|REG_STATUS_B}}&lt;br /&gt;
* CD1 (Card Detect 1) is read through bit 4 of {{Reg|REG_STATUS_B}}&lt;br /&gt;
* CD2 (Card Detect 2) is read through bit 5 of {{Reg|REG_STATUS_B}}&lt;br /&gt;
** Both must be 0 if the card is inserted correctly&lt;br /&gt;
* Attribute memory is selected if {{Reg|REG_CRDREGSEL}} is written to, never used ?&lt;br /&gt;
&lt;br /&gt;
=Pinout=&lt;br /&gt;
&lt;br /&gt;
See [[Memory card pinout]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Cartridge systems]]&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=LH5116&amp;diff=6544</id>
		<title>LH5116</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=LH5116&amp;diff=6544"/>
		<updated>2019-11-11T13:14:19Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:LH5116NA-10.jpg|thumb|SHARP LH5116NA-10 SRAM IC. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
The LH5116/H are static RAMs organized as 2,048 x 8bits. It is fabricated using silicon-gate CMOS process technology. It features high speed access in read mode using output enable (tOE).&lt;br /&gt;
&lt;br /&gt;
== FEATURES ==&lt;br /&gt;
* 2,048 x 8 bit organization&lt;br /&gt;
* Access time: 100 ns (MAX.)&lt;br /&gt;
* Power consumption:&amp;lt;br&amp;gt;&lt;br /&gt;
Operating: 220 mW (MAX.)&amp;lt;br&amp;gt;&lt;br /&gt;
Standby: 5.5 mW (MAX.)&lt;br /&gt;
* Single +5 V power supply&lt;br /&gt;
* Fully-static operation&lt;br /&gt;
* TTL compatible I/O&lt;br /&gt;
* Three-state outputs&lt;br /&gt;
* Wide temperature range available&amp;lt;br&amp;gt;&lt;br /&gt;
LH5116H: -40 to +85°C&lt;br /&gt;
* Packages:&lt;br /&gt;
24-pin, 600-mil DIP&amp;lt;br&amp;gt;&lt;br /&gt;
24-pin, 300-mil SK-DIP&amp;lt;br&amp;gt;&lt;br /&gt;
24-pin, 450-mil SOP&lt;br /&gt;
&lt;br /&gt;
== DATASHEET ==&lt;br /&gt;
[[File:LH511610.pdf]]&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=LH5116&amp;diff=6543</id>
		<title>LH5116</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=LH5116&amp;diff=6543"/>
		<updated>2019-11-11T13:13:42Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: /* FEATURES */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:LH5116NA-10.jpg|thumb|SHARP LH5116NA-10 SRAM IC. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
The LH5116/H are static RAMs organized as 2,048 ´ 8bits. It is fabricated using silicon-gate CMOS process technology. It features high speed access in read mode using output enable (tOE).&lt;br /&gt;
&lt;br /&gt;
== FEATURES ==&lt;br /&gt;
* 2,048 x 8 bit organization&lt;br /&gt;
* Access time: 100 ns (MAX.)&lt;br /&gt;
* Power consumption:&amp;lt;br&amp;gt;&lt;br /&gt;
Operating: 220 mW (MAX.)&amp;lt;br&amp;gt;&lt;br /&gt;
Standby: 5.5 mW (MAX.)&lt;br /&gt;
* Single +5 V power supply&lt;br /&gt;
* Fully-static operation&lt;br /&gt;
* TTL compatible I/O&lt;br /&gt;
* Three-state outputs&lt;br /&gt;
* Wide temperature range available&amp;lt;br&amp;gt;&lt;br /&gt;
LH5116H: -40 to +85°C&lt;br /&gt;
* Packages:&lt;br /&gt;
24-pin, 600-mil DIP&amp;lt;br&amp;gt;&lt;br /&gt;
24-pin, 300-mil SK-DIP&amp;lt;br&amp;gt;&lt;br /&gt;
24-pin, 450-mil SOP&lt;br /&gt;
&lt;br /&gt;
== DATASHEET ==&lt;br /&gt;
[[File:LH511610.pdf]]&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=LH5116&amp;diff=6542</id>
		<title>LH5116</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=LH5116&amp;diff=6542"/>
		<updated>2019-11-11T13:04:12Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: Created page with &amp;quot;ArcadeTV]] The LH5116/H are static RAMs organized as 2,048 ´ 8bits. It is fabricated usin...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:LH5116NA-10.jpg|thumb|SHARP LH5116NA-10 SRAM IC. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
The LH5116/H are static RAMs organized as 2,048 ´ 8bits. It is fabricated using silicon-gate CMOS process technology. It features high speed access in read mode using output enable (tOE).&lt;br /&gt;
&lt;br /&gt;
== FEATURES ==&lt;br /&gt;
* 2,048 ´ 8 bit organization&lt;br /&gt;
* Access time: 100 ns (MAX.)&lt;br /&gt;
* Power consumption:&amp;lt;br&amp;gt;&lt;br /&gt;
Operating: 220 mW (MAX.)&amp;lt;br&amp;gt;&lt;br /&gt;
Standby: 5.5 mW (MAX.)&lt;br /&gt;
* Single +5 V power supply&lt;br /&gt;
* Fully-static operation&lt;br /&gt;
* TTL compatible I/O&lt;br /&gt;
* Three-state outputs&lt;br /&gt;
* Wide temperature range available&amp;lt;br&amp;gt;&lt;br /&gt;
LH5116H: -40 to +85°C&lt;br /&gt;
* Packages:&lt;br /&gt;
24-pin, 600-mil DIP&amp;lt;br&amp;gt;&lt;br /&gt;
24-pin, 300-mil SK-DIP&amp;lt;br&amp;gt;&lt;br /&gt;
24-pin, 450-mil SOP&lt;br /&gt;
&lt;br /&gt;
== DATASHEET ==&lt;br /&gt;
[[File:LH511610.pdf]]&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=File:LH5116NA-10.jpg&amp;diff=6541</id>
		<title>File:LH5116NA-10.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=File:LH5116NA-10.jpg&amp;diff=6541"/>
		<updated>2019-11-11T13:03:52Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: SHARP LH5116NA-10 SRAM IC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
SHARP LH5116NA-10 SRAM IC&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=File:LH511610.pdf&amp;diff=6540</id>
		<title>File:LH511610.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=File:LH511610.pdf&amp;diff=6540"/>
		<updated>2019-11-11T13:03:06Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=C10075-X2-2&amp;diff=6539</id>
		<title>C10075-X2-2</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=C10075-X2-2&amp;diff=6539"/>
		<updated>2019-11-11T10:41:38Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:neo-ic8_pcb_C10075-X2-2_front.jpg|thumb|Front of PCB. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
[[File:neo-ic8_pcb_C10075-X2-2_front_sram-removed.jpg|thumb|Front of PCB with SRAM removed. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
[[File:neo-ic8_pcb_C10075-X2-2_back.jpg|thumb|Back of PCB. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
Printed circuit board of an original SNK [[memory card]] NEO-IC8.&lt;br /&gt;
&lt;br /&gt;
== Dimensions ==&lt;br /&gt;
* Thickness: 0.5 mm&lt;br /&gt;
* Width: 46.1 mm&lt;br /&gt;
* Height: 51.4 mm&lt;br /&gt;
&lt;br /&gt;
The board uses a 68-pin PCMCIA connector, likely manufactured by MOLEX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Battery ==&lt;br /&gt;
&lt;br /&gt;
The is a CR2016 lithium battery with solder-tabs on the PCB which powers the SRAM.&lt;br /&gt;
[[File:CR2016_battery.jpg|thumb|CR2016 battery found on PCB. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=File:CR2016_battery.jpg&amp;diff=6538</id>
		<title>File:CR2016 battery.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=File:CR2016_battery.jpg&amp;diff=6538"/>
		<updated>2019-11-11T10:26:05Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: Panasonic CR2016 3V lithium battery with solder tabs found on the printed circuit board C10075-X2-2 inside an original SNK memory card NEO-IC8.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Panasonic CR2016 3V lithium battery with solder tabs found on the printed circuit board C10075-X2-2 inside an original SNK memory card NEO-IC8.&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=C10075-X2-2&amp;diff=6537</id>
		<title>C10075-X2-2</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=C10075-X2-2&amp;diff=6537"/>
		<updated>2019-11-11T10:22:00Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: Created page with &amp;quot;ArcadeTV]]  File:neo-ic8_pcb_C10075-X2-2_front_sram-removed.jpg|thumb|Front of PCB...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:neo-ic8_pcb_C10075-X2-2_front.jpg|thumb|Front of PCB. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
[[File:neo-ic8_pcb_C10075-X2-2_front_sram-removed.jpg|thumb|Front of PCB with SRAM removed. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
[[File:neo-ic8_pcb_C10075-X2-2_back.jpg|thumb|Back of PCB. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
Printed circuit board of an original SNK [[memory card]] NEO-IC8.&lt;br /&gt;
&lt;br /&gt;
=== Dimensions ===&lt;br /&gt;
* Thickness: 0.5 mm&lt;br /&gt;
* Width: 46.1 mm&lt;br /&gt;
* Height: 51.4 mm&lt;br /&gt;
&lt;br /&gt;
The board uses a 68-pin PCMCIA connector, likely manufactured by MOLEX.&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=File:Neo-ic8_pcb_C10075-X2-2_back.jpg&amp;diff=6536</id>
		<title>File:Neo-ic8 pcb C10075-X2-2 back.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=File:Neo-ic8_pcb_C10075-X2-2_back.jpg&amp;diff=6536"/>
		<updated>2019-11-11T10:13:32Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=File:Neo-ic8_pcb_C10075-X2-2_front_sram-removed.jpg&amp;diff=6535</id>
		<title>File:Neo-ic8 pcb C10075-X2-2 front sram-removed.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=File:Neo-ic8_pcb_C10075-X2-2_front_sram-removed.jpg&amp;diff=6535"/>
		<updated>2019-11-11T10:13:23Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=File:Neo-ic8_pcb_C10075-X2-2_front.jpg&amp;diff=6534</id>
		<title>File:Neo-ic8 pcb C10075-X2-2 front.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=File:Neo-ic8_pcb_C10075-X2-2_front.jpg&amp;diff=6534"/>
		<updated>2019-11-11T10:13:06Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=File:NEO-IC8_back.jpg&amp;diff=6533</id>
		<title>File:NEO-IC8 back.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=File:NEO-IC8_back.jpg&amp;diff=6533"/>
		<updated>2019-11-11T10:01:03Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Back of original SNK Memory Card NEO-IC8 (Version 1).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Text on the cover ===&lt;br /&gt;
&lt;br /&gt;
ご注意&lt;br /&gt;
*高温・直射日光はさけて下さい。 &lt;br /&gt;
*曲げたり、強いショックを与えないで下さい。 &lt;br /&gt;
*水に濡らさないで下さい。 &lt;br /&gt;
*コネクター部に手など触れないで下さい。 &lt;br /&gt;
*火中への投入は、絶対にしないで下さい。&lt;br /&gt;
株式会社エス・エヌ・ケイ&amp;lt;br&amp;gt;&lt;br /&gt;
MADE IN JAPAN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Translation ===&lt;br /&gt;
&lt;br /&gt;
Please Note&lt;br /&gt;
*Avoid high temperatures and direct sunlight.&lt;br /&gt;
*Do not bend or give a strong shock.&lt;br /&gt;
*Do not wet in water.&lt;br /&gt;
*Do not touch the connector with your hands.&lt;br /&gt;
*Never throw it into fire.&lt;br /&gt;
SNK Corporation&amp;lt;br&amp;gt;&lt;br /&gt;
MADE IN JAPAN&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game cover}}&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Memory_card&amp;diff=6532</id>
		<title>Memory card</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Memory_card&amp;diff=6532"/>
		<updated>2019-11-11T09:51:11Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:snkmemcard.jpg|thumb|SRAM memory card, showing the SRAM chip and voltage detection circuit. Picture by [[User:HPMAN|HPMAN]]]]&lt;br /&gt;
&lt;br /&gt;
[[File:NEO-IC8_front.jpg|thumb|NEO-IC8, original SNK card. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
[[File:NEO-IC8_back.jpg|thumb|NEO-IC8, back of original SNK card. Picture by [[User:ArcadeTV|ArcadeTV]]]]&lt;br /&gt;
&lt;br /&gt;
The NeoGeo home console and some [[MVS hardware|MVS]] cabs can use JEIDA V3 memory cards to store game saves and/or high scores, allowing players to save their progress and continue on any system running the same game.&lt;br /&gt;
&lt;br /&gt;
Even if the memory card [[68k memory map|address space]] can be freely used, games should only perform memory card operations through the [[CARD]] system ROM call to avoid data corruption.&lt;br /&gt;
&lt;br /&gt;
=Supported card types=&lt;br /&gt;
&lt;br /&gt;
The SP-S2 [[system ROM]] (and probably all the others) can handle 8 memory card sizes from 2KiB up to 16KiB, in 2KiB steps:&lt;br /&gt;
*2KiB&lt;br /&gt;
*4KiB&lt;br /&gt;
*6KiB&lt;br /&gt;
*8KiB&lt;br /&gt;
*10KiB&lt;br /&gt;
*14KiB&lt;br /&gt;
*16KiB&lt;br /&gt;
&lt;br /&gt;
And 4 different card types:&lt;br /&gt;
*8 bits wide (only the low byte is used)&lt;br /&gt;
*16 bits wide&lt;br /&gt;
*16 bits wide &amp;quot;doubled&amp;quot;&lt;br /&gt;
*&amp;quot;SNK ROM&amp;quot; cards&lt;br /&gt;
&lt;br /&gt;
=Original SNK card=&lt;br /&gt;
&lt;br /&gt;
The original SNK-branded memory card was a battery-backed 8-bit wide 2KiB card using a LH5116 SRAM chip and voltage switching circuitry.&lt;br /&gt;
&lt;br /&gt;
Since it uses a battery, it may be prone to data loss if the voltage drops below 2V. It is unclear if the battery is charged up when plugged into a powered system or not.&lt;br /&gt;
&lt;br /&gt;
=CD systems=&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;virtual&amp;quot; memory card is embedded in [[CD systems]] as a 8KiB battery-backed SRAM chip.&lt;br /&gt;
&lt;br /&gt;
=Data format=&lt;br /&gt;
&lt;br /&gt;
All cards use the same format regardless of capacity, only regions sizes differ. Since the JEIDA data bus is 16-bits wide, make sure to double the address for 8-bit cards if you choose to access their memory directly.&lt;br /&gt;
&lt;br /&gt;
The data is referred to as &amp;quot;blocks&amp;quot;, one block being 64 bytes. The header always occupies the first block. Eg. A 2KiB card can hold (2048/64)-1 = 31 blocks.&lt;br /&gt;
&lt;br /&gt;
The data is split into 5 regions:&lt;br /&gt;
&lt;br /&gt;
==Header==&lt;br /&gt;
&lt;br /&gt;
Always 64 bytes.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Address&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$0~$9&lt;br /&gt;
|&lt;br /&gt;
|10 bytes&lt;br /&gt;
|Zeros or &amp;quot;SNK ROM &amp;quot; (development unit ?)&lt;br /&gt;
&lt;br /&gt;
For 16 bits &amp;quot;doubled&amp;quot; cards, $6 is set to $0001&lt;br /&gt;
|-&lt;br /&gt;
|$A&lt;br /&gt;
|CARD_SIZE&lt;br /&gt;
|word&lt;br /&gt;
|Address space used by the memory card. Eg. A 2KiB 8-bit card is $1000.&lt;br /&gt;
|-&lt;br /&gt;
|$C&lt;br /&gt;
|&lt;br /&gt;
|byte&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|$D&lt;br /&gt;
|CARD_FAT_1_CHKSUM&lt;br /&gt;
|byte&lt;br /&gt;
|Checksum of FAT 1&lt;br /&gt;
|-&lt;br /&gt;
|$E&lt;br /&gt;
|CARD_FAT_2_CHKSUM&lt;br /&gt;
|byte&lt;br /&gt;
|Checksum of FAT 2&lt;br /&gt;
|-&lt;br /&gt;
|$F&lt;br /&gt;
|CARD_USERNAME_AVAILABLE&lt;br /&gt;
|byte&lt;br /&gt;
|0 : Username unavailable, !0 : Username available&lt;br /&gt;
|-&lt;br /&gt;
|$10&lt;br /&gt;
|CARD_USERNAME&lt;br /&gt;
|16 bytes&lt;br /&gt;
|Card holder&#039;s username&lt;br /&gt;
|-&lt;br /&gt;
|$20&lt;br /&gt;
|CARD_MAGIC&lt;br /&gt;
|16 bytes&lt;br /&gt;
|$4E $XX $45 $XX $4F $XX $2D $XX $47 $XX $45 $XX $4F $XX $80 $XX (&amp;quot;NEO-GEO&amp;quot;, $80)&lt;br /&gt;
|-&lt;br /&gt;
|$30&lt;br /&gt;
|CARD_REGION&lt;br /&gt;
|byte&lt;br /&gt;
|Region of the system that formated the card, 0 = Japan, 1 = USA, 2 = Europe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Directory==&lt;br /&gt;
&lt;br /&gt;
List of saves of 32, 64, 96, 128, 160, 192, 224 or 256 entries. The size depends on the card&#039;s capacity.&lt;br /&gt;
&lt;br /&gt;
Note that since the header occupies the first block, there will always be at least one unused directory entry.&lt;br /&gt;
&lt;br /&gt;
Each entry is 4 bytes, with the following format:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;regdef&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Address&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$0&lt;br /&gt;
|byte&lt;br /&gt;
|Save sub-number (CARD_SUB), 0 to 15. $FF if entry is free.&lt;br /&gt;
|-&lt;br /&gt;
|$1&lt;br /&gt;
|word&lt;br /&gt;
|Game&#039;s [[NGH number]]&lt;br /&gt;
|-&lt;br /&gt;
|$3&lt;br /&gt;
|byte&lt;br /&gt;
|FAT entry index (see below)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==FAT 1==&lt;br /&gt;
&lt;br /&gt;
List of used blocks of 64, 128, 192, or 256 entries. The size depends on the card&#039;s capacity.&lt;br /&gt;
* $02 is a block reserved by the system ROM&lt;br /&gt;
* $01 is a block used by a game&lt;br /&gt;
* $00 is a free block&lt;br /&gt;
&lt;br /&gt;
==FAT 2==&lt;br /&gt;
&lt;br /&gt;
FAT 2 is simply a mirror of FAT 1.&lt;br /&gt;
&lt;br /&gt;
If any of the FAT tables checksum is bad, the correct table is written over the other one. If both checksums are bad, the system ROM displays an error.&lt;br /&gt;
&lt;br /&gt;
==Game Data==&lt;br /&gt;
&lt;br /&gt;
Many games use only one block, but some may use more.&lt;br /&gt;
&lt;br /&gt;
The first 20 bytes contain the data title (usually the game and stage name).&lt;br /&gt;
&lt;br /&gt;
=Registers=&lt;br /&gt;
&lt;br /&gt;
* Write is enabled if {{Reg|REG_CRDUNLOCK1}} and {{Reg|REG_CRDUNLOCK2}} are written to&lt;br /&gt;
* The WP (Write Protect) pin is read through bit 6 of {{Reg|REG_STATUS_B}}&lt;br /&gt;
* CD1 (Card Detect 1) is read through bit 4 of {{Reg|REG_STATUS_B}}&lt;br /&gt;
* CD2 (Card Detect 2) is read through bit 5 of {{Reg|REG_STATUS_B}}&lt;br /&gt;
** Both must be 0 if the card is inserted correctly&lt;br /&gt;
* Attribute memory is selected if {{Reg|REG_CRDREGSEL}} is written to, never used ?&lt;br /&gt;
&lt;br /&gt;
=Pinout=&lt;br /&gt;
&lt;br /&gt;
See [[Memory card pinout]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Cartridge systems]]&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=File:NEO-IC8_back.jpg&amp;diff=6531</id>
		<title>File:NEO-IC8 back.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=File:NEO-IC8_back.jpg&amp;diff=6531"/>
		<updated>2019-11-11T09:48:55Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: Back of original SNK Memory Card NEO-IC8 (Version 1).&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Back of original SNK Memory Card NEO-IC8 (Version 1).&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game cover}}&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=File:NEO-IC8_front.jpg&amp;diff=6530</id>
		<title>File:NEO-IC8 front.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=File:NEO-IC8_front.jpg&amp;diff=6530"/>
		<updated>2019-11-11T09:47:21Z</updated>

		<summary type="html">&lt;p&gt;ArcadeTV: Front of original SNK Memory Card NEO-IC8 (Version 1)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Front of original SNK Memory Card NEO-IC8 (Version 1)&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game cover}}&lt;/div&gt;</summary>
		<author><name>ArcadeTV</name></author>
	</entry>
</feed>