Memory mapped registers: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
mNo edit summary |
||
Line 27: | Line 27: | ||
|$300081 | |$300081 | ||
|? | |? | ||
|Byte | |Byte | ||
| | |Read only | ||
|? | |? | ||
|? | |? | ||
Line 35: | Line 35: | ||
|REG_SOUND | |REG_SOUND | ||
|Byte | |Byte | ||
| | |[[68k/Z80 communication|Send command to Z80]] | ||
| | |Read Z80 reply code | ||
||[[NEO-D0]] ? | ||[[NEO-D0]] ? | ||
|- | |- | ||
Line 61: | Line 61: | ||
|[[NEO-C1]] | |[[NEO-C1]] | ||
|- | |- | ||
|$ | |$380001 | ||
|? | |||
|Byte | |||
|? | |||
|Joypad ports outputs | |||
{{8BitRegister|?|2|P2 outputs|3|P1 outputs|3}} | |||
MAME select_controller | |||
|[[NEO-D0]] | |||
|- | |||
|$380011 | |||
|? | |? | ||
|Byte | |Byte | ||
|? | |? | ||
| | |Write only, after a write to $3A0019 | ||
|? | |? | ||
|- | |- | ||
Line 75: | Line 84: | ||
|[[NEO-F0]]? | |[[NEO-F0]]? | ||
|- | |- | ||
|$380030 | |$380030(1?) | ||
|? | |? | ||
|Byte | |Byte | ||
|? | |? | ||
|MAME set_output_latch | |MAME set_output_latch (LED marquee ?) | ||
|[[NEO-F0]]? | |[[NEO-F0]]? | ||
|- | |- | ||
|$380040 | |$380040(1?) | ||
|? | |? | ||
|Byte | |Byte | ||
|? | |? | ||
|MAME set_output_data | |MAME set_output_data (LED marquee ?) | ||
|[[NEO-F0]]? | |[[NEO-F0]]? | ||
|- | |- | ||
|$380050 | |$380050(1?) | ||
|? | |? | ||
|Byte | |Byte | ||
|? | |? | ||
|MAME upd4990a_control_16_w | |MAME upd4990a_control_16_w ([[Calendar]]) | ||
|[[NEO-F0]]? | |[[NEO-F0]]? | ||
|- | |- | ||
|$ | |$380061 | ||
|? | |||
|Byte | |||
|? | |||
|Base address for writes (used by the MVS BIOS) | |||
|? | |||
|- | |||
|$380065 | |||
|? | |||
|Byte | |||
|? | |||
|Write only (used by the MVS BIOS) | |||
|? | |||
|- | |||
|$380067 | |||
|? | |? | ||
|Byte | |Byte | ||
|? | |? | ||
| | |Write only (used by the MVS BIOS) | ||
|? | |||
|} | |} | ||
Line 138: | Line 160: | ||
|Use the cart's vector table | |Use the cart's vector table | ||
|- | |- | ||
| | |$3A0005 | ||
| | |REG_CRDUNLOCK1 | ||
| | |Byte | ||
| | |Invalid | ||
| | |Allow /WE to pass through to memory card when low | ||
|- | |||
|$3A0015 | |||
|REG_CRDLOCK1 | |||
|Byte | |||
|Invalid | |||
|Don't allow /WE to pass through to memory card | |||
|- | |||
|$3A0007 | |||
|REG_CRDLOCK2 | |||
|Byte | |||
|Invalid | |||
|Don't allow /WE to pass through to memory card | |||
|- | |||
|$3A0017 | |||
|REG_CRDUNLOCK1 | |||
|Byte | |||
|Invalid | |||
|Allow /WE to pass through to memory card when high | |||
|- | |||
|$3A0009 | |||
|? | |||
|Byte | |||
|Invalid | |||
|? | |||
|- | |||
|$3A0019 | |||
|? | |||
|Byte | |||
|Invalid | |||
|? | |||
|- | |- | ||
|$3A000B | |$3A000B | ||
Line 250: | Line 302: | ||
*$FF011C (word): read: return 0xff | (region_code << 8); | *$FF011C (word): read: return 0xff | (region_code << 8); | ||
*$FF0002 (word) | *$FF0002 (word) | ||
*$FF007E,$ | *$FF007E,$FF008F (word) dma_mode | ||
*$FF0105 (byte) upload_type_w | *$FF0105 (byte) upload_type_w | ||
*$FF0111 (byte) spr_disable | *$FF0111 (byte) spr_disable |
Revision as of 08:20, 23 February 2011
Note: Most of the register names here come from neogeo_spex.pdf
Address | Name | Size | Read | Write | Handled by | ||||||||||||||||||
$300000 | REG_P1CNT | Byte | Player 1 controls (active low)
|
? | NEO-C1 | ||||||||||||||||||
$300001 | REG_DIPSW | Byte | Dipswitches (active low)
|
Kick watchdog | NEO-F0 (read) | ||||||||||||||||||
$300081 | ? | Byte | Read only | ? | ? | ||||||||||||||||||
$320000 | REG_SOUND | Byte | Send command to Z80 | Read Z80 reply code | NEO-D0 ? | ||||||||||||||||||
$320001 | REG_STATUS_A | Byte |
|
? | ? | ||||||||||||||||||
$340000 | REG_P2CNT | Byte | Player 2 controls (active low)
|
? | NEO-C1 | ||||||||||||||||||
$380000 | REG_STATUS_B | Byte |
|
? | NEO-C1 | ||||||||||||||||||
$380001 | ? | Byte | ? | Joypad ports outputs
MAME select_controller |
NEO-D0 | ||||||||||||||||||
$380011 | ? | Byte | ? | Write only, after a write to $3A0019 | ? | ||||||||||||||||||
$380021 | REG_SLOT | Byte | ? |
|
NEO-F0? | ||||||||||||||||||
$380030(1?) | ? | Byte | ? | MAME set_output_latch (LED marquee ?) | NEO-F0? | ||||||||||||||||||
$380040(1?) | ? | Byte | ? | MAME set_output_data (LED marquee ?) | NEO-F0? | ||||||||||||||||||
$380050(1?) | ? | Byte | ? | MAME upd4990a_control_16_w (Calendar) | NEO-F0? | ||||||||||||||||||
$380061 | ? | Byte | ? | Base address for writes (used by the MVS BIOS) | ? | ||||||||||||||||||
$380065 | ? | Byte | ? | Write only (used by the MVS BIOS) | ? | ||||||||||||||||||
$380067 | ? | Byte | ? | Write only (used by the MVS BIOS) | ? |
System registers, handled by a 74HC259 adressable latch.
Address | Name | Size | Read | Write |
$3A0001 | REG_DISPENABL | Byte | Invalid | Normal video output |
$3A0011 | REG_DISPDSABL | Byte | Invalid | Darken video output |
$3A0003 | ? | Byte | Invalid | Use the BIOS vector table |
$3A0013 | REG_SWPROM | Byte | Invalid | Use the cart's vector table |
$3A0005 | REG_CRDUNLOCK1 | Byte | Invalid | Allow /WE to pass through to memory card when low |
$3A0015 | REG_CRDLOCK1 | Byte | Invalid | Don't allow /WE to pass through to memory card |
$3A0007 | REG_CRDLOCK2 | Byte | Invalid | Don't allow /WE to pass through to memory card |
$3A0017 | REG_CRDUNLOCK1 | Byte | Invalid | Allow /WE to pass through to memory card when high |
$3A0009 | ? | Byte | Invalid | ? |
$3A0019 | ? | Byte | Invalid | ? |
$3A000B | REG_BRDFIX | Byte | Invalid | Use the embeded fix tileset (SFIX) |
$3A001B | REG_CRTFIX | Byte | Invalid | Use the cart's fix tileset |
$3A000D | REG_SRAMLOCK | Byte | Invalid | Write-protects the SRAM (MVS) |
$3A001D | REG_SRAMULOCK | Byte | Invalid | Unprotects SRAM (MVS) |
$3A000F | REG_PALBANK1 | Byte | Invalid | Use palette bank 1 |
$3A001F | REG_PALBANK0 | Byte | Invalid | Use palette bank 0 |
Video related registers, probably handled by the LSPC chips.
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 | Word | REG_VRAMMOD | Reads VRAM address modulo | Sets VRAM address modulo (signed) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$3C0006 | REG_HBLANKCNT | Word |
Line counter: (diagram needed) |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$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 only (from NeoCD's source)
- $FF011C (word): read: return 0xff | (region_code << 8);
- $FF0002 (word)
- $FF007E,$FF008F (word) dma_mode
- $FF0105 (byte) upload_type_w
- $FF0111 (byte) spr_disable
- $FF0115 (byte) fix_disable
- $FF0119 (byte) video_enable
- $FF016F (byte) disable_irq_w
- $FF0183 (byte) z80_enable