Memory maps merges for the following drivers:

* mayumi.c (also cleaned-up the video routines)
* mazerbla.c
* momoko.c
* mosaic.c
* mouser.c
* mrflea.c
* mrjong.c (also cleaned-up the spriteram routines)
* srmp2.c
This commit is contained in:
Angelo Salese 2009-04-27 22:35:02 +00:00
parent 62812a286c
commit e9f13aef3d
10 changed files with 213 additions and 401 deletions

View File

@ -12,12 +12,11 @@ Kikiippatsu Mayumi-chan (c) 1988 Victory L.L.C.
#define MCLK 10000000 #define MCLK 10000000
extern UINT8 *mayumi_videoram;
WRITE8_HANDLER( mayumi_videoram_w );
VIDEO_START( mayumi ); VIDEO_START( mayumi );
VIDEO_UPDATE( mayumi ); VIDEO_UPDATE( mayumi );
WRITE8_HANDLER( mayumi_videoram_w );
READ8_HANDLER( mayumi_videoram_r );
static int int_enable; static int int_enable;
static int input_sel; static int input_sel;
@ -75,21 +74,15 @@ static READ8_HANDLER( key_matrix_r )
/****************************************************************************/ /****************************************************************************/
static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( mayumi_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(1)) AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM) AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
AM_RANGE(0xe000, 0xf7ff) AM_READ(mayumi_videoram_r) AM_RANGE(0xe000, 0xf7ff) AM_RAM_WRITE(mayumi_videoram_w) AM_BASE(&mayumi_videoram)
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)
ADDRESS_MAP_END 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) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x30, 0x30) AM_READ_PORT("IN0") AM_WRITE(bank_sel_w) AM_RANGE(0x30, 0x30) AM_READ_PORT("IN0") AM_WRITE(bank_sel_w)
AM_RANGE(0xc0, 0xc0) AM_WRITE(input_sel_w) AM_RANGE(0xc0, 0xc0) AM_WRITE(input_sel_w)
@ -279,8 +272,8 @@ static MACHINE_DRIVER_START( mayumi )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", Z80, MCLK/2) /* 5.000 MHz ? */ MDRV_CPU_ADD("maincpu", Z80, MCLK/2) /* 5.000 MHz ? */
MDRV_CPU_PROGRAM_MAP(readmem,writemem) MDRV_CPU_PROGRAM_MAP(mayumi_map,0)
MDRV_CPU_IO_MAP(io_map,0) MDRV_CPU_IO_MAP(mayumi_io_map,0)
MDRV_CPU_VBLANK_INT("screen", mayumi_interrupt) MDRV_CPU_VBLANK_INT("screen", mayumi_interrupt)
MDRV_MACHINE_RESET( mayumi ) MDRV_MACHINE_RESET( mayumi )

View File

@ -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_0[4];
static UINT8 ls670_1[4]; static UINT8 ls670_1[4];
@ -471,7 +459,15 @@ static WRITE8_HANDLER(zpu_coin_counter_w)
coin_counter_w(offset, (data&0x40)>>6 ); 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) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x4c, 0x4f) AM_READWRITE(ls670_1_r, ls670_0_w) AM_RANGE(0x4c, 0x4f) AM_READWRITE(ls670_1_r, ls670_0_w)
AM_RANGE(0x60, 0x60) AM_WRITE(zpu_bcd_decoder_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) AM_RANGE(0x6e, 0x6f) AM_WRITE(zpu_led_w)
ADDRESS_MAP_END 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 UINT8 vsb_ls273;
static WRITE8_HANDLER( vsb_ls273_audio_control_w ) 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) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(vsb_ls273_audio_control_w) AM_RANGE(0x00, 0x00) AM_WRITE(vsb_ls273_audio_control_w)
AM_RANGE(0x80, 0x83) AM_READWRITE(ls670_0_r, ls670_1_w) AM_RANGE(0x80, 0x83) AM_READWRITE(ls670_0_r, ls670_1_w)
ADDRESS_MAP_END 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) static WRITE8_HANDLER(cfb_led_w)
{ {
/* bit 7 - led on */ /* bit 7 - led on */
@ -614,28 +575,6 @@ static READ8_HANDLER( cfb_port_02_r )
return (port02_status); 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 UINT8 VCU_video_reg[4];
static WRITE8_HANDLER( VCU_video_reg_w ) static WRITE8_HANDLER( VCU_video_reg_w )
{ {
@ -1028,29 +967,27 @@ UINT8 * rom = memory_region(space->machine, "sub2") + (gfx_rom_bank * 0x2000) +
return 0; return 0;
} }
static ADDRESS_MAP_START( readmem_cpu3, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( mazerbla_cpu3_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x37ff) AM_READ(SMH_ROM) AM_RANGE(0x0000, 0x37ff) AM_ROM
AM_RANGE(0x3800, 0x3fff) AM_READ(sharedram_CFB_ZPU_r) AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE(1)
AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_BANK(1)) /* GFX roms */ AM_RANGE(0x4000, 0x5fff) AM_ROMBANK(1) /* GFX roms */
AM_RANGE(0x6000, 0x67ff) AM_READ(cfb_ram_r) /* RAM for VCU commands and parameters */ AM_RANGE(0x4000, 0x4003) AM_WRITE(VCU_video_reg_w)
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(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(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 */ AM_RANGE(0xe000, 0xffff) AM_READ(VCU_set_clr_addr_r) /* palette? LOAD */
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( writemem_cpu3, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( mazerbla_cpu3_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x0000, 0x37ff) AM_WRITE(SMH_ROM) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x3800, 0x3fff) AM_WRITE(sharedram_CFB_ZPU_w) AM_BASE(&cfb_zpu_sharedram) AM_RANGE(0x01, 0x01) AM_WRITE(cfb_backgnd_color_w)
AM_RANGE(0x4000, 0x4003) AM_WRITE(VCU_video_reg_w) AM_RANGE(0x02, 0x02) AM_READWRITE(cfb_port_02_r, cfb_led_w) /* Read = VCU status ? */
AM_RANGE(0x6000, 0x67ff) AM_WRITE(cfb_ram_w) AM_BASE(&cfb_ram) 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 ADDRESS_MAP_END
/* Great Guns */ /* Great Guns */
static UINT8 soundlatch; static UINT8 soundlatch;
@ -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) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x4c, 0x4c) AM_WRITE(main_sound_w) AM_RANGE(0x4c, 0x4c) AM_WRITE(main_sound_w)
AM_RANGE(0x60, 0x60) AM_WRITE(zpu_bcd_decoder_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) AM_RANGE(0x6e, 0x6f) AM_WRITE(zpu_led_w)
ADDRESS_MAP_END 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 */ /* frequency is 14.318 MHz/16/16/16/16 */
static INTERRUPT_GEN( sound_interrupt ) static INTERRUPT_GEN( sound_interrupt )
@ -1107,28 +1054,18 @@ static WRITE8_DEVICE_HANDLER( gg_led_ctrl_w )
set_led_status(1,data&0x01); set_led_status(1,data&0x01);
} }
static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( greatgun_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM) AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x27ff) AM_READ(SMH_RAM) AM_RANGE(0x2000, 0x27ff) AM_RAM
AM_RANGE(0x4000, 0x4000) AM_DEVREAD("ay1", ay8910_r) 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(0x4000, 0x4001) AM_DEVWRITE("ay1", ay8910_address_data_w)
AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ay2", 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(0x8000, 0x8000) AM_WRITE(sound_int_clear_w)
AM_RANGE(0xa000, 0xa000) AM_WRITE(sound_nmi_clear_w) AM_RANGE(0xa000, 0xa000) AM_WRITE(sound_nmi_clear_w)
ADDRESS_MAP_END ADDRESS_MAP_END
static INPUT_PORTS_START( mazerbla ) static INPUT_PORTS_START( mazerbla )
PORT_START("ZPU") /* Strobe 0: ZPU Switches */ PORT_START("ZPU") /* Strobe 0: ZPU Switches */
PORT_DIPNAME( 0x40, 0x40, "ZPU Switch 1" ) PORT_DIPNAME( 0x40, 0x40, "ZPU Switch 1" )
@ -1472,17 +1409,17 @@ static const ay8910_interface ay8912_interface_2 =
static MACHINE_DRIVER_START( mazerbla ) static MACHINE_DRIVER_START( mazerbla )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz, no NMI, IM2 - vectors at 0xf8, 0xfa, 0xfc */ MDRV_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz, no NMI, IM2 - vectors at 0xf8, 0xfa, 0xfc */
MDRV_CPU_PROGRAM_MAP(readmem,writemem) MDRV_CPU_PROGRAM_MAP(mazerbla_map,0)
MDRV_CPU_IO_MAP(io_map,0) MDRV_CPU_IO_MAP(mazerbla_io_map,0)
MDRV_CPU_ADD("sub", Z80, 4000000) /* 4 MHz, NMI, IM1 INT */ MDRV_CPU_ADD("sub", Z80, 4000000) /* 4 MHz, NMI, IM1 INT */
MDRV_CPU_PROGRAM_MAP(readmem_cpu2,writemem_cpu2) MDRV_CPU_PROGRAM_MAP(mazerbla_cpu2_map,0)
MDRV_CPU_IO_MAP(cpu2_io_map,0) MDRV_CPU_IO_MAP(mazerbla_cpu2_io_map,0)
//MDRV_CPU_PERIODIC_INT(irq0_line_hold, 400 ) /* frequency in Hz */ //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_ADD("sub2", Z80, 4000000) /* 4 MHz, no NMI, IM1 INT */
MDRV_CPU_PROGRAM_MAP(readmem_cpu3,writemem_cpu3) MDRV_CPU_PROGRAM_MAP(mazerbla_cpu3_map,0)
MDRV_CPU_IO_MAP(cpu3_io_map,0) MDRV_CPU_IO_MAP(mazerbla_cpu3_io_map,0)
/* (vblank related ??) int generated by a custom video processor /* (vblank related ??) int generated by a custom video processor
and cleared on ANY port access. and cleared on ANY port access.
but handled differently for now but handled differently for now
@ -1515,16 +1452,16 @@ static MACHINE_DRIVER_START( greatgun )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz, no NMI, IM2 - vectors at 0xf8, 0xfa, 0xfc */ MDRV_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz, no NMI, IM2 - vectors at 0xf8, 0xfa, 0xfc */
MDRV_CPU_PROGRAM_MAP(readmem,writemem) MDRV_CPU_PROGRAM_MAP(mazerbla_map,0)
MDRV_CPU_IO_MAP(gg_io_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_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_PERIODIC_INT(sound_interrupt, (double)14318180/16/16/16/16 )
MDRV_CPU_ADD("sub2", Z80, 4000000) /* 4 MHz, no NMI, IM1 INT */ MDRV_CPU_ADD("sub2", Z80, 4000000) /* 4 MHz, no NMI, IM1 INT */
MDRV_CPU_PROGRAM_MAP(readmem_cpu3,writemem_cpu3) MDRV_CPU_PROGRAM_MAP(mazerbla_cpu3_map,0)
MDRV_CPU_IO_MAP(gg_cpu3_io_map,0) MDRV_CPU_IO_MAP(greatgun_cpu3_io_map,0)
/* (vblank related ??) int generated by a custom video processor /* (vblank related ??) int generated by a custom video processor
and cleared on ANY port access. and cleared on ANY port access.
but handled differently for now but handled differently for now

View File

@ -70,45 +70,23 @@ static WRITE8_HANDLER( momoko_bg_read_bank_w )
/****************************************************************************/ /****************************************************************************/
static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( momoko_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM) AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xcfff) AM_READ(SMH_RAM) AM_RANGE(0xc000, 0xcfff) AM_RAM
AM_RANGE(0xd064, 0xd0ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
AM_RANGE(0xd064, 0xd0ff) AM_READ(SMH_RAM) /* sprite ram */ 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(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)
AM_RANGE(0xd404, 0xd404) AM_WRITE(watchdog_reset_w) AM_RANGE(0xd404, 0xd404) AM_WRITE(watchdog_reset_w)
AM_RANGE(0xd406, 0xd406) AM_WRITE(soundlatch_w) 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_WRITE(paletteram_xxxxRRRRGGGGBBBB_be_w) AM_BASE(&paletteram) 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(0xdc00, 0xdc00) AM_WRITE(momoko_fg_scrolly_w)
AM_RANGE(0xdc01, 0xdc01) AM_WRITE(momoko_fg_scrollx_w) AM_RANGE(0xdc01, 0xdc01) AM_WRITE(momoko_fg_scrollx_w)
AM_RANGE(0xdc02, 0xdc02) AM_WRITE(momoko_fg_select_w) AM_RANGE(0xdc02, 0xdc02) AM_WRITE(momoko_fg_select_w)
AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
AM_RANGE(0xe000, 0xe3ff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size)
AM_RANGE(0xe800, 0xe800) AM_WRITE(momoko_text_scrolly_w) AM_RANGE(0xe800, 0xe800) AM_WRITE(momoko_text_scrolly_w)
AM_RANGE(0xe801, 0xe801) AM_WRITE(momoko_text_mode_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(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(0xf002, 0xf003) AM_WRITE(momoko_bg_scrollx_w) AM_BASE(&momoko_bg_scrollx)
AM_RANGE(0xf004, 0xf004) AM_WRITE(momoko_bg_read_bank_w) 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) AM_RANGE(0xf007, 0xf007) AM_WRITE(momoko_bg_priority_w)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( readmem_sound, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( momoko_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, 0xa001) AM_DEVREAD("ym1", ym2203_r) AM_RANGE(0x9000, 0x9000) AM_WRITENOP /* unknown */
AM_RANGE(0xc000, 0xc001) AM_DEVREAD("ym2", ym2203_r) 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 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 */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", Z80, 5000000) /* 5.0MHz */ 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_VBLANK_INT("screen", irq0_line_hold)
MDRV_CPU_ADD("audiocpu", Z80, 2500000) /* 2.5MHz */ 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 */ /* video hardware */
MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_ADD("screen", RASTER)

View File

@ -96,38 +96,23 @@ static READ8_HANDLER( gfire2_protection_r )
static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( mosaic_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x00000, 0x0ffff) AM_READ(SMH_ROM) AM_RANGE(0x00000, 0x0ffff) AM_ROM
AM_RANGE(0x20000, 0x21fff) AM_READ(SMH_RAM) AM_RANGE(0x20000, 0x21fff) AM_RAM
AM_RANGE(0x22000, 0x23fff) AM_READ(SMH_RAM) AM_RANGE(0x22000, 0x22fff) AM_RAM_WRITE(mosaic_bgvideoram_w) AM_BASE(&mosaic_bgvideoram)
AM_RANGE(0x24000, 0x241ff) AM_READ(SMH_RAM) 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 ADDRESS_MAP_END
static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( gfire2_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x00000, 0x0ffff) AM_WRITE(SMH_ROM) AM_RANGE(0x00000, 0x0ffff) AM_ROM
AM_RANGE(0x20000, 0x21fff) AM_WRITE(SMH_RAM) AM_RANGE(0x10000, 0x17fff) AM_RAM
AM_RANGE(0x22000, 0x22fff) AM_WRITE(mosaic_bgvideoram_w) AM_BASE(&mosaic_bgvideoram) AM_RANGE(0x22000, 0x22fff) AM_RAM_WRITE(mosaic_bgvideoram_w) AM_BASE(&mosaic_bgvideoram)
AM_RANGE(0x23000, 0x23fff) AM_WRITE(mosaic_fgvideoram_w) AM_BASE(&mosaic_fgvideoram) AM_RANGE(0x23000, 0x23fff) AM_RAM_WRITE(mosaic_fgvideoram_w) AM_BASE(&mosaic_fgvideoram)
AM_RANGE(0x24000, 0x241ff) AM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE(&paletteram) AM_RANGE(0x24000, 0x241ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE(&paletteram)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( gfire2_readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( mosaic_io_map, ADDRESS_SPACE_IO, 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 )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x3f) AM_WRITENOP /* Z180 internal registers */ AM_RANGE(0x00, 0x3f) AM_WRITENOP /* Z180 internal registers */
AM_RANGE(0x30, 0x30) AM_READNOP /* 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 ) static MACHINE_DRIVER_START( mosaic )
MDRV_CPU_ADD("maincpu", Z180, 7000000) /* ??? */ MDRV_CPU_ADD("maincpu", Z180, 7000000) /* ??? */
MDRV_CPU_PROGRAM_MAP(readmem,writemem) MDRV_CPU_PROGRAM_MAP(mosaic_map,0)
MDRV_CPU_IO_MAP(io_map,0) MDRV_CPU_IO_MAP(mosaic_io_map,0)
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
/* video hardware */ /* video hardware */
@ -304,7 +289,7 @@ MACHINE_DRIVER_END
static MACHINE_DRIVER_START( gfire2 ) static MACHINE_DRIVER_START( gfire2 )
MDRV_IMPORT_FROM(mosaic) MDRV_IMPORT_FROM(mosaic)
MDRV_CPU_MODIFY("maincpu") 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) MDRV_CPU_IO_MAP(gfire2_io_map,0)
MACHINE_DRIVER_END MACHINE_DRIVER_END

View File

@ -55,45 +55,30 @@ static READ8_HANDLER( mouser_sound_byte_r )
return mouser_sound_byte; return mouser_sound_byte;
} }
static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( mouser_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM) AM_RANGE(0x0000, 0x5fff) AM_ROM
AM_RANGE(0x6000, 0x6bff) AM_READ(SMH_RAM) AM_RANGE(0x6000, 0x6bff) AM_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)
AM_RANGE(0x8800, 0x88ff) AM_WRITENOP /* unknown */ AM_RANGE(0x8800, 0x88ff) AM_WRITENOP /* unknown */
AM_RANGE(0x9000, 0x93ff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size) AM_RANGE(0x9000, 0x93ff) AM_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(0x9800, 0x9cff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
AM_RANGE(0x9c00, 0x9fff) AM_WRITE(SMH_RAM) AM_BASE(&colorram) AM_RANGE(0x9c00, 0x9fff) AM_RAM AM_BASE(&colorram)
AM_RANGE(0xa000, 0xa000) AM_WRITE(mouser_nmi_enable_w) /* bit 0 = NMI Enable */ 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(0xa001, 0xa001) AM_WRITE(mouser_flip_screen_x_w)
AM_RANGE(0xa002, 0xa002) AM_WRITE(mouser_flip_screen_y_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 ADDRESS_MAP_END
static ADDRESS_MAP_START( readmem2, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( mouser_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM) AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x23ff) AM_READ(SMH_RAM) AM_RANGE(0x2000, 0x23ff) AM_RAM
AM_RANGE(0x3000, 0x3000) AM_READ(mouser_sound_byte_r) 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? */ AM_RANGE(0x4000, 0x4000) AM_WRITENOP /* watchdog? */
ADDRESS_MAP_END 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) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_data_address_w) AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_data_address_w)
AM_RANGE(0x80, 0x81) AM_DEVWRITE("ay2", 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 */ /* 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(mouser_map,0)
MDRV_CPU_VBLANK_INT("screen", mouser_nmi_interrupt) /* NMI is masked externally */ MDRV_CPU_VBLANK_INT("screen", mouser_nmi_interrupt) /* NMI is masked externally */
MDRV_CPU_ADD("audiocpu", Z80, 4000000) /* ??? */ MDRV_CPU_ADD("audiocpu", Z80, 4000000) /* ??? */
MDRV_CPU_PROGRAM_MAP(readmem2,writemem2) MDRV_CPU_PROGRAM_MAP(mouser_sound_map,0)
MDRV_CPU_IO_MAP(io_map_2,0) MDRV_CPU_IO_MAP(mouser_sound_io_map,0)
MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,4) /* ??? This controls the sound tempo */ MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,4) /* ??? This controls the sound tempo */
/* video hardware */ /* video hardware */

View File

@ -87,35 +87,6 @@ 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 ){ static WRITE8_HANDLER( mrflea_main_w ){
mrflea_status |= 0x01; // pending command to main CPU mrflea_status |= 0x01; // pending command to main CPU
mrflea_main = data; mrflea_main = data;
@ -151,7 +122,7 @@ static READ8_HANDLER( mrflea_io_status_r ){
return mrflea_status^0x01; return mrflea_status^0x01;
} }
static INTERRUPT_GEN( mrflea_io_interrupt ){ static INTERRUPT_GEN( mrflea_slave_interrupt ){
if( cpu_getiloops(device)==0 || (mrflea_status&0x08) ) if( cpu_getiloops(device)==0 || (mrflea_status&0x08) )
cpu_set_input_line(device, 0, HOLD_LINE); 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) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITENOP /* watchdog? */ AM_RANGE(0x00, 0x00) AM_WRITENOP /* watchdog? */
AM_RANGE(0x40, 0x40) AM_WRITE(mrflea_io_w) 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 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) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITENOP /* watchdog */ AM_RANGE(0x00, 0x00) AM_WRITENOP /* watchdog */
AM_RANGE(0x10, 0x10) AM_READWRITE(mrflea_interrupt_type_r, SMH_NOP) /* ? / irq ACK */ 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 */ /* 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(mrflea_master_map,0)
MDRV_CPU_IO_MAP(io_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_VBLANK_INT("screen", irq0_line_hold) /* NMI resets the game */
MDRV_CPU_ADD("sub", Z80, 6000000) MDRV_CPU_ADD("sub", Z80, 6000000)
MDRV_CPU_PROGRAM_MAP(readmem_io,writemem_io) MDRV_CPU_PROGRAM_MAP(mrflea_slave_map,0)
MDRV_CPU_IO_MAP(inout_io_map,0) MDRV_CPU_IO_MAP(mrflea_slave_io_map,0)
MDRV_CPU_VBLANK_INT_HACK(mrflea_io_interrupt,2) MDRV_CPU_VBLANK_INT_HACK(mrflea_slave_interrupt,2)
MDRV_QUANTUM_TIME(HZ(6000)) MDRV_QUANTUM_TIME(HZ(6000))

View File

@ -56,24 +56,14 @@ extern VIDEO_START( mrjong );
extern VIDEO_UPDATE( mrjong ); extern VIDEO_UPDATE( mrjong );
static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( mrjong_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, 0xa7ff) AM_READ(SMH_RAM) AM_RANGE(0xa000, 0xa7ff) AM_RAM
AM_RANGE(0xe000, 0xe3ff) AM_READ(SMH_RAM) AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(mrjong_videoram_w) AM_BASE(&videoram)
AM_RANGE(0xe400, 0xe7ff) AM_READ(SMH_RAM) AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(mrjong_colorram_w) AM_BASE(&colorram)
ADDRESS_MAP_END 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 ) static WRITE8_HANDLER( io_0x00_w )
{ {
mrjong_flipscreen_w(space, 0, ((data & 0x04) > 2)); 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) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ_PORT("P2") AM_WRITE(io_0x00_w) 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) 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 */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", Z80,15468000/6) /* 2.578 MHz?? */ MDRV_CPU_ADD("maincpu", Z80,15468000/6) /* 2.578 MHz?? */
MDRV_CPU_PROGRAM_MAP(readmem,writemem) MDRV_CPU_PROGRAM_MAP(mrjong_map,0)
MDRV_CPU_IO_MAP(io_map,0) MDRV_CPU_IO_MAP(mrjong_io_map,0)
MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse) MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
/* video hardware */ /* video hardware */

View File

@ -14,6 +14,7 @@ driver by Yochizo and Takahiro Nogi
Supported games : Supported games :
================== ==================
Super Real Mahjong Part1 (C) 1987 Seta
Super Real Mahjong Part2 (C) 1987 Seta Super Real Mahjong Part2 (C) 1987 Seta
Super Real Mahjong Part3 (C) 1988 Seta Super Real Mahjong Part3 (C) 1988 Seta
Mahjong Yuugi (set 1) (C) 1990 Visco Mahjong Yuugi (set 1) (C) 1990 Visco
@ -22,11 +23,6 @@ Supported games :
Mahjong Pon Chin Kan (set 2) (C) 1991 Visco Mahjong Pon Chin Kan (set 2) (C) 1991 Visco
Not supported game :
=====================
Super Real Mahjong Part1 (not dumped)
System specs : System specs :
=============== ===============
CPU : 68000 (8MHz) CPU : 68000 (8MHz)
@ -386,72 +382,52 @@ static WRITE8_HANDLER( srmp3_rombank_w )
**************************************************************************/ **************************************************************************/
static ADDRESS_MAP_START( srmp2_readmem, ADDRESS_SPACE_PROGRAM, 16 ) static ADDRESS_MAP_START( srmp2_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM) AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x0c0000, 0x0c3fff) AM_READ(SMH_RAM) AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)
AM_RANGE(0x140000, 0x143fff) AM_READ(SMH_RAM) /* Sprites Code + X + Attr */ AM_RANGE(0x140000, 0x143fff) AM_RAM AM_BASE(&spriteram16_2) /* Sprites Code + X + Attr */
AM_RANGE(0x180000, 0x180607) AM_READ(SMH_RAM) /* Sprites Y */ AM_RANGE(0x180000, 0x180609) AM_RAM AM_BASE(&spriteram16) /* 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 */
AM_RANGE(0xb00000, 0xb00001) AM_READ(srmp2_cchip_status_0_r) /* Custom chip status ??? */
AM_RANGE(0xb00002, 0xb00003) AM_READ(srmp2_cchip_status_1_r) /* Custom chip status ??? */
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(0x1c0000, 0x1c0001) AM_WRITENOP /* ??? */
AM_RANGE(0x800000, 0x800001) AM_WRITE(srmp2_flags_w) /* ADPCM bank, Color bank, etc. */ 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(0x900000, 0x900001) AM_WRITENOP /* ??? */
AM_RANGE(0xa00000, 0xa00001) AM_WRITE(srmp2_input_1_w) /* I/O ??? */ AM_RANGE(0xa00000, 0xa00001) AM_READWRITE(srmp2_input_1_r,srmp2_input_1_w) /* I/O port 1 */
AM_RANGE(0xa00002, 0xa00003) AM_WRITE(srmp2_input_2_w) /* I/O ??? */ 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(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(0xc00000, 0xc00001) AM_WRITENOP /* ??? */
AM_RANGE(0xd00000, 0xd00001) AM_WRITENOP /* ??? */ AM_RANGE(0xd00000, 0xd00001) AM_WRITENOP /* ??? */
AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP /* ??? */ AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP /* ??? */
AM_RANGE(0xf00000, 0xf00001) AM_DEVREAD8("ay", ay8910_r, 0x00ff)
AM_RANGE(0xf00000, 0xf00003) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff) AM_RANGE(0xf00000, 0xf00003) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( mjyuugi_readmem, ADDRESS_SPACE_PROGRAM, 16 ) static ADDRESS_MAP_START( mjyuugi_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") /* Coinage */ 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_READNOP /* ??? */
AM_RANGE(0x100010, 0x100011) AM_WRITE(mjyuugi_adpcm_bank_w) /* ADPCM bank, GFX bank */
AM_RANGE(0x200000, 0x200001) AM_READNOP /* ??? */ AM_RANGE(0x200000, 0x200001) AM_READNOP /* ??? */
AM_RANGE(0x300000, 0x300001) AM_READNOP /* ??? */ AM_RANGE(0x300000, 0x300001) AM_READNOP /* ??? */
AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW3-1") /* DSW 3-1 */ 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(0x500010, 0x500011) AM_READ_PORT("DSW3-2") /* DSW 3-2 */
AM_RANGE(0x700000, 0x7003ff) AM_READ(SMH_RAM) AM_RANGE(0x700000, 0x7003ff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x800000, 0x800001) AM_READNOP /* ??? */ AM_RANGE(0x800000, 0x800001) AM_READNOP /* ??? */
AM_RANGE(0x900000, 0x900001) AM_READ(srmp2_input_1_r) /* I/O port 1 */ AM_RANGE(0x900000, 0x900001) AM_READWRITE(srmp2_input_1_r,srmp2_input_1_w) /* I/O port 1 */
AM_RANGE(0x900002, 0x900003) AM_READ(srmp2_input_2_r) /* I/O port 2 */ 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_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(0xa00002, 0xa00003) AM_READ(srmp2_cchip_status_1_r) /* custom chip status ??? */
AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8("ay", ay8910_r, 0x00ff) 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(0xb00000, 0xb00003) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff)
AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP /* ??? */ AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP /* ??? */
AM_RANGE(0xd00000, 0xd00609) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) /* Sprites Y */ AM_RANGE(0xd00000, 0xd00609) AM_RAM AM_BASE(&spriteram16) /* Sprites Y */
AM_RANGE(0xd02000, 0xd023ff) AM_WRITE(SMH_RAM) /* ??? only writes $00fa */ AM_RANGE(0xd02000, 0xd023ff) AM_RAM /* ??? only writes $00fa */
AM_RANGE(0xe00000, 0xe03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2) /* Sprites Code + X + Attr */ AM_RANGE(0xe00000, 0xe03fff) AM_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(0xffc000, 0xffffff) AM_RAM AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -562,24 +538,15 @@ static WRITE8_HANDLER( srmp3_flags_w )
} }
static ADDRESS_MAP_START( srmp3_readmem, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( srmp3_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_BANK(1)) /* rom bank */ AM_RANGE(0x8000, 0x9fff) AM_ROMBANK(1) /* rom bank */
AM_RANGE(0xa000, 0xa7ff) AM_READ(SMH_RAM) /* work ram */ AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size) /* 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(0xa800, 0xa800) AM_WRITENOP /* flag ? */
AM_RANGE(0xb000, 0xb303) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) /* Sprites Y */ AM_RANGE(0xb000, 0xb303) AM_RAM AM_BASE(&spriteram) /* Sprites Y */
AM_RANGE(0xb800, 0xb800) AM_WRITENOP /* flag ? */ 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(0xc000, 0xdfff) AM_RAM AM_BASE(&spriteram_2) /* Sprites Code + X + Attr */
AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram_3) AM_RANGE(0xe000, 0xffff) AM_RAM AM_BASE(&spriteram_3)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( srmp3_io_map, ADDRESS_SPACE_IO, 8 ) static ADDRESS_MAP_START( srmp3_io_map, ADDRESS_SPACE_IO, 8 )
@ -1059,7 +1026,7 @@ static MACHINE_DRIVER_START( srmp2 )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", M68000,16000000/2) /* 8.00 MHz */ 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_CPU_VBLANK_INT_HACK(srmp2_interrupt,16) /* Interrupt times is not understood */
MDRV_MACHINE_RESET(srmp2) MDRV_MACHINE_RESET(srmp2)
@ -1098,7 +1065,7 @@ static MACHINE_DRIVER_START( srmp3 )
MDRV_CPU_ADD("maincpu", Z80, 3500000) /* 3.50 MHz ? */ MDRV_CPU_ADD("maincpu", Z80, 3500000) /* 3.50 MHz ? */
// 4000000, /* 4.00 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_IO_MAP(srmp3_io_map,0)
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
@ -1136,7 +1103,7 @@ static MACHINE_DRIVER_START( mjyuugi )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu", M68000,16000000/2) /* 8.00 MHz */ 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_CPU_VBLANK_INT_HACK(srmp2_interrupt,16) /* Interrupt times is not understood */
MDRV_MACHINE_RESET(srmp2) MDRV_MACHINE_RESET(srmp2)

View File

@ -9,7 +9,7 @@ Video hardware
#include "driver.h" #include "driver.h"
static UINT8 *mayumi_videoram; UINT8 *mayumi_videoram;
static tilemap *mayumi_tilemap; static tilemap *mayumi_tilemap;
static TILE_GET_INFO( get_tile_info ) static TILE_GET_INFO( get_tile_info )
@ -30,15 +30,9 @@ VIDEO_START( mayumi )
WRITE8_HANDLER( mayumi_videoram_w ) WRITE8_HANDLER( mayumi_videoram_w )
{ {
mayumi_videoram[offset] = data; mayumi_videoram[offset] = data;
tilemap_mark_tile_dirty(mayumi_tilemap, offset & 0x7ff ); tilemap_mark_tile_dirty(mayumi_tilemap, offset & 0x7ff );
} }
READ8_HANDLER( mayumi_videoram_r )
{
return mayumi_videoram[offset];
}
VIDEO_UPDATE( mayumi ) VIDEO_UPDATE( mayumi )
{ {
tilemap_draw(bitmap, cliprect, mayumi_tilemap, 0, 0); tilemap_draw(bitmap, cliprect, mayumi_tilemap, 0, 0);

View File

@ -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 ) 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); 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) static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
{ {
int offs; int offs;
for (offs = (spriteram_size - 4); offs >= 0; offs -= 4) for (offs = (0x40 - 4); offs >= 0; offs -= 4)
{ {
int sprt; int sprt;
int color; int color;
int sx, sy; int sx, sy;
int flipx, flipy; int flipx, flipy;
sprt = (((spriteram[offs + 1] >> 2) & 0x3f) | ((spriteram[offs + 3] & 0x20) << 1)); sprt = (((videoram[offs + 1] >> 2) & 0x3f) | ((videoram[offs + 3] & 0x20) << 1));
flipx = (spriteram[offs + 1] & 0x01) >> 0; flipx = (videoram[offs + 1] & 0x01) >> 0;
flipy = (spriteram[offs + 1] & 0x02) >> 1; flipy = (videoram[offs + 1] & 0x02) >> 1;
color = (spriteram[offs + 3] & 0x1f); color = (videoram[offs + 3] & 0x1f);
sx = 224 - spriteram[offs + 2]; sx = 224 - videoram[offs + 2];
sy = spriteram[offs + 0]; sy = videoram[offs + 0];
if (flip_screen_get(machine)) if (flip_screen_get(machine))
{ {
sx = 208 - sx; sx = 208 - sx;