Memory maps merges for the following drivers:

* puckpkmn.c
* punchout.c
* qdrmfgp.c
* quizpani.c
* rabbit.c
* rainbow.c
* rcorsair.c
* redclash.c (also cleaned-up the irq/nmi generation on coin insertion)
* renegade.c
* rmhaihai.c
* rockrage.c
* rocnrope.c
* rollerg.c
* rollrace.c
* runaway.c
* rungun.c
* sangho.c
* sauro.c (also cleaned-up a video function)
* sbasketb.c
* sbugger.c
* scregg.c
* segae.c

Removed deprecat.h dependancy for usgames.c
This commit is contained in:
Angelo Salese 2009-04-28 23:43:22 +00:00
parent d88da3d539
commit b9cffa68c9
23 changed files with 500 additions and 802 deletions

View File

@ -126,40 +126,28 @@ static INPUT_PORTS_START( puckpkmn )
INPUT_PORTS_END INPUT_PORTS_END
static ADDRESS_MAP_START( puckpkmn_readmem, ADDRESS_SPACE_PROGRAM, 16 ) static ADDRESS_MAP_START( puckpkmn_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM) /* Main 68k Program Roms */ AM_RANGE(0x000000, 0x1fffff) AM_ROM /* Main 68k Program Roms */
AM_RANGE(0x700010, 0x700011) AM_READ_PORT("P2") AM_RANGE(0x700010, 0x700011) AM_READ_PORT("P2")
AM_RANGE(0x700012, 0x700013) AM_READ_PORT("P1") AM_RANGE(0x700012, 0x700013) AM_READ_PORT("P1")
AM_RANGE(0x700014, 0x700015) AM_READ_PORT("UNK") AM_RANGE(0x700014, 0x700015) AM_READ_PORT("UNK")
AM_RANGE(0x700016, 0x700017) AM_READ_PORT("DSW1") AM_RANGE(0x700016, 0x700017) AM_READ_PORT("DSW1")
AM_RANGE(0x700018, 0x700019) AM_READ_PORT("DSW2") AM_RANGE(0x700018, 0x700019) AM_READ_PORT("DSW2")
AM_RANGE(0x700022, 0x700023) AM_DEVREAD8("oki", okim6295_r, 0x00ff) /* M6295 Sound Chip Status Register */ AM_RANGE(0x700022, 0x700023) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff) /* M6295 Sound Chip Status Register/Writes */
AM_RANGE(0xa04000, 0xa04003) AM_DEVREAD8("ym", ym3438_r, 0xffff) /* Ym3438 Sound Chip Status Register */ AM_RANGE(0xa04000, 0xa04003) AM_DEVREADWRITE8("ym", ym3438_r,ym3438_w, 0xffff) /* Ym3438 Sound Chip Status Register */
AM_RANGE(0xc00000, 0xc0001f) AM_READ(genesis_vdp_r) /* VDP Access */ AM_RANGE(0xc00000, 0xc0001f) AM_READWRITE(genesis_vdp_r,genesis_vdp_w) /* VDP Access */
AM_RANGE(0xe00000, 0xe1ffff) AM_READ(SMH_BANK(1)) /* VDP sees the roms here */ AM_RANGE(0xe00000, 0xe1ffff) AM_ROMBANK(1) /* VDP sees the roms here */
AM_RANGE(0xfe0000, 0xfeffff) AM_READ(SMH_BANK(2)) /* VDP sees the ram here */ AM_RANGE(0xfe0000, 0xfeffff) AM_RAMBANK(2) /* VDP sees the ram here */
AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM) /* Main Ram */ AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_BASE(&main_ram) /* Main Ram */
/* Unknown reads: */ /* Unknown reads/writes: */
// AM_RANGE(0xa10000, 0xa10001) AM_READNOP /* ? once */ AM_RANGE(0xa00000, 0xa00551) AM_WRITENOP /* ? */
AM_RANGE(0xa10002, 0xa10005) AM_READNOP /* ? alternative way of reading inputs ? */ // AM_RANGE(0xa10000, 0xa10001) AM_READNOP /* ? once */
AM_RANGE(0xa11100, 0xa11101) AM_READNOP /* ? */ AM_RANGE(0xa10002, 0xa10005) AM_NOP /* ? alternative way of reading inputs ? */
ADDRESS_MAP_END AM_RANGE(0xa11100, 0xa11101) AM_NOP /* ? */
// AM_RANGE(0xa10008, 0xa1000d) AM_WRITENOP /* ? once */
static ADDRESS_MAP_START( puckpkmn_writemem, ADDRESS_SPACE_PROGRAM, 16 ) // AM_RANGE(0xa14000, 0xa14003) AM_WRITENOP /* ? once */
AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM) /* Main 68k Program Roms */ AM_RANGE(0xa11200, 0xa11201) AM_WRITENOP /* ? */
AM_RANGE(0x700022, 0x700023) AM_DEVWRITE8("oki", okim6295_w, 0x00ff) /* M6295 Sound Chip Writes */
AM_RANGE(0xa04000, 0xa04003) AM_DEVWRITE8("ym", ym3438_w, 0xffff) /* Ym3438 Sound Chip Writes */
AM_RANGE(0xc00000, 0xc0001f) AM_WRITE(genesis_vdp_w) /* VDP Access */
AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM) AM_BASE(&main_ram) /* Main Ram */
/* Unknown writes: */
AM_RANGE(0xa00000, 0xa00551) AM_WRITE(SMH_RAM) /* ? */
AM_RANGE(0xa10002, 0xa10005) AM_WRITENOP /* ? alternative way of reading inputs ? */
// AM_RANGE(0xa10008, 0xa1000d) AM_WRITENOP /* ? once */
// AM_RANGE(0xa14000, 0xa14003) AM_WRITENOP /* ? once */
AM_RANGE(0xa11100, 0xa11101) AM_WRITENOP /* ? */
AM_RANGE(0xa11200, 0xa11201) AM_WRITENOP /* ? */
ADDRESS_MAP_END ADDRESS_MAP_END
@ -172,7 +160,7 @@ static MACHINE_DRIVER_START( puckpkmn )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu",M68000, MASTER_CLOCK/7) /*???*/ MDRV_CPU_ADD("maincpu",M68000, MASTER_CLOCK/7) /*???*/
MDRV_CPU_PROGRAM_MAP(puckpkmn_readmem,puckpkmn_writemem) MDRV_CPU_PROGRAM_MAP(puckpkmn_map,0)
MDRV_CPU_VBLANK_INT("screen", genesis_vblank_interrupt) MDRV_CPU_VBLANK_INT("screen", genesis_vblank_interrupt)
MDRV_MACHINE_START(genesis) MDRV_MACHINE_START(genesis)

View File

@ -365,7 +365,7 @@ static ADDRESS_MAP_START( armwrest_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 ) static ADDRESS_MAP_START( punchout_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
@ -388,18 +388,12 @@ static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x07, 0x07) AM_MIRROR(0xf0) AM_MASK(0xf0) AM_READWRITE(spunchout_exp_r, spunchout_exp_w) AM_RANGE(0x07, 0x07) AM_MIRROR(0xf0) AM_MASK(0xf0) AM_READWRITE(spunchout_exp_r, spunchout_exp_w)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( punchout_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_RAM) AM_RANGE(0x0000, 0x07ff) AM_RAM
AM_RANGE(0x4016, 0x4016) AM_READ(soundlatch_r) AM_RANGE(0x4016, 0x4016) AM_READ(soundlatch_r)
AM_RANGE(0x4017, 0x4017) AM_READ(soundlatch2_r) AM_RANGE(0x4017, 0x4017) AM_READ(soundlatch2_r)
AM_RANGE(0x4000, 0x4017) AM_DEVREAD("nes", nes_psg_r) AM_RANGE(0x4000, 0x4017) AM_DEVREADWRITE("nes", nes_psg_r,nes_psg_w)
AM_RANGE(0xe000, 0xffff) AM_READ(SMH_ROM) AM_RANGE(0xe000, 0xffff) AM_ROM
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM)
AM_RANGE(0x4000, 0x4017) AM_DEVWRITE("nes", nes_psg_w)
AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_ROM)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -613,11 +607,11 @@ static MACHINE_DRIVER_START( punchout )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", Z80, 8000000/2) /* 4 MHz */ MDRV_CPU_ADD("maincpu", Z80, 8000000/2) /* 4 MHz */
MDRV_CPU_PROGRAM_MAP(punchout_map,0) MDRV_CPU_PROGRAM_MAP(punchout_map,0)
MDRV_CPU_IO_MAP(io_map,0) MDRV_CPU_IO_MAP(punchout_io_map,0)
MDRV_CPU_VBLANK_INT("top", nmi_line_pulse) MDRV_CPU_VBLANK_INT("top", nmi_line_pulse)
MDRV_CPU_ADD("audiocpu", N2A03, N2A03_DEFAULTCLOCK) MDRV_CPU_ADD("audiocpu", N2A03, N2A03_DEFAULTCLOCK)
MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem) MDRV_CPU_PROGRAM_MAP(punchout_sound_map,0)
MDRV_CPU_VBLANK_INT("top", nmi_line_pulse) MDRV_CPU_VBLANK_INT("top", nmi_line_pulse)
MDRV_MACHINE_RESET(punchout) MDRV_MACHINE_RESET(punchout)

View File

@ -327,77 +327,49 @@ static void gp2_ide_interrupt(const device_config *device, int state)
* *
*************************************/ *************************************/
static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 16 ) static ADDRESS_MAP_START( qdrmfgp_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM) AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM) /* work ram */ AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_BASE(&workram) /* work ram */
AM_RANGE(0x180000, 0x183fff) AM_READ(SMH_RAM) /* backup ram */ AM_RANGE(0x180000, 0x183fff) AM_RAM AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size) /* backup ram */
AM_RANGE(0x280000, 0x280fff) AM_READ(SMH_RAM) /* color ram */ AM_RANGE(0x280000, 0x280fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x320000, 0x32001f) AM_READ(K053252_word_r) /* ccu */ AM_RANGE(0x300000, 0x30003f) AM_WRITE(K056832_word_w) /* video reg */
AM_RANGE(0x330000, 0x330001) AM_READ_PORT("SENSOR") /* battery power & service sw */ AM_RANGE(0x320000, 0x32001f) AM_READWRITE(K053252_word_r,K053252_word_w) /* ccu */
AM_RANGE(0x340000, 0x340001) AM_READ_PORT("340000") /* inputport */ AM_RANGE(0x330000, 0x330001) AM_READ_PORT("SENSOR") /* battery power & service sw */
AM_RANGE(0x800000, 0x80045f) AM_DEVREAD8("konami", k054539_r, 0x00ff) /* sound regs */ AM_RANGE(0x340000, 0x340001) AM_READ_PORT("340000") /* inputport */
AM_RANGE(0x880000, 0x881fff) AM_READ(K056832_ram_word_r) /* vram */ AM_RANGE(0x350000, 0x350001) AM_WRITENOP /* unknown */
AM_RANGE(0x882000, 0x883fff) AM_READ(K056832_ram_word_r) /* vram (mirror) */ AM_RANGE(0x360000, 0x360001) AM_WRITENOP /* unknown */
AM_RANGE(0x900000, 0x901fff) AM_READ(v_rom_r) /* gfxrom through */ AM_RANGE(0x370000, 0x370001) AM_WRITE(gp_control_w) /* control reg */
AM_RANGE(0xa00000, 0xa0000f) AM_DEVREAD("ide", ide_std_r) /* IDE control regs */ AM_RANGE(0x380000, 0x380001) AM_WRITENOP /* Watchdog */
AM_RANGE(0xa4000c, 0xa4000f) AM_DEVREAD("ide", ide_alt_r) /* IDE status control reg */ AM_RANGE(0x800000, 0x80045f) AM_DEVREADWRITE8("konami", k054539_r,k054539_w, 0x00ff) /* sound regs */
AM_RANGE(0xc00000, 0xcbffff) AM_READ(sndram_r) /* sound ram */ AM_RANGE(0x880000, 0x881fff) AM_READWRITE(K056832_ram_word_r,K056832_ram_word_w) /* vram */
ADDRESS_MAP_END AM_RANGE(0x882000, 0x883fff) AM_READWRITE(K056832_ram_word_r,K056832_ram_word_w) /* vram (mirror) */
AM_RANGE(0x900000, 0x901fff) AM_READ(v_rom_r) /* gfxrom through */
static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0xa00000, 0xa0000f) AM_DEVREADWRITE("ide", ide_std_r,ide_std_w) /* IDE control regs */
AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM) AM_RANGE(0xa4000c, 0xa4000f) AM_DEVREADWRITE("ide", ide_alt_r,ide_alt_w) /* IDE status control reg */
AM_RANGE(0x100000, 0x10ffff) AM_WRITE(SMH_RAM) AM_BASE(&workram) /* work ram */ AM_RANGE(0xc00000, 0xcbffff) AM_READWRITE(sndram_r,sndram_w) /* sound ram */
AM_RANGE(0x180000, 0x183fff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size) /* backup ram */
AM_RANGE(0x280000, 0x280fff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x300000, 0x30003f) AM_WRITE(K056832_word_w) /* video reg */
AM_RANGE(0x320000, 0x32001f) AM_WRITE(K053252_word_w) /* ccu */
AM_RANGE(0x350000, 0x350001) AM_WRITENOP /* unknown */
AM_RANGE(0x360000, 0x360001) AM_WRITENOP /* unknown */
AM_RANGE(0x370000, 0x370001) AM_WRITE(gp_control_w) /* control reg */
AM_RANGE(0x380000, 0x380001) AM_WRITENOP /* Watchdog */
AM_RANGE(0x800000, 0x80045f) AM_DEVWRITE8("konami", k054539_w, 0x00ff) /* sound regs */
AM_RANGE(0x880000, 0x881fff) AM_WRITE(K056832_ram_word_w) /* vram */
AM_RANGE(0x882000, 0x883fff) AM_WRITE(K056832_ram_word_w) /* vram (mirror) */
AM_RANGE(0xa00000, 0xa0000f) AM_DEVWRITE("ide", ide_std_w) /* IDE control regs */
AM_RANGE(0xa4000c, 0xa4000f) AM_DEVWRITE("ide", ide_alt_w) /* IDE status control reg */
AM_RANGE(0xc00000, 0xcbffff) AM_WRITE(sndram_w) /* sound ram */
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( gp2_readmem, ADDRESS_SPACE_PROGRAM, 16 ) static ADDRESS_MAP_START( qdrmfgp2_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM) AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x110fff) AM_READ(SMH_RAM) /* work ram */ AM_RANGE(0x100000, 0x110fff) AM_RAM AM_BASE(&workram) /* work ram */
AM_RANGE(0x180000, 0x183fff) AM_READ(SMH_RAM) /* backup ram */ AM_RANGE(0x180000, 0x183fff) AM_RAM AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size) /* backup ram */
AM_RANGE(0x280000, 0x280fff) AM_READ(SMH_RAM) /* color ram */ AM_RANGE(0x280000, 0x280fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x320000, 0x32001f) AM_READ(K053252_word_r) /* ccu */ AM_RANGE(0x300000, 0x30003f) AM_WRITE(K056832_word_w) /* video reg */
AM_RANGE(0x330000, 0x330001) AM_READ_PORT("SENSOR") /* battery power & service */ AM_RANGE(0x320000, 0x32001f) AM_READWRITE(K053252_word_r,K053252_word_w) /* ccu */
AM_RANGE(0x340000, 0x340001) AM_READ_PORT("340000") /* inputport */ AM_RANGE(0x330000, 0x330001) AM_READ_PORT("SENSOR") /* battery power & service */
AM_RANGE(0x800000, 0x80045f) AM_DEVREAD8("konami", k054539_r, 0x00ff) /* sound regs */ AM_RANGE(0x340000, 0x340001) AM_READ_PORT("340000") /* inputport */
AM_RANGE(0x880000, 0x881fff) AM_READ(gp2_vram_r) /* vram */ AM_RANGE(0x350000, 0x350001) AM_WRITENOP /* unknown */
AM_RANGE(0x89f000, 0x8a0fff) AM_READ(gp2_vram_mirror_r) /* vram (mirror) */ AM_RANGE(0x360000, 0x360001) AM_WRITENOP /* unknown */
AM_RANGE(0x900000, 0x901fff) AM_READ(v_rom_r) /* gfxrom through */ AM_RANGE(0x370000, 0x370001) AM_WRITE(gp2_control_w) /* control reg */
AM_RANGE(0xa00000, 0xa0000f) AM_READ(gp2_ide_std_r) /* IDE control regs */ AM_RANGE(0x380000, 0x380001) AM_WRITENOP /* Watchdog */
AM_RANGE(0xa4000c, 0xa4000f) AM_DEVREAD("ide", ide_alt_r) /* IDE status control reg */ AM_RANGE(0x800000, 0x80045f) AM_DEVREADWRITE8("konami", k054539_r,k054539_w, 0x00ff) /* sound regs */
AM_RANGE(0xc00000, 0xcbffff) AM_READ(sndram_r) /* sound ram */ AM_RANGE(0x880000, 0x881fff) AM_READWRITE(gp2_vram_r,gp2_vram_w) /* vram */
ADDRESS_MAP_END AM_RANGE(0x89f000, 0x8a0fff) AM_READWRITE(gp2_vram_mirror_r,gp2_vram_mirror_w) /* vram (mirror) */
AM_RANGE(0x900000, 0x901fff) AM_READ(v_rom_r) /* gfxrom through */
static ADDRESS_MAP_START( gp2_writemem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0xa00000, 0xa0000f) AM_READ(gp2_ide_std_r) AM_DEVWRITE("ide", ide_std_w) /* IDE control regs */
AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM) AM_RANGE(0xa4000c, 0xa4000f) AM_DEVREADWRITE("ide", ide_alt_r,ide_alt_w) /* IDE status control reg */
AM_RANGE(0x100000, 0x110fff) AM_WRITE(SMH_RAM) AM_BASE(&workram) /* work ram */ AM_RANGE(0xc00000, 0xcbffff) AM_READWRITE(sndram_r,sndram_w) /* sound ram */
AM_RANGE(0x180000, 0x183fff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size) /* backup ram */
AM_RANGE(0x280000, 0x280fff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x300000, 0x30003f) AM_WRITE(K056832_word_w) /* video reg */
AM_RANGE(0x320000, 0x32001f) AM_WRITE(K053252_word_w) /* ccu */
AM_RANGE(0x350000, 0x350001) AM_WRITENOP /* unknown */
AM_RANGE(0x360000, 0x360001) AM_WRITENOP /* unknown */
AM_RANGE(0x370000, 0x370001) AM_WRITE(gp2_control_w) /* control reg */
AM_RANGE(0x380000, 0x380001) AM_WRITENOP /* Watchdog */
AM_RANGE(0x800000, 0x80045f) AM_DEVWRITE8("konami", k054539_w, 0x00ff) /* sound regs */
AM_RANGE(0x880000, 0x881fff) AM_WRITE(gp2_vram_w) /* vram */
AM_RANGE(0x89f000, 0x8a0fff) AM_WRITE(gp2_vram_mirror_w) /* vram (mirror) */
AM_RANGE(0xa00000, 0xa0000f) AM_DEVWRITE("ide", ide_std_w) /* IDE control regs */
AM_RANGE(0xa4000c, 0xa4000f) AM_DEVWRITE("ide", ide_alt_w) /* IDE status control reg */
AM_RANGE(0xc00000, 0xcbffff) AM_WRITE(sndram_w) /* sound ram */
ADDRESS_MAP_END ADDRESS_MAP_END
@ -646,7 +618,7 @@ static MACHINE_DRIVER_START( qdrmfgp )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", M68000, 32000000/2) /* 16.000 MHz */ MDRV_CPU_ADD("maincpu", M68000, 32000000/2) /* 16.000 MHz */
MDRV_CPU_PROGRAM_MAP(readmem,writemem) MDRV_CPU_PROGRAM_MAP(qdrmfgp_map,0)
MDRV_CPU_VBLANK_INT_HACK(qdrmfgp_interrupt, 2) MDRV_CPU_VBLANK_INT_HACK(qdrmfgp_interrupt, 2)
MDRV_MACHINE_START(qdrmfgp) MDRV_MACHINE_START(qdrmfgp)
@ -681,7 +653,7 @@ static MACHINE_DRIVER_START( qdrmfgp2 )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", M68000, 32000000/2) /* 16.000 MHz */ MDRV_CPU_ADD("maincpu", M68000, 32000000/2) /* 16.000 MHz */
MDRV_CPU_PROGRAM_MAP(gp2_readmem,gp2_writemem) MDRV_CPU_PROGRAM_MAP(qdrmfgp2_map,0)
MDRV_CPU_VBLANK_INT("screen", qdrmfgp2_interrupt) MDRV_CPU_VBLANK_INT("screen", qdrmfgp2_interrupt)
MDRV_MACHINE_START(qdrmfgp) MDRV_MACHINE_START(qdrmfgp)

View File

@ -47,35 +47,27 @@ extern WRITE16_HANDLER( quizpani_tilesbank_w );
extern VIDEO_START( quizpani ); extern VIDEO_START( quizpani );
extern VIDEO_UPDATE( quizpani ); extern VIDEO_UPDATE( quizpani );
static ADDRESS_MAP_START( quizpani_readmem, ADDRESS_SPACE_PROGRAM, 16 ) static ADDRESS_MAP_START( quizpani_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM) AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x100001) AM_READ_PORT("SYSTEM") AM_RANGE(0x100000, 0x100001) AM_READ_PORT("SYSTEM")
AM_RANGE(0x100002, 0x100003) AM_READ_PORT("P1_P2") AM_RANGE(0x100002, 0x100003) AM_READ_PORT("P1_P2")
AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW1") AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW1")
AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2") AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2")
AM_RANGE(0x104000, 0x104001) AM_DEVREAD8("oki", okim6295_r, 0x00ff) AM_RANGE(0x100014, 0x100015) AM_WRITENOP
AM_RANGE(0x108000, 0x1083ff) AM_READ(SMH_RAM) AM_RANGE(0x100016, 0x100017) AM_WRITENOP /* IRQ enable? */
AM_RANGE(0x110000, 0x113fff) AM_READ(SMH_RAM) AM_RANGE(0x100018, 0x100019) AM_WRITE(quizpani_tilesbank_w)
AM_RANGE(0x180000, 0x18ffff) AM_READ(SMH_RAM) AM_RANGE(0x104000, 0x104001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff)
AM_RANGE(0x200000, 0x33ffff) AM_READ(SMH_ROM) AM_RANGE(0x104020, 0x104027) AM_WRITE(NMK112_okibank_lsb_w)
AM_RANGE(0x108000, 0x1083ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x108400, 0x1085ff) AM_WRITENOP
AM_RANGE(0x10c000, 0x10c007) AM_RAM AM_BASE(&quizpani_scrollreg)
AM_RANGE(0x10c008, 0x10c403) AM_WRITENOP
AM_RANGE(0x110000, 0x113fff) AM_RAM_WRITE(quizpani_bg_videoram_w) AM_BASE(&quizpani_bg_videoram)
AM_RANGE(0x11c000, 0x11ffff) AM_RAM_WRITE(quizpani_txt_videoram_w) AM_BASE(&quizpani_txt_videoram)
AM_RANGE(0x180000, 0x18ffff) AM_RAM
AM_RANGE(0x200000, 0x33ffff) AM_ROM
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( quizpani_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
AM_RANGE(0x100014, 0x100015) AM_WRITENOP
AM_RANGE(0x100016, 0x100017) AM_WRITENOP /* IRQ eanble? */
AM_RANGE(0x100018, 0x100019) AM_WRITE(quizpani_tilesbank_w)
AM_RANGE(0x104000, 0x104001) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
AM_RANGE(0x104020, 0x104027) AM_WRITE(NMK112_okibank_lsb_w)
AM_RANGE(0x108000, 0x1083ff) AM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x108400, 0x1085ff) AM_WRITENOP
AM_RANGE(0x10c000, 0x10c007) AM_WRITE(SMH_RAM) AM_BASE(&quizpani_scrollreg)
AM_RANGE(0x10c008, 0x10c403) AM_WRITENOP
AM_RANGE(0x110000, 0x113fff) AM_WRITE(quizpani_bg_videoram_w) AM_BASE(&quizpani_bg_videoram)
AM_RANGE(0x11c000, 0x11ffff) AM_WRITE(quizpani_txt_videoram_w) AM_BASE(&quizpani_txt_videoram)
AM_RANGE(0x180000, 0x18ffff) AM_WRITE(SMH_RAM)
AM_RANGE(0x200000, 0x33ffff) AM_WRITE(SMH_ROM)
ADDRESS_MAP_END
static INPUT_PORTS_START( quizpani ) static INPUT_PORTS_START( quizpani )
PORT_START("SYSTEM") PORT_START("SYSTEM")
@ -249,7 +241,7 @@ static MACHINE_RESET( quizpani )
static MACHINE_DRIVER_START( quizpani ) static MACHINE_DRIVER_START( quizpani )
MDRV_CPU_ADD("maincpu", M68000, 10000000) MDRV_CPU_ADD("maincpu", M68000, 10000000)
MDRV_CPU_PROGRAM_MAP(quizpani_readmem,quizpani_writemem) MDRV_CPU_PROGRAM_MAP(quizpani_map,0)
MDRV_CPU_VBLANK_INT("screen", irq4_line_hold) MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
MDRV_CPU_PERIODIC_INT(irq1_line_hold,164) // music tempo MDRV_CPU_PERIODIC_INT(irq1_line_hold,164) // music tempo

View File

@ -479,23 +479,6 @@ static READ32_HANDLER( randomrabbits )
return mame_rand(space->machine); return mame_rand(space->machine);
} }
static ADDRESS_MAP_START( rabbit_readmem, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM)
AM_RANGE(0x200000, 0x200003) AM_READ_PORT("INPUTS")
AM_RANGE(0x400010, 0x400013) AM_READ(randomrabbits) // gfx chip status?
AM_RANGE(0x400980, 0x400983) AM_READ(randomrabbits) // sound chip status?
AM_RANGE(0x400984, 0x400987) AM_READ(randomrabbits) // sound chip status?
AM_RANGE(0x440000, 0x47ffff) AM_READ(SMH_BANK(1)) // roms read from here during testing
/* tilemaps */
AM_RANGE(0x480000, 0x483fff) AM_READ(rabbit_tilemap0_r)
AM_RANGE(0x484000, 0x487fff) AM_READ(rabbit_tilemap1_r)
AM_RANGE(0x488000, 0x48bfff) AM_READ(rabbit_tilemap2_r)
AM_RANGE(0x48c000, 0x48ffff) AM_READ(rabbit_tilemap3_r)
AM_RANGE(0x494000, 0x49ffff) AM_READ(SMH_RAM)
AM_RANGE(0x4a0000, 0x4affff) AM_READ(SMH_RAM) /* palette */
AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM)
ADDRESS_MAP_END
/* rom bank is used when testing roms, not currently hooked up */ /* rom bank is used when testing roms, not currently hooked up */
static WRITE32_HANDLER ( rabbit_rombank_w ) static WRITE32_HANDLER ( rabbit_rombank_w )
{ {
@ -714,54 +697,45 @@ static WRITE32_HANDLER( rabbit_eeprom_write )
} }
} }
static ADDRESS_MAP_START( rabbit_writemem, ADDRESS_SPACE_PROGRAM, 32 ) static ADDRESS_MAP_START( rabbit_map, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x000000, 0x1fffff) AM_ROM
AM_RANGE(0x000000, 0x000003) AM_WRITENOP // bug in code / emulation? AM_RANGE(0x000000, 0x000003) AM_WRITENOP // bug in code / emulation?
AM_RANGE(0x000010, 0x000013) AM_WRITENOP // bug in code / emulation? AM_RANGE(0x000010, 0x000013) AM_WRITENOP // bug in code / emulation?
AM_RANGE(0x000024, 0x000027) AM_WRITENOP // bug in code / emulation? AM_RANGE(0x000024, 0x000027) AM_WRITENOP // bug in code / emulation?
AM_RANGE(0x00719C, 0x00719F) AM_WRITENOP // bug in code / emulation? AM_RANGE(0x00719c, 0x00719f) AM_WRITENOP // bug in code / emulation?
AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM) AM_RANGE(0x200000, 0x200003) AM_READ_PORT("INPUTS") AM_WRITE(rabbit_eeprom_write)
AM_RANGE(0x200000, 0x200003) AM_WRITE(rabbit_eeprom_write) AM_RANGE(0x400010, 0x400013) AM_READ(randomrabbits) // gfx chip status?
AM_RANGE(0x400980, 0x400983) AM_READ(randomrabbits) // sound chip status?
AM_RANGE(0x400984, 0x400987) AM_READ(randomrabbits) // sound chip status?
/* this lot are probably gfxchip/blitter etc. related */ /* this lot are probably gfxchip/blitter etc. related */
AM_RANGE(0x400010, 0x400013) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_viewregs0 ) AM_RANGE(0x400010, 0x400013) AM_WRITEONLY AM_BASE( &rabbit_viewregs0 )
AM_RANGE(0x400100, 0x400117) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_tilemap_regs[0] ) // tilemap regs1 AM_RANGE(0x400100, 0x400117) AM_WRITEONLY AM_BASE( &rabbit_tilemap_regs[0] ) // tilemap regs1
AM_RANGE(0x400120, 0x400137) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_tilemap_regs[1] ) // tilemap regs2 AM_RANGE(0x400120, 0x400137) AM_WRITEONLY AM_BASE( &rabbit_tilemap_regs[1] ) // tilemap regs2
AM_RANGE(0x400140, 0x400157) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_tilemap_regs[2] ) // tilemap regs3 AM_RANGE(0x400140, 0x400157) AM_WRITEONLY AM_BASE( &rabbit_tilemap_regs[2] ) // tilemap regs3
AM_RANGE(0x400160, 0x400177) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_tilemap_regs[3] ) // tilemap regs4 AM_RANGE(0x400160, 0x400177) AM_WRITEONLY AM_BASE( &rabbit_tilemap_regs[3] ) // tilemap regs4
AM_RANGE(0x400200, 0x40021b) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_spriteregs ) // sprregs? AM_RANGE(0x400200, 0x40021b) AM_WRITEONLY AM_BASE( &rabbit_spriteregs ) // sprregs?
AM_RANGE(0x400300, 0x400303) AM_WRITE(rabbit_rombank_w) // used during rom testing, rombank/area select + something else? AM_RANGE(0x400300, 0x400303) AM_WRITE(rabbit_rombank_w) // used during rom testing, rombank/area select + something else?
AM_RANGE(0x400400, 0x400413) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_viewregs6 ) // some global controls? (brightness etc.?) AM_RANGE(0x400400, 0x400413) AM_WRITEONLY AM_BASE( &rabbit_viewregs6 ) // some global controls? (brightness etc.?)
AM_RANGE(0x400500, 0x400503) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_viewregs7 ) AM_RANGE(0x400500, 0x400503) AM_WRITEONLY AM_BASE( &rabbit_viewregs7 )
AM_RANGE(0x400700, 0x40070f) AM_WRITE(rabbit_blitter_w) AM_BASE( &rabbit_blitterregs ) AM_RANGE(0x400700, 0x40070f) AM_WRITE(rabbit_blitter_w) AM_BASE( &rabbit_blitterregs )
AM_RANGE(0x400800, 0x40080f) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_viewregs9 ) // never changes? AM_RANGE(0x400800, 0x40080f) AM_WRITEONLY AM_BASE( &rabbit_viewregs9 ) // never changes?
AM_RANGE(0x400900, 0x40098f) AM_WRITE(rabbit_audio_w) AM_RANGE(0x400900, 0x40098f) AM_WRITE(rabbit_audio_w)
/* hmm */ /* hmm */
AM_RANGE(0x479700, 0x479713) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_viewregs10 ) AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_BASE( &rabbit_viewregs10 )
AM_RANGE(0x440000, 0x47ffff) AM_ROMBANK(1) // roms read from here during testing
/* tilemaps */ /* tilemaps */
AM_RANGE(0x480000, 0x483fff) AM_WRITE(rabbit_tilemap0_w) AM_RANGE(0x480000, 0x483fff) AM_READWRITE(rabbit_tilemap0_r,rabbit_tilemap0_w)
AM_RANGE(0x484000, 0x487fff) AM_WRITE(rabbit_tilemap1_w) AM_RANGE(0x484000, 0x487fff) AM_READWRITE(rabbit_tilemap1_r,rabbit_tilemap1_w)
AM_RANGE(0x488000, 0x48bfff) AM_WRITE(rabbit_tilemap2_w) AM_RANGE(0x488000, 0x48bfff) AM_READWRITE(rabbit_tilemap2_r,rabbit_tilemap2_w)
AM_RANGE(0x48c000, 0x48ffff) AM_WRITE(rabbit_tilemap3_w) AM_RANGE(0x48c000, 0x48ffff) AM_READWRITE(rabbit_tilemap3_r,rabbit_tilemap3_w)
AM_RANGE(0x494000, 0x497fff) AM_WRITE(SMH_RAM) AM_BASE(&rabbit_spriteram) // sprites? AM_RANGE(0x494000, 0x497fff) AM_RAM AM_BASE(&rabbit_spriteram) // sprites?
AM_RANGE(0x4a0000, 0x4affff) AM_WRITE(rabbit_paletteram_dword_w) AM_BASE(&paletteram32) AM_RANGE(0x4a0000, 0x4affff) AM_RAM_WRITE(rabbit_paletteram_dword_w) AM_BASE(&paletteram32)
AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM) AM_RANGE(0xff0000, 0xffffff) AM_RAM
ADDRESS_MAP_END ADDRESS_MAP_END
/* tmmjprd has a different memory map */ /* tmmjprd has a different memory map */
static ADDRESS_MAP_START( tmmjprd_readmem, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM)
AM_RANGE(0x200010, 0x200013) AM_READ(randomrabbits) // gfx chip status?
AM_RANGE(0x200980, 0x200983) AM_READ(randomrabbits) // sound chip status?
AM_RANGE(0x200984, 0x200987) AM_READ(randomrabbits) // sound chip status?
AM_RANGE(0x280000, 0x283fff) AM_READ(rabbit_tilemap0_r)
AM_RANGE(0x284000, 0x287fff) AM_READ(rabbit_tilemap1_r)
AM_RANGE(0x288000, 0x28bfff) AM_READ(rabbit_tilemap2_r)
AM_RANGE(0x28c000, 0x28ffff) AM_READ(rabbit_tilemap3_r)
AM_RANGE(0x290000, 0x29ffff) AM_READ(SMH_RAM)
AM_RANGE(0x400000, 0x400003) AM_READ_PORT("INPUTS")
AM_RANGE(0xf00000, 0xffffff) AM_READ(SMH_RAM)
ADDRESS_MAP_END
static WRITE32_HANDLER( tmmjprd_paletteram_dword_w ) static WRITE32_HANDLER( tmmjprd_paletteram_dword_w )
{ {
int r,g,b; int r,g,b;
@ -774,36 +748,40 @@ static WRITE32_HANDLER( tmmjprd_paletteram_dword_w )
palette_set_color(space->machine,(offset^0xff)+0x2000,MAKE_RGB(r,g,b)); palette_set_color(space->machine,(offset^0xff)+0x2000,MAKE_RGB(r,g,b));
} }
static ADDRESS_MAP_START( tmmjprd_map, ADDRESS_SPACE_PROGRAM, 32 )
static ADDRESS_MAP_START( tmmjprd_writemem, ADDRESS_SPACE_PROGRAM, 32 ) AM_RANGE(0x000000, 0x1fffff) AM_ROM
AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM) AM_RANGE(0x200010, 0x200013) AM_READ(randomrabbits) // gfx chip status?
/* check these are used .. */ AM_RANGE(0x200980, 0x200983) AM_READ(randomrabbits) // sound chip status?
// AM_RANGE(0x200010, 0x200013) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_viewregs0 ) AM_RANGE(0x200984, 0x200987) AM_READ(randomrabbits) // sound chip status?
AM_RANGE(0x200100, 0x200117) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_tilemap_regs[0] ) // tilemap regs1 /* check these are used .. */
AM_RANGE(0x200120, 0x200137) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_tilemap_regs[1] ) // tilemap regs2 // AM_RANGE(0x200010, 0x200013) AM_WRITEONLY AM_BASE( &rabbit_viewregs0 )
AM_RANGE(0x200140, 0x200157) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_tilemap_regs[2] ) // tilemap regs3 AM_RANGE(0x200100, 0x200117) AM_WRITEONLY AM_BASE( &rabbit_tilemap_regs[0] ) // tilemap regs1
AM_RANGE(0x200160, 0x200177) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_tilemap_regs[3] ) // tilemap regs4 AM_RANGE(0x200120, 0x200137) AM_WRITEONLY AM_BASE( &rabbit_tilemap_regs[1] ) // tilemap regs2
AM_RANGE(0x200200, 0x20021b) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_spriteregs ) // sprregs? AM_RANGE(0x200140, 0x200157) AM_WRITEONLY AM_BASE( &rabbit_tilemap_regs[2] ) // tilemap regs3
AM_RANGE(0x200160, 0x200177) AM_WRITEONLY AM_BASE( &rabbit_tilemap_regs[3] ) // tilemap regs4
AM_RANGE(0x200200, 0x20021b) AM_WRITEONLY AM_BASE( &rabbit_spriteregs ) // sprregs?
// AM_RANGE(0x200300, 0x200303) AM_WRITE(rabbit_rombank_w) // used during rom testing, rombank/area select + something else? // AM_RANGE(0x200300, 0x200303) AM_WRITE(rabbit_rombank_w) // used during rom testing, rombank/area select + something else?
// AM_RANGE(0x200400, 0x200413) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_viewregs6 ) // some global controls? (brightness etc.?) // AM_RANGE(0x200400, 0x200413) AM_WRITEONLY AM_BASE( &rabbit_viewregs6 ) // some global controls? (brightness etc.?)
// AM_RANGE(0x200500, 0x200503) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_viewregs7 ) // AM_RANGE(0x200500, 0x200503) AM_WRITEONLY AM_BASE( &rabbit_viewregs7 )
// AM_RANGE(0x200700, 0x20070f) AM_WRITE(rabbit_blitter_w) AM_BASE( &rabbit_blitterregs ) // AM_RANGE(0x200700, 0x20070f) AM_WRITE(rabbit_blitter_w) AM_BASE( &rabbit_blitterregs )
// AM_RANGE(0x200800, 0x20080f) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_viewregs9 ) // never changes? // AM_RANGE(0x200800, 0x20080f) AM_WRITEONLY AM_BASE( &rabbit_viewregs9 ) // never changes?
// AM_RANGE(0x200900, 0x20098f) AM_WRITE(rabbit_audio_w) // AM_RANGE(0x200900, 0x20098f) AM_WRITE(rabbit_audio_w)
/* hmm */ /* hmm */
// AM_RANGE(0x279700, 0x279713) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_viewregs10 ) // AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_BASE( &rabbit_viewregs10 )
/* tilemaps */ /* tilemaps */
AM_RANGE(0x280000, 0x283fff) AM_WRITE(rabbit_tilemap0_w) AM_RANGE(0x280000, 0x283fff) AM_READWRITE(rabbit_tilemap0_r,rabbit_tilemap0_w)
AM_RANGE(0x284000, 0x287fff) AM_WRITE(rabbit_tilemap1_w) AM_RANGE(0x284000, 0x287fff) AM_READWRITE(rabbit_tilemap1_r,rabbit_tilemap1_w)
AM_RANGE(0x288000, 0x28bfff) AM_WRITE(rabbit_tilemap2_w) AM_RANGE(0x288000, 0x28bfff) AM_READWRITE(rabbit_tilemap2_r,rabbit_tilemap2_w)
AM_RANGE(0x28c000, 0x28ffff) AM_WRITE(rabbit_tilemap3_w) AM_RANGE(0x28c000, 0x28ffff) AM_READWRITE(rabbit_tilemap3_r,rabbit_tilemap3_w)
/* ?? is palette ram shared with sprites in this case or just a different map */ /* ?? is palette ram shared with sprites in this case or just a different map */
AM_RANGE(0x290000, 0x29bfff) AM_WRITE(SMH_RAM) AM_BASE(&rabbit_spriteram) AM_RANGE(0x290000, 0x29bfff) AM_RAM AM_BASE(&rabbit_spriteram)
AM_RANGE(0x29c000, 0x29ffff) AM_WRITE(tmmjprd_paletteram_dword_w) AM_BASE(&paletteram32) AM_RANGE(0x29c000, 0x29ffff) AM_RAM_WRITE(tmmjprd_paletteram_dword_w) AM_BASE(&paletteram32)
AM_RANGE(0x400000, 0x400003) AM_WRITE(rabbit_eeprom_write)
AM_RANGE(0xf00000, 0xffffff) AM_WRITE(SMH_RAM) AM_RANGE(0x400000, 0x400003) AM_READ_PORT("INPUTS") AM_WRITE(rabbit_eeprom_write)
AM_RANGE(0xf00000, 0xffffff) AM_RAM
ADDRESS_MAP_END ADDRESS_MAP_END
static INPUT_PORTS_START( rabbit ) static INPUT_PORTS_START( rabbit )
PORT_START("INPUTS") PORT_START("INPUTS")
PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(eeprom_bit_r, NULL) // as per code at 4d932 PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(eeprom_bit_r, NULL) // as per code at 4d932
@ -1044,7 +1022,7 @@ static INTERRUPT_GEN( rabbit_interrupts )
static MACHINE_DRIVER_START( rabbit ) static MACHINE_DRIVER_START( rabbit )
MDRV_CPU_ADD("maincpu",M68EC020,24000000) /* 24 MHz */ MDRV_CPU_ADD("maincpu",M68EC020,24000000) /* 24 MHz */
MDRV_CPU_PROGRAM_MAP(rabbit_readmem,rabbit_writemem) MDRV_CPU_PROGRAM_MAP(rabbit_map,0)
MDRV_CPU_VBLANK_INT_HACK(rabbit_interrupts,262) MDRV_CPU_VBLANK_INT_HACK(rabbit_interrupts,262)
/* (rabbit) */ /* (rabbit) */
/* lev 1 : 0x64 : 0000 027c - /* lev 1 : 0x64 : 0000 027c -
@ -1169,7 +1147,7 @@ static INTERRUPT_GEN( tmmjprd_interrupt )
static MACHINE_DRIVER_START( tmmjprd ) static MACHINE_DRIVER_START( tmmjprd )
MDRV_IMPORT_FROM(rabbit) MDRV_IMPORT_FROM(rabbit)
MDRV_CPU_MODIFY("maincpu") MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_PROGRAM_MAP(tmmjprd_readmem,tmmjprd_writemem) MDRV_CPU_PROGRAM_MAP(tmmjprd_map,0)
MDRV_CPU_VBLANK_INT_HACK(tmmjprd_interrupt,2) MDRV_CPU_VBLANK_INT_HACK(tmmjprd_interrupt,2)
MDRV_VIDEO_START(tmmjprd) MDRV_VIDEO_START(tmmjprd)

View File

@ -272,71 +272,47 @@ static WRITE16_HANDLER( jumping_sound_w )
MEMORY STRUCTURES MEMORY STRUCTURES
***************************************************************************/ ***************************************************************************/
static ADDRESS_MAP_START( rainbow_readmem, ADDRESS_SPACE_PROGRAM, 16 ) static ADDRESS_MAP_START( rainbow_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM) AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x10c000, 0x10ffff) AM_READ(SMH_RAM) /* main RAM */ AM_RANGE(0x10c000, 0x10ffff) AM_RAM /* main RAM */
AM_RANGE(0x200000, 0x200fff) AM_READ(SMH_RAM) /* palette */ AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x201000, 0x203fff) AM_READ(SMH_RAM) /* read in initial checks */ AM_RANGE(0x201000, 0x203fff) AM_RAM /* r/w in initial checks */
AM_RANGE(0x390000, 0x390003) AM_READ_PORT("DSWA") AM_RANGE(0x390000, 0x390003) AM_READ_PORT("DSWA")
AM_RANGE(0x3b0000, 0x3b0003) AM_READ_PORT("DSWB")
AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP
AM_RANGE(0x3e0002, 0x3e0003) AM_READ8(taitosound_comm_r, 0x00ff)
AM_RANGE(0x800000, 0x8007ff) AM_READ(rainbow_cchip_ram_r)
AM_RANGE(0x800802, 0x800803) AM_READ(rainbow_cchip_ctrl_r)
AM_RANGE(0xc00000, 0xc0ffff) AM_READ(PC080SN_word_0_r)
AM_RANGE(0xd00000, 0xd03fff) AM_READ(PC090OJ_word_0_r) /* sprite ram + other stuff */
ADDRESS_MAP_END
static ADDRESS_MAP_START( rainbow_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
AM_RANGE(0x10c000, 0x10ffff) AM_WRITE(SMH_RAM)
AM_RANGE(0x200000, 0x200fff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x201000, 0x203fff) AM_WRITE(SMH_RAM) /* written in initial checks */
AM_RANGE(0x3a0000, 0x3a0001) AM_WRITE(rainbow_spritectrl_w) AM_RANGE(0x3a0000, 0x3a0001) AM_WRITE(rainbow_spritectrl_w)
AM_RANGE(0x3c0000, 0x3c0003) AM_WRITENOP /* written very often, watchdog? */ AM_RANGE(0x3b0000, 0x3b0003) AM_READ_PORT("DSWB")
AM_RANGE(0x3e0000, 0x3e0001) AM_WRITE8(taitosound_port_w, 0x00ff) AM_RANGE(0x3c0000, 0x3c0003) AM_WRITENOP /* written very often, watchdog? */
AM_RANGE(0x3e0002, 0x3e0003) AM_WRITE8(taitosound_comm_w, 0x00ff) AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP AM_WRITE8(taitosound_port_w, 0x00ff)
AM_RANGE(0x800000, 0x8007ff) AM_WRITE(rainbow_cchip_ram_w) AM_RANGE(0x3e0002, 0x3e0003) AM_READWRITE8(taitosound_comm_r,taitosound_comm_w, 0x00ff)
AM_RANGE(0x800802, 0x800803) AM_WRITE(rainbow_cchip_ctrl_w) AM_RANGE(0x800000, 0x8007ff) AM_READWRITE(rainbow_cchip_ram_r,rainbow_cchip_ram_w)
AM_RANGE(0x800802, 0x800803) AM_READWRITE(rainbow_cchip_ctrl_r,rainbow_cchip_ctrl_w)
AM_RANGE(0x800c00, 0x800c01) AM_WRITE(rainbow_cchip_bank_w) AM_RANGE(0x800c00, 0x800c01) AM_WRITE(rainbow_cchip_bank_w)
AM_RANGE(0xc00000, 0xc0ffff) AM_WRITE(PC080SN_word_0_w) AM_RANGE(0xc00000, 0xc0ffff) AM_READWRITE(PC080SN_word_0_r,PC080SN_word_0_w)
AM_RANGE(0xc20000, 0xc20003) AM_WRITE(PC080SN_yscroll_word_0_w) AM_RANGE(0xc20000, 0xc20003) AM_WRITE(PC080SN_yscroll_word_0_w)
AM_RANGE(0xc40000, 0xc40003) AM_WRITE(PC080SN_xscroll_word_0_w) AM_RANGE(0xc40000, 0xc40003) AM_WRITE(PC080SN_xscroll_word_0_w)
AM_RANGE(0xc50000, 0xc50003) AM_WRITE(PC080SN_ctrl_word_0_w) AM_RANGE(0xc50000, 0xc50003) AM_WRITE(PC080SN_ctrl_word_0_w)
AM_RANGE(0xd00000, 0xd03fff) AM_WRITE(PC090OJ_word_0_w) /* sprite ram + other stuff */ AM_RANGE(0xd00000, 0xd03fff) AM_READWRITE(PC090OJ_word_0_r,PC090OJ_word_0_w) /* sprite ram + other stuff */
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( jumping_map, ADDRESS_SPACE_PROGRAM, 16 )
static ADDRESS_MAP_START( jumping_readmem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x09ffff) AM_ROM
AM_RANGE(0x000000, 0x09ffff) AM_READ(SMH_ROM) AM_RANGE(0x10c000, 0x10ffff) AM_RAM /* main RAM */
AM_RANGE(0x10c000, 0x10ffff) AM_READ(SMH_RAM) /* main RAM */ AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x200000, 0x200fff) AM_READ(SMH_RAM) /* palette */ AM_RANGE(0x201000, 0x203fff) AM_RAM /* r/w in initial checks */
AM_RANGE(0x201000, 0x203fff) AM_READ(SMH_RAM) /* read in initial checks */
AM_RANGE(0x400000, 0x400001) AM_READ_PORT("DSWA") AM_RANGE(0x400000, 0x400001) AM_READ_PORT("DSWA")
AM_RANGE(0x400002, 0x400003) AM_READ_PORT("DSWB") AM_RANGE(0x400002, 0x400003) AM_READ_PORT("DSWB")
AM_RANGE(0x401000, 0x401001) AM_READ_PORT("401001") AM_RANGE(0x401000, 0x401001) AM_READ_PORT("401001")
AM_RANGE(0x401002, 0x401003) AM_READ_PORT("401003") AM_RANGE(0x401002, 0x401003) AM_READ_PORT("401003")
AM_RANGE(0x420000, 0x420001) AM_READNOP /* read, but result not used */
AM_RANGE(0x440000, 0x4407ff) AM_READ(SMH_RAM)
AM_RANGE(0xc00000, 0xc0ffff) AM_READ(PC080SN_word_0_r)
AM_RANGE(0xd00000, 0xd01fff) AM_READ(SMH_RAM) /* original spriteram location, needed for Attract Mode */
ADDRESS_MAP_END
static ADDRESS_MAP_START( jumping_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x09ffff) AM_WRITE(SMH_ROM)
AM_RANGE(0x10c000, 0x10ffff) AM_WRITE(SMH_RAM)
AM_RANGE(0x200000, 0x200fff) AM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x201000, 0x203fff) AM_WRITE(SMH_RAM) /* written in initial checks */
AM_RANGE(0x3a0000, 0x3a0001) AM_WRITE(jumping_spritectrl_w) AM_RANGE(0x3a0000, 0x3a0001) AM_WRITE(jumping_spritectrl_w)
AM_RANGE(0x3c0000, 0x3c0001) AM_WRITENOP /* watchdog? */ AM_RANGE(0x3c0000, 0x3c0001) AM_WRITENOP /* watchdog? */
AM_RANGE(0x400006, 0x400007) AM_WRITE(jumping_sound_w) AM_RANGE(0x400006, 0x400007) AM_WRITE(jumping_sound_w)
AM_RANGE(0x420000, 0x420001) AM_READNOP /* read, but result not used */
AM_RANGE(0x430000, 0x430003) AM_WRITE(PC080SN_yscroll_word_0_w) AM_RANGE(0x430000, 0x430003) AM_WRITE(PC080SN_yscroll_word_0_w)
AM_RANGE(0x440000, 0x4407ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) AM_RANGE(0x440000, 0x4407ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
AM_RANGE(0x800000, 0x80ffff) AM_WRITENOP /* original c-chip location (not used) */ AM_RANGE(0x800000, 0x80ffff) AM_WRITENOP /* original c-chip location (not used) */
AM_RANGE(0xc00000, 0xc0ffff) AM_WRITE(PC080SN_word_0_w) AM_RANGE(0xc00000, 0xc0ffff) AM_READWRITE(PC080SN_word_0_r,PC080SN_word_0_w)
AM_RANGE(0xc20000, 0xc20003) AM_WRITENOP /* seems it is a leftover from rainbow: scroll y written here too */ AM_RANGE(0xc20000, 0xc20003) AM_WRITENOP /* seems it is a leftover from rainbow: scroll y written here too */
AM_RANGE(0xc40000, 0xc40003) AM_WRITE(PC080SN_xscroll_word_0_w) AM_RANGE(0xc40000, 0xc40003) AM_WRITE(PC080SN_xscroll_word_0_w)
AM_RANGE(0xd00000, 0xd01fff) AM_WRITE(SMH_RAM) /* original spriteram location, needed for Attract Mode */ AM_RANGE(0xd00000, 0xd01fff) AM_RAM /* original spriteram location, needed for Attract Mode */
ADDRESS_MAP_END ADDRESS_MAP_END
@ -349,7 +325,7 @@ ADDRESS_MAP_END
static WRITE8_DEVICE_HANDLER( bankswitch_w ) static WRITE8_DEVICE_HANDLER( bankswitch_w )
{ {
memory_set_bankptr(device->machine, 5, memory_region(device->machine, "audiocpu") + ((data - 1) & 3) * 0x4000 + 0x10000); memory_set_bankptr(device->machine, 1, memory_region(device->machine, "audiocpu") + ((data - 1) & 3) * 0x4000 + 0x10000);
} }
static READ8_HANDLER( jumping_latch_r ) static READ8_HANDLER( jumping_latch_r )
@ -358,38 +334,24 @@ static READ8_HANDLER( jumping_latch_r )
} }
static ADDRESS_MAP_START( rainbow_s_readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( rainbow_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM) AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK(5)) AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
AM_RANGE(0x8000, 0x8fff) AM_READ(SMH_RAM) AM_RANGE(0x8000, 0x8fff) AM_RAM
AM_RANGE(0x9000, 0x9001) AM_DEVREAD("ym", ym2151_r) AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
AM_RANGE(0x9002, 0x9100) AM_READ(SMH_RAM) AM_RANGE(0x9002, 0x9100) AM_READNOP
AM_RANGE(0xa001, 0xa001) AM_READ(taitosound_slave_comm_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( rainbow_s_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
AM_RANGE(0x8000, 0x8fff) AM_WRITE(SMH_RAM)
AM_RANGE(0x9000, 0x9001) AM_DEVWRITE("ym", ym2151_w)
AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w) AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w)
AM_RANGE(0xa001, 0xa001) AM_WRITE(taitosound_slave_comm_w) AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r,taitosound_slave_comm_w)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( jumping_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( jumping_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM) AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x8fff) AM_READ(SMH_RAM) AM_RANGE(0x8000, 0x8fff) AM_RAM
AM_RANGE(0xb000, 0xb001) AM_DEVREAD("ym1", ym2203_r) AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ym1", ym2203_r,ym2203_w)
AM_RANGE(0xb400, 0xb401) AM_DEVREAD("ym2", ym2203_r) AM_RANGE(0xb400, 0xb401) AM_DEVREADWRITE("ym2", ym2203_r,ym2203_w)
AM_RANGE(0xb800, 0xb800) AM_READ(jumping_latch_r) AM_RANGE(0xb800, 0xb800) AM_READ(jumping_latch_r)
AM_RANGE(0xc000, 0xffff) AM_READ(SMH_ROM)
ADDRESS_MAP_END
static ADDRESS_MAP_START( jumping_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
AM_RANGE(0x8000, 0x8fff) AM_WRITE(SMH_RAM)
AM_RANGE(0xb000, 0xb001) AM_DEVWRITE("ym1", ym2203_w)
AM_RANGE(0xb400, 0xb401) AM_DEVWRITE("ym2", ym2203_w)
AM_RANGE(0xbc00, 0xbc00) AM_WRITENOP /* looks like a bankswitch, but sound works with or without it */ AM_RANGE(0xbc00, 0xbc00) AM_WRITENOP /* looks like a bankswitch, but sound works with or without it */
AM_RANGE(0xc000, 0xffff) AM_ROM
ADDRESS_MAP_END ADDRESS_MAP_END
@ -609,11 +571,11 @@ static MACHINE_DRIVER_START( rainbow )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) /* verified on pcb */ MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) /* verified on pcb */
MDRV_CPU_PROGRAM_MAP(rainbow_readmem,rainbow_writemem) MDRV_CPU_PROGRAM_MAP(rainbow_map,0)
MDRV_CPU_VBLANK_INT("screen", irq4_line_hold) MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
MDRV_CPU_ADD("audiocpu", Z80, XTAL_16MHz/4) /* verified on pcb */ MDRV_CPU_ADD("audiocpu", Z80, XTAL_16MHz/4) /* verified on pcb */
MDRV_CPU_PROGRAM_MAP(rainbow_s_readmem,rainbow_s_writemem) MDRV_CPU_PROGRAM_MAP(rainbow_sound_map,0)
MDRV_QUANTUM_TIME(HZ(600)) /* 10 CPU slices per frame - enough for the sound CPU to read all commands */ MDRV_QUANTUM_TIME(HZ(600)) /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
@ -641,16 +603,16 @@ static MACHINE_DRIVER_START( rainbow )
MACHINE_DRIVER_END MACHINE_DRIVER_END
/* Jumping The pcb has 2 xtals, 24MHz and 18,432MHz */ /* Jumping: The PCB has 2 Xtals, 24MHz and 18,432MHz */
static MACHINE_DRIVER_START( jumping ) static MACHINE_DRIVER_START( jumping )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", M68000, XTAL_24MHz/3) /* not verified but matches original */ MDRV_CPU_ADD("maincpu", M68000, XTAL_24MHz/3) /* not verified but matches original */
MDRV_CPU_PROGRAM_MAP(jumping_readmem,jumping_writemem) MDRV_CPU_PROGRAM_MAP(jumping_map,0)
MDRV_CPU_VBLANK_INT("screen", irq4_line_hold) MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
MDRV_CPU_ADD("audiocpu", Z80, XTAL_18_432MHz/6) /* not verified but music tempo matches original */ MDRV_CPU_ADD("audiocpu", Z80, XTAL_18_432MHz/6) /* not verified but music tempo matches original */
MDRV_CPU_PROGRAM_MAP(jumping_sound_readmem,jumping_sound_writemem) MDRV_CPU_PROGRAM_MAP(jumping_sound_map,0)
MDRV_QUANTUM_TIME(HZ(600)) /* 10 CPU slices per frame - enough ? */ MDRV_QUANTUM_TIME(HZ(600)) /* 10 CPU slices per frame - enough ? */

View File

@ -1,5 +1,6 @@
/* Red Corsair */ /* Red Corsair */
/* skeleton driver */
/* This driver is not being worked on by the original author. /* This driver is not being worked on by the original author.
Somebody will probably need to do extensive research on the Somebody will probably need to do extensive research on the
PCB to establish what the custom block actually contains, PCB to establish what the custom block actually contains,
@ -53,12 +54,8 @@ so even the Main CPU is unknown, assuming the 8085 is the sound CPU
#include "driver.h" #include "driver.h"
#include "cpu/i8085/i8085.h" #include "cpu/i8085/i8085.h"
static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( rcorsair_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM) AM_RANGE(0x0000, 0x1fff) AM_ROM
ADDRESS_MAP_END
static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_ROM)
ADDRESS_MAP_END ADDRESS_MAP_END
static INPUT_PORTS_START( inports ) static INPUT_PORTS_START( inports )
@ -120,7 +117,7 @@ static MACHINE_DRIVER_START( rcorsair )
program code, unknown type */ program code, unknown type */
MDRV_CPU_ADD("maincpu", 8085A,8000000) /* Sound CPU? */ MDRV_CPU_ADD("maincpu", 8085A,8000000) /* Sound CPU? */
MDRV_CPU_PROGRAM_MAP(readmem,writemem) MDRV_CPU_PROGRAM_MAP(rcorsair_map,0)
// MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) // MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_ADD("screen", RASTER)

View File

@ -38,18 +38,7 @@ extern VIDEO_START( redclash );
extern VIDEO_UPDATE( redclash ); extern VIDEO_UPDATE( redclash );
extern VIDEO_EOF( redclash ); extern VIDEO_EOF( redclash );
/*
This game doesn't have VBlank interrupts.
Interrupts are still used, but they are related to coin
slots. Left slot generates an IRQ, Right slot a NMI.
*/
static INTERRUPT_GEN( redclash_interrupt )
{
if (input_port_read(device->machine, "FAKE") & 1) /* Left Coin */
cpu_set_input_line(device,0,ASSERT_LINE);
else if (input_port_read(device->machine, "FAKE") & 2) /* Right Coin */
cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
}
static WRITE8_HANDLER( irqack_w ) static WRITE8_HANDLER( irqack_w )
{ {
@ -57,22 +46,15 @@ static WRITE8_HANDLER( irqack_w )
} }
static ADDRESS_MAP_START( zerohour_map, ADDRESS_SPACE_PROGRAM, 8 )
static ADDRESS_MAP_START( zero_readmem, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x2fff) AM_ROM
AM_RANGE(0x0000, 0x2fff) AM_READ(SMH_ROM) AM_RANGE(0x3000, 0x37ff) AM_RAM
AM_RANGE(0x3000, 0x37ff) AM_READ(SMH_RAM) AM_RANGE(0x3800, 0x3bff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(redclash_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x4800, 0x4800) AM_READ_PORT("IN0") /* IN0 */ AM_RANGE(0x4800, 0x4800) AM_READ_PORT("IN0") /* IN0 */
AM_RANGE(0x4801, 0x4801) AM_READ_PORT("IN1") /* IN1 */ AM_RANGE(0x4801, 0x4801) AM_READ_PORT("IN1") /* IN1 */
AM_RANGE(0x4802, 0x4802) AM_READ_PORT("DSW1") /* DSW0 */ AM_RANGE(0x4802, 0x4802) AM_READ_PORT("DSW1") /* DSW0 */
AM_RANGE(0x4803, 0x4803) AM_READ_PORT("DSW2") /* DSW1 */ AM_RANGE(0x4803, 0x4803) AM_READ_PORT("DSW2") /* DSW1 */
AM_RANGE(0x4000, 0x43ff) AM_READ(SMH_RAM) /* video RAM */
ADDRESS_MAP_END
static ADDRESS_MAP_START( zero_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x2fff) AM_WRITE(SMH_ROM)
AM_RANGE(0x3000, 0x37ff) AM_WRITE(SMH_RAM)
AM_RANGE(0x3800, 0x3bff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
AM_RANGE(0x4000, 0x43ff) AM_WRITE(redclash_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x5000, 0x5007) AM_WRITENOP /* to sound board */ AM_RANGE(0x5000, 0x5007) AM_WRITENOP /* to sound board */
AM_RANGE(0x5800, 0x5800) AM_WRITE(redclash_star0_w) AM_RANGE(0x5800, 0x5800) AM_WRITE(redclash_star0_w)
AM_RANGE(0x5801, 0x5804) AM_WRITENOP /* to sound board */ AM_RANGE(0x5801, 0x5804) AM_WRITENOP /* to sound board */
@ -83,34 +65,43 @@ static ADDRESS_MAP_START( zero_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x7800, 0x7800) AM_WRITE(irqack_w) AM_RANGE(0x7800, 0x7800) AM_WRITE(irqack_w)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( redclash_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x2fff) AM_READ(SMH_ROM) AM_RANGE(0x0000, 0x2fff) AM_ROM
// AM_RANGE(0x3000, 0x3000) AM_WRITENOP
// AM_RANGE(0x3800, 0x3800) AM_WRITENOP
AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(redclash_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x4800, 0x4800) AM_READ_PORT("IN0") /* IN0 */ AM_RANGE(0x4800, 0x4800) AM_READ_PORT("IN0") /* IN0 */
AM_RANGE(0x4801, 0x4801) AM_READ_PORT("IN1") /* IN1 */ AM_RANGE(0x4801, 0x4801) AM_READ_PORT("IN1") /* IN1 */
AM_RANGE(0x4802, 0x4802) AM_READ_PORT("DSW1") /* DSW0 */ AM_RANGE(0x4802, 0x4802) AM_READ_PORT("DSW1") /* DSW0 */
AM_RANGE(0x4803, 0x4803) AM_READ_PORT("DSW2") /* DSW1 */ AM_RANGE(0x4803, 0x4803) AM_READ_PORT("DSW2") /* DSW1 */
AM_RANGE(0x4000, 0x43ff) AM_READ(SMH_RAM) /* video RAM */
AM_RANGE(0x6000, 0x67ff) AM_READ(SMH_RAM)
ADDRESS_MAP_END
static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x2fff) AM_WRITE(SMH_ROM)
// AM_RANGE(0x3000, 0x3000) AM_WRITENOP
// AM_RANGE(0x3800, 0x3800) AM_WRITENOP
AM_RANGE(0x4000, 0x43ff) AM_WRITE(redclash_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x5000, 0x5007) AM_WRITENOP /* to sound board */ AM_RANGE(0x5000, 0x5007) AM_WRITENOP /* to sound board */
AM_RANGE(0x5800, 0x5800) AM_WRITE(redclash_star0_w) AM_RANGE(0x5800, 0x5800) AM_WRITE(redclash_star0_w)
AM_RANGE(0x5801, 0x5801) AM_WRITE(redclash_gfxbank_w) AM_RANGE(0x5801, 0x5801) AM_WRITE(redclash_gfxbank_w)
AM_RANGE(0x5805, 0x5805) AM_WRITE(redclash_star1_w) AM_RANGE(0x5805, 0x5805) AM_WRITE(redclash_star1_w)
AM_RANGE(0x5806, 0x5806) AM_WRITE(redclash_star2_w) AM_RANGE(0x5806, 0x5806) AM_WRITE(redclash_star2_w)
AM_RANGE(0x5807, 0x5807) AM_WRITE(redclash_flipscreen_w) AM_RANGE(0x5807, 0x5807) AM_WRITE(redclash_flipscreen_w)
AM_RANGE(0x6000, 0x67ff) AM_WRITE(SMH_RAM) AM_RANGE(0x6000, 0x67ff) AM_RAM
AM_RANGE(0x6800, 0x6bff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size) AM_RANGE(0x6800, 0x6bff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
AM_RANGE(0x7000, 0x7000) AM_WRITE(redclash_star_reset_w) AM_RANGE(0x7000, 0x7000) AM_WRITE(redclash_star_reset_w)
AM_RANGE(0x7800, 0x7800) AM_WRITE(irqack_w) AM_RANGE(0x7800, 0x7800) AM_WRITE(irqack_w)
ADDRESS_MAP_END ADDRESS_MAP_END
/*
This game doesn't have VBlank interrupts.
Interrupts are still used, but they are related to coin
slots. Left slot generates an IRQ, Right slot a NMI.
*/
static INPUT_CHANGED( left_coin_inserted )
{
if(newval)
cputag_set_input_line(field->port->machine, "maincpu", 0, ASSERT_LINE);
}
static INPUT_CHANGED( right_coin_inserted )
{
if(newval)
cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
}
static INPUT_PORTS_START( redclash ) static INPUT_PORTS_START( redclash )
PORT_START("IN0") /* IN0 */ PORT_START("IN0") /* IN0 */
@ -201,8 +192,8 @@ static INPUT_PORTS_START( redclash )
/* handler to be notified of coin insertions. We use IMPULSE to */ /* handler to be notified of coin insertions. We use IMPULSE to */
/* trigger exactly one interrupt, without having to check when the */ /* trigger exactly one interrupt, without having to check when the */
/* user releases the key. */ /* user releases the key. */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1) PORT_CHANGED(left_coin_inserted, 0)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1) PORT_CHANGED(right_coin_inserted, 0)
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( zerohour ) static INPUT_PORTS_START( zerohour )
@ -276,8 +267,8 @@ static INPUT_PORTS_START( zerohour )
/* handler to be notified of coin insertions. We use IMPULSE to */ /* handler to be notified of coin insertions. We use IMPULSE to */
/* trigger exactly one interrupt, without having to check when the */ /* trigger exactly one interrupt, without having to check when the */
/* user releases the key. */ /* user releases the key. */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1) PORT_CHANGED(left_coin_inserted, 0)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1) PORT_CHANGED(right_coin_inserted, 0)
INPUT_PORTS_END INPUT_PORTS_END
static const gfx_layout charlayout = static const gfx_layout charlayout =
@ -350,8 +341,7 @@ static MACHINE_DRIVER_START( zerohour )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz */ MDRV_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz */
MDRV_CPU_PROGRAM_MAP(zero_readmem,zero_writemem) MDRV_CPU_PROGRAM_MAP(zerohour_map,0)
MDRV_CPU_VBLANK_INT("screen", redclash_interrupt)
/* video hardware */ /* video hardware */
MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_ADD("screen", RASTER)
@ -377,8 +367,7 @@ static MACHINE_DRIVER_START( redclash )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz */ MDRV_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz */
MDRV_CPU_PROGRAM_MAP(readmem,writemem) MDRV_CPU_PROGRAM_MAP(redclash_map,0)
MDRV_CPU_VBLANK_INT("screen", redclash_interrupt)
/* video hardware */ /* video hardware */
MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_ADD("screen", RASTER)

View File

@ -535,51 +535,33 @@ static WRITE8_HANDLER( renegade_coin_counter_w )
/********************************************************************************************/ /********************************************************************************************/
static ADDRESS_MAP_START( main_readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( renegade_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x37ff) AM_READ(SMH_RAM) AM_RANGE(0x0000, 0x17ff) AM_RAM
AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0") /* Player#1 controls, P1,P2 start */ AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(renegade_videoram2_w) AM_BASE(&renegade_videoram2)
AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1") /* Player#2 controls, coin triggers */ AM_RANGE(0x2000, 0x27ff) AM_RAM AM_BASE(&spriteram)
AM_RANGE(0x3802, 0x3802) AM_READ_PORT("DSW2") /* DIP2 various IO ports */ AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(renegade_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1") /* DIP1 */ AM_RANGE(0x3000, 0x30ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE(&paletteram)
AM_RANGE(0x3804, 0x3804) AM_READ(mcu_r) AM_RANGE(0x3100, 0x31ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE(&paletteram_2)
AM_RANGE(0x3805, 0x3805) AM_READ(mcu_reset_r) AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0") AM_WRITE(renegade_scroll0_w) /* Player#1 controls, P1,P2 start */
AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK(1)) AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1") AM_WRITE(renegade_scroll1_w) /* Player#2 controls, coin triggers */
AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM) AM_RANGE(0x3802, 0x3802) AM_READ_PORT("DSW2") AM_WRITE(sound_w) /* DIP2 various IO ports */
ADDRESS_MAP_END AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1") AM_WRITE(renegade_flipscreen_w) /* DIP1 */
AM_RANGE(0x3804, 0x3804) AM_READWRITE(mcu_r,mcu_w)
static ADDRESS_MAP_START( main_writemem, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x3805, 0x3805) AM_READWRITE(mcu_reset_r,bankswitch_w)
AM_RANGE(0x0000, 0x17ff) AM_WRITE(SMH_RAM)
AM_RANGE(0x1800, 0x1fff) AM_WRITE(renegade_videoram2_w) AM_BASE(&renegade_videoram2)
AM_RANGE(0x2000, 0x27ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram)
AM_RANGE(0x2800, 0x2fff) AM_WRITE(renegade_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x3000, 0x30ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE(&paletteram)
AM_RANGE(0x3100, 0x31ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE(&paletteram_2)
AM_RANGE(0x3800, 0x3800) AM_WRITE(renegade_scroll0_w)
AM_RANGE(0x3801, 0x3801) AM_WRITE(renegade_scroll1_w)
AM_RANGE(0x3802, 0x3802) AM_WRITE(sound_w)
AM_RANGE(0x3803, 0x3803) AM_WRITE(renegade_flipscreen_w)
AM_RANGE(0x3804, 0x3804) AM_WRITE(mcu_w)
AM_RANGE(0x3805, 0x3805) AM_WRITE(bankswitch_w)
AM_RANGE(0x3806, 0x3806) AM_WRITENOP // ?? watchdog AM_RANGE(0x3806, 0x3806) AM_WRITENOP // ?? watchdog
AM_RANGE(0x3807, 0x3807) AM_WRITE(renegade_coin_counter_w) AM_RANGE(0x3807, 0x3807) AM_WRITE(renegade_coin_counter_w)
AM_RANGE(0x4000, 0x7fff) AM_WRITE(SMH_ROM) AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM) AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( renegade_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM) AM_RANGE(0x0000, 0x0fff) AM_RAM
AM_RANGE(0x1000, 0x1000) AM_READ(soundlatch_r) AM_RANGE(0x1000, 0x1000) AM_READ(soundlatch_r)
AM_RANGE(0x2800, 0x2801) AM_DEVREAD("ym", ym3526_r)
AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM)
AM_RANGE(0x1800, 0x1800) AM_WRITENOP // this gets written the same values as 0x2000 AM_RANGE(0x1800, 0x1800) AM_WRITENOP // this gets written the same values as 0x2000
AM_RANGE(0x2000, 0x2000) AM_WRITE(adpcm_play_w) AM_RANGE(0x2000, 0x2000) AM_WRITE(adpcm_play_w)
AM_RANGE(0x2800, 0x2801) AM_DEVWRITE("ym", ym3526_w) AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE("ym", ym3526_r,ym3526_w)
AM_RANGE(0x3000, 0x3000) AM_WRITENOP /* adpcm related? stereo pan? */ AM_RANGE(0x3000, 0x3000) AM_WRITENOP /* adpcm related? stereo pan? */
AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM) AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END ADDRESS_MAP_END
@ -799,11 +781,11 @@ static MACHINE_DRIVER_START( renegade )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", M6502, 12000000/8) /* 1.5 MHz (measured) */ MDRV_CPU_ADD("maincpu", M6502, 12000000/8) /* 1.5 MHz (measured) */
MDRV_CPU_PROGRAM_MAP(main_readmem,main_writemem) MDRV_CPU_PROGRAM_MAP(renegade_map,0)
MDRV_CPU_VBLANK_INT_HACK(renegade_interrupt,2) MDRV_CPU_VBLANK_INT_HACK(renegade_interrupt,2)
MDRV_CPU_ADD("audiocpu", M6809, 12000000/8) MDRV_CPU_ADD("audiocpu", M6809, 12000000/8)
MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem) MDRV_CPU_PROGRAM_MAP(renegade_sound_map,0)
/* IRQs are caused by the main CPU */ /* IRQs are caused by the main CPU */
MDRV_MACHINE_START(renegade) MDRV_MACHINE_START(renegade)
MDRV_MACHINE_RESET(renegade) MDRV_MACHINE_RESET(renegade)

View File

@ -171,35 +171,18 @@ static MACHINE_RESET( themj )
static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( rmhaihai_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x9fff) AM_READ(SMH_ROM) AM_RANGE(0x0000, 0x9fff) AM_ROM
AM_RANGE(0xa000, 0xa7ff) AM_READ(SMH_RAM) AM_RANGE(0xa000, 0xa7ff) AM_RAM
AM_RANGE(0xa800, 0xb7ff) AM_READ(SMH_RAM) AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(rmhaihai_colorram_w) AM_BASE(&colorram)
AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_ROM) AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(rmhaihai_videoram_w) AM_BASE(&videoram)
AM_RANGE(0xe000, 0xffff) AM_READ(SMH_ROM) /* rmhaisei only */
ADDRESS_MAP_END
static ADDRESS_MAP_START( themj_readmem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
AM_RANGE(0x8000, 0x9fff) AM_READ(SMH_BANK(1))
AM_RANGE(0xa000, 0xa7ff) AM_READ(SMH_RAM)
AM_RANGE(0xa800, 0xb7ff) AM_READ(SMH_RAM)
AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_BANK(2))
AM_RANGE(0xe000, 0xffff) AM_READ(SMH_ROM)
ADDRESS_MAP_END
static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x9fff) AM_WRITE(SMH_ROM)
AM_RANGE(0xa000, 0xa7ff) AM_WRITE(SMH_RAM)
AM_RANGE(0xa800, 0xafff) AM_WRITE(rmhaihai_colorram_w) AM_BASE(&colorram)
AM_RANGE(0xb000, 0xb7ff) AM_WRITE(rmhaihai_videoram_w) AM_BASE(&videoram)
AM_RANGE(0xb83c, 0xb83c) AM_WRITENOP // ?? AM_RANGE(0xb83c, 0xb83c) AM_WRITENOP // ??
AM_RANGE(0xbc00, 0xbc00) AM_WRITENOP // ?? AM_RANGE(0xbc00, 0xbc00) AM_WRITENOP // ??
AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_ROM) AM_RANGE(0xc000, 0xdfff) AM_ROM
AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_ROM) /* rmhaisei only */ AM_RANGE(0xe000, 0xffff) AM_ROM /* rmhaisei only */
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 ) static ADDRESS_MAP_START( rmhaihai_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x0000, 0x7fff) AM_READ(samples_r) AM_RANGE(0x0000, 0x7fff) AM_READ(samples_r)
AM_RANGE(0x8000, 0x8000) AM_READWRITE(keyboard_r, SMH_NOP) // ?? AM_RANGE(0x8000, 0x8000) AM_READWRITE(keyboard_r, SMH_NOP) // ??
AM_RANGE(0x8001, 0x8001) AM_READWRITE(SMH_NOP, keyboard_w) // ?? AM_RANGE(0x8001, 0x8001) AM_READWRITE(SMH_NOP, keyboard_w) // ??
@ -212,6 +195,16 @@ static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0xbc0c, 0xbc0c) AM_WRITENOP // ?? AM_RANGE(0xbc0c, 0xbc0c) AM_WRITENOP // ??
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( themj_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x9fff) AM_ROMBANK(1)
AM_RANGE(0xa000, 0xa7ff) AM_RAM
AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(rmhaihai_colorram_w) AM_BASE(&colorram)
AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(rmhaihai_videoram_w) AM_BASE(&videoram)
AM_RANGE(0xc000, 0xdfff) AM_ROMBANK(2)
AM_RANGE(0xe000, 0xffff) AM_ROM
ADDRESS_MAP_END
static ADDRESS_MAP_START( themj_io_map, ADDRESS_SPACE_IO, 8 ) static ADDRESS_MAP_START( themj_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x0000, 0x7fff) AM_READ(samples_r) AM_RANGE(0x0000, 0x7fff) AM_READ(samples_r)
AM_RANGE(0x8000, 0x8000) AM_READWRITE(keyboard_r, SMH_NOP) // ?? AM_RANGE(0x8000, 0x8000) AM_READWRITE(keyboard_r, SMH_NOP) // ??
@ -226,6 +219,7 @@ static ADDRESS_MAP_START( themj_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0xbc0c, 0xbc0c) AM_WRITENOP // ?? AM_RANGE(0xbc0c, 0xbc0c) AM_WRITENOP // ??
ADDRESS_MAP_END ADDRESS_MAP_END
static INPUT_PORTS_START( mjctrl ) static INPUT_PORTS_START( mjctrl )
PORT_START("KEY0") // fake, handled by keyboard_r() PORT_START("KEY0") // fake, handled by keyboard_r()
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_MAHJONG_SMALL ) PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_MAHJONG_SMALL )
@ -415,11 +409,11 @@ static const gfx_layout charlayout =
16*8 16*8
}; };
static GFXDECODE_START( 1 ) static GFXDECODE_START( rmhaihai )
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 32 ) GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 32 )
GFXDECODE_END GFXDECODE_END
static GFXDECODE_START( 2 ) static GFXDECODE_START( themj )
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 64 ) GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 64 )
GFXDECODE_END GFXDECODE_END
@ -445,8 +439,8 @@ static MACHINE_DRIVER_START( rmhaihai )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu",Z80,20000000/4) /* 5 MHz ??? */ MDRV_CPU_ADD("maincpu",Z80,20000000/4) /* 5 MHz ??? */
MDRV_CPU_PROGRAM_MAP(readmem,writemem) MDRV_CPU_PROGRAM_MAP(rmhaihai_map,0)
MDRV_CPU_IO_MAP(io_map,0) MDRV_CPU_IO_MAP(rmhaihai_io_map,0)
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
/* video hardware */ /* video hardware */
@ -457,7 +451,7 @@ static MACHINE_DRIVER_START( rmhaihai )
MDRV_SCREEN_SIZE(64*8, 32*8) MDRV_SCREEN_SIZE(64*8, 32*8)
MDRV_SCREEN_VISIBLE_AREA(4*8, 60*8-1, 2*8, 30*8-1) MDRV_SCREEN_VISIBLE_AREA(4*8, 60*8-1, 2*8, 30*8-1)
MDRV_GFXDECODE(1) MDRV_GFXDECODE(rmhaihai)
MDRV_PALETTE_LENGTH(0x100) MDRV_PALETTE_LENGTH(0x100)
MDRV_PALETTE_INIT(RRRR_GGGG_BBBB) MDRV_PALETTE_INIT(RRRR_GGGG_BBBB)
@ -482,7 +476,7 @@ static MACHINE_DRIVER_START( rmhaisei )
MDRV_IMPORT_FROM(rmhaihai) MDRV_IMPORT_FROM(rmhaihai)
/* video hardware */ /* video hardware */
MDRV_GFXDECODE(2) MDRV_GFXDECODE(themj)
MDRV_PALETTE_LENGTH(0x200) MDRV_PALETTE_LENGTH(0x200)
MACHINE_DRIVER_END MACHINE_DRIVER_END
@ -492,13 +486,13 @@ static MACHINE_DRIVER_START( themj )
MDRV_IMPORT_FROM(rmhaihai) MDRV_IMPORT_FROM(rmhaihai)
MDRV_CPU_MODIFY("maincpu") MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_PROGRAM_MAP(themj_readmem,writemem) MDRV_CPU_PROGRAM_MAP(themj_map,0)
MDRV_CPU_IO_MAP(themj_io_map,0) MDRV_CPU_IO_MAP(themj_io_map,0)
MDRV_MACHINE_RESET(themj) MDRV_MACHINE_RESET(themj)
/* video hardware */ /* video hardware */
MDRV_GFXDECODE(2) MDRV_GFXDECODE(themj)
MDRV_PALETTE_LENGTH(0x200) MDRV_PALETTE_LENGTH(0x200)
MACHINE_DRIVER_END MACHINE_DRIVER_END

View File

@ -100,50 +100,34 @@ static WRITE8_DEVICE_HANDLER( rockrage_speech_w ) {
vlm5030_st( device, ( data >> 0 ) & 0x01 ); vlm5030_st( device, ( data >> 0 ) & 0x01 );
} }
static ADDRESS_MAP_START( rockrage_readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( rockrage_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_READ(K007342_r) /* Color RAM + Video RAM */ AM_RANGE(0x0000, 0x1fff) AM_READWRITE(K007342_r,K007342_w) /* Color RAM + Video RAM */
AM_RANGE(0x2000, 0x21ff) AM_READ(K007420_r) /* Sprite RAM */ AM_RANGE(0x2000, 0x21ff) AM_READWRITE(K007420_r,K007420_w) /* Sprite RAM */
AM_RANGE(0x2200, 0x23ff) AM_READ(K007342_scroll_r) /* Scroll RAM */ AM_RANGE(0x2200, 0x23ff) AM_READWRITE(K007342_scroll_r,K007342_scroll_w) /* Scroll RAM */
AM_RANGE(0x2400, 0x247f) AM_READ(SMH_RAM) /* Palette */ AM_RANGE(0x2400, 0x247f) AM_RAM AM_BASE(&paletteram) /* Palette */
AM_RANGE(0x2600, 0x2607) AM_WRITE(K007342_vreg_w) /* Video Registers */
AM_RANGE(0x2e00, 0x2e00) AM_READ_PORT("SYSTEM")
AM_RANGE(0x2e01, 0x2e01) AM_READ_PORT("P1") AM_RANGE(0x2e01, 0x2e01) AM_READ_PORT("P1")
AM_RANGE(0x2e02, 0x2e02) AM_READ_PORT("P2") AM_RANGE(0x2e02, 0x2e02) AM_READ_PORT("P2")
AM_RANGE(0x2e03, 0x2e03) AM_READ_PORT("DSW2") AM_RANGE(0x2e03, 0x2e03) AM_READ_PORT("DSW2")
AM_RANGE(0x2e40, 0x2e40) AM_READ_PORT("DSW1") AM_RANGE(0x2e40, 0x2e40) AM_READ_PORT("DSW1")
AM_RANGE(0x2e00, 0x2e00) AM_READ_PORT("SYSTEM") AM_RANGE(0x2e80, 0x2e80) AM_WRITE(rockrage_sh_irqtrigger_w) /* cause interrupt on audio CPU */
AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_RAM) /* RAM */ AM_RANGE(0x2ec0, 0x2ec0) AM_WRITE(watchdog_reset_w) /* watchdog reset */
AM_RANGE(0x6000, 0x7fff) AM_READ(SMH_BANK(1)) /* banked ROM */ AM_RANGE(0x2f00, 0x2f00) AM_WRITE(rockrage_vreg_w) /* ??? */
AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM) /* ROM */ AM_RANGE(0x2f40, 0x2f40) AM_WRITE(rockrage_bankswitch_w) /* bankswitch control */
AM_RANGE(0x4000, 0x5fff) AM_RAM /* RAM */
AM_RANGE(0x6000, 0x7fff) AM_ROMBANK(1) /* banked ROM */
AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( rockrage_writemem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( rockrage_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_WRITE(K007342_w) /* Color RAM + Video RAM */ AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("vlm", vlm5030_data_w) /* VLM5030 */
AM_RANGE(0x2000, 0x21ff) AM_WRITE(K007420_w) /* Sprite RAM */ AM_RANGE(0x3000, 0x3000) AM_DEVREAD("vlm", rockrage_VLM5030_busy_r) /* VLM5030 */
AM_RANGE(0x2200, 0x23ff) AM_WRITE(K007342_scroll_w) /* Scroll RAM */ AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("vlm", rockrage_speech_w) /* VLM5030 */
AM_RANGE(0x2400, 0x247f) AM_WRITE(SMH_RAM) AM_BASE(&paletteram)/* palette */ AM_RANGE(0x5000, 0x5000) AM_READ(soundlatch_r) /* soundlatch_r */
AM_RANGE(0x2600, 0x2607) AM_WRITE(K007342_vreg_w) /* Video Registers */ AM_RANGE(0x6000, 0x6001) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w) /* YM 2151 */
AM_RANGE(0x2e80, 0x2e80) AM_WRITE(rockrage_sh_irqtrigger_w)/* cause interrupt on audio CPU */ AM_RANGE(0x7000, 0x77ff) AM_RAM /* RAM */
AM_RANGE(0x2ec0, 0x2ec0) AM_WRITE(watchdog_reset_w) /* watchdog reset */ AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */
AM_RANGE(0x2f00, 0x2f00) AM_WRITE(rockrage_vreg_w) /* ??? */
AM_RANGE(0x2f40, 0x2f40) AM_WRITE(rockrage_bankswitch_w) /* bankswitch control */
AM_RANGE(0x4000, 0x5fff) AM_WRITE(SMH_RAM) /* RAM */
AM_RANGE(0x6000, 0x7fff) AM_WRITE(SMH_RAM) /* banked ROM */
AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM) /* ROM */
ADDRESS_MAP_END
static ADDRESS_MAP_START( rockrage_readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x3000, 0x3000) AM_DEVREAD("vlm", rockrage_VLM5030_busy_r)/* VLM5030 */
AM_RANGE(0x5000, 0x5000) AM_READ(soundlatch_r) /* soundlatch_r */
AM_RANGE(0x6000, 0x6001) AM_DEVREAD("ym", ym2151_r) /* YM 2151 */
AM_RANGE(0x7000, 0x77ff) AM_READ(SMH_RAM) /* RAM */
AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM) /* ROM */
ADDRESS_MAP_END
static ADDRESS_MAP_START( rockrage_writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("vlm", vlm5030_data_w) /* VLM5030 */
AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("vlm", rockrage_speech_w) /* VLM5030 */
AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ym", ym2151_w) /* YM 2151 */
AM_RANGE(0x7000, 0x77ff) AM_WRITE(SMH_RAM) /* RAM */
AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM) /* ROM */
ADDRESS_MAP_END ADDRESS_MAP_END
/*************************************************************************** /***************************************************************************
@ -286,11 +270,11 @@ static MACHINE_DRIVER_START( rockrage )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", HD6309, 3000000*4) /* 24MHz/8 */ MDRV_CPU_ADD("maincpu", HD6309, 3000000*4) /* 24MHz/8 */
MDRV_CPU_PROGRAM_MAP(rockrage_readmem,rockrage_writemem) MDRV_CPU_PROGRAM_MAP(rockrage_map,0)
MDRV_CPU_VBLANK_INT("screen", rockrage_interrupt) MDRV_CPU_VBLANK_INT("screen", rockrage_interrupt)
MDRV_CPU_ADD("audiocpu", M6809, 1500000) /* 24MHz/16 */ MDRV_CPU_ADD("audiocpu", M6809, 1500000) /* 24MHz/16 */
MDRV_CPU_PROGRAM_MAP(rockrage_readmem_sound,rockrage_writemem_sound) MDRV_CPU_PROGRAM_MAP(rockrage_sound_map,0)
/* video hardware */ /* video hardware */
MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_ADD("screen", RASTER)

View File

@ -1,5 +1,7 @@
/*************************************************************************** /***************************************************************************
Roc'n Rope (c) 1983 Konami
Based on drivers from Juno First emulator by Chris Hardy (chrish@kcbbs.gen.nz) Based on drivers from Juno First emulator by Chris Hardy (chrish@kcbbs.gen.nz)
***************************************************************************/ ***************************************************************************/
@ -31,24 +33,19 @@ static WRITE8_HANDLER( rocnrope_interrupt_vector_w )
} }
static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( rocnrope_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x3080, 0x3080) AM_READ_PORT("SYSTEM") AM_RANGE(0x3080, 0x3080) AM_READ_PORT("SYSTEM")
AM_RANGE(0x3081, 0x3081) AM_READ_PORT("P1") AM_RANGE(0x3081, 0x3081) AM_READ_PORT("P1")
AM_RANGE(0x3082, 0x3082) AM_READ_PORT("P2") AM_RANGE(0x3082, 0x3082) AM_READ_PORT("P2")
AM_RANGE(0x3083, 0x3083) AM_READ_PORT("DSW1") AM_RANGE(0x3083, 0x3083) AM_READ_PORT("DSW1")
AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DSW2") AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DSW2")
AM_RANGE(0x3100, 0x3100) AM_READ_PORT("DSW3") AM_RANGE(0x3100, 0x3100) AM_READ_PORT("DSW3")
AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_RAM) AM_RANGE(0x4000, 0x402f) AM_RAM AM_BASE(&spriteram_2)
AM_RANGE(0x6000, 0xffff) AM_READ(SMH_ROM) AM_RANGE(0x4400, 0x442f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
ADDRESS_MAP_END AM_RANGE(0x4000, 0x47ff) AM_RAM
AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(rocnrope_colorram_w) AM_BASE(&colorram)
static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x4c00, 0x4fff) AM_RAM_WRITE(rocnrope_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x4000, 0x402f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram_2) AM_RANGE(0x5000, 0x5fff) AM_RAM
AM_RANGE(0x4400, 0x442f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
AM_RANGE(0x4000, 0x47ff) AM_WRITE(SMH_RAM)
AM_RANGE(0x4800, 0x4bff) AM_WRITE(rocnrope_colorram_w) AM_BASE(&colorram)
AM_RANGE(0x4c00, 0x4fff) AM_WRITE(rocnrope_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x5000, 0x5fff) AM_WRITE(SMH_RAM)
AM_RANGE(0x8000, 0x8000) AM_WRITE(watchdog_reset_w) AM_RANGE(0x8000, 0x8000) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x8080, 0x8080) AM_WRITE(rocnrope_flipscreen_w) AM_RANGE(0x8080, 0x8080) AM_WRITE(rocnrope_flipscreen_w)
AM_RANGE(0x8081, 0x8081) AM_WRITE(timeplt_sh_irqtrigger_w) /* cause interrupt on audio CPU */ AM_RANGE(0x8081, 0x8081) AM_WRITE(timeplt_sh_irqtrigger_w) /* cause interrupt on audio CPU */
@ -58,7 +55,7 @@ static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x8087, 0x8087) AM_WRITE(interrupt_enable_w) AM_RANGE(0x8087, 0x8087) AM_WRITE(interrupt_enable_w)
AM_RANGE(0x8100, 0x8100) AM_WRITE(soundlatch_w) AM_RANGE(0x8100, 0x8100) AM_WRITE(soundlatch_w)
AM_RANGE(0x8182, 0x818d) AM_WRITE(rocnrope_interrupt_vector_w) AM_RANGE(0x8182, 0x818d) AM_WRITE(rocnrope_interrupt_vector_w)
AM_RANGE(0x6000, 0xffff) AM_WRITE(SMH_ROM) AM_RANGE(0x6000, 0xffff) AM_ROM
ADDRESS_MAP_END ADDRESS_MAP_END
@ -168,7 +165,7 @@ static MACHINE_DRIVER_START( rocnrope )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", M6809, MASTER_CLOCK / 3 / 4) /* Verified in schematics */ MDRV_CPU_ADD("maincpu", M6809, MASTER_CLOCK / 3 / 4) /* Verified in schematics */
MDRV_CPU_PROGRAM_MAP(readmem,writemem) MDRV_CPU_PROGRAM_MAP(rocnrope_map,0)
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
/* video hardware */ /* video hardware */

View File

@ -80,51 +80,33 @@ static READ8_HANDLER( pip_r )
return 0x7f; return 0x7f;
} }
static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( rollerg_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0020, 0x0020) AM_READ(watchdog_reset_r) AM_RANGE(0x0010, 0x0010) AM_WRITE(rollerg_0010_w)
AM_RANGE(0x0030, 0x0031) AM_DEVREAD("konami", rollerg_sound_r) /* K053260 */ AM_RANGE(0x0020, 0x0020) AM_READWRITE(watchdog_reset_r,watchdog_reset_w)
AM_RANGE(0x0030, 0x0031) AM_DEVREADWRITE("konami", rollerg_sound_r,k053260_w) /* K053260 */
AM_RANGE(0x0040, 0x0040) AM_WRITE(soundirq_w)
AM_RANGE(0x0050, 0x0050) AM_READ_PORT("P1") AM_RANGE(0x0050, 0x0050) AM_READ_PORT("P1")
AM_RANGE(0x0051, 0x0051) AM_READ_PORT("P2") AM_RANGE(0x0051, 0x0051) AM_READ_PORT("P2")
AM_RANGE(0x0052, 0x0052) AM_READ_PORT("DSW3") AM_RANGE(0x0052, 0x0052) AM_READ_PORT("DSW3")
AM_RANGE(0x0053, 0x0053) AM_READ_PORT("DSW1") AM_RANGE(0x0053, 0x0053) AM_READ_PORT("DSW1")
AM_RANGE(0x0060, 0x0060) AM_READ_PORT("DSW2") AM_RANGE(0x0060, 0x0060) AM_READ_PORT("DSW2")
AM_RANGE(0x0061, 0x0061) AM_READ(pip_r) /* ????? */ AM_RANGE(0x0061, 0x0061) AM_READ(pip_r) /* ????? */
AM_RANGE(0x0300, 0x030f) AM_READ(K053244_r)
AM_RANGE(0x0800, 0x0fff) AM_READ(rollerg_K051316_r)
AM_RANGE(0x1000, 0x17ff) AM_READ(K053245_r)
AM_RANGE(0x1800, 0x1fff) AM_READ(SMH_RAM)
AM_RANGE(0x2000, 0x3aff) AM_READ(SMH_RAM)
AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK(1))
AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
ADDRESS_MAP_END
static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0010, 0x0010) AM_WRITE(rollerg_0010_w)
AM_RANGE(0x0020, 0x0020) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x0030, 0x0031) AM_DEVWRITE("konami", k053260_w)
AM_RANGE(0x0040, 0x0040) AM_WRITE(soundirq_w)
AM_RANGE(0x0100, 0x010f) AM_WRITENOP /* 053252? */ AM_RANGE(0x0100, 0x010f) AM_WRITENOP /* 053252? */
AM_RANGE(0x0200, 0x020f) AM_WRITE(K051316_ctrl_0_w) AM_RANGE(0x0200, 0x020f) AM_WRITE(K051316_ctrl_0_w)
AM_RANGE(0x0300, 0x030f) AM_WRITE(K053244_w) AM_RANGE(0x0300, 0x030f) AM_READWRITE(K053244_r,K053244_w)
AM_RANGE(0x0800, 0x0fff) AM_WRITE(K051316_0_w) AM_RANGE(0x0800, 0x0fff) AM_READWRITE(rollerg_K051316_r,K051316_0_w)
AM_RANGE(0x1000, 0x17ff) AM_WRITE(K053245_w) AM_RANGE(0x1000, 0x17ff) AM_READWRITE(K053245_r,K053245_w)
AM_RANGE(0x1800, 0x1fff) AM_WRITE(paletteram_xBBBBBGGGGGRRRRR_be_w) AM_BASE(&paletteram) AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_be_w) AM_BASE(&paletteram)
AM_RANGE(0x2000, 0x3aff) AM_WRITE(SMH_RAM) AM_RANGE(0x2000, 0x3aff) AM_RAM
AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM) AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( readmem_sound, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( rollerg_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM) AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM) AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0xa000, 0xa02f) AM_DEVREAD("konami", k053260_r) AM_RANGE(0xa000, 0xa02f) AM_DEVREADWRITE("konami", k053260_r,k053260_w)
AM_RANGE(0xc000, 0xc001) AM_DEVREAD("ym", ym3812_r) AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym3812_r,ym3812_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
AM_RANGE(0xa000, 0xa02f) AM_DEVWRITE("konami", k053260_w)
AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ym", ym3812_w)
AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w) AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -239,11 +221,11 @@ static MACHINE_DRIVER_START( rollerg )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", KONAMI, 3000000) /* ? */ MDRV_CPU_ADD("maincpu", KONAMI, 3000000) /* ? */
MDRV_CPU_PROGRAM_MAP(readmem,writemem) MDRV_CPU_PROGRAM_MAP(rollerg_map,0)
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
MDRV_CPU_ADD("audiocpu", Z80, 3579545) MDRV_CPU_ADD("audiocpu", Z80, 3579545)
MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound) MDRV_CPU_PROGRAM_MAP(rollerg_sound_map,0)
/* NMIs are generated by the 053260 */ /* NMIs are generated by the 053260 */
MDRV_MACHINE_RESET(rollerg) MDRV_MACHINE_RESET(rollerg)

View File

@ -1,7 +1,10 @@
/*************************************************************************** /***************************************************************************
Fighting Roller (c) 1983 Kaneko
Issues: Issues:
-sound effects missing -sound effects missing
***************************************************************************/ ***************************************************************************/
#include "driver.h" #include "driver.h"
@ -34,57 +37,39 @@ static WRITE8_HANDLER( ra_fake_d800_w )
/* logerror("d900: %02X\n",data);*/ /* logerror("d900: %02X\n",data);*/
} }
static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( rollrace_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM) AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x9fff) AM_READ(SMH_ROM) /* only rollace2 */ AM_RANGE(0x8000, 0x9fff) AM_ROM /* only rollace2 */
AM_RANGE(0xc000, 0xcfff) AM_READ(SMH_RAM) AM_RANGE(0xc000, 0xcfff) AM_RAM
AM_RANGE(0xd900, 0xd900) AM_READ(ra_fake_d800_r) /* protection ??*/
AM_RANGE(0xe000, 0xe3ff) AM_READ(SMH_RAM)
AM_RANGE(0xe400, 0xe47f) AM_READ(SMH_RAM)
AM_RANGE(0xec00, 0xec0f) AM_READNOP /* Analog sound effects ??*/
AM_RANGE(0xf000, 0xf0ff) AM_READ(SMH_RAM)
AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1")
AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2")
AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW1")
AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM")
AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW2")
AM_RANGE(0xd806, 0xd806) AM_READNOP /* looks like a watchdog, bit4 checked*/ AM_RANGE(0xd806, 0xd806) AM_READNOP /* looks like a watchdog, bit4 checked*/
ADDRESS_MAP_END AM_RANGE(0xd900, 0xd900) AM_READWRITE(ra_fake_d800_r,ra_fake_d800_w) /* protection ??*/
AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0xe400, 0xe47f) AM_RAM AM_BASE(&colorram)
AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
AM_RANGE(0x8000, 0x9fff) AM_WRITE(SMH_ROM)
AM_RANGE(0xc000, 0xcfff) AM_WRITE(SMH_RAM)
AM_RANGE(0xd900, 0xd900) AM_WRITE(ra_fake_d800_w) /* protection ?? */
AM_RANGE(0xe000, 0xe3ff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size)
AM_RANGE(0xe400, 0xe47f) AM_WRITE(SMH_RAM) AM_BASE(&colorram)
AM_RANGE(0xe800, 0xe800) AM_WRITE(soundlatch_w) AM_RANGE(0xe800, 0xe800) AM_WRITE(soundlatch_w)
AM_RANGE(0xec00, 0xec0f) AM_WRITENOP /* Analog sound effects ?? ec00 sound enable ?*/ AM_RANGE(0xec00, 0xec0f) AM_NOP /* Analog sound effects ?? ec00 sound enable ?*/
AM_RANGE(0xf000, 0xf0ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size) AM_RANGE(0xf000, 0xf0ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
AM_RANGE(0xf400, 0xf400) AM_WRITE(rollrace_backgroundcolor_w)
AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1")
AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITE(rollrace_bkgpen_w)
AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") AM_WRITE(rollrace_backgroundpage_w)
AM_RANGE(0xf803, 0xf803) AM_WRITE(rollrace_flipy_w)
AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW1")
AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW2")
AM_RANGE(0xfc00, 0xfc00) AM_WRITE(rollrace_flipx_w) AM_RANGE(0xfc00, 0xfc00) AM_WRITE(rollrace_flipx_w)
AM_RANGE(0xfc01, 0xfc01) AM_WRITE(interrupt_enable_w) AM_RANGE(0xfc01, 0xfc01) AM_WRITE(interrupt_enable_w)
AM_RANGE(0xfc02, 0xfc03) AM_WRITENOP /* coin counters */ AM_RANGE(0xfc02, 0xfc03) AM_WRITENOP /* coin counters */
AM_RANGE(0xfc04, 0xfc05) AM_WRITE(rollrace_charbank_w) AM_RANGE(0xfc04, 0xfc05) AM_WRITE(rollrace_charbank_w)
AM_RANGE(0xfc06, 0xfc06) AM_WRITE(rollrace_spritebank_w) AM_RANGE(0xfc06, 0xfc06) AM_WRITE(rollrace_spritebank_w)
AM_RANGE(0xf400, 0xf400) AM_WRITE(rollrace_backgroundcolor_w)
AM_RANGE(0xf801, 0xf801) AM_WRITE(rollrace_bkgpen_w)
AM_RANGE(0xf802, 0xf802) AM_WRITE(rollrace_backgroundpage_w)
AM_RANGE(0xf803, 0xf803) AM_WRITE(rollrace_flipy_w)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( readmem_snd, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_ROM)
AM_RANGE(0x2000, 0x2fff) AM_READ(SMH_RAM)
AM_RANGE(0x3000, 0x3000) AM_READ(soundlatch_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( writemem_snd, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( rollrace_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_ROM) AM_RANGE(0x0000, 0x0fff) AM_ROM
AM_RANGE(0x2000, 0x2fff) AM_WRITE(SMH_RAM) AM_RANGE(0x2000, 0x2fff) AM_RAM
AM_RANGE(0x3000, 0x3000) AM_WRITE(interrupt_enable_w) AM_RANGE(0x3000, 0x3000) AM_READWRITE(soundlatch_r,interrupt_enable_w)
AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ay1", ay8910_address_data_w) AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ay1", ay8910_address_data_w)
AM_RANGE(0x5000, 0x5001) AM_DEVWRITE("ay2", ay8910_address_data_w) AM_RANGE(0x5000, 0x5001) AM_DEVWRITE("ay2", ay8910_address_data_w)
AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ay3", ay8910_address_data_w) AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ay3", ay8910_address_data_w)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -180,66 +165,60 @@ INPUT_PORTS_END
static const gfx_layout charlayout = static const gfx_layout charlayout =
{ {
8,8, /* 8*8 characters */ 8,8, /* 8*8 characters */
256, /* 256 characters */ 256, /* 256 characters */
3, /* 3 bits per pixel */ 3, /* 3 bits per pixel */
{ 0,1024*8*8, 2*1024*8*8 }, /* the two bitplanes are separated */ { 0,1024*8*8, 2*1024*8*8 }, /* the two bitplanes are separated */
{ 0,1,2,3,4,5,6,7 }, { 0,1,2,3,4,5,6,7 },
{ 7*8, 6*8, 5*8, 4*8, 3*8, 2*8, 1*8, 0*8 }, { 7*8, 6*8, 5*8, 4*8, 3*8, 2*8, 1*8, 0*8 },
8*8 /* every char takes 8 consecutive bytes */ 8*8 /* every char takes 8 consecutive bytes */
}; };
static const gfx_layout charlayout2 = static const gfx_layout charlayout2 =
{ {
8,8, /* 8*8 characters */ 8,8, /* 8*8 characters */
1024, /* 1024 characters */ 1024, /* 1024 characters */
3, /* 3 bits per pixel */ 3, /* 3 bits per pixel */
{ 0,1024*8*8, 2*1024*8*8 }, /* the two bitplanes are separated */ { 0,1024*8*8, 2*1024*8*8 }, /* the two bitplanes are separated */
{ 0, 1, 2, 3, 4, 5, 6, 7 }, { 0, 1, 2, 3, 4, 5, 6, 7 },
{ 7*8, 6*8, 5*8, 4*8, 3*8, 2*8, 1*8, 0*8 }, { 7*8, 6*8, 5*8, 4*8, 3*8, 2*8, 1*8, 0*8 },
// { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, // { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
8*8 /* every char takes 8 consecutive bytes */ 8*8 /* every char takes 8 consecutive bytes */
}; };
static const gfx_layout spritelayout = static const gfx_layout spritelayout =
{ {
32,32, /* 32*32 sprites */ 32,32, /* 32*32 sprites */
64, /* 64 sprites */ 64, /* 64 sprites */
3, /* 3 bits per pixel */ 3, /* 3 bits per pixel */
{ 0x4000*8, 0x2000*8, 0 }, /* the three bitplanes are separated */ { 0x4000*8, 0x2000*8, 0 }, /* the three bitplanes are separated */
{ 0, 1, 2, 3, 4, 5, 6, 7, { 0, 1, 2, 3, 4, 5, 6, 7,
8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7,16*8,16*8+1,16*8+2,16*8+3,16*8+4,16*8+5,16*8+6,16*8+7,24*8,24*8+1,24*8+2,24*8+3,24*8+4,24*8+5,24*8+6,24*8+7}, 8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7,16*8,16*8+1,16*8+2,16*8+3,16*8+4,16*8+5,16*8+6,16*8+7,24*8,24*8+1,24*8+2,24*8+3,24*8+4,24*8+5,24*8+6,24*8+7},
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
32*8, 33*8, 34*8, 35*8, 36*8, 37*8, 38*8, 39*8, 32*8, 33*8, 34*8, 35*8, 36*8, 37*8, 38*8, 39*8,
64*8,65*8,66*8,67*8,68*8,69*8,70*8,71*8, 96*8,97*8,98*8,99*8,100*8,101*8,102*8,103*8 }, 64*8,65*8,66*8,67*8,68*8,69*8,70*8,71*8, 96*8,97*8,98*8,99*8,100*8,101*8,102*8,103*8 },
32*32 /* every sprite takes 128 consecutive bytes */
32*32 /* every sprite takes 128 consecutive bytes */
}; };
static GFXDECODE_START( rollrace ) static GFXDECODE_START( rollrace )
GFXDECODE_ENTRY( "gfx1", 0x0000, charlayout, 0, 32 ) /* foreground */ GFXDECODE_ENTRY( "gfx1", 0x0000, charlayout, 0, 32 ) /* foreground */
GFXDECODE_ENTRY( "gfx1", 0x0800, charlayout, 0, 32 ) GFXDECODE_ENTRY( "gfx1", 0x0800, charlayout, 0, 32 )
GFXDECODE_ENTRY( "gfx1", 0x1000, charlayout, 0, 32 ) GFXDECODE_ENTRY( "gfx1", 0x1000, charlayout, 0, 32 )
GFXDECODE_ENTRY( "gfx1", 0x1800, charlayout, 0, 32 ) GFXDECODE_ENTRY( "gfx1", 0x1800, charlayout, 0, 32 )
GFXDECODE_ENTRY( "gfx2", 0x0000, charlayout2, 0, 32 ) /* for the road */ GFXDECODE_ENTRY( "gfx2", 0x0000, charlayout2, 0, 32 ) /* for the road */
GFXDECODE_ENTRY( "gfx3", 0x0000, spritelayout, 0, 32 ) /* sprites */ GFXDECODE_ENTRY( "gfx3", 0x0000, spritelayout, 0, 32 ) /* sprites */
GFXDECODE_ENTRY( "gfx4", 0x0000, spritelayout, 0, 32 ) GFXDECODE_ENTRY( "gfx4", 0x0000, spritelayout, 0, 32 )
GFXDECODE_ENTRY( "gfx5", 0x0000, spritelayout, 0, 32 ) GFXDECODE_ENTRY( "gfx5", 0x0000, spritelayout, 0, 32 )
GFXDECODE_END GFXDECODE_END
static MACHINE_DRIVER_START( rollrace ) static MACHINE_DRIVER_START( rollrace )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", Z80,XTAL_24MHz/8) /* verified on pcb */ MDRV_CPU_ADD("maincpu", Z80,XTAL_24MHz/8) /* verified on pcb */
MDRV_CPU_PROGRAM_MAP(readmem,writemem) MDRV_CPU_PROGRAM_MAP(rollrace_map,0)
MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse) MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
MDRV_CPU_ADD("audiocpu", Z80,XTAL_24MHz/16) /* verified on pcb */ MDRV_CPU_ADD("audiocpu", Z80,XTAL_24MHz/16) /* verified on pcb */
MDRV_CPU_PROGRAM_MAP(readmem_snd,writemem_snd) MDRV_CPU_PROGRAM_MAP(rollrace_sound_map,0)
MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,4) MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,4)
/* video hardware */ /* video hardware */
@ -427,6 +406,7 @@ ROM_START( rollace2 )
ROM_LOAD( "8.6f", 0x0000, 0x1000, CRC(6ec3c545) SHA1(1a2477b9e1563734195b0743f5dbbb005e06022e) ) ROM_LOAD( "8.6f", 0x0000, 0x1000, CRC(6ec3c545) SHA1(1a2477b9e1563734195b0743f5dbbb005e06022e) )
ROM_END ROM_END
GAME( 1983, fightrol, 0, rollrace, rollrace, 0, ROT270, "[Kaneko] (Taito license)", "Fighting Roller", GAME_IMPERFECT_SOUND ) GAME( 1983, fightrol, 0, rollrace, rollrace, 0, ROT270, "[Kaneko] (Taito license)", "Fighting Roller", GAME_IMPERFECT_SOUND )
GAME( 1983, rollace, fightrol, rollrace, rollrace, 0, ROT270, "[Kaneko] (Williams license)", "Roller Aces (set 1)", GAME_IMPERFECT_SOUND ) GAME( 1983, rollace, fightrol, rollrace, rollrace, 0, ROT270, "[Kaneko] (Williams license)", "Roller Aces (set 1)", GAME_IMPERFECT_SOUND )
GAME( 1983, rollace2, fightrol, rollace2, rollrace, 0, ROT90, "[Kaneko] (Williams license)", "Roller Aces (set 2)", GAME_IMPERFECT_SOUND ) GAME( 1983, rollace2, fightrol, rollace2, rollrace, 0, ROT90, "[Kaneko] (Williams license)", "Roller Aces (set 2)", GAME_IMPERFECT_SOUND )

View File

@ -85,34 +85,26 @@ static WRITE8_HANDLER( runaway_irq_ack_w )
} }
static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( runaway_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x03ff) AM_READ(SMH_RAM) AM_RANGE(0x0000, 0x03ff) AM_RAM
AM_RANGE(0x0400, 0x07ff) AM_READ(SMH_RAM) AM_RANGE(0x0400, 0x07bf) AM_RAM_WRITE(runaway_video_ram_w) AM_BASE(&runaway_video_ram)
AM_RANGE(0x3000, 0x3007) AM_READ(runaway_input_r) AM_RANGE(0x07c0, 0x07ff) AM_RAM AM_BASE(&runaway_sprite_ram)
AM_RANGE(0x4000, 0x4000) AM_READ_PORT("4000")
AM_RANGE(0x5000, 0x5000) AM_DEVREAD("earom", atari_vg_earom_r)
AM_RANGE(0x6000, 0x600f) AM_DEVREAD("pokey1", pokey_r)
AM_RANGE(0x7000, 0x700f) AM_DEVREAD("pokey2", pokey_r)
AM_RANGE(0x8000, 0xcfff) AM_READ(SMH_ROM)
AM_RANGE(0xf000, 0xffff) AM_READ(SMH_ROM) /* for the interrupt vectors */
ADDRESS_MAP_END
static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x03ff) AM_WRITE(SMH_RAM)
AM_RANGE(0x0400, 0x07bf) AM_WRITE(runaway_video_ram_w) AM_BASE(&runaway_video_ram)
AM_RANGE(0x07c0, 0x07ff) AM_WRITE(SMH_RAM) AM_BASE(&runaway_sprite_ram)
AM_RANGE(0x1000, 0x1000) AM_WRITE(runaway_irq_ack_w) AM_RANGE(0x1000, 0x1000) AM_WRITE(runaway_irq_ack_w)
AM_RANGE(0x1400, 0x143F) AM_DEVWRITE("earom", atari_vg_earom_w) AM_RANGE(0x1400, 0x143f) AM_DEVWRITE("earom", atari_vg_earom_w)
AM_RANGE(0x1800, 0x1800) AM_DEVWRITE("earom", atari_vg_earom_ctrl_w) AM_RANGE(0x1800, 0x1800) AM_DEVWRITE("earom", atari_vg_earom_ctrl_w)
AM_RANGE(0x1c00, 0x1c0f) AM_WRITE(runaway_paletteram_w) AM_RANGE(0x1c00, 0x1c0f) AM_WRITE(runaway_paletteram_w)
AM_RANGE(0x2000, 0x2000) AM_WRITENOP /* coin counter? */ AM_RANGE(0x2000, 0x2000) AM_WRITENOP /* coin counter? */
AM_RANGE(0x2001, 0x2001) AM_WRITENOP /* coin counter? */ AM_RANGE(0x2001, 0x2001) AM_WRITENOP /* coin counter? */
AM_RANGE(0x2003, 0x2004) AM_WRITE(runaway_led_w) AM_RANGE(0x2003, 0x2004) AM_WRITE(runaway_led_w)
AM_RANGE(0x2005, 0x2005) AM_WRITE(runaway_tile_bank_w) AM_RANGE(0x2005, 0x2005) AM_WRITE(runaway_tile_bank_w)
AM_RANGE(0x6000, 0x600f) AM_DEVWRITE("pokey1", pokey_w)
AM_RANGE(0x7000, 0x700f) AM_DEVWRITE("pokey2", pokey_w) AM_RANGE(0x3000, 0x3007) AM_READ(runaway_input_r)
AM_RANGE(0x8000, 0xcfff) AM_WRITE(SMH_ROM) AM_RANGE(0x4000, 0x4000) AM_READ_PORT("4000")
AM_RANGE(0x5000, 0x5000) AM_DEVREAD("earom", atari_vg_earom_r)
AM_RANGE(0x6000, 0x600f) AM_DEVREADWRITE("pokey1", pokey_r,pokey_w)
AM_RANGE(0x7000, 0x700f) AM_DEVREADWRITE("pokey2", pokey_r,pokey_w)
AM_RANGE(0x8000, 0xcfff) AM_ROM
AM_RANGE(0xf000, 0xffff) AM_ROM /* for the interrupt vectors */
ADDRESS_MAP_END ADDRESS_MAP_END
@ -363,7 +355,7 @@ static MACHINE_DRIVER_START( runaway )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", M6502, 12096000 / 8) /* ? */ MDRV_CPU_ADD("maincpu", M6502, 12096000 / 8) /* ? */
MDRV_CPU_PROGRAM_MAP(readmem, writemem) MDRV_CPU_PROGRAM_MAP(runaway_map, 0)
MDRV_MACHINE_RESET(runaway) MDRV_MACHINE_RESET(runaway)

View File

@ -206,47 +206,34 @@ static INTERRUPT_GEN(rng_interrupt)
cpu_set_input_line(device, M68K_IRQ_5, ASSERT_LINE); cpu_set_input_line(device, M68K_IRQ_5, ASSERT_LINE);
} }
static ADDRESS_MAP_START( rngreadmem, ADDRESS_SPACE_PROGRAM, 16 ) static ADDRESS_MAP_START( rungun_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x2fffff) AM_READ(SMH_ROM) // main program + data AM_RANGE(0x000000, 0x2fffff) AM_ROM // main program + data
AM_RANGE(0x300000, 0x3007ff) AM_READ(SMH_RAM) // palette RAM AM_RANGE(0x300000, 0x3007ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x380000, 0x39ffff) AM_READ(SMH_RAM) // work RAM AM_RANGE(0x380000, 0x39ffff) AM_RAM // work RAM
AM_RANGE(0x400000, 0x43ffff) AM_READNOP // K053936_0_rom_r }, // '936 ROM readback window AM_RANGE(0x400000, 0x43ffff) AM_READNOP // AM_READ( K053936_0_rom_r ) // '936 ROM readback window
AM_RANGE(0x480000, 0x48001f) AM_READ(rng_sysregs_r) AM_RANGE(0x480000, 0x48001f) AM_READWRITE(rng_sysregs_r,rng_sysregs_w) AM_BASE(&rng_sysreg)
AM_RANGE(0x4c0000, 0x4c001f) AM_READ(K053252_word_r) // CCU (for scanline and vblank polling) AM_RANGE(0x4c0000, 0x4c001f) AM_READ(K053252_word_r) // CCU (for scanline and vblank polling)
AM_RANGE(0x540000, 0x540001) AM_WRITE(sound_irq_w)
AM_RANGE(0x58000c, 0x58000d) AM_WRITE(sound_cmd1_w)
AM_RANGE(0x58000e, 0x58000f) AM_WRITE(sound_cmd2_w)
AM_RANGE(0x580014, 0x580015) AM_READ(sound_status_msb_r) AM_RANGE(0x580014, 0x580015) AM_READ(sound_status_msb_r)
AM_RANGE(0x580000, 0x58001f) AM_READ(SMH_RAM) // sound regs read fall-through AM_RANGE(0x580000, 0x58001f) AM_RAM // sound regs read/write fall-through
AM_RANGE(0x5c0000, 0x5c000d) AM_READ(K053246_word_r) // 246A ROM readback window AM_RANGE(0x5c0000, 0x5c000d) AM_READ(K053246_word_r) // 246A ROM readback window
AM_RANGE(0x600000, 0x600fff) AM_READ(K053247_word_r) // OBJ RAM AM_RANGE(0x5c0010, 0x5c001f) AM_WRITE(K053247_reg_word_w)
AM_RANGE(0x601000, 0x601fff) AM_READ(SMH_RAM) // communication? second monitor buffer? AM_RANGE(0x600000, 0x600fff) AM_READWRITE(K053247_word_r,K053247_word_w) // OBJ RAM
AM_RANGE(0x6c0000, 0x6cffff) AM_READ(SMH_RAM) // PSAC2 render RAM AM_RANGE(0x601000, 0x601fff) AM_RAM // communication? second monitor buffer?
AM_RANGE(0x700000, 0x7007ff) AM_READ(SMH_RAM) // PSAC2 line effect AM_RANGE(0x640000, 0x640007) AM_WRITE(K053246_word_w) // '246A registers
AM_RANGE(0x740000, 0x741fff) AM_READ(rng_ttl_ram_r) // text plane RAM AM_RANGE(0x680000, 0x68001f) AM_WRITEONLY AM_BASE(&K053936_0_ctrl) // '936 registers
AM_RANGE(0x6c0000, 0x6cffff) AM_RAM_WRITE(rng_936_videoram_w) AM_BASE(&rng_936_videoram) // PSAC2 ('936) RAM (34v + 35v)
AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_BASE(&K053936_0_linectrl) // PSAC "Line RAM"
AM_RANGE(0x740000, 0x741fff) AM_READWRITE(rng_ttl_ram_r,rng_ttl_ram_w) // text plane RAM
AM_RANGE(0x7c0000, 0x7c0001) AM_WRITENOP // watchdog
#if RNG_DEBUG #if RNG_DEBUG
AM_RANGE(0x5c0010, 0x5c001f) AM_READ(K053247_reg_word_r) AM_RANGE(0x5c0010, 0x5c001f) AM_READ(K053247_reg_word_r)
AM_RANGE(0x640000, 0x640007) AM_READ(K053246_reg_word_r) AM_RANGE(0x640000, 0x640007) AM_READ(K053246_reg_word_r)
#endif #endif
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( rngwritemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x2fffff) AM_WRITE(SMH_ROM)
AM_RANGE(0x300000, 0x3007ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x380000, 0x39ffff) AM_WRITE(SMH_RAM) // work RAM
AM_RANGE(0x480000, 0x48001f) AM_WRITE(rng_sysregs_w) AM_BASE(&rng_sysreg)
AM_RANGE(0x4c0000, 0x4c001f) AM_WRITE(K053252_word_w) // CCU
AM_RANGE(0x540000, 0x540001) AM_WRITE(sound_irq_w)
AM_RANGE(0x58000c, 0x58000d) AM_WRITE(sound_cmd1_w)
AM_RANGE(0x58000e, 0x58000f) AM_WRITE(sound_cmd2_w)
AM_RANGE(0x580000, 0x58001f) AM_WRITE(SMH_RAM) // sound regs write fall-through
AM_RANGE(0x5c0010, 0x5c001f) AM_WRITE(K053247_reg_word_w)
AM_RANGE(0x600000, 0x600fff) AM_WRITE(K053247_word_w) // OBJ RAM
AM_RANGE(0x601000, 0x601fff) AM_WRITE(SMH_RAM) // communication? second monitor buffer?
AM_RANGE(0x640000, 0x640007) AM_WRITE(K053246_word_w) // '246A registers
AM_RANGE(0x680000, 0x68001f) AM_WRITE(SMH_RAM) AM_BASE(&K053936_0_ctrl) // '936 registers
AM_RANGE(0x6c0000, 0x6cffff) AM_WRITE(rng_936_videoram_w) AM_BASE(&rng_936_videoram) // PSAC2 ('936) RAM (34v + 35v)
AM_RANGE(0x700000, 0x7007ff) AM_WRITE(SMH_RAM) AM_BASE(&K053936_0_linectrl) // "Line RAM"
AM_RANGE(0x740000, 0x741fff) AM_WRITE(rng_ttl_ram_w) // text plane RAM
AM_RANGE(0x7c0000, 0x7c0001) AM_WRITENOP // watchdog
ADDRESS_MAP_END
/**********************************************************************************/ /**********************************************************************************/
@ -274,30 +261,22 @@ static INTERRUPT_GEN(audio_interrupt)
/* sound (this should be split into audio/xexex.c or pregx.c or so someday) */ /* sound (this should be split into audio/xexex.c or pregx.c or so someday) */
static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( rungun_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM) AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(2)) AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(2)
AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM) AM_RANGE(0xc000, 0xdfff) AM_RAM
AM_RANGE(0xe000, 0xe22f) AM_DEVREAD("konami1", k054539_r) AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("konami1", k054539_r,k054539_w)
AM_RANGE(0xe230, 0xe3ff) AM_READ(SMH_RAM) AM_RANGE(0xe230, 0xe3ff) AM_RAM
AM_RANGE(0xe400, 0xe62f) AM_DEVREAD("konami2", k054539_r) AM_RANGE(0xe400, 0xe62f) AM_DEVREADWRITE("konami2", k054539_r,k054539_w)
AM_RANGE(0xe630, 0xe7ff) AM_READ(SMH_RAM) AM_RANGE(0xe630, 0xe7ff) AM_RAM
AM_RANGE(0xf000, 0xf000) AM_WRITE(sound_status_w)
AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_r) AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_r)
AM_RANGE(0xf003, 0xf003) AM_READ(soundlatch2_r) AM_RANGE(0xf003, 0xf003) AM_READ(soundlatch2_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM)
AM_RANGE(0xe000, 0xe22f) AM_DEVWRITE("konami1", k054539_w)
AM_RANGE(0xe230, 0xe3ff) AM_WRITE(SMH_RAM)
AM_RANGE(0xe400, 0xe62f) AM_DEVWRITE("konami2", k054539_w)
AM_RANGE(0xe630, 0xe7ff) AM_WRITE(SMH_RAM)
AM_RANGE(0xf000, 0xf000) AM_WRITE(sound_status_w)
AM_RANGE(0xf800, 0xf800) AM_WRITE(z80ctrl_w) AM_RANGE(0xf800, 0xf800) AM_WRITE(z80ctrl_w)
AM_RANGE(0xfff0, 0xfff3) AM_WRITENOP AM_RANGE(0xfff0, 0xfff3) AM_WRITENOP
ADDRESS_MAP_END ADDRESS_MAP_END
static const k054539_interface k054539_config = static const k054539_interface k054539_config =
{ {
"shared" "shared"
@ -326,11 +305,11 @@ static MACHINE_DRIVER_START( rng )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", M68000, 16000000) MDRV_CPU_ADD("maincpu", M68000, 16000000)
MDRV_CPU_PROGRAM_MAP(rngreadmem,rngwritemem) MDRV_CPU_PROGRAM_MAP(rungun_map,0)
MDRV_CPU_VBLANK_INT("screen", rng_interrupt) MDRV_CPU_VBLANK_INT("screen", rng_interrupt)
MDRV_CPU_ADD("soundcpu", Z80, 10000000) // 8Mhz (10Mhz is much safer in self-test due to heavy sync) MDRV_CPU_ADD("soundcpu", Z80, 10000000) // 8Mhz (10Mhz is much safer in self-test due to heavy sync)
MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem) MDRV_CPU_PROGRAM_MAP(rungun_sound_map,0)
MDRV_CPU_PERIODIC_INT(audio_interrupt, 480) MDRV_CPU_PERIODIC_INT(audio_interrupt, 480)
MDRV_QUANTUM_TIME(HZ(6000)) // higher if sound stutters MDRV_QUANTUM_TIME(HZ(6000)) // higher if sound stutters

View File

@ -59,12 +59,12 @@ static WRITE8_HANDLER(sangho_ram_w)
sangho_ram[offset]=data; sangho_ram[offset]=data;
} }
static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( pzlestar_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xffff) AM_WRITE(sangho_ram_w) AM_RANGE(0x0000, 0xffff) AM_WRITE(sangho_ram_w)
AM_RANGE(0x0000, 0x3fff) AM_READ( SMH_BANK(1) ) AM_RANGE(0x0000, 0x3fff) AM_ROMBANK(1)
AM_RANGE(0x4000, 0x7fff) AM_READ( SMH_BANK(2) ) AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(2)
AM_RANGE(0x8000, 0xbfff) AM_READ( SMH_BANK(3) ) AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(3)
AM_RANGE(0xc000, 0xffff) AM_READ( SMH_BANK(4) ) AM_RANGE(0xc000, 0xffff) AM_ROMBANK(4)
ADDRESS_MAP_END ADDRESS_MAP_END
/* Wrong ! */ /* Wrong ! */
@ -223,7 +223,7 @@ static VIDEO_START( sangho )
static MACHINE_DRIVER_START(pzlestar) static MACHINE_DRIVER_START(pzlestar)
MDRV_CPU_ADD("maincpu", Z80,8000000) // ? MDRV_CPU_ADD("maincpu", Z80,8000000) // ?
MDRV_CPU_PROGRAM_MAP(readmem, 0) MDRV_CPU_PROGRAM_MAP(pzlestar_map, 0)
MDRV_CPU_IO_MAP(pzlestar_io_map,0) MDRV_CPU_IO_MAP(pzlestar_io_map,0)
MDRV_CPU_VBLANK_INT_HACK(sangho_interrupt,262) MDRV_CPU_VBLANK_INT_HACK(sangho_interrupt,262)
@ -256,7 +256,7 @@ MACHINE_DRIVER_END
static MACHINE_DRIVER_START(sexyboom ) static MACHINE_DRIVER_START(sexyboom )
MDRV_CPU_ADD("maincpu", Z80,8000000) // ? MDRV_CPU_ADD("maincpu", Z80,8000000) // ?
MDRV_CPU_PROGRAM_MAP(readmem, 0) MDRV_CPU_PROGRAM_MAP(pzlestar_map, 0)
MDRV_CPU_IO_MAP(sexyboom_io_map,0) MDRV_CPU_IO_MAP(sexyboom_io_map,0)
MDRV_CPU_VBLANK_INT_HACK(sangho_interrupt,262) MDRV_CPU_VBLANK_INT_HACK(sangho_interrupt,262)

View File

@ -90,7 +90,6 @@ WRITE8_HANDLER( tecfri_videoram2_w );
WRITE8_HANDLER( tecfri_colorram2_w ); WRITE8_HANDLER( tecfri_colorram2_w );
WRITE8_HANDLER( tecfri_scroll_bg_w ); WRITE8_HANDLER( tecfri_scroll_bg_w );
WRITE8_HANDLER( sauro_scroll_fg_w ); WRITE8_HANDLER( sauro_scroll_fg_w );
WRITE8_HANDLER( trckydoc_spriteram_mirror_w );
WRITE8_HANDLER( sauro_palette_bank_w ); WRITE8_HANDLER( sauro_palette_bank_w );
VIDEO_START( sauro ); VIDEO_START( sauro );
@ -135,23 +134,16 @@ static WRITE8_DEVICE_HANDLER( adpcm_w )
sp0256_ALD_w(device, 0, data); sp0256_ALD_w(device, 0, data);
} }
static ADDRESS_MAP_START( sauro_readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( sauro_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xdfff) AM_READ(SMH_ROM) AM_RANGE(0x0000, 0xdfff) AM_ROM
AM_RANGE(0xe000, 0xebff) AM_READ(SMH_RAM) AM_RANGE(0xe000, 0xe7ff) AM_RAM
AM_RANGE(0xf000, 0xffff) AM_READ(SMH_RAM) AM_RANGE(0xe800, 0xebff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(tecfri_videoram_w) AM_BASE(&tecfri_videoram)
AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(tecfri_colorram_w) AM_BASE(&tecfri_colorram)
AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(tecfri_videoram2_w) AM_BASE(&tecfri_videoram2)
AM_RANGE(0xfc00, 0xffff) AM_RAM_WRITE(tecfri_colorram2_w) AM_BASE(&tecfri_colorram2)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( sauro_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xdfff) AM_WRITE(SMH_ROM)
AM_RANGE(0xe000, 0xe7ff) AM_WRITE(SMH_RAM)
AM_RANGE(0xe800, 0xebff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
AM_RANGE(0xf000, 0xf3ff) AM_WRITE(tecfri_videoram_w) AM_BASE(&tecfri_videoram)
AM_RANGE(0xf400, 0xf7ff) AM_WRITE(tecfri_colorram_w) AM_BASE(&tecfri_colorram)
AM_RANGE(0xf800, 0xfbff) AM_WRITE(tecfri_videoram2_w) AM_BASE(&tecfri_videoram2)
AM_RANGE(0xfc00, 0xffff) AM_WRITE(tecfri_colorram2_w) AM_BASE(&tecfri_colorram2)
ADDRESS_MAP_END
static ADDRESS_MAP_START( sauro_io_map, ADDRESS_SPACE_IO, 8 ) static ADDRESS_MAP_START( sauro_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1")
@ -177,38 +169,29 @@ static ADDRESS_MAP_START( sauro_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0xe0, 0xe0) AM_WRITE(watchdog_reset_w) AM_RANGE(0xe0, 0xe0) AM_WRITE(watchdog_reset_w)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( sauro_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( sauro_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM) AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM) AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0xe000, 0xe000) AM_READ(sauro_sound_command_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( sauro_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ym", ym3812_w) AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ym", ym3812_w)
AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("speech", adpcm_w) AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("speech", adpcm_w)
AM_RANGE(0xe000, 0xe000) AM_READ(sauro_sound_command_r)
AM_RANGE(0xe000, 0xe006) AM_WRITENOP /* echo from write to e0000 */ AM_RANGE(0xe000, 0xe006) AM_WRITENOP /* echo from write to e0000 */
AM_RANGE(0xe00e, 0xe00f) AM_WRITENOP AM_RANGE(0xe00e, 0xe00f) AM_WRITENOP
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( trckydoc_readmem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xdfff) AM_READ(SMH_ROM) static ADDRESS_MAP_START( trckydoc_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xe000, 0xe7ff) AM_READ(SMH_RAM) AM_RANGE(0x0000, 0xdfff) AM_ROM
AM_RANGE(0xe000, 0xe7ff) AM_RAM
AM_RANGE(0xe800, 0xebff) AM_RAM AM_MIRROR(0x400) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(tecfri_videoram_w) AM_BASE(&tecfri_videoram)
AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(tecfri_colorram_w) AM_BASE(&tecfri_colorram)
AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSW1") AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSW1")
AM_RANGE(0xf808, 0xf808) AM_READ_PORT("DSW2") AM_RANGE(0xf808, 0xf808) AM_READ_PORT("DSW2")
AM_RANGE(0xf810, 0xf810) AM_READ_PORT("P1") AM_RANGE(0xf810, 0xf810) AM_READ_PORT("P1")
AM_RANGE(0xf818, 0xf818) AM_READ_PORT("P2") AM_RANGE(0xf818, 0xf818) AM_READ_PORT("P2")
AM_RANGE(0xf828, 0xf828) AM_READ(watchdog_reset_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( trckydoc_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xdfff) AM_WRITE(SMH_ROM)
AM_RANGE(0xe000, 0xe7ff) AM_WRITE(SMH_RAM)
AM_RANGE(0xe800, 0xebff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
AM_RANGE(0xec00, 0xefff) AM_WRITE(trckydoc_spriteram_mirror_w) // it clears sprites from the screen by writing here to set some of the attributes
AM_RANGE(0xf000, 0xf3ff) AM_WRITE(tecfri_videoram_w) AM_BASE(&tecfri_videoram)
AM_RANGE(0xf400, 0xf7ff) AM_WRITE(tecfri_colorram_w) AM_BASE(&tecfri_colorram)
AM_RANGE(0xf820, 0xf821) AM_DEVWRITE("ym", ym3812_w) AM_RANGE(0xf820, 0xf821) AM_DEVWRITE("ym", ym3812_w)
AM_RANGE(0xf828, 0xf828) AM_READ(watchdog_reset_r)
AM_RANGE(0xf830, 0xf830) AM_WRITE(tecfri_scroll_bg_w) AM_RANGE(0xf830, 0xf830) AM_WRITE(tecfri_scroll_bg_w)
AM_RANGE(0xf838, 0xf838) AM_WRITENOP /* only written at startup */ AM_RANGE(0xf838, 0xf838) AM_WRITENOP /* only written at startup */
AM_RANGE(0xf839, 0xf839) AM_WRITE(flip_screen_w) AM_RANGE(0xf839, 0xf839) AM_WRITE(flip_screen_w)
@ -218,6 +201,7 @@ static ADDRESS_MAP_START( trckydoc_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xf83f, 0xf83f) AM_WRITENOP /* only written at startup */ AM_RANGE(0xf83f, 0xf83f) AM_WRITENOP /* only written at startup */
ADDRESS_MAP_END ADDRESS_MAP_END
static INPUT_PORTS_START( tecfri ) static INPUT_PORTS_START( tecfri )
PORT_START("P1") PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
@ -376,7 +360,7 @@ static MACHINE_DRIVER_START( trckydoc )
MDRV_IMPORT_FROM(tecfri) MDRV_IMPORT_FROM(tecfri)
MDRV_CPU_MODIFY("maincpu") MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_PROGRAM_MAP(trckydoc_readmem, trckydoc_writemem ) MDRV_CPU_PROGRAM_MAP(trckydoc_map,0 )
MDRV_GFXDECODE(trckydoc) MDRV_GFXDECODE(trckydoc)
@ -389,12 +373,12 @@ static MACHINE_DRIVER_START( sauro )
MDRV_IMPORT_FROM(tecfri) MDRV_IMPORT_FROM(tecfri)
MDRV_CPU_MODIFY("maincpu") MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_PROGRAM_MAP(sauro_readmem, sauro_writemem) MDRV_CPU_PROGRAM_MAP(sauro_map, 0)
MDRV_CPU_IO_MAP(sauro_io_map,0) MDRV_CPU_IO_MAP(sauro_io_map,0)
MDRV_CPU_ADD("audiocpu", Z80, 4000000) // 4 MHz? MDRV_CPU_ADD("audiocpu", Z80, 4000000) // 4 MHz?
MDRV_CPU_PROGRAM_MAP(sauro_sound_readmem, sauro_sound_writemem) MDRV_CPU_PROGRAM_MAP(sauro_sound_map, 0)
MDRV_CPU_VBLANK_INT_HACK(sauro_interrupt, 8) // ? MDRV_CPU_PERIODIC_INT(sauro_interrupt, 8*60) // ?
MDRV_GFXDECODE(sauro) MDRV_GFXDECODE(sauro)
@ -404,7 +388,6 @@ static MACHINE_DRIVER_START( sauro )
MDRV_SOUND_ADD("speech", SP0256, 3120000) MDRV_SOUND_ADD("speech", SP0256, 3120000)
MDRV_SOUND_CONFIG(sauro_sp256) MDRV_SOUND_CONFIG(sauro_sp256)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_DRIVER_END MACHINE_DRIVER_END
/*************************************************************************** /***************************************************************************

View File

@ -73,44 +73,36 @@ static WRITE8_HANDLER( sbasketb_coin_counter_w )
} }
static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( sbasketb_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x2000, 0x3bff) AM_READ(SMH_RAM) AM_RANGE(0x2000, 0x2fff) AM_RAM
AM_RANGE(0x3c10, 0x3c10) AM_READNOP /* ???? */ AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(sbasketb_colorram_w) AM_BASE(&colorram)
AM_RANGE(0x3e00, 0x3e00) AM_READ_PORT("SYSTEM") AM_RANGE(0x3400, 0x37ff) AM_RAM_WRITE(sbasketb_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x3e01, 0x3e01) AM_READ_PORT("P1") AM_RANGE(0x3800, 0x39ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
AM_RANGE(0x3e02, 0x3e02) AM_READ_PORT("P2") AM_RANGE(0x3a00, 0x3bff) AM_RAM /* Probably unused, but initialized */
AM_RANGE(0x3e03, 0x3e03) AM_READNOP
AM_RANGE(0x3e80, 0x3e80) AM_READ_PORT("DSW2")
AM_RANGE(0x3f00, 0x3f00) AM_READ_PORT("DSW1")
AM_RANGE(0x6000, 0xffff) AM_READ(SMH_ROM)
ADDRESS_MAP_END
static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x2000, 0x2fff) AM_WRITE(SMH_RAM)
AM_RANGE(0x3000, 0x33ff) AM_WRITE(sbasketb_colorram_w) AM_BASE(&colorram)
AM_RANGE(0x3400, 0x37ff) AM_WRITE(sbasketb_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x3800, 0x39ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
AM_RANGE(0x3a00, 0x3bff) AM_WRITE(SMH_RAM) /* Probably unused, but initialized */
AM_RANGE(0x3c00, 0x3c00) AM_WRITE(watchdog_reset_w) AM_RANGE(0x3c00, 0x3c00) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x3c20, 0x3c20) AM_WRITE(SMH_RAM) AM_BASE(&sbasketb_palettebank) AM_RANGE(0x3c10, 0x3c10) AM_READNOP /* ???? */
AM_RANGE(0x3c20, 0x3c20) AM_WRITEONLY AM_BASE(&sbasketb_palettebank)
AM_RANGE(0x3c80, 0x3c80) AM_WRITE(sbasketb_flipscreen_w) AM_RANGE(0x3c80, 0x3c80) AM_WRITE(sbasketb_flipscreen_w)
AM_RANGE(0x3c81, 0x3c81) AM_WRITE(interrupt_enable_w) AM_RANGE(0x3c81, 0x3c81) AM_WRITE(interrupt_enable_w)
AM_RANGE(0x3c83, 0x3c84) AM_WRITE(sbasketb_coin_counter_w) AM_RANGE(0x3c83, 0x3c84) AM_WRITE(sbasketb_coin_counter_w)
AM_RANGE(0x3c85, 0x3c85) AM_WRITE(SMH_RAM) AM_BASE(&sbasketb_spriteram_select) AM_RANGE(0x3c85, 0x3c85) AM_WRITE(SMH_RAM) AM_BASE(&sbasketb_spriteram_select)
AM_RANGE(0x3d00, 0x3d00) AM_WRITE(soundlatch_w) AM_RANGE(0x3d00, 0x3d00) AM_WRITE(soundlatch_w)
AM_RANGE(0x3d80, 0x3d80) AM_WRITE(sbasketb_sh_irqtrigger_w) AM_RANGE(0x3d80, 0x3d80) AM_WRITE(sbasketb_sh_irqtrigger_w)
AM_RANGE(0x3f80, 0x3f80) AM_WRITE(SMH_RAM) AM_BASE(&sbasketb_scroll) AM_RANGE(0x3e00, 0x3e00) AM_READ_PORT("SYSTEM")
AM_RANGE(0x3e01, 0x3e01) AM_READ_PORT("P1")
AM_RANGE(0x3e02, 0x3e02) AM_READ_PORT("P2")
AM_RANGE(0x3e03, 0x3e03) AM_READNOP
AM_RANGE(0x3e80, 0x3e80) AM_READ_PORT("DSW2")
AM_RANGE(0x3f00, 0x3f00) AM_READ_PORT("DSW1")
AM_RANGE(0x3f80, 0x3f80) AM_WRITEONLY AM_BASE(&sbasketb_scroll)
AM_RANGE(0x6000, 0xffff) AM_READ(SMH_ROM)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( sbasketb_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM) AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x4000, 0x43ff) AM_READ(SMH_RAM) AM_RANGE(0x4000, 0x43ff) AM_RAM
AM_RANGE(0x6000, 0x6000) AM_READ(soundlatch_r) AM_RANGE(0x6000, 0x6000) AM_READ(soundlatch_r)
AM_RANGE(0x8000, 0x8000) AM_READ(hyperspt_sh_timer_r) AM_RANGE(0x8000, 0x8000) AM_READ(hyperspt_sh_timer_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x4000, 0x43ff) AM_WRITE(SMH_RAM)
AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("vlm", vlm5030_data_w) /* speech data */ AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("vlm", vlm5030_data_w) /* speech data */
AM_RANGE(0xc000, 0xdfff) AM_DEVWRITE("vlm", hyperspt_sound_w) /* speech and output controll */ AM_RANGE(0xc000, 0xdfff) AM_DEVWRITE("vlm", hyperspt_sound_w) /* speech and output controll */
AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("dac", dac_w) AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("dac", dac_w)
@ -119,7 +111,6 @@ static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END ADDRESS_MAP_END
static INPUT_PORTS_START( sbasketb ) static INPUT_PORTS_START( sbasketb )
PORT_START("SYSTEM") PORT_START("SYSTEM")
KONAMI8_SYSTEM_UNK KONAMI8_SYSTEM_UNK
@ -197,11 +188,11 @@ static MACHINE_DRIVER_START( sbasketb )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", M6809, 1400000) /* 1.400 MHz ??? */ MDRV_CPU_ADD("maincpu", M6809, 1400000) /* 1.400 MHz ??? */
MDRV_CPU_PROGRAM_MAP(readmem,writemem) MDRV_CPU_PROGRAM_MAP(sbasketb_map,0)
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
MDRV_CPU_ADD("audiocpu", Z80, XTAL_14_31818MHz / 4) /* 3.5795 MHz */ MDRV_CPU_ADD("audiocpu", Z80, XTAL_14_31818MHz / 4) /* 3.5795 MHz */
MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem) MDRV_CPU_PROGRAM_MAP(sbasketb_sound_map,0)
/* video hardware */ /* video hardware */
MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_ADD("screen", RASTER)

View File

@ -51,63 +51,43 @@ it as ASCII text.
#include "driver.h" #include "driver.h"
#include "cpu/m6502/m6502.h" #include "cpu/m6502/m6502.h"
#include "deprecat.h"
#include "sound/ay8910.h" #include "sound/ay8910.h"
#include "includes/btime.h" #include "includes/btime.h"
static ADDRESS_MAP_START( dommy_readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( dommy_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_RAM) AM_RANGE(0x0000, 0x07ff) AM_RAM
AM_RANGE(0x2000, 0x27ff) AM_READ(SMH_RAM) AM_RANGE(0x2000, 0x23ff) AM_RAM AM_BASE(&btime_videoram) AM_SIZE(&btime_videoram_size)
AM_RANGE(0x2800, 0x2bff) AM_READ(btime_mirrorvideoram_r) AM_RANGE(0x2400, 0x27ff) AM_RAM AM_BASE(&btime_colorram)
AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW1") AM_RANGE(0x2800, 0x2bff) AM_READWRITE(btime_mirrorvideoram_r,btime_mirrorvideoram_w)
AM_RANGE(0x4001, 0x4001) AM_READ_PORT("DSW2") AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW1") AM_WRITENOP
AM_RANGE(0x4001, 0x4001) AM_READ_PORT("DSW2") AM_WRITE(btime_video_control_w)
/* AM_RANGE(0x4004, 0x4004) */ /* this is read */ /* AM_RANGE(0x4004, 0x4004) */ /* this is read */
AM_RANGE(0x4002, 0x4002) AM_READ_PORT("P1") AM_RANGE(0x4002, 0x4002) AM_READ_PORT("P1")
AM_RANGE(0x4003, 0x4003) AM_READ_PORT("P2") AM_RANGE(0x4003, 0x4003) AM_READ_PORT("P2")
AM_RANGE(0xa000, 0xffff) AM_READ(SMH_ROM)
ADDRESS_MAP_END
static ADDRESS_MAP_START( dommy_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM)
AM_RANGE(0x2000, 0x23ff) AM_WRITE(SMH_RAM) AM_BASE(&btime_videoram) AM_SIZE(&btime_videoram_size)
AM_RANGE(0x2400, 0x27ff) AM_WRITE(SMH_RAM) AM_BASE(&btime_colorram)
AM_RANGE(0x2800, 0x2bff) AM_WRITE(btime_mirrorvideoram_w)
AM_RANGE(0x4000, 0x4000) AM_WRITENOP
AM_RANGE(0x4001, 0x4001) AM_WRITE(btime_video_control_w)
AM_RANGE(0x4004, 0x4005) AM_DEVWRITE("ay1", ay8910_address_data_w) AM_RANGE(0x4004, 0x4005) AM_DEVWRITE("ay1", ay8910_address_data_w)
AM_RANGE(0x4006, 0x4007) AM_DEVWRITE("ay2", ay8910_address_data_w) AM_RANGE(0x4006, 0x4007) AM_DEVWRITE("ay2", ay8910_address_data_w)
AM_RANGE(0xa000, 0xffff) AM_WRITE(SMH_ROM) AM_RANGE(0xa000, 0xffff) AM_ROM
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( eggs_readmem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_RAM) static ADDRESS_MAP_START( eggs_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x1000, 0x17ff) AM_READ(SMH_RAM) AM_RANGE(0x0000, 0x07ff) AM_RAM
AM_RANGE(0x1800, 0x1bff) AM_READ(btime_mirrorvideoram_r) AM_RANGE(0x1000, 0x13ff) AM_RAM AM_BASE(&btime_videoram) AM_SIZE(&btime_videoram_size)
AM_RANGE(0x1c00, 0x1fff) AM_READ(btime_mirrorcolorram_r) AM_RANGE(0x1400, 0x17ff) AM_RAM AM_BASE(&btime_colorram)
AM_RANGE(0x2000, 0x2000) AM_READ_PORT("DSW1") AM_RANGE(0x1800, 0x1bff) AM_READWRITE(btime_mirrorvideoram_r,btime_mirrorvideoram_w)
AM_RANGE(0x2001, 0x2001) AM_READ_PORT("DSW2") AM_RANGE(0x1c00, 0x1fff) AM_READWRITE(btime_mirrorcolorram_r,btime_mirrorcolorram_w)
AM_RANGE(0x2000, 0x2000) AM_READ_PORT("DSW1") AM_WRITE(btime_video_control_w)
AM_RANGE(0x2001, 0x2001) AM_READ_PORT("DSW2") AM_WRITENOP
AM_RANGE(0x2002, 0x2002) AM_READ_PORT("P1") AM_RANGE(0x2002, 0x2002) AM_READ_PORT("P1")
AM_RANGE(0x2003, 0x2003) AM_READ_PORT("P2") AM_RANGE(0x2003, 0x2003) AM_READ_PORT("P2")
AM_RANGE(0x3000, 0x7fff) AM_READ(SMH_ROM)
AM_RANGE(0xf000, 0xffff) AM_READ(SMH_ROM) /* reset/interrupt vectors */
ADDRESS_MAP_END
static ADDRESS_MAP_START( eggs_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM)
AM_RANGE(0x1000, 0x13ff) AM_WRITE(SMH_RAM) AM_BASE(&btime_videoram) AM_SIZE(&btime_videoram_size)
AM_RANGE(0x1400, 0x17ff) AM_WRITE(SMH_RAM) AM_BASE(&btime_colorram)
AM_RANGE(0x1800, 0x1bff) AM_WRITE(btime_mirrorvideoram_w)
AM_RANGE(0x1c00, 0x1fff) AM_WRITE(btime_mirrorcolorram_w)
AM_RANGE(0x2000, 0x2000) AM_WRITE(btime_video_control_w)
AM_RANGE(0x2001, 0x2001) AM_WRITENOP
AM_RANGE(0x2004, 0x2005) AM_DEVWRITE("ay1", ay8910_address_data_w) AM_RANGE(0x2004, 0x2005) AM_DEVWRITE("ay1", ay8910_address_data_w)
AM_RANGE(0x2006, 0x2007) AM_DEVWRITE("ay2", ay8910_address_data_w) AM_RANGE(0x2006, 0x2007) AM_DEVWRITE("ay2", ay8910_address_data_w)
AM_RANGE(0x3000, 0x7fff) AM_WRITE(SMH_ROM) AM_RANGE(0x3000, 0x7fff) AM_ROM
AM_RANGE(0xf000, 0xffff) AM_ROM /* reset/interrupt vectors */
ADDRESS_MAP_END ADDRESS_MAP_END
static INPUT_PORTS_START( scregg ) static INPUT_PORTS_START( scregg )
PORT_START("P1") PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
@ -224,8 +204,8 @@ static MACHINE_DRIVER_START( dommy )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", M6502, 1500000) MDRV_CPU_ADD("maincpu", M6502, 1500000)
MDRV_CPU_PROGRAM_MAP(dommy_readmem,dommy_writemem) MDRV_CPU_PROGRAM_MAP(dommy_map,0)
MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,16) MDRV_CPU_PERIODIC_INT(irq0_line_hold,16*60) //???
/* video hardware */ /* video hardware */
MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_ADD("screen", RASTER)
@ -257,8 +237,8 @@ static MACHINE_DRIVER_START( scregg )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", M6502, 1500000) MDRV_CPU_ADD("maincpu", M6502, 1500000)
MDRV_CPU_PROGRAM_MAP(eggs_readmem,eggs_writemem) MDRV_CPU_PROGRAM_MAP(eggs_map,0)
MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,16) MDRV_CPU_PERIODIC_INT(irq0_line_hold,16*60) //???
/* video hardware */ /* video hardware */
MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_ADD("screen", RASTER)

View File

@ -316,31 +316,19 @@ static struct sms_vdp *md_sms_vdp;
#define SMS_VDP_VRAM(address) chip->vram[(address)&0x3fff] #define SMS_VDP_VRAM(address) chip->vram[(address)&0x3fff]
#ifdef UNUSED_FUNCTION #ifdef UNUSED_FUNCTION
static ADDRESS_MAP_START( sms_readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( sms_map, ADDRESS_SPACE_PROGRAM, 8 )
// AM_RANGE(0x0000 , 0xbfff) AM_READ(SMH_ROM) // AM_RANGE(0x0000 , 0xbfff) AM_ROM
// AM_RANGE(0xc000 , 0xdfff) AM_READ(SMH_RAM) AM_MIRROR(0x2000) // AM_RANGE(0xc000 , 0xdfff) AM_RAM AM_MIRROR(0x2000)
ADDRESS_MAP_END
static ADDRESS_MAP_START( sms_writemem, ADDRESS_SPACE_PROGRAM, 8 )
// AM_RANGE(0x0000 , 0xbfff) AM_WRITE(SMH_ROM)
// AM_RANGE(0xc000 , 0xdfff) AM_WRITE(SMH_RAM) AM_MIRROR(0x2000)
ADDRESS_MAP_END ADDRESS_MAP_END
#endif #endif
/* we have to fill in the ROM addresses for systeme due to the encrypted games */ /* we have to fill in the ROM addresses for systeme due to the encrypted games */
static ADDRESS_MAP_START( systeme_readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( systeme_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM) /* Fixed ROM */ AM_RANGE(0x0000, 0x7fff) AM_ROM /* Fixed ROM */
AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(1)) /* Banked ROM */ AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1) /* Banked ROM */
// AM_RANGE(0x0000 , 0xbfff) AM_READ(SMH_ROM) // AM_RANGE(0x0000 , 0xbfff) AM_ROM
// AM_RANGE(0xc000 , 0xdfff) AM_READ(SMH_RAM) AM_MIRROR(0x2000) // AM_RANGE(0xc000 , 0xdfff) AM_RAM AM_MIRROR(0x2000)
ADDRESS_MAP_END
static ADDRESS_MAP_START( systeme_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM) /* Fixed ROM */
// AM_RANGE(0x0000 , 0xbfff) AM_WRITE(SMH_ROM)
// AM_RANGE(0xc000 , 0xdfff) AM_WRITE(SMH_RAM) AM_MIRROR(0x2000)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( sms_io_map, ADDRESS_SPACE_IO, 8 ) static ADDRESS_MAP_START( sms_io_map, ADDRESS_SPACE_IO, 8 )
@ -2036,7 +2024,7 @@ static VIDEO_UPDATE(systeme)
static MACHINE_DRIVER_START( systeme ) static MACHINE_DRIVER_START( systeme )
MDRV_CPU_ADD("z80", Z80, 10738600/2) /* correct for hangonjr, and astroflash/transformer at least */ MDRV_CPU_ADD("z80", Z80, 10738600/2) /* correct for hangonjr, and astroflash/transformer at least */
MDRV_CPU_PROGRAM_MAP(systeme_readmem,systeme_writemem) MDRV_CPU_PROGRAM_MAP(systeme_map,0)
MDRV_CPU_IO_MAP(sms_io_map,0) MDRV_CPU_IO_MAP(sms_io_map,0)
/* IRQ handled via the timers */ /* IRQ handled via the timers */

View File

@ -25,7 +25,6 @@ Sound: AY-3-8912
#include "driver.h" #include "driver.h"
#include "cpu/m6809/m6809.h" #include "cpu/m6809/m6809.h"
#include "deprecat.h"
#include "video/mc6845.h" #include "video/mc6845.h"
#include "sound/ay8910.h" #include "sound/ay8910.h"
@ -241,7 +240,7 @@ static MACHINE_DRIVER_START( usg32 )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", M6809, 2000000) /* ?? */ MDRV_CPU_ADD("maincpu", M6809, 2000000) /* ?? */
MDRV_CPU_PROGRAM_MAP(usgames_map,0) MDRV_CPU_PROGRAM_MAP(usgames_map,0)
MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,5) /* ?? */ MDRV_CPU_PERIODIC_INT(irq0_line_hold,5*60) /* ?? */
MDRV_NVRAM_HANDLER(generic_0fill) MDRV_NVRAM_HANDLER(generic_0fill)

View File

@ -152,11 +152,6 @@ VIDEO_UPDATE( sauro )
/* Tricky Doc */ /* Tricky Doc */
WRITE8_HANDLER ( trckydoc_spriteram_mirror_w )
{
spriteram[offset] = data;
}
VIDEO_START( trckydoc ) VIDEO_START( trckydoc )
{ {
bg_tilemap = tilemap_create(machine, get_tile_info_bg, tilemap_scan_cols, bg_tilemap = tilemap_create(machine, get_tile_info_bg, tilemap_scan_cols,