NeoGeoPM.pdf

(287 KB) Pobierz
Neo-Geo Programming
Manual
check regularly http://groups.yahoo.com/group/ngdev for updates.
This version is unfinished and has some known and of course
unknown errors. It was published in this early state to encourage
interested developers in Neo-Geo programming.
Author: Alexander Stante (aka Pa-Pa-Panic!! / Mr.Pac)
email: alexander.stante@web.de
1009232284.001.png 1009232284.002.png
 
2
Table of Contents
1 Introduction..................................................................................................................................... 3
1.1 Legal Notice...............................................................................................................................3
1.2 A short Overview.......................................................................................................................3
1.3 Revision History........................................................................................................................3
2 The Neo-Geo System....................................................................................................................... 4
2.1 System Overview.......................................................................................................................4
2.2 NEOGEO CPU's........................................................................................................................4
2.2.1 Motorola MC68000 - The Main CPU................................................................................4
2.2.2 Zilog Z80 - Sound CPU.....................................................................................................5
2.3 Memory......................................................................................................................................5
2.4 Display.......................................................................................................................................5
2.5 Operation................................................................................................................................... 5
2.6 Sound.........................................................................................................................................5
2.7 Other Devices............................................................................................................................ 6
3 Memory.............................................................................................................................................7
3.1 Overall Memory Map MC68000...............................................................................................7
3.2 Overall Memory Map Z80.........................................................................................................9
4 Graphics System............................................................................................................................ 11
4.1 Fix Layer..................................................................................................................................11
4.1.1 Fix Layer Map..................................................................................................................11
4.1.2 Fix Layer Data Format.....................................................................................................12
4.1.3 Fix Layer Character Set....................................................................................................12
4.2 Sprites......................................................................................................................................12
4.3 Color Palettes...........................................................................................................................14
4.3.1 Color Palette RAM...........................................................................................................14
4.3.2 Color Palette Banking......................................................................................................14
4.3.3 Color Data Format............................................................................................................14
5 Memory-Mapped Registers.......................................................................................................... 15
6 NEOGEO System Calls.................................................................................................................23
7 Sound.............................................................................................................................................. 24
1 Introduction
The idea for this document came across after trying to write some line of code for the Neo-Geo. In
comparison to the Nintendo Game Boy Advance (GBA) there is almost no detailed information
about the Neo-Geo hardware available and development tools are also rare to find. Furthermore, I
have also the plan to release some develpment software for the Neo-Geo and therefore I thought that
it could be usefull to collect some informations about the hardware in one document.
The design of the document is inspired from the "CowBite Virtual Hardware Specification" for the
GBA. If you are looking for some NEOGEO programming tutorials you are currently wrong here.
This document is a reference manual, but maybe I will add some tutorial in future.
I am a newbie in NEOGEO programming and this is my first project where I collect some
informations and do some reverse engineering. It is quite possible that the document is full of errors,
because I havn't tested everything in this document and I also added conclusions which only base on
intuition :) I am also allways busiy so I don't have to much time to spend working on this document.
If you have found some errors, typos or missing stuff, don't hesitate to pa_pa_panic@yahoo.com
1.1 Legal Notice
NEOGEO is a registred trademark of SNK PLAYMORE CORPORATION. Some informations of
this document are from the MAME source although the comments are a bit frugal used along the
source.
1.2 A short Overview
The NEOGEO is a quite interesting architechture. It consists of a Motorola MC68000 main CPU
and a Z80 for sound. Like many 2D (arcade) machines the graphics hardware is tile based to save
ROM space and to support hardware manipulation of the 2d entities. The Z80 is connected with a
YM2610 sound chip to produce sound. The MC68000 communicates throug a Memory Mapped I/O
register with the Z80. As far as my observations go, the MC68000 just says what soundtrack or
sample should be played, the rest is handled by the Z80.
Another interesting aspect is the memory layout of the NEOGEO. The MC68000 has only acceess
to the program roms (with use of bankswitching of course), the working RAM and some other
regions which are shown in the Memory section of this document. The whole character data
(graphic) is not visible for the MC68000. Only the graphics system has access to this one, so you
cannot manipulate the graphics itself. The same counts for the sounds roms. The main CPU has no
access to this roms, only the Z80 has. This distributed memory layout is the reason that the
NEOGEO roms can be so huge although the main CPU has only a 24 bit wide address bus.
1.3 Revision History
2 The Neo-Geo System
2.1 System Overview
The NEOGEO is a gaming platform with propably the highest installation base in arcades ever.
Furthermore there is also a home consumer version of the NEOGEO. Through this document the
arcade version of the NEOGEO will be refered as MVS and the home consumer versions as NGH.
Due the different requirements of arcades and in order to reduce production costs there are many
different versions of the MVS available. The following table gives you a short overview about the
currently known versions of the MVS with some detailed information follows:
•NEOGEO MV-1
•NEOGEO MV-1A
•NEOGEO MV-1B
•NEOGEO MV-1C
•NEOGEO MV-1F
•NEOGEO MV-1FZ
•NEOGEO MV-2F
•NEOGEO MV-4F
•NEOGEO MV-6F
•1.2 NEOGEO CPU's
2.2 NEOGEO CPU's
As you propably already know, the NEOGEO has two CPU's. One is the Motorola MC68000, the
other one is the Zilog Z80. In this section I want to give you a short overview about the two CPU's.
Usually the MC68000 is the important part, even SNK PLAYMORE does not write new Z80 code
for every new game. I don't want to give you an introduction about how to program this CPU's
because this is out of the scope of this document. If you want to learn programming these CPU's I
suggest buying a book or looking for some documents about it on the Internet.
2.2.1 Motorola MC68000 - The Main CPU
The Neo-Geo uses a MC68000 which runs at a clock speed of 12Mhz. Now I list some features
about the CPU found on motorolas website:
32 Bit Data and Address Registers
16 MByte Direct Addressing Range
56 Powerful Instructions
2.2 NEOGEO CPU's
5
Memory Mapped Input/Output
14 Addressing Modes
2 MIPS at 20MHz
The CPU is a CISC (Complex Instruction Set Computers) architecture.
2.2.2 Zilog Z80 - Sound CPU
The other CPU in the Neo-Geo is the Z80. It is a 8bit processor and runs at a clock speed of 4Mhz.
More will be added soon! Currently I focus on the rest of the hardware and writing development
tools
2.3 Memory
System ROM 128 Kbytes (including System Fix ROM)
Working RAM 64 Kbytes
VRAM 64 Kbytes (propably even a little bit more, some research needed)
Palette RAM 8192 Kbytes (the exact number of colors seems to be 4096 (bankswitching?))
Program ROM 5 Mbytes (1 Mbyte + 4 Mbytes bankswitchable ROM)
Character ROM 64 Mbytes (8 x 8 Mbytes ROM)
Sound ROM 16 Mbytes (4 x 4 Mbytes ROM)
Fix ROM 4 Mbytes? 16 bit index and propably 64 bytes per tile.
2.4 Display
It seems that the NEOGEO supports two resolution modes, one is 320 x 224 and the other is 304 x
224 (garou?). The graphics processing circuit supports 384 hardware rendered sprites from a size of
16x16 to 16x512 (it is not accurate, theoretically it should be more pixels in width because you can
join the many 16 pixel width sprites together). This sprites are also able to be hardware scaled.
Contrary to common claim the NEOGEO does not support zooming. The often noticed zoom effect
is in fact a big sprite which is scaled. Additionally to this moveable sprites the NEOGEO does
support a fix layer which is a layer where tiles can be aligned in a fixed grid. This layer is often used
for game status informations like available credits and on-screen game informations like health,
time and so on.
2.5 Operation
The NEOGEO has two joystick inputs with both stick having A, B, C, D, START, SELECT
(COIN), and Direction Stick.
2.6 Sound
The sound part of the NEOGEO consists of a Z80 which is running some kind of sound driver. The
Zgłoś jeśli naruszono regulamin