mirror of
https://github.com/holub/mame
synced 2025-05-23 14:19:01 +03:00
New Clones Added
---------------- Big Twin (No Girls Conversion) [Andrew Welburn, Pierpaolo Prazzoli] uploaded to: roms\uploads\bigtwinb.zip if someone wants to write a pcb layout, there's a photo inside the zip
This commit is contained in:
parent
fa9548362b
commit
1c416b4900
@ -1,6 +1,6 @@
|
||||
/***************************************************************************
|
||||
|
||||
Big Twins
|
||||
Big Twin
|
||||
World Beach Volley
|
||||
Excelsior
|
||||
Hot Mind
|
||||
@ -24,6 +24,8 @@ Hard Times was hacked from Blood Bros. program code.
|
||||
Hot Mind is a romswap kit for Hard Times pcb, in fact it was found in a pcb
|
||||
marked as HARD TIMES 28-06-94.
|
||||
|
||||
The version of Big Twin without girls seems a conversion of Hard Times pcb.
|
||||
|
||||
|
||||
Original Bugs:
|
||||
- World Beach Volley histogram functions don't work.
|
||||
@ -243,6 +245,26 @@ static ADDRESS_MAP_START( bigtwin_main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0xff0000, 0xffffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( bigtwinb_main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
||||
AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(hrdtimes_bgvideoram_w) AM_BASE_MEMBER(playmark_state, videoram3)
|
||||
AM_RANGE(0x104000, 0x107fff) AM_RAM_WRITE(hrdtimes_fgvideoram_w) AM_BASE_MEMBER(playmark_state, videoram2)
|
||||
AM_RANGE(0x108000, 0x10ffff) AM_RAM_WRITE(hrdtimes_txvideoram_w) AM_BASE_MEMBER(playmark_state, videoram1)
|
||||
AM_RANGE(0x110000, 0x11000d) AM_WRITE(hrdtimes_scroll_w)
|
||||
AM_RANGE(0x201000, 0x2013ff) AM_RAM AM_BASE_SIZE_MEMBER(playmark_state, spriteram, spriteram_size)
|
||||
AM_RANGE(0x280000, 0x2807ff) AM_RAM_WRITE(bigtwin_paletteram_w) AM_BASE_GENERIC(paletteram)
|
||||
AM_RANGE(0x300010, 0x300011) AM_READ_PORT("SYSTEM")
|
||||
AM_RANGE(0x300012, 0x300013) AM_READ_PORT("P1")
|
||||
AM_RANGE(0x300014, 0x300015) AM_READ_PORT("P2")
|
||||
AM_RANGE(0x30001a, 0x30001b) AM_READ_PORT("DSW1")
|
||||
AM_RANGE(0x30001c, 0x30001d) AM_READ_PORT("DSW2")
|
||||
AM_RANGE(0x30001e, 0x30001f) AM_WRITE(playmark_snd_command_w)
|
||||
AM_RANGE(0x304000, 0x304001) AM_WRITENOP /* watchdog? irq ack? */
|
||||
AM_RANGE(0xff0000, 0xffffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( wbeachvl_main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x000000, 0x07ffff) AM_ROM
|
||||
AM_RANGE(0x440000, 0x440fff) AM_RAM AM_BASE_SIZE_MEMBER(playmark_state, spriteram, spriteram_size)
|
||||
@ -437,6 +459,105 @@ static INPUT_PORTS_START( bigtwin )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static INPUT_PORTS_START( bigtwinb )
|
||||
PORT_START("SYSTEM")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("P1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
|
||||
|
||||
PORT_START("P2")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
|
||||
|
||||
PORT_START("DSW1")
|
||||
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Language ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( English ) )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Italian ) )
|
||||
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x30, 0x00, DEF_STR( Difficulty ) )
|
||||
// PORT_DIPSETTING( 0x20, DEF_STR( Easy ) ) /* Seems same as Medium */
|
||||
PORT_DIPSETTING( 0x30, DEF_STR( Medium ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Hard ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
|
||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
PORT_START("DSW2")
|
||||
PORT_DIPNAME( 0x01, 0x01, "Coin Mode" )
|
||||
PORT_DIPSETTING( 0x01, "Mode 1" )
|
||||
PORT_DIPSETTING( 0x00, "Mode 2" )
|
||||
PORT_DIPNAME( 0x1e, 0x1e, "Coinage Mode 1" ) PORT_CONDITION("DSW2", 0x01, PORTCOND_EQUALS, 0x01)
|
||||
PORT_DIPSETTING( 0x14, DEF_STR( 6C_1C ) )
|
||||
PORT_DIPSETTING( 0x16, DEF_STR( 5C_1C ) )
|
||||
PORT_DIPSETTING( 0x18, DEF_STR( 4C_1C ) )
|
||||
PORT_DIPSETTING( 0x1a, DEF_STR( 3C_1C ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( 8C_3C ) )
|
||||
PORT_DIPSETTING( 0x1c, DEF_STR( 2C_1C ) )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( 5C_3C ) )
|
||||
PORT_DIPSETTING( 0x06, DEF_STR( 3C_2C ) )
|
||||
PORT_DIPSETTING( 0x1e, DEF_STR( 1C_1C ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( 2C_3C ) )
|
||||
PORT_DIPSETTING( 0x12, DEF_STR( 1C_2C ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( 1C_3C ) )
|
||||
PORT_DIPSETTING( 0x0e, DEF_STR( 1C_4C ) )
|
||||
PORT_DIPSETTING( 0x0c, DEF_STR( 1C_5C ) )
|
||||
PORT_DIPSETTING( 0x0a, DEF_STR( 1C_6C ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
|
||||
PORT_DIPNAME( 0x06, 0x06, "Coin A Mode 2" ) PORT_CONDITION("DSW2", 0x01, PORTCOND_NOTEQUALS, 0x01)
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( 5C_1C ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) )
|
||||
PORT_DIPSETTING( 0x06, DEF_STR( 1C_1C ) )
|
||||
PORT_DIPNAME( 0x18, 0x18, "Coin B Mode 2" ) PORT_CONDITION("DSW2", 0x01, PORTCOND_NOTEQUALS, 0x01)
|
||||
PORT_DIPSETTING( 0x18, DEF_STR( 1C_2C ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( 1C_3C ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( 1C_5C ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) )
|
||||
PORT_DIPNAME( 0x20, 0x20, "Minimum Credits to Start" )
|
||||
PORT_DIPSETTING( 0x20, "1" )
|
||||
PORT_DIPSETTING( 0x00, "2" )
|
||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( wbeachvl )
|
||||
PORT_START("SYSTEM")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
|
||||
@ -906,6 +1027,12 @@ static GFXDECODE_START( hrdtimes )
|
||||
GFXDECODE_ENTRY( "gfx1", 0, hrdtimes_charlayout, 0x100, 8 ) /* colors 0x100-0x17f */
|
||||
GFXDECODE_END
|
||||
|
||||
static GFXDECODE_START( bigtwinb )
|
||||
GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0x300, 16 ) /* colors 0x300-0x3ff */
|
||||
GFXDECODE_ENTRY( "gfx1", 0, hrdtimes_tilelayout, 0x000, 16 ) /* colors 0x000-0x0ff */
|
||||
GFXDECODE_ENTRY( "gfx1", 0, hrdtimes_charlayout, 0x200, 16 ) /* colors 0x200-0x2ff */
|
||||
GFXDECODE_END
|
||||
|
||||
static MACHINE_START( playmark )
|
||||
{
|
||||
playmark_state *state = machine->driver_data<playmark_state>();
|
||||
@ -981,6 +1108,40 @@ static MACHINE_CONFIG_START( bigtwin, playmark_state )
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( bigtwinb, playmark_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz */
|
||||
MCFG_CPU_PROGRAM_MAP(bigtwinb_main_map)
|
||||
MCFG_CPU_VBLANK_INT("screen", irq2_line_hold)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", PIC16C57, 12000000) /* 3MHz */
|
||||
/* Program and Data Maps are internal to the MCU */
|
||||
MCFG_CPU_IO_MAP(playmark_sound_io_map)
|
||||
|
||||
MCFG_MACHINE_START(playmark)
|
||||
MCFG_MACHINE_RESET(playmark)
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE(58)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
|
||||
MCFG_SCREEN_SIZE(64*8, 64*8)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
|
||||
MCFG_SCREEN_UPDATE(bigtwinb)
|
||||
|
||||
MCFG_GFXDECODE(bigtwinb)
|
||||
MCFG_PALETTE_LENGTH(1024)
|
||||
|
||||
MCFG_VIDEO_START(bigtwinb)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( wbeachvl, playmark_state )
|
||||
|
||||
@ -1162,6 +1323,39 @@ ROM_START( bigtwin )
|
||||
ROM_LOAD( "1.013", 0x00000, 0x40000, CRC(ff6671dc) SHA1(517941946a3edfc2da0b7aa8a106ebb4ae849beb) )
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( bigtwinb )
|
||||
ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 code */
|
||||
ROM_LOAD16_BYTE( "2.u67", 0x00000, 0x20000, CRC(f5cdf1a9) SHA1(974328cf2b4ec5834a519e3300ee1ad8bc4d5c04) )
|
||||
ROM_LOAD16_BYTE( "3.u66", 0x00001, 0x20000, CRC(084e990f) SHA1(d7c2e08c7f7c7b453dd19dcf1f30bad46d943c8a) )
|
||||
|
||||
ROM_REGION( 0x1000, "audiocpu", ROMREGION_ERASE00 ) /* sound (PIC16C57) */
|
||||
// ROM_LOAD( "16c57hs.bin", 0x0000, 0x1000, CRC(b4c95cc3) SHA1(7fc9b141e7782aa5c17310ee06db99d884537c30) )
|
||||
/* ROM will be copied here by the init code from "user1" */
|
||||
|
||||
ROM_REGION( 0x3000, "user1", 0 )
|
||||
ROM_LOAD( "16c57hs.015", 0x0000, 0x2d4c, CRC(c07e9375) SHA1(7a6714ab888ea6e37bc037bc7419f0998868cfce) ) /* 16C57 .HEX dump, to be converted */
|
||||
|
||||
ROM_REGION( 0x200000, "gfx1", 0 )
|
||||
ROM_LOAD16_BYTE( "4.u36", 0x000000, 0x20000, CRC(99aaeacc) SHA1(0281237722d5a94fb9831616ae2ffc8288e78e2c) )
|
||||
ROM_CONTINUE( 0x080000, 0x20000 )
|
||||
ROM_LOAD16_BYTE( "5.u42", 0x000001, 0x20000, CRC(5c1dfd72) SHA1(31fab4d3bd4e8ff5a16daeaff0ccaa4fc8f60c92) )
|
||||
ROM_CONTINUE( 0x080001, 0x20000 )
|
||||
ROM_LOAD16_BYTE( "6.u39", 0x100000, 0x20000, CRC(788f2df6) SHA1(186f4f9f79c80dc5c6faa9eddc4b3c98b52b374d) )
|
||||
ROM_CONTINUE( 0x180000, 0x20000 )
|
||||
ROM_LOAD16_BYTE( "7.u45", 0x100001, 0x20000, CRC(aedb2e6d) SHA1(775e13d328c8ee3c36b9d77ad49fa5a092b85a95) )
|
||||
ROM_CONTINUE( 0x180001, 0x20000 )
|
||||
|
||||
ROM_REGION( 0x80000, "gfx2", 0 )
|
||||
ROM_LOAD( "11.u86", 0x00000, 0x20000, CRC(2749644d) SHA1(f506ed1a14ee411eda8a7e639f5572e35b89b13f) )
|
||||
ROM_LOAD( "10.u85", 0x20000, 0x20000, CRC(1d1897af) SHA1(0ad00906b94443d7ceef383717b39c6aa8cca241) )
|
||||
ROM_LOAD( "9.u84", 0x40000, 0x20000, CRC(2a03432e) SHA1(44722b83093211d88460cbcd9e9c0b638d24ad3e) )
|
||||
ROM_LOAD( "8.u83", 0x60000, 0x20000, CRC(2c980c4c) SHA1(77af29a1f5d4302650915f4a7daf2918a2519a6e) )
|
||||
|
||||
ROM_REGION( 0x40000, "oki", 0 ) /* OKIM6295 samples */
|
||||
ROM_LOAD( "io13.bin", 0x00000, 0x40000, CRC(ff6671dc) SHA1(517941946a3edfc2da0b7aa8a106ebb4ae849beb) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( wbeachvl )
|
||||
ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */
|
||||
ROM_LOAD16_BYTE( "wbv_02.bin", 0x000000, 0x40000, CRC(c7cca29e) SHA1(03af361081d688c4204a95f7f5babcc598b72c23) )
|
||||
@ -1513,6 +1707,7 @@ static DRIVER_INIT( bigtwin )
|
||||
}
|
||||
|
||||
GAME( 1995, bigtwin, 0, bigtwin, bigtwin, bigtwin, ROT0, "Playmark", "Big Twin", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
|
||||
GAME( 1995, bigtwinb, bigtwin, bigtwinb, bigtwinb, bigtwin, ROT0, "Playmark", "Big Twin (No Girls Conversion)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
|
||||
GAME( 1995, wbeachvl, 0, wbeachvl, wbeachvl, 0, ROT0, "Playmark", "World Beach Volley (set 1)", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
|
||||
GAME( 1995, wbeachvl2, wbeachvl, wbeachvl, wbeachvl, 0, ROT0, "Playmark", "World Beach Volley (set 2)", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
|
||||
GAME( 1996, excelsr, 0, excelsr, excelsr, bigtwin, ROT0, "Playmark", "Excelsior", GAME_SUPPORTS_SAVE )
|
||||
|
@ -58,12 +58,14 @@ WRITE16_HANDLER( excelsr_scroll_w );
|
||||
WRITE16_HANDLER( hrdtimes_scroll_w );
|
||||
|
||||
VIDEO_START( bigtwin );
|
||||
VIDEO_START( bigtwinb );
|
||||
VIDEO_START( wbeachvl );
|
||||
VIDEO_START( excelsr );
|
||||
VIDEO_START( hotmind );
|
||||
VIDEO_START( hrdtimes );
|
||||
|
||||
SCREEN_UPDATE( bigtwin );
|
||||
SCREEN_UPDATE( bigtwinb );
|
||||
SCREEN_UPDATE( wbeachvl );
|
||||
SCREEN_UPDATE( excelsr );
|
||||
SCREEN_UPDATE( hrdtimes );
|
||||
|
@ -8257,6 +8257,7 @@ Other Sun games
|
||||
DRIVER( magicstk ) /* (c) 1995 */
|
||||
DRIVER( hotminda ) /* (c) 1995 */
|
||||
DRIVER( bigtwin ) /* (c) 1995 */
|
||||
DRIVER( bigtwinb ) /* (c) 1995 */
|
||||
DRIVER( wbeachvl ) /* (c) 1995 */
|
||||
DRIVER( wbeachvl2 ) /* (c) 1995 */
|
||||
DRIVER( excelsr ) /* (c) 1995 */
|
||||
|
@ -80,6 +80,15 @@ static TILE_GET_INFO( hrdtimes_get_tx_tile_info )
|
||||
SET_TILE_INFO(2,code + state->txt_tile_offset, colr >> 13, 0);
|
||||
}
|
||||
|
||||
static TILE_GET_INFO( bigtwinb_get_tx_tile_info )
|
||||
{
|
||||
playmark_state *state = machine->driver_data<playmark_state>();
|
||||
int code = state->videoram1[tile_index] & 0x0fff;
|
||||
int colr = state->videoram1[tile_index] & 0xf000;
|
||||
|
||||
SET_TILE_INFO(2,code + state->txt_tile_offset, colr >> 12, 0);
|
||||
}
|
||||
|
||||
static TILE_GET_INFO( hrdtimes_get_fg_tile_info )
|
||||
{
|
||||
playmark_state *state = machine->driver_data<playmark_state>();
|
||||
@ -123,6 +132,29 @@ VIDEO_START( bigtwin )
|
||||
}
|
||||
|
||||
|
||||
VIDEO_START( bigtwinb )
|
||||
{
|
||||
playmark_state *state = machine->driver_data<playmark_state>();
|
||||
|
||||
state->tx_tilemap = tilemap_create(machine, bigtwinb_get_tx_tile_info,tilemap_scan_rows, 8, 8, 64, 64);
|
||||
state->fg_tilemap = tilemap_create(machine, hrdtimes_get_fg_tile_info,tilemap_scan_rows, 16, 16, 32, 32);
|
||||
state->bg_tilemap = tilemap_create(machine, hrdtimes_get_bg_tile_info,tilemap_scan_rows, 16, 16, 32, 32);
|
||||
|
||||
tilemap_set_transparent_pen(state->tx_tilemap, 0);
|
||||
tilemap_set_transparent_pen(state->fg_tilemap, 0);
|
||||
|
||||
tilemap_set_scrolldx(state->bg_tilemap, -4, -4);
|
||||
|
||||
state->xoffset = 1;
|
||||
state->yoffset = 0;
|
||||
state->txt_tile_offset = 0x8000;
|
||||
|
||||
state->pri_masks[0] = 0;
|
||||
state->pri_masks[1] = 0;
|
||||
state->pri_masks[2] = 0;
|
||||
}
|
||||
|
||||
|
||||
VIDEO_START( wbeachvl )
|
||||
{
|
||||
playmark_state *state = machine->driver_data<playmark_state>();
|
||||
@ -407,6 +439,44 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void bigtwinb_draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int codeshift )
|
||||
{
|
||||
playmark_state *state = machine->driver_data<playmark_state>();
|
||||
int offs, start_offset = state->spriteram_size / 2 - 4;
|
||||
int height = machine->gfx[0]->height;
|
||||
UINT16 *spriteram = state->spriteram;
|
||||
|
||||
// find the "end of list" to draw the sprites in reverse order
|
||||
for (offs = 4; offs < state->spriteram_size / 2; offs += 4)
|
||||
{
|
||||
if (spriteram[offs + 3 - 4] == 0x2000) /* end of list marker */
|
||||
{
|
||||
start_offset = offs - 4;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (offs = start_offset; offs >= 4; offs -= 4)
|
||||
{
|
||||
int sx, sy, code, color, flipx;
|
||||
|
||||
sy = spriteram[offs + 3 - 4]; /* -4? what the... ??? */
|
||||
|
||||
flipx = sy & 0x4000;
|
||||
sx = (spriteram[offs + 1] & 0x01ff) - 16 - 7;
|
||||
sy = (256 - 8 - height - sy) & 0xff;
|
||||
code = spriteram[offs + 2] >> codeshift;
|
||||
color = ((spriteram[offs + 1] & 0xf000) >> 12);
|
||||
|
||||
drawgfx_transpen(bitmap,cliprect,machine->gfx[0],
|
||||
code,
|
||||
color,
|
||||
flipx,0,
|
||||
sx + state->xoffset,sy + state->yoffset, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void draw_bitmap( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
|
||||
{
|
||||
playmark_state *state = machine->driver_data<playmark_state>();
|
||||
@ -462,6 +532,24 @@ SCREEN_UPDATE( bigtwin )
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
SCREEN_UPDATE( bigtwinb )
|
||||
{
|
||||
playmark_state *state = screen->machine->driver_data<playmark_state>();
|
||||
|
||||
// video enabled
|
||||
if (state->scroll[6] & 1)
|
||||
{
|
||||
tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
|
||||
tilemap_draw(bitmap, cliprect, state->fg_tilemap, 0, 0);
|
||||
bigtwinb_draw_sprites(screen->machine, bitmap, cliprect, 4);
|
||||
tilemap_draw(bitmap, cliprect, state->tx_tilemap, 0, 0);
|
||||
}
|
||||
else
|
||||
bitmap_fill(bitmap, cliprect, get_black_pen(screen->machine));
|
||||
return 0;
|
||||
}
|
||||
|
||||
SCREEN_UPDATE( excelsr )
|
||||
{
|
||||
playmark_state *state = screen->machine->driver_data<playmark_state>();
|
||||
|
Loading…
Reference in New Issue
Block a user