Memory mapped registers: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
mNo edit summary |
||
Line 356: | Line 356: | ||
|Byte | |Byte | ||
|? | |? | ||
| | |Enable/disable sprites | ||
| | |rowspan="3"|[[NEO-GRC]]/[[NEO-OFC]] | ||
|- | |- | ||
|$FF0115 | |$FF0115 | ||
Line 363: | Line 363: | ||
|Byte | |Byte | ||
|? | |? | ||
| | |Enable/disable fix layer | ||
|- | |- | ||
|$FF0119 | |$FF0119 | ||
Line 370: | Line 369: | ||
|Byte | |Byte | ||
|? | |? | ||
| | |Enable/disable video output | ||
|- | |- | ||
|$FF011C | |$FF011C | ||
|? | |? | ||
|Word | |Word | ||
|4 | |{{16BitRegister|1|2|0|1|CD lid switch|1|Configuration jumpers|4|?|8}} | ||
| | |||
|? | |? | ||
|[[NEO-CDD boards|NEO-CDD board]] | |||
|- | |- | ||
|$FF0121 | |$FF0121 | ||
Line 384: | Line 382: | ||
|rowspan="8"|Byte | |rowspan="8"|Byte | ||
| | | | ||
| | |Route [[68k memory map|upload zone]] to SPR [[DRAM]] | ||
|rowspan="8"|? | |rowspan="8"|? | ||
|- | |- | ||
Line 390: | Line 388: | ||
|REG_UPMAPPCM | |REG_UPMAPPCM | ||
| | | | ||
| | |Route upload zone to PCM DRAM | ||
|- | |- | ||
|$FF0127 | |$FF0127 | ||
|REG_UPMAPZ80 | |REG_UPMAPZ80 | ||
| | | | ||
| | |Route upload zone to Z80 DRAM | ||
|- | |- | ||
|$FF0129 | |$FF0129 | ||
|REG_UPMAPFIX | |REG_UPMAPFIX | ||
| | | | ||
| | |Route upload zone to FIX DRAM | ||
|- | |- | ||
|$FF0141 | |$FF0141 | ||
|REG_UPUNMAPSPR | |REG_UPUNMAPSPR | ||
| | | | ||
| | |Unroute SPR DRAM to upload zone | ||
|- | |- | ||
|$FF0143 | |$FF0143 | ||
|REG_UPUNMAPPCM | |REG_UPUNMAPPCM | ||
| | | | ||
| | |Unroute PCM DRAM to upload zone | ||
|- | |- | ||
|$FF0147 | |$FF0147 | ||
|REG_UPUNMAPZ80 | |REG_UPUNMAPZ80 | ||
| | | | ||
| | |Unroute Z80 DRAM to upload zone | ||
|- | |- | ||
|$FF0149 | |$FF0149 | ||
|REG_UPUNMAPFIX | |REG_UPUNMAPFIX | ||
| | | | ||
| | |Unroute FIX DRAM to upload zone | ||
|- | |- | ||
|$FF016F | |$FF016F | ||
Line 426: | Line 424: | ||
|Byte | |Byte | ||
|? | |? | ||
| | |Disable/enable interrupts | ||
|? | |? | ||
|- | |- | ||
Line 433: | Line 431: | ||
|Byte | |Byte | ||
|? | |? | ||
| | |Enable/disable(reset) Z80 | ||
|? | |? | ||
|- | |- | ||
Line 440: | Line 438: | ||
|rowspan="2"|Word | |rowspan="2"|Word | ||
|rowspan="2"|See [[Reading CDDA sound levels]] | |rowspan="2"|See [[Reading CDDA sound levels]] | ||
|? | |rowspan="2"|? | ||
|rowspan="2"|[[NEO-MGA]] | |rowspan="2"|[[NEO-MGA]] | ||
|- | |- | ||
|$FF018A | |$FF018A | ||
|REG_CDDARIGHTL | |REG_CDDARIGHTL | ||
|- | |- | ||
|$FF01A1 | |$FF01A1 | ||
Line 451: | Line 448: | ||
|Byte | |Byte | ||
|? | |? | ||
| | |Upload zone 1MiB SPR DRAM bank selection | ||
|? | |? | ||
|- | |- | ||
Line 458: | Line 455: | ||
|Byte | |Byte | ||
|? | |? | ||
| | |Upload zone 1MiB PCM DRAM bank selection | ||
|? | |? | ||
|- | |- |
Revision as of 01:22, 5 April 2011
Note: Most of the register names come from neogeo_spex.pdf
I/O registers
Always read/written as bytes (?)
Address | Name | Read | Write | Handled by | ||||||||||||||||||
$300000 | REG_P1CNT | Player 1 controls (active low)
|
? | NEO-C1 | ||||||||||||||||||
$300001 | REG_DIPSW | Dipswitches (active low)
|
Kick watchdog | NEO-F0 (read) | ||||||||||||||||||
$300081 | ? | Read only | ? | ? | ||||||||||||||||||
$320000 | REG_SOUND | Send command to Z80 | Read Z80 reply code | NEO-D0 ? | ||||||||||||||||||
$320001 | REG_STATUS_A |
|
? | ? | ||||||||||||||||||
$340000 | REG_P2CNT | Player 2 controls (active low)
|
? | NEO-C1 | ||||||||||||||||||
$380000 | REG_STATUS_B |
|
? | NEO-C1 | ||||||||||||||||||
$380001 | REG_POUTPUT | ? | Joypad ports outputs
MAME select_controller |
NEO-D0 | ||||||||||||||||||
$380011 | ? | ? | Write only, after a write to $3A0019 | ? | ||||||||||||||||||
$380021 | REG_SLOT | ? |
|
NEO-F0? | ||||||||||||||||||
$380030(1?) | ? | ? | MAME set_output_latch (LED marquee ?) | NEO-F0? | ||||||||||||||||||
$380040(1?) | ? | ? | MAME set_output_data (LED marquee ?) | NEO-F0? | ||||||||||||||||||
$380050(1?) | ? | ? | MAME upd4990a_control_16_w (Calendar) | NEO-F0? | ||||||||||||||||||
$380061 | ? | ? | Base address for writes (used by the MVS BIOS) | ? | ||||||||||||||||||
$380065 | ? | ? | Write only (used by the MVS BIOS) | ? | ||||||||||||||||||
$380067 | ? | ? | Write only (used by the MVS BIOS) | ? |
System registers
Handled by a 74HC259 adressable latch on cart systems. Byte writes only.
Address | Name | Write |
$3A0001 | REG_DISPENABL | Normal video output |
$3A0011 | REG_DISPDSABL | Darken video output |
$3A0003 | ? | Use the BIOS vector table |
$3A0013 | REG_SWPROM | Use the cart's vector table |
$3A0005 | REG_CRDUNLOCK1 | Allow /WE to pass through to memory card when low |
$3A0015 | REG_CRDLOCK1 | Don't allow /WE to pass through to memory card |
$3A0007 | REG_CRDLOCK2 | Don't allow /WE to pass through to memory card |
$3A0017 | REG_CRDUNLOCK1 | Allow /WE to pass through to memory card when high |
$3A0009 | ? | ? |
$3A0019 | ? | ? |
$3A000B | REG_BRDFIX | Use the embeded fix tileset (SFIX) |
$3A001B | REG_CRTFIX | Use the cart's fix tileset |
$3A000D | REG_SRAMLOCK | Write-protects SRAM (MVS) |
$3A001D | REG_SRAMULOCK | Unprotects SRAM (MVS) |
$3A000F | REG_PALBANK1 | Use palette bank 1 |
$3A001F | REG_PALBANK0 | Use palette bank 0 |
Video registers
Handled by the GPUs.
Address | Name | Size | Read | Write | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$3C0000 | REG_VRAMADDR | Word | Read VRAM (address isn't changed) | Sets VRAM address | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$3C0002 | REG_VRAMRW | Word | Read VRAM (address isn't changed) | Write VRAM | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$3C0004 | REG_VRAMMOD | Word | Reads VRAM address modulo | Sets VRAM address modulo (signed) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$3C0006 | REG_HBLANKCNT | Word |
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$3C0008 | REG_HBLANKPOS | Word | Invalid | MSB of RLI position (number of pixels) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$3C000A | ? | Word | Invalid | LSB of RLI position (number of pixels) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$3C000C | REG_IRQACK | Byte | Invalid | Interrupt Acknowledge.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$3C000E
$3C000F |
? | ? | Some emulators treat these locations like $3C000A. |
NeoGeo CD registers
Address | Name | Size | Read | Write | Handled by | ||||||||||||||||||||||||||||||||||
$FF0002 | ? | Word | ? | NeoRaine load_files | ? | ||||||||||||||||||||||||||||||||||
$FF0004 | ? | Word | ? | CDM3-2 BIOS writes 0,1,3,7 | ? | ||||||||||||||||||||||||||||||||||
$FF000E | ? | Byte | ? | CDM3-2 BIOS writes $3F,$3C | ? | ||||||||||||||||||||||||||||||||||
$FF000F | ? | Byte | ? | CDM3-2 BIOS writes $20,$10,$08,$04 | ? | ||||||||||||||||||||||||||||||||||
$FF0011 | ? | Byte | ? | CDM3-2 BIOS writes $FE | ? | ||||||||||||||||||||||||||||||||||
$FF0017 | ? | Byte | CDM3-2 BIOS read/writes bit 0 | ? | |||||||||||||||||||||||||||||||||||
$FF0061 | ? | Byte | ? | Bit4: Run microcode ? | LC8953 | ||||||||||||||||||||||||||||||||||
$FF0064~$FF0070 | ? | (Long)words | ? | Registers used by microcode (NeoRaine upload_param) | |||||||||||||||||||||||||||||||||||
$FF007E~$FF008F | ? | Words | ? | Microcode (16x9bit instructions ?) | |||||||||||||||||||||||||||||||||||
$FF0101 | ? | Byte | ? | CDM3-2 BIOS writes low nibble | ? | ||||||||||||||||||||||||||||||||||
$FF0103 | ? | Byte | CDM3-2 BIOS: sequential read/writes | ? | |||||||||||||||||||||||||||||||||||
$FF0105 | ? | Byte | ? | upload_type_w | ? | ||||||||||||||||||||||||||||||||||
$FF0108 | ? | Word | ? | CDM3-2 BIOS writes $5555 | ? | ||||||||||||||||||||||||||||||||||
$FF010C | ? | Word | ? | CDM3-2 BIOS writes $5555 and reads | ? | ||||||||||||||||||||||||||||||||||
$FF0111 | ? | Byte | ? | Enable/disable sprites | NEO-GRC/NEO-OFC | ||||||||||||||||||||||||||||||||||
$FF0115 | ? | Byte | ? | Enable/disable fix layer | |||||||||||||||||||||||||||||||||||
$FF0119 | ? | Byte | ? | Enable/disable video output | |||||||||||||||||||||||||||||||||||
$FF011C | ? | Word |
|
? | NEO-CDD board | ||||||||||||||||||||||||||||||||||
$FF0121 | REG_UPMAPSPR | Byte | Route upload zone to SPR DRAM | ? | |||||||||||||||||||||||||||||||||||
$FF0123 | REG_UPMAPPCM | Route upload zone to PCM DRAM | |||||||||||||||||||||||||||||||||||||
$FF0127 | REG_UPMAPZ80 | Route upload zone to Z80 DRAM | |||||||||||||||||||||||||||||||||||||
$FF0129 | REG_UPMAPFIX | Route upload zone to FIX DRAM | |||||||||||||||||||||||||||||||||||||
$FF0141 | REG_UPUNMAPSPR | Unroute SPR DRAM to upload zone | |||||||||||||||||||||||||||||||||||||
$FF0143 | REG_UPUNMAPPCM | Unroute PCM DRAM to upload zone | |||||||||||||||||||||||||||||||||||||
$FF0147 | REG_UPUNMAPZ80 | Unroute Z80 DRAM to upload zone | |||||||||||||||||||||||||||||||||||||
$FF0149 | REG_UPUNMAPFIX | Unroute FIX DRAM to upload zone | |||||||||||||||||||||||||||||||||||||
$FF016F | ? | Byte | ? | Disable/enable interrupts | ? | ||||||||||||||||||||||||||||||||||
$FF0183 | ? | Byte | ? | Enable/disable(reset) Z80 | ? | ||||||||||||||||||||||||||||||||||
$FF0188 | REG_CDDALEFTL | Word | See Reading CDDA sound levels | ? | NEO-MGA | ||||||||||||||||||||||||||||||||||
$FF018A | REG_CDDARIGHTL | ||||||||||||||||||||||||||||||||||||||
$FF01A1 | ? | Byte | ? | Upload zone 1MiB SPR DRAM bank selection | ? | ||||||||||||||||||||||||||||||||||
$FF01A3 | ? | Byte | ? | Upload zone 1MiB PCM DRAM bank selection | ? | ||||||||||||||||||||||||||||||||||
$FF01A7 | ? | Byte | ? | CDM3-2 BIOS writes | ? |