Memory maps merges for the following drivers:

* senjyo.c
* seta2.c
* sfkick.c
* shangha3.c

Properly hooked-up player 2 mahjong panel in mj4simai
Moved paletteram_IIBBGGRR_w() from senjyo.c to emu/video/generic.c

===================================

I'm not sure if sfkick.c memory map is 100% correct, needs double checking (it's the same on MSX MESS driver)
Also anybody is interested in rewrite senjyo.c driver from scratch? ;P
This commit is contained in:
Angelo Salese 2009-04-28 20:37:37 +00:00
parent 25bff72fe9
commit 7fd66deda9
6 changed files with 323 additions and 395 deletions

View File

@ -706,6 +706,20 @@ WRITE8_HANDLER( paletteram_BBGGRRII_w )
pal4bit(((data >> 4) & 0x0c) | i));
}
/*-------------------------------------------------
II-BB-GG-RR writes
-------------------------------------------------*/
WRITE8_HANDLER( paletteram_IIBBGGRR_w )
{
int i = (data >> 6) & 3;
paletteram[offset] = data;
palette_set_color_rgb(space->machine, offset, pal4bit(((data << 2) & 0x0c) | i),
pal4bit(((data >> 0) & 0x0c) | i),
pal4bit(((data >> 2) & 0x0c) | i));
}
/***************************************************************************

View File

@ -145,6 +145,7 @@ PALETTE_INIT( RRRRR_GGGGGG_BBBBB );
WRITE8_HANDLER( paletteram_BBGGGRRR_w );
WRITE8_HANDLER( paletteram_RRRGGGBB_w );
WRITE8_HANDLER( paletteram_BBGGRRII_w );
WRITE8_HANDLER( paletteram_IIBBGGRR_w );
/* 4-4-4 RGB palette write handlers */
WRITE8_HANDLER( paletteram_xxxxBBBBGGGGRRRR_le_w );

View File

@ -98,84 +98,56 @@ static WRITE8_HANDLER( flip_screen_w )
flip_screen_set(space->machine, data);
}
static WRITE8_HANDLER( paletteram_IIBBGGRR_w )
{
int r,g,b,i;
paletteram[offset] = data;
i = (data >> 6) & 0x03;
/* red component */
r = (data << 2) & 0x0c;
if (r) r |= i;
/* green component */
g = (data >> 0) & 0x0c;
if (g) g |= i;
/* blue component */
b = (data >> 2) & 0x0c;
if (b) b |= i;
palette_set_color_rgb(space->machine,offset,pal4bit(r),pal4bit(g),pal4bit(b));
}
static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
AM_RANGE(0x8000, 0x97ff) AM_READ(SMH_RAM)
AM_RANGE(0x9800, 0x987f) AM_READ(SMH_RAM)
AM_RANGE(0x9c00, 0x9dff) AM_READ(SMH_RAM)
AM_RANGE(0x9e00, 0x9e3f) AM_READ(SMH_RAM)
AM_RANGE(0xa000, 0xa7ff) AM_READ(SMH_RAM)
AM_RANGE(0xa800, 0xafff) AM_READ(SMH_RAM)
AM_RANGE(0xb000, 0xb7ff) AM_READ(SMH_RAM)
AM_RANGE(0xb800, 0xbbff) AM_READ(SMH_RAM)
AM_RANGE(0xd000, 0xd000) AM_READ_PORT("P1")
static ADDRESS_MAP_START( senjyo_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x8fff) AM_RAM
AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(senjyo_fgvideoram_w) AM_BASE(&senjyo_fgvideoram)
AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(senjyo_fgcolorram_w) AM_BASE(&senjyo_fgcolorram)
AM_RANGE(0x9800, 0x987f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
AM_RANGE(0x9c00, 0x9dff) AM_RAM_WRITE(paletteram_IIBBGGRR_w) AM_BASE(&paletteram)
AM_RANGE(0x9e00, 0x9e1f) AM_RAM AM_BASE(&senjyo_fgscroll)
AM_RANGE(0x9e20, 0x9e21) AM_RAM AM_BASE(&senjyo_scrolly3)
/* AM_RANGE(0x9e22, 0x9e23) height of the layer (Senjyo only, fixed at 0x380) */
AM_RANGE(0x9e25, 0x9e25) AM_RAM AM_BASE(&senjyo_scrollx3)
AM_RANGE(0x9e27, 0x9e27) AM_RAM_WRITE(senjyo_bgstripes_w) AM_BASE(&senjyo_bgstripesram) /* controls width of background stripes */
AM_RANGE(0x9e28, 0x9e29) AM_RAM AM_BASE(&senjyo_scrolly2)
/* AM_RANGE(0x9e2a, 0x9e2b) height of the layer (Senjyo only, fixed at 0x200) */
AM_RANGE(0x9e2d, 0x9e2d) AM_RAM AM_BASE(&senjyo_scrollx2)
AM_RANGE(0x9e30, 0x9e31) AM_RAM AM_BASE(&senjyo_scrolly1)
/* AM_RANGE(0x9e32, 0x9e33) height of the layer (Senjyo only, fixed at 0x100) */
AM_RANGE(0x9e35, 0x9e35) AM_RAM AM_BASE(&senjyo_scrollx1)
/* AM_RANGE(0x9e38, 0x9e38) probably radar y position (Senjyo only, fixed at 0x61) */
/* AM_RANGE(0x9e3d, 0x9e3d) probably radar x position (Senjyo only, 0x00/0xc0 depending on screen flip) */
AM_RANGE(0x9e00, 0x9e3f) AM_RAM
AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(senjyo_bg3videoram_w) AM_BASE(&senjyo_bg3videoram)
AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(senjyo_bg2videoram_w) AM_BASE(&senjyo_bg2videoram)
AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(senjyo_bg1videoram_w) AM_BASE(&senjyo_bg1videoram)
AM_RANGE(0xb800, 0xbbff) AM_RAM AM_BASE(&senjyo_radarram)
AM_RANGE(0xd000, 0xd000) AM_READ_PORT("P1") AM_WRITE(flip_screen_w)
AM_RANGE(0xd001, 0xd001) AM_READ_PORT("P2")
AM_RANGE(0xd002, 0xd002) AM_READ_PORT("SYSTEM")
AM_RANGE(0xd004, 0xd004) AM_READ_PORT("DSW1")
AM_RANGE(0xd004, 0xd004) AM_READ_PORT("DSW1") AM_DEVWRITE("z80pio", z80pio_p_w)
AM_RANGE(0xd005, 0xd005) AM_READ_PORT("DSW2")
ADDRESS_MAP_END
static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
AM_RANGE(0x8000, 0x8fff) AM_WRITE(SMH_RAM)
AM_RANGE(0x9000, 0x93ff) AM_WRITE(senjyo_fgvideoram_w) AM_BASE(&senjyo_fgvideoram)
AM_RANGE(0x9400, 0x97ff) AM_WRITE(senjyo_fgcolorram_w) AM_BASE(&senjyo_fgcolorram)
AM_RANGE(0x9800, 0x987f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
AM_RANGE(0x9c00, 0x9dff) AM_WRITE(paletteram_IIBBGGRR_w) AM_BASE(&paletteram)
AM_RANGE(0x9e00, 0x9e1f) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_fgscroll)
AM_RANGE(0x9e20, 0x9e21) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_scrolly3)
/* { 0x9e22, 0x9e23, height of the layer (Senjyo only, fixed at 0x380) */
AM_RANGE(0x9e25, 0x9e25) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_scrollx3)
AM_RANGE(0x9e27, 0x9e27) AM_WRITE(senjyo_bgstripes_w) AM_BASE(&senjyo_bgstripesram) /* controls width of background stripes */
AM_RANGE(0x9e28, 0x9e29) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_scrolly2)
/* { 0x9e2a, 0x9e2b, height of the layer (Senjyo only, fixed at 0x200) */
AM_RANGE(0x9e2d, 0x9e2d) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_scrollx2)
AM_RANGE(0x9e30, 0x9e31) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_scrolly1)
/* { 0x9e32, 0x9e33, height of the layer (Senjyo only, fixed at 0x100) */
AM_RANGE(0x9e35, 0x9e35) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_scrollx1)
/* { 0x9e38, 0x9e38, probably radar y position (Senjyo only, fixed at 0x61) */
/* { 0x9e3d, 0x9e3d, probably radar x position (Senjyo only, 0x00/0xc0 depending on screen flip) */
AM_RANGE(0x9e00, 0x9e3f) AM_WRITE(SMH_RAM)
AM_RANGE(0xa000, 0xa7ff) AM_WRITE(senjyo_bg3videoram_w) AM_BASE(&senjyo_bg3videoram)
AM_RANGE(0xa800, 0xafff) AM_WRITE(senjyo_bg2videoram_w) AM_BASE(&senjyo_bg2videoram)
AM_RANGE(0xb000, 0xb7ff) AM_WRITE(senjyo_bg1videoram_w) AM_BASE(&senjyo_bg1videoram)
AM_RANGE(0xb800, 0xbbff) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_radarram)
AM_RANGE(0xd000, 0xd000) AM_WRITE(flip_screen_w)
AM_RANGE(0xd004, 0xd004) AM_DEVWRITE("z80pio", z80pio_p_w)
ADDRESS_MAP_END
static WRITE8_DEVICE_HANDLER( pio_w )
{
if (offset & 1)
z80pio_c_w(device, (offset >> 1) & 1, data);
else
z80pio_d_w(device, (offset >> 1) & 1, data);
}
static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
AM_RANGE(0x4000, 0x43ff) AM_READ(SMH_RAM)
ADDRESS_MAP_END
static READ8_DEVICE_HANDLER( pio_r )
{
return (offset & 1) ? z80pio_c_r(device, (offset >> 1) & 1) : z80pio_d_r(device, (offset >> 1) & 1);
}
static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
AM_RANGE(0x4000, 0x43ff) AM_WRITE(SMH_RAM)
static ADDRESS_MAP_START( senjyo_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0x43ff) AM_RAM
AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("sn1", sn76496_w)
AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("sn2", sn76496_w)
AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn3", sn76496_w)
@ -186,6 +158,12 @@ static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
#endif
ADDRESS_MAP_END
static ADDRESS_MAP_START( senjyo_sound_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("z80pio", pio_r, pio_w)
AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("z80ctc", z80ctc_r, z80ctc_w)
ADDRESS_MAP_END
/* For the bootleg */
/* are scroll registers 1+2 linked on the bootleg?, only one copy is written */
@ -201,46 +179,41 @@ static WRITE8_HANDLER(starforb_scrollx2)
senjyo_scrollx1[offset] = data;
}
static ADDRESS_MAP_START( starforb_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
AM_RANGE(0x8000, 0x8fff) AM_WRITE(SMH_RAM)
AM_RANGE(0x9000, 0x93ff) AM_WRITE(senjyo_fgvideoram_w) AM_BASE(&senjyo_fgvideoram)
AM_RANGE(0x9400, 0x97ff) AM_WRITE(senjyo_fgcolorram_w) AM_BASE(&senjyo_fgcolorram)
AM_RANGE(0x9800, 0x987f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
AM_RANGE(0x9c00, 0x9dff) AM_WRITE(paletteram_IIBBGGRR_w) AM_BASE(&paletteram)
static ADDRESS_MAP_START( starforb_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x8fff) AM_RAM
AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(senjyo_fgvideoram_w) AM_BASE(&senjyo_fgvideoram)
AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(senjyo_fgcolorram_w) AM_BASE(&senjyo_fgcolorram)
AM_RANGE(0x9800, 0x987f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
AM_RANGE(0x9c00, 0x9dff) AM_RAM_WRITE(paletteram_IIBBGGRR_w) AM_BASE(&paletteram)
/* The format / use of the ram here is different on the bootleg */
AM_RANGE(0x9e20, 0x9e21) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_scrolly3)
AM_RANGE(0x9e25, 0x9e25) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_scrollx3)
AM_RANGE(0x9e30, 0x9e31) AM_WRITE(starforb_scrolly2) AM_BASE(&senjyo_scrolly2) // ok
AM_RANGE(0x9e35, 0x9e35) AM_WRITE(starforb_scrollx2) AM_BASE(&senjyo_scrollx2) // ok
AM_RANGE(0x9e00, 0x9e3f) AM_WRITE(SMH_RAM)
AM_RANGE(0x9e20, 0x9e21) AM_RAM AM_BASE(&senjyo_scrolly3)
AM_RANGE(0x9e25, 0x9e25) AM_RAM AM_BASE(&senjyo_scrollx3)
AM_RANGE(0x9e30, 0x9e31) AM_RAM_WRITE(starforb_scrolly2) AM_BASE(&senjyo_scrolly2) // ok
AM_RANGE(0x9e35, 0x9e35) AM_RAM_WRITE(starforb_scrollx2) AM_BASE(&senjyo_scrollx2) // ok
AM_RANGE(0x9e00, 0x9e3f) AM_RAM
AM_RANGE(0xa000, 0xa7ff) AM_WRITE(senjyo_bg3videoram_w) AM_BASE(&senjyo_bg3videoram)
AM_RANGE(0xa800, 0xafff) AM_WRITE(senjyo_bg2videoram_w) AM_BASE(&senjyo_bg2videoram)
AM_RANGE(0xb000, 0xb7ff) AM_WRITE(senjyo_bg1videoram_w) AM_BASE(&senjyo_bg1videoram)
AM_RANGE(0xb800, 0xbbff) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_radarram)
AM_RANGE(0xd000, 0xd000) AM_WRITE(flip_screen_w)
AM_RANGE(0xd004, 0xd004) AM_DEVWRITE("z80pio", z80pio_p_w)
AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(senjyo_bg3videoram_w) AM_BASE(&senjyo_bg3videoram)
AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(senjyo_bg2videoram_w) AM_BASE(&senjyo_bg2videoram)
AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(senjyo_bg1videoram_w) AM_BASE(&senjyo_bg1videoram)
AM_RANGE(0xb800, 0xbbff) AM_RAM AM_BASE(&senjyo_radarram)
AM_RANGE(0xd000, 0xd000) AM_READ_PORT("P1") AM_WRITE(flip_screen_w)
AM_RANGE(0xd001, 0xd001) AM_READ_PORT("P2")
AM_RANGE(0xd002, 0xd002) AM_READ_PORT("SYSTEM")
AM_RANGE(0xd004, 0xd004) AM_READ_PORT("DSW1") AM_DEVWRITE("z80pio", z80pio_p_w)
AM_RANGE(0xd005, 0xd005) AM_READ_PORT("DSW2")
/* these aren't used / written, left here to make sure memory is allocated */
AM_RANGE(0xfe00, 0xfe1f) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_fgscroll)
AM_RANGE(0xfe27, 0xfe27) AM_WRITE(senjyo_bgstripes_w) AM_BASE(&senjyo_bgstripesram) /* controls width of background stripes */
AM_RANGE(0xfe28, 0xfe29) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_scrolly1)
AM_RANGE(0xfe2d, 0xfe2d) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_scrollx1)
AM_RANGE(0xfe00, 0xfe1f) AM_RAM AM_BASE(&senjyo_fgscroll)
AM_RANGE(0xfe27, 0xfe27) AM_RAM_WRITE(senjyo_bgstripes_w) AM_BASE(&senjyo_bgstripesram) /* controls width of background stripes */
AM_RANGE(0xfe28, 0xfe29) AM_RAM AM_BASE(&senjyo_scrolly1)
AM_RANGE(0xfe2d, 0xfe2d) AM_RAM AM_BASE(&senjyo_scrollx1)
ADDRESS_MAP_END
static ADDRESS_MAP_START( starforb_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
AM_RANGE(0x4000, 0x43ff) AM_READ(SMH_RAM)
AM_RANGE(0xf000, 0xffff) AM_READ(SMH_RAM)
ADDRESS_MAP_END
static ADDRESS_MAP_START( starforb_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
AM_RANGE(0x4000, 0x43ff) AM_WRITE(SMH_RAM)
static ADDRESS_MAP_START( starforb_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0x43ff) AM_RAM
AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("sn1", sn76496_w)
AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("sn2", sn76496_w)
AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn3", sn76496_w)
@ -249,30 +222,9 @@ static ADDRESS_MAP_START( starforb_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xe000, 0xe000) AM_WRITE(unknown)
AM_RANGE(0xf000, 0xf000) AM_WRITE(unknown)
#endif
AM_RANGE(0xf000, 0xffff) AM_WRITE(SMH_RAM)
AM_RANGE(0xf000, 0xffff) AM_RAM
ADDRESS_MAP_END
static WRITE8_DEVICE_HANDLER( pio_w )
{
if (offset & 1)
z80pio_c_w(device, (offset >> 1) & 1, data);
else
z80pio_d_w(device, (offset >> 1) & 1, data);
}
static READ8_DEVICE_HANDLER( pio_r )
{
return (offset & 1) ? z80pio_c_r(device, (offset >> 1) & 1) : z80pio_d_r(device, (offset >> 1) & 1);
}
static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("z80pio", pio_r, pio_w)
AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("z80ctc", z80ctc_r, z80ctc_w)
ADDRESS_MAP_END
static INPUT_PORTS_START( senjyo )
PORT_START("P1")
@ -596,13 +548,13 @@ static MACHINE_DRIVER_START( senjyo )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz? */
MDRV_CPU_PROGRAM_MAP(readmem,writemem)
MDRV_CPU_PROGRAM_MAP(senjyo_map,0)
MDRV_CPU_VBLANK_INT("screen", senjyo_interrupt)
MDRV_CPU_ADD("sub", Z80, 2000000) /* 2 MHz? */
MDRV_CPU_CONFIG(senjyo_daisy_chain)
MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
MDRV_CPU_IO_MAP(sound_io_map,0)
MDRV_CPU_PROGRAM_MAP(senjyo_sound_map,0)
MDRV_CPU_IO_MAP(senjyo_sound_io_map,0)
MDRV_MACHINE_RESET(senjyo)
@ -646,10 +598,10 @@ static MACHINE_DRIVER_START( starforb )
/* basic machine hardware */
MDRV_IMPORT_FROM(senjyo)
MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_PROGRAM_MAP(readmem,starforb_writemem)
MDRV_CPU_PROGRAM_MAP(starforb_map,0)
MDRV_CPU_MODIFY("sub")
MDRV_CPU_PROGRAM_MAP(starforb_sound_readmem,starforb_sound_writemem)
MDRV_CPU_PROGRAM_MAP(starforb_sound_map,0)
MACHINE_DRIVER_END

View File

@ -556,34 +556,24 @@ static WRITE16_HANDLER( grdians_lockout_w )
// popmessage("%04X", data & 0xffff);
}
static ADDRESS_MAP_START( grdians_readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM ) // ROM
AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM ) // RAM
AM_RANGE(0x304000, 0x30ffff) AM_READ(SMH_RAM ) // ? seems tile data
static ADDRESS_MAP_START( grdians_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM
AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
AM_RANGE(0x304000, 0x30ffff) AM_RAM // ? seems tile data
AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW1") // DSW 1
AM_RANGE(0x600002, 0x600003) AM_READ_PORT("DSW2") // DSW 2
AM_RANGE(0x700000, 0x700001) AM_READ_PORT("P1") // P1
AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P2") // P2
AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SYSTEM") // Coins
AM_RANGE(0x70000c, 0x70000d) AM_READ(watchdog_reset16_r ) // Watchdog
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREAD("x1", seta_sound_word_r ) // Sound
AM_RANGE(0xc00000, 0xc3ffff) AM_READ(SMH_RAM ) // Sprites
AM_RANGE(0xc40000, 0xc4ffff) AM_READ(SMH_RAM ) // Palette
AM_RANGE(0xfffc00, 0xffffff) AM_READ(SMH_RAM ) // TMP68301 Registers
ADDRESS_MAP_END
static ADDRESS_MAP_START( grdians_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM ) // ROM
AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM ) // RAM
AM_RANGE(0x304000, 0x30ffff) AM_WRITE(SMH_RAM ) // ? seems tile data
AM_RANGE(0x800000, 0x800001) AM_WRITE(grdians_lockout_w )
AM_RANGE(0xb00000, 0xb03fff) AM_DEVWRITE("x1", seta_sound_word_w ) // Sound
AM_RANGE(0xc00000, 0xc3ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size ) // Sprites
AM_RANGE(0xc40000, 0xc4ffff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16 ) // Palette
AM_RANGE(0xc50000, 0xc5ffff) AM_WRITE(SMH_RAM ) // cleared
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs ) // Video Registers
AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(seta2_sound_bank_w ) // Samples Banks
AM_RANGE(0xfffc00, 0xffffff) AM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs ) // TMP68301 Registers
AM_RANGE(0x70000c, 0x70000d) AM_READ(watchdog_reset16_r) // Watchdog
AM_RANGE(0x800000, 0x800001) AM_WRITE(grdians_lockout_w)
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w) // Sound
AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) // Sprites
AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) // Palette
AM_RANGE(0xc50000, 0xc5ffff) AM_RAM // cleared
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs) // Video Registers
AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(seta2_sound_bank_w) // Samples Banks
AM_RANGE(0xfffc00, 0xffffff) AM_RAM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs) // TMP68301 Registers
ADDRESS_MAP_END
/***************************************************************************
@ -626,10 +616,10 @@ static WRITE16_HANDLER( gundamex_eeprom_w )
eeprom_set_cs_line((data & 0x4) ? CLEAR_LINE : ASSERT_LINE);
}
static ADDRESS_MAP_START( gundamex_readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM ) // ROM
AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM ) // RAM
AM_RANGE(0x500000, 0x57ffff) AM_READ(SMH_ROM ) // ROM
static ADDRESS_MAP_START( gundamex_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM
AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
AM_RANGE(0x500000, 0x57ffff) AM_ROM // ROM
AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW1") // DSW 1
AM_RANGE(0x600002, 0x600003) AM_READ_PORT("DSW2") // DSW 2
AM_RANGE(0x700000, 0x700001) AM_READ_PORT("P1") // P1
@ -637,25 +627,18 @@ static ADDRESS_MAP_START( gundamex_readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SYSTEM") // Coins
AM_RANGE(0x700008, 0x700009) AM_READ_PORT("IN0") // P1
AM_RANGE(0x70000a, 0x70000b) AM_READ_PORT("IN1") // P2
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREAD("x1", seta_sound_word_r ) // Sound
AM_RANGE(0xfffd0a, 0xfffd0b) AM_READ(gundamex_eeprom_r ) // parallel data register
AM_RANGE(0x70000c, 0x70000d) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0x800000, 0x800001) AM_WRITE(grdians_lockout_w)
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w) // Sound
AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) // Sprites
AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16 ) // Palette
AM_RANGE(0xc50000, 0xc5ffff) AM_RAM // cleared
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs) // Video Registers
AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(seta2_sound_bank_w) // Samples Banks
AM_RANGE(0xfffd0a, 0xfffd0b) AM_READWRITE(gundamex_eeprom_r,gundamex_eeprom_w) // parallel data register
AM_RANGE(0xfffc00, 0xffffff) AM_RAM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs) // TMP68301 Registers
ADDRESS_MAP_END
static ADDRESS_MAP_START( gundamex_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM ) // ROM
AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM ) // RAM
AM_RANGE(0x500000, 0x57ffff) AM_WRITE(SMH_ROM ) // ROM
AM_RANGE(0x70000c, 0x70000d) AM_WRITE(watchdog_reset16_w )
AM_RANGE(0x800000, 0x800001) AM_WRITE(grdians_lockout_w )
AM_RANGE(0xb00000, 0xb03fff) AM_DEVWRITE("x1", seta_sound_word_w ) // Sound
AM_RANGE(0xc00000, 0xc3ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size ) // Sprites
AM_RANGE(0xc40000, 0xc4ffff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16 ) // Palette
AM_RANGE(0xc50000, 0xc5ffff) AM_WRITE(SMH_RAM ) // cleared
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs ) // Video Registers
AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(seta2_sound_bank_w ) // Samples Banks
AM_RANGE(0xfffd0a, 0xfffd0b) AM_WRITE(gundamex_eeprom_w ) // parallel data register
AM_RANGE(0xfffc00, 0xffffff) AM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs ) // TMP68301 Registers
ADDRESS_MAP_END
/***************************************************************************
Wakakusamonogatari Mahjong Yonshimai
@ -667,47 +650,51 @@ static READ16_HANDLER( mj4simai_p1_r )
{
switch (keyboard_row)
{
case 0x01: return input_port_read(space->machine, "KEY0");
case 0x02: return input_port_read(space->machine, "KEY1");
case 0x04: return input_port_read(space->machine, "KEY2");
case 0x08: return input_port_read(space->machine, "KEY3");
case 0x10: return input_port_read(space->machine, "KEY4");
case 0x01: return input_port_read(space->machine, "P1_KEY0");
case 0x02: return input_port_read(space->machine, "P1_KEY1");
case 0x04: return input_port_read(space->machine, "P1_KEY2");
case 0x08: return input_port_read(space->machine, "P1_KEY3");
case 0x10: return input_port_read(space->machine, "P1_KEY4");
default: logerror("p1_r with keyboard_row = %02x\n",keyboard_row); return 0xffff;
}
}
static READ16_HANDLER( mj4simai_p2_r )
{
switch (keyboard_row)
{
case 0x01: return input_port_read(space->machine, "P2_KEY0");
case 0x02: return input_port_read(space->machine, "P2_KEY1");
case 0x04: return input_port_read(space->machine, "P2_KEY2");
case 0x08: return input_port_read(space->machine, "P2_KEY3");
case 0x10: return input_port_read(space->machine, "P2_KEY4");
default: logerror("p2_r with keyboard_row = %02x\n",keyboard_row); return 0xffff;
}
}
static WRITE16_HANDLER( mj4simai_keyboard_w )
{
if (ACCESSING_BITS_0_7)
keyboard_row = data & 0xff;
}
static ADDRESS_MAP_START( mj4simai_readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM ) // ROM
AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM ) // RAM
AM_RANGE(0x600000, 0x600001) AM_READ(mj4simai_p1_r ) // P1
AM_RANGE(0x600002, 0x600003) AM_READ(mj4simai_p1_r ) // P2, but I'm using P1 again
AM_RANGE(0x600006, 0x600007) AM_READ(watchdog_reset16_r ) // Watchdog
static ADDRESS_MAP_START( mj4simai_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM
AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
AM_RANGE(0x600000, 0x600001) AM_READ(mj4simai_p1_r) // P1
AM_RANGE(0x600002, 0x600003) AM_READ(mj4simai_p2_r) // P2
AM_RANGE(0x600004, 0x600005) AM_WRITE(mj4simai_keyboard_w) // select keyboard row to read
AM_RANGE(0x600006, 0x600007) AM_READ(watchdog_reset16_r) // Watchdog
AM_RANGE(0x600100, 0x600101) AM_READ_PORT("SYSTEM") //
AM_RANGE(0x600200, 0x600201) AM_WRITENOP // Leds? Coins?
AM_RANGE(0x600300, 0x600301) AM_READ_PORT("DSW1") // DSW 1
AM_RANGE(0x600302, 0x600303) AM_READ_PORT("DSW2") // DSW 2
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREAD("x1", seta_sound_word_r ) // Sound
AM_RANGE(0xc00000, 0xc3ffff) AM_READ(SMH_RAM ) // Sprites
AM_RANGE(0xc40000, 0xc4ffff) AM_READ(SMH_RAM ) // Palette
AM_RANGE(0xfffc00, 0xffffff) AM_READ(SMH_RAM ) // TMP68301 Registers
ADDRESS_MAP_END
static ADDRESS_MAP_START( mj4simai_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM ) // ROM
AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM ) // RAM
AM_RANGE(0x600004, 0x600005) AM_WRITE(mj4simai_keyboard_w ) // select keyboard row to read
AM_RANGE(0x600200, 0x600201) AM_WRITE(SMH_NOP ) // Leds? Coins?
AM_RANGE(0x600300, 0x60030f) AM_WRITE(seta2_sound_bank_w ) // Samples Banks
AM_RANGE(0xb00000, 0xb03fff) AM_DEVWRITE("x1", seta_sound_word_w ) // Sound
AM_RANGE(0xc00000, 0xc3ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size ) // Sprites
AM_RANGE(0xc40000, 0xc4ffff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16 ) // Palette
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs ) // Video Registers
AM_RANGE(0xfffc00, 0xffffff) AM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs ) // TMP68301 Registers
AM_RANGE(0x600300, 0x60030f) AM_WRITE(seta2_sound_bank_w) // Samples Banks
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w) // Sound
AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) // Sprites
AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) // Palette
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs) // Video Registers
AM_RANGE(0xfffc00, 0xffffff) AM_RAM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs) // TMP68301 Registers
ADDRESS_MAP_END
@ -715,31 +702,22 @@ ADDRESS_MAP_END
Kosodate Quiz My Angel
***************************************************************************/
static ADDRESS_MAP_START( myangel_readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM ) // ROM
AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM ) // RAM
static ADDRESS_MAP_START( myangel_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM
AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
AM_RANGE(0x700000, 0x700001) AM_READ_PORT("P1") // P1
AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P2") // P2
AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SYSTEM") // Coins
AM_RANGE(0x700006, 0x700007) AM_READ(watchdog_reset16_r ) // Watchdog
AM_RANGE(0x700006, 0x700007) AM_READ(watchdog_reset16_r) // Watchdog
AM_RANGE(0x700200, 0x700201) AM_WRITENOP // Leds? Coins?
AM_RANGE(0x700300, 0x700301) AM_READ_PORT("DSW1") // DSW 1
AM_RANGE(0x700302, 0x700303) AM_READ_PORT("DSW2") // DSW 2
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREAD("x1", seta_sound_word_r ) // Sound
AM_RANGE(0xc00000, 0xc3ffff) AM_READ(SMH_RAM ) // Sprites
AM_RANGE(0xc40000, 0xc4ffff) AM_READ(SMH_RAM ) // Palette
AM_RANGE(0xfffc00, 0xffffff) AM_READ(SMH_RAM ) // TMP68301 Registers
ADDRESS_MAP_END
static ADDRESS_MAP_START( myangel_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM ) // ROM
AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM ) // RAM
AM_RANGE(0x700200, 0x700201) AM_WRITE(SMH_NOP ) // Leds? Coins?
AM_RANGE(0x700310, 0x70031f) AM_WRITE(seta2_sound_bank_w ) // Samples Banks
AM_RANGE(0xb00000, 0xb03fff) AM_DEVWRITE("x1", seta_sound_word_w ) // Sound
AM_RANGE(0xc00000, 0xc3ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size ) // Sprites
AM_RANGE(0xc40000, 0xc4ffff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16 ) // Palette
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs ) // Video Registers
AM_RANGE(0xfffc00, 0xffffff) AM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs ) // TMP68301 Registers
AM_RANGE(0x700310, 0x70031f) AM_WRITE(seta2_sound_bank_w) // Samples Banks
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w) // Sound
AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) // Sprites
AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) // Palette
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs) // Video Registers
AM_RANGE(0xfffc00, 0xffffff) AM_RAM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs) // TMP68301 Registers
ADDRESS_MAP_END
@ -747,31 +725,22 @@ ADDRESS_MAP_END
Kosodate Quiz My Angel 2
***************************************************************************/
static ADDRESS_MAP_START( myangel2_readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM ) // ROM
AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM ) // RAM
static ADDRESS_MAP_START( myangel2_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM
AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
AM_RANGE(0x600000, 0x600001) AM_READ_PORT("P1") // P1
AM_RANGE(0x600002, 0x600003) AM_READ_PORT("P2") // P2
AM_RANGE(0x600004, 0x600005) AM_READ_PORT("SYSTEM") // Coins
AM_RANGE(0x600006, 0x600007) AM_READ(watchdog_reset16_r ) // Watchdog
AM_RANGE(0x600006, 0x600007) AM_READ(watchdog_reset16_r) // Watchdog
AM_RANGE(0x600200, 0x600201) AM_WRITENOP // Leds? Coins?
AM_RANGE(0x600300, 0x600301) AM_READ_PORT("DSW1") // DSW 1
AM_RANGE(0x600302, 0x600303) AM_READ_PORT("DSW2") // DSW 2
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREAD("x1", seta_sound_word_r ) // Sound
AM_RANGE(0xd00000, 0xd3ffff) AM_READ(SMH_RAM ) // Sprites
AM_RANGE(0xd40000, 0xd4ffff) AM_READ(SMH_RAM ) // Palette
AM_RANGE(0xfffc00, 0xffffff) AM_READ(SMH_RAM ) // TMP68301 Registers
ADDRESS_MAP_END
static ADDRESS_MAP_START( myangel2_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM ) // ROM
AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM ) // RAM
AM_RANGE(0x600200, 0x600201) AM_WRITE(SMH_NOP ) // Leds? Coins?
AM_RANGE(0x600300, 0x60030f) AM_WRITE(seta2_sound_bank_w ) // Samples Banks
AM_RANGE(0xb00000, 0xb03fff) AM_DEVWRITE("x1", seta_sound_word_w ) // Sound
AM_RANGE(0xd00000, 0xd3ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size ) // Sprites
AM_RANGE(0xd40000, 0xd4ffff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16 ) // Palette
AM_RANGE(0xd60000, 0xd6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs ) // Video Registers
AM_RANGE(0xfffc00, 0xffffff) AM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs ) // TMP68301 Registers
AM_RANGE(0x600300, 0x60030f) AM_WRITE(seta2_sound_bank_w) // Samples Banks
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w) // Sound
AM_RANGE(0xd00000, 0xd3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) // Sprites
AM_RANGE(0xd40000, 0xd4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) // Palette
AM_RANGE(0xd60000, 0xd6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs ) // Video Registers
AM_RANGE(0xfffc00, 0xffffff) AM_RAM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs) // TMP68301 Registers
ADDRESS_MAP_END
@ -801,32 +770,22 @@ static WRITE16_HANDLER( pzlbowl_coin_counter_w )
}
}
static ADDRESS_MAP_START( pzlbowl_readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM ) // ROM
AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM ) // RAM
AM_RANGE(0x400300, 0x400301) AM_READ_PORT("DSW1") // DSW 1
AM_RANGE(0x400302, 0x400303) AM_READ_PORT("DSW2") // DSW 2
AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1
AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2
AM_RANGE(0x500004, 0x500005) AM_READ(pzlbowl_coins_r ) // Coins + Protection?
AM_RANGE(0x500006, 0x500007) AM_READ(watchdog_reset16_r ) // Watchdog
AM_RANGE(0x700000, 0x700001) AM_READ(pzlbowl_protection_r ) // Protection
AM_RANGE(0x800000, 0x83ffff) AM_READ(SMH_RAM ) // Sprites
AM_RANGE(0x840000, 0x84ffff) AM_READ(SMH_RAM ) // Palette
AM_RANGE(0x900000, 0x903fff) AM_DEVREAD("x1", seta_sound_word_r ) // Sound
AM_RANGE(0xfffc00, 0xffffff) AM_READ(SMH_RAM ) // TMP68301 Registers
ADDRESS_MAP_END
static ADDRESS_MAP_START( pzlbowl_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM ) // ROM
AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM ) // RAM
AM_RANGE(0x400300, 0x40030f) AM_WRITE(seta2_sound_bank_w ) // Samples Banks
AM_RANGE(0x500004, 0x500005) AM_WRITE(pzlbowl_coin_counter_w ) // Coins Counter
AM_RANGE(0x800000, 0x83ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size ) // Sprites
AM_RANGE(0x840000, 0x84ffff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16 ) // Palette
AM_RANGE(0x860000, 0x86003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs ) // Video Registers
AM_RANGE(0x900000, 0x903fff) AM_DEVWRITE("x1", seta_sound_word_w ) // Sound
AM_RANGE(0xfffc00, 0xffffff) AM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs ) // TMP68301 Registers
static ADDRESS_MAP_START( pzlbowl_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
AM_RANGE(0x400300, 0x400301) AM_READ_PORT("DSW1") // DSW 1
AM_RANGE(0x400302, 0x400303) AM_READ_PORT("DSW2") // DSW 2
AM_RANGE(0x400300, 0x40030f) AM_WRITE(seta2_sound_bank_w) // Samples Banks
AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1
AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2
AM_RANGE(0x500004, 0x500005) AM_READWRITE(pzlbowl_coins_r,pzlbowl_coin_counter_w) // Coins + Protection?
AM_RANGE(0x500006, 0x500007) AM_READ(watchdog_reset16_r) // Watchdog
AM_RANGE(0x700000, 0x700001) AM_READ(pzlbowl_protection_r) // Protection
AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) // Sprites
AM_RANGE(0x840000, 0x84ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) // Palette
AM_RANGE(0x860000, 0x86003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs) // Video Registers
AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w) // Sound
AM_RANGE(0xfffc00, 0xffffff) AM_RAM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs) // TMP68301 Registers
ADDRESS_MAP_END
@ -834,36 +793,24 @@ ADDRESS_MAP_END
Penguin Bros
***************************************************************************/
static ADDRESS_MAP_START( penbros_readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM ) // ROM
AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM ) // RAM
AM_RANGE(0x210000, 0x23ffff) AM_READ(SMH_RAM ) // RAM
AM_RANGE(0x300000, 0x30ffff) AM_READ(SMH_RAM ) // RAM
static ADDRESS_MAP_START( penbros_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
AM_RANGE(0x210000, 0x23ffff) AM_RAM // RAM
AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM
AM_RANGE(0x500300, 0x500301) AM_READ_PORT("DSW1") // DSW 1
AM_RANGE(0x500302, 0x500303) AM_READ_PORT("DSW2") // DSW 2
AM_RANGE(0x500300, 0x50030f) AM_WRITE(seta2_sound_bank_w) // Samples Banks
AM_RANGE(0x600000, 0x600001) AM_READ_PORT("P1") // P1
AM_RANGE(0x600002, 0x600003) AM_READ_PORT("P2") // P2
AM_RANGE(0x600004, 0x600005) AM_READ_PORT("SYSTEM") // Coins
AM_RANGE(0x600006, 0x600007) AM_READ(watchdog_reset16_r ) // Watchdog
// AM_RANGE(0x700000, 0x700001) AM_READ(pzlbowl_protection_r ) // Protection
AM_RANGE(0xb00000, 0xb3ffff) AM_READ(SMH_RAM ) // Sprites
AM_RANGE(0xb40000, 0xb4ffff) AM_READ(SMH_RAM ) // Palette
AM_RANGE(0xa00000, 0xa03fff) AM_DEVREAD("x1", seta_sound_word_r ) // Sound
AM_RANGE(0xfffc00, 0xffffff) AM_READ(SMH_RAM ) // TMP68301 Registers
ADDRESS_MAP_END
static ADDRESS_MAP_START( penbros_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM ) // ROM
AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM ) // RAM
AM_RANGE(0x300000, 0x30ffff) AM_WRITE(SMH_RAM ) // RAM
AM_RANGE(0x210000, 0x23ffff) AM_WRITE(SMH_RAM ) // RAM
AM_RANGE(0x500300, 0x50030f) AM_WRITE(seta2_sound_bank_w ) // Samples Banks
AM_RANGE(0x600004, 0x600005) AM_WRITE(pzlbowl_coin_counter_w ) // Coins Counter
AM_RANGE(0xb00000, 0xb3ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size ) // Sprites
AM_RANGE(0xb40000, 0xb4ffff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16 ) // Palette
AM_RANGE(0xb60000, 0xb6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs ) // Video Registers
AM_RANGE(0xa00000, 0xa03fff) AM_DEVWRITE("x1", seta_sound_word_w ) // Sound
AM_RANGE(0xfffc00, 0xffffff) AM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs ) // TMP68301 Registers
AM_RANGE(0x600004, 0x600005) AM_WRITE(pzlbowl_coin_counter_w) // Coins Counter
AM_RANGE(0x600006, 0x600007) AM_READ(watchdog_reset16_r) // Watchdog
// AM_RANGE(0x700000, 0x700001) AM_READ(pzlbowl_protection_r) // Protection
AM_RANGE(0xb00000, 0xb3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) // Sprites
AM_RANGE(0xb40000, 0xb4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) // Palette
AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w) // Sound
AM_RANGE(0xfffc00, 0xffffff) AM_RAM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs) // TMP68301 Registers
ADDRESS_MAP_END
@ -909,7 +856,7 @@ static ADDRESS_MAP_START( samshoot_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE( 0x900000, 0x903fff ) AM_DEVREADWRITE( "x1", seta_sound_word_r, seta_sound_word_w ) // Sound
AM_RANGE( 0xfffd0a, 0xfffd0b ) AM_READ_PORT("DSW2") // parallel data register (DSW 2)
AM_RANGE( 0xfffc00, 0xffffff ) AM_READWRITE( SMH_RAM, tmp68301_regs_w) AM_BASE(&tmp68301_regs ) // TMP68301 Registers
AM_RANGE( 0xfffc00, 0xffffff ) AM_RAM_WRITE( tmp68301_regs_w) AM_BASE(&tmp68301_regs ) // TMP68301 Registers
ADDRESS_MAP_END
@ -1439,7 +1386,7 @@ static INPUT_PORTS_START( mj4simai )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY0") // $600000(0)
PORT_START("P1_KEY0") // $600000(0)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_A )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_E )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_I )
@ -1448,7 +1395,7 @@ static INPUT_PORTS_START( mj4simai )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY1") // $600000(1)
PORT_START("P1_KEY1") // $600000(1)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_B )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_F )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_J )
@ -1457,7 +1404,7 @@ static INPUT_PORTS_START( mj4simai )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_BET )
PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_START("KEY2") // $600000(2)
PORT_START("P1_KEY2") // $600000(2)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_C )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_G )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_K )
@ -1465,14 +1412,14 @@ static INPUT_PORTS_START( mj4simai )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
PORT_BIT( 0xffe0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY3") // $600000(3)
PORT_START("P1_KEY3") // $600000(3)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_D )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_H )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_L )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY4") // $600000(4)
PORT_START("P1_KEY4") // $600000(4)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP )
@ -1481,6 +1428,49 @@ static INPUT_PORTS_START( mj4simai )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL )
PORT_BIT( 0x00c0, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P2_KEY0") // $600000(0)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P2_KEY1") // $600000(1)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2)
PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_START("P2_KEY2") // $600000(2)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2)
PORT_BIT( 0xffe0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P2_KEY3") // $600000(3)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2)
PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P2_KEY4") // $600000(4)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(2)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(2)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(2)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(2)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(2)
PORT_BIT( 0x00c0, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
@ -2284,7 +2274,7 @@ static MACHINE_DRIVER_START( mj4simai )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu",M68000,50000000/3) /* !! TMP68301 @ 16.666666MHz !! */
MDRV_CPU_PROGRAM_MAP(mj4simai_readmem,mj4simai_writemem)
MDRV_CPU_PROGRAM_MAP(mj4simai_map,0)
MDRV_CPU_VBLANK_INT("screen", seta2_interrupt)
MDRV_MACHINE_RESET( tmp68301 )
@ -2318,7 +2308,7 @@ static MACHINE_DRIVER_START( gundamex )
/* basic machine hardware */
MDRV_IMPORT_FROM(mj4simai)
MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_PROGRAM_MAP(gundamex_readmem,gundamex_writemem)
MDRV_CPU_PROGRAM_MAP(gundamex_map,0)
MDRV_NVRAM_HANDLER(93C46_gundamex)
@ -2331,7 +2321,7 @@ static MACHINE_DRIVER_START( grdians )
MDRV_IMPORT_FROM(mj4simai)
MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_PROGRAM_MAP(grdians_readmem,grdians_writemem)
MDRV_CPU_PROGRAM_MAP(grdians_map,0)
/* video hardware */
MDRV_SCREEN_MODIFY("screen")
@ -2344,7 +2334,7 @@ static MACHINE_DRIVER_START( myangel )
/* basic machine hardware */
MDRV_IMPORT_FROM(mj4simai)
MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_PROGRAM_MAP(myangel_readmem,myangel_writemem)
MDRV_CPU_PROGRAM_MAP(myangel_map,0)
/* video hardware */
MDRV_SCREEN_MODIFY("screen")
@ -2359,7 +2349,7 @@ static MACHINE_DRIVER_START( myangel2 )
/* basic machine hardware */
MDRV_IMPORT_FROM(mj4simai)
MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_PROGRAM_MAP(myangel2_readmem,myangel2_writemem)
MDRV_CPU_PROGRAM_MAP(myangel2_map,0)
/* video hardware */
MDRV_SCREEN_MODIFY("screen")
@ -2374,7 +2364,7 @@ static MACHINE_DRIVER_START( pzlbowl )
/* basic machine hardware */
MDRV_IMPORT_FROM(mj4simai)
MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_PROGRAM_MAP(pzlbowl_readmem,pzlbowl_writemem)
MDRV_CPU_PROGRAM_MAP(pzlbowl_map,0)
/* video hardware */
MDRV_SCREEN_MODIFY("screen")
@ -2387,7 +2377,7 @@ static MACHINE_DRIVER_START( penbros )
/* basic machine hardware */
MDRV_IMPORT_FROM(mj4simai)
MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_PROGRAM_MAP(penbros_readmem,penbros_writemem)
MDRV_CPU_PROGRAM_MAP(penbros_map,0)
/* video hardware */
MDRV_SCREEN_MODIFY("screen")

View File

@ -92,24 +92,24 @@ static void sfkick_remap_banks(running_machine *machine)
case 0: /* bios */
{
UINT8 *mem = memory_region(machine, "bios");
memory_set_bankptr (machine, 1, mem);
memory_set_bankptr (machine,2, mem+0x2000);
memory_set_bankptr(machine,1, mem);
memory_set_bankptr(machine,2, mem+0x2000);
}
break;
case 1: /* ext rom */
{
UINT8 *mem = memory_region(machine, "extrom");
memory_set_bankptr (machine,1, mem+0x4000);
memory_set_bankptr (machine,2, mem+0x6000);
memory_set_bankptr(machine,1, mem+0x4000);
memory_set_bankptr(machine,2, mem+0x6000);
}
break;
case 2: /* banked */
{
UINT8 *mem = memory_region(machine, "banked");
memory_set_bankptr (machine,1, mem+0x2000*sfkick_bank[0]);
memory_set_bankptr (machine,2, mem+0x2000*sfkick_bank[1]);
memory_set_bankptr(machine,1, mem+0x2000*sfkick_bank[0]);
memory_set_bankptr(machine,2, mem+0x2000*sfkick_bank[1]);
}
break;
@ -128,8 +128,8 @@ static void sfkick_remap_banks(running_machine *machine)
case 0: /* bios - upper part */
{
UINT8 *mem = memory_region(machine, "bios");
memory_set_bankptr (machine,3, mem+0x4000);
memory_set_bankptr (machine,4, mem+0x6000);
memory_set_bankptr(machine,3, mem+0x4000);
memory_set_bankptr(machine,4, mem+0x6000);
}
break;
@ -145,8 +145,8 @@ static void sfkick_remap_banks(running_machine *machine)
case 2: /* banked */
{
UINT8 *mem = memory_region(machine, "banked");
memory_set_bankptr (machine,3, mem+0x2000*sfkick_bank[2]);
memory_set_bankptr (machine,4, mem+0x2000*sfkick_bank[3]);
memory_set_bankptr(machine,3, mem+0x2000*sfkick_bank[2]);
memory_set_bankptr(machine,4, mem+0x2000*sfkick_bank[3]);
}
break;
}
@ -174,8 +174,8 @@ static void sfkick_remap_banks(running_machine *machine)
case 2: /* banked */
{
UINT8 *mem = memory_region(machine, "banked");
memory_set_bankptr (machine,5, mem+0x2000*sfkick_bank[4]);
memory_set_bankptr (machine,6, mem+0x2000*sfkick_bank[5]);
memory_set_bankptr(machine,5, mem+0x2000*sfkick_bank[4]);
memory_set_bankptr(machine,6, mem+0x2000*sfkick_bank[5]);
}
break;
}
@ -195,8 +195,8 @@ static void sfkick_remap_banks(running_machine *machine)
case 2: /* banked */
{
UINT8 *mem = memory_region(machine, "banked");
memory_set_bankptr (machine,7, mem+0x2000*sfkick_bank[6]);
memory_set_bankptr (machine,8, mem+0x2000*sfkick_bank[7]);
memory_set_bankptr(machine,7, mem+0x2000*sfkick_bank[6]);
memory_set_bankptr(machine,8, mem+0x2000*sfkick_bank[7]);
}
break;
@ -293,25 +293,22 @@ static WRITE8_HANDLER(page3_w)
}
}
static ADDRESS_MAP_START (readmem, ADDRESS_SPACE_PROGRAM, 8)
AM_RANGE( 0x0000, 0x1fff) AM_READ( SMH_BANK(1) )
AM_RANGE( 0x2000, 0x3fff) AM_READ( SMH_BANK(2) )
AM_RANGE( 0x4000, 0x5fff) AM_READ( SMH_BANK(3) )
AM_RANGE( 0x6000, 0x7fff) AM_READ( SMH_BANK(4) )
AM_RANGE( 0x8000, 0x9fff) AM_READ( SMH_BANK(5) )
AM_RANGE( 0xa000, 0xbfff) AM_READ( SMH_BANK(6) )
AM_RANGE( 0xc000, 0xdfff) AM_READ( SMH_BANK(7) )
AM_RANGE( 0xe000, 0xffff) AM_READ( SMH_BANK(8) )
ADDRESS_MAP_END
static ADDRESS_MAP_START( writemem , ADDRESS_SPACE_PROGRAM, 8)
static ADDRESS_MAP_START( sfkick_map, ADDRESS_SPACE_PROGRAM, 8)
AM_RANGE( 0x0000, 0x1fff) AM_ROMBANK(1)
AM_RANGE( 0x2000, 0x3fff) AM_ROMBANK(2)
AM_RANGE( 0x4000, 0x5fff) AM_ROMBANK(3)
AM_RANGE( 0x6000, 0x7fff) AM_ROMBANK(4)
AM_RANGE( 0x8000, 0x9fff) AM_ROMBANK(5)
AM_RANGE( 0xa000, 0xbfff) AM_ROMBANK(6)
AM_RANGE( 0xc000, 0xdfff) AM_ROMBANK(7)
AM_RANGE( 0xe000, 0xffff) AM_ROMBANK(8)
AM_RANGE( 0x0000, 0x3fff) AM_WRITE( page0_w )
AM_RANGE( 0x4000, 0x7fff) AM_WRITE( page1_w )
AM_RANGE( 0x8000, 0xbfff) AM_WRITE( page2_w )
AM_RANGE( 0xc000, 0xffff) AM_WRITE( page3_w )
ADDRESS_MAP_END
static ADDRESS_MAP_START (main_io, ADDRESS_SPACE_IO, 8)
static ADDRESS_MAP_START( sfkick_io_map, ADDRESS_SPACE_IO, 8)
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE( 0xa0, 0xa7) AM_WRITE( soundlatch_w )
@ -322,12 +319,12 @@ static ADDRESS_MAP_START (main_io, ADDRESS_SPACE_IO, 8)
AM_RANGE( 0xa8, 0xab) AM_DEVREADWRITE("ppi8255", ppi8255_r, ppi8255_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_mem, ADDRESS_SPACE_PROGRAM, 8 )
static ADDRESS_MAP_START( sfkick_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xc000, 0xc7ff) AM_RAM
ADDRESS_MAP_END
static ADDRESS_MAP_START (sound_io, ADDRESS_SPACE_IO, 8)
static ADDRESS_MAP_START( sfkick_sound_io_map, ADDRESS_SPACE_IO, 8)
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(soundlatch_r)
AM_RANGE(0x04, 0x05) AM_DEVREADWRITE("ym1", ym2203_r, ym2203_w)
@ -460,15 +457,15 @@ static const ym2203_interface ym2203_config =
static MACHINE_DRIVER_START( sfkick )
MDRV_CPU_ADD("maincpu",Z80,MASTER_CLOCK/6)
MDRV_CPU_PROGRAM_MAP(readmem,writemem)
MDRV_CPU_IO_MAP(main_io,0)
MDRV_CPU_PROGRAM_MAP(sfkick_map,0)
MDRV_CPU_IO_MAP(sfkick_io_map,0)
MDRV_CPU_VBLANK_INT_HACK(sfkick_interrupt,262)
MDRV_QUANTUM_TIME(HZ(60000))
MDRV_CPU_ADD("soundcpu",Z80,MASTER_CLOCK/6)
MDRV_CPU_PROGRAM_MAP(sound_mem,0)
MDRV_CPU_IO_MAP(sound_io,0)
MDRV_CPU_PROGRAM_MAP(sfkick_sound_map,0)
MDRV_CPU_IO_MAP(sfkick_sound_io_map,0)
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)

View File

@ -56,13 +56,13 @@ static READ16_HANDLER( shangha3_prot_r )
static int count;
static const int result[] = { 0x0,0x1,0x3,0x7,0xf,0xe,0xc,0x8,0x0};
logerror("PC %04x: read 20004e\n",cpu_get_pc(space->cpu));
logerror("PC %04x: read 20004e\n",cpu_get_pc(space->cpu));
return result[count++ % 9];
}
static WRITE16_HANDLER( shangha3_prot_w )
{
logerror("PC %04x: write %02x to 20004e\n",cpu_get_pc(space->cpu),data);
logerror("PC %04x: write %02x to 20004e\n",cpu_get_pc(space->cpu),data);
}
@ -126,89 +126,62 @@ static WRITE16_HANDLER( heberpop_sound_command_w )
static ADDRESS_MAP_START( shangha3_readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
AM_RANGE(0x100000, 0x100fff) AM_READ(SMH_RAM)
static ADDRESS_MAP_START( shangha3_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(paletteram16_RRRRRGGGGGBBBBBx_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x200000, 0x200001) AM_READ_PORT("INPUTS")
AM_RANGE(0x200002, 0x200003) AM_READ_PORT("SYSTEM")
AM_RANGE(0x20001e, 0x20001f) AM_DEVREAD8("ay", ay8910_r, 0x00ff)
AM_RANGE(0x20004e, 0x20004f) AM_READ(shangha3_prot_r)
AM_RANGE(0x20006e, 0x20006f) AM_DEVREAD8("oki", okim6295_r, 0x00ff)
AM_RANGE(0x300000, 0x30ffff) AM_READ(SMH_RAM)
ADDRESS_MAP_END
static ADDRESS_MAP_START( shangha3_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
AM_RANGE(0x100000, 0x100fff) AM_WRITE(paletteram16_RRRRRGGGGGBBBBBx_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x200008, 0x200009) AM_WRITE(shangha3_blitter_go_w)
AM_RANGE(0x20000a, 0x20000b) AM_WRITENOP /* irq ack? */
AM_RANGE(0x20000c, 0x20000d) AM_WRITE(shangha3_coinctrl_w)
AM_RANGE(0x20001e, 0x20001f) AM_DEVREAD8("ay", ay8910_r, 0x00ff)
AM_RANGE(0x20002e, 0x20002f) AM_DEVWRITE8("ay", ay8910_data_w, 0x00ff)
AM_RANGE(0x20003e, 0x20003f) AM_DEVWRITE8("ay", ay8910_address_w, 0x00ff)
AM_RANGE(0x20004e, 0x20004f) AM_WRITE(shangha3_prot_w)
AM_RANGE(0x20006e, 0x20006f) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
AM_RANGE(0x300000, 0x30ffff) AM_WRITE(SMH_RAM) AM_BASE(&shangha3_ram) AM_SIZE(&shangha3_ram_size) /* gfx & work ram */
AM_RANGE(0x20004e, 0x20004f) AM_READWRITE(shangha3_prot_r,shangha3_prot_w)
AM_RANGE(0x20006e, 0x20006f) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff)
AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_BASE(&shangha3_ram) AM_SIZE(&shangha3_ram_size) /* gfx & work ram */
AM_RANGE(0x340000, 0x340001) AM_WRITE(shangha3_flipscreen_w)
AM_RANGE(0x360000, 0x360001) AM_WRITE(shangha3_gfxlist_addr_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( heberpop_readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
AM_RANGE(0x100000, 0x100fff) AM_READ(SMH_RAM)
static ADDRESS_MAP_START( heberpop_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(paletteram16_RRRRRGGGGGBBBBBx_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x200000, 0x200001) AM_READ_PORT("INPUTS")
AM_RANGE(0x200002, 0x200003) AM_READ_PORT("SYSTEM")
AM_RANGE(0x200004, 0x200005) AM_READ_PORT("DSW")
AM_RANGE(0x300000, 0x30ffff) AM_READ(SMH_RAM)
AM_RANGE(0x800000, 0xb7ffff) AM_READ(heberpop_gfxrom_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( heberpop_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
AM_RANGE(0x100000, 0x100fff) AM_WRITE(paletteram16_RRRRRGGGGGBBBBBx_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x200008, 0x200009) AM_WRITE(shangha3_blitter_go_w)
AM_RANGE(0x20000a, 0x20000b) AM_WRITENOP /* irq ack? */
AM_RANGE(0x20000c, 0x20000d) AM_WRITE(heberpop_coinctrl_w)
AM_RANGE(0x20000e, 0x20000f) AM_WRITE(heberpop_sound_command_w)
AM_RANGE(0x300000, 0x30ffff) AM_WRITE(SMH_RAM) AM_BASE(&shangha3_ram) AM_SIZE(&shangha3_ram_size) /* gfx & work ram */
AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_BASE(&shangha3_ram) AM_SIZE(&shangha3_ram_size) /* gfx & work ram */
AM_RANGE(0x340000, 0x340001) AM_WRITE(shangha3_flipscreen_w)
AM_RANGE(0x360000, 0x360001) AM_WRITE(shangha3_gfxlist_addr_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( blocken_readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
AM_RANGE(0x100000, 0x100001) AM_READ_PORT("INPUTS")
AM_RANGE(0x100002, 0x100003) AM_READ_PORT("SYSTEM")
AM_RANGE(0x100004, 0x100005) AM_READ_PORT("DSW")
AM_RANGE(0x200000, 0x200fff) AM_READ(SMH_RAM)
AM_RANGE(0x300000, 0x30ffff) AM_READ(SMH_RAM)
AM_RANGE(0x800000, 0xb7ffff) AM_READ(heberpop_gfxrom_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( blocken_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
static ADDRESS_MAP_START( blocken_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x100001) AM_READ_PORT("INPUTS")
AM_RANGE(0x100002, 0x100003) AM_READ_PORT("SYSTEM")
AM_RANGE(0x100004, 0x100005) AM_READ_PORT("DSW")
AM_RANGE(0x100008, 0x100009) AM_WRITE(shangha3_blitter_go_w)
AM_RANGE(0x10000a, 0x10000b) AM_WRITENOP /* irq ack? */
AM_RANGE(0x10000c, 0x10000d) AM_WRITE(blocken_coinctrl_w)
AM_RANGE(0x10000e, 0x10000f) AM_WRITE(heberpop_sound_command_w)
AM_RANGE(0x200000, 0x200fff) AM_WRITE(paletteram16_RRRRRGGGGGBBBBBx_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x300000, 0x30ffff) AM_WRITE(SMH_RAM) AM_BASE(&shangha3_ram) AM_SIZE(&shangha3_ram_size) /* gfx & work ram */
AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(paletteram16_RRRRRGGGGGBBBBBx_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_BASE(&shangha3_ram) AM_SIZE(&shangha3_ram_size) /* gfx & work ram */
AM_RANGE(0x340000, 0x340001) AM_WRITE(shangha3_flipscreen_w)
AM_RANGE(0x360000, 0x360001) AM_WRITE(shangha3_gfxlist_addr_w)
AM_RANGE(0x800000, 0xb7ffff) AM_READ(heberpop_gfxrom_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( heberpop_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xf7ff) AM_READ(SMH_ROM)
AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
static ADDRESS_MAP_START( heberpop_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xf7ff) AM_ROM
AM_RANGE(0xf800, 0xffff) AM_RAM
ADDRESS_MAP_END
static ADDRESS_MAP_START( heberpop_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xf7ff) AM_WRITE(SMH_ROM)
AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM)
ADDRESS_MAP_END
static ADDRESS_MAP_START( heberpop_sound_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ym", ym3438_r, ym3438_w)
@ -507,11 +480,11 @@ static MACHINE_DRIVER_START( shangha3 )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", M68000, 8000000)
MDRV_CPU_PROGRAM_MAP(shangha3_readmem,shangha3_writemem)
MDRV_CPU_PROGRAM_MAP(shangha3_map,0)
MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
/* video hardware */
MDRV_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS )
MDRV_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
@ -543,11 +516,11 @@ static MACHINE_DRIVER_START( heberpop )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", M68000, 8000000)
MDRV_CPU_PROGRAM_MAP(heberpop_readmem,heberpop_writemem)
MDRV_CPU_PROGRAM_MAP(heberpop_map,0)
MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
MDRV_CPU_ADD("audiocpu", Z80, 6000000) /* 6 MHz ??? */
MDRV_CPU_PROGRAM_MAP(heberpop_sound_readmem,heberpop_sound_writemem)
MDRV_CPU_PROGRAM_MAP(heberpop_sound_map,0)
MDRV_CPU_IO_MAP(heberpop_sound_io_map,0) /* NMI triggered by YM3438 */
/* video hardware */
@ -584,11 +557,11 @@ static MACHINE_DRIVER_START( blocken )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", M68000, 8000000)
MDRV_CPU_PROGRAM_MAP(blocken_readmem,blocken_writemem)
MDRV_CPU_PROGRAM_MAP(blocken_map,0)
MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
MDRV_CPU_ADD("audiocpu", Z80, 6000000) /* 6 MHz ??? */
MDRV_CPU_PROGRAM_MAP(heberpop_sound_readmem,heberpop_sound_writemem)
MDRV_CPU_PROGRAM_MAP(heberpop_sound_map,0)
MDRV_CPU_IO_MAP(heberpop_sound_io_map,0) /* NMI triggered by YM3438 */
/* video hardware */
@ -698,6 +671,7 @@ static DRIVER_INIT( shangha3 )
{
shangha3_do_shadows = 1;
}
static DRIVER_INIT( heberpop )
{
shangha3_do_shadows = 0;