Memory mapped registers: Difference between revisions

From NeoGeo Development Wiki
Jump to navigation Jump to search
No edit summary
mNo edit summary
Line 412: Line 412:
|-
|-
|$FF0147
|$FF0147
|REG_UNMAPZ80
|REG_UPUNMAPZ80
|
|
|0/1 Unmap Z80 in $E00000 ?
|0/1 Unmap Z80 in $E00000 ?
|-
|-
|$FF0149
|$FF0149
|REG_UNMAPFIX
|REG_UPUNMAPFIX
|
|
|0/1 Unmap FIX in $E00000 ?
|0/1 Unmap FIX in $E00000 ?

Revision as of 15:39, 13 March 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)
Bit 7 6 5 4 3 2 1 0
Def D CBARightLeftDownUp
? NEO-C1
$300001 REG_DIPSW Dipswitches (active low)
Bit 7 6 5 4 3 2 1 0
Def Freeze FreeplayMultiplayer configurationAutofire?Test mode
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
Bit 7 6 5 4 3 2 1 0
Def ?
? ?
$340000 REG_P2CNT Player 2 controls (active low)
Bit 7 6 5 4 3 2 1 0
Def D CBARightLeftDownUp
? NEO-C1
$380000 REG_STATUS_B
Bit 7 6 5 4 3 2 1 0
Def ? Memory card
write protect
Memory card
inserted
Select P2Start P2Select P1Start P1
? NEO-C1
$380001 REG_POUTPUT ? Joypad ports outputs
Bit 7 6 5 4 3 2 1 0
Def ? P2 outputsP1 outputs

MAME select_controller

NEO-D0
$380011 ? ? Write only, after a write to $3A0019 ?
$380021 REG_SLOT ?
Bit 7 6 5 4 3 2 1 0
Def ? 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
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Def Raster line counter.
See Display timing
?1:50Hz
0:60Hz
Auto animation counter
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Def Auto animation speed
(in frames)
Raster interrupt
mode
Raster interrupt
enable
Disable auto animation?
$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.
Bit 7 6 5 4 3 2 1 0
Def ? Ack VBlankAck HBlankAck IRQ3
$3C000E

$3C000F

? ? Some emulators treat these locations like $3C000A.

NeoGeo CD registers

NEO-MGA / LC8953 / LC98000 ?

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 ? spr_disable ?
$FF0115 ? Byte ? fix_disable ?
$FF0119 ? Byte ? video_enable ?
$FF011C ? Word 4 bit region_code + CD open/close ?, 0xFF ? ?
$FF0121 REG_UPSELSPR Byte 0/1 Map SPR in $E00000 ? ?
$FF0123 REG_UPSELPCM 0/1 Map PCM in $E00000 ?
$FF0127 REG_UPSELZ80 0/1 Map Z80 in $E00000 ?
$FF0129 REG_UPSELFIX 0/1 Map FIX in $E00000 ?
$FF0141 REG_UPUNMAPSPR 0/1 Unmap SPR in $E00000 ?
$FF0143 REG_UPUNMAPPCM 0/1 Unmap PCM in $E00000 ?
$FF0147 REG_UPUNMAPZ80 0/1 Unmap Z80 in $E00000 ?
$FF0149 REG_UPUNMAPFIX 0/1 Unmap FIX in $E00000 ?
$FF016F ? Byte ? disable_irq_w ?
$FF0183 ? Byte ? z80_enable ?
$FF0188 REG_CDDALEFTL Word See Reading CDDA sound levels ? NEO-MGA
$FF018A REG_CDDARIGHTL ?
$FF01A1 ? Byte ? CDM3-2 BIOS writes 0,1,2 ?
$FF01A3 ? Byte ? CDM3-2 BIOS writes 0,1 ?
$FF01A7 ? Byte ? CDM3-2 BIOS writes ?