Memory maps merges for the following drivers:

* nbmj9195.c
* niyanpai.c
* ninjaw.c
This commit is contained in:
Angelo Salese 2009-04-30 18:53:17 +00:00
parent 5bd851a0d9
commit 1c067e6187
3 changed files with 372 additions and 1200 deletions

File diff suppressed because it is too large Load Diff

View File

@ -283,146 +283,84 @@ static WRITE8_HANDLER( ninjaw_pancontrol )
MEMORY STRUCTURES
***********************************************************/
static ADDRESS_MAP_START( ninjaw_readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0bffff) AM_READ(SMH_ROM)
AM_RANGE(0x0c0000, 0x0cffff) AM_READ(SMH_RAM) /* main ram */
AM_RANGE(0x200000, 0x200001) AM_READ8(TC0220IOC_portreg_r, 0x00ff)
AM_RANGE(0x200002, 0x200003) AM_READ8(TC0220IOC_port_r, 0x00ff)
AM_RANGE(0x220000, 0x220003) AM_READ(ninjaw_sound_r)
AM_RANGE(0x280000, 0x293fff) AM_READ(TC0100SCN_word_0_r) /* tilemaps (1st screen) */
AM_RANGE(0x2a0000, 0x2a000f) AM_READ(TC0100SCN_ctrl_word_0_r)
AM_RANGE(0x2c0000, 0x2d3fff) AM_READ(TC0100SCN_word_1_r) /* tilemaps (2nd screen) */
AM_RANGE(0x2e0000, 0x2e000f) AM_READ(TC0100SCN_ctrl_word_1_r)
AM_RANGE(0x300000, 0x313fff) AM_READ(TC0100SCN_word_2_r) /* tilemaps (3rd screen) */
AM_RANGE(0x320000, 0x32000f) AM_READ(TC0100SCN_ctrl_word_2_r)
AM_RANGE(0x340000, 0x340007) AM_READ(TC0110PCR_word_r) /* palette (1st screen) */
AM_RANGE(0x350000, 0x350007) AM_READ(TC0110PCR_word_1_r) /* palette (2nd screen) */
AM_RANGE(0x360000, 0x360007) AM_READ(TC0110PCR_word_2_r) /* palette (3rd screen) */
ADDRESS_MAP_END
static ADDRESS_MAP_START( ninjaw_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0bffff) AM_WRITE(SMH_ROM)
AM_RANGE(0x0c0000, 0x0cffff) AM_WRITE(SMH_RAM)
AM_RANGE(0x200000, 0x200001) AM_WRITE8(TC0220IOC_portreg_w, 0x00ff)
AM_RANGE(0x200002, 0x200003) AM_WRITE8(TC0220IOC_port_w, 0x00ff)
static ADDRESS_MAP_START( ninjaw_master_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0bffff) AM_ROM
AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* main ram */
AM_RANGE(0x200000, 0x200001) AM_READWRITE8(TC0220IOC_portreg_r,TC0220IOC_portreg_w, 0x00ff)
AM_RANGE(0x200002, 0x200003) AM_READWRITE8(TC0220IOC_port_r,TC0220IOC_port_w, 0x00ff)
AM_RANGE(0x210000, 0x210001) AM_WRITE(cpua_ctrl_w)
AM_RANGE(0x220000, 0x220003) AM_WRITE(ninjaw_sound_w)
AM_RANGE(0x220000, 0x220003) AM_READWRITE(ninjaw_sound_r,ninjaw_sound_w)
AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE(1)
AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE(2) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
AM_RANGE(0x280000, 0x293fff) AM_WRITE(TC0100SCN_triple_screen_w) /* tilemaps (all screens) */
AM_RANGE(0x2a0000, 0x2a000f) AM_WRITE(TC0100SCN_ctrl_word_0_w)
AM_RANGE(0x2c0000, 0x2d3fff) AM_WRITE(TC0100SCN_word_1_w) /* tilemaps (2nd screen) */
AM_RANGE(0x2e0000, 0x2e000f) AM_WRITE(TC0100SCN_ctrl_word_1_w)
AM_RANGE(0x300000, 0x313fff) AM_WRITE(TC0100SCN_word_2_w) /* tilemaps (3rd screen) */
AM_RANGE(0x320000, 0x32000f) AM_WRITE(TC0100SCN_ctrl_word_2_w)
AM_RANGE(0x340000, 0x340007) AM_WRITE(TC0110PCR_step1_word_w) /* palette (1st screen) */
AM_RANGE(0x350000, 0x350007) AM_WRITE(TC0110PCR_step1_word_1_w) /* palette (2nd screen) */
AM_RANGE(0x360000, 0x360007) AM_WRITE(TC0110PCR_step1_word_2_w) /* palette (3rd screen) */
AM_RANGE(0x280000, 0x293fff) AM_READWRITE(TC0100SCN_word_0_r,TC0100SCN_triple_screen_w) /* tilemaps (1st screen/all screens) */
AM_RANGE(0x2a0000, 0x2a000f) AM_READWRITE(TC0100SCN_ctrl_word_0_r,TC0100SCN_ctrl_word_0_w)
AM_RANGE(0x2c0000, 0x2d3fff) AM_READWRITE(TC0100SCN_word_1_r,TC0100SCN_word_1_w) /* tilemaps (2nd screen) */
AM_RANGE(0x2e0000, 0x2e000f) AM_READWRITE(TC0100SCN_ctrl_word_1_r,TC0100SCN_ctrl_word_1_w)
AM_RANGE(0x300000, 0x313fff) AM_READWRITE(TC0100SCN_word_2_r,TC0100SCN_word_2_w) /* tilemaps (3rd screen) */
AM_RANGE(0x320000, 0x32000f) AM_READWRITE(TC0100SCN_ctrl_word_2_r,TC0100SCN_ctrl_word_2_w)
AM_RANGE(0x340000, 0x340007) AM_READWRITE(TC0110PCR_word_r,TC0110PCR_step1_word_w) /* palette (1st screen) */
AM_RANGE(0x350000, 0x350007) AM_READWRITE(TC0110PCR_word_1_r,TC0110PCR_step1_word_1_w) /* palette (2nd screen) */
AM_RANGE(0x360000, 0x360007) AM_READWRITE(TC0110PCR_word_2_r,TC0110PCR_step1_word_2_w) /* palette (3rd screen) */
ADDRESS_MAP_END
// NB there could be conflicts between which cpu writes what to the
// palette, as our interleaving won't match the original board.
static ADDRESS_MAP_START( ninjaw_cpub_readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x05ffff) AM_READ(SMH_ROM)
AM_RANGE(0x080000, 0x08ffff) AM_READ(SMH_RAM) /* main ram */
AM_RANGE(0x200000, 0x200001) AM_READ8(TC0220IOC_portreg_r, 0x00ff)
AM_RANGE(0x200002, 0x200003) AM_READ8(TC0220IOC_port_r, 0x00ff)
AM_RANGE(0x280000, 0x293fff) AM_READ(TC0100SCN_word_0_r) /* tilemaps (1st screen) */
AM_RANGE(0x340000, 0x340007) AM_READ(TC0110PCR_word_r) /* palette (1st screen) */
AM_RANGE(0x350000, 0x350007) AM_READ(TC0110PCR_word_1_r) /* palette (2nd screen) */
AM_RANGE(0x360000, 0x360007) AM_READ(TC0110PCR_word_2_r) /* palette (3rd screen) */
ADDRESS_MAP_END
static ADDRESS_MAP_START( ninjaw_cpub_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x05ffff) AM_WRITE(SMH_ROM)
AM_RANGE(0x080000, 0x08ffff) AM_WRITE(SMH_RAM)
AM_RANGE(0x200000, 0x200001) AM_WRITE8(TC0220IOC_portreg_w, 0x00ff)
AM_RANGE(0x200002, 0x200003) AM_WRITE8(TC0220IOC_port_w, 0x00ff)
static ADDRESS_MAP_START( ninjaw_slave_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x05ffff) AM_ROM
AM_RANGE(0x080000, 0x08ffff) AM_RAM /* main ram */
AM_RANGE(0x200000, 0x200001) AM_READWRITE8(TC0220IOC_portreg_r,TC0220IOC_portreg_w, 0x00ff)
AM_RANGE(0x200002, 0x200003) AM_READWRITE8(TC0220IOC_port_r,TC0220IOC_port_w, 0x00ff)
AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE(1)
AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE(2)
AM_RANGE(0x280000, 0x293fff) AM_WRITE(TC0100SCN_triple_screen_w) /* tilemaps (all screens) */
AM_RANGE(0x340000, 0x340007) AM_WRITE(TC0110PCR_step1_word_w) /* palette (1st screen) */
AM_RANGE(0x350000, 0x350007) AM_WRITE(TC0110PCR_step1_word_1_w) /* palette (2nd screen) */
AM_RANGE(0x360000, 0x360007) AM_WRITE(TC0110PCR_step1_word_2_w) /* palette (3rd screen) */
AM_RANGE(0x280000, 0x293fff) AM_READWRITE(TC0100SCN_word_0_r,TC0100SCN_triple_screen_w) /* tilemaps (1st screen/all screens) */
AM_RANGE(0x340000, 0x340007) AM_READWRITE(TC0110PCR_word_r,TC0110PCR_step1_word_w) /* palette (1st screen) */
AM_RANGE(0x350000, 0x350007) AM_READWRITE(TC0110PCR_word_1_r,TC0110PCR_step1_word_1_w) /* palette (2nd screen) */
AM_RANGE(0x360000, 0x360007) AM_READWRITE(TC0110PCR_word_2_r,TC0110PCR_step1_word_2_w) /* palette (3rd screen) */
ADDRESS_MAP_END
static ADDRESS_MAP_START( darius2_readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0bffff) AM_READ(SMH_ROM)
AM_RANGE(0x0c0000, 0x0cffff) AM_READ(SMH_RAM) /* main ram */
AM_RANGE(0x200000, 0x200001) AM_READ8(TC0220IOC_portreg_r, 0x00ff)
AM_RANGE(0x200002, 0x200003) AM_READ8(TC0220IOC_port_r, 0x00ff)
AM_RANGE(0x220000, 0x220003) AM_READ(ninjaw_sound_r)
AM_RANGE(0x280000, 0x293fff) AM_READ(TC0100SCN_word_0_r) /* tilemaps (1st screen) */
AM_RANGE(0x2a0000, 0x2a000f) AM_READ(TC0100SCN_ctrl_word_0_r)
AM_RANGE(0x2c0000, 0x2d3fff) AM_READ(TC0100SCN_word_1_r) /* tilemaps (2nd screen) */
AM_RANGE(0x2e0000, 0x2e000f) AM_READ(TC0100SCN_ctrl_word_1_r)
AM_RANGE(0x300000, 0x313fff) AM_READ(TC0100SCN_word_2_r) /* tilemaps (3rd screen) */
AM_RANGE(0x320000, 0x32000f) AM_READ(TC0100SCN_ctrl_word_2_r)
AM_RANGE(0x340000, 0x340007) AM_READ(TC0110PCR_word_r) /* palette (1st screen) */
AM_RANGE(0x350000, 0x350007) AM_READ(TC0110PCR_word_1_r) /* palette (2nd screen) */
AM_RANGE(0x360000, 0x360007) AM_READ(TC0110PCR_word_2_r) /* palette (3rd screen) */
ADDRESS_MAP_END
static ADDRESS_MAP_START( darius2_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0bffff) AM_WRITE(SMH_ROM)
AM_RANGE(0x0c0000, 0x0cffff) AM_WRITE(SMH_RAM)
AM_RANGE(0x200000, 0x200001) AM_WRITE8(TC0220IOC_portreg_w, 0x00ff)
AM_RANGE(0x200002, 0x200003) AM_WRITE8(TC0220IOC_port_w, 0x00ff)
static ADDRESS_MAP_START( darius2_master_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0bffff) AM_ROM
AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* main ram */
AM_RANGE(0x200000, 0x200001) AM_READWRITE8(TC0220IOC_portreg_r,TC0220IOC_portreg_w, 0x00ff)
AM_RANGE(0x200002, 0x200003) AM_READWRITE8(TC0220IOC_port_r,TC0220IOC_port_w, 0x00ff)
AM_RANGE(0x210000, 0x210001) AM_WRITE(cpua_ctrl_w)
AM_RANGE(0x220000, 0x220003) AM_WRITE(ninjaw_sound_w)
AM_RANGE(0x220000, 0x220003) AM_READWRITE(ninjaw_sound_r,ninjaw_sound_w)
AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE(1)
AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE(2) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
AM_RANGE(0x280000, 0x293fff) AM_WRITE(TC0100SCN_triple_screen_w) /* tilemaps (all screens) */
AM_RANGE(0x2a0000, 0x2a000f) AM_WRITE(TC0100SCN_ctrl_word_0_w)
AM_RANGE(0x2c0000, 0x2d3fff) AM_WRITE(TC0100SCN_word_1_w) /* tilemaps (2nd screen) */
AM_RANGE(0x2e0000, 0x2e000f) AM_WRITE(TC0100SCN_ctrl_word_1_w)
AM_RANGE(0x300000, 0x313fff) AM_WRITE(TC0100SCN_word_2_w) /* tilemaps (3rd screen) */
AM_RANGE(0x320000, 0x32000f) AM_WRITE(TC0100SCN_ctrl_word_2_w)
AM_RANGE(0x340000, 0x340007) AM_WRITE(TC0110PCR_step1_word_w) /* palette (1st screen) */
AM_RANGE(0x350000, 0x350007) AM_WRITE(TC0110PCR_step1_word_1_w) /* palette (2nd screen) */
AM_RANGE(0x360000, 0x360007) AM_WRITE(TC0110PCR_step1_word_2_w) /* palette (3rd screen) */
AM_RANGE(0x280000, 0x293fff) AM_READWRITE(TC0100SCN_word_0_r,TC0100SCN_triple_screen_w) /* tilemaps (1st screen/all screens) */
AM_RANGE(0x2a0000, 0x2a000f) AM_READWRITE(TC0100SCN_ctrl_word_0_r,TC0100SCN_ctrl_word_0_w)
AM_RANGE(0x2c0000, 0x2d3fff) AM_READWRITE(TC0100SCN_word_1_r,TC0100SCN_word_1_w) /* tilemaps (2nd screen) */
AM_RANGE(0x2e0000, 0x2e000f) AM_READWRITE(TC0100SCN_ctrl_word_1_r,TC0100SCN_ctrl_word_1_w)
AM_RANGE(0x300000, 0x313fff) AM_READWRITE(TC0100SCN_word_2_r,TC0100SCN_word_2_w) /* tilemaps (3rd screen) */
AM_RANGE(0x320000, 0x32000f) AM_READWRITE(TC0100SCN_ctrl_word_2_r,TC0100SCN_ctrl_word_2_w)
AM_RANGE(0x340000, 0x340007) AM_READWRITE(TC0110PCR_word_r,TC0110PCR_step1_word_w) /* palette (1st screen) */
AM_RANGE(0x350000, 0x350007) AM_READWRITE(TC0110PCR_word_1_r,TC0110PCR_step1_word_1_w) /* palette (2nd screen) */
AM_RANGE(0x360000, 0x360007) AM_READWRITE(TC0110PCR_word_2_r,TC0110PCR_step1_word_2_w) /* palette (3rd screen) */
ADDRESS_MAP_END
static ADDRESS_MAP_START( darius2_cpub_readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x05ffff) AM_READ(SMH_ROM)
AM_RANGE(0x080000, 0x08ffff) AM_READ(SMH_RAM) /* main ram */
AM_RANGE(0x200000, 0x200001) AM_READ8(TC0220IOC_portreg_r, 0x00ff)
AM_RANGE(0x200002, 0x200003) AM_READ8(TC0220IOC_port_r, 0x00ff)
AM_RANGE(0x280000, 0x293fff) AM_READ(TC0100SCN_word_0_r) /* tilemaps (1st screen) */
ADDRESS_MAP_END
static ADDRESS_MAP_START( darius2_cpub_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x05ffff) AM_WRITE(SMH_ROM)
AM_RANGE(0x080000, 0x08ffff) AM_WRITE(SMH_RAM)
AM_RANGE(0x200000, 0x200001) AM_WRITE8(TC0220IOC_portreg_w, 0x00ff)
AM_RANGE(0x200002, 0x200003) AM_WRITE8(TC0220IOC_port_w, 0x00ff)
static ADDRESS_MAP_START( darius2_slave_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x05ffff) AM_ROM
AM_RANGE(0x080000, 0x08ffff) AM_RAM /* main ram */
AM_RANGE(0x200000, 0x200001) AM_READWRITE8(TC0220IOC_portreg_r,TC0220IOC_portreg_w, 0x00ff)
AM_RANGE(0x200002, 0x200003) AM_READWRITE8(TC0220IOC_port_r,TC0220IOC_port_w, 0x00ff)
AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE(1)
AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE(2)
AM_RANGE(0x280000, 0x293fff) AM_WRITE(TC0100SCN_triple_screen_w) /* tilemaps (all screens) */
AM_RANGE(0x280000, 0x293fff) AM_READWRITE(TC0100SCN_word_0_r,TC0100SCN_triple_screen_w) /* tilemaps (1st screen/all screens) */
ADDRESS_MAP_END
/***************************************************************************/
static ADDRESS_MAP_START( z80_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK(10))
AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM)
AM_RANGE(0xe000, 0xe003) AM_DEVREAD("ym", ym2610_r)
AM_RANGE(0xe200, 0xe200) AM_READNOP
AM_RANGE(0xe201, 0xe201) AM_READ(taitosound_slave_comm_r)
AM_RANGE(0xea00, 0xea00) AM_READNOP
ADDRESS_MAP_END
static ADDRESS_MAP_START( z80_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM)
AM_RANGE(0xe000, 0xe003) AM_DEVWRITE("ym", ym2610_w)
AM_RANGE(0xe200, 0xe200) AM_WRITE(taitosound_slave_port_w)
AM_RANGE(0xe201, 0xe201) AM_WRITE(taitosound_slave_comm_w)
static ADDRESS_MAP_START( ninjaw_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(10)
AM_RANGE(0xc000, 0xdfff) AM_RAM
AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ym", ym2610_r,ym2610_w)
AM_RANGE(0xe200, 0xe200) AM_READNOP AM_WRITE(taitosound_slave_port_w)
AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r,taitosound_slave_comm_w)
AM_RANGE(0xe400, 0xe403) AM_WRITE(ninjaw_pancontrol) /* pan */
AM_RANGE(0xea00, 0xea00) AM_READNOP
AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */
AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */
AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w)
@ -626,14 +564,14 @@ static MACHINE_DRIVER_START( ninjaw )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", M68000,16000000/2) /* 8 MHz ? */
MDRV_CPU_PROGRAM_MAP(ninjaw_readmem,ninjaw_writemem)
MDRV_CPU_PROGRAM_MAP(ninjaw_master_map,0)
MDRV_CPU_VBLANK_INT("lscreen", irq4_line_hold)
MDRV_CPU_ADD("audiocpu", Z80,16000000/4) /* 16/4 MHz ? */
MDRV_CPU_PROGRAM_MAP(z80_sound_readmem,z80_sound_writemem)
MDRV_CPU_PROGRAM_MAP(ninjaw_sound_map,0)
MDRV_CPU_ADD("sub", M68000,16000000/2) /* 8 MHz ? */
MDRV_CPU_PROGRAM_MAP(ninjaw_cpub_readmem,ninjaw_cpub_writemem)
MDRV_CPU_PROGRAM_MAP(ninjaw_slave_map,0)
MDRV_CPU_VBLANK_INT("lscreen", irq4_line_hold)
MDRV_QUANTUM_TIME(HZ(6000)) /* CPU slices */
@ -699,14 +637,14 @@ static MACHINE_DRIVER_START( darius2 )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", M68000,16000000/2) /* 8 MHz ? */
MDRV_CPU_PROGRAM_MAP(darius2_readmem,darius2_writemem)
MDRV_CPU_PROGRAM_MAP(darius2_master_map,0)
MDRV_CPU_VBLANK_INT("lscreen", irq4_line_hold)
MDRV_CPU_ADD("audiocpu", Z80,16000000/4) /* 4 MHz ? */
MDRV_CPU_PROGRAM_MAP(z80_sound_readmem,z80_sound_writemem)
MDRV_CPU_PROGRAM_MAP(ninjaw_sound_map,0)
MDRV_CPU_ADD("sub", M68000,16000000/2) /* 8 MHz ? */
MDRV_CPU_PROGRAM_MAP(darius2_cpub_readmem,darius2_cpub_writemem)
MDRV_CPU_PROGRAM_MAP(darius2_slave_map,0)
MDRV_CPU_VBLANK_INT("lscreen", irq4_line_hold)
MDRV_QUANTUM_TIME(HZ(6000)) /* CPU slices */

View File

@ -268,39 +268,22 @@ static WRITE16_HANDLER ( musobana_inputport_w )
musobana_inputport = data;
}
#define TMP68301_REGS \
AM_RANGE(0xfffc00, 0xfffc0f) AM_READWRITE(tmp68301_address_decoder_r,tmp68301_address_decoder_w) \
AM_RANGE(0xfffc80, 0xfffc9f) AM_READWRITE(tmp68301_interrupt_controller_r,tmp68301_interrupt_controller_w) \
AM_RANGE(0xfffd00, 0xfffd0f) AM_READWRITE(tmp68301_parallel_interface_r,tmp68301_parallel_interface_w) \
AM_RANGE(0xfffd80, 0xfffdaf) AM_READWRITE(tmp68301_serial_interface_r,tmp68301_serial_interface_w) \
AM_RANGE(0xfffe00, 0xfffe4f) AM_READWRITE(tmp68301_timer_r,tmp68301_timer_w)
static ADDRESS_MAP_START( niyanpai_readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
AM_RANGE(0x040000, 0x040fff) AM_READ(SMH_RAM)
AM_RANGE(0x0a0000, 0x0a08ff) AM_READ(niyanpai_palette_r)
AM_RANGE(0x0a0900, 0x0a11ff) AM_READ(SMH_RAM) // palette work ram?
static ADDRESS_MAP_START( niyanpai_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x040000, 0x040fff) AM_RAM AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)
AM_RANGE(0x0bf800, 0x0bffff) AM_READ(SMH_RAM)
AM_RANGE(0x0a0000, 0x0a08ff) AM_READWRITE(niyanpai_palette_r,niyanpai_palette_w)
AM_RANGE(0x0a0900, 0x0a11ff) AM_RAM // palette work ram?
AM_RANGE(0x240400, 0x240403) AM_READ(niyanpai_blitter_0_r)
AM_RANGE(0x240600, 0x240603) AM_READ(niyanpai_blitter_1_r)
AM_RANGE(0x240800, 0x240803) AM_READ(niyanpai_blitter_2_r)
AM_RANGE(0x280000, 0x280001) AM_READ(niyanpai_dipsw_r)
AM_RANGE(0x280200, 0x280201) AM_READ_PORT("P1_P2")
AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
AM_RANGE(0xfffc00, 0xfffc0f) AM_READ(tmp68301_address_decoder_r)
AM_RANGE(0xfffc80, 0xfffc9f) AM_READ(tmp68301_interrupt_controller_r)
AM_RANGE(0xfffd00, 0xfffd0f) AM_READ(tmp68301_parallel_interface_r)
AM_RANGE(0xfffd80, 0xfffdaf) AM_READ(tmp68301_serial_interface_r)
AM_RANGE(0xfffe00, 0xfffe4f) AM_READ(tmp68301_timer_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( niyanpai_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
AM_RANGE(0x040000, 0x040fff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)
AM_RANGE(0x0a0000, 0x0a08ff) AM_WRITE(niyanpai_palette_w)
AM_RANGE(0x0a0900, 0x0a11ff) AM_WRITE(SMH_RAM) // palette work ram?
AM_RANGE(0x0bf800, 0x0bffff) AM_WRITE(SMH_RAM)
AM_RANGE(0x0bf800, 0x0bffff) AM_RAM
AM_RANGE(0x200000, 0x200001) AM_WRITE(niyanpai_sound_w)
@ -308,60 +291,35 @@ static ADDRESS_MAP_START( niyanpai_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x240000, 0x240009) AM_WRITENOP // unknown
AM_RANGE(0x240200, 0x2403ff) AM_WRITENOP // unknown
AM_RANGE(0x240400, 0x240403) AM_READ(niyanpai_blitter_0_r)
AM_RANGE(0x240400, 0x24041f) AM_WRITE(niyanpai_blitter_0_w)
AM_RANGE(0x240420, 0x24043f) AM_WRITE(niyanpai_clut_0_w)
AM_RANGE(0x240600, 0x240603) AM_READ(niyanpai_blitter_1_r)
AM_RANGE(0x240600, 0x24061f) AM_WRITE(niyanpai_blitter_1_w)
AM_RANGE(0x240620, 0x24063f) AM_WRITE(niyanpai_clut_1_w)
AM_RANGE(0x240800, 0x240803) AM_READ(niyanpai_blitter_2_r)
AM_RANGE(0x240800, 0x24081f) AM_WRITE(niyanpai_blitter_2_w)
AM_RANGE(0x240820, 0x24083f) AM_WRITE(niyanpai_clut_2_w)
AM_RANGE(0x280000, 0x280001) AM_READ(niyanpai_dipsw_r)
AM_RANGE(0x280200, 0x280201) AM_READ_PORT("P1_P2")
AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
AM_RANGE(0x240a00, 0x240a01) AM_WRITE(niyanpai_clutsel_0_w)
AM_RANGE(0x240c00, 0x240c01) AM_WRITE(niyanpai_clutsel_1_w)
AM_RANGE(0x240e00, 0x240e01) AM_WRITE(niyanpai_clutsel_2_w)
AM_RANGE(0xfffc00, 0xfffc0f) AM_WRITE(tmp68301_address_decoder_w)
AM_RANGE(0xfffc80, 0xfffc9f) AM_WRITE(tmp68301_interrupt_controller_w)
AM_RANGE(0xfffd00, 0xfffd0f) AM_WRITE(tmp68301_parallel_interface_w)
AM_RANGE(0xfffd80, 0xfffdaf) AM_WRITE(tmp68301_serial_interface_w)
AM_RANGE(0xfffe00, 0xfffe4f) AM_WRITE(tmp68301_timer_w)
TMP68301_REGS
ADDRESS_MAP_END
static ADDRESS_MAP_START( musobana_readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
AM_RANGE(0x040000, 0x040fff) AM_READ(SMH_RAM)
static ADDRESS_MAP_START( musobana_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x040000, 0x040fff) AM_RAM
AM_RANGE(0x0a0000, 0x0a08ff) AM_READ(niyanpai_palette_r)
AM_RANGE(0x0a0900, 0x0a11ff) AM_READ(SMH_RAM) // palette work ram?
AM_RANGE(0x0a0000, 0x0a08ff) AM_READWRITE(niyanpai_palette_r,niyanpai_palette_w)
AM_RANGE(0x0a0900, 0x0a11ff) AM_RAM // palette work ram?
AM_RANGE(0x0a8000, 0x0a87ff) AM_READ(SMH_RAM)
AM_RANGE(0x0bf800, 0x0bffff) AM_READ(SMH_RAM)
AM_RANGE(0x240400, 0x240403) AM_READ(niyanpai_blitter_0_r)
AM_RANGE(0x240600, 0x240603) AM_READ(niyanpai_blitter_1_r)
AM_RANGE(0x240800, 0x240803) AM_READ(niyanpai_blitter_2_r)
AM_RANGE(0x280000, 0x280001) AM_READ(niyanpai_dipsw_r)
AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r)
AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
AM_RANGE(0xfffc00, 0xfffc0f) AM_READ(tmp68301_address_decoder_r)
AM_RANGE(0xfffc80, 0xfffc9f) AM_READ(tmp68301_interrupt_controller_r)
AM_RANGE(0xfffd00, 0xfffd0f) AM_READ(tmp68301_parallel_interface_r)
AM_RANGE(0xfffd80, 0xfffdaf) AM_READ(tmp68301_serial_interface_r)
AM_RANGE(0xfffe00, 0xfffe4f) AM_READ(tmp68301_timer_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( musobana_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
AM_RANGE(0x040000, 0x040fff) AM_WRITE(SMH_RAM)
AM_RANGE(0x0a0000, 0x0a08ff) AM_WRITE(niyanpai_palette_w)
AM_RANGE(0x0a0900, 0x0a11ff) AM_WRITE(SMH_RAM) // palette work ram?
AM_RANGE(0x0a8000, 0x0a87ff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)
AM_RANGE(0x0bf800, 0x0bffff) AM_WRITE(SMH_RAM)
AM_RANGE(0x0a8000, 0x0a87ff) AM_RAM AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)
AM_RANGE(0x0bf800, 0x0bffff) AM_RAM
AM_RANGE(0x200000, 0x200001) AM_WRITE(niyanpai_sound_w)
@ -369,62 +327,38 @@ static ADDRESS_MAP_START( musobana_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x240000, 0x240009) AM_WRITENOP // unknown
AM_RANGE(0x240200, 0x2403ff) AM_WRITENOP // unknown
AM_RANGE(0x240400, 0x240403) AM_READ(niyanpai_blitter_0_r)
AM_RANGE(0x240400, 0x24041f) AM_WRITE(niyanpai_blitter_0_w)
AM_RANGE(0x240420, 0x24043f) AM_WRITE(niyanpai_clut_0_w)
AM_RANGE(0x240600, 0x240603) AM_READ(niyanpai_blitter_1_r)
AM_RANGE(0x240600, 0x24061f) AM_WRITE(niyanpai_blitter_1_w)
AM_RANGE(0x240620, 0x24063f) AM_WRITE(niyanpai_clut_1_w)
AM_RANGE(0x240800, 0x240803) AM_READ(niyanpai_blitter_2_r)
AM_RANGE(0x240800, 0x24081f) AM_WRITE(niyanpai_blitter_2_w)
AM_RANGE(0x240820, 0x24083f) AM_WRITE(niyanpai_clut_2_w)
AM_RANGE(0x240a00, 0x240a01) AM_WRITE(niyanpai_clutsel_0_w)
AM_RANGE(0x240c00, 0x240c01) AM_WRITE(niyanpai_clutsel_1_w)
AM_RANGE(0x240e00, 0x240e01) AM_WRITE(niyanpai_clutsel_2_w)
AM_RANGE(0xfffc00, 0xfffc0f) AM_WRITE(tmp68301_address_decoder_w)
AM_RANGE(0xfffc80, 0xfffc9f) AM_WRITE(tmp68301_interrupt_controller_w)
AM_RANGE(0xfffd00, 0xfffd0f) AM_WRITE(tmp68301_parallel_interface_w)
AM_RANGE(0xfffd80, 0xfffdaf) AM_WRITE(tmp68301_serial_interface_w)
AM_RANGE(0xfffe00, 0xfffe4f) AM_WRITE(tmp68301_timer_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( mhhonban_readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
AM_RANGE(0x040000, 0x040fff) AM_READ(SMH_RAM)
AM_RANGE(0x060000, 0x0608ff) AM_READ(niyanpai_palette_r)
AM_RANGE(0x060900, 0x0611ff) AM_READ(SMH_RAM) // palette work ram?
AM_RANGE(0x07f800, 0x07ffff) AM_READ(SMH_RAM)
AM_RANGE(0x0a8000, 0x0a87ff) AM_READ(SMH_RAM)
AM_RANGE(0x0bf000, 0x0bffff) AM_READ(SMH_RAM)
AM_RANGE(0x240400, 0x240403) AM_READ(niyanpai_blitter_0_r)
AM_RANGE(0x240600, 0x240603) AM_READ(niyanpai_blitter_1_r)
AM_RANGE(0x240800, 0x240803) AM_READ(niyanpai_blitter_2_r)
AM_RANGE(0x280000, 0x280001) AM_READ(niyanpai_dipsw_r)
AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r)
AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
AM_RANGE(0xfffc00, 0xfffc0f) AM_READ(tmp68301_address_decoder_r)
AM_RANGE(0xfffc80, 0xfffc9f) AM_READ(tmp68301_interrupt_controller_r)
AM_RANGE(0xfffd00, 0xfffd0f) AM_READ(tmp68301_parallel_interface_r)
AM_RANGE(0xfffd80, 0xfffdaf) AM_READ(tmp68301_serial_interface_r)
AM_RANGE(0xfffe00, 0xfffe4f) AM_READ(tmp68301_timer_r)
TMP68301_REGS
ADDRESS_MAP_END
static ADDRESS_MAP_START( mhhonban_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
AM_RANGE(0x040000, 0x040fff) AM_WRITE(SMH_RAM)
static ADDRESS_MAP_START( mhhonban_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x040000, 0x040fff) AM_RAM
AM_RANGE(0x060000, 0x0608ff) AM_WRITE(niyanpai_palette_w)
AM_RANGE(0x060900, 0x0611ff) AM_WRITE(SMH_RAM) // palette work ram?
AM_RANGE(0x07f800, 0x07ffff) AM_WRITE(SMH_RAM)
AM_RANGE(0x060000, 0x0608ff) AM_READWRITE(niyanpai_palette_r,niyanpai_palette_w)
AM_RANGE(0x060900, 0x0611ff) AM_RAM // palette work ram?
AM_RANGE(0x07f800, 0x07ffff) AM_RAM
AM_RANGE(0x0a8000, 0x0a87ff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)
AM_RANGE(0x0bf000, 0x0bffff) AM_WRITE(SMH_RAM)
AM_RANGE(0x0a8000, 0x0a87ff) AM_RAM AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)
AM_RANGE(0x0bf000, 0x0bffff) AM_RAM
AM_RANGE(0x200000, 0x200001) AM_WRITE(niyanpai_sound_w)
@ -432,12 +366,15 @@ static ADDRESS_MAP_START( mhhonban_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x240000, 0x240009) AM_WRITENOP // unknown
AM_RANGE(0x240200, 0x2403ff) AM_WRITENOP // unknown
AM_RANGE(0x240400, 0x240403) AM_READ(niyanpai_blitter_0_r)
AM_RANGE(0x240400, 0x24041f) AM_WRITE(niyanpai_blitter_0_w)
AM_RANGE(0x240420, 0x24043f) AM_WRITE(niyanpai_clut_0_w)
AM_RANGE(0x240600, 0x240603) AM_READ(niyanpai_blitter_1_r)
AM_RANGE(0x240600, 0x24061f) AM_WRITE(niyanpai_blitter_1_w)
AM_RANGE(0x240620, 0x24063f) AM_WRITE(niyanpai_clut_1_w)
AM_RANGE(0x240800, 0x240803) AM_READ(niyanpai_blitter_2_r)
AM_RANGE(0x240800, 0x24081f) AM_WRITE(niyanpai_blitter_2_w)
AM_RANGE(0x240820, 0x24083f) AM_WRITE(niyanpai_clut_2_w)
@ -445,26 +382,21 @@ static ADDRESS_MAP_START( mhhonban_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x240c00, 0x240c01) AM_WRITE(niyanpai_clutsel_1_w)
AM_RANGE(0x240e00, 0x240e01) AM_WRITE(niyanpai_clutsel_2_w)
AM_RANGE(0xfffc00, 0xfffc0f) AM_WRITE(tmp68301_address_decoder_w)
AM_RANGE(0xfffc80, 0xfffc9f) AM_WRITE(tmp68301_interrupt_controller_w)
AM_RANGE(0xfffd00, 0xfffd0f) AM_WRITE(tmp68301_parallel_interface_w)
AM_RANGE(0xfffd80, 0xfffdaf) AM_WRITE(tmp68301_serial_interface_w)
AM_RANGE(0xfffe00, 0xfffe4f) AM_WRITE(tmp68301_timer_w)
AM_RANGE(0x280000, 0x280001) AM_READ(niyanpai_dipsw_r)
AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r)
AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
TMP68301_REGS
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x77ff) AM_READ(SMH_ROM)
AM_RANGE(0x7800, 0x7fff) AM_READ(SMH_RAM)
AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK(1))
static ADDRESS_MAP_START( niyanpai_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x77ff) AM_ROM
AM_RANGE(0x7800, 0x7fff) AM_RAM
AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1)
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x77ff) AM_WRITE(SMH_ROM)
AM_RANGE(0x7800, 0x7fff) AM_WRITE(SMH_RAM)
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
static ADDRESS_MAP_START( niyanpai_sound_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ctc", z80ctc_r, z80ctc_w)
AM_RANGE(0x50, 0x50) AM_READWRITE(tmpz84c011_0_pa_r, tmpz84c011_0_pa_w)
@ -848,13 +780,13 @@ static MACHINE_DRIVER_START( niyanpai )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", M68000, 12288000/2) /* TMP68301, 6.144 MHz */
MDRV_CPU_PROGRAM_MAP(niyanpai_readmem,niyanpai_writemem)
MDRV_CPU_PROGRAM_MAP(niyanpai_map,0)
MDRV_CPU_VBLANK_INT("screen", niyanpai_interrupt)
MDRV_CPU_ADD("audiocpu", Z80, 8000000/1) /* TMPZ84C011, 8.00 MHz */
MDRV_CPU_CONFIG(daisy_chain_sound)
MDRV_CPU_PROGRAM_MAP(sound_readmem, sound_writemem)
MDRV_CPU_IO_MAP(sound_io_map,0)
MDRV_CPU_PROGRAM_MAP(niyanpai_sound_map, 0)
MDRV_CPU_IO_MAP(niyanpai_sound_io_map,0)
MDRV_Z80CTC_ADD("ctc", 8000000/1 /* same as "audiocpu" */, ctc_intf)
@ -892,7 +824,7 @@ static MACHINE_DRIVER_START( musobana )
/* basic machine hardware */
MDRV_IMPORT_FROM(niyanpai)
MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_PROGRAM_MAP(musobana_readmem, musobana_writemem)
MDRV_CPU_PROGRAM_MAP(musobana_map, 0)
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( mhhonban )
@ -900,7 +832,7 @@ static MACHINE_DRIVER_START( mhhonban )
/* basic machine hardware */
MDRV_IMPORT_FROM(niyanpai)
MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_PROGRAM_MAP(mhhonban_readmem, mhhonban_writemem)
MDRV_CPU_PROGRAM_MAP(mhhonban_map, 0)
MACHINE_DRIVER_END