Memory mapped registers: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
mNo edit summary |
||
Line 1: | Line 1: | ||
Note: Most of the register names | Note: Most of the register names come from neogeo_spex.pdf | ||
=Common registers= | |||
==I/O registers== | |||
{| class="regdef" | {| class="regdef" | ||
|'''Address''' | |'''Address''' | ||
Line 128: | Line 130: | ||
System registers | ==System registers== | ||
Handled by a 74HC259 adressable latch. | |||
{| class="regdef" | {| class="regdef" | ||
|'''Address''' | |'''Address''' | ||
Line 234: | Line 237: | ||
Video | ==Video registers== | ||
Probably handled by the [[LSPC2-A2|LSPC]] chips. | |||
{| class="regdef" | {| class="regdef" | ||
|'''Address''' | |'''Address''' | ||
Line 275: | Line 279: | ||
|Word | |Word | ||
|Invalid | |Invalid | ||
|MSB of RLI position (number of pixels) | |MSB of [[68k interrupts|RLI]] position (number of pixels) | ||
|- | |- | ||
|$3C000A | |$3C000A | ||
Line 297: | Line 301: | ||
|} | |} | ||
=NeoGeo CD only (from NeoCD's source)= | |||
[[NEO-MGA]] / [[LC8953]] ? | [[NEO-MGA]] / [[LC8953]] ? | ||
{| class="regdef" | |||
|'''Address''' | |||
|'''Name''' | |||
|'''Size''' | |||
|'''Read''' | |||
|'''Write''' | |||
|'''Handled by''' | |||
|- | |||
|$FF0002 | |||
|? | |||
|Word | |||
|? | |||
|? | |||
|rowspan="9"|? | |||
|- | |||
|$FF007E~$FF008F | |||
|? | |||
|Word | |||
|? | |||
|dma_mode | |||
|- | |||
|$FF0105 | |||
|? | |||
|Byte | |||
|? | |||
|upload_type_w | |||
|- | |||
|$FF0111 | |||
|? | |||
|Byte | |||
|? | |||
|spr_disable | |||
|- | |||
|$FF0115 | |||
|? | |||
|Byte | |||
|? | |||
|fix_disable | |||
|- | |||
|$FF0119 | |||
|? | |||
|Byte | |||
|? | |||
|video_enable | |||
|- | |||
|$FF011C | |||
|? | |||
|Word | |||
|region_code, 0xFF | |||
|? | |||
|- | |||
|$FF016F | |||
|? | |||
|Byte | |||
|? | |||
|disable_irq_w | |||
|- | |||
|$FF0183 | |||
|? | |||
|Byte | |||
|? | |||
|z80_enable | |||
|- | |||
|$FF0188 | |||
|? | |||
|Word | |||
|[[Reading CDDA sound data|CDDA_LEFTSTREAM]] | |||
|? | |||
|rowspan="2"|[[NEO-MGA]] | |||
|- | |||
|$FF018A | |||
|? | |||
|Word | |||
|[[Reading CDDA sound data|CDDA_RIGHTSTREAM]] | |||
|? | |||
|} | |||
[[Category:CPUs]] | [[Category:CPUs]] | ||
[[Category:Code]] | [[Category:Code]] |
Revision as of 21:20, 6 March 2011
Note: Most of the register names come from neogeo_spex.pdf
Common registers
I/O registers
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 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)
Address | Name | Size | Read | Write | Handled by |
$FF0002 | ? | Word | ? | ? | ? |
$FF007E~$FF008F | ? | Word | ? | dma_mode | |
$FF0105 | ? | Byte | ? | upload_type_w | |
$FF0111 | ? | Byte | ? | spr_disable | |
$FF0115 | ? | Byte | ? | fix_disable | |
$FF0119 | ? | Byte | ? | video_enable | |
$FF011C | ? | Word | region_code, 0xFF | ? | |
$FF016F | ? | Byte | ? | disable_irq_w | |
$FF0183 | ? | Byte | ? | z80_enable | |
$FF0188 | ? | Word | CDDA_LEFTSTREAM | ? | NEO-MGA |
$FF018A | ? | Word | CDDA_RIGHTSTREAM | ? |