<?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=Furrtek</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=Furrtek"/>
	<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php/Special:Contributions/Furrtek"/>
	<updated>2026-08-18T21:37:44Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=NEO-ZMC2&amp;diff=9306</id>
		<title>NEO-ZMC2</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=NEO-ZMC2&amp;diff=9306"/>
		<updated>2026-08-18T03:59:04Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: /* Pinout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ChipInfo&lt;br /&gt;
|picture=mvs_zmc2.jpg&lt;br /&gt;
|pkg=QFP80R&lt;br /&gt;
|manu=fujitsu&lt;br /&gt;
|date=1990&lt;br /&gt;
|gates=&lt;br /&gt;
|used_on={{PCB|MV1FZS}} [[Cartridges]]...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Chipname|NEO-ZMC}} and {{Chipname|PRO-CT0}} in one package.&lt;br /&gt;
&lt;br /&gt;
Can address up to 4MiB of [[M1 ROM]].&lt;br /&gt;
&lt;br /&gt;
Found in second revision [[MVS hardware|MVS]] boards (for the PRO-CT0 logic only), and AES cartridges.&lt;br /&gt;
&lt;br /&gt;
=Pinout=&lt;br /&gt;
&lt;br /&gt;
{{Pinout|NEO-ZMC2|640px}}&lt;br /&gt;
&lt;br /&gt;
NEO-ZMC part:&lt;br /&gt;
*SDA0,SDA1,SDA8~SDA15: [[Z80]] address bus &lt;br /&gt;
*MA11~MA21: M ROM address outputs &lt;br /&gt;
&lt;br /&gt;
Serializer part, inputs:&lt;br /&gt;
*12M: 12MHz clock, outputs next pixel on falling edge.&lt;br /&gt;
*C0~C31: C ROM data bus (2*16 bits). Gives all the pixel data needed for a 8 pixel line.&lt;br /&gt;
*H: When high, reverse bit order of pixels shifted out (used for [[sprites]] horizontal flipping)&lt;br /&gt;
*EVEN: Swap A/B pixel outputs&lt;br /&gt;
*LOAD: Latch C ROM data on falling edge of 12M&lt;br /&gt;
*CSDOT: Active low DOTA/DOTB output enable&lt;br /&gt;
*CS: Active low GADx/GBDx output enable&lt;br /&gt;
Outputs:&lt;br /&gt;
*DOTA: High when pixel A is opaque (color &amp;gt; 0)&lt;br /&gt;
*DOTB: High when pixel B is opaque (color &amp;gt; 0)&lt;br /&gt;
*GAD0~GAD3: Pixel A color index&lt;br /&gt;
*GBD0~GBD3: Pixel B color index&lt;br /&gt;
&lt;br /&gt;
=Signals=&lt;br /&gt;
&lt;br /&gt;
[[File:Spr signals.png]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Chips]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Clock&amp;diff=9305</id>
		<title>Clock</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Clock&amp;diff=9305"/>
		<updated>2026-08-17T20:09:58Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: /* In cartridge systems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Not to be confused with the [[RTC|real time clock]] (RTC), which is a time-keeping system used in the [[MVS]] and clocked independently from the rest of the system.&lt;br /&gt;
&lt;br /&gt;
[[File:Clkdistribution.png|frame]]&lt;br /&gt;
&lt;br /&gt;
=In cartridge systems=&lt;br /&gt;
&lt;br /&gt;
The main system clock (often called &#039;&#039;&#039;mclk&#039;&#039;&#039;) is either 24MHz (MVS) or 24.167829MHz (AES). It is generated from a crystal oscillator and divided down by {{Chipname|NEO-D0}} (or other later chips), to provide the 12MHz clock for {{Chipname|NEO-ZMC2}}, the 6MHz pixel clock for [[video DAC|video output]] and many others.&lt;br /&gt;
&lt;br /&gt;
{{Chipname|LSPC2-A2}} (or other later chips) divides it by 3 and 6 to provide the 8MHz clock for the {{Chipname|YM2610}} and the 4MHz one for the {{Chipname|Z80}}.&lt;br /&gt;
&lt;br /&gt;
The cartridge connector provides the 24MHz, 12MHz, 8MHz and 4MHz inverted clock signals.&lt;br /&gt;
&lt;br /&gt;
A second quartz oscillator is used in the AES for generating the color burst needed by composite video, for the [[video encoder]]s.&lt;br /&gt;
&lt;br /&gt;
The value changes depending on the region of the system, 4.43361875Mhz for PAL systems and 3.579545Mhz for NTSC systems.&lt;br /&gt;
&lt;br /&gt;
A third 32.768KHz quartz oscillator is present in the MVS used for the [[RTC|real time clock]].&lt;br /&gt;
&lt;br /&gt;
[[File:clock.png]]&lt;br /&gt;
&lt;br /&gt;
==Phase relations==&lt;br /&gt;
&lt;br /&gt;
To do: 8M is 33high/66low, not 50/50&lt;br /&gt;
&lt;br /&gt;
[[File:Clockphases.png]]&lt;br /&gt;
&lt;br /&gt;
==Signals==&lt;br /&gt;
&lt;br /&gt;
{{Sig|24M|24M}} (~24MHz), {{Sig|12M|12M}} (12MHz), {{Sig|68KCLK|68KCLK}} (12MHz), {{Sig|68KCLKB|68KCLKB}} (12MHz), {{Sig|8M|8M}} (8MHz), {{Sig|6MB|6MB}} (6MHz), {{Sig|4M|4M}} (12MHz), {{Sig|4MB|4MB}} (4MHz), {{Sig|1MB|1MB}} (&#039;&#039;&#039;3MHz&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
=In CD systems=&lt;br /&gt;
&lt;br /&gt;
[[File:Cd2_quartz.jpg|thumb|System clock and [[video PLL]] circuit on a CDM3-2 board.]]&lt;br /&gt;
&lt;br /&gt;
{{Chipname|NEO-GRC}} ?&lt;br /&gt;
&lt;br /&gt;
[[Category:Base system]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Clock&amp;diff=9304</id>
		<title>Clock</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Clock&amp;diff=9304"/>
		<updated>2026-08-17T20:07:07Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Not to be confused with the [[RTC|real time clock]] (RTC), which is a time-keeping system used in the [[MVS]] and clocked independently from the rest of the system.&lt;br /&gt;
&lt;br /&gt;
[[File:Clkdistribution.png|frame]]&lt;br /&gt;
&lt;br /&gt;
=In cartridge systems=&lt;br /&gt;
&lt;br /&gt;
The main system clock (often called &#039;&#039;&#039;mclk&#039;&#039;&#039;) is either 24MHz (MVS) or 24.167829MHz (AES). It is generated and divided by 2, 4 and 8 by {{Chipname|NEO-D0}} from a crystal oscillator, to provide the 12MHz clock for {{Chipname|NEO-ZMC2}}, the inverted 6MHz one for [[video DAC|video output]] and also the 3MHz one for {{Chipname|NEO-B1}}.&lt;br /&gt;
&lt;br /&gt;
{{Chipname|LSPC2-A2}} divides it by 3 and 6 to provide the 8MHz clock for the {{Chipname|YM2610}} and the 4MHz one for the {{Chipname|Z80}}.&lt;br /&gt;
&lt;br /&gt;
The cartridge connector provides the 24MHz, 12MHz, 8MHz and 4MHz inverted clock signals.&lt;br /&gt;
&lt;br /&gt;
A second quartz oscillator is used in the AES for generating the color burst needed by composite video, for the [[video encoder]]s.&lt;br /&gt;
&lt;br /&gt;
The value changes depending on the region of the system, 4.43361875Mhz for PAL systems and 3.579545Mhz for NTSC systems.&lt;br /&gt;
&lt;br /&gt;
A third 32.768KHz quartz oscillator is present in the MVS used for the [[RTC|real time clock]].&lt;br /&gt;
&lt;br /&gt;
[[File:clock.png]]&lt;br /&gt;
&lt;br /&gt;
==Phase relations==&lt;br /&gt;
&lt;br /&gt;
To do: 8M is 33high/66low, not 50/50&lt;br /&gt;
&lt;br /&gt;
[[File:Clockphases.png]]&lt;br /&gt;
&lt;br /&gt;
==Signals==&lt;br /&gt;
&lt;br /&gt;
{{Sig|24M|24M}} (~24MHz), {{Sig|12M|12M}} (12MHz), {{Sig|68KCLK|68KCLK}} (12MHz), {{Sig|68KCLKB|68KCLKB}} (12MHz), {{Sig|8M|8M}} (8MHz), {{Sig|6MB|6MB}} (6MHz), {{Sig|4M|4M}} (12MHz), {{Sig|4MB|4MB}} (4MHz), {{Sig|1MB|1MB}} (&#039;&#039;&#039;3MHz&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
=In CD systems=&lt;br /&gt;
&lt;br /&gt;
[[File:Cd2_quartz.jpg|thumb|System clock and [[video PLL]] circuit on a CDM3-2 board.]]&lt;br /&gt;
&lt;br /&gt;
{{Chipname|NEO-GRC}} ?&lt;br /&gt;
&lt;br /&gt;
[[Category:Base system]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=NEO-PCM2&amp;diff=9303</id>
		<title>NEO-PCM2</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=NEO-PCM2&amp;diff=9303"/>
		<updated>2026-08-16T19:01:10Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ChipInfo&lt;br /&gt;
|picture=brd_pcm2.jpg&lt;br /&gt;
|pkg=QFP120&lt;br /&gt;
|manu=fujitsu&lt;br /&gt;
|date=2001 ?&lt;br /&gt;
|gates=&lt;br /&gt;
|used_on=[[Cartridges]], [[ROM-Only boards]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Second version of {{Chipname|PCM}}. [[V ROM]] (de)multiplexer, decryption and [[P ROM]] banking chip.&lt;br /&gt;
&lt;br /&gt;
The decryption algorithm used by emulators may not be perfectly exact, this could be a possible cause of incorrect data in decrypted romsets causing minor audio glitches (Samurai Shodown V &amp;quot;Basara&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Used by:&lt;br /&gt;
&lt;br /&gt;
* [[Matrimelee]]&lt;br /&gt;
* [[Metal Slug 4]]&lt;br /&gt;
* [[Metal Slug 5]]&lt;br /&gt;
* [[Pochi and Nyaa]]&lt;br /&gt;
* [[Rage of the Dragons]]&lt;br /&gt;
* [[Samurai Shodown V]]&lt;br /&gt;
* [[Samurai Shodown V Special]]&lt;br /&gt;
* [[SNK vs. Capcom - SVC Chaos]]&lt;br /&gt;
* [[The King of Fighters 2001]]&lt;br /&gt;
* [[The King of Fighters 2002]]&lt;br /&gt;
* [[The King of Fighters 2003]]&lt;br /&gt;
&lt;br /&gt;
=Pinout=&lt;br /&gt;
&lt;br /&gt;
[[File:Neo-pcm2_pinout.png|800px]]&lt;br /&gt;
&lt;br /&gt;
OpenOffice Draw file: [[File:neo-pcm2.odg]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Chips]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=NEO-244&amp;diff=9302</id>
		<title>NEO-244</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=NEO-244&amp;diff=9302"/>
		<updated>2026-08-15T23:59:55Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ChipInfo&lt;br /&gt;
|picture=Neo-244.jpg&lt;br /&gt;
|pkg=QFP64R&lt;br /&gt;
|manu=fujitsu&lt;br /&gt;
|date=1992 ?&lt;br /&gt;
|gates=&lt;br /&gt;
|used_on={{PCB|SLOT4F}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Just a bunch of buffers for second revision 4-slot MVS boards. 18 inputs to 2 x 18 always enabled outputs. See MV4F schematics. &lt;br /&gt;
&lt;br /&gt;
=Pinouts=&lt;br /&gt;
&lt;br /&gt;
==Generic==&lt;br /&gt;
&lt;br /&gt;
{{Pinout|NEO-244|640}}&lt;br /&gt;
&lt;br /&gt;
==SLOT4F==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:NEO-244_mv4f_a1_pinout.png|A1: Buffers for 68k address lines&lt;br /&gt;
File:NEO-244_mv4f_a2_pinout.png|A2: Buffers for control lines&lt;br /&gt;
File:NEO-244_mv4ft_b2_pinout.png|B2: Buffers for Z80 address lines&lt;br /&gt;
File:NEO-244_mv4ft_c2_pinout.png|C2: Buffers for P bus lines&lt;br /&gt;
File:NEO-244_mv4ft_d2_pinout.png|D2: Buffers for P bus and other lines&lt;br /&gt;
File:NEO-244_mv4ft_e2_pinout.png|E2: Buffers for ADPCM lines&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Chips]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=NEO-244&amp;diff=9301</id>
		<title>NEO-244</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=NEO-244&amp;diff=9301"/>
		<updated>2026-08-15T23:59:39Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: /* Pinouts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ChipInfo&lt;br /&gt;
|picture=Neo-244.jpg&lt;br /&gt;
|pkg=QFP64R&lt;br /&gt;
|manu=fujitsu&lt;br /&gt;
|date=1992 ?&lt;br /&gt;
|gates=&lt;br /&gt;
|used_on={{PCB|SLOT4F}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Just a bunch of buffers for second revision 4-slot MVS boards.&lt;br /&gt;
&lt;br /&gt;
=Pinouts=&lt;br /&gt;
&lt;br /&gt;
==Generic==&lt;br /&gt;
&lt;br /&gt;
{{Pinout|NEO-244|640}}&lt;br /&gt;
&lt;br /&gt;
==SLOT4F==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:NEO-244_mv4f_a1_pinout.png|A1: Buffers for 68k address lines&lt;br /&gt;
File:NEO-244_mv4f_a2_pinout.png|A2: Buffers for control lines&lt;br /&gt;
File:NEO-244_mv4ft_b2_pinout.png|B2: Buffers for Z80 address lines&lt;br /&gt;
File:NEO-244_mv4ft_c2_pinout.png|C2: Buffers for P bus lines&lt;br /&gt;
File:NEO-244_mv4ft_d2_pinout.png|D2: Buffers for P bus and other lines&lt;br /&gt;
File:NEO-244_mv4ft_e2_pinout.png|E2: Buffers for ADPCM lines&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Chips]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=File:NEO-244_pinout.png&amp;diff=9300</id>
		<title>File:NEO-244 pinout.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=File:NEO-244_pinout.png&amp;diff=9300"/>
		<updated>2026-08-15T23:58:48Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: Furrtek uploaded a new version of File:NEO-244 pinout.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=NEO-253&amp;diff=9299</id>
		<title>NEO-253</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=NEO-253&amp;diff=9299"/>
		<updated>2026-08-15T23:58:11Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: /* Pinout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ChipInfo&lt;br /&gt;
|picture=Neo-253.jpg&lt;br /&gt;
|pkg=QFP64R&lt;br /&gt;
|manu=fujitsu&lt;br /&gt;
|date=1992 ?&lt;br /&gt;
|gates=&lt;br /&gt;
|used_on={{PCB|SLOT4F}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Quintuple 74HC253 4-to-1 multiplexers with common select lines, making ten 4-to-1 switches in one chip. Used to switch read-only buses. The inputs are named according to the related slot: A is slot #1, B is slot #2...&lt;br /&gt;
&lt;br /&gt;
Only (?) used on second revision 4-slot MVS systems. Not to be confused with the more common {{Chipname|NEO-273}}.&lt;br /&gt;
&lt;br /&gt;
=Pinout=&lt;br /&gt;
&lt;br /&gt;
[[File:Neo-253_pinout.png|512px]]&lt;br /&gt;
&lt;br /&gt;
Select signals come from {{Chipname|NEO-F0}} SLOTA and SLOTB.&lt;br /&gt;
&lt;br /&gt;
==SLOT4F @ 5E==&lt;br /&gt;
&lt;br /&gt;
Cartridge [[wait cycle]] configuration and [[Z80]] bus.&lt;br /&gt;
&lt;br /&gt;
*Mux 1: PWAIT0&lt;br /&gt;
*Mux 2: PWAIT1&lt;br /&gt;
*Mux 10~3: SDD7~SDD0&lt;br /&gt;
&lt;br /&gt;
Outputs go to CN9.&lt;br /&gt;
&lt;br /&gt;
==SLOT4F @ 5D==&lt;br /&gt;
&lt;br /&gt;
[[Sprites]] and [[fix layer]] graphics.&lt;br /&gt;
&lt;br /&gt;
*Mux 1: CR30&lt;br /&gt;
*Mux 2: CR31&lt;br /&gt;
*Mux 10~3: FIXD7~FIXD0&lt;br /&gt;
&lt;br /&gt;
==SLOT4F @ 5C==&lt;br /&gt;
&lt;br /&gt;
Sprite graphics.&lt;br /&gt;
&lt;br /&gt;
*Mux 10~1: CR29~CR20&lt;br /&gt;
&lt;br /&gt;
==SLOT4F @ 5B==&lt;br /&gt;
&lt;br /&gt;
Sprite graphics.&lt;br /&gt;
&lt;br /&gt;
*Mux 10~1: CR19~CR10&lt;br /&gt;
&lt;br /&gt;
==SLOT4F @ 5A==&lt;br /&gt;
&lt;br /&gt;
Sprite graphics.&lt;br /&gt;
&lt;br /&gt;
*Mux 10~1: CR9~CR0&lt;br /&gt;
&lt;br /&gt;
[[Category:Chips]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=File:Neo-253_pinout.png&amp;diff=9298</id>
		<title>File:Neo-253 pinout.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=File:Neo-253_pinout.png&amp;diff=9298"/>
		<updated>2026-08-15T23:57:20Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: Furrtek uploaded a new version of File:Neo-253 pinout.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=NEO-244&amp;diff=9297</id>
		<title>NEO-244</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=NEO-244&amp;diff=9297"/>
		<updated>2026-08-15T23:37:21Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: /* Pinouts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ChipInfo&lt;br /&gt;
|picture=Neo-244.jpg&lt;br /&gt;
|pkg=QFP64R&lt;br /&gt;
|manu=fujitsu&lt;br /&gt;
|date=1992 ?&lt;br /&gt;
|gates=&lt;br /&gt;
|used_on={{PCB|SLOT4F}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Just a bunch of buffers for second revision 4-slot MVS boards.&lt;br /&gt;
&lt;br /&gt;
=Pinouts=&lt;br /&gt;
&lt;br /&gt;
To fix on diagram:&lt;br /&gt;
Pin 18 input, output 15, 21.&lt;br /&gt;
Pin 50 not an /OE, regular input, output 47, 53. Never used on any board ?&lt;br /&gt;
Outputs are always enabled. See MV4F schematics. Simple 18 inputs to 2x18 outputs.&lt;br /&gt;
&lt;br /&gt;
==Generic==&lt;br /&gt;
&lt;br /&gt;
{{Pinout|NEO-244|640}}&lt;br /&gt;
&lt;br /&gt;
==SLOT4F==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:NEO-244_mv4f_a1_pinout.png|A1: Buffers for 68k address lines&lt;br /&gt;
File:NEO-244_mv4f_a2_pinout.png|A2: Buffers for control lines&lt;br /&gt;
File:NEO-244_mv4ft_b2_pinout.png|B2: Buffers for Z80 address lines&lt;br /&gt;
File:NEO-244_mv4ft_c2_pinout.png|C2: Buffers for P bus lines&lt;br /&gt;
File:NEO-244_mv4ft_d2_pinout.png|D2: Buffers for P bus and other lines&lt;br /&gt;
File:NEO-244_mv4ft_e2_pinout.png|E2: Buffers for ADPCM lines&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Chips]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=NEO-253&amp;diff=9296</id>
		<title>NEO-253</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=NEO-253&amp;diff=9296"/>
		<updated>2026-08-15T23:31:20Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: /* Pinout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ChipInfo&lt;br /&gt;
|picture=Neo-253.jpg&lt;br /&gt;
|pkg=QFP64R&lt;br /&gt;
|manu=fujitsu&lt;br /&gt;
|date=1992 ?&lt;br /&gt;
|gates=&lt;br /&gt;
|used_on={{PCB|SLOT4F}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Quintuple 74HC253 4-to-1 multiplexers with common select lines, making ten 4-to-1 switches in one chip. Used to switch read-only buses. The inputs are named according to the related slot: A is slot #1, B is slot #2...&lt;br /&gt;
&lt;br /&gt;
Only (?) used on second revision 4-slot MVS systems. Not to be confused with the more common {{Chipname|NEO-273}}.&lt;br /&gt;
&lt;br /&gt;
=Pinout=&lt;br /&gt;
&lt;br /&gt;
[[File:Neo-253_pinout.png|512px]]&lt;br /&gt;
&lt;br /&gt;
OpenOffice Draw file: [[File:neo-253.odg]]&lt;br /&gt;
&lt;br /&gt;
Pin 56 is a general /OE.&lt;br /&gt;
&lt;br /&gt;
Select signals come from {{Chipname|NEO-F0}} SLOTA and SLOTB.&lt;br /&gt;
&lt;br /&gt;
==SLOT4F @ 5E==&lt;br /&gt;
&lt;br /&gt;
Cartridge [[wait cycle]] configuration and [[Z80]] bus.&lt;br /&gt;
&lt;br /&gt;
*Mux 1: PWAIT0&lt;br /&gt;
*Mux 2: PWAIT1&lt;br /&gt;
*Mux 10~3: SDD7~SDD0&lt;br /&gt;
&lt;br /&gt;
Outputs go to CN9.&lt;br /&gt;
&lt;br /&gt;
==SLOT4F @ 5D==&lt;br /&gt;
&lt;br /&gt;
[[Sprites]] and [[fix layer]] graphics.&lt;br /&gt;
&lt;br /&gt;
*Mux 1: CR30&lt;br /&gt;
*Mux 2: CR31&lt;br /&gt;
*Mux 10~3: FIXD7~FIXD0&lt;br /&gt;
&lt;br /&gt;
==SLOT4F @ 5C==&lt;br /&gt;
&lt;br /&gt;
Sprite graphics.&lt;br /&gt;
&lt;br /&gt;
*Mux 10~1: CR29~CR20&lt;br /&gt;
&lt;br /&gt;
==SLOT4F @ 5B==&lt;br /&gt;
&lt;br /&gt;
Sprite graphics.&lt;br /&gt;
&lt;br /&gt;
*Mux 10~1: CR19~CR10&lt;br /&gt;
&lt;br /&gt;
==SLOT4F @ 5A==&lt;br /&gt;
&lt;br /&gt;
Sprite graphics.&lt;br /&gt;
&lt;br /&gt;
*Mux 10~1: CR9~CR0&lt;br /&gt;
&lt;br /&gt;
[[Category:Chips]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Wait_cycle&amp;diff=9295</id>
		<title>Wait cycle</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Wait_cycle&amp;diff=9295"/>
		<updated>2026-08-15T17:49:34Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: /* Cartridge configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[68k]] is able to wait for data by using wait cycles during bus access. This allows the use of slow, cheaper memories in cartridges and memory cards.&lt;br /&gt;
&lt;br /&gt;
The NeoGeo has wait state generation for 3 [[68k memory map|memory zones]]:&lt;br /&gt;
&lt;br /&gt;
* 000000~0FFFFF: ROM zone ([[P ROM]]) - Configurable, 0 or 1 cycle&lt;br /&gt;
* 200000~2FFFFF: PORT zone ([[P ROM]] or special chips) - Configurable, 0, 1, 2 or more cycles&lt;br /&gt;
* 800000~BFFFFF: [[Memory card]] - Fixed, 2 cycles&lt;br /&gt;
&lt;br /&gt;
=Cartridge configuration=&lt;br /&gt;
&lt;br /&gt;
Configuration is done by setting the levels of the following [[pinouts|cartridge pins]]. &#039;1&#039; means pulled to 5V, &#039;0&#039; means pulled to ground. All signals are active low.&lt;br /&gt;
&lt;br /&gt;
Many cartridges have all these pins tied to 5V to select full speed for both memory areas.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ROMWAIT||ROM zone wait&lt;br /&gt;
|-&lt;br /&gt;
|1||Full speed&lt;br /&gt;
|-&lt;br /&gt;
|0||1 cycle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!PWAIT1||PWAIT0||PORT zone wait&lt;br /&gt;
|-&lt;br /&gt;
|1||1||Full speed&lt;br /&gt;
|-&lt;br /&gt;
|1||0||1 cycle&lt;br /&gt;
|-&lt;br /&gt;
|0||1||2 cycles&lt;br /&gt;
|-&lt;br /&gt;
|0||0||As long as PDTACK is high&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use cases=&lt;br /&gt;
&lt;br /&gt;
Some games rely on wait cycles to perform sufficiently spaced [[VRAM]] accesses. Disabling the wait on those cartridges causes the accesses to become too close to each other and results in graphics corruption.&lt;br /&gt;
&lt;br /&gt;
No originally released cartridges are known to use PDTACK.&lt;br /&gt;
&lt;br /&gt;
[[Category:Base system]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Template:BR&amp;diff=9294</id>
		<title>Template:BR</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Template:BR&amp;diff=9294"/>
		<updated>2026-08-15T14:51:11Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;background: #ADD; padding:2px; font-size:8pt;&amp;quot;&amp;gt;&#039;&#039;&#039;[[BIOS_RAM_locations#{{{1}}}|{{{1}}}]]&#039;&#039;&#039; ({{ #ifeq: {{{1|}}} | BIOS_GAME_DIP | $10FD84+}}{{ #ifeq: {{{1|}}} | BIOS_USER_REQUEST | $10FDAE}}{{ #ifeq: {{{1|}}} | BIOS_USER_MODE | $10FDAF}}{{ #ifeq: {{{1|}}} | BIOS_UPSRC | $10FEF8}}{{ #ifeq: {{{1|}}} | BIOS_UPDEST | $10FEF4}}{{ #ifeq: {{{1|}}} | BIOS_UPSIZE | $10FEFC}}{{ #ifeq: {{{1|}}} | BIOS_UPZONE | $10FEDA}}{{ #ifeq: {{{1|}}} | BIOS_UPBANK | $10FEDB}}{{ #ifeq: {{{1|}}} | BIOS_DEVMODE | $10FE80}}{{ #ifeq: {{{1|}}} | BIOS_COMPULSION_TIMER | $10FDDA}}{{ #ifeq: {{{1|}}} | BIOS_GAME_DIP | $10FD84}}{{ #ifeq: {{{1|}}} | BIOS_CREDIT_DEC1 | $10FDB0}}{{ #ifeq: {{{1|}}} | BIOS_CREDIT_DEC2 | $10FDB1}}{{ #ifeq: {{{1|}}} | BIOS_START_FLAG | $10FDB4}}{{ #ifeq: {{{1|}}} | BIOS_PLAYER_MOD | $10FDB6}}{{ #ifeq: {{{1|}}} | BIOS_P1STATUS | $10FD94}}{{ #ifeq: {{{1|}}} | BIOS_MONTH | $10FDD3}}{{ #ifeq: {{{1|}}} | BIOS_MVS_FLAG | $10FD82}})&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Template:BR&amp;diff=9293</id>
		<title>Template:BR</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Template:BR&amp;diff=9293"/>
		<updated>2026-08-15T14:50:49Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;background: #ADD; padding:2px; font-size:8pt;&amp;quot;&amp;gt;&#039;&#039;&#039;[[BIOS_RAM_locations#{{{1}}}|{{{1}}}]]&#039;&#039;&#039; ({{ #ifeq: {{{1|}}} | BIOS_GAME_DIP | $10FD84+}}{{ #ifeq: {{{1|}}} | BIOS_USER_REQUEST | $10FDAE}}{{ #ifeq: {{{1|}}} | BIOS_USER_MODE | $10FDAF}}{{ #ifeq: {{{1|}}} | BIOS_UPSRC | $10FEF8}}{{ #ifeq: {{{1|}}} | BIOS_UPDEST | $10FEF4}}{{ #ifeq: {{{1|}}} | BIOS_UPSIZE | $10FEFC}}{{ #ifeq: {{{1|}}} | BIOS_UPZONE | $10FEDA}}{{ #ifeq: {{{1|}}} | BIOS_UPBANK | $10FEDB}}{{ #ifeq: {{{1|}}} | BIOS_DEVMODE | $10FE80}}{{ #ifeq: {{{1|}}} | BIOS_COMPULSION_TIMER | $10FDDA}}&lt;br /&gt;
{{ #ifeq: {{{1|}}} | BIOS_GAME_DIP | $10FD84}}{{ #ifeq: {{{1|}}} | BIOS_CREDIT_DEC1 | $10FDB0}}{{ #ifeq: {{{1|}}} | BIOS_CREDIT_DEC2 | $10FDB1}}{{ #ifeq: {{{1|}}} | BIOS_START_FLAG | $10FDB4}}{{ #ifeq: {{{1|}}} | BIOS_PLAYER_MOD | $10FDB6}}{{ #ifeq: {{{1|}}} | BIOS_P1STATUS | $10FD94}}{{ #ifeq: {{{1|}}} | BIOS_MONTH | $10FDD3}}{{ #ifeq: {{{1|}}} | BIOS_MVS_FLAG | $10FD82}})&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Template:BR&amp;diff=9292</id>
		<title>Template:BR</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Template:BR&amp;diff=9292"/>
		<updated>2026-08-15T14:50:20Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;background: #ADD; padding:2px; font-size:8pt;&amp;quot;&amp;gt;&#039;&#039;&#039;[[BIOS_RAM_locations#{{{1}}}|{{{1}}}]] &#039;&#039;&#039;&lt;br /&gt;
({{ #ifeq: {{{1|}}} | BIOS_GAME_DIP | $10FD84+}}{{ #ifeq: {{{1|}}} | BIOS_USER_REQUEST | $10FDAE}}{{ #ifeq: {{{1|}}} | BIOS_USER_MODE | $10FDAF}}{{ #ifeq: {{{1|}}} | BIOS_UPSRC | $10FEF8}}{{ #ifeq: {{{1|}}} | BIOS_UPDEST | $10FEF4}}{{ #ifeq: {{{1|}}} | BIOS_UPSIZE | $10FEFC}}{{ #ifeq: {{{1|}}} | BIOS_UPZONE | $10FEDA}}{{ #ifeq: {{{1|}}} | BIOS_UPBANK | $10FEDB}}{{ #ifeq: {{{1|}}} | BIOS_DEVMODE | $10FE80}}{{ #ifeq: {{{1|}}} | BIOS_COMPULSION_TIMER | $10FDDA}}&lt;br /&gt;
{{ #ifeq: {{{1|}}} | BIOS_GAME_DIP | $10FD84}}{{ #ifeq: {{{1|}}} | BIOS_CREDIT_DEC1 | $10FDB0}}{{ #ifeq: {{{1|}}} | BIOS_CREDIT_DEC2 | $10FDB1}}{{ #ifeq: {{{1|}}} | BIOS_START_FLAG | $10FDB4}}{{ #ifeq: {{{1|}}} | BIOS_PLAYER_MOD | $10FDB6}}{{ #ifeq: {{{1|}}} | BIOS_P1STATUS | $10FD94}}{{ #ifeq: {{{1|}}} | BIOS_MONTH | $10FDD3}}{{ #ifeq: {{{1|}}} | BIOS_MVS_FLAG | $10FD82}})&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Slot_check_security&amp;diff=9291</id>
		<title>Slot check security</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Slot_check_security&amp;diff=9291"/>
		<updated>2026-08-15T14:47:32Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:S3warning.png|frame|Warning screen as shown by [[Sengoku 3]] when booting on MVS hardware with BIOS_MVS_FLAG set to 0 (AES mode).]]&lt;br /&gt;
&lt;br /&gt;
Slot checking is a MVS security measure added in some games produced after 1998 due to the emergence of [[bootleg MVS boards]]. It displays a warning screen and locks the game up if some checks fail.&lt;br /&gt;
&lt;br /&gt;
Someone who would want to bypass this check would typically search for the warning text string in the [[P ROM]] and references to it in the code. Such text can&#039;t be found because the checking routine uses a XORed version of it instead, to confuse hackers.&lt;br /&gt;
&lt;br /&gt;
=KOF 98=&lt;br /&gt;
&lt;br /&gt;
If the game figures out it is being run for the first time on the system (thanks to [[backup RAM]] data), it tries to trigger a [[watchdog]] reset. If the system continues running instead due to the absence of the watchdog circuit, the game displays the warning screen and locks up.&lt;br /&gt;
&lt;br /&gt;
=Other games=&lt;br /&gt;
&lt;br /&gt;
*The calendar data zone in the [[BIOS RAM locations|BIOS RAM]] is cleared, then [[READ_CALENDAR]] is called. If {{BR|BIOS_MONTH}} is greater than 13 (should be 12 ? Is that a bug ?), the check fails. This causes bootleg boards with no [[RTC]] to trigger the security.&lt;br /&gt;
*If {{BR|BIOS_MVS_FLAG}} is zero (BIOS in AES mode), and bit 7 of {{Reg|REG_STATUS_B}} is set (MVS hardware), the check fails. This causes bootleg boards using a copy of the AES system ROM or those that don&#039;t handle REG_STATUS_B reads to trigger the security.&lt;br /&gt;
&lt;br /&gt;
Depending on the result of those checks, the value $8B55 (pass) or $9DBD (fail) is written to [[VRAM]] at $7FFF. This furthermore verifies that the board has full VRAM.&lt;br /&gt;
&lt;br /&gt;
That VRAM value is then read back and added to $74AB (=$10000 if checks passed) to set the byte at $10FCEF (fail) or not.&lt;br /&gt;
&lt;br /&gt;
A later version of this procedure also times the Z80 reply to command $01. $10FCEE = $FF if Z80 was too slow.&lt;br /&gt;
&lt;br /&gt;
Todo: Add more details.&lt;br /&gt;
&lt;br /&gt;
==Use by games==&lt;br /&gt;
&lt;br /&gt;
As seen in MAME&#039;s source ([[https://github.com/mamedev/mame/blob/master/src/mame/drivers/neogeo.cpp neogeo.cpp]]), a few games are known to do this check:&lt;br /&gt;
&lt;br /&gt;
*[[Nightmare in the Dark]] (can be disabled with an RTS at $19978)&lt;br /&gt;
*[[The King of Fighters 2000]]&lt;br /&gt;
*[[Sengoku 3]]: MVS SLOT CHECK Ver2.30 00/04/25&lt;br /&gt;
*[[Matrimelee]]&lt;br /&gt;
*[[Metal Slug 2]]&lt;br /&gt;
*[[Metal Slug 5]]&lt;br /&gt;
* [[Sengoku 3]]: Checks M1 ROM too, displays &amp;quot;M1-ROM ERROR.&amp;quot; if Z80 doesn&#039;t reply to command 1 in $7FFF iterations loop.&lt;br /&gt;
&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Puzzle_Bobble&amp;diff=9290</id>
		<title>Puzzle Bobble</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Puzzle_Bobble&amp;diff=9290"/>
		<updated>2026-08-14T21:22:36Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GameInfo|right&lt;br /&gt;
|en_title=Bust-A-Move&lt;br /&gt;
|jp_title=Puzzle Bobble&lt;br /&gt;
|jp_title2=パズルボブル&lt;br /&gt;
|eu_title=Puzzle Bobble &lt;br /&gt;
|developer=Taito&lt;br /&gt;
|ngh_id=083&lt;br /&gt;
|megcount=32&lt;br /&gt;
|mvs_release=yes&lt;br /&gt;
|mvs_release_en=y&lt;br /&gt;
|mvs_release_jp=y&lt;br /&gt;
|mvs_romset=pbobblen&lt;br /&gt;
|mvs_date=1994&lt;br /&gt;
|mvs_pchip=&lt;br /&gt;
|mvs_pboard=PROGTOP&lt;br /&gt;
|mvs_cboard=CHA256&lt;br /&gt;
|cd_release=y&lt;br /&gt;
|cd_release_jp=y&lt;br /&gt;
|cd_release_en=y&lt;br /&gt;
|cd_date=27/04/95&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Many [[Power Spikes II]] MVS cartridges were converted to Puzzle Bobble by SNK by doing the following:&lt;br /&gt;
* Replaced the Power Spikes II P1 ROM by the Puzzle Bobble &amp;quot;d96-07&amp;quot; P1 ROM in the EP1 spot.&lt;br /&gt;
* Replaced the Power Spikes II V3 ROM by the Puzzle Bobble &amp;quot;d96-01&amp;quot; V3 ROM, also added the &amp;quot;d96-05&amp;quot; V4 ROM.&lt;br /&gt;
* Replaced the Power Spikes II C5 and C6 ROMs by the Puzzle Bobble &amp;quot;d96-02&amp;quot; C5 ROM and &amp;quot;d96-03&amp;quot; C6 ROM.&lt;br /&gt;
* Replaced the Power Spikes II S1 ROM by the Puzzle Bobble &amp;quot;d96-04&amp;quot; S1 ROM.&lt;br /&gt;
* Replaced the Power Spikes II M1 ROM by the Puzzle Bobble &amp;quot;d96-06&amp;quot; M1 ROM.&lt;br /&gt;
&lt;br /&gt;
To probably save on manual labor, the unused Power Spikes II V1, V2, C1, C2, C3 and C4 ROMs were not removed. [[ADPCM]] samples and sprite tile numbers have an offset to skip over the Power Spikes II data.&lt;br /&gt;
&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Puzzle_Bobble&amp;diff=9289</id>
		<title>Puzzle Bobble</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Puzzle_Bobble&amp;diff=9289"/>
		<updated>2026-08-14T21:22:27Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GameInfo|right&lt;br /&gt;
|en_title=Bust-A-Move&lt;br /&gt;
|jp_title=Puzzle Bobble&lt;br /&gt;
|jp_title2=パズルボブル&lt;br /&gt;
|eu_title=Puzzle Bobble &lt;br /&gt;
|developer=Taito&lt;br /&gt;
|ngh_id=083&lt;br /&gt;
|megcount=32&lt;br /&gt;
|mvs_release=yes&lt;br /&gt;
|mvs_release_en=y&lt;br /&gt;
|mvs_release_jp=y&lt;br /&gt;
|mvs_romset=pbobblen&lt;br /&gt;
|mvs_date=1994&lt;br /&gt;
|mvs_pchip=&lt;br /&gt;
|mvs_pboard=PROGTOP&lt;br /&gt;
|mvs_cboard=CHA256&lt;br /&gt;
|cd_release=y&lt;br /&gt;
|cd_release_jp=y&lt;br /&gt;
|cd_release_en=y&lt;br /&gt;
|cd_date=27/04/95&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Some [[Power Spikes II]] MVS cartridges were converted to Puzzle Bobble by SNK by doing the following:&lt;br /&gt;
* Replaced the Power Spikes II P1 ROM by the Puzzle Bobble &amp;quot;d96-07&amp;quot; P1 ROM in the EP1 spot.&lt;br /&gt;
* Replaced the Power Spikes II V3 ROM by the Puzzle Bobble &amp;quot;d96-01&amp;quot; V3 ROM, also added the &amp;quot;d96-05&amp;quot; V4 ROM.&lt;br /&gt;
* Replaced the Power Spikes II C5 and C6 ROMs by the Puzzle Bobble &amp;quot;d96-02&amp;quot; C5 ROM and &amp;quot;d96-03&amp;quot; C6 ROM.&lt;br /&gt;
* Replaced the Power Spikes II S1 ROM by the Puzzle Bobble &amp;quot;d96-04&amp;quot; S1 ROM.&lt;br /&gt;
* Replaced the Power Spikes II M1 ROM by the Puzzle Bobble &amp;quot;d96-06&amp;quot; M1 ROM.&lt;br /&gt;
&lt;br /&gt;
To probably save on manual labor, the unused Power Spikes II V1, V2, C1, C2, C3 and C4 ROMs were not removed. [[ADPCM]] samples and sprite tile numbers have an offset to skip over the Power Spikes II data.&lt;br /&gt;
&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Mahjong_controller&amp;diff=9286</id>
		<title>Mahjong controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Mahjong_controller&amp;diff=9286"/>
		<updated>2026-08-02T21:53:14Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Mahjong_controller.jpg|right|thumb|Mahjong controller]]&lt;br /&gt;
[[File:Mahjong_IO.png|right|thumb|Mahjong specific I/O test screen (Japan-J3 system ROM)]]&lt;br /&gt;
&lt;br /&gt;
A special controller designed to play mahjong games. It provides 21 push buttons organized in two rows:&lt;br /&gt;
&lt;br /&gt;
* First row: A B C D E F G H I J K L M N.&lt;br /&gt;
* Second row: SELECT START, then PON CHI KAN REACH RON (Japanese: pon chî kan rîchi ron).&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
&lt;br /&gt;
The mahjong controller is suported by all original [[system ROM]]s.&lt;br /&gt;
&lt;br /&gt;
The MVS system ROM doesn&#039;t detect the controller, but reads [[hardware DIPs]] #3 and sets the [[BIOS RAM locations|status byte of INPUT_1]] to 3 if set. It never sets INPUT_2 to 3, meaning that the mahjong controller is a single-player setup only on MVS.&lt;br /&gt;
&lt;br /&gt;
The home console system ROM can detect the controller on both ports (by asserting OUT3 and reading the SELECT button) and sets the corresponding input status byte to 3, allowing the use of two mahjong controllers.&lt;br /&gt;
 &lt;br /&gt;
Calling [[SYSTEM_IO]] reports the controller&#039;s status and updates the input data in RAM.&lt;br /&gt;
&lt;br /&gt;
=Hardware=&lt;br /&gt;
&lt;br /&gt;
The controller is built using a multiplexed array of buttons, using the controller port outputs to select which group of buttons to read. OUT3 and SELECT are hardwired to enable detection of the controller by home systems.&lt;br /&gt;
&lt;br /&gt;
The button array is organized as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&#039;&#039;&#039;OUT1&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&#039;&#039;&#039;OUT2&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&#039;&#039;&#039;OUT3&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;UP&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|A&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|H&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|PON&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;DOWN&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|B&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|I&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|CHI&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;LEFT&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|C&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|J&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|KAN&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;RIGHT&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|D&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|K&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|RON&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;A&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|E&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|L&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|REACH&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;B&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|F&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|M&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;C&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|G&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|N&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SELECT and START are always enabled.&lt;br /&gt;
&lt;br /&gt;
Schematic of the controller:&lt;br /&gt;
&lt;br /&gt;
[[File:Mahjong_schematic.png]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Controllers]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Joypad&amp;diff=9285</id>
		<title>Joypad</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Joypad&amp;diff=9285"/>
		<updated>2026-08-02T20:33:44Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Regular NeoGeo joypads or joysticks have 4 directions and 6 button switches.&lt;br /&gt;
&lt;br /&gt;
Registers used to read the switches states are {{Reg|REG_P1CNT}}, {{Reg|REG_P2CNT}}, and {{Reg|REG_STATUS_B}}.&lt;br /&gt;
&lt;br /&gt;
The [[SYSTEM_IO]] ($C0044A) [[BIOS calls|BIOS call]] can be used to read inputs more easily: it sets values in the [[BIOS_RAM_locations|BIOS RAM]] which gives currently pressed, state change, and repeat values for both joypads ports.&lt;br /&gt;
&lt;br /&gt;
Only one output is used: [[Pinouts|OUT3]], which is connected to the D button input. This loop is used for detection (D = 0 if OUT3 asserted).&lt;br /&gt;
&lt;br /&gt;
==NeoGeo CD joypads==&lt;br /&gt;
&lt;br /&gt;
[[File:G9pinout.png|right|thumb|&amp;quot;G9&amp;quot; internal schematic. Pin 2 is ground, 1 and 3 are buttons, 4 and 5 are port inputs.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Ngcdpad.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
The NeoGeo CD joypads use membrane switches and springs for the 4 directions (replacement part ?) which directly set the corresponding inputs to ground.&lt;br /&gt;
&lt;br /&gt;
The buttons are buffered with 3 dual NPN &amp;quot;digital transistors&amp;quot; marked G9, providing good press detection even if the carbon contacts have high resistance.&lt;br /&gt;
&lt;br /&gt;
[[Category:Base system]]&lt;br /&gt;
[[Category:Controllers]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=NEO-FTC1B_board&amp;diff=9284</id>
		<title>NEO-FTC1B board</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=NEO-FTC1B_board&amp;diff=9284"/>
		<updated>2026-08-02T19:39:07Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Ftc1b.jpg|thumb|Picture courtesy of [[http://www.mvs-scans.com MVS-Scans]]. EDGE1 is on the right, EDGE2 on the left.]]&lt;br /&gt;
&lt;br /&gt;
[[Multiplayer]] [[extension board]] used with [[Kizuna Encounter - Super Tag Battle]] to allow 4 players to play on the same system. It forms a Y splitter with 2 [[JAMMA connector pinout|JAMMA]] edges to connect two displays, two pair of speakers and two sets of 2-player controls.&lt;br /&gt;
&lt;br /&gt;
It multiplexes the inputs by using selection signals coming from a 4-wire (actually 2 used) cable that connects to the [[output port]] of the {{PCB|MV1B}} or {{PCB|MV1C}}, it also provides video signal buffering and power for the speakers ([[power amp]] under the heatsink).&lt;br /&gt;
&lt;br /&gt;
=Inputs=&lt;br /&gt;
&lt;br /&gt;
The {{Reg|REG_POUTPUT}} register is used to detect the board and select which set of inputs to read. The logic takes into consideration that the control signals aren&#039;t inverted on the MV1B and MV1C output ports.&lt;br /&gt;
* OUT1: set selection&lt;br /&gt;
* OUT2: unused&lt;br /&gt;
* OUT3: used for board detection by some versions of the [[system ROM]]&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!OUT1||P1 reads||P2 reads&lt;br /&gt;
|-&lt;br /&gt;
|low||EDGE 1 P1 (P1)||EDGE 2 P1 (P2)&lt;br /&gt;
|-&lt;br /&gt;
|high||EDGE 1 P2 (P3)||EDGE 2 P2 (P4)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When OUT3 is high, it simulates presses on particular buttons:&lt;br /&gt;
* EDGE 1 player 1 (P1) button A&lt;br /&gt;
* EDGE 2 player 1 (P2) button A&lt;br /&gt;
* EDGE 1 player 2 (P3) button B&lt;br /&gt;
* EDGE 2 player 2 (P4) button B&lt;br /&gt;
&lt;br /&gt;
=Schematic=&lt;br /&gt;
&lt;br /&gt;
[[File:Ftc1b_schematic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Cartridge systems]]&lt;br /&gt;
[[Category:Chips]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Output_port&amp;diff=9283</id>
		<title>Output port</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Output_port&amp;diff=9283"/>
		<updated>2026-08-02T19:37:02Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Connector on some MVS boards (like the {{PCB|MV1B}}) which do not have DA-15 [[Pinouts|joypad connectors]], used to obtain the 6 output lines for special controllers such as [[trackball]]s.&lt;br /&gt;
&lt;br /&gt;
Warning: these output lines come straight from {{Chipname|NEO-SDR-T}} chips through resistors and not from open-collector inverters like on joypad port equipped systems ! This means that their state might not be inverted in relation to the {{Reg|REG_POUTPUT}} register.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cartridge systems]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Mahjong_controller&amp;diff=9282</id>
		<title>Mahjong controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Mahjong_controller&amp;diff=9282"/>
		<updated>2026-07-26T22:14:41Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Mahjong_controller.jpg|right|thumb|Mahjong controller]]&lt;br /&gt;
[[File:Mahjong_IO.png|right|thumb|Mahjong specific I/O test screen (Japan-J3 system ROM)]]&lt;br /&gt;
&lt;br /&gt;
A special controller designed to play mahjong games. It provides 21 push buttons organized in two rows:&lt;br /&gt;
&lt;br /&gt;
* First row: A B C D E F G H I J K L M N.&lt;br /&gt;
* Second row: SELECT START, then PON CHI KAN REACH RON (Japanese: pon chî kan rîchi ron).&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
&lt;br /&gt;
The mahjong controller is suported by all original [[system ROM]]s.&lt;br /&gt;
&lt;br /&gt;
The MVS system ROM doesn&#039;t detect the controller, but reads [[hardware DIPs]] #3 and sets the [[BIOS RAM locations|status byte of INPUT_1]] to 3 if set. It never sets INPUT_2 to 3, meaning that the mahjong controller is a single-player setup only on MVS.&lt;br /&gt;
&lt;br /&gt;
The home console system ROM can detect the controller on both ports (by writing 1 to OUT3 and reading the SELECT button) and sets the corresponding input status byte to 3, allowing the use of two mahjong controllers.&lt;br /&gt;
 &lt;br /&gt;
Calling [[SYSTEM_IO]] reports the controller&#039;s status and updates the input data in RAM.&lt;br /&gt;
&lt;br /&gt;
=Hardware=&lt;br /&gt;
&lt;br /&gt;
The controller is built using a multiplexed array of buttons, using the controller port outputs to select which group of buttons to read. OUT3 and SELECT are hardwired to enable detection of the controller by home systems.&lt;br /&gt;
&lt;br /&gt;
The button array is organized as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&#039;&#039;&#039;OUT1&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&#039;&#039;&#039;OUT2&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&#039;&#039;&#039;OUT3&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;UP&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|A&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|H&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|PON&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;DOWN&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|B&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|I&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|CHI&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;LEFT&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|C&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|J&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|KAN&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;RIGHT&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|D&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|K&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|RON&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;A&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|E&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|L&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|REACH&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;B&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|F&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|M&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;C&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|G&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|N&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SELECT and START are always enabled.&lt;br /&gt;
&lt;br /&gt;
Schematic of the controller:&lt;br /&gt;
&lt;br /&gt;
[[File:Mahjong_schematic.png]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Controllers]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Trackball&amp;diff=9281</id>
		<title>Trackball</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Trackball&amp;diff=9281"/>
		<updated>2026-07-26T21:54:45Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Irrmaze_bios1.png|right]]&lt;br /&gt;
&lt;br /&gt;
Special controller only used in [[The Irritating Maze]] cabs.&lt;br /&gt;
&lt;br /&gt;
Works the same way as an upside-down mechanical mouse. Uses two optical encoders for X and Y movement, handled by the [[SIT board]].&lt;br /&gt;
&lt;br /&gt;
A special [[system ROM]] is used (236-bios.sp1).&lt;br /&gt;
&lt;br /&gt;
The counter values are read from {{Reg|REG_P1CNT}}:&lt;br /&gt;
&lt;br /&gt;
* The X counter value when bit 0 of {{Reg|REG_POUTPUT}} is 0.&lt;br /&gt;
* The Y counter value when bit 0 of {{Reg|REG_POUTPUT}} is 1.&lt;br /&gt;
&lt;br /&gt;
Speed and direction are computed from the counter deltas.&lt;br /&gt;
&lt;br /&gt;
[[Category:Controllers]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Displaying_credits&amp;diff=9280</id>
		<title>Displaying credits</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Displaying_credits&amp;diff=9280"/>
		<updated>2026-07-22T01:31:43Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[system ROM]] takes care of displaying the credits on the LED displays itself (see [[MV-LED]] board).&lt;br /&gt;
&lt;br /&gt;
It&#039;s however the game&#039;s duty to display the counts on the screen. &lt;br /&gt;
&lt;br /&gt;
In MVS mode, the credit count for each player is stored in BCD in $D00034 for player 1, and $D00035 for player 2. These locations are in the [[backup RAM]], to keep the credit counts in case of a power failure during play.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: [[SYSTEM_IO]] must be called each v-blank to properly update those locations.&lt;br /&gt;
&lt;br /&gt;
There&#039;s no call or signal from the [[system ROM]] when coins are inserted so games should refresh this display every frame. SNK recommends doing so by using a 8x8 [[fix layer]] font on the bottom of the screen.&lt;br /&gt;
&lt;br /&gt;
In AES mode, it&#039;s up to the game to keep its own credits count in [[68k user RAM]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
moveq.l #0,d0&lt;br /&gt;
move.b  $D00034,d0             ; Read P1 credits (hex)&lt;br /&gt;
move.w  #$7088,REG_VRAMADDR    ; Set position in fix map, top left&lt;br /&gt;
move.w  d0,d1                  ; Make a copy of the BCD value&lt;br /&gt;
move.w  #$20,REG_VRAMMOD       ; Auto-inc fix column&lt;br /&gt;
lsr.b   #4,d1                  ; Get tens&lt;br /&gt;
andi.w  #$000F,d1              ; Mask off eventual garbage&lt;br /&gt;
ori.w   #$5030,d1              ; Set palette 5 and tile offset $30 (ASCII &amp;quot;0&amp;quot;)&lt;br /&gt;
move.w  d1,REG_VRAMRW          ; Write tens to VRAM&lt;br /&gt;
andi.w  #$000F,d0              ; Get units&lt;br /&gt;
ori.w   #$5030,d0              ; Same&lt;br /&gt;
move.w  d0,REG_VRAMRW          ; Write units to VRAM&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Code]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=BIOS_RAM_locations&amp;diff=9279</id>
		<title>BIOS RAM locations</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=BIOS_RAM_locations&amp;diff=9279"/>
		<updated>2026-07-22T00:17:51Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: /* System Related */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The locations are (?) guaranteed to be identical accross all [[system ROM]] versions so that games can use them regardless of the system type.&lt;br /&gt;
&lt;br /&gt;
=Game Related=&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;DEF name&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Set by&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$10FD84~$10FD93&lt;br /&gt;
|BIOS_GAME_DIP&lt;br /&gt;
|16 bytes&lt;br /&gt;
|BIOS&lt;br /&gt;
|[[Software DIPs]] values (game configuration)&lt;br /&gt;
|-&lt;br /&gt;
|$10FDAE&lt;br /&gt;
|BIOS_USER_REQUEST&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Request code for the [[USER subroutine]]. 0:Init, 1:Boot animation, 2:Demo, 3:Title&lt;br /&gt;
|-&lt;br /&gt;
|$10FDAF&lt;br /&gt;
|BIOS_USER_MODE&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS/Game&lt;br /&gt;
|Used by the game to tell what it&#039;s doing: 0:Init/Boot animation, 1:Title/Demo, 2:Game&lt;br /&gt;
[[Game selection]] can only be done on MVS systems when this byte is &amp;lt; 2&lt;br /&gt;
|-&lt;br /&gt;
|$10FDB0&lt;br /&gt;
|BIOS_CREDIT_DEC&lt;br /&gt;
|4 bytes&lt;br /&gt;
|Game&lt;br /&gt;
|Credit decrement value for each player (1, 2, 3, 4) when calling [[CREDIT DOWN]].&lt;br /&gt;
|-&lt;br /&gt;
|$10FDB4&lt;br /&gt;
|BIOS_START_FLAG&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Used when calling the [[PLAYER START subroutine]]. The 4 LSBs correspond to the player who pushed start.&lt;br /&gt;
|-&lt;br /&gt;
|$10FDB6&lt;br /&gt;
|BIOS_PLAYER_MOD1&lt;br /&gt;
|byte&lt;br /&gt;
|Game&lt;br /&gt;
|rowspan=&amp;quot;4|Sets player status. 0:Never played, 1:Playing, 2:Continue option being displayed, 3:Game over&lt;br /&gt;
|-&lt;br /&gt;
|$10FDB7&lt;br /&gt;
|BIOS_PLAYER_MOD2&lt;br /&gt;
|byte&lt;br /&gt;
|Game&lt;br /&gt;
|-&lt;br /&gt;
|$10FDB8&lt;br /&gt;
|BIOS_PLAYER_MOD3&lt;br /&gt;
|byte&lt;br /&gt;
|Game&lt;br /&gt;
|-&lt;br /&gt;
|$10FDB9&lt;br /&gt;
|BIOS_PLAYER_MOD4&lt;br /&gt;
|byte&lt;br /&gt;
|Game&lt;br /&gt;
|-&lt;br /&gt;
|$10FEC5&lt;br /&gt;
|BIOS_TITLE_MODE&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS/Game&lt;br /&gt;
|Newer games set this to 1 in their command 3 [[USER subroutine]]. It prevents the system ROM from calling command 3 twice after game over if credits are already in the system.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=System Related=&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;DEF name&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Set by&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$10FD80&lt;br /&gt;
|BIOS_SYSTEM_MODE&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|0:BIOS wants vblank (system mode), $80:Ok to use vblank (game mode)&lt;br /&gt;
|-&lt;br /&gt;
|$10FD81&lt;br /&gt;
|BIOS_SYSRET_STATUS&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Internal value which stores the function code that [[SYSTEM_RETURN]] will call.&lt;br /&gt;
*0 : Init bram/select valid game for eye-catcher&lt;br /&gt;
*1 : Set the EL-LED to the correct value&lt;br /&gt;
*2 : Switch to the next slot, relaunch eye-catcher&lt;br /&gt;
*3 : After a gameover, save the playtime for bookeeping, switch to DEMO mode, reset the workbackup ram&lt;br /&gt;
*4 : Switch next slot (select p1 pressed)&lt;br /&gt;
*5 : Switch to previous slot (select p2 pressed)&lt;br /&gt;
*6 : Called after a coin deposit, does nothing&lt;br /&gt;
|-&lt;br /&gt;
|$10FD82&lt;br /&gt;
|BIOS_MVS_FLAG&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|System type. 0:AES, 0x80:MVS&lt;br /&gt;
|-&lt;br /&gt;
|$10FD83&lt;br /&gt;
|BIOS_COUNTRY_CODE&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|0:Japan, 1:USA, 2:Europe&lt;br /&gt;
|-&lt;br /&gt;
|$10FE80&lt;br /&gt;
|BIOS_DEVMODE&lt;br /&gt;
|8 bytes&lt;br /&gt;
|BIOS&lt;br /&gt;
|All set to 0x00 in normal mode. Set to &amp;quot;1streset&amp;quot; string in developer mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Joypad Related=&lt;br /&gt;
&lt;br /&gt;
These values are updated by calling [[SYSTEM_IO]].&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;DEF name&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Set by&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$10FD94&lt;br /&gt;
|BIOS_P1STATUS&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|0:No connection, 1:Normal joypad, 2:Expanded joypad, 3:Mahjong controller, 4:Keyboard&lt;br /&gt;
|-&lt;br /&gt;
|$10FD95&lt;br /&gt;
|BIOS_P1PREVIOUS&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Inputs on previous frame [DCBA Right Left Down Up] (positive logic).&lt;br /&gt;
|-&lt;br /&gt;
|$10FD96&lt;br /&gt;
|BIOS_P1CURRENT&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Inputs on current frame [DCBA Right Left Down Up] (positive logic).&lt;br /&gt;
|-&lt;br /&gt;
|$10FD97&lt;br /&gt;
|BIOS_P1CHANGE&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Buttons just pressed, active edge [DCBA Right Left Down Up] (positive logic).&lt;br /&gt;
|-&lt;br /&gt;
|$10FD98&lt;br /&gt;
|BIOS_P1REPEAT&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Active edge + repeat every 8 frames after 16 frames. [DCBA Right Left Down Up] (positive logic).&lt;br /&gt;
|-&lt;br /&gt;
|$10FD99&lt;br /&gt;
|BIOS_P1TIMER&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Repeat timer (counts down from 8 to 0).&lt;br /&gt;
|-&lt;br /&gt;
|$10FD9A~$10FD9F&lt;br /&gt;
|Same for P2&lt;br /&gt;
|6 bytes&lt;br /&gt;
|BIOS&lt;br /&gt;
|See above&lt;br /&gt;
|-&lt;br /&gt;
|$10FDA0~$10FDA6&lt;br /&gt;
|Same for P3&lt;br /&gt;
|6 bytes&lt;br /&gt;
|BIOS&lt;br /&gt;
|See above&lt;br /&gt;
|-&lt;br /&gt;
|$10FDA7~$10FDAB&lt;br /&gt;
|Same for P4&lt;br /&gt;
|6 bytes&lt;br /&gt;
|BIOS&lt;br /&gt;
|See above&lt;br /&gt;
|-&lt;br /&gt;
|$10FDAC&lt;br /&gt;
|BIOS_STATCURNT&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Select P4, Start P4, Select P3, Start P3, Select P2, Start P2, Select P1, Start P1 (positive logic)&lt;br /&gt;
&lt;br /&gt;
On MVS the select bits are always read as 0.&lt;br /&gt;
|-&lt;br /&gt;
|$10FDAD&lt;br /&gt;
|BIOS_STATCHANGE&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Select P4, Start P4, Select P3, Start P3, Select P2, Start P2, Select P1, Start P1 (positive logic)&lt;br /&gt;
&lt;br /&gt;
On MVS the select bits are always read as 0.&lt;br /&gt;
|-&lt;br /&gt;
|$10FEDC&lt;br /&gt;
|BIOS_STATCURNT_RAW&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Select P4, Start P4, Select P3, Start P3, Select P2, Start P2, Select P1, Start P1 (positive logic)&lt;br /&gt;
|-&lt;br /&gt;
|$10FEDD&lt;br /&gt;
|BIOS_STATCHANGE_RAW&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Select P4, Start P4, Select P3, Start P3, Select P2, Start P2, Select P1, Start P1 (positive logic)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Memory Card Related=&lt;br /&gt;
&lt;br /&gt;
See [[CARD]] for more details on those variables.&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;DEF name&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Set by&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$10FDC4&lt;br /&gt;
|BIOS_CARD_COMMAND&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS or Game&lt;br /&gt;
|Command to execute&lt;br /&gt;
|-&lt;br /&gt;
|$10FDC5&lt;br /&gt;
|BIOS_CARD_MODE&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS?&lt;br /&gt;
|Internal use?&lt;br /&gt;
|-&lt;br /&gt;
|$10FDC6&lt;br /&gt;
|BIOS_CARD_ANSWER&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Answer code for the command&lt;br /&gt;
|-&lt;br /&gt;
|$10FDC8&lt;br /&gt;
|BIOS_CARD_START&lt;br /&gt;
|longword&lt;br /&gt;
|BIOS or Game&lt;br /&gt;
|Pointer to data&lt;br /&gt;
|-&lt;br /&gt;
|$10FDCC&lt;br /&gt;
|BIOS_CARD_SIZE&lt;br /&gt;
|word&lt;br /&gt;
|BIOS or Game&lt;br /&gt;
|Size of data&lt;br /&gt;
|-&lt;br /&gt;
|$10FDCE&lt;br /&gt;
|BIOS_CARD_FCB&lt;br /&gt;
|word&lt;br /&gt;
|BIOS or Game&lt;br /&gt;
|Game NGH number&lt;br /&gt;
|-&lt;br /&gt;
|$10FDD0&lt;br /&gt;
|BIOS_CARD_SUB&lt;br /&gt;
|byte or word&lt;br /&gt;
|BIOS or Game&lt;br /&gt;
|Game Subnumber&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=MESS OUT Related=&lt;br /&gt;
&lt;br /&gt;
See [[MESS_OUT]] to know how to use this routine.&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;DEF name&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Set by&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$10FDBE&lt;br /&gt;
|BIOS_MESS_POINT&lt;br /&gt;
|longword&lt;br /&gt;
|Game&lt;br /&gt;
|Buffer pointer&lt;br /&gt;
|-&lt;br /&gt;
|$10FDC2&lt;br /&gt;
|BIOS_MESS_BUSY&lt;br /&gt;
|byte&lt;br /&gt;
|Game&lt;br /&gt;
|0:Allow MESS_OUT, 1:Skip MESS_OUT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Calendar Related=&lt;br /&gt;
&lt;br /&gt;
Those value are updated when [[READ_CALENDAR]] is called&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;DEF name&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Set by&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$10FDD2&lt;br /&gt;
|BIOS_YEAR&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Current year&lt;br /&gt;
|-&lt;br /&gt;
|$10FDD3&lt;br /&gt;
|BIOS_MONTH&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Current month&lt;br /&gt;
|-&lt;br /&gt;
|$10FDD4&lt;br /&gt;
|BIOS_DAY&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Current day&lt;br /&gt;
|-&lt;br /&gt;
|$10FDD5&lt;br /&gt;
|BIOS_WEEKDAY&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Current weekday (Sunday = 00, Monday = 01 ... Saturday = 06)&lt;br /&gt;
|-&lt;br /&gt;
|$10FDD6&lt;br /&gt;
|BIOS_HOUR&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Current hour (24h format)&lt;br /&gt;
|-&lt;br /&gt;
|$10FDD7&lt;br /&gt;
|BIOS_MINUTE&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Current minute&lt;br /&gt;
|-&lt;br /&gt;
|$10FDD8&lt;br /&gt;
|BIOS_SECOND&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Current minute&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Internal=&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;DEF name&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Set by&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$10FCEF&lt;br /&gt;
|BIOS_SLOTCHECK&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|[[Slot check]] passed if non-zero&lt;br /&gt;
|-&lt;br /&gt;
|$10FDDA&lt;br /&gt;
|BIOS_COMPULSION_TIMER&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Timer for the game compulsion start feature, in seconds. BCD format.&lt;br /&gt;
|-&lt;br /&gt;
|$10FDDB&lt;br /&gt;
|BIOS_COMPULSION_FRAME_TIMER&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Frame-based timer for the game compulsion start feature.&lt;br /&gt;
&lt;br /&gt;
When it underflows, the timer is reset to 59 and START_COMPULSION_TIMER is decremented.&lt;br /&gt;
|-&lt;br /&gt;
|$10FE88&lt;br /&gt;
|BIOS_FRAME_COUNTER&lt;br /&gt;
|longword&lt;br /&gt;
|BIOS&lt;br /&gt;
|Frame counter, updated by SYSTEM_IO.&lt;br /&gt;
|-&lt;br /&gt;
|$10FEBF&lt;br /&gt;
|BIOS_BRAM_USED&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|0:[[Backup RAM]] not currently used, 1:Currently used&lt;br /&gt;
|-&lt;br /&gt;
|$10FEE1&lt;br /&gt;
|BIOS_FRAME_SKIP&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Number of frames to skip in the routine which checks demo_end or if the player has pressed start.&lt;br /&gt;
&lt;br /&gt;
Decremented in [[SYSTEM_IO]].&lt;br /&gt;
|-&lt;br /&gt;
|$10FEE3&lt;br /&gt;
|BIOS_INT1_SKIP&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Only used in [[SYSTEM_INT1]]. If non-zero, will only do the [[RTC]] check during INT1.&lt;br /&gt;
|-&lt;br /&gt;
|$10FEE4&lt;br /&gt;
|BIOS_INT1_FRAME_COUNTER&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Frame counter, only used in [[SYSTEM_INT1]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=4P mode related=&lt;br /&gt;
&lt;br /&gt;
Thoses will be valid on a 4P compatible bios only&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;DEF name&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Set by&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$10FEF8&lt;br /&gt;
|BIOS_4P_REQUESTED&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Keeps a local copy of hard dip 2 status on bootup.&lt;br /&gt;
&lt;br /&gt;
0: dip2 wasn&#039;t set&lt;br /&gt;
&lt;br /&gt;
$2: dip 2 was on.&lt;br /&gt;
|-&lt;br /&gt;
|$10FEFA&lt;br /&gt;
|BIOS_4P_MODE&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|Main 4P flag, is set when hard dip 2 is on and 4P board is found.&lt;br /&gt;
&lt;br /&gt;
0: regular play&lt;br /&gt;
&lt;br /&gt;
$FF: 4P mode game&lt;br /&gt;
|-&lt;br /&gt;
|$10FEFB&lt;br /&gt;
|BIOS_4P_PLUGGED&lt;br /&gt;
|byte&lt;br /&gt;
|BIOS&lt;br /&gt;
|0: 4P board not found&lt;br /&gt;
&lt;br /&gt;
$FF: 4P board plugged&lt;br /&gt;
&lt;br /&gt;
4P compatible bios will check for 4P board regardless of dip2 switch status.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=CD only=&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;DEF name&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Set by&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$10FEF4&lt;br /&gt;
|BIOS_UPDEST&lt;br /&gt;
|Long&lt;br /&gt;
|Game&lt;br /&gt;
|Copy destination address&lt;br /&gt;
|-&lt;br /&gt;
|$10FEF8&lt;br /&gt;
|BIOS_UPSRC&lt;br /&gt;
|Long&lt;br /&gt;
|Game&lt;br /&gt;
|Copy source address&lt;br /&gt;
|-&lt;br /&gt;
|$10FEFC&lt;br /&gt;
|BIOS_UPSIZE&lt;br /&gt;
|Long&lt;br /&gt;
|Game&lt;br /&gt;
|Copy data size&lt;br /&gt;
|-&lt;br /&gt;
|$10FEDA&lt;br /&gt;
|BIOS_UPZONE&lt;br /&gt;
|Byte&lt;br /&gt;
|Game&lt;br /&gt;
|Copy zone (0=PRG, 1=FIX, 2=SPR, 3=Z80, 4=PCM, 5=PAT, 7=OBJ, 8=A** files)&lt;br /&gt;
|-&lt;br /&gt;
|$10FEDB&lt;br /&gt;
|BIOS_UPBANK&lt;br /&gt;
|Byte&lt;br /&gt;
|Game&lt;br /&gt;
|Copy bank&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Others=&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;DEF name&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Set by&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$10FCEE&lt;br /&gt;
|?&lt;br /&gt;
|byte&lt;br /&gt;
|GAME&lt;br /&gt;
|Z80/M ROM check pass&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Base system]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Memory_speed&amp;diff=9278</id>
		<title>Memory speed</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Memory_speed&amp;diff=9278"/>
		<updated>2026-07-21T18:32:45Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Aes_cxk5814.jpg|thumb|[[VRAM]] chip, note the &amp;quot;-35&amp;quot; marking. 35ns is the highest speed requirement in the NeoGeo.]]&lt;br /&gt;
&lt;br /&gt;
Memory speed (or speed grade) is a value representing the maximum time it takes for a memory chip to output valid data after its address is changed.&lt;br /&gt;
&lt;br /&gt;
It is essential for memory chips to be fast enough to avoid crashes or glitches. When replacing RAMs, replacing the [[system ROM]] or making cartmods, care must be taken to use chips with the appropriate speed grades.&lt;br /&gt;
&lt;br /&gt;
Speed is usually indicated on the chip. It is actually a time value (speed = 1/t) specified in nanoseconds or tens of nanoseconds.&lt;br /&gt;
&lt;br /&gt;
The data output is only guaranteed to be valid after the specified time. So if the chip is too slow, the system might read corrupt data resulting in unstable operation.&lt;br /&gt;
&lt;br /&gt;
Regarding the NeoGeo and most other systems, faster than required (lower value) isn&#039;t a problem, slower than required (higher value) is bad.&lt;br /&gt;
&lt;br /&gt;
A slower chip can work in some cases if you&#039;re lucky, but you should never expect stable operation in all conditions. For example, some 120ns chips might work in place of a 100ns one, but a slight variation in voltage or temperature could cause crashes or resets. Taking the risk isn&#039;t worth it.&lt;br /&gt;
&lt;br /&gt;
=Requirements summary=&lt;br /&gt;
&lt;br /&gt;
See the related section in the [[VRAM]], [[Palette RAM]], [[P ROM]], [[V ROM]], [[S ROM]], [[C ROM]], and [[M1 ROM]] pages.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Memory kind&lt;br /&gt;
!Maximum value&lt;br /&gt;
!Mclks&lt;br /&gt;
!Proof&lt;br /&gt;
|-&lt;br /&gt;
|Z80 RAM&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|&amp;lt;500ns (2 MHz)&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|12? (500ns)&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Z80 read cycle&lt;br /&gt;
|-&lt;br /&gt;
|M1 ROM&lt;br /&gt;
|-&lt;br /&gt;
|Lower VRAM&lt;br /&gt;
|120ns (8.33 MHz)&lt;br /&gt;
|3 (125ns)&lt;br /&gt;
|Picture&lt;br /&gt;
|-&lt;br /&gt;
|Upper VRAM&lt;br /&gt;
|35ns (28.57 MHz) &lt;br /&gt;
|1 (41.7ns)&lt;br /&gt;
|Picture&lt;br /&gt;
|-&lt;br /&gt;
|Palette RAM&lt;br /&gt;
|120ns (8.33 MHz)&lt;br /&gt;
|3 (125ns)&lt;br /&gt;
|Picture&lt;br /&gt;
|-&lt;br /&gt;
|L0 ROM&lt;br /&gt;
|120ns ? (8.33 MHz)&lt;br /&gt;
|?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|P ROM&lt;br /&gt;
|rowspan=&amp;quot;4&amp;quot;|250ns&lt;br /&gt;
|rowspan=&amp;quot;4&amp;quot;|6 (3 68k clocks) ?&lt;br /&gt;
|-&lt;br /&gt;
|System ROM&lt;br /&gt;
|-&lt;br /&gt;
|68k RAM&lt;br /&gt;
|-&lt;br /&gt;
|Backup RAM&lt;br /&gt;
|-&lt;br /&gt;
|V ROM&lt;br /&gt;
|200ns (5 MHz)&lt;br /&gt;
|6 (250ns)&lt;br /&gt;
|YM2610 read cycle&lt;br /&gt;
|-&lt;br /&gt;
|S ROM&lt;br /&gt;
|200ns ? (5 MHz)&lt;br /&gt;
|5? (208ns)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|C ROM&lt;br /&gt;
|200ns ? (5 MHz)&lt;br /&gt;
|5? (208ns)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Memory card&lt;br /&gt;
|417ns ?&lt;br /&gt;
|10 (3 68k clocks + 2 waits) ?&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Standard speed grades=&lt;br /&gt;
&lt;br /&gt;
* -250 (250ns)&lt;br /&gt;
* -200 &#039;&#039;&#039;or -20&#039;&#039;&#039; (200ns)&lt;br /&gt;
* -150 &#039;&#039;&#039;or -15&#039;&#039;&#039; (150ns)&lt;br /&gt;
* -120 &#039;&#039;&#039;or -12&#039;&#039;&#039; (120ns)&lt;br /&gt;
* -90 (90ns)&lt;br /&gt;
* -70 (70ns)&lt;br /&gt;
* -55 (55ns)&lt;br /&gt;
* -35 (35ns).&lt;br /&gt;
&lt;br /&gt;
Note the possible confusion. If the value is less than 30 you probably have to add a 0, even if SRAM is now available in 25ns (not 250ns) speed grades.&lt;br /&gt;
&lt;br /&gt;
Check the datasheets.&lt;br /&gt;
&lt;br /&gt;
=DRAM=&lt;br /&gt;
&lt;br /&gt;
DRAM (CD systems) is way more complex than SRAM, timings and sequences are primordial.&lt;br /&gt;
&lt;br /&gt;
[[Category:Chips]]&lt;br /&gt;
[[Category:Base system]]&lt;br /&gt;
[[Category:Repairs]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=L0_ROM&amp;diff=9277</id>
		<title>L0 ROM</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=L0_ROM&amp;diff=9277"/>
		<updated>2026-07-20T01:26:16Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:aes_lo.jpg|right|thumb|Toshiba LO ROM chip taken from an AES system.]]&lt;br /&gt;
[[File:cd2_lo.jpg|right|thumb|LO ROM chip found on a CDM3-2 board.]]&lt;br /&gt;
&lt;br /&gt;
The L0 ROM is a 64KiB [[Sprite_shrinking|sprite scaling]] lookup table found in every NeoGeo system as a standalone mask ROM or integrated in {{chipname|NEO-GRZ}}.&lt;br /&gt;
&lt;br /&gt;
The 000-lo.lo dump commonly found in [[system ROM]] sets is 128KiB but only the first half is used.&lt;br /&gt;
&lt;br /&gt;
=Hash=&lt;br /&gt;
&lt;br /&gt;
* CRC32: 5A86CFF2&lt;br /&gt;
* SHA-1: 5992277DEBADEB64D1C1C64B0A92D9293EAF7E4A&lt;br /&gt;
&lt;br /&gt;
=Data format=&lt;br /&gt;
&lt;br /&gt;
The data is made of 256 tables of 256 bytes, each table corresponding to a vertical shrinking value for sprites.&lt;br /&gt;
&lt;br /&gt;
For the first 256 lines (top half of a full sprite), the index in the table is the pixel row number of the sprite currently being drawn (scanline - Y position).&lt;br /&gt;
&lt;br /&gt;
Each byte entry in the table is used as 2 nibbles:&lt;br /&gt;
*The upper nibble is the index to read in the tilemap in [[VRAM]] SCB1 (0 to 15).&lt;br /&gt;
*The lower nibble is the pixel row number of that tile to fetch in the [[C ROM]]s.&lt;br /&gt;
&lt;br /&gt;
For the last 256 lines (bottom half of a full sprite), the index in the table is complemented: the table is read backwards.&lt;br /&gt;
&lt;br /&gt;
*The upper nibble is the index XOR 31 to read in the tilemap in VRAM SCB1 (16 to 31).&lt;br /&gt;
*The lower nibble is the pixel row number XOR 15 of that tile to fetch in the C ROMs.&lt;br /&gt;
&lt;br /&gt;
==Example of GPU processing==&lt;br /&gt;
[[File:Ngscaling.png|right|thumb]]&lt;br /&gt;
&lt;br /&gt;
(Maybe place this part in the LSPC page ?)&lt;br /&gt;
&lt;br /&gt;
Sprite with Y scaling value = $1B (10.6% of full size).&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
!Sprite line #&lt;br /&gt;
!L0 address&lt;br /&gt;
!L0 data&lt;br /&gt;
!Tilemap index&lt;br /&gt;
!Pixel row in tile&lt;br /&gt;
|-&lt;br /&gt;
|0||$1B00||$00||0||0&lt;br /&gt;
|-&lt;br /&gt;
|1||$1B01||$08||0||8&lt;br /&gt;
|-&lt;br /&gt;
|2||$1B02||$10||1||0&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5|...&lt;br /&gt;
|-&lt;br /&gt;
|26||$1B1A||$E8||14||8&lt;br /&gt;
|-&lt;br /&gt;
|27||$1B1B||$F8||15||8&lt;br /&gt;
|-&lt;br /&gt;
|28||$1B1C||$FF||15||15&lt;br /&gt;
|-&lt;br /&gt;
|29||$1B1D||$FF||15||15&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5|...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Datasheet==&lt;br /&gt;
There are 2 stand alone chip versions used depending on the NeoGeo system, the SOP32 TC531001 and the DIP28 TC531000.&lt;br /&gt;
&lt;br /&gt;
Official TC531001 datasheet: [[http://www.alldatasheet.com/datasheet-pdf/pdf/115078/TOSHIBA/TC531001.html]]&lt;br /&gt;
&lt;br /&gt;
Official TC531000 datasheet: [[https://www.digchip.com/datasheets/parts/datasheet/710/TC531000CP-pdf.php]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Chips]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Sprite_shrinking&amp;diff=9276</id>
		<title>Sprite shrinking</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Sprite_shrinking&amp;diff=9276"/>
		<updated>2026-07-20T01:23:13Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: /* Vertical shrinking */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Shrinking (also known as scaling, reduction, and &amp;quot;zooming&amp;quot;) is a hardware feature of the NeoGeo which allows to scale down [[sprites]] with per-pixel accuracy in both dimensions.&lt;br /&gt;
&lt;br /&gt;
Shrinking is performed by [[LSPC]] by skipping a variable number of pixel lines or columns. It can be seen as a simple subsampling of the original graphics since there&#039;s no smoothing applied at all.&lt;br /&gt;
&lt;br /&gt;
=Vertical shrinking=&lt;br /&gt;
&lt;br /&gt;
The vertical shrinking is set by an 8-bit value specifying the final height of the sprite&#039;s &#039;&#039;&#039;graphics&#039;&#039;&#039;. This value is set in [[VRAM]], in the [[Sprites|SCB2]].&lt;br /&gt;
&lt;br /&gt;
Range: $FF is the tallest (1:1 size), $0 is the smallest (1:256).&lt;br /&gt;
&lt;br /&gt;
To know which line to skip, LSPC uses a lookup table stored in the {{Chipname|L0 ROM}}.&lt;br /&gt;
&lt;br /&gt;
The vertical shrink parameter propagates in [[Sticky bit|chained sprites]].&lt;br /&gt;
&lt;br /&gt;
==Caveat: Display window==&lt;br /&gt;
&lt;br /&gt;
Note that vertical shrinking does not affect the tile height setting of the sprite. The graphics are shrunk &#039;&#039;&#039;inside&#039;&#039;&#039; the defined window.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:spritez_4.png|Sprite height set to 4 tiles, graphics intentionally filling 4 tiles&lt;br /&gt;
File:spritez_3.png|The same sprite updated to be only 3 tiles high without clearing the 4th (yellow) tile&lt;br /&gt;
File:spritez_anim.gif|The sprite will shrink this way, showing the garbage yellow tile from the previous setup&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Caveat: Last line repeat==&lt;br /&gt;
&lt;br /&gt;
If the display window of a sprite is taller than 16 tiles worth of shrunk graphics, the remaining lines will be filled with repeats of the last line of the last tile (the bottom line of the tile at map index 15). This is because there&#039;s no logic to mask out those lines, only $FF padding values from the L0 ROM.&lt;br /&gt;
&lt;br /&gt;
SNK recommends leaving that line fully transparent if this causes problems.&lt;br /&gt;
&lt;br /&gt;
=Horizontal shrinking=&lt;br /&gt;
&lt;br /&gt;
The horizontal shrinking is set by a 4-bit value specifying the final width of the sprite graphics +1 (giving 1 to 16 pixels wide sprites). This value is also set in [[Sprites|SCB2]].&lt;br /&gt;
&lt;br /&gt;
Range: $F is full size (all 16 pixels shown), $0 is the smallest (only 1 pixel shown).&lt;br /&gt;
&lt;br /&gt;
The horizontal shrink parameter does &#039;&#039;&#039;not&#039;&#039;&#039; propagate in chained sprites. Values for each sprite of a group [[Scaling sprite groups|have to be distributed]] to obtain the total desired group width.&lt;br /&gt;
&lt;br /&gt;
There is no external lookup table for horizontal shrinking. The process is completely done inside LSPC.&lt;br /&gt;
In the following table, each line corresponds to a shrinking value. 1 means the pixel will be drawn and 0 means it will be skipped (info from MAME&#039;s source, matches the real hardware):&lt;br /&gt;
&lt;br /&gt;
[[File:Hshrink.gif|thumb|Horizontal shrink effect on a multicolored tile, showing how pixels are skipped.]]&lt;br /&gt;
&lt;br /&gt;
*0: 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 (15 pixel skipped, 1 remaining)&lt;br /&gt;
*1: 0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0 (14 pixels skipped...)&lt;br /&gt;
*2: 0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0&lt;br /&gt;
*3: 0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,0&lt;br /&gt;
*4: 0,0,1,0,1,0,0,0,1,0,0,0,1,0,1,0&lt;br /&gt;
*5: 0,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0&lt;br /&gt;
*6: 0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0&lt;br /&gt;
*7: 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0&lt;br /&gt;
*8: 1,0,1,0,1,0,1,0,1,1,1,0,1,0,1,0&lt;br /&gt;
*9: 1,0,1,1,1,0,1,0,1,1,1,0,1,0,1,0&lt;br /&gt;
*A: 1,0,1,1,1,0,1,0,1,1,1,0,1,0,1,1&lt;br /&gt;
*B: 1,0,1,1,1,0,1,1,1,1,1,0,1,0,1,1&lt;br /&gt;
*C: 1,0,1,1,1,0,1,1,1,1,1,0,1,1,1,1&lt;br /&gt;
*D: 1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1&lt;br /&gt;
*E: 1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1 (...1 pixel skipped)&lt;br /&gt;
*F: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 (no pixels skipped, full size)&lt;br /&gt;
&lt;br /&gt;
=Centering=&lt;br /&gt;
&lt;br /&gt;
Centering can be required since the &amp;quot;anchor point&amp;quot; of sprites is fixed at their top left corner.&lt;br /&gt;
&lt;br /&gt;
Todo: code example.&lt;br /&gt;
&lt;br /&gt;
[[Category:Video system]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Sprite_shrinking&amp;diff=9275</id>
		<title>Sprite shrinking</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Sprite_shrinking&amp;diff=9275"/>
		<updated>2026-07-20T01:20:10Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: /* Caveat: Last line repeat */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Shrinking (also known as scaling, reduction, and &amp;quot;zooming&amp;quot;) is a hardware feature of the NeoGeo which allows to scale down [[sprites]] with per-pixel accuracy in both dimensions.&lt;br /&gt;
&lt;br /&gt;
Shrinking is performed by [[LSPC]] by skipping a variable number of pixel lines or columns. It can be seen as a simple subsampling of the original graphics since there&#039;s no smoothing applied at all.&lt;br /&gt;
&lt;br /&gt;
=Vertical shrinking=&lt;br /&gt;
&lt;br /&gt;
The vertical shrinking is set by an 8-bit value specifying the final height of the sprite&#039;s &#039;&#039;&#039;graphics&#039;&#039;&#039;. This value is set in [[VRAM]], in the [[Sprites|SCB2]].&lt;br /&gt;
&lt;br /&gt;
Range: $FF is the tallest, $0 is the smallest.&lt;br /&gt;
&lt;br /&gt;
To know which line to skip, LSPC uses a lookup table stored in the {{Chipname|L0 ROM}}.&lt;br /&gt;
&lt;br /&gt;
The vertical shrink parameter propagates in [[Sticky bit|chained sprites]].&lt;br /&gt;
&lt;br /&gt;
==Caveat: Display window==&lt;br /&gt;
&lt;br /&gt;
Note that vertical shrinking does not affect the tile height setting of the sprite. The graphics are shrunk &#039;&#039;&#039;inside&#039;&#039;&#039; the defined window.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:spritez_4.png|Sprite height set to 4 tiles, graphics intentionally filling 4 tiles&lt;br /&gt;
File:spritez_3.png|The same sprite updated to be only 3 tiles high without clearing the 4th (yellow) tile&lt;br /&gt;
File:spritez_anim.gif|The sprite will shrink this way, showing the garbage yellow tile from the previous setup&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Caveat: Last line repeat==&lt;br /&gt;
&lt;br /&gt;
If the display window of a sprite is taller than 16 tiles worth of shrunk graphics, the remaining lines will be filled with repeats of the last line of the last tile (the bottom line of the tile at map index 15). This is because there&#039;s no logic to mask out those lines, only $FF padding values from the L0 ROM.&lt;br /&gt;
&lt;br /&gt;
SNK recommends leaving that line fully transparent if this causes problems.&lt;br /&gt;
&lt;br /&gt;
=Horizontal shrinking=&lt;br /&gt;
&lt;br /&gt;
The horizontal shrinking is set by a 4-bit value specifying the final width of the sprite graphics +1 (giving 1 to 16 pixels wide sprites). This value is also set in [[Sprites|SCB2]].&lt;br /&gt;
&lt;br /&gt;
Range: $F is full size (all 16 pixels shown), $0 is the smallest (only 1 pixel shown).&lt;br /&gt;
&lt;br /&gt;
The horizontal shrink parameter does &#039;&#039;&#039;not&#039;&#039;&#039; propagate in chained sprites. Values for each sprite of a group [[Scaling sprite groups|have to be distributed]] to obtain the total desired group width.&lt;br /&gt;
&lt;br /&gt;
There is no external lookup table for horizontal shrinking. The process is completely done inside LSPC.&lt;br /&gt;
In the following table, each line corresponds to a shrinking value. 1 means the pixel will be drawn and 0 means it will be skipped (info from MAME&#039;s source, matches the real hardware):&lt;br /&gt;
&lt;br /&gt;
[[File:Hshrink.gif|thumb|Horizontal shrink effect on a multicolored tile, showing how pixels are skipped.]]&lt;br /&gt;
&lt;br /&gt;
*0: 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 (15 pixel skipped, 1 remaining)&lt;br /&gt;
*1: 0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0 (14 pixels skipped...)&lt;br /&gt;
*2: 0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0&lt;br /&gt;
*3: 0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,0&lt;br /&gt;
*4: 0,0,1,0,1,0,0,0,1,0,0,0,1,0,1,0&lt;br /&gt;
*5: 0,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0&lt;br /&gt;
*6: 0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0&lt;br /&gt;
*7: 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0&lt;br /&gt;
*8: 1,0,1,0,1,0,1,0,1,1,1,0,1,0,1,0&lt;br /&gt;
*9: 1,0,1,1,1,0,1,0,1,1,1,0,1,0,1,0&lt;br /&gt;
*A: 1,0,1,1,1,0,1,0,1,1,1,0,1,0,1,1&lt;br /&gt;
*B: 1,0,1,1,1,0,1,1,1,1,1,0,1,0,1,1&lt;br /&gt;
*C: 1,0,1,1,1,0,1,1,1,1,1,0,1,1,1,1&lt;br /&gt;
*D: 1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1&lt;br /&gt;
*E: 1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1 (...1 pixel skipped)&lt;br /&gt;
*F: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 (no pixels skipped, full size)&lt;br /&gt;
&lt;br /&gt;
=Centering=&lt;br /&gt;
&lt;br /&gt;
Centering can be required since the &amp;quot;anchor point&amp;quot; of sprites is fixed at their top left corner.&lt;br /&gt;
&lt;br /&gt;
Todo: code example.&lt;br /&gt;
&lt;br /&gt;
[[Category:Video system]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Puzzle_Bobble&amp;diff=9274</id>
		<title>Puzzle Bobble</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Puzzle_Bobble&amp;diff=9274"/>
		<updated>2026-07-19T15:25:27Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GameInfo|right&lt;br /&gt;
|en_title=Bust-A-Move&lt;br /&gt;
|jp_title=Puzzle Bobble&lt;br /&gt;
|jp_title2=パズルボブル&lt;br /&gt;
|eu_title=Puzzle Bobble &lt;br /&gt;
|developer=Taito&lt;br /&gt;
|ngh_id=083&lt;br /&gt;
|megcount=32&lt;br /&gt;
|mvs_release=yes&lt;br /&gt;
|mvs_release_en=y&lt;br /&gt;
|mvs_release_jp=y&lt;br /&gt;
|mvs_romset=pbobblen&lt;br /&gt;
|mvs_date=1994&lt;br /&gt;
|mvs_pchip=&lt;br /&gt;
|mvs_pboard=PROGBK1&lt;br /&gt;
|mvs_cboard=CHA256&lt;br /&gt;
|cd_release=y&lt;br /&gt;
|cd_release_jp=y&lt;br /&gt;
|cd_release_en=y&lt;br /&gt;
|cd_date=27/04/95&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Some [[Power Spikes II]] MVS cartridges were converted to Puzzle Bobble by SNK by doing the following:&lt;br /&gt;
* Replaced the Power Spikes II P1 ROM by the Puzzle Bobble &amp;quot;d96-07&amp;quot; P1 ROM in the EP1 spot.&lt;br /&gt;
* Replaced the Power Spikes II V3 ROM by the Puzzle Bobble &amp;quot;d96-01&amp;quot; V3 ROM, also added the &amp;quot;d96-05&amp;quot; V4 ROM.&lt;br /&gt;
* Replaced the Power Spikes II C5 and C6 ROMs by the Puzzle Bobble &amp;quot;d96-02&amp;quot; C5 ROM and &amp;quot;d96-03&amp;quot; C6 ROM.&lt;br /&gt;
* Replaced the Power Spikes II S1 ROM by the Puzzle Bobble &amp;quot;d96-04&amp;quot; S1 ROM.&lt;br /&gt;
* Replaced the Power Spikes II M1 ROM by the Puzzle Bobble &amp;quot;d96-06&amp;quot; M1 ROM.&lt;br /&gt;
&lt;br /&gt;
To probably save on manual labor, the unused Power Spikes II V1, V2, C1, C2, C3 and C4 ROMs were not removed. [[ADPCM]] samples and sprite tile numbers have an offset to skip over the Power Spikes II data.&lt;br /&gt;
&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Rendering_logic&amp;diff=9273</id>
		<title>Rendering logic</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Rendering_logic&amp;diff=9273"/>
		<updated>2026-07-18T19:37:04Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: /* Slow VRAM access slots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Depending on the chipset, video is generated by 3, 2 or one unique chip:&lt;br /&gt;
&lt;br /&gt;
* 3: [[LSPC-A0]], [[PRO-B0]], [[PRO-C0]] (early)&lt;br /&gt;
* 2: [[LSPC2-A2]], [[NEO-B1]] (most common)&lt;br /&gt;
* 1: [[NEO-GRC]] (CD systems), [[NEO-GRZ]] (CDZ, MV-1C...)&lt;br /&gt;
&lt;br /&gt;
See [[graphics pipeline]] for an overview of the interconnections between chips and cartridges. See [[Display timing]] for the sync signal&#039;s timing.&lt;br /&gt;
&lt;br /&gt;
There are two main parts in generating video:&lt;br /&gt;
&lt;br /&gt;
* An address generator (LSPC), which queries the graphics ROMs in the cartridges according to the data set in [[VRAM]].&lt;br /&gt;
* Line buffers, to which pixels can be written in any order from the graphics ROMs data.&lt;br /&gt;
&lt;br /&gt;
=Line buffers=&lt;br /&gt;
&lt;br /&gt;
To render sprites, the NeoGeo uses a pair of line buffers which are each 320 pixels long (a whole scanline). When one is used for rendering, the other one is shifted out for video output. Each new scanline, the buffers are flipped. This can be seen as a kind of double-buffering, allowing pixels to be rendered in any order.&lt;br /&gt;
&lt;br /&gt;
To increase bandwidth, pixels are rendered two by two in sub-pairs: there are actually 4, 160-pixels-long buffers interleaved in an odd/even fashion. This scheme was inherited from the [[Alpha68k]].&lt;br /&gt;
&lt;br /&gt;
The fix layer pixels are rendered in real time over the buffers output.&lt;br /&gt;
&lt;br /&gt;
==Fix tiles==&lt;br /&gt;
&lt;br /&gt;
* Fix pixels are output in time with the pixel clock (6MHz, 4mclk).&lt;br /&gt;
* One fix tile line is therefore output in: 8 pixels * 4mclk = 32mclk. No variation.&lt;br /&gt;
* The S ROM outputs 8 bits at a time so: 8 bits / 4bpp = 2 pixels at a time.&lt;br /&gt;
* S ROM reads needed for one fix tile line: 8 pixels / 2 pixels per read = 4 reads.&lt;br /&gt;
&lt;br /&gt;
Address sequence for one tile line:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! A4 !! 2H1 !! pixel pair&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || A&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || B&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || C&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
2H1 bypasses the PCK* latchs.&lt;br /&gt;
&lt;br /&gt;
==Sprite tiles==&lt;br /&gt;
16mclk = 16 pixels, 8 pixels per read.&lt;br /&gt;
&lt;br /&gt;
* Sprite pixels are rendered two-by-two at 12MHz (2mclk).&lt;br /&gt;
* One sprite tile line is therefore rendered in: 16 pixels / 2 * 2mclk = 16mclk. No variation, even if shrinking is used.&lt;br /&gt;
* The C ROM outputs 2 * 16 = 32 bits at a time so: 32 bits / 4bpp = 8 pixels at a time.&lt;br /&gt;
* C ROM reads needed for one sprite tile line: 16 pixels / 8 pixels per read = 2 reads.&lt;br /&gt;
&lt;br /&gt;
Address sequence for one tile line:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! CA4 !! 8-pixel line&lt;br /&gt;
|-&lt;br /&gt;
| 1 || A&lt;br /&gt;
|-&lt;br /&gt;
| 0 || B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
CA4 bypasses the PCK* latchs.&lt;br /&gt;
&lt;br /&gt;
=Active lists=&lt;br /&gt;
&lt;br /&gt;
The NeoGeo uses a pair of active lists, where the sprites numbers which need to be rendered on the next scanline are written to. As with the line buffers, the active lists are swapped every new scanline so that one is being filled by parsing, the other one is used for rendering.&lt;br /&gt;
&lt;br /&gt;
They are located in the fast VRAM at addresses $8600 and $8680. Each list is 96-entries long.&lt;br /&gt;
&lt;br /&gt;
=Slow VRAM access slots=&lt;br /&gt;
&lt;br /&gt;
Slow VRAM has four 4mclk-long access slots running in sequence with no variations:&lt;br /&gt;
&lt;br /&gt;
# Read sprite map even word&lt;br /&gt;
# Read sprite map odd word&lt;br /&gt;
# Read/Write for CPU&lt;br /&gt;
# Read fix map&lt;br /&gt;
&lt;br /&gt;
=Fast VRAM access slots=&lt;br /&gt;
&lt;br /&gt;
Fast VRAM is more complex and faster. It has 10 access slots with varying widths running in sequence with no variations, which can be seen as 5 parsing slots and 5 rendering slots:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Slot # !! Duration !! Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|2mclk&lt;br /&gt;
|rowspan=5|Parsing&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1.5mclk&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|1.5mclk&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1.5mclk&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|1.5mclk&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|2mclk&lt;br /&gt;
|Read active list&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|1.5mclk&lt;br /&gt;
|Read SCB2&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|1.5mclk&lt;br /&gt;
|Read SCB3&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|1.5mclk&lt;br /&gt;
|Read SCB4&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|1.5mclk&lt;br /&gt;
|Read/write for CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Yellow are parsing cycles, purple is the active list read, green is SCB* reads for rendering, red is for CPU access:&lt;br /&gt;
&lt;br /&gt;
[[file:timing_gpu1.png]]&lt;br /&gt;
&lt;br /&gt;
The parsing cycles aren&#039;t consistent, they depend on the matching of sprites. One cycle will read from SCB3 to test if its Y position matches with the current raster line. If there&#039;s a match, the next cycle will be a write to the active list. Otherwise it&#039;s another read cycle.&lt;br /&gt;
&lt;br /&gt;
Fast VRAM must be fast enough (45ns) as the shortest slots are 1.5mclk (62.5ns). 1mclk (41.6ns) would be too fast and SRAM was already expensive.&lt;br /&gt;
&lt;br /&gt;
=Sprite parsing=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;This is still a draft. The following information shouldn&#039;t be considered as correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LSPC splits the workload needed to render sprites in two passes: parsing and rendering.&lt;br /&gt;
&lt;br /&gt;
* Parsing for a raster line N is done during line N-2&lt;br /&gt;
* Rendering is done during line N-1&lt;br /&gt;
* Finally the line is ready for output just at the right time.&lt;br /&gt;
&lt;br /&gt;
During parsing, the Y positions of 381 sprites are read to see if they will be visible on line N. If that&#039;s the case, the sprite number is written to the active list currently being filled. This goes on until 381 sprites were parsed, OR the active list is full (96 sprite numbers were written), whichever comes first.&lt;br /&gt;
&lt;br /&gt;
* If sprite #382 is reached, the remaining time is used to fill the active list up to 96 entries with zeros.&lt;br /&gt;
* If the active list is full, sprites are still parsed up to #382 but no writes are done to the active list, whatever the matching result.&lt;br /&gt;
&lt;br /&gt;
No matter how many sprites are matched in the scanline, there will always be 381 SCB3 reads and 96 active list writes.&lt;br /&gt;
&lt;br /&gt;
This explains why sprite #0 cannot be used: this is the value used to top-up the active list. If there are less than 96 sprite matches (like most of the time), the sprite #0 will be rendered over and over again until the end of the list is reached.&lt;br /&gt;
&lt;br /&gt;
In the next paragraphs, each character represents a parsing slot: R is an SCB3 read, W is a sprite number write to the active list, F is a filling write to the active list, - is just idle waiting. There are always 1536mclk per line / 16mclk per cycle * 5 slots per cycle = 480 slots.&lt;br /&gt;
&lt;br /&gt;
==Case 1: Not a single sprite match==&lt;br /&gt;
&lt;br /&gt;
Fast VRAM cycles:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
24M    _|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_&lt;br /&gt;
Addr     200  | 201 | 202 | 203 | 204 |  681  | 00E | 20E | 40E | 600 |  205  | 206 | 207 | 208 | 209 |  682  | 00F | 20F | 40F&lt;br /&gt;
R/W     Read   Read  Read  Read  Read                                   Read   Read  Read  Read  Read&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
381 read slots, 96 fill slots, 3 waiting slots:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR&lt;br /&gt;
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR&lt;br /&gt;
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR&lt;br /&gt;
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRFFFFFFFFFFFFFFFFFFF&lt;br /&gt;
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Case 2: Some sprites match==&lt;br /&gt;
&lt;br /&gt;
Fast VRAM cycles:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
24M    _|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_&lt;br /&gt;
Addr     200  | 201 | 600 | 202 | 203 |  681  | 00E | 20E | 40E | 600 |  601  | 204 | 205 | 602 | 206 |  682  | 00F | 20F | 40F&lt;br /&gt;
R/W     Read   Read  Write Read  Read                                   Write  Read  Read  Write Read&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If 17 sprites match: 381 read slots, 17 write slots, 96-17=79 fill slots, 3 waiting slots:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RRRRRRWRRRRRRRRRRRRRRRRRRRRWRRRRRRRRRWRRRRRRWRRRRRRWRRRRRWRWRWRRRRRRRRRWRRRRRRRRRRRRRRWRRRRRRRRRRRRR&lt;br /&gt;
RRRRRRRRRRRRRRRRRRRWRWRRRRWRWRRRRRRRRRRRRRRRRRRRRRRRRWRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR&lt;br /&gt;
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRWRRRWRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR&lt;br /&gt;
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRFF&lt;br /&gt;
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Case 3: Exactly 96 sprites match==&lt;br /&gt;
&lt;br /&gt;
Fast VRAM cycles:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
24M    _|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_|&#039;|_&lt;br /&gt;
Addr     200  | 600 | 201 | 601 | 202 |  681  | 00E | 20E | 40E | 600 |  602  | 203 | 204 | 603 | 604 |  682  | 00F | 20F | 40F&lt;br /&gt;
R/W     Read   Write Read  Write Read                                   Write  Read  Read  Write Read&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
381 read slots, 96 write slots, 0 fill slots, 3 waiting slots:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RRRRRRWRRRRWRRRRRRRWRRRRRWRWRWRRWRRRRRRRRRWRRRRRRWRRWRRRRWRRRRRWRWRWRRRRRWRRRRWRRRRRRRRWRRRRRRWRRRWR&lt;br /&gt;
WRWRRWRRRRRRRWRRRWRRRWRRRRWRRRRRRRRWRWRRRRWRWRRRRRRRRRRRRRRRRRRRRRRRRWRRRRRRRRRRRRRRWRRRWRWRWRWRRWRW&lt;br /&gt;
RRRRWRRWRRWRRRWRRRWRRWRRRRWRWRWRRWRRRWRWRWRRWRRRRWRRRRRWRRWRRWRRRRRRWRRRWRRRRWRRRRRWRRWRRRWRRRWRRRRR&lt;br /&gt;
WRWRWRWRWRWRRRWRRRWRRRRRRRWRRRWRWRRRWRRRRRRRRRWRRRRRRRWRWRWRWRRRRRRRRRRWRRWRRRRRRWRRRRRRRRRRRRRRRRRR&lt;br /&gt;
RRRRRRRRRRRRRRRWRRRWRRRRWRRRWRRRRRRRWRRRRRRRWRRRRWRWRRRWRRWRRRRWRRRRRWRRRRRWR---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Case 4: More than 96 sprites match==&lt;br /&gt;
&lt;br /&gt;
Same as case 3, except after 96 &amp;quot;W&amp;quot;s, there are only useless &amp;quot;R&amp;quot;s.&lt;br /&gt;
&lt;br /&gt;
==Rendering==&lt;br /&gt;
&lt;br /&gt;
# Read active list ($8600+ or $8680+) to get sprite #&lt;br /&gt;
# Read SCB2 zoom values ($8000+)&lt;br /&gt;
# Read SCB3 Y position, height, and chain bit ($8200+)&lt;br /&gt;
# Read SCB4 X position ($8400+)&lt;br /&gt;
&lt;br /&gt;
The tile # and its attributes are also read from slow VRAM.&lt;br /&gt;
&lt;br /&gt;
==CPU access to VRAM==&lt;br /&gt;
&lt;br /&gt;
SNK says min. 12 68kclk between writes (so 24mclk). 1 write every 24mclk = 64 per scanline.&lt;br /&gt;
&lt;br /&gt;
CPU access occurs asynchronously with the 68000 bus -&amp;gt; storage in LSPC. If no write is requested, then the slots are occupied by reads, effectively updating one of the two read buffers continuously with the value pointed by the last used VRAM address.&lt;br /&gt;
&lt;br /&gt;
=Buffers control=&lt;br /&gt;
&lt;br /&gt;
==CK signals==&lt;br /&gt;
CK1~4 signals are used to clock each of the 4 buffers.&lt;br /&gt;
&lt;br /&gt;
* During rendering, the pulses often go by pair (1+2 or 3+4) to render pixels 2 by 2 if the corresponding WE signal is asserted (opaque pixel). Horizontal shrinking causes pulses to be skipped, so that the buffer&#039;s address isn&#039;t incremented.&lt;br /&gt;
* During output, the pulses are slower and always alternate (1/2/1/2... or 3/4/3/4...) to output even/odd pixels in sequence.&lt;br /&gt;
&lt;br /&gt;
* If the corresponding LD* signal is high, the buffer pointer is incremented (rendering left to right).&lt;br /&gt;
* If the corresponding LD* signal is low, the buffer pointer is loaded from the [[P bus]] (X position of sprite, or 0 to start line output).&lt;br /&gt;
&lt;br /&gt;
Inactive during H-blank.&lt;br /&gt;
&lt;br /&gt;
==LD signals==&lt;br /&gt;
The LD1~2 signals are synchronous signals used to load the pointers for a buffer pair as two bytes.&lt;br /&gt;
&lt;br /&gt;
Example P bus values for 5 full-width sprites right next to each other, starting at X=0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;0000,0808,1010,1818,2020&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example P bus values for 5 full-width sprites right next to each other, starting at X=1 (pixel pairs will be flipped by NEO-ZMC2):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;0100,0908,1110,1918,2120&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As sprite lines &#039;&#039;&#039;always&#039;&#039;&#039; take 16mclk to render, there&#039;s an LD* pulse every 16mclk to set the new starting address (X position) &#039;&#039;&#039;except&#039;&#039;&#039; for chained sprites. There&#039;s also always an unique pulse just before output to reset the pointers to 0.&lt;br /&gt;
&lt;br /&gt;
==WE signals==&lt;br /&gt;
WE1~4 signals are used to tell if the pixel should be written to a buffer.&lt;br /&gt;
&lt;br /&gt;
During rendering, the pulses are synchronized to CK signals.&lt;br /&gt;
&lt;br /&gt;
* If the pixel is opaque, there are both pulses at the same time (write pixel).&lt;br /&gt;
* If the pixel is transparent, there is a CK pulse but no WE pulse (skip pixel, move to next one).&lt;br /&gt;
* If the pixel is skipped for horizontal shrink, there are no pulses at all (do nothing).&lt;br /&gt;
&lt;br /&gt;
During output, the pulses are also synchronized to CK signals and always present. This is used to clear the buffers to the backdrop color for the next rendering cycle.&lt;br /&gt;
&lt;br /&gt;
==SS signals==&lt;br /&gt;
The SS1/2 signals enable clearing of buffer pairs, active during output.&lt;br /&gt;
&lt;br /&gt;
==Others==&lt;br /&gt;
&lt;br /&gt;
* TMS0 is used to flip the buffers, related to the lowest bit of the raster counter.&lt;br /&gt;
* The rising edge of PCK1 and PCK2 latches fix or sprite pixels from the cart ROMs.&lt;br /&gt;
&lt;br /&gt;
Fix data is read 8 pixels in advance (32mclk, confirms what Charles wrote in mvstech.txt).&lt;br /&gt;
&lt;br /&gt;
[[Category:Video system]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Game_CD_structure&amp;diff=9271</id>
		<title>Game CD structure</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Game_CD_structure&amp;diff=9271"/>
		<updated>2026-07-09T07:04:43Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It seems that the NeoGeo CD wants at least a PRG, FIX, SPR, Z80 and PCM loaded in [[IPL file|IPL.TXT]], or else it will simply reset after loading.&lt;br /&gt;
&lt;br /&gt;
There must be no more than 512 files on the whole CD for the [[system ROM]] loading code to properly work. [[Samurai Shodown RPG]] hates rules and doesn&#039;t care about this restriction.&lt;br /&gt;
&lt;br /&gt;
==Recognized files==&lt;br /&gt;
&lt;br /&gt;
From table in [[System ROM]] dumps:&lt;br /&gt;
*[[IPL file]] (no type)&lt;br /&gt;
*[[PRG file]]s (type 0)&lt;br /&gt;
*[[FIX file]]s (type 1) &lt;br /&gt;
*[[SPR file]]s (type 2)&lt;br /&gt;
*[[Z80 file]]s (type 3)&lt;br /&gt;
*[[PCM file]]s (type 4)&lt;br /&gt;
*[[PAT file]]s (type 5)&lt;br /&gt;
*[[TXT file]]s (no type)&lt;br /&gt;
*[[OBJ file]]s (type 7)&lt;br /&gt;
*A** files, (type 8) ?&lt;br /&gt;
*[[SYS file]]s (type ?)&lt;br /&gt;
*others ?&lt;br /&gt;
&lt;br /&gt;
[[Category:CD systems]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Top_Player%27s_Golf&amp;diff=9270</id>
		<title>Top Player&#039;s Golf</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Top_Player%27s_Golf&amp;diff=9270"/>
		<updated>2026-07-09T07:02:44Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GameInfo|right&lt;br /&gt;
|en_title=Top Player&#039;s Golf&lt;br /&gt;
|jp_title=Top Player&#039;s Golf&lt;br /&gt;
|jp_title2=トッププレイヤーズゴルフ&lt;br /&gt;
|developer=SNK&lt;br /&gt;
|ngh_id=003&lt;br /&gt;
|megcount=62&lt;br /&gt;
|mvs_release=yes&lt;br /&gt;
|mvs_release_en=y&lt;br /&gt;
|mvs_release_jp=y&lt;br /&gt;
|mvs_romset=tpgolf&lt;br /&gt;
|mvs_date=1990&lt;br /&gt;
|mvs_pchip=&lt;br /&gt;
|mvs_pboard=PROG-EP&lt;br /&gt;
|mvs_cboard=CHA-32&lt;br /&gt;
|aes_release=y&lt;br /&gt;
|aes_release_jp=y&lt;br /&gt;
|aes_release_en=y&lt;br /&gt;
|aes_romset=tpgolf&lt;br /&gt;
|aes_date=01/07/91&lt;br /&gt;
|cd_release=y&lt;br /&gt;
|cd_release_jp=y&lt;br /&gt;
|cd_release_en=y&lt;br /&gt;
|cd_date=09/09/94&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Uses no custom chips.&lt;br /&gt;
&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=The_Super_Spy&amp;diff=9269</id>
		<title>The Super Spy</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=The_Super_Spy&amp;diff=9269"/>
		<updated>2026-07-09T07:02:35Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GameInfo|right&lt;br /&gt;
|en_title=The Super Spy&lt;br /&gt;
|jp_title=The Super Spy&lt;br /&gt;
|jp_title2=ザ・スーパースパイ&lt;br /&gt;
|developer=SNK&lt;br /&gt;
|ngh_id=011&lt;br /&gt;
|megcount=55&lt;br /&gt;
|mvs_release=yes&lt;br /&gt;
|mvs_release_en=y&lt;br /&gt;
|mvs_release_jp=y&lt;br /&gt;
|mvs_romset=superspy&lt;br /&gt;
|mvs_date=1990&lt;br /&gt;
|mvs_pchip=&lt;br /&gt;
|mvs_pboard=PROG-8MB&lt;br /&gt;
|mvs_cboard=CHA-8M&lt;br /&gt;
|aes_release=y&lt;br /&gt;
|aes_release_jp=y&lt;br /&gt;
|aes_release_en=y&lt;br /&gt;
|aes_romset=superspy&lt;br /&gt;
|aes_date=01/07/91&lt;br /&gt;
|cd_release=y&lt;br /&gt;
|cd_release_jp=y&lt;br /&gt;
|cd_release_en=y&lt;br /&gt;
|cd_date=09/09/94&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Uses no custom chips.&lt;br /&gt;
&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Riding_Hero&amp;diff=9268</id>
		<title>Riding Hero</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Riding_Hero&amp;diff=9268"/>
		<updated>2026-07-09T07:02:26Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GameInfo|right&lt;br /&gt;
|en_title=Riding Hero&lt;br /&gt;
|jp_title=Riding Hero&lt;br /&gt;
|jp_title2=ライディングヒーロー&lt;br /&gt;
|developer=SNK&lt;br /&gt;
|ngh_id=006&lt;br /&gt;
|megcount=46&lt;br /&gt;
|mvs_release=yes&lt;br /&gt;
|mvs_release_en=y&lt;br /&gt;
|mvs_release_jp=y&lt;br /&gt;
|mvs_romset=ridhero&lt;br /&gt;
|mvs_date=1990&lt;br /&gt;
|mvs_pchip=&lt;br /&gt;
|mvs_pboard=PROG-HERO&lt;br /&gt;
|mvs_cboard=CHA-32&lt;br /&gt;
|aes_release=y&lt;br /&gt;
|aes_release_jp=y&lt;br /&gt;
|aes_release_en=y&lt;br /&gt;
|aes_date=01/07/91&lt;br /&gt;
|cd_release=y&lt;br /&gt;
|cd_release_jp=y&lt;br /&gt;
|cd_release_en=y&lt;br /&gt;
|cd_date=26/05/95&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Uses no custom chips.&lt;br /&gt;
&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Puzzled&amp;diff=9267</id>
		<title>Puzzled</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Puzzled&amp;diff=9267"/>
		<updated>2026-07-09T07:02:15Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GameInfo|right&lt;br /&gt;
|en_title=Puzzled &lt;br /&gt;
|jp_title=Joy Joy Kid&lt;br /&gt;
|jp_title2=ジョイジョイキッド&lt;br /&gt;
|developer=SNK&lt;br /&gt;
|ngh_id=021&lt;br /&gt;
|megcount=22&lt;br /&gt;
|mvs_release=yes&lt;br /&gt;
|mvs_release_en=y&lt;br /&gt;
|mvs_release_jp=y&lt;br /&gt;
|mvs_romset=joyjoy&lt;br /&gt;
|mvs_date=1990&lt;br /&gt;
|mvs_pchip=&lt;br /&gt;
|mvs_pboard=PROG-EP&lt;br /&gt;
|mvs_cboard=CHA-32&lt;br /&gt;
|aes_release=y&lt;br /&gt;
|aes_release_jp=y&lt;br /&gt;
|aes_release_en=y&lt;br /&gt;
|aes_date=01/07/91&lt;br /&gt;
|aes_romset=joyjoy&lt;br /&gt;
|cd_release=y&lt;br /&gt;
|cd_release_jp=y&lt;br /&gt;
|cd_release_en=y&lt;br /&gt;
|cd_date=09/09/94&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Smallest game edited for the NeoGeo (~191KiB [[P ROM]]). Uses no custom chips.&lt;br /&gt;
&lt;br /&gt;
The CD version of the game has only about 200 bytes changed and/or added to patch in code for [[CDDA]] music playback.&lt;br /&gt;
&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Ninja_Combat&amp;diff=9266</id>
		<title>Ninja Combat</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Ninja_Combat&amp;diff=9266"/>
		<updated>2026-07-09T07:01:13Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GameInfo|right&lt;br /&gt;
|en_title=Ninja Combat&lt;br /&gt;
|jp_title=Ninja Combat&lt;br /&gt;
|jp_title2=ニンジャコンバット&lt;br /&gt;
|developer=Alpha Denshi Co.&lt;br /&gt;
|ngh_id=009&lt;br /&gt;
|megcount=46&lt;br /&gt;
|mvs_release=yes&lt;br /&gt;
|mvs_release_en=y&lt;br /&gt;
|mvs_release_jp=y&lt;br /&gt;
|mvs_romset=ncombat&lt;br /&gt;
|mvs_date=1990&lt;br /&gt;
|mvs_pchip=&lt;br /&gt;
|mvs_pboard=PROG-EP&lt;br /&gt;
|mvs_cboard=CHA-32&lt;br /&gt;
|aes_release=y&lt;br /&gt;
|aes_release_jp=y&lt;br /&gt;
|aes_release_en=y&lt;br /&gt;
|aes_romset=ncombath&lt;br /&gt;
|aes_date=01/07/91&lt;br /&gt;
|cd_release=y&lt;br /&gt;
|cd_release_jp=y&lt;br /&gt;
|cd_release_en=y&lt;br /&gt;
|cd_date=31/10/94&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Uses no custom chips.&lt;br /&gt;
&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=NAM-1975&amp;diff=9265</id>
		<title>NAM-1975</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=NAM-1975&amp;diff=9265"/>
		<updated>2026-07-09T07:01:00Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GameInfo|right&lt;br /&gt;
|en_title=NAM-1975&lt;br /&gt;
|jp_title=NAM-1975&lt;br /&gt;
|jp_title2=ナム-1975&lt;br /&gt;
|developer=SNK&lt;br /&gt;
|ngh_id=001&lt;br /&gt;
|megcount=46&lt;br /&gt;
|tcrf=https://tcrf.net/NAM-1975&lt;br /&gt;
|mvs_release=yes&lt;br /&gt;
|mvs_release_en=y&lt;br /&gt;
|mvs_release_jp=y&lt;br /&gt;
|mvs_romset=nam1975&lt;br /&gt;
|mvs_date=1990&lt;br /&gt;
|mvs_pchip=&lt;br /&gt;
|mvs_pboard=PROG-NAM&lt;br /&gt;
|mvs_cboard=CHA-32&lt;br /&gt;
|aes_release=y&lt;br /&gt;
|aes_release_jp=y&lt;br /&gt;
|aes_release_en=y&lt;br /&gt;
|aes_romset=nam1975&lt;br /&gt;
|aes_date=01/07/91&lt;br /&gt;
|cd_release=y&lt;br /&gt;
|cd_release_jp=y&lt;br /&gt;
|cd_release_en=y&lt;br /&gt;
|cd_date=09/09/94&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Uses no custom chips.&lt;br /&gt;
&lt;br /&gt;
*C: 6 * 512kB&lt;br /&gt;
*P1: 512kB&lt;br /&gt;
*S: 128kB&lt;br /&gt;
*V1: 512kB&lt;br /&gt;
*V2: 3 * 512kB&lt;br /&gt;
&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Magician_Lord&amp;diff=9264</id>
		<title>Magician Lord</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Magician_Lord&amp;diff=9264"/>
		<updated>2026-07-09T07:00:32Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GameInfo|right&lt;br /&gt;
|en_title=Magician Lord&lt;br /&gt;
|jp_title=Magician Lord&lt;br /&gt;
|jp_title2=マジシャンロード&lt;br /&gt;
|developer=Alpha Denshi Co.&lt;br /&gt;
|ngh_id=005&lt;br /&gt;
|megcount=46&lt;br /&gt;
|mvs_release=yes&lt;br /&gt;
|mvs_release_en=y&lt;br /&gt;
|mvs_release_jp=y&lt;br /&gt;
|mvs_romset=maglord&lt;br /&gt;
|mvs_date=1990&lt;br /&gt;
|mvs_pchip=&lt;br /&gt;
|mvs_pboard=PROG-EP&lt;br /&gt;
|mvs_cboard=CHA-32&lt;br /&gt;
|aes_release=y&lt;br /&gt;
|aes_release_jp=y&lt;br /&gt;
|aes_release_en=y&lt;br /&gt;
|aes_romset=maglordh&lt;br /&gt;
|aes_date=01/07/91&lt;br /&gt;
|cd_release=y&lt;br /&gt;
|cd_release_jp=y&lt;br /&gt;
|cd_release_en=y&lt;br /&gt;
|cd_date=31/10/94&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Uses no custom chips.&lt;br /&gt;
&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=League_Bowling&amp;diff=9263</id>
		<title>League Bowling</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=League_Bowling&amp;diff=9263"/>
		<updated>2026-07-09T07:00:23Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GameInfo|right&lt;br /&gt;
|en_title=League Bowling&lt;br /&gt;
|jp_title=League Bowling&lt;br /&gt;
|jp_title2=リーグボウリング&lt;br /&gt;
|developer=SNK&lt;br /&gt;
|ngh_id=019&lt;br /&gt;
|megcount=26&lt;br /&gt;
|mvs_release=yes&lt;br /&gt;
|mvs_release_en=y&lt;br /&gt;
|mvs_release_jp=y&lt;br /&gt;
|mvs_romset=lbowling&lt;br /&gt;
|mvs_date=1990&lt;br /&gt;
|mvs_pchip=&lt;br /&gt;
|mvs_pboard=PROG-HERO&lt;br /&gt;
|mvs_cboard=CHA-32&lt;br /&gt;
|aes_release=y&lt;br /&gt;
|aes_release_jp=y&lt;br /&gt;
|aes_release_en=y&lt;br /&gt;
|aes_romset=lbowling&lt;br /&gt;
|aes_date=01/07/91&lt;br /&gt;
|cd_release=y&lt;br /&gt;
|cd_release_jp=y&lt;br /&gt;
|cd_release_en=y&lt;br /&gt;
|cd_date=09/09/94&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
League bowling is one of the 3 known games supporting multi-cab [[multiplayer]].&lt;br /&gt;
&lt;br /&gt;
Uses no custom chips.&lt;br /&gt;
&lt;br /&gt;
==Technical features==&lt;br /&gt;
&lt;br /&gt;
Does the most seizure-inducing [[palette rotation]] effect of all times on the title screen&#039;s background.&lt;br /&gt;
&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Ghost_Pilots&amp;diff=9262</id>
		<title>Ghost Pilots</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Ghost_Pilots&amp;diff=9262"/>
		<updated>2026-07-09T06:59:39Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GameInfo|right&lt;br /&gt;
|en_title=Ghost Pilots&lt;br /&gt;
|jp_title=Ghost Pilots&lt;br /&gt;
|jp_title2=ゴーストパイロット&lt;br /&gt;
|developer=SNK&lt;br /&gt;
|ngh_id=020&lt;br /&gt;
|megcount=55&lt;br /&gt;
|mvs_release=yes&lt;br /&gt;
|mvs_release_en=y&lt;br /&gt;
|mvs_release_jp=y&lt;br /&gt;
|mvs_romset=gpilots&lt;br /&gt;
|mvs_date=1991&lt;br /&gt;
|mvs_pchip=&lt;br /&gt;
|mvs_pboard=PROG8M42&lt;br /&gt;
|mvs_cboard=CHA-8M&lt;br /&gt;
|aes_release=y&lt;br /&gt;
|aes_release_jp=y&lt;br /&gt;
|aes_release_en=y&lt;br /&gt;
|aes_date=01/07/91&lt;br /&gt;
|cd_release=y&lt;br /&gt;
|cd_release_jp=y&lt;br /&gt;
|cd_release_en=y&lt;br /&gt;
|cd_date=17/03/95&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Uses no custom chips.&lt;br /&gt;
&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Cyber-Lip&amp;diff=9261</id>
		<title>Cyber-Lip</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Cyber-Lip&amp;diff=9261"/>
		<updated>2026-07-09T06:59:31Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GameInfo|right&lt;br /&gt;
|en_title=Cyber-Lip&lt;br /&gt;
|jp_title=Cyber-Lip&lt;br /&gt;
|jp_title2=サイバーリップ&lt;br /&gt;
|developer=SNK&lt;br /&gt;
|ngh_id=010&lt;br /&gt;
|megcount=50&lt;br /&gt;
|mvs_release=yes&lt;br /&gt;
|mvs_release_en=y&lt;br /&gt;
|mvs_release_jp=y&lt;br /&gt;
|mvs_romset=cyberlip&lt;br /&gt;
|mvs_date=1990&lt;br /&gt;
|mvs_pchip=&lt;br /&gt;
|mvs_pboard=PROG-EP&lt;br /&gt;
|mvs_cboard=CHA-32&lt;br /&gt;
|aes_release=y&lt;br /&gt;
|aes_release_jp=y&lt;br /&gt;
|aes_release_en=y&lt;br /&gt;
|aes_date=01/07/91&lt;br /&gt;
|cd_release=y&lt;br /&gt;
|cd_release_jp=y&lt;br /&gt;
|cd_release_en=y&lt;br /&gt;
|cd_date=21/04/95&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Uses no custom chips.&lt;br /&gt;
&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Blue%27s_Journey&amp;diff=9260</id>
		<title>Blue&#039;s Journey</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Blue%27s_Journey&amp;diff=9260"/>
		<updated>2026-07-09T06:59:22Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GameInfo|right&lt;br /&gt;
|en_title=Blue&#039;s Journey&lt;br /&gt;
|jp_title=Raguy&lt;br /&gt;
|jp_title2=ラギ&lt;br /&gt;
|developer=Alpha Denshi Co.&lt;br /&gt;
|ngh_id=022&lt;br /&gt;
|megcount=50&lt;br /&gt;
|mvs_release=yes&lt;br /&gt;
|mvs_release_en=y&lt;br /&gt;
|mvs_release_jp=y&lt;br /&gt;
|mvs_romset=bjourney&lt;br /&gt;
|mvs_date=1990&lt;br /&gt;
|mvs_pchip=&lt;br /&gt;
|mvs_pboard=PROG8M42&lt;br /&gt;
|mvs_cboard=CHA-8M&lt;br /&gt;
|aes_release=y&lt;br /&gt;
|aes_release_jp=y&lt;br /&gt;
|aes_release_en=y&lt;br /&gt;
|aes_romset=bjourney&lt;br /&gt;
|aes_date=01/07/91&lt;br /&gt;
|cd_release=y&lt;br /&gt;
|cd_release_jp=y&lt;br /&gt;
|cd_release_en=y&lt;br /&gt;
|cd_date=31/10/94&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Platformer game with &amp;lt;strike&amp;gt;Sega Genesis&amp;lt;/strike&amp;gt; colorful graphics and evil laughs.&lt;br /&gt;
&lt;br /&gt;
Uses no custom chips.&lt;br /&gt;
&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Baseball_Stars_Professional&amp;diff=9259</id>
		<title>Baseball Stars Professional</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Baseball_Stars_Professional&amp;diff=9259"/>
		<updated>2026-07-09T06:58:50Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GameInfo|right&lt;br /&gt;
|en_title=Baseball Stars Professional&lt;br /&gt;
|jp_title=Baseball Stars Professional&lt;br /&gt;
|jp_title2=ベースボールスターズプロフェッショナル&lt;br /&gt;
|developer=SNK&lt;br /&gt;
|ngh_id=002&lt;br /&gt;
|megcount=50&lt;br /&gt;
|mvs_release=yes&lt;br /&gt;
|mvs_release_en=y&lt;br /&gt;
|mvs_release_jp=y&lt;br /&gt;
|mvs_romset=bstars&lt;br /&gt;
|mvs_date=1990&lt;br /&gt;
|mvs_pchip=&lt;br /&gt;
|mvs_pboard=PROG-EP&lt;br /&gt;
|mvs_cboard=CHA-32&lt;br /&gt;
|aes_release=y&lt;br /&gt;
|aes_release_jp=y&lt;br /&gt;
|aes_release_en=y&lt;br /&gt;
|aes_romset=bstarsh&lt;br /&gt;
|aes_date=01/07/91&lt;br /&gt;
|cd_release=y&lt;br /&gt;
|cd_relase_jp=y&lt;br /&gt;
|cd_release_en=y&lt;br /&gt;
|cd_date=21/04/95&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Uses no custom chips.&lt;br /&gt;
&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Non-PCM_games&amp;diff=9258</id>
		<title>Non-PCM games</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Non-PCM_games&amp;diff=9258"/>
		<updated>2026-07-09T06:57:54Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: Created page with &amp;quot;Early games that don&amp;#039;t use combined ADPCM-A and ADPCM-B V ROMs (no {{Chipname|PCM}} chip):  * Baseball Stars Professional * Blue&amp;#039;s Journey * Cyber-Lip * Ghost Pilots * League Bowling * Magician Lord * NAM-1975 * Ninja Combat * Puzzled * Riding Hero * The Super Spy * Top Player&amp;#039;s Golf  =PCMization=  It may be desirable to &amp;quot;PCM-ize&amp;quot; these games for converts or emulation.  This is not a very simple and straighforwa...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Early games that don&#039;t use combined [[ADPCM]]-A and ADPCM-B [[V ROM]]s (no {{Chipname|PCM}} chip):&lt;br /&gt;
&lt;br /&gt;
* [[Baseball Stars Professional]]&lt;br /&gt;
* [[Blue&#039;s Journey]]&lt;br /&gt;
* [[Cyber-Lip]]&lt;br /&gt;
* [[Ghost Pilots]]&lt;br /&gt;
* [[League Bowling]]&lt;br /&gt;
* [[Magician Lord]]&lt;br /&gt;
* [[NAM-1975]]&lt;br /&gt;
* [[Ninja Combat]]&lt;br /&gt;
* [[Puzzled]]&lt;br /&gt;
* [[Riding Hero]]&lt;br /&gt;
* [[The Super Spy]]&lt;br /&gt;
* [[Top Player&#039;s Golf]]&lt;br /&gt;
&lt;br /&gt;
=PCMization=&lt;br /&gt;
&lt;br /&gt;
It may be desirable to &amp;quot;PCM-ize&amp;quot; these games for [[converts]] or emulation.&lt;br /&gt;
&lt;br /&gt;
This is not a very simple and straighforward task. As countrary to PCM games which are forced to use different addresses for their ADPCM-A and B samples, non-PCM games have all the liberty to use overlapping ones since two distinct ROMs are used.&lt;br /&gt;
&lt;br /&gt;
The V ROMs must be concatenated, and the sample address tables in the [[M1 ROM]] must be edited to reflect the new offsets. Because sound drivers are all slightly different, some code reverse-engineering is in order.&lt;br /&gt;
&lt;br /&gt;
De-PCMization on the other hand would be easy, but rather pointless.&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio system]]&lt;br /&gt;
[[Category:Cartridge systems]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Converts&amp;diff=9257</id>
		<title>Converts</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Converts&amp;diff=9257"/>
		<updated>2026-07-09T06:44:05Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:boot_convert.jpg|thumb|SMT flash adapters used on a sacrificial SNK PCB.]]&lt;br /&gt;
&lt;br /&gt;
In the NeoGeo community, &amp;quot;converts&amp;quot; commonly refers to modified original cartridges, having their ROMs replaced by those of another game or by programmable memory chips.&lt;br /&gt;
&lt;br /&gt;
This can be done for one&#039;s own use, for selling (dubious legality if ROMs were burned), or for plain [[bootleg|fraud]].&lt;br /&gt;
&lt;br /&gt;
The usual method is to replace the label on the cartridge&#039;s shell, remove the ROMs from the PCB, eventually modify the [[jumper]] configuration, and solder back either original ROMs, or freshly programmed EPROMs or flash containing the new game&#039;s data.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cartridge systems]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=Boot_music&amp;diff=9256</id>
		<title>Boot music</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=Boot_music&amp;diff=9256"/>
		<updated>2026-07-09T06:30:58Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The boot music is the famous jingle played during the [[eyecatcher]] animation on system startup, and often seen again during [[attract sequence]]s.&lt;br /&gt;
&lt;br /&gt;
The special [[68k/Z80 communication|sound code 2]] is used by the animation routine in the [[System ROM]] to request it. It&#039;s up to each game&#039;s [[sound driver]] code to actually play it.&lt;br /&gt;
&lt;br /&gt;
Many games remap and/or add instruments (different instruments in [[Blue&#039;s Journey]], drum loop in [[Neo Bomberman]] for example), but all games seem to use the same exact melody, which was probably SNK&#039;s requirement.&lt;br /&gt;
&lt;br /&gt;
[[File:Ngbootmusic.png]]&lt;br /&gt;
&lt;br /&gt;
The original music is [[YM2610|FM]] only and uses all 4 channels as 2 pairs of &amp;quot;echo&amp;quot; channels (2 melodies only, each being played with a slight delay). It&#039;s played at 192 BPM and uses down to 1/32 notes.&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio system]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=PCM&amp;diff=9255</id>
		<title>PCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=PCM&amp;diff=9255"/>
		<updated>2026-07-09T06:23:11Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ChipInfo&lt;br /&gt;
|picture=crt_pcm.jpg&lt;br /&gt;
|pkg=QFP80R&lt;br /&gt;
|manu=fujitsu&lt;br /&gt;
|date=1990&lt;br /&gt;
|gates=&lt;br /&gt;
|used_on=[[Cartridges]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
PCM (not &amp;quot;&#039;&#039;&#039;NEO&#039;&#039;&#039;-PCM&amp;quot; for some reason) is a {{Chipname|V ROM}} address demultiplexing and data multiplexing chip, found in AES and MVS [[cartridges]], and on SNK crane game boards.&lt;br /&gt;
&lt;br /&gt;
[[Non-PCM games|Early games]] had separate [[YM2610|ADPCM]]-A and ADPCM-B V ROMs. With the PCM chip, SNK devised a way to mix both types in the same ROM chip to save space and reduce costs.&lt;br /&gt;
&lt;br /&gt;
The {{Chipname|NEO-PCM2}} evolution can be found in late cartridges and [[ROM-Only boards|ROM-only]] arcade boards.&lt;br /&gt;
&lt;br /&gt;
=Internal logic=&lt;br /&gt;
&lt;br /&gt;
The data multiplexing trick takes advantage of the predictable access relation between the ADPCM-A and APDCM-B accesses by the {{Chipname|YM2610}} (see [[YM2610 ADPCM bus]]), and a an internal timing counter clocked by {{Sig|68KCLKB|68KCLKB}}.&lt;br /&gt;
&lt;br /&gt;
[[https://github.com/neogeodev/SNKVerilog/tree/master/PCM Verilog definition]].&lt;br /&gt;
&lt;br /&gt;
=Pinout=&lt;br /&gt;
&lt;br /&gt;
{{Pinout|PCM|640}}&lt;br /&gt;
&lt;br /&gt;
*INVIN, INVOUT: Simple inverter&lt;br /&gt;
&lt;br /&gt;
*SDPOE, SDROE, SDPMPX, SDRMPX: from the YM2610&lt;br /&gt;
&lt;br /&gt;
*SDRAD0~SDRAD7: ADPCM-A multiplexed bus part&lt;br /&gt;
*SDPAD0~SDPAD7: ADPCM-B multiplexed bus part&lt;br /&gt;
&lt;br /&gt;
*SDRA8, SDRA9, SDRA20~SDRA23: ADPCM-A address bus&lt;br /&gt;
*SDPA8~SDPA11: ADPCM-B address bus&lt;br /&gt;
&lt;br /&gt;
*V D0~V D7: V ROM(s) data bus&lt;br /&gt;
*V A-1~V A22: V ROM(s) address bus&lt;br /&gt;
** When the MODE pin is low, V A19~V A22 become 4 active-low decoded outputs based on value from the internal V A19 and V A20. &lt;br /&gt;
&lt;br /&gt;
[[Category:Chips]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
	<entry>
		<id>https://wiki.neogeodev.org//index.php?title=V_ROM&amp;diff=9254</id>
		<title>V ROM</title>
		<link rel="alternate" type="text/html" href="https://wiki.neogeodev.org//index.php?title=V_ROM&amp;diff=9254"/>
		<updated>2026-07-09T06:11:18Z</updated>

		<summary type="html">&lt;p&gt;Furrtek: /* Speed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:v_rom.jpg|thumb|right|4MiB V ROM]]&lt;br /&gt;
The &#039;&#039;&#039;V&#039;&#039;&#039;(oice ?) ROMs contain the [[ADPCM]] audio samples in [[cartridges]].&lt;br /&gt;
&lt;br /&gt;
In early games, the ADPCM-A and ADPCM-B data was stored in separate V ROMs. Later, the {{Chipname|PCM}} demultiplexer chip was made to allow both types of data to be mixed in the same ROM(s).&lt;br /&gt;
&lt;br /&gt;
The TC5332204 mask ROMs have a similar pinout to the 27C322 EPROMs. The only difference is that they&#039;re set to byte mode only: half of the data output pins are unused. Pin 30 (Q15) is used as the address lowest bit.&lt;br /&gt;
&lt;br /&gt;
==Speed==&lt;br /&gt;
&lt;br /&gt;
* V A ROMs minimum speed: any will do (&amp;gt;2µs).&lt;br /&gt;
* V B ROMs minimum speed: 250ns (see [[YM2610 ADPCM bus]]).&lt;br /&gt;
&lt;br /&gt;
[[Category:Chips]]&lt;br /&gt;
[[Category:Cartridge systems]]&lt;/div&gt;</summary>
		<author><name>Furrtek</name></author>
	</entry>
</feed>