	NEOGEO POCKET TECHNICAL DOCUMENTATION 1.1
	By Gollum (c) 2000 Emu5ever

Specs :
-----
- 16-bit CPU TOSHIBA TLCS-900h at 6.144 Mhz
- 8-bit CPU Z80 for sound at 3.072 Mhz
- Screen size is 160x152 pixels
- Two virtual screens with scrolling
- 64 sprites/frame
- 4 colors/sprite and 4 colors/tile (including transparency color)
- 48 palettes (16 for sprites, 16 for first screen and 16 for second screen)
- There are 146 colors possible out of 4096 (colors in 444 RGB format)

Memory Map :
----------

000000 -> 000100 CPU Internal RAM (Timers/DMA/Z80)
000000 -> 006FFF CPU Work RAM
007000 -> 007FFF Sound RAM
008000 -> 00BFFF Video RAM
200000 -> 3FFFFF ROM (GAME CARTRIDGE)
800000 -> 9FFFFF Extra ROM (32 Mbit games)
FF0000 -> FFFFFF NEOGEO POCKET BIOS (64 Ko)

Interesting Memory Locations :
----------------------------

6F82         : Controller Status Byte
6F87 	     : Language
		0 = Japanese
		1 = English
6F91 	     : Color Mode Selection
		00 = Neogeo Pocket Classic (Black & White)
		10 = Neogeo Pocket Color
6FB8 -> 6FFF : Interrupt Address Table
8000 	     : Frame #0 Priority Register
8002 	     : X Start
8003 	     : Y Start
8004 	     : X Size (usually A0 = 160)
8005 	     : Y Size (usually 98 = 152)
8009         : Current Y line
8020	     : Sprite Plane Scroll X
8021	     : Sprite Plane Scroll Y
8030         : Frame #1 Priority Register
8032	     : Frame #0 Scroll X
8033	     : Frame #0 Scroll Y
8034	     : Frame #1 Scroll X
8035	     : Frame #1 Scroll Y
8100 -> 8117 : Palette Table for Black&White games
8118	     : Background Selection Register
8200 -> 827F : Sprite Palette Table
		16 palettes * 4 colors x 2 bytes
		R=G=B=0..15 (4 bits)
		1st byte = GB
		2nd byte = 0R
8280 -> 82FF : Foreground Palette Table
		see Sprite Palette Table
8300 -> 837F : Background Palette Table
		see Background Palette Table
8800 -> 88FF : Sprites
		64 sprites x 4 bytes
		1st byte TTTTTTTT
		2nd byte HVBPPPPT
			H=horizontal flipping (1 bit)
			V=vertical flipping (1 bit)
			B=palette selection for Black&White games
			P=palette number (0..15) (4 bits)
			T=tile number into pattern table (9 bits)
		3rd byte = x position
		4th byte = y position			
8C00 -> 8C3F : Sprites Palette Numbers
		64 sprites x 1 byte
9000 -> 97FF : Frame #0 Map
		32 tiles x 20 tiles
		1 tile=2 bytes
		1st byte TTTTTTTT
		2nd byte HVBPPPPT
			H=horizontal flipping (1 bit)
			V=vertical flipping (1 bit)
			B=palette selection for Black&White games
			P=palette number (0..15) (4 bits)
			T=tile number into pattern table (9 bits)
9800 -> 9FFF : Frame #1 Map
		32 tiles x 20 tiles
		1 tile=2 bytes
		1st byte TTTTTTTT
		2nd byte HVBPPPPT
			H=horizontal flipping (1 bit)
			V=vertical flipping (1 bit)
			B=palette selection for Black&White games
			P=palette number (0..15) (4 bits)
			T=tile number into pattern table (9 bits)
A000 -> BFFF : Pattern Table
		1 tile=8x8 pixels=16 bytes
		1 byte=4 pixels
		2 bits=colour (0..3)
		bits order : 10 32 54 76


Greets to Judge (Rape!) for some additions/corrections.