Memory mapped registers: Difference between revisions
Jump to navigation
Jump to search
m (Reverted accidental rollback) |
|||
Line 20: | Line 20: | ||
|$300001 | |$300001 | ||
|REG_DIPSW | |REG_DIPSW | ||
| | |[[Hardware DIPs]] (active low) | ||
{{8BitRegister|Freeze|1|Freeplay|1|[[Multiplayer]] configuration| | {{8BitRegister|Freeze|1|Freeplay|1|Enable [[Multiplayer]] configuration|1|Communication identification code|2|0:Normal controller<br>1:Mahjong keyboard|1|0:One coin chute<br>1:Two coin chutes|1|Settings mode|1}} | ||
|Kick watchdog | |Kick watchdog | ||
|[[NEO-F0]] (read) | |[[NEO-F0]] (read) | ||
Line 33: | Line 33: | ||
|$320000 | |$320000 | ||
|REG_SOUND | |REG_SOUND | ||
|[[68k/Z80 communication| | |[[68k/Z80 communication|Read Z80 reply code]] | ||
| | |Send command to Z80 | ||
||[[NEO-D0]] ? | ||[[NEO-D0]] ? | ||
|- | |- | ||
|$320001 | |$320001 | ||
|REG_STATUS_A | |REG_STATUS_A | ||
|{{8BitRegister|NEC D4990 data bit|1|NEC D4990 time pulse|1| | |Switch inputs are active low | ||
{{8BitRegister|NEC D4990 data bit|1|NEC D4990 time pulse|1|Jumper "type", 1 on 1FZ|1|1 on 1FZ|2|Service|1|Coin 2|1|Coin 1|1}} | |||
|? | |? | ||
|? | |? | ||
Line 52: | Line 53: | ||
|$380000 | |$380000 | ||
|REG_STATUS_B | |REG_STATUS_B | ||
|{{8BitRegister| | |Aux inputs (active low) | ||
{{8BitRegister|0:AES<br>1:MVS|1|[[Memory card]]<br>write enable|2|Memory card<br>inserted|1|Select P2|1|Start P2|1|Select P1|1|Start P1|1|}} | |||
|? | |? | ||
|[[NEO-C1]] | |[[NEO-C1]] | ||
Line 65: | Line 67: | ||
|- | |- | ||
|$380011 | |$380011 | ||
|REG_CRDBANK | |||
|? | |? | ||
| | |{{8BitRegister| |5|Memory card bank selection|3}} | ||
| | |[[NEO-D0]] | ||
| | |||
|- | |- | ||
|$380021 | |$380021 | ||
Line 76: | Line 78: | ||
|[[NEO-F0]]? | |[[NEO-F0]]? | ||
|- | |- | ||
|$ | |$380031 | ||
|REG_LEDLATCHES | |||
|? | |? | ||
|? | |MAME set_output_latch {{8BitRegister|?|2|Latch LED2 data|1|Latch LED1 data|1|Latch EL panel data|1|?|3}} | ||
Data is latched on falling edge (1 to 0 transition) | |||
|[[NEO-F0]] | |[[NEO-F0]] | ||
|- | |- | ||
|$ | |$380041 | ||
|REG_LEDDATA | |||
|? | |? | ||
|MAME set_output_data (for LEDs and EL panel) | |||
|MAME set_output_data ( | |[[NEO-F0]] | ||
|[[NEO-F0]] | |||
|- | |- | ||
|$ | |$380051 | ||
|REG_RTCCTRL | |||
|? | |? | ||
|MAME upd4990a_control_16_w ([[Calendar]]){{8BitRegister|?|5|D4990 Strobe ?|1|D4990 Clock ?|1|D4990 DIN ?|1|}} | |||
|MAME upd4990a_control_16_w ([[Calendar]]) | |||
|[[NEO-F0]]? | |[[NEO-F0]]? | ||
|- | |- | ||
Line 97: | Line 100: | ||
|? | |? | ||
|? | |? | ||
|Base address for writes (used by the MVS BIOS) | |Base address for writes (used by the MVS BIOS, only bit 4) Coin counters reset ? | ||
|? | |||
|- | |||
|$380063 | |||
|? | |? | ||
|? | |||
|Write only (used by the MVS BIOS) Coin counters reset ? | |||
||[[NEO-I0]] | |||
|- | |- | ||
|$380065 | |$380065 | ||
|? | |? | ||
|? | |? | ||
|Write only (used by the MVS BIOS) | |Write only (used by the MVS BIOS) Coin lockout ? | ||
| | |[[NEO-I0]] | ||
|- | |- | ||
|$380067 | |$380067 | ||
|? | |? | ||
|? | |? | ||
|Write only (used by the MVS BIOS) | |Write only (used by the MVS BIOS) Coin lockout ? | ||
|? | |? | ||
|- | |- | ||
Line 115: | Line 124: | ||
|? | |? | ||
|? | |? | ||
|Write only (used by the MVS BIOS) | |Write only (used by the MVS BIOS), similar to $380061 | ||
|? | |? | ||
|} | |} | ||
Line 127: | Line 136: | ||
|- | |- | ||
|$3A0001 | |$3A0001 | ||
| | |REG_NOSHADOW | ||
|Normal video output | |Normal video output | ||
|- | |- | ||
|$3A0011 | |$3A0011 | ||
| | |REG_SHADOW | ||
|[[Video DAC|Darken]] video output | |[[Video DAC|Darken]] video output | ||
|- | |- | ||
Line 159: | Line 168: | ||
|- | |- | ||
|$3A0009 | |$3A0009 | ||
| | |REG_CRDREGSEL | ||
| | |Enable "Register select" for memory card | ||
|- | |- | ||
|$3A0019 | |$3A0019 | ||
| | |REG_CRDNORMAL | ||
| | |Disable "Register select" for memory card | ||
|- | |- | ||
|$3A000B | |$3A000B | ||
Line 172: | Line 181: | ||
|$3A001B | |$3A001B | ||
|REG_CRTFIX | |REG_CRTFIX | ||
|Use the cart's [[S ROM]] and [[ | |Use the cart's [[S ROM]] and [[M1 ROM]] | ||
|- | |- | ||
|$3A000D | |$3A000D | ||
|REG_SRAMLOCK | |REG_SRAMLOCK | ||
|Write-protects [[ | |Write-protects [[backup RAM]] (MVS) | ||
|- | |- | ||
|$3A001D | |$3A001D | ||
|REG_SRAMULOCK | |REG_SRAMULOCK | ||
|Unprotects | |Unprotects backup RAM (MVS) | ||
|- | |- | ||
|$3A000F | |$3A000F | ||
Line 192: | Line 201: | ||
==Video registers== | ==Video registers== | ||
Handled by the [[GPU]]s. | Handled by the [[GPU]]s. Only word access. | ||
{| class="regdef" | {| class="regdef" | ||
|'''Address''' | |'''Address''' | ||
|'''Name''' | |'''Name''' | ||
|'''Read''' | |'''Read''' | ||
|'''Write''' | |'''Write''' | ||
Line 202: | Line 210: | ||
|$3C0000 | |$3C0000 | ||
|REG_VRAMADDR | |REG_VRAMADDR | ||
|Read [[VRAM]] (address isn't changed) | |Read [[VRAM]] (address isn't changed) | ||
|Sets VRAM address | |Sets VRAM address | ||
Line 208: | Line 215: | ||
|$3C0002 | |$3C0002 | ||
|REG_VRAMRW | |REG_VRAMRW | ||
|Read VRAM (address isn't changed) | |Read VRAM (address isn't changed) | ||
|Write VRAM | |Write VRAM | ||
Line 214: | Line 220: | ||
|$3C0004 | |$3C0004 | ||
|REG_VRAMMOD | |REG_VRAMMOD | ||
|Reads VRAM address modulo | |Reads VRAM address modulo | ||
|Sets VRAM address modulo (signed) | |Sets VRAM address modulo (signed) | ||
|- | |- | ||
|$3C0006 | |$3C0006 | ||
| | |REG_LSPCMODE | ||
|{{16BitRegister|Raster line counter.<br>See [[Display timing]]|9|-|3|1:50Hz<br>0:60Hz ([[GPU|LSPC2]] only)|1|[[Auto animation]] counter|3}} | |||
|{{16BitRegister|Raster line counter.<br>See [[Display timing]]|9| | |{{16BitRegister|Auto animation speed<br>(in frames)|8|[[Timer interrupt]]<br>mode|3|Timer interrupt enable|1|Disable auto animation|1|?|3}} | ||
|{{16BitRegister|Auto animation speed<br>(in frames)|8| | |||
|- | |- | ||
|$3C0008 | |$3C0008 | ||
| | |REG_TIMERHIGH | ||
|Invalid | |Invalid | ||
| | |MSBs of timer reload value. | ||
|- | |- | ||
|$3C000A | |$3C000A | ||
| | |REG_TIMERLOW | ||
|Invalid | |Invalid | ||
| | |LSBs of timer reload value. | ||
|- | |- | ||
|$3C000C | |$3C000C | ||
|REG_IRQACK | |REG_IRQACK | ||
|Invalid | |Invalid | ||
|Interrupt Acknowledge. | |Interrupt Acknowledge (byte !). | ||
{{8BitRegister|?|5|Ack VBlank|1|Ack HBlank|1|Ack IRQ3|1}} | {{8BitRegister|?|5|Ack VBlank|1|Ack HBlank|1|Ack IRQ3|1}} | ||
|- | |- | ||
|$3C000E | |$3C000E | ||
|REG_TIMERSTOP | |||
| | |Invalid | ||
| | |Bit 0=1: Stop timer counter for 32 raster lines when in PAL mode | ||
| | |||
|} | |} | ||
Line 360: | Line 360: | ||
|Byte | |Byte | ||
|? | |? | ||
|Disable/enable sprites | |Disable/enable sprites ? | ||
|rowspan="3"|[[NEO-GRC]]/[[NEO-OFC]] | |rowspan="3"|[[NEO-GRC]]/[[NEO-OFC]] | ||
|- | |- | ||
Line 373: | Line 373: | ||
|Byte | |Byte | ||
|? | |? | ||
|Enable/disable video output | |Enable/disable video output ? (disable works) | ||
|- | |- | ||
|$FF011C | |$FF011C | ||
Line 435: | Line 435: | ||
|rowspan="2"|Word | |rowspan="2"|Word | ||
|rowspan="2"|See [[Reading CDDA sound levels]] | |rowspan="2"|See [[Reading CDDA sound levels]] | ||
|rowspan="2"| | |rowspan="2"|No effect | ||
|rowspan="2"|[[NEO-MGA]] | |rowspan="2"|[[NEO-MGA]] | ||
|- | |- |
Revision as of 21:08, 7 November 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 | Hardware DIPs (active low)
|
Kick watchdog | NEO-F0 (read) | ||||||||||||||||||
$300081 | ? | Read only | ? | ? | ||||||||||||||||||
$320000 | REG_SOUND | Read Z80 reply code | Send command to Z80 | NEO-D0 ? | ||||||||||||||||||
$320001 | REG_STATUS_A | Switch inputs are active low
|
? | ? | ||||||||||||||||||
$340000 | REG_P2CNT | Player 2 controls (active low)
|
? | NEO-C1 | ||||||||||||||||||
$380000 | REG_STATUS_B | Aux inputs (active low)
|
? | NEO-C1 | ||||||||||||||||||
$380001 | REG_POUTPUT | ? | Joypad ports outputs
MAME select_controller |
NEO-D0 | ||||||||||||||||||
$380011 | REG_CRDBANK | ? |
|
NEO-D0 | ||||||||||||||||||
$380021 | REG_SLOT | ? |
|
NEO-F0? | ||||||||||||||||||
$380031 | REG_LEDLATCHES | ? | MAME set_output_latch
Data is latched on falling edge (1 to 0 transition) |
NEO-F0 | ||||||||||||||||||
$380041 | REG_LEDDATA | ? | MAME set_output_data (for LEDs and EL panel) | NEO-F0 | ||||||||||||||||||
$380051 | REG_RTCCTRL | ? | MAME upd4990a_control_16_w (Calendar)
|
NEO-F0? | ||||||||||||||||||
$380061 | ? | ? | Base address for writes (used by the MVS BIOS, only bit 4) Coin counters reset ? | ? | ||||||||||||||||||
$380063 | ? | ? | Write only (used by the MVS BIOS) Coin counters reset ? | NEO-I0 | ||||||||||||||||||
$380065 | ? | ? | Write only (used by the MVS BIOS) Coin lockout ? | NEO-I0 | ||||||||||||||||||
$380067 | ? | ? | Write only (used by the MVS BIOS) Coin lockout ? | ? | ||||||||||||||||||
$3800E1 | ? | ? | Write only (used by the MVS BIOS), similar to $380061 | ? |
System registers
Handled by a 74HC259 adressable latch on cart systems. Byte writes only.
Address | Name | Write |
$3A0001 | REG_NOSHADOW | Normal video output |
$3A0011 | REG_SHADOW | Darken video output |
$3A0003 | REG_SWPBIOS | 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 | REG_CRDREGSEL | Enable "Register select" for memory card |
$3A0019 | REG_CRDNORMAL | Disable "Register select" for memory card |
$3A000B | REG_BRDFIX | Use the embedded SFIX and SM1 ROM |
$3A001B | REG_CRTFIX | Use the cart's S ROM and M1 ROM |
$3A000D | REG_SRAMLOCK | Write-protects backup RAM (MVS) |
$3A001D | REG_SRAMULOCK | Unprotects backup RAM (MVS) |
$3A000F | REG_PALBANK1 | Use palette bank 1 |
$3A001F | REG_PALBANK0 | Use palette bank 0 |
Video registers
Handled by the GPUs. Only word access.
Address | Name | Read | Write | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$3C0000 | REG_VRAMADDR | Read VRAM (address isn't changed) | Sets VRAM address | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$3C0002 | REG_VRAMRW | Read VRAM (address isn't changed) | Write VRAM | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$3C0004 | REG_VRAMMOD | Reads VRAM address modulo | Sets VRAM address modulo (signed) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$3C0006 | REG_LSPCMODE |
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$3C0008 | REG_TIMERHIGH | Invalid | MSBs of timer reload value. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$3C000A | REG_TIMERLOW | Invalid | LSBs of timer reload value. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$3C000C | REG_IRQACK | Invalid | Interrupt Acknowledge (byte !).
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$3C000E | REG_TIMERSTOP | Invalid | Bit 0=1: Stop timer counter for 32 raster lines when in PAL mode |
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 ? (disable works) | |||||||||||||||||||||||||||||||||||
$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 | No effect | 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 ? | ? |