Memory mapped registers: Difference between revisions
Jump to navigation
Jump to search
m (→I/O registers) |
(Add some IO reg) |
||
| Line 110: | Line 110: | ||
|? | |? | ||
|Write only (used by the MVS BIOS) | |Write only (used by the MVS BIOS) | ||
|? | |||
|- | |||
|$3A0001 | |||
|REG_DISPENABL | |||
|? | |||
|Enable display | |||
|? | |||
|- | |||
|$3A0003 | |||
|REG_SWPBIOS | |||
|? | |||
|Select the bios vector table | |||
|? | |||
|- | |||
|$3A0005 | |||
|? | |||
|? | |||
|Write only (used by the MVS BIOS) | |||
|? | |||
|- | |||
|$3A0007 | |||
|? | |||
|? | |||
|Write only (used by the MVS BIOS) | |||
|? | |||
|- | |||
|$3A000A | |||
|REG_BRDFIX | |||
|? | |||
|Select board fix rom | |||
|? | |||
|- | |||
|$3A000C | |||
|REG_SRAMLOCK | |||
|? | |||
|Lock the SRAM | |||
|? | |||
|- | |||
|$3A000E | |||
|REG_PALBANK1 | |||
|? | |||
|Select the bank 1 of palette ram | |||
|? | |||
|- | |||
|$3A0011 | |||
|REG_DISPDSABL | |||
|? | |||
|Disable display | |||
|? | |||
|- | |||
|$3A0013 | |||
|REG_SWPROM | |||
|? | |||
|Select the game vector table | |||
|? | |||
|- | |||
|$3A0015 | |||
|? | |||
|? | |||
|Write only (used by the MVS BIOS) | |||
|? | |||
|- | |||
|$3A0017 | |||
|? | |||
|? | |||
|Write only (used by the MVS BIOS) | |||
|? | |||
|- | |||
|$3A0019 | |||
|? | |||
|? | |||
|Write only (used by the MVS BIOS) | |||
|? | |||
|- | |||
|$3A001A | |||
|REG_CRTFIX | |||
|? | |||
|Select game fix rom | |||
|? | |||
|- | |||
|$3A001C | |||
|REG_SRAMUNLOCK | |||
|? | |||
|Unlock the SRAM | |||
|? | |||
|- | |||
|$3A001E | |||
|REG_PALBANK0 | |||
|? | |||
|Select the bank 0 of palette ram | |||
|? | |? | ||
|} | |} | ||
Revision as of 00:37, 12 May 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) | ? | ||||||||||||||||||
| $3A0001 | REG_DISPENABL | ? | Enable display | ? | ||||||||||||||||||
| $3A0003 | REG_SWPBIOS | ? | Select the bios vector table | ? | ||||||||||||||||||
| $3A0005 | ? | ? | Write only (used by the MVS BIOS) | ? | ||||||||||||||||||
| $3A0007 | ? | ? | Write only (used by the MVS BIOS) | ? | ||||||||||||||||||
| $3A000A | REG_BRDFIX | ? | Select board fix rom | ? | ||||||||||||||||||
| $3A000C | REG_SRAMLOCK | ? | Lock the SRAM | ? | ||||||||||||||||||
| $3A000E | REG_PALBANK1 | ? | Select the bank 1 of palette ram | ? | ||||||||||||||||||
| $3A0011 | REG_DISPDSABL | ? | Disable display | ? | ||||||||||||||||||
| $3A0013 | REG_SWPROM | ? | Select the game vector table | ? | ||||||||||||||||||
| $3A0015 | ? | ? | Write only (used by the MVS BIOS) | ? | ||||||||||||||||||
| $3A0017 | ? | ? | Write only (used by the MVS BIOS) | ? | ||||||||||||||||||
| $3A0019 | ? | ? | Write only (used by the MVS BIOS) | ? | ||||||||||||||||||
| $3A001A | REG_CRTFIX | ? | Select game fix rom | ? | ||||||||||||||||||
| $3A001C | REG_SRAMUNLOCK | ? | Unlock the SRAM | ? | ||||||||||||||||||
| $3A001E | REG_PALBANK0 | ? | Select the bank 0 of palette ram | ? | ||||||||||||||||||
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 | Enable writes to memory card (use REG_CRDUNLOCK2 too) |
| $3A0015 | REG_CRDLOCK1 | Disable writes to memory card |
| $3A0007 | REG_CRDLOCK2 | Disable writes to memory card |
| $3A0017 | REG_CRDUNLOCK2 | Enable writes to memory card (use REG_CRDUNLOCK1 too) |
| $3A0009 | ? | ? |
| $3A0019 | ? | ? |
| $3A000B | REG_BRDFIX | Use the embedded SFIX and SM1 ROM |
| $3A001B | REG_CRTFIX | Use the cart's S ROM and M ROM |
| $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 | REG_DISBLSPR | Byte | ? | Disable/enable sprites | NEO-GRC/NEO-OFC | ||||||||||||||||||||||||||||||||||
| $FF0115 | REG_DISBLFIX | Byte | ? | Disable/enable fix layer | |||||||||||||||||||||||||||||||||||
| $FF0119 | REG_ENVIDEO | Byte | ? | Enable/disable video output | |||||||||||||||||||||||||||||||||||
| $FF011C | REG_CDCONFIG | Word |
|
? | NEO-CDD board | ||||||||||||||||||||||||||||||||||
| $FF0121 | REG_UPMAPSPR | Byte | ? | Set upload zone to SPR DRAM | ? | ||||||||||||||||||||||||||||||||||
| $FF0123 | REG_UPMAPPCM | Set upload zone to PCM DRAM | |||||||||||||||||||||||||||||||||||||
| $FF0127 | REG_UPMAPZ80 | Set upload zone to Z80 DRAM | |||||||||||||||||||||||||||||||||||||
| $FF0129 | REG_UPMAPFIX | Set upload zone to FIX DRAM | |||||||||||||||||||||||||||||||||||||
| $FF0141 | REG_UPUNMAPSPR | Unset SPR DRAM to upload zone | |||||||||||||||||||||||||||||||||||||
| $FF0143 | REG_UPUNMAPPCM | Unset PCM DRAM to upload zone | |||||||||||||||||||||||||||||||||||||
| $FF0147 | REG_UPUNMAPZ80 | Unset Z80 DRAM to upload zone | |||||||||||||||||||||||||||||||||||||
| $FF0149 | REG_UPUNMAPFIX | Unset FIX DRAM to upload zone | |||||||||||||||||||||||||||||||||||||
| $FF016F | REG_DISBLIRQ | Byte | ? | Disable/enable interrupts | ? | ||||||||||||||||||||||||||||||||||
| $FF0183 | REG_ENZ80 | 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 | ? | ||||||||||||||||||||||||||||||||||
| $FF01FC | ? | Word | ? | CDDA control ? | ? | ||||||||||||||||||||||||||||||||||
| $FF01FE | ? | Word | ? | CD DA/data switch ? | ? | ||||||||||||||||||||||||||||||||||