Memory map merge for twin16 driver.

(Rockin' the AM_RAM_WRITE handler.  Awwwwh yeah.)
This commit is contained in:
Andrew Gardner 2008-04-21 15:08:36 +00:00
parent cb8514a175
commit c9211856f1
2 changed files with 85 additions and 126 deletions

View File

@ -259,112 +259,71 @@ static WRITE16_HANDLER( cuebrckj_nvram_bank_w )
/* Memory Maps */
static ADDRESS_MAP_START( readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
AM_RANGE(0x8000, 0x8fff) AM_READ(SMH_RAM)
AM_RANGE(0x9000, 0x9000) AM_READ(twin16_sres_r)
static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x8fff) AM_RAM
AM_RANGE(0x9000, 0x9000) AM_READWRITE(twin16_sres_r, twin16_sres_w)
AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
AM_RANGE(0xb000, 0xb00d) AM_READ(K007232_read_port_0_r)
AM_RANGE(0xc001, 0xc001) AM_READ(YM2151_status_port_0_r)
AM_RANGE(0xf000, 0xf000) AM_READ(upd7759_0_busy_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
AM_RANGE(0x8000, 0x8fff) AM_WRITE(SMH_RAM)
AM_RANGE(0x9000, 0x9000) AM_WRITE(twin16_sres_w)
AM_RANGE(0xb000, 0xb00d) AM_WRITE(K007232_write_port_0_w)
AM_RANGE(0xb000, 0xb00d) AM_READWRITE(K007232_read_port_0_r, K007232_write_port_0_w)
AM_RANGE(0xc000, 0xc000) AM_WRITE(YM2151_register_port_0_w)
AM_RANGE(0xc001, 0xc001) AM_WRITE(YM2151_data_port_0_w)
AM_RANGE(0xc001, 0xc001) AM_READWRITE(YM2151_status_port_0_r, YM2151_data_port_0_w)
AM_RANGE(0xd000, 0xd000) AM_WRITE(upd7759_0_port_w)
AM_RANGE(0xe000, 0xe000) AM_WRITE(upd7759_0_start_w)
AM_RANGE(0xf000, 0xf000) AM_WRITE(SMH_NOP) // ???
AM_RANGE(0xf000, 0xf000) AM_READWRITE(upd7759_0_busy_r, SMH_NOP) // ??? write ???
ADDRESS_MAP_END
static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
AM_RANGE(0x040000, 0x043fff) AM_READ(COMRAM_r)
AM_RANGE(0x044000, 0x04ffff) AM_READ(SMH_RAM) // miaj
AM_RANGE(0x060000, 0x063fff) AM_READ(SMH_RAM)
AM_RANGE(0x080000, 0x080fff) AM_READ(SMH_RAM)
AM_RANGE(0x0a0000, 0x0a001b) AM_READ(twin16_input_r)
AM_RANGE(0x0b0000, 0x0b03ff) AM_READ(cuebrckj_nvram_r)
AM_RANGE(0x0c000e, 0x0c000f) AM_READ(twin16_sprite_status_r)
AM_RANGE(0x100000, 0x103fff) AM_READ(SMH_RAM)
AM_RANGE(0x104000, 0x105fff) AM_READ(SMH_RAM) // miaj
AM_RANGE(0x120000, 0x123fff) AM_READ(SMH_RAM)
ADDRESS_MAP_END
static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
AM_RANGE(0x040000, 0x043fff) AM_WRITE(COMRAM_w)
AM_RANGE(0x044000, 0x04ffff) AM_WRITE(SMH_RAM) // miaj
AM_RANGE(0x060000, 0x063fff) AM_WRITE(SMH_RAM)
AM_RANGE(0x080000, 0x080fff) AM_WRITE(twin16_paletteram_word_w) AM_BASE(&paletteram16)
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x040000, 0x043fff) AM_READWRITE(COMRAM_r, COMRAM_w)
AM_RANGE(0x044000, 0x04ffff) AM_RAM // miaj
AM_RANGE(0x060000, 0x063fff) AM_RAM
AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(twin16_paletteram_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x081000, 0x081fff) AM_WRITE(SMH_NOP)
AM_RANGE(0x0a0000, 0x0a001b) AM_READ(twin16_input_r)
AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(twin16_CPUA_register_w)
AM_RANGE(0x0a0008, 0x0a0009) AM_WRITE(sound_command_w)
AM_RANGE(0x0a0010, 0x0a0011) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0x0b0000, 0x0b03ff) AM_WRITE(cuebrckj_nvram_w)
AM_RANGE(0x0b0000, 0x0b03ff) AM_READWRITE(cuebrckj_nvram_r, cuebrckj_nvram_w)
AM_RANGE(0x0b0400, 0x0b0401) AM_WRITE(cuebrckj_nvram_bank_w)
AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(twin16_video_register_w)
AM_RANGE(0x100000, 0x103fff) AM_WRITE(twin16_videoram2_w) AM_BASE(&twin16_videoram2)
AM_RANGE(0x104000, 0x105fff) AM_WRITE(SMH_RAM) // miaj
AM_RANGE(0x120000, 0x123fff) AM_WRITE(SMH_RAM) AM_BASE(&videoram16)
AM_RANGE(0x0c000e, 0x0c000f) AM_READ(twin16_sprite_status_r)
AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(twin16_videoram2_w) AM_BASE(&twin16_videoram2)
AM_RANGE(0x104000, 0x105fff) AM_RAM // miaj
AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE(&videoram16)
AM_RANGE(0x140000, 0x143fff) AM_RAM AM_SHARE(1) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
ADDRESS_MAP_END
static ADDRESS_MAP_START( readmem_sub, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
AM_RANGE(0x040000, 0x043fff) AM_READ(COMRAM_r)
AM_RANGE(0x044000, 0x04ffff) AM_READ(SMH_RAM) // miaj
AM_RANGE(0x060000, 0x063fff) AM_READ(SMH_RAM)
static ADDRESS_MAP_START( sub_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x040000, 0x043fff) AM_READWRITE(COMRAM_r, COMRAM_w)
AM_RANGE(0x044000, 0x04ffff) AM_RAM // miaj
AM_RANGE(0x060000, 0x063fff) AM_RAM
AM_RANGE(0x080000, 0x09ffff) AM_READ(extra_rom_r)
AM_RANGE(0x480000, 0x483fff) AM_READ(videoram16_r)
AM_RANGE(0x500000, 0x53ffff) AM_READ(SMH_RAM)
AM_RANGE(0x600000, 0x6fffff) AM_READ(twin16_gfx_rom1_r)
AM_RANGE(0x700000, 0x77ffff) AM_READ(twin16_gfx_rom2_r)
AM_RANGE(0x780000, 0x79ffff) AM_READ(SMH_RAM)
ADDRESS_MAP_END
static ADDRESS_MAP_START( writemem_sub, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
AM_RANGE(0x040000, 0x043fff) AM_WRITE(COMRAM_w)
AM_RANGE(0x044000, 0x04ffff) AM_WRITE(SMH_RAM) // miaj
AM_RANGE(0x060000, 0x063fff) AM_WRITE(SMH_RAM)
AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(twin16_CPUB_register_w)
AM_RANGE(0x400000, 0x403fff) AM_RAM AM_SHARE(1)
AM_RANGE(0x480000, 0x483fff) AM_WRITE(videoram16_w)
AM_RANGE(0x500000, 0x53ffff) AM_WRITE(SMH_RAM) AM_BASE(&twin16_tile_gfx_ram)
AM_RANGE(0x780000, 0x79ffff) AM_WRITE(SMH_RAM) AM_BASE(&twin16_sprite_gfx_ram)
AM_RANGE(0x480000, 0x483fff) AM_READWRITE(videoram16_r, videoram16_w)
AM_RANGE(0x500000, 0x53ffff) AM_RAM AM_BASE(&twin16_tile_gfx_ram)
AM_RANGE(0x600000, 0x6fffff) AM_READ(twin16_gfx_rom1_r)
AM_RANGE(0x700000, 0x77ffff) AM_READ(twin16_gfx_rom2_r)
AM_RANGE(0x780000, 0x79ffff) AM_RAM AM_BASE(&twin16_sprite_gfx_ram)
ADDRESS_MAP_END
static ADDRESS_MAP_START( fround_readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
AM_RANGE(0x040000, 0x043fff) AM_READ(COMRAM_r)
AM_RANGE(0x060000, 0x063fff) AM_READ(SMH_RAM)
AM_RANGE(0x080000, 0x080fff) AM_READ(SMH_RAM)
static ADDRESS_MAP_START( fround_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x040000, 0x043fff) AM_READWRITE(COMRAM_r, COMRAM_w)
AM_RANGE(0x060000, 0x063fff) AM_RAM
AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(twin16_paletteram_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x0a0000, 0x0a001b) AM_READ(twin16_input_r)
AM_RANGE(0x0c000e, 0x0c000f) AM_READ(twin16_sprite_status_r)
AM_RANGE(0x100000, 0x103fff) AM_READ(SMH_RAM)
AM_RANGE(0x120000, 0x123fff) AM_READ(SMH_RAM)
AM_RANGE(0x140000, 0x143fff) AM_READ(SMH_RAM)
AM_RANGE(0x500000, 0x6fffff) AM_READ(twin16_gfx_rom1_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( fround_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
AM_RANGE(0x040000, 0x043fff) AM_WRITE(COMRAM_w)
AM_RANGE(0x060000, 0x063fff) AM_WRITE(SMH_RAM)
AM_RANGE(0x080000, 0x080fff) AM_WRITE(twin16_paletteram_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(fround_CPU_register_w)
AM_RANGE(0x0a0008, 0x0a0009) AM_WRITE(sound_command_w)
AM_RANGE(0x0a0010, 0x0a0011) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(twin16_video_register_w)
AM_RANGE(0x0c000e, 0x0c000f) AM_READ(twin16_sprite_status_r)
AM_RANGE(0x0e0000, 0x0e0001) AM_WRITE(fround_gfx_bank_w)
AM_RANGE(0x100000, 0x103fff) AM_WRITE(twin16_videoram2_w) AM_BASE(&twin16_videoram2)
AM_RANGE(0x120000, 0x123fff) AM_WRITE(SMH_RAM) AM_BASE(&videoram16)
AM_RANGE(0x140000, 0x143fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(twin16_videoram2_w) AM_BASE(&twin16_videoram2)
AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE(&videoram16)
AM_RANGE(0x140000, 0x143fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
AM_RANGE(0x500000, 0x6fffff) AM_READ(twin16_gfx_rom1_r)
ADDRESS_MAP_END
/* Input Ports */
@ -957,14 +916,14 @@ static MACHINE_DRIVER_START( twin16 )
// basic machine hardware
MDRV_CPU_ADD(Z80, 3579545)
/* audio CPU */
MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound)
MDRV_CPU_PROGRAM_MAP(sound_map,0)
MDRV_CPU_ADD(M68000, XTAL_18_432MHz/2)
MDRV_CPU_PROGRAM_MAP(readmem_sub,writemem_sub)
MDRV_CPU_PROGRAM_MAP(sub_map,0)
MDRV_CPU_VBLANK_INT("main", CPUB_interrupt)
MDRV_CPU_ADD(M68000, XTAL_18_432MHz/2)
MDRV_CPU_PROGRAM_MAP(readmem,writemem)
MDRV_CPU_PROGRAM_MAP(main_map,0)
MDRV_CPU_VBLANK_INT("main", CPUA_interrupt)
MDRV_INTERLEAVE(100)
@ -1015,10 +974,10 @@ static MACHINE_DRIVER_START( fround )
/* basic machine hardware */
MDRV_CPU_ADD(Z80, 3579545)
/* audio CPU */
MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound)
MDRV_CPU_PROGRAM_MAP(sound_map,0)
MDRV_CPU_ADD(M68000, 10000000)
MDRV_CPU_PROGRAM_MAP(fround_readmem,fround_writemem)
MDRV_CPU_PROGRAM_MAP(fround_map,0)
MDRV_CPU_VBLANK_INT("main", CPUA_interrupt)
MDRV_INTERLEAVE(100)