mirror of
https://github.com/holub/mame
synced 2025-06-02 19:06:43 +03:00
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:
parent
62812a286c
commit
e9f13aef3d
@ -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 )
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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))
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user