diff --git a/src/mame/drivers/mayumi.c b/src/mame/drivers/mayumi.c index 9db1769aa56..a1de06a553a 100644 --- a/src/mame/drivers/mayumi.c +++ b/src/mame/drivers/mayumi.c @@ -12,12 +12,11 @@ Kikiippatsu Mayumi-chan (c) 1988 Victory L.L.C. #define MCLK 10000000 +extern UINT8 *mayumi_videoram; +WRITE8_HANDLER( mayumi_videoram_w ); VIDEO_START( mayumi ); VIDEO_UPDATE( mayumi ); -WRITE8_HANDLER( mayumi_videoram_w ); -READ8_HANDLER( mayumi_videoram_r ); - static int int_enable; static int input_sel; @@ -75,21 +74,15 @@ static READ8_HANDLER( key_matrix_r ) /****************************************************************************/ -static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM) - AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(1)) - AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM) - AM_RANGE(0xe000, 0xf7ff) AM_READ(mayumi_videoram_r) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM) - AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size) - AM_RANGE(0xe000, 0xf7ff) AM_WRITE(mayumi_videoram_w) +static ADDRESS_MAP_START( mayumi_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x7fff) AM_ROM + AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1) + AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size) + AM_RANGE(0xe000, 0xf7ff) AM_RAM_WRITE(mayumi_videoram_w) AM_BASE(&mayumi_videoram) ADDRESS_MAP_END -static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 ) +static ADDRESS_MAP_START( mayumi_io_map, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x30, 0x30) AM_READ_PORT("IN0") AM_WRITE(bank_sel_w) AM_RANGE(0xc0, 0xc0) AM_WRITE(input_sel_w) @@ -279,8 +272,8 @@ static MACHINE_DRIVER_START( mayumi ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, MCLK/2) /* 5.000 MHz ? */ - MDRV_CPU_PROGRAM_MAP(readmem,writemem) - MDRV_CPU_IO_MAP(io_map,0) + MDRV_CPU_PROGRAM_MAP(mayumi_map,0) + MDRV_CPU_IO_MAP(mayumi_io_map,0) MDRV_CPU_VBLANK_INT("screen", mayumi_interrupt) MDRV_MACHINE_RESET( mayumi ) diff --git a/src/mame/drivers/mazerbla.c b/src/mame/drivers/mazerbla.c index 0af45d8560e..6649ffc5900 100644 --- a/src/mame/drivers/mazerbla.c +++ b/src/mame/drivers/mazerbla.c @@ -318,18 +318,6 @@ note: -static UINT8 *cfb_zpu_sharedram; -static WRITE8_HANDLER ( sharedram_CFB_ZPU_w ) -{ - cfb_zpu_sharedram[offset] = data; -} -static READ8_HANDLER ( sharedram_CFB_ZPU_r ) -{ - return cfb_zpu_sharedram[offset]; -} - - - static UINT8 ls670_0[4]; static UINT8 ls670_1[4]; @@ -471,7 +459,15 @@ static WRITE8_HANDLER(zpu_coin_counter_w) coin_counter_w(offset, (data&0x40)>>6 ); } -static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 ) +static ADDRESS_MAP_START( mazerbla_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x7fff) AM_ROM + AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE(1) + AM_RANGE(0xd800, 0xd800) AM_READ(cfb_zpu_int_req_clr) + AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size) + AM_RANGE(0xe800, 0xefff) AM_RAM +ADDRESS_MAP_END + +static ADDRESS_MAP_START( mazerbla_io_map, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x4c, 0x4f) AM_READWRITE(ls670_1_r, ls670_0_w) AM_RANGE(0x60, 0x60) AM_WRITE(zpu_bcd_decoder_w) @@ -481,22 +477,6 @@ static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 ) AM_RANGE(0x6e, 0x6f) AM_WRITE(zpu_led_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM) - AM_RANGE(0xc000, 0xc7ff) AM_READ(sharedram_CFB_ZPU_r) - AM_RANGE(0xd800, 0xd800) AM_READ(cfb_zpu_int_req_clr) - AM_RANGE(0xe000, 0xe7ff) AM_READ(SMH_RAM) - AM_RANGE(0xe800, 0xefff) AM_READ(SMH_RAM) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM) - AM_RANGE(0xc000, 0xc7ff) AM_WRITE(sharedram_CFB_ZPU_w) - AM_RANGE(0xe000, 0xe7ff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size) - AM_RANGE(0xe800, 0xefff) AM_WRITE(SMH_RAM) -ADDRESS_MAP_END - - static UINT8 vsb_ls273; static WRITE8_HANDLER( vsb_ls273_audio_control_w ) @@ -508,39 +488,20 @@ static WRITE8_HANDLER( vsb_ls273_audio_control_w ) } -static ADDRESS_MAP_START( cpu2_io_map, ADDRESS_SPACE_IO, 8 ) + + +static ADDRESS_MAP_START( mazerbla_cpu2_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x1fff) AM_ROM + AM_RANGE(0x4000, 0x43ff) AM_RAM /* main RAM (stack) */ + AM_RANGE(0x8000, 0x83ff) AM_RAM /* waveform ???*/ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( mazerbla_cpu2_io_map, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_WRITE(vsb_ls273_audio_control_w) AM_RANGE(0x80, 0x83) AM_READWRITE(ls670_0_r, ls670_1_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( readmem_cpu2, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM) - AM_RANGE(0x4000, 0x43ff) AM_READ(SMH_RAM) - AM_RANGE(0x8000, 0x83ff) AM_READ(SMH_RAM) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( writemem_cpu2, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_ROM) - AM_RANGE(0x4000, 0x43ff) AM_WRITE(SMH_RAM) /* main RAM (stack) */ - AM_RANGE(0x8000, 0x83ff) AM_WRITE(SMH_RAM) /* waveform ???*/ -ADDRESS_MAP_END - - - - - -/* Color Frame Buffer PCB */ -static WRITE8_HANDLER ( cfb_ram_w ) -{ - cfb_ram[offset] = data; -} -static READ8_HANDLER ( cfb_ram_r ) -{ - return cfb_ram[offset]; -} - - static WRITE8_HANDLER(cfb_led_w) { /* bit 7 - led on */ @@ -614,28 +575,6 @@ static READ8_HANDLER( cfb_port_02_r ) return (port02_status); } - -static ADDRESS_MAP_START( cpu3_io_map, ADDRESS_SPACE_IO, 8 ) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01, 0x01) AM_WRITE(cfb_backgnd_color_w) - AM_RANGE(0x02, 0x02) AM_READWRITE(cfb_port_02_r, cfb_led_w) /* Read = VCU status ? */ - AM_RANGE(0x03, 0x03) AM_WRITE(cfb_zpu_int_req_set_w) - AM_RANGE(0x04, 0x04) AM_WRITE(cfb_rom_bank_sel_w) - AM_RANGE(0x05, 0x05) AM_WRITE(cfb_vbank_w) //visible/writable videopage select? -ADDRESS_MAP_END -/* Great Guns has a little different banking layout */ - -static ADDRESS_MAP_START( gg_cpu3_io_map, ADDRESS_SPACE_IO, 8 ) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITENOP - AM_RANGE(0x01, 0x01) AM_WRITE(cfb_backgnd_color_w) - AM_RANGE(0x02, 0x02) AM_READWRITE(cfb_port_02_r, cfb_led_w) /* Read = VCU status ? */ - AM_RANGE(0x03, 0x03) AM_WRITE(cfb_zpu_int_req_set_w) - AM_RANGE(0x04, 0x04) AM_WRITE(cfb_rom_bank_sel_w_gg) - AM_RANGE(0x05, 0x05) AM_WRITE(cfb_vbank_w) //visible/writable videopage select? -ADDRESS_MAP_END - - static UINT8 VCU_video_reg[4]; static WRITE8_HANDLER( VCU_video_reg_w ) { @@ -1028,27 +967,25 @@ UINT8 * rom = memory_region(space->machine, "sub2") + (gfx_rom_bank * 0x2000) + return 0; } -static ADDRESS_MAP_START( readmem_cpu3, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x37ff) AM_READ(SMH_ROM) - AM_RANGE(0x3800, 0x3fff) AM_READ(sharedram_CFB_ZPU_r) - AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_BANK(1)) /* GFX roms */ - AM_RANGE(0x6000, 0x67ff) AM_READ(cfb_ram_r) /* RAM for VCU commands and parameters */ - - AM_RANGE(0xa000, 0xa7ff) AM_READ(VCU_set_cmd_param_r) /* VCU command and parameters LOAD */ - AM_RANGE(0xc000, 0xdfff) AM_READ(VCU_set_gfx_addr_r) /* gfx LOAD (blit) */ - AM_RANGE(0xe000, 0xffff) AM_READ(VCU_set_clr_addr_r) /* palette? LOAD */ -ADDRESS_MAP_END - -static ADDRESS_MAP_START( writemem_cpu3, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x37ff) AM_WRITE(SMH_ROM) - AM_RANGE(0x3800, 0x3fff) AM_WRITE(sharedram_CFB_ZPU_w) AM_BASE(&cfb_zpu_sharedram) +static ADDRESS_MAP_START( mazerbla_cpu3_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x37ff) AM_ROM + AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE(1) + AM_RANGE(0x4000, 0x5fff) AM_ROMBANK(1) /* GFX roms */ AM_RANGE(0x4000, 0x4003) AM_WRITE(VCU_video_reg_w) - AM_RANGE(0x6000, 0x67ff) AM_WRITE(cfb_ram_w) AM_BASE(&cfb_ram) + AM_RANGE(0x6000, 0x67ff) AM_RAM AM_BASE(&cfb_ram) /* Color Frame Buffer PCB, a.k.a. RAM for VCU commands and parameters */ + AM_RANGE(0xa000, 0xa7ff) AM_READ(VCU_set_cmd_param_r) /* VCU command and parameters LOAD */ + AM_RANGE(0xc000, 0xdfff) AM_READ(VCU_set_gfx_addr_r) /* gfx LOAD (blit) */ + AM_RANGE(0xe000, 0xffff) AM_READ(VCU_set_clr_addr_r) /* palette? LOAD */ ADDRESS_MAP_END - - - +static ADDRESS_MAP_START( mazerbla_cpu3_io_map, ADDRESS_SPACE_IO, 8 ) + ADDRESS_MAP_GLOBAL_MASK(0xff) + AM_RANGE(0x01, 0x01) AM_WRITE(cfb_backgnd_color_w) + AM_RANGE(0x02, 0x02) AM_READWRITE(cfb_port_02_r, cfb_led_w) /* Read = VCU status ? */ + AM_RANGE(0x03, 0x03) AM_WRITE(cfb_zpu_int_req_set_w) + AM_RANGE(0x04, 0x04) AM_WRITE(cfb_rom_bank_sel_w) + AM_RANGE(0x05, 0x05) AM_WRITE(cfb_vbank_w) //visible/writable videopage select? +ADDRESS_MAP_END /* Great Guns */ @@ -1075,7 +1012,7 @@ static WRITE8_HANDLER( main_sound_w ) } -static ADDRESS_MAP_START( gg_io_map, ADDRESS_SPACE_IO, 8 ) +static ADDRESS_MAP_START( greatgun_io_map, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x4c, 0x4c) AM_WRITE(main_sound_w) AM_RANGE(0x60, 0x60) AM_WRITE(zpu_bcd_decoder_w) @@ -1085,6 +1022,16 @@ static ADDRESS_MAP_START( gg_io_map, ADDRESS_SPACE_IO, 8 ) AM_RANGE(0x6e, 0x6f) AM_WRITE(zpu_led_w) ADDRESS_MAP_END +/* Great Guns has a little different banking layout */ +static ADDRESS_MAP_START( greatgun_cpu3_io_map, ADDRESS_SPACE_IO, 8 ) + ADDRESS_MAP_GLOBAL_MASK(0xff) + AM_RANGE(0x00, 0x00) AM_WRITENOP + AM_RANGE(0x01, 0x01) AM_WRITE(cfb_backgnd_color_w) + AM_RANGE(0x02, 0x02) AM_READWRITE(cfb_port_02_r, cfb_led_w) /* Read = VCU status ? */ + AM_RANGE(0x03, 0x03) AM_WRITE(cfb_zpu_int_req_set_w) + AM_RANGE(0x04, 0x04) AM_WRITE(cfb_rom_bank_sel_w_gg) + AM_RANGE(0x05, 0x05) AM_WRITE(cfb_vbank_w) //visible/writable videopage select? +ADDRESS_MAP_END /* frequency is 14.318 MHz/16/16/16/16 */ static INTERRUPT_GEN( sound_interrupt ) @@ -1107,28 +1054,18 @@ static WRITE8_DEVICE_HANDLER( gg_led_ctrl_w ) set_led_status(1,data&0x01); } -static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM) - AM_RANGE(0x2000, 0x27ff) AM_READ(SMH_RAM) +static ADDRESS_MAP_START( greatgun_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x1fff) AM_ROM + AM_RANGE(0x2000, 0x27ff) AM_RAM AM_RANGE(0x4000, 0x4000) AM_DEVREAD("ay1", ay8910_r) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_ROM) - AM_RANGE(0x2000, 0x27ff) AM_WRITE(SMH_RAM) /* main RAM (stack) */ - AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ay1", ay8910_address_data_w) AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ay2", ay8910_address_data_w) - AM_RANGE(0x8000, 0x8000) AM_WRITE(sound_int_clear_w) AM_RANGE(0xa000, 0xa000) AM_WRITE(sound_nmi_clear_w) ADDRESS_MAP_END - - - static INPUT_PORTS_START( mazerbla ) PORT_START("ZPU") /* Strobe 0: ZPU Switches */ PORT_DIPNAME( 0x40, 0x40, "ZPU Switch 1" ) @@ -1472,17 +1409,17 @@ static const ay8910_interface ay8912_interface_2 = static MACHINE_DRIVER_START( mazerbla ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz, no NMI, IM2 - vectors at 0xf8, 0xfa, 0xfc */ - MDRV_CPU_PROGRAM_MAP(readmem,writemem) - MDRV_CPU_IO_MAP(io_map,0) + MDRV_CPU_PROGRAM_MAP(mazerbla_map,0) + MDRV_CPU_IO_MAP(mazerbla_io_map,0) MDRV_CPU_ADD("sub", Z80, 4000000) /* 4 MHz, NMI, IM1 INT */ - MDRV_CPU_PROGRAM_MAP(readmem_cpu2,writemem_cpu2) - MDRV_CPU_IO_MAP(cpu2_io_map,0) + MDRV_CPU_PROGRAM_MAP(mazerbla_cpu2_map,0) + MDRV_CPU_IO_MAP(mazerbla_cpu2_io_map,0) //MDRV_CPU_PERIODIC_INT(irq0_line_hold, 400 ) /* frequency in Hz */ MDRV_CPU_ADD("sub2", Z80, 4000000) /* 4 MHz, no NMI, IM1 INT */ - MDRV_CPU_PROGRAM_MAP(readmem_cpu3,writemem_cpu3) - MDRV_CPU_IO_MAP(cpu3_io_map,0) + MDRV_CPU_PROGRAM_MAP(mazerbla_cpu3_map,0) + MDRV_CPU_IO_MAP(mazerbla_cpu3_io_map,0) /* (vblank related ??) int generated by a custom video processor and cleared on ANY port access. but handled differently for now @@ -1515,16 +1452,16 @@ static MACHINE_DRIVER_START( greatgun ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz, no NMI, IM2 - vectors at 0xf8, 0xfa, 0xfc */ - MDRV_CPU_PROGRAM_MAP(readmem,writemem) - MDRV_CPU_IO_MAP(gg_io_map,0) + MDRV_CPU_PROGRAM_MAP(mazerbla_map,0) + MDRV_CPU_IO_MAP(greatgun_io_map,0) MDRV_CPU_ADD("sub", Z80, 14318000 / 4) /* 3.579500 MHz, NMI - caused by sound command write, periodic INT */ - MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem) + MDRV_CPU_PROGRAM_MAP(greatgun_sound_map,0) MDRV_CPU_PERIODIC_INT(sound_interrupt, (double)14318180/16/16/16/16 ) MDRV_CPU_ADD("sub2", Z80, 4000000) /* 4 MHz, no NMI, IM1 INT */ - MDRV_CPU_PROGRAM_MAP(readmem_cpu3,writemem_cpu3) - MDRV_CPU_IO_MAP(gg_cpu3_io_map,0) + MDRV_CPU_PROGRAM_MAP(mazerbla_cpu3_map,0) + MDRV_CPU_IO_MAP(greatgun_cpu3_io_map,0) /* (vblank related ??) int generated by a custom video processor and cleared on ANY port access. but handled differently for now diff --git a/src/mame/drivers/momoko.c b/src/mame/drivers/momoko.c index aff1f1b0b66..fdb53981333 100644 --- a/src/mame/drivers/momoko.c +++ b/src/mame/drivers/momoko.c @@ -70,45 +70,23 @@ static WRITE8_HANDLER( momoko_bg_read_bank_w ) /****************************************************************************/ -static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM) - AM_RANGE(0xc000, 0xcfff) AM_READ(SMH_RAM) - - AM_RANGE(0xd064, 0xd0ff) AM_READ(SMH_RAM) /* sprite ram */ - - AM_RANGE(0xd400, 0xd400) AM_READ_PORT("IN0") - AM_RANGE(0xd402, 0xd402) AM_READ_PORT("IN1") - AM_RANGE(0xd406, 0xd406) AM_READ_PORT("DSW0") - AM_RANGE(0xd407, 0xd407) AM_READ_PORT("DSW1") - - AM_RANGE(0xd800, 0xdbff) AM_READ(SMH_RAM) - AM_RANGE(0xe000, 0xe3ff) AM_READ(SMH_RAM) /* text */ - - AM_RANGE(0xf000, 0xffff) AM_READ(SMH_BANK(1)) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM) - AM_RANGE(0xc000, 0xcfff) AM_WRITE(SMH_RAM) - - AM_RANGE(0xd064, 0xd0ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size) - - AM_RANGE(0xd400, 0xd400) AM_WRITENOP /* interrupt ack? */ - AM_RANGE(0xd402, 0xd402) AM_WRITE(momoko_flipscreen_w) +static ADDRESS_MAP_START( momoko_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0xbfff) AM_ROM + AM_RANGE(0xc000, 0xcfff) AM_RAM + AM_RANGE(0xd064, 0xd0ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size) + AM_RANGE(0xd400, 0xd400) AM_READ_PORT("IN0") AM_WRITENOP /* interrupt ack? */ + AM_RANGE(0xd402, 0xd402) AM_READ_PORT("IN1") AM_WRITE(momoko_flipscreen_w) AM_RANGE(0xd404, 0xd404) AM_WRITE(watchdog_reset_w) - AM_RANGE(0xd406, 0xd406) AM_WRITE(soundlatch_w) - - AM_RANGE(0xd800, 0xdbff) AM_WRITE(paletteram_xxxxRRRRGGGGBBBB_be_w) AM_BASE(&paletteram) - + AM_RANGE(0xd406, 0xd406) AM_READ_PORT("DSW0") AM_WRITE(soundlatch_w) + AM_RANGE(0xd407, 0xd407) AM_READ_PORT("DSW1") + AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_be_w) AM_BASE(&paletteram) AM_RANGE(0xdc00, 0xdc00) AM_WRITE(momoko_fg_scrolly_w) AM_RANGE(0xdc01, 0xdc01) AM_WRITE(momoko_fg_scrollx_w) AM_RANGE(0xdc02, 0xdc02) AM_WRITE(momoko_fg_select_w) - - AM_RANGE(0xe000, 0xe3ff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size) - + AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size) AM_RANGE(0xe800, 0xe800) AM_WRITE(momoko_text_scrolly_w) AM_RANGE(0xe801, 0xe801) AM_WRITE(momoko_text_mode_w) - + AM_RANGE(0xf000, 0xffff) AM_ROMBANK(1) AM_RANGE(0xf000, 0xf001) AM_WRITE(momoko_bg_scrolly_w) AM_BASE(&momoko_bg_scrolly) AM_RANGE(0xf002, 0xf003) AM_WRITE(momoko_bg_scrollx_w) AM_BASE(&momoko_bg_scrollx) AM_RANGE(0xf004, 0xf004) AM_WRITE(momoko_bg_read_bank_w) @@ -116,21 +94,15 @@ static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0xf007, 0xf007) AM_WRITE(momoko_bg_priority_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( readmem_sound, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM) - AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM) - AM_RANGE(0xa000, 0xa001) AM_DEVREAD("ym1", ym2203_r) - AM_RANGE(0xc000, 0xc001) AM_DEVREAD("ym2", ym2203_r) +static ADDRESS_MAP_START( momoko_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x7fff) AM_ROM + AM_RANGE(0x8000, 0x87ff) AM_RAM + AM_RANGE(0x9000, 0x9000) AM_WRITENOP /* unknown */ + AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym1", ym2203_r,ym2203_w) + AM_RANGE(0xb000, 0xb000) AM_WRITENOP /* unknown */ + AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym2", ym2203_r,ym2203_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(0x9000, 0x9000) AM_WRITENOP /* unknown */ - AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ym1", ym2203_w) - AM_RANGE(0xb000, 0xb000) AM_WRITENOP /* unknown */ - AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ym2", ym2203_w) -ADDRESS_MAP_END /****************************************************************************/ @@ -273,11 +245,11 @@ static MACHINE_DRIVER_START( momoko ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, 5000000) /* 5.0MHz */ - MDRV_CPU_PROGRAM_MAP(readmem,writemem) + MDRV_CPU_PROGRAM_MAP(momoko_map,0) MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) MDRV_CPU_ADD("audiocpu", Z80, 2500000) /* 2.5MHz */ - MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound) + MDRV_CPU_PROGRAM_MAP(momoko_sound_map,0) /* video hardware */ MDRV_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/mosaic.c b/src/mame/drivers/mosaic.c index 87a3c1434dd..28e64968191 100644 --- a/src/mame/drivers/mosaic.c +++ b/src/mame/drivers/mosaic.c @@ -96,38 +96,23 @@ static READ8_HANDLER( gfire2_protection_r ) -static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x00000, 0x0ffff) AM_READ(SMH_ROM) - AM_RANGE(0x20000, 0x21fff) AM_READ(SMH_RAM) - AM_RANGE(0x22000, 0x23fff) AM_READ(SMH_RAM) - AM_RANGE(0x24000, 0x241ff) AM_READ(SMH_RAM) +static ADDRESS_MAP_START( mosaic_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x00000, 0x0ffff) AM_ROM + AM_RANGE(0x20000, 0x21fff) AM_RAM + AM_RANGE(0x22000, 0x22fff) AM_RAM_WRITE(mosaic_bgvideoram_w) AM_BASE(&mosaic_bgvideoram) + AM_RANGE(0x23000, 0x23fff) AM_RAM_WRITE(mosaic_fgvideoram_w) AM_BASE(&mosaic_fgvideoram) + AM_RANGE(0x24000, 0x241ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE(&paletteram) ADDRESS_MAP_END -static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x00000, 0x0ffff) AM_WRITE(SMH_ROM) - AM_RANGE(0x20000, 0x21fff) AM_WRITE(SMH_RAM) - AM_RANGE(0x22000, 0x22fff) AM_WRITE(mosaic_bgvideoram_w) AM_BASE(&mosaic_bgvideoram) - AM_RANGE(0x23000, 0x23fff) AM_WRITE(mosaic_fgvideoram_w) AM_BASE(&mosaic_fgvideoram) - AM_RANGE(0x24000, 0x241ff) AM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE(&paletteram) +static ADDRESS_MAP_START( gfire2_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x00000, 0x0ffff) AM_ROM + AM_RANGE(0x10000, 0x17fff) AM_RAM + AM_RANGE(0x22000, 0x22fff) AM_RAM_WRITE(mosaic_bgvideoram_w) AM_BASE(&mosaic_bgvideoram) + AM_RANGE(0x23000, 0x23fff) AM_RAM_WRITE(mosaic_fgvideoram_w) AM_BASE(&mosaic_fgvideoram) + AM_RANGE(0x24000, 0x241ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE(&paletteram) ADDRESS_MAP_END -static ADDRESS_MAP_START( gfire2_readmem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x00000, 0x0ffff) AM_READ(SMH_ROM) - AM_RANGE(0x10000, 0x17fff) AM_READ(SMH_RAM) - AM_RANGE(0x22000, 0x23fff) AM_READ(SMH_RAM) - AM_RANGE(0x24000, 0x241ff) AM_READ(SMH_RAM) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( gfire2_writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x00000, 0x0ffff) AM_WRITE(SMH_ROM) - AM_RANGE(0x10000, 0x17fff) AM_WRITE(SMH_RAM) - AM_RANGE(0x22000, 0x22fff) AM_WRITE(mosaic_bgvideoram_w) AM_BASE(&mosaic_bgvideoram) - AM_RANGE(0x23000, 0x23fff) AM_WRITE(mosaic_fgvideoram_w) AM_BASE(&mosaic_fgvideoram) - AM_RANGE(0x24000, 0x241ff) AM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE(&paletteram) -ADDRESS_MAP_END - - -static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 ) +static ADDRESS_MAP_START( mosaic_io_map, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x3f) AM_WRITENOP /* Z180 internal registers */ AM_RANGE(0x30, 0x30) AM_READNOP /* Z180 internal registers */ @@ -275,8 +260,8 @@ static const ym2203_interface ym2203_config = static MACHINE_DRIVER_START( mosaic ) MDRV_CPU_ADD("maincpu", Z180, 7000000) /* ??? */ - MDRV_CPU_PROGRAM_MAP(readmem,writemem) - MDRV_CPU_IO_MAP(io_map,0) + MDRV_CPU_PROGRAM_MAP(mosaic_map,0) + MDRV_CPU_IO_MAP(mosaic_io_map,0) MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) /* video hardware */ @@ -304,7 +289,7 @@ MACHINE_DRIVER_END static MACHINE_DRIVER_START( gfire2 ) MDRV_IMPORT_FROM(mosaic) MDRV_CPU_MODIFY("maincpu") - MDRV_CPU_PROGRAM_MAP(gfire2_readmem,gfire2_writemem) + MDRV_CPU_PROGRAM_MAP(gfire2_map,0) MDRV_CPU_IO_MAP(gfire2_io_map,0) MACHINE_DRIVER_END diff --git a/src/mame/drivers/mouser.c b/src/mame/drivers/mouser.c index a5586315247..6c052b09491 100644 --- a/src/mame/drivers/mouser.c +++ b/src/mame/drivers/mouser.c @@ -55,45 +55,30 @@ static READ8_HANDLER( mouser_sound_byte_r ) return mouser_sound_byte; } -static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM) - AM_RANGE(0x6000, 0x6bff) AM_READ(SMH_RAM) - AM_RANGE(0x9000, 0x93ff) AM_READ(SMH_RAM) - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1") - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") - AM_RANGE(0xb800, 0xb800) AM_READ_PORT("P2") -ADDRESS_MAP_END - - -static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x5fff) AM_WRITE(SMH_ROM) - AM_RANGE(0x6000, 0x6bff) AM_WRITE(SMH_RAM) +static ADDRESS_MAP_START( mouser_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x5fff) AM_ROM + AM_RANGE(0x6000, 0x6bff) AM_RAM AM_RANGE(0x8800, 0x88ff) AM_WRITENOP /* unknown */ - AM_RANGE(0x9000, 0x93ff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size) - AM_RANGE(0x9800, 0x9cff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size) - AM_RANGE(0x9c00, 0x9fff) AM_WRITE(SMH_RAM) AM_BASE(&colorram) - AM_RANGE(0xa000, 0xa000) AM_WRITE(mouser_nmi_enable_w) /* bit 0 = NMI Enable */ + AM_RANGE(0x9000, 0x93ff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size) + AM_RANGE(0x9800, 0x9cff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size) + AM_RANGE(0x9c00, 0x9fff) AM_RAM AM_BASE(&colorram) + AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1") AM_WRITE(mouser_nmi_enable_w) /* bit 0 = NMI Enable */ AM_RANGE(0xa001, 0xa001) AM_WRITE(mouser_flip_screen_x_w) AM_RANGE(0xa002, 0xa002) AM_WRITE(mouser_flip_screen_y_w) - AM_RANGE(0xb800, 0xb800) AM_WRITE(mouser_sound_interrupt_w) /* byte to sound cpu */ - + AM_RANGE(0xa800, 0xa800) AM_READ_PORT("SYSTEM") + AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") + AM_RANGE(0xb800, 0xb800) AM_READ_PORT("P2") AM_WRITE(mouser_sound_interrupt_w) /* byte to sound cpu */ ADDRESS_MAP_END -static ADDRESS_MAP_START( readmem2, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM) - AM_RANGE(0x2000, 0x23ff) AM_READ(SMH_RAM) +static ADDRESS_MAP_START( mouser_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x1fff) AM_ROM + AM_RANGE(0x2000, 0x23ff) AM_RAM AM_RANGE(0x3000, 0x3000) AM_READ(mouser_sound_byte_r) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( writemem2, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_ROM) - AM_RANGE(0x2000, 0x23ff) AM_WRITE(SMH_RAM) AM_RANGE(0x4000, 0x4000) AM_WRITENOP /* watchdog? */ ADDRESS_MAP_END -static ADDRESS_MAP_START( io_map_2, ADDRESS_SPACE_IO, 8 ) +static ADDRESS_MAP_START( mouser_sound_io_map, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_data_address_w) AM_RANGE(0x80, 0x81) AM_DEVWRITE("ay2", ay8910_data_address_w) @@ -196,12 +181,12 @@ static MACHINE_DRIVER_START( mouser ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz ? */ - MDRV_CPU_PROGRAM_MAP(readmem,writemem) + MDRV_CPU_PROGRAM_MAP(mouser_map,0) MDRV_CPU_VBLANK_INT("screen", mouser_nmi_interrupt) /* NMI is masked externally */ MDRV_CPU_ADD("audiocpu", Z80, 4000000) /* ??? */ - MDRV_CPU_PROGRAM_MAP(readmem2,writemem2) - MDRV_CPU_IO_MAP(io_map_2,0) + MDRV_CPU_PROGRAM_MAP(mouser_sound_map,0) + MDRV_CPU_IO_MAP(mouser_sound_io_map,0) MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,4) /* ??? This controls the sound tempo */ /* video hardware */ diff --git a/src/mame/drivers/mrflea.c b/src/mame/drivers/mrflea.c index 10534d9555f..94e9d0cd013 100644 --- a/src/mame/drivers/mrflea.c +++ b/src/mame/drivers/mrflea.c @@ -82,40 +82,11 @@ static const gfx_layout sprite_layout = { static GFXDECODE_START( mrflea ) GFXDECODE_ENTRY( "gfx1", 0, sprite_layout, 0x10, 1 ) - GFXDECODE_ENTRY( "gfx2", 0, tile_layout, 0x00, 1 ) + GFXDECODE_ENTRY( "gfx2", 0, tile_layout, 0x00, 1 ) GFXDECODE_END /*******************************************************/ -static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM) - AM_RANGE(0xc000, 0xcfff) AM_READ(SMH_RAM) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM) - AM_RANGE(0xc000, 0xcfff) AM_WRITE(SMH_RAM) - AM_RANGE(0xe000, 0xe7ff) AM_WRITE(mrflea_videoram_w) AM_BASE(&videoram) - AM_RANGE(0xe800, 0xe83f) AM_WRITE(paletteram_xxxxRRRRGGGGBBBB_le_w) AM_BASE(&paletteram) - AM_RANGE(0xec00, 0xecff) AM_WRITE(mrflea_spriteram_w) AM_BASE(&spriteram) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( readmem_io, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_ROM) - AM_RANGE(0x2000, 0x3fff) AM_READ(SMH_ROM) - AM_RANGE(0x8000, 0x80ff) AM_READ(SMH_RAM) - AM_RANGE(0x9000, 0x905a) AM_READ(SMH_RAM) /* ? */ -ADDRESS_MAP_END - -static ADDRESS_MAP_START( writemem_io, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_ROM) - AM_RANGE(0x2000, 0x3fff) AM_WRITE(SMH_ROM) - AM_RANGE(0x8000, 0x80ff) AM_WRITE(SMH_RAM) - AM_RANGE(0x9000, 0x905a) AM_WRITE(SMH_RAM) /* ? */ -ADDRESS_MAP_END - -/*******************************************************/ - static WRITE8_HANDLER( mrflea_main_w ){ mrflea_status |= 0x01; // pending command to main CPU mrflea_main = data; @@ -151,7 +122,7 @@ static READ8_HANDLER( mrflea_io_status_r ){ return mrflea_status^0x01; } -static INTERRUPT_GEN( mrflea_io_interrupt ){ +static INTERRUPT_GEN( mrflea_slave_interrupt ){ if( cpu_getiloops(device)==0 || (mrflea_status&0x08) ) cpu_set_input_line(device, 0, HOLD_LINE); } @@ -167,7 +138,15 @@ static READ8_HANDLER( mrflea_interrupt_type_r ){ /*******************************************************/ -static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 ) +static ADDRESS_MAP_START( mrflea_master_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0xbfff) AM_ROM + AM_RANGE(0xc000, 0xcfff) AM_RAM + AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(mrflea_videoram_w) AM_BASE(&videoram) + AM_RANGE(0xe800, 0xe83f) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_le_w) AM_BASE(&paletteram) + AM_RANGE(0xec00, 0xecff) AM_RAM_WRITE(mrflea_spriteram_w) AM_BASE(&spriteram) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( mrflea_master_io_map, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_WRITENOP /* watchdog? */ AM_RANGE(0x40, 0x40) AM_WRITE(mrflea_io_w) @@ -191,7 +170,14 @@ static READ8_HANDLER( mrflea_input1_r ) static WRITE8_HANDLER( mrflea_data1_w ){ } -static ADDRESS_MAP_START( inout_io_map, ADDRESS_SPACE_IO, 8 ) +static ADDRESS_MAP_START( mrflea_slave_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x0fff) AM_ROM + AM_RANGE(0x2000, 0x3fff) AM_ROM + AM_RANGE(0x8000, 0x80ff) AM_RAM + AM_RANGE(0x9000, 0x905a) AM_RAM /* ? */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( mrflea_slave_io_map, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_WRITENOP /* watchdog */ AM_RANGE(0x10, 0x10) AM_READWRITE(mrflea_interrupt_type_r, SMH_NOP) /* ? / irq ACK */ @@ -232,14 +218,14 @@ static MACHINE_DRIVER_START( mrflea ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz? */ - MDRV_CPU_PROGRAM_MAP(readmem,writemem) - MDRV_CPU_IO_MAP(io_map,0) + MDRV_CPU_PROGRAM_MAP(mrflea_master_map,0) + MDRV_CPU_IO_MAP(mrflea_master_io_map,0) MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) /* NMI resets the game */ MDRV_CPU_ADD("sub", Z80, 6000000) - MDRV_CPU_PROGRAM_MAP(readmem_io,writemem_io) - MDRV_CPU_IO_MAP(inout_io_map,0) - MDRV_CPU_VBLANK_INT_HACK(mrflea_io_interrupt,2) + MDRV_CPU_PROGRAM_MAP(mrflea_slave_map,0) + MDRV_CPU_IO_MAP(mrflea_slave_io_map,0) + MDRV_CPU_VBLANK_INT_HACK(mrflea_slave_interrupt,2) MDRV_QUANTUM_TIME(HZ(6000)) diff --git a/src/mame/drivers/mrjong.c b/src/mame/drivers/mrjong.c index e9c3cbeeb8d..457c90d25e0 100644 --- a/src/mame/drivers/mrjong.c +++ b/src/mame/drivers/mrjong.c @@ -56,24 +56,14 @@ extern VIDEO_START( mrjong ); extern VIDEO_UPDATE( mrjong ); -static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM) - AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM) - AM_RANGE(0xa000, 0xa7ff) AM_READ(SMH_RAM) - AM_RANGE(0xe000, 0xe3ff) AM_READ(SMH_RAM) - AM_RANGE(0xe400, 0xe7ff) AM_READ(SMH_RAM) +static ADDRESS_MAP_START( mrjong_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x7fff) AM_ROM + AM_RANGE(0x8000, 0x87ff) AM_RAM + AM_RANGE(0xa000, 0xa7ff) AM_RAM + AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(mrjong_videoram_w) AM_BASE(&videoram) + AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(mrjong_colorram_w) AM_BASE(&colorram) ADDRESS_MAP_END -static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM) - AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM) - AM_RANGE(0xa000, 0xa7ff) AM_WRITE(SMH_RAM) - AM_RANGE(0xe000, 0xe3ff) AM_WRITE(mrjong_videoram_w) AM_BASE(&videoram) - AM_RANGE(0xe400, 0xe7ff) AM_WRITE(mrjong_colorram_w) AM_BASE(&colorram) - AM_RANGE(0xe000, 0xe03f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size) /* here to initialize the pointer */ -ADDRESS_MAP_END - - static WRITE8_HANDLER( io_0x00_w ) { mrjong_flipscreen_w(space, 0, ((data & 0x04) > 2)); @@ -85,7 +75,7 @@ static READ8_HANDLER( io_0x03_r ) } -static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 ) +static ADDRESS_MAP_START( mrjong_io_map, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_READ_PORT("P2") AM_WRITE(io_0x00_w) AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_DEVWRITE("sn1", sn76496_w) @@ -174,8 +164,8 @@ static MACHINE_DRIVER_START( mrjong ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80,15468000/6) /* 2.578 MHz?? */ - MDRV_CPU_PROGRAM_MAP(readmem,writemem) - MDRV_CPU_IO_MAP(io_map,0) + MDRV_CPU_PROGRAM_MAP(mrjong_map,0) + MDRV_CPU_IO_MAP(mrjong_io_map,0) MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse) /* video hardware */ diff --git a/src/mame/drivers/srmp2.c b/src/mame/drivers/srmp2.c index ec7d94783df..8dbe79b92ef 100644 --- a/src/mame/drivers/srmp2.c +++ b/src/mame/drivers/srmp2.c @@ -14,6 +14,7 @@ driver by Yochizo and Takahiro Nogi Supported games : ================== + Super Real Mahjong Part1 (C) 1987 Seta Super Real Mahjong Part2 (C) 1987 Seta Super Real Mahjong Part3 (C) 1988 Seta Mahjong Yuugi (set 1) (C) 1990 Visco @@ -22,11 +23,6 @@ Supported games : Mahjong Pon Chin Kan (set 2) (C) 1991 Visco -Not supported game : -===================== - Super Real Mahjong Part1 (not dumped) - - System specs : =============== CPU : 68000 (8MHz) @@ -386,72 +382,52 @@ static WRITE8_HANDLER( srmp3_rombank_w ) **************************************************************************/ -static ADDRESS_MAP_START( srmp2_readmem, ADDRESS_SPACE_PROGRAM, 16 ) - AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM) - AM_RANGE(0x0c0000, 0x0c3fff) AM_READ(SMH_RAM) - AM_RANGE(0x140000, 0x143fff) AM_READ(SMH_RAM) /* Sprites Code + X + Attr */ - AM_RANGE(0x180000, 0x180607) AM_READ(SMH_RAM) /* Sprites Y */ - AM_RANGE(0x900000, 0x900001) AM_READ_PORT("SYSTEM") /* Coinage */ - AM_RANGE(0xa00000, 0xa00001) AM_READ(srmp2_input_1_r) /* I/O port 1 */ - AM_RANGE(0xa00002, 0xa00003) AM_READ(srmp2_input_2_r) /* I/O port 2 */ +static ADDRESS_MAP_START( srmp2_map, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_ROM + AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size) + AM_RANGE(0x140000, 0x143fff) AM_RAM AM_BASE(&spriteram16_2) /* Sprites Code + X + Attr */ + AM_RANGE(0x180000, 0x180609) AM_RAM AM_BASE(&spriteram16) /* Sprites Y */ + AM_RANGE(0x1c0000, 0x1c0001) AM_WRITENOP /* ??? */ + AM_RANGE(0x800000, 0x800001) AM_WRITE(srmp2_flags_w) /* ADPCM bank, Color bank, etc. */ + AM_RANGE(0x900000, 0x900001) AM_READ_PORT("SYSTEM") /* Coinage */ + AM_RANGE(0x900000, 0x900001) AM_WRITENOP /* ??? */ + AM_RANGE(0xa00000, 0xa00001) AM_READWRITE(srmp2_input_1_r,srmp2_input_1_w) /* I/O port 1 */ + AM_RANGE(0xa00002, 0xa00003) AM_READWRITE(srmp2_input_2_r,srmp2_input_2_w) /* I/O port 2 */ AM_RANGE(0xb00000, 0xb00001) AM_READ(srmp2_cchip_status_0_r) /* Custom chip status ??? */ + AM_RANGE(0xb00000, 0xb00001) AM_DEVWRITE("msm", srmp2_adpcm_code_w) /* ADPCM number */ AM_RANGE(0xb00002, 0xb00003) AM_READ(srmp2_cchip_status_1_r) /* Custom chip status ??? */ + AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP /* ??? */ + AM_RANGE(0xd00000, 0xd00001) AM_WRITENOP /* ??? */ + AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP /* ??? */ AM_RANGE(0xf00000, 0xf00001) AM_DEVREAD8("ay", ay8910_r, 0x00ff) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( srmp2_writemem, ADDRESS_SPACE_PROGRAM, 16 ) - AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM) - AM_RANGE(0x0c0000, 0x0c3fff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size) - AM_RANGE(0x140000, 0x143fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2) /* Sprites Code + X + Attr */ - AM_RANGE(0x180000, 0x180609) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) /* Sprites Y */ - AM_RANGE(0x1c0000, 0x1c0001) AM_WRITENOP /* ??? */ - AM_RANGE(0x800000, 0x800001) AM_WRITE(srmp2_flags_w) /* ADPCM bank, Color bank, etc. */ - AM_RANGE(0x900000, 0x900001) AM_WRITENOP /* ??? */ - AM_RANGE(0xa00000, 0xa00001) AM_WRITE(srmp2_input_1_w) /* I/O ??? */ - AM_RANGE(0xa00002, 0xa00003) AM_WRITE(srmp2_input_2_w) /* I/O ??? */ - AM_RANGE(0xb00000, 0xb00001) AM_DEVWRITE("msm", srmp2_adpcm_code_w) /* ADPCM number */ - AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP /* ??? */ - AM_RANGE(0xd00000, 0xd00001) AM_WRITENOP /* ??? */ - AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP /* ??? */ AM_RANGE(0xf00000, 0xf00003) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff) ADDRESS_MAP_END -static ADDRESS_MAP_START( mjyuugi_readmem, ADDRESS_SPACE_PROGRAM, 16 ) - AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM) - AM_RANGE(0x100000, 0x100001) AM_READ_PORT("SYSTEM") /* Coinage */ - AM_RANGE(0x100010, 0x100011) AM_READNOP /* ??? */ - AM_RANGE(0x200000, 0x200001) AM_READNOP /* ??? */ - AM_RANGE(0x300000, 0x300001) AM_READNOP /* ??? */ - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW3-1") /* DSW 3-1 */ - AM_RANGE(0x500010, 0x500011) AM_READ_PORT("DSW3-2") /* DSW 3-2 */ - AM_RANGE(0x700000, 0x7003ff) AM_READ(SMH_RAM) +static ADDRESS_MAP_START( mjyuugi_map, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_ROM + AM_RANGE(0x100000, 0x100001) AM_READ_PORT("SYSTEM") /* Coinage */ + AM_RANGE(0x100000, 0x100001) AM_WRITE(mjyuugi_flags_w) /* Coin Counter */ + AM_RANGE(0x100010, 0x100011) AM_READNOP /* ??? */ + AM_RANGE(0x100010, 0x100011) AM_WRITE(mjyuugi_adpcm_bank_w) /* ADPCM bank, GFX bank */ + AM_RANGE(0x200000, 0x200001) AM_READNOP /* ??? */ + AM_RANGE(0x300000, 0x300001) AM_READNOP /* ??? */ + AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW3-1") /* DSW 3-1 */ + AM_RANGE(0x500010, 0x500011) AM_READ_PORT("DSW3-2") /* DSW 3-2 */ + AM_RANGE(0x700000, 0x7003ff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) AM_RANGE(0x800000, 0x800001) AM_READNOP /* ??? */ - AM_RANGE(0x900000, 0x900001) AM_READ(srmp2_input_1_r) /* I/O port 1 */ - AM_RANGE(0x900002, 0x900003) AM_READ(srmp2_input_2_r) /* I/O port 2 */ + AM_RANGE(0x900000, 0x900001) AM_READWRITE(srmp2_input_1_r,srmp2_input_1_w) /* I/O port 1 */ + AM_RANGE(0x900002, 0x900003) AM_READWRITE(srmp2_input_2_r,srmp2_input_2_w) /* I/O port 2 */ AM_RANGE(0xa00000, 0xa00001) AM_READ(srmp2_cchip_status_0_r) /* custom chip status ??? */ + AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE("msm", srmp2_adpcm_code_w) /* ADPCM number */ AM_RANGE(0xa00002, 0xa00003) AM_READ(srmp2_cchip_status_1_r) /* custom chip status ??? */ AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8("ay", ay8910_r, 0x00ff) - AM_RANGE(0xd00000, 0xd00609) AM_READ(SMH_RAM) /* Sprites Y */ - AM_RANGE(0xd02000, 0xd023ff) AM_READ(SMH_RAM) /* ??? */ - AM_RANGE(0xe00000, 0xe03fff) AM_READ(SMH_RAM) /* Sprites Code + X + Attr */ - AM_RANGE(0xffc000, 0xffffff) AM_READ(SMH_RAM) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( mjyuugi_writemem, ADDRESS_SPACE_PROGRAM, 16 ) - AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM) - AM_RANGE(0x100000, 0x100001) AM_WRITE(mjyuugi_flags_w) /* Coin Counter */ - AM_RANGE(0x100010, 0x100011) AM_WRITE(mjyuugi_adpcm_bank_w) /* ADPCM bank, GFX bank */ - AM_RANGE(0x700000, 0x7003ff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) - AM_RANGE(0x900000, 0x900001) AM_WRITE(srmp2_input_1_w) /* I/O ??? */ - AM_RANGE(0x900002, 0x900003) AM_WRITE(srmp2_input_2_w) /* I/O ??? */ - AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE("msm", srmp2_adpcm_code_w) /* ADPCM number */ AM_RANGE(0xb00000, 0xb00003) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff) AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP /* ??? */ - AM_RANGE(0xd00000, 0xd00609) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) /* Sprites Y */ - AM_RANGE(0xd02000, 0xd023ff) AM_WRITE(SMH_RAM) /* ??? only writes $00fa */ - AM_RANGE(0xe00000, 0xe03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2) /* Sprites Code + X + Attr */ - AM_RANGE(0xffc000, 0xffffff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size) + AM_RANGE(0xd00000, 0xd00609) AM_RAM AM_BASE(&spriteram16) /* Sprites Y */ + AM_RANGE(0xd02000, 0xd023ff) AM_RAM /* ??? only writes $00fa */ + AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_BASE(&spriteram16_2) /* Sprites Code + X + Attr */ + AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size) ADDRESS_MAP_END @@ -562,24 +538,15 @@ static WRITE8_HANDLER( srmp3_flags_w ) } -static ADDRESS_MAP_START( srmp3_readmem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM) - AM_RANGE(0x8000, 0x9fff) AM_READ(SMH_BANK(1)) /* rom bank */ - AM_RANGE(0xa000, 0xa7ff) AM_READ(SMH_RAM) /* work ram */ - AM_RANGE(0xb000, 0xb303) AM_READ(SMH_RAM) /* Sprites Y */ - AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM) /* Sprites Code + X + Attr */ - AM_RANGE(0xe000, 0xffff) AM_READ(SMH_RAM) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( srmp3_writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM) - AM_RANGE(0x8000, 0x9fff) AM_WRITE(SMH_ROM) /* rom bank */ - AM_RANGE(0xa000, 0xa7ff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size) /* work ram */ - AM_RANGE(0xa800, 0xa800) AM_WRITENOP /* flag ? */ - AM_RANGE(0xb000, 0xb303) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) /* Sprites Y */ - AM_RANGE(0xb800, 0xb800) AM_WRITENOP /* flag ? */ - AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram_2) /* Sprites Code + X + Attr */ - AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram_3) +static ADDRESS_MAP_START( srmp3_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x7fff) AM_ROM + AM_RANGE(0x8000, 0x9fff) AM_ROMBANK(1) /* rom bank */ + AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size) /* work ram */ + AM_RANGE(0xa800, 0xa800) AM_WRITENOP /* flag ? */ + AM_RANGE(0xb000, 0xb303) AM_RAM AM_BASE(&spriteram) /* Sprites Y */ + AM_RANGE(0xb800, 0xb800) AM_WRITENOP /* flag ? */ + AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE(&spriteram_2) /* Sprites Code + X + Attr */ + AM_RANGE(0xe000, 0xffff) AM_RAM AM_BASE(&spriteram_3) ADDRESS_MAP_END static ADDRESS_MAP_START( srmp3_io_map, ADDRESS_SPACE_IO, 8 ) @@ -1059,7 +1026,7 @@ static MACHINE_DRIVER_START( srmp2 ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000,16000000/2) /* 8.00 MHz */ - MDRV_CPU_PROGRAM_MAP(srmp2_readmem,srmp2_writemem) + MDRV_CPU_PROGRAM_MAP(srmp2_map,0) MDRV_CPU_VBLANK_INT_HACK(srmp2_interrupt,16) /* Interrupt times is not understood */ MDRV_MACHINE_RESET(srmp2) @@ -1098,7 +1065,7 @@ static MACHINE_DRIVER_START( srmp3 ) MDRV_CPU_ADD("maincpu", Z80, 3500000) /* 3.50 MHz ? */ // 4000000, /* 4.00 MHz ? */ - MDRV_CPU_PROGRAM_MAP(srmp3_readmem,srmp3_writemem) + MDRV_CPU_PROGRAM_MAP(srmp3_map,0) MDRV_CPU_IO_MAP(srmp3_io_map,0) MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) @@ -1136,7 +1103,7 @@ static MACHINE_DRIVER_START( mjyuugi ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000,16000000/2) /* 8.00 MHz */ - MDRV_CPU_PROGRAM_MAP(mjyuugi_readmem,mjyuugi_writemem) + MDRV_CPU_PROGRAM_MAP(mjyuugi_map,0) MDRV_CPU_VBLANK_INT_HACK(srmp2_interrupt,16) /* Interrupt times is not understood */ MDRV_MACHINE_RESET(srmp2) diff --git a/src/mame/video/mayumi.c b/src/mame/video/mayumi.c index 6d7bbccf15e..38df6ab1f36 100644 --- a/src/mame/video/mayumi.c +++ b/src/mame/video/mayumi.c @@ -9,7 +9,7 @@ Video hardware #include "driver.h" -static UINT8 *mayumi_videoram; +UINT8 *mayumi_videoram; static tilemap *mayumi_tilemap; static TILE_GET_INFO( get_tile_info ) @@ -30,15 +30,9 @@ VIDEO_START( mayumi ) WRITE8_HANDLER( mayumi_videoram_w ) { mayumi_videoram[offset] = data; - tilemap_mark_tile_dirty(mayumi_tilemap, offset & 0x7ff ); } -READ8_HANDLER( mayumi_videoram_r ) -{ - return mayumi_videoram[offset]; -} - VIDEO_UPDATE( mayumi ) { tilemap_draw(bitmap, cliprect, mayumi_tilemap, 0, 0); diff --git a/src/mame/video/mrjong.c b/src/mame/video/mrjong.c index 19533f1c157..78ab63aaa1b 100644 --- a/src/mame/video/mrjong.c +++ b/src/mame/video/mrjong.c @@ -12,7 +12,7 @@ static tilemap *bg_tilemap; /*************************************************************************** - Convert the color PROMs. (from video/penco.c) + Convert the color PROMs. (from video/pengo.c) ***************************************************************************/ PALETTE_INIT( mrjong ) @@ -101,24 +101,27 @@ VIDEO_START( mrjong ) bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows_flip_xy, 8, 8, 32, 32); } +/* +Note: First 0x40 entries in the videoram are actually spriteram +*/ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect) { int offs; - for (offs = (spriteram_size - 4); offs >= 0; offs -= 4) + for (offs = (0x40 - 4); offs >= 0; offs -= 4) { int sprt; int color; int sx, sy; int flipx, flipy; - sprt = (((spriteram[offs + 1] >> 2) & 0x3f) | ((spriteram[offs + 3] & 0x20) << 1)); - flipx = (spriteram[offs + 1] & 0x01) >> 0; - flipy = (spriteram[offs + 1] & 0x02) >> 1; - color = (spriteram[offs + 3] & 0x1f); + sprt = (((videoram[offs + 1] >> 2) & 0x3f) | ((videoram[offs + 3] & 0x20) << 1)); + flipx = (videoram[offs + 1] & 0x01) >> 0; + flipy = (videoram[offs + 1] & 0x02) >> 1; + color = (videoram[offs + 3] & 0x1f); - sx = 224 - spriteram[offs + 2]; - sy = spriteram[offs + 0]; + sx = 224 - videoram[offs + 2]; + sy = videoram[offs + 0]; if (flip_screen_get(machine)) { sx = 208 - sx;