mirror of
https://github.com/holub/mame
synced 2025-05-04 21:43:05 +03:00
Memory map merge for twin16 driver.
(Rockin' the AM_RAM_WRITE handler. Awwwwh yeah.)
This commit is contained in:
parent
cb8514a175
commit
c9211856f1
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user