reduce some code duplication, preparation for creating a new device (nw)

This commit is contained in:
David Haywood 2013-08-13 17:02:57 +00:00
parent 1d3020a18f
commit 2130adc105
8 changed files with 796 additions and 1107 deletions

3
.gitattributes vendored
View File

@ -3980,7 +3980,6 @@ src/mame/drivers/wpc_flip2.c svneol=native#text/plain
src/mame/drivers/wpc_s.c svneol=native#text/plain
src/mame/drivers/wrally.c svneol=native#text/plain
src/mame/drivers/wwfsstar.c svneol=native#text/plain
src/mame/drivers/wwfwfest.c svneol=native#text/plain
src/mame/drivers/xain.c svneol=native#text/plain
src/mame/drivers/xexex.c svneol=native#text/plain
src/mame/drivers/xmen.c svneol=native#text/plain
@ -4690,7 +4689,6 @@ src/mame/includes/wiz.h svneol=native#text/plain
src/mame/includes/wolfpack.h svneol=native#text/plain
src/mame/includes/wrally.h svneol=native#text/plain
src/mame/includes/wwfsstar.h svneol=native#text/plain
src/mame/includes/wwfwfest.h svneol=native#text/plain
src/mame/includes/xain.h svneol=native#text/plain
src/mame/includes/xexex.h svneol=native#text/plain
src/mame/includes/xmen.h svneol=native#text/plain
@ -6055,7 +6053,6 @@ src/mame/video/wiz.c svneol=native#text/plain
src/mame/video/wolfpack.c svneol=native#text/plain
src/mame/video/wrally.c svneol=native#text/plain
src/mame/video/wwfsstar.c svneol=native#text/plain
src/mame/video/wwfwfest.c svneol=native#text/plain
src/mame/video/xain.c svneol=native#text/plain
src/mame/video/xevious.c svneol=native#text/plain
src/mame/video/xexex.c svneol=native#text/plain

View File

@ -127,6 +127,48 @@ ROMs (All ROMs are 27C010 EPROM. - means not populated)
- IC47
- IC48
Wrestlefest
Technos 1991
TA-0031
68000-12
31J0_IC1 6264 6264 31A14-2 31A13-2 6264 6264 31A12-0 24MHz
31J1_IC2
TJ-002 TJ-004
6264 SW1
28MHz SW2
SW3
61C16-35
61C16-35 61C16-35
31J2_IC8
31J3_IC9
31J4_IC10
31J5_IC11
31J6_IC12
31J7_IC13
31J8_IC14 TJ-003 31A11-2 M6295 31J10_IC73
31J9_IC15 61C16-35 61C16-35 Z80 YM2151
Clock Crystals:
X1 - 28.000 MHz
X2 - 3.579545 MHz (for Z80)
X3 - 24.000 MHz (for 68000)
X4 - 1.056 MHz (not used, initially intended for OKI6295?)
The mask roms at IC1 and IC2 have the same pinouts as a MX27C4100 or M27C400
except pin 1 is not A17 but instead not used (not connected).
******************************************************************/
/*
@ -145,8 +187,9 @@ ROMs (All ROMs are 27C010 EPROM. - means not populated)
#include "sound/okim6295.h"
#include "includes/ddragon3.h"
#define PIXEL_CLOCK (XTAL_28MHz / 4)
#define MASTER_CLOCK XTAL_24MHz
#define CPU_CLOCK MASTER_CLOCK / 2
#define PIXEL_CLOCK MASTER_CLOCK / 4
/*************************************
*
@ -159,6 +202,16 @@ WRITE8_MEMBER(ddragon3_state::oki_bankswitch_w)
m_oki->set_bank_base((data & 1) * 0x40000);
}
WRITE16_MEMBER(wwfwfest_state::wwfwfest_soundwrite)
{
soundlatch_byte_w(space,1,data & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE );
}
WRITE16_MEMBER(ddragon3_state::ddragon3_io_w)
{
COMBINE_DATA(&m_io_reg[offset]);
@ -198,6 +251,61 @@ WRITE16_MEMBER(ddragon3_state::ddragon3_io_w)
}
}
WRITE16_MEMBER(wwfwfest_state::wwfwfest_irq_ack_w)
{
if (offset == 0)
m_maincpu->set_input_line(3, CLEAR_LINE);
else
m_maincpu->set_input_line(2, CLEAR_LINE);
}
WRITE16_MEMBER(wwfwfest_state::wwfwfest_flipscreen_w)
{
flip_screen_set(data&1);
}
/*- Palette Reads/Writes -*/
READ16_MEMBER(wwfwfest_state::wwfwfest_paletteram16_xxxxBBBBGGGGRRRR_word_r)
{
offset = (offset & 0x000f) | (offset & 0x7fc0) >> 2;
return m_generic_paletteram_16[offset];
}
WRITE16_MEMBER(wwfwfest_state::wwfwfest_paletteram16_xxxxBBBBGGGGRRRR_word_w)
{
offset = (offset & 0x000f) | (offset & 0x7fc0) >> 2;
paletteram_xxxxBBBBGGGGRRRR_word_w (space, offset, data, mem_mask);
}
/*- Priority Control -*/
WRITE16_MEMBER(wwfwfest_state::wwfwfest_1410_write)
{
m_pri = data;
}
/* DIPs are spread across the other input ports */
CUSTOM_INPUT_MEMBER(wwfwfest_state::dsw_3f_r)
{
const char *tag = (const char *)param;
return ioport(tag)->read() & 0x3f;
}
CUSTOM_INPUT_MEMBER(wwfwfest_state::dsw_c0_r)
{
const char *tag = (const char *)param;
return (ioport(tag)->read() & 0xc0) >> 6;
}
/*************************************
*
* Memory Maps
@ -250,6 +358,26 @@ static ADDRESS_MAP_START( ctribe_map, AS_PROGRAM, 16, ddragon3_state )
AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* working RAM */
ADDRESS_MAP_END
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, wwfwfest_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x0c0000, 0x0c1fff) AM_RAM_WRITE(wwfwfest_fg0_videoram_w) AM_SHARE("fg0_videoram") /* FG0 Ram - 4 bytes per tile */
AM_RANGE(0x0c2000, 0x0c3fff) AM_RAM AM_SHARE("spriteram") /* SPR Ram */
AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(ddragon3_fg_videoram_w) AM_SHARE("fg_videoram") /* BG0 Ram - 4 bytes per tile */
AM_RANGE(0x082000, 0x082fff) AM_RAM_WRITE(ddragon3_bg_videoram_w) AM_SHARE("bg_videoram") /* BG1 Ram - 2 bytes per tile */
AM_RANGE(0x100000, 0x100007) AM_READWRITE(ddragon3_scroll_r, ddragon3_scroll_w)
AM_RANGE(0x10000a, 0x10000b) AM_WRITE(wwfwfest_flipscreen_w)
AM_RANGE(0x140000, 0x140003) AM_WRITE(wwfwfest_irq_ack_w)
AM_RANGE(0x14000c, 0x14000d) AM_WRITE(wwfwfest_soundwrite)
AM_RANGE(0x140010, 0x140011) AM_WRITE(wwfwfest_1410_write)
AM_RANGE(0x140020, 0x140021) AM_READ_PORT("P1")
AM_RANGE(0x140022, 0x140023) AM_READ_PORT("P2")
AM_RANGE(0x140024, 0x140025) AM_READ_PORT("P3")
AM_RANGE(0x140026, 0x140027) AM_READ_PORT("P4")
AM_RANGE(0x180000, 0x18ffff) AM_READWRITE(wwfwfest_paletteram16_xxxxBBBBGGGGRRRR_word_r,wwfwfest_paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* Work Ram */
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, ddragon3_state )
AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xc7ff) AM_RAM
@ -259,6 +387,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, ddragon3_state )
AM_RANGE(0xe800, 0xe800) AM_WRITE(oki_bankswitch_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( ctribe_sound_map, AS_PROGRAM, 8, ddragon3_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x87ff) AM_RAM
@ -463,30 +592,158 @@ static INPUT_PORTS_START( ctribeb )
PORT_DIPUNUSED_DIPLOC( 0x0800, 0x0800, "SW2:4" )
INPUT_PORTS_END
static INPUT_PORTS_START( wwfwfest )
PORT_START("P1")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x3000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, wwfwfest_state,dsw_c0_r, "DSW2")
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P2")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x3f00, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, wwfwfest_state,dsw_3f_r, "DSW2")
PORT_START("P3")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(3)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(3)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(3)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(3)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START3 )
PORT_BIT( 0x3f00, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, wwfwfest_state,dsw_3f_r, "DSW1")
PORT_START("P4")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(4)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(4)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(4)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(4)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START4 )
PORT_BIT( 0x0300, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, wwfwfest_state,dsw_c0_r, "DSW1")
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
/* Nb: There are actually 3 dips on the board, 2 * 8, and 1 *4 */
PORT_START("DSW1")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2")
PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x04, 0x04, "Buy In Price" ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x04, "1 Coin" )
PORT_DIPSETTING( 0x00, "As start price" )
PORT_DIPNAME( 0x08, 0x08, "Regain Power Price" ) PORT_DIPLOCATION("SW1:4")
PORT_DIPSETTING( 0x08, "1 Coin" )
PORT_DIPSETTING( 0x00, "As start price" )
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Continue_Price ) ) PORT_DIPLOCATION("SW1:5")
PORT_DIPSETTING( 0x10, "1 Coin" )
PORT_DIPSETTING( 0x00, "As start price" )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:6")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:7")
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "FBI Logo" ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
PORT_START("DSW2")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2")
PORT_DIPSETTING( 0x02, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x03, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x01, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Players ) ) PORT_DIPLOCATION("SW2:3,4") /* Nothing listed for seting ON/ON IE:0x00 */
PORT_DIPSETTING( 0x04, "2" )
PORT_DIPSETTING( 0x08, "3" )
PORT_DIPSETTING( 0x0c, "4" )
PORT_DIPUNUSED_DIPLOC( 0x10, IP_ACTIVE_LOW, "SW2:5" )
PORT_DIPNAME( 0x60, 0x60, "Clear Stage Power Up" ) PORT_DIPLOCATION("SW2:6,7")
PORT_DIPSETTING( 0x00, "0" )
PORT_DIPSETTING( 0x20, "12" )
PORT_DIPSETTING( 0x60, "24" )
PORT_DIPSETTING( 0x40, "32" )
PORT_DIPNAME( 0x80, 0x80, "Championship Game" ) PORT_DIPLOCATION("SW2:8")
PORT_DIPSETTING( 0x00, "4th" )
PORT_DIPSETTING( 0x80, "5th" )
INPUT_PORTS_END
static INPUT_PORTS_START( wwfwfesta )
PORT_INCLUDE(wwfwfest)
PORT_MODIFY("DSW1")
PORT_DIPNAME( 0x80, 0x00, "FBI Logo" ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
INPUT_PORTS_END
/*************************************
*
* Graphics Layouts
*
*************************************/
static const gfx_layout tile_layout =
static const gfx_layout tiles8x8_layout =
{
16,16, /* 16*16 tiles */
8192, /* 8192 tiles */
4, /* 4 bits per pixel */
{ 0, 0x40000*8, 2*0x40000*8 , 3*0x40000*8 }, /* the bitplanes are separated */
{ 0, 1, 2, 3, 4, 5, 6, 7,
16*8+0, 16*8+1, 16*8+2, 16*8+3, 16*8+4, 16*8+5, 16*8+6, 16*8+7 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
32*8 /* every tile takes 32 consecutive bytes */
8,8,
RGN_FRAC(1,1),
4,
{ 0, 2, 4, 6 },
{ 1, 0, 8*8+1, 8*8+0, 16*8+1, 16*8+0, 24*8+1, 24*8+0 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
32*8
};
static const gfx_layout sprite_layout = {
static const gfx_layout wwf_tile_layout =
{
16,16, /* 16*16 tiles */
0x90000/32, /* 4096 tiles */
RGN_FRAC(1,2), /* 8192 tiles */
4, /* 4 bits per pixel */
{ 0, 0x100000*8, 2*0x100000*8 , 3*0x100000*8 }, /* the bitplanes are separated */
{ 8, 0, RGN_FRAC(1,2)+8 , RGN_FRAC(1,2)+0 }, /* the bitplanes are separated */
{ 0, 1, 2, 3, 4, 5, 6, 7,
32*8+0, 32*8+1, 32*8+2, 32*8+3, 32*8+4, 32*8+5, 32*8+6, 32*8+7 },
{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
16*8, 16*9, 16*10, 16*11, 16*12, 16*13, 16*14, 16*15 },
64*8 /* every tile takes 64 consecutive bytes */
};
static const gfx_layout wwf_sprite_layout = {
16,16, /* 16*16 tiles */
RGN_FRAC(1,4),
4, /* 4 bits per pixel */
{ RGN_FRAC(0,4), RGN_FRAC(1,4), RGN_FRAC(2,4) , RGN_FRAC(3,4) }, /* the bitplanes are separated */
{ 0, 1, 2, 3, 4, 5, 6, 7,
16*8+0, 16*8+1, 16*8+2, 16*8+3, 16*8+4, 16*8+5, 16*8+6, 16*8+7 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
@ -501,10 +758,19 @@ static const gfx_layout sprite_layout = {
*************************************/
static GFXDECODE_START( ddragon3 )
GFXDECODE_ENTRY( "gfx1", 0, tile_layout, 256, 32 )
GFXDECODE_ENTRY( "gfx2", 0, sprite_layout, 0, 16 )
GFXDECODE_ENTRY( "gfx1", 0, wwf_tile_layout, 512, 32 )
GFXDECODE_ENTRY( "gfx1", 0, wwf_tile_layout, 256, 32 )
GFXDECODE_ENTRY( "gfx2", 0, wwf_sprite_layout, 0, 16 )
GFXDECODE_END
static GFXDECODE_START( wwfwfest )
GFXDECODE_ENTRY( "gfx3", 0, wwf_tile_layout, 0x0c00, 16 )
GFXDECODE_ENTRY( "gfx3", 0, wwf_tile_layout, 0x1000, 16 )
GFXDECODE_ENTRY( "gfx2", 0, wwf_sprite_layout, 0x0400, 16 )
GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0x0000, 16 )
GFXDECODE_END
/*************************************
*
@ -521,14 +787,14 @@ TIMER_DEVICE_CALLBACK_MEMBER(ddragon3_state::ddragon3_scanline)
{
if (scanline > 0)
m_screen->update_partial(scanline - 1);
m_maincpu->set_input_line(5, ASSERT_LINE);
m_maincpu->set_input_line(raster_level, ASSERT_LINE);
}
/* Vblank is raised on scanline 248 */
if (scanline == 248)
{
m_screen->update_partial(scanline - 1);
m_maincpu->set_input_line(6, ASSERT_LINE);
m_maincpu->set_input_line(vblank_level, ASSERT_LINE);
}
}
@ -579,10 +845,12 @@ static MACHINE_CONFIG_START( ddragon3, ddragon3_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 448, 0, 320, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */
MCFG_SCREEN_UPDATE_DRIVER(ddragon3_state, screen_update_ddragon3)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(ddragon3)
MCFG_PALETTE_LENGTH(768)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@ -625,6 +893,46 @@ static MACHINE_CONFIG_DERIVED( ctribe, ddragon3 )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( wwfwfest, wwfwfest_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, CPU_CLOCK) /* 24 crystal, 12 rated chip */
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ddragon3_state, ddragon3_scanline, "screen", 0, 1)
MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz)
MCFG_CPU_PROGRAM_MAP(sound_map)
/* video hardware */
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 320, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */
MCFG_SCREEN_UPDATE_DRIVER(wwfwfest_state, screen_update_wwfwfest)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(wwfwfest)
MCFG_PALETTE_LENGTH(8192)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "mono", 0.45)
MCFG_SOUND_ROUTE(1, "mono", 0.45)
MCFG_OKIM6295_ADD("oki", 1024188, OKIM6295_PIN7_HIGH) /* Verified - Pin 7 tied to +5VDC */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( wwfwfstb, wwfwfest )
MCFG_VIDEO_START_OVERRIDE(wwfwfest_state,wwfwfstb)
MACHINE_CONFIG_END
/*************************************
*
* ROM definition(s)
@ -639,11 +947,11 @@ ROM_START( ddragon3 )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for sound cpu code */
ROM_LOAD( "30a13-0.ic43", 0x00000, 0x10000, CRC(1e974d9b) SHA1(8e54ff747efe587a2e971c15e729445c4e232f0f) )
ROM_REGION( 0x200000, "gfx1", 0 ) /* Background */
ROM_LOAD( "30j-7.ic4", 0x000000, 0x40000, CRC(89d58d32) SHA1(54cfc154024e014f537c7ae0c2275ece50413bc5) )
ROM_LOAD( "30j-6.ic5", 0x040000, 0x40000, CRC(9bf1538e) SHA1(c7cb96c6b1ac73ec52f46b2a6687bfcfd375ab44) )
ROM_LOAD( "30j-5.ic6", 0x080000, 0x40000, CRC(8f671a62) SHA1(b5dba61ad6ed39440bb98f7b2dc1111779d6c4a1) )
ROM_LOAD( "30j-4.ic7", 0x0c0000, 0x40000, CRC(0f74ea1c) SHA1(6bd8dd89bd22b29038cf502a898336e95e50a9cc) )
ROM_REGION( 0x100000, "gfx1", 0 ) /* Background */
ROM_LOAD16_BYTE( "30j-7.ic4", 0x000001, 0x40000, CRC(89d58d32) SHA1(54cfc154024e014f537c7ae0c2275ece50413bc5) )
ROM_LOAD16_BYTE( "30j-6.ic5", 0x000000, 0x40000, CRC(9bf1538e) SHA1(c7cb96c6b1ac73ec52f46b2a6687bfcfd375ab44) )
ROM_LOAD16_BYTE( "30j-5.ic6", 0x080001, 0x40000, CRC(8f671a62) SHA1(b5dba61ad6ed39440bb98f7b2dc1111779d6c4a1) )
ROM_LOAD16_BYTE( "30j-4.ic7", 0x080000, 0x40000, CRC(0f74ea1c) SHA1(6bd8dd89bd22b29038cf502a898336e95e50a9cc) )
ROM_REGION( 0x400000, "gfx2", 0 ) /* Sprites */
ROM_LOAD( "30j-3.ic9", 0x000000, 0x80000, CRC(b3151871) SHA1(a647b4d9bddd6b8715a1d24641391a2e2d0f8867) )
@ -670,11 +978,11 @@ ROM_START( ddragon3j )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for sound cpu code */
ROM_LOAD( "30j13.ic43", 0x00000, 0x10000, CRC(1e974d9b) SHA1(8e54ff747efe587a2e971c15e729445c4e232f0f) )
ROM_REGION( 0x200000, "gfx1", 0 ) /* Background */
ROM_LOAD( "30j-7.ic4", 0x000000, 0x40000, CRC(89d58d32) SHA1(54cfc154024e014f537c7ae0c2275ece50413bc5) )
ROM_LOAD( "30j-6.ic5", 0x040000, 0x40000, CRC(9bf1538e) SHA1(c7cb96c6b1ac73ec52f46b2a6687bfcfd375ab44) )
ROM_LOAD( "30j-5.ic6", 0x080000, 0x40000, CRC(8f671a62) SHA1(b5dba61ad6ed39440bb98f7b2dc1111779d6c4a1) )
ROM_LOAD( "30j-4.ic7", 0x0c0000, 0x40000, CRC(0f74ea1c) SHA1(6bd8dd89bd22b29038cf502a898336e95e50a9cc) )
ROM_REGION( 0x100000, "gfx1", 0 ) /* Background */
ROM_LOAD16_BYTE( "30j-7.ic4", 0x000001, 0x40000, CRC(89d58d32) SHA1(54cfc154024e014f537c7ae0c2275ece50413bc5) )
ROM_LOAD16_BYTE( "30j-6.ic5", 0x000000, 0x40000, CRC(9bf1538e) SHA1(c7cb96c6b1ac73ec52f46b2a6687bfcfd375ab44) )
ROM_LOAD16_BYTE( "30j-5.ic6", 0x080001, 0x40000, CRC(8f671a62) SHA1(b5dba61ad6ed39440bb98f7b2dc1111779d6c4a1) )
ROM_LOAD16_BYTE( "30j-4.ic7", 0x080000, 0x40000, CRC(0f74ea1c) SHA1(6bd8dd89bd22b29038cf502a898336e95e50a9cc) )
ROM_REGION( 0x400000, "gfx2", 0 ) /* Sprites */
ROM_LOAD( "30j-3.ic9", 0x000000, 0x80000, CRC(b3151871) SHA1(a647b4d9bddd6b8715a1d24641391a2e2d0f8867) )
@ -701,15 +1009,15 @@ ROM_START( ddragon3p )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for sound cpu code */
ROM_LOAD( "30a13-0.ic43", 0x00000, 0x10000, CRC(1e974d9b) SHA1(8e54ff747efe587a2e971c15e729445c4e232f0f) )
ROM_REGION( 0x200000, "gfx1", 0 ) /* Background */
ROM_LOAD( "14.ic45", 0x000000, 0x20000, CRC(b036a27b) SHA1(c13589c3882bb86f14a3b0143f2d9a4474350ddd) )
ROM_LOAD( "15.ic46", 0x020000, 0x20000, CRC(24d0bf41) SHA1(2e9c26c8078d17323af6ba378c7ceaed9045d3f7) )
ROM_LOAD( "30.ic13", 0x040000, 0x20000, CRC(72fe2b16) SHA1(92f02381c0216cf5cfede6813e4dcb814a040091) )
ROM_LOAD( "31.ic14", 0x060000, 0x20000, CRC(ab48a0c8) SHA1(b908f601a621697ad3b5067d26b6fb1713c4af39) )
ROM_LOAD( "23.ic29", 0x080000, 0x20000, CRC(0768fedd) SHA1(757c4378f53b4b8cc024b4c5a74d19ab653e886e) )
ROM_LOAD( "24.ic30", 0x0a0000, 0x20000, CRC(ec9db18a) SHA1(7e4085ba4c0e20ec00f392a2bf9cdb81be53b97f) )
ROM_LOAD( "21.ic25", 0x0c0000, 0x20000, CRC(902744b9) SHA1(eea623ce013bc270b1611982dd2f9388b205dbb3) )
ROM_LOAD( "22.ic26", 0x0e0000, 0x20000, CRC(5b142d4d) SHA1(88e22e102efa35449c0d9f6139eb0718528a9d72) )
ROM_REGION( 0x100000, "gfx1", 0 ) /* Background */
ROM_LOAD16_BYTE( "14.ic45", 0x000001, 0x20000, CRC(b036a27b) SHA1(c13589c3882bb86f14a3b0143f2d9a4474350ddd) )
ROM_LOAD16_BYTE( "15.ic46", 0x040001, 0x20000, CRC(24d0bf41) SHA1(2e9c26c8078d17323af6ba378c7ceaed9045d3f7) )
ROM_LOAD16_BYTE( "30.ic13", 0x000000, 0x20000, CRC(72fe2b16) SHA1(92f02381c0216cf5cfede6813e4dcb814a040091) )
ROM_LOAD16_BYTE( "31.ic14", 0x040000, 0x20000, CRC(ab48a0c8) SHA1(b908f601a621697ad3b5067d26b6fb1713c4af39) )
ROM_LOAD16_BYTE( "23.ic29", 0x080001, 0x20000, CRC(0768fedd) SHA1(757c4378f53b4b8cc024b4c5a74d19ab653e886e) )
ROM_LOAD16_BYTE( "24.ic30", 0x0c0001, 0x20000, CRC(ec9db18a) SHA1(7e4085ba4c0e20ec00f392a2bf9cdb81be53b97f) )
ROM_LOAD16_BYTE( "21.ic25", 0x080000, 0x20000, CRC(902744b9) SHA1(eea623ce013bc270b1611982dd2f9388b205dbb3) )
ROM_LOAD16_BYTE( "22.ic26", 0x0c0000, 0x20000, CRC(5b142d4d) SHA1(88e22e102efa35449c0d9f6139eb0718528a9d72) )
ROM_REGION( 0x400000, "gfx2", 0 ) /* Sprites */
ROM_LOAD( "9.ic39", 0x000000, 0x20000, CRC(726c49b7) SHA1(dbafad47bb6b717c409fdc5d81c413f1282f2bbb) )
@ -754,11 +1062,11 @@ ROM_START( ddragon3b )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for sound cpu code */
ROM_LOAD( "dd3.06", 0x00000, 0x10000, CRC(1e974d9b) SHA1(8e54ff747efe587a2e971c15e729445c4e232f0f) )
ROM_REGION( 0x200000, "gfx1", 0 ) /* Background */
ROM_LOAD( "dd3.f", 0x000000, 0x40000, CRC(89d58d32) SHA1(54cfc154024e014f537c7ae0c2275ece50413bc5) )
ROM_LOAD( "dd3.e", 0x040000, 0x40000, CRC(9bf1538e) SHA1(c7cb96c6b1ac73ec52f46b2a6687bfcfd375ab44) )
ROM_LOAD( "dd3.b", 0x080000, 0x40000, CRC(8f671a62) SHA1(b5dba61ad6ed39440bb98f7b2dc1111779d6c4a1) )
ROM_LOAD( "dd3.a", 0x0c0000, 0x40000, CRC(0f74ea1c) SHA1(6bd8dd89bd22b29038cf502a898336e95e50a9cc) )
ROM_REGION( 0x100000, "gfx1", 0 ) /* Background */
ROM_LOAD16_BYTE( "dd3.f", 0x000001, 0x40000, CRC(89d58d32) SHA1(54cfc154024e014f537c7ae0c2275ece50413bc5) )
ROM_LOAD16_BYTE( "dd3.e", 0x000000, 0x40000, CRC(9bf1538e) SHA1(c7cb96c6b1ac73ec52f46b2a6687bfcfd375ab44) )
ROM_LOAD16_BYTE( "dd3.b", 0x080001, 0x40000, CRC(8f671a62) SHA1(b5dba61ad6ed39440bb98f7b2dc1111779d6c4a1) )
ROM_LOAD16_BYTE( "dd3.a", 0x080000, 0x40000, CRC(0f74ea1c) SHA1(6bd8dd89bd22b29038cf502a898336e95e50a9cc) )
ROM_REGION( 0x400000, "gfx2", 0 ) /* Sprites */
ROM_LOAD( "dd3.3e", 0x000000, 0x20000, CRC(726c49b7) SHA1(dbafad47bb6b717c409fdc5d81c413f1282f2bbb) ) //4a
@ -803,11 +1111,11 @@ ROM_START( ctribe )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for sound cpu code */
ROM_LOAD( "28a10-0.ic89", 0x00000, 0x8000, CRC(4346de13) SHA1(67c6de90ba31a325f03e64d28c9391a315ee359c) )
ROM_REGION( 0x200000, "gfx1", 0 ) /* Background */
ROM_LOAD( "28j7-0.ic11", 0x000000, 0x40000, CRC(a8b773f1) SHA1(999e41dfeb3fb937da769c4a33bb29bf4076dc63) )
ROM_LOAD( "28j6-0.ic13", 0x040000, 0x40000, CRC(617530fc) SHA1(b9155ed0ae1437bf4d0b7a95e769bc05a820ecec) )
ROM_LOAD( "28j5-0.ic12", 0x080000, 0x40000, CRC(cef0a821) SHA1(c7a35048d5ebf3f09abf9d27f91d12adc03befeb) )
ROM_LOAD( "28j4-0.ic14", 0x0c0000, 0x40000, CRC(b84fda09) SHA1(3ae0c0ec6c398dea17e248b017ea3e2f6c3571e1) )
ROM_REGION( 0x100000, "gfx1", 0 ) /* Background */
ROM_LOAD16_BYTE( "28j7-0.ic11", 0x000001, 0x40000, CRC(a8b773f1) SHA1(999e41dfeb3fb937da769c4a33bb29bf4076dc63) )
ROM_LOAD16_BYTE( "28j6-0.ic13", 0x000000, 0x40000, CRC(617530fc) SHA1(b9155ed0ae1437bf4d0b7a95e769bc05a820ecec) )
ROM_LOAD16_BYTE( "28j5-0.ic12", 0x080001, 0x40000, CRC(cef0a821) SHA1(c7a35048d5ebf3f09abf9d27f91d12adc03befeb) )
ROM_LOAD16_BYTE( "28j4-0.ic14", 0x080000, 0x40000, CRC(b84fda09) SHA1(3ae0c0ec6c398dea17e248b017ea3e2f6c3571e1) )
ROM_REGION( 0x400000, "gfx2", 0 ) /* Sprites */
ROM_LOAD( "28j3-0.ic77", 0x000000, 0x80000, CRC(1ac2a461) SHA1(17436f5dcf29041ca5f470dfae538e4fc12153cc) )
@ -837,11 +1145,11 @@ ROM_START( ctribe1 )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for sound cpu code */
ROM_LOAD( "28a10-0.ic89", 0x00000, 0x8000, CRC(4346de13) SHA1(67c6de90ba31a325f03e64d28c9391a315ee359c) )
ROM_REGION( 0x200000, "gfx1", 0 ) /* Background */
ROM_LOAD( "28j7-0.ic11", 0x000000, 0x40000, CRC(a8b773f1) SHA1(999e41dfeb3fb937da769c4a33bb29bf4076dc63) )
ROM_LOAD( "28j6-0.ic13", 0x040000, 0x40000, CRC(617530fc) SHA1(b9155ed0ae1437bf4d0b7a95e769bc05a820ecec) )
ROM_LOAD( "28j5-0.ic12", 0x080000, 0x40000, CRC(cef0a821) SHA1(c7a35048d5ebf3f09abf9d27f91d12adc03befeb) )
ROM_LOAD( "28j4-0.ic14", 0x0c0000, 0x40000, CRC(b84fda09) SHA1(3ae0c0ec6c398dea17e248b017ea3e2f6c3571e1) )
ROM_REGION( 0x100000, "gfx1", 0 ) /* Background */
ROM_LOAD16_BYTE( "28j7-0.ic11", 0x000001, 0x40000, CRC(a8b773f1) SHA1(999e41dfeb3fb937da769c4a33bb29bf4076dc63) )
ROM_LOAD16_BYTE( "28j6-0.ic13", 0x000000, 0x40000, CRC(617530fc) SHA1(b9155ed0ae1437bf4d0b7a95e769bc05a820ecec) )
ROM_LOAD16_BYTE( "28j5-0.ic12", 0x080001, 0x40000, CRC(cef0a821) SHA1(c7a35048d5ebf3f09abf9d27f91d12adc03befeb) )
ROM_LOAD16_BYTE( "28j4-0.ic14", 0x080000, 0x40000, CRC(b84fda09) SHA1(3ae0c0ec6c398dea17e248b017ea3e2f6c3571e1) )
ROM_REGION( 0x400000, "gfx2", 0 ) /* Sprites */
ROM_LOAD( "28j3-0.ic77", 0x000000, 0x80000, CRC(1ac2a461) SHA1(17436f5dcf29041ca5f470dfae538e4fc12153cc) )
@ -871,11 +1179,11 @@ ROM_START( ctribej )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for sound cpu code */
ROM_LOAD( "28j10-0.89", 0x00000, 0x8000, CRC(4346de13) SHA1(67c6de90ba31a325f03e64d28c9391a315ee359c) )
ROM_REGION( 0x200000, "gfx1", 0 ) /* Background */
ROM_LOAD( "28j7-0.ic11", 0x000000, 0x40000, CRC(a8b773f1) SHA1(999e41dfeb3fb937da769c4a33bb29bf4076dc63) )
ROM_LOAD( "28j6-0.ic13", 0x040000, 0x40000, CRC(617530fc) SHA1(b9155ed0ae1437bf4d0b7a95e769bc05a820ecec) )
ROM_LOAD( "28j5-0.ic12", 0x080000, 0x40000, CRC(cef0a821) SHA1(c7a35048d5ebf3f09abf9d27f91d12adc03befeb) )
ROM_LOAD( "28j4-0.ic14", 0x0c0000, 0x40000, CRC(b84fda09) SHA1(3ae0c0ec6c398dea17e248b017ea3e2f6c3571e1) )
ROM_REGION( 0x100000, "gfx1", 0 ) /* Background */
ROM_LOAD16_BYTE( "28j7-0.ic11", 0x000001, 0x40000, CRC(a8b773f1) SHA1(999e41dfeb3fb937da769c4a33bb29bf4076dc63) )
ROM_LOAD16_BYTE( "28j6-0.ic13", 0x000000, 0x40000, CRC(617530fc) SHA1(b9155ed0ae1437bf4d0b7a95e769bc05a820ecec) )
ROM_LOAD16_BYTE( "28j5-0.ic12", 0x080001, 0x40000, CRC(cef0a821) SHA1(c7a35048d5ebf3f09abf9d27f91d12adc03befeb) )
ROM_LOAD16_BYTE( "28j4-0.ic14", 0x080000, 0x40000, CRC(b84fda09) SHA1(3ae0c0ec6c398dea17e248b017ea3e2f6c3571e1) )
ROM_REGION( 0x400000, "gfx2", 0 ) /* Sprites */
ROM_LOAD( "28j3-0.ic77", 0x000000, 0x80000, CRC(1ac2a461) SHA1(17436f5dcf29041ca5f470dfae538e4fc12153cc) )
@ -905,11 +1213,11 @@ ROM_START( ctribeb )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for sound cpu code */
ROM_LOAD( "ct_ep4.rom", 0x00000, 0x8000, CRC(4346de13) SHA1(67c6de90ba31a325f03e64d28c9391a315ee359c) )
ROM_REGION( 0x200000, "gfx1", 0 ) /* Background */
ROM_LOAD( "ct_mr7.rom", 0x000000, 0x40000, CRC(a8b773f1) SHA1(999e41dfeb3fb937da769c4a33bb29bf4076dc63) )
ROM_LOAD( "ct_mr6.rom", 0x040000, 0x40000, CRC(617530fc) SHA1(b9155ed0ae1437bf4d0b7a95e769bc05a820ecec) )
ROM_LOAD( "ct_mr5.rom", 0x080000, 0x40000, CRC(cef0a821) SHA1(c7a35048d5ebf3f09abf9d27f91d12adc03befeb) )
ROM_LOAD( "ct_mr4.rom", 0x0c0000, 0x40000, CRC(b84fda09) SHA1(3ae0c0ec6c398dea17e248b017ea3e2f6c3571e1) )
ROM_REGION( 0x100000, "gfx1", 0 ) /* Background */
ROM_LOAD16_BYTE( "ct_mr7.rom", 0x000001, 0x40000, CRC(a8b773f1) SHA1(999e41dfeb3fb937da769c4a33bb29bf4076dc63) )
ROM_LOAD16_BYTE( "ct_mr6.rom", 0x000000, 0x40000, CRC(617530fc) SHA1(b9155ed0ae1437bf4d0b7a95e769bc05a820ecec) )
ROM_LOAD16_BYTE( "ct_mr5.rom", 0x080001, 0x40000, CRC(cef0a821) SHA1(c7a35048d5ebf3f09abf9d27f91d12adc03befeb) )
ROM_LOAD16_BYTE( "ct_mr4.rom", 0x080000, 0x40000, CRC(b84fda09) SHA1(3ae0c0ec6c398dea17e248b017ea3e2f6c3571e1) )
ROM_REGION( 0x400000, "gfx2", 0 ) /* Sprites */
ROM_LOAD( "ct_mr3.rom", 0x000000, 0x80000, CRC(1ac2a461) SHA1(17436f5dcf29041ca5f470dfae538e4fc12153cc) )
@ -936,15 +1244,16 @@ ROM_START( ctribeb2 )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for sound cpu code */
ROM_LOAD( "6.bin", 0x00000, 0x10000, CRC(0101df2d) SHA1(35e1efa4a11c0f9d9db5ee057926e5de29c3a4c1) )
ROM_REGION( 0x200000, "gfx1", 0 ) /* Background */
ROM_LOAD( "7.bin", 0x000000, 0x40000, CRC(a8b773f1) SHA1(999e41dfeb3fb937da769c4a33bb29bf4076dc63) )
ROM_LOAD( "8.bin", 0x040000, 0x40000, CRC(617530fc) SHA1(b9155ed0ae1437bf4d0b7a95e769bc05a820ecec) )
ROM_LOAD( "11.bin", 0x080000, 0x40000, CRC(cef0a821) SHA1(c7a35048d5ebf3f09abf9d27f91d12adc03befeb) )
ROM_LOAD( "12.bin", 0x0c0000, 0x40000, CRC(b84fda09) SHA1(3ae0c0ec6c398dea17e248b017ea3e2f6c3571e1) )
ROM_LOAD( "9.bin", 0x100000, 0x20000, CRC(2719d7ce) SHA1(35275d32b584c477033037bc041a3687ecca412d) )
ROM_LOAD( "10.bin", 0x140000, 0x20000, CRC(753a4f53) SHA1(c76a449ef29dde671196cda1f128b0b2d4839a97) )
ROM_LOAD( "13.bin", 0x180000, 0x20000, CRC(59e01fe1) SHA1(67f5a4e9c9e9ebc6218b7c2ede0e5ff51682ee2f) )
ROM_LOAD( "14.bin", 0x1c0000, 0x20000, CRC(a69ab4f3) SHA1(bc99c6a587c972cb5c9e719c53ef921a28f1498e) )
ROM_REGION( 0x100000, "gfx1", 0 ) /* Background */
ROM_LOAD16_BYTE( "7.bin", 0x000001, 0x40000, CRC(a8b773f1) SHA1(999e41dfeb3fb937da769c4a33bb29bf4076dc63) )
ROM_LOAD16_BYTE( "8.bin", 0x000000, 0x40000, CRC(617530fc) SHA1(b9155ed0ae1437bf4d0b7a95e769bc05a820ecec) )
ROM_LOAD16_BYTE( "11.bin", 0x080001, 0x40000, CRC(cef0a821) SHA1(c7a35048d5ebf3f09abf9d27f91d12adc03befeb) )
ROM_LOAD16_BYTE( "12.bin", 0x080000, 0x40000, CRC(b84fda09) SHA1(3ae0c0ec6c398dea17e248b017ea3e2f6c3571e1) )
// a second copy of the 2nd half of the above roms? did the bootleg pull the data for one of the layers from here instead?
ROM_LOAD16_BYTE( "9.bin", 0x040001, 0x20000, CRC(2719d7ce) SHA1(35275d32b584c477033037bc041a3687ecca412d) )
ROM_LOAD16_BYTE( "10.bin", 0x040000, 0x20000, CRC(753a4f53) SHA1(c76a449ef29dde671196cda1f128b0b2d4839a97) )
ROM_LOAD16_BYTE( "13.bin", 0x0c0001, 0x20000, CRC(59e01fe1) SHA1(67f5a4e9c9e9ebc6218b7c2ede0e5ff51682ee2f) )
ROM_LOAD16_BYTE( "14.bin", 0x0c0000, 0x20000, CRC(a69ab4f3) SHA1(bc99c6a587c972cb5c9e719c53ef921a28f1498e) )
ROM_REGION( 0x400000, "gfx2", 0 ) /* Sprites */
ROM_LOAD( "34.bin", 0x000000, 0x20000, CRC(5b498f0e) SHA1(9d93ca1f44e1f04eb3b66db6027130683c9431a2) )
@ -973,6 +1282,155 @@ ROM_START( ctribeb2 )
ROM_LOAD( "4.bin", 0x020000, 0x20000, CRC(1a3a0b39) SHA1(8847530027cf4be03ffbc6d78dee97b459d03a04) )
ROM_END
ROM_START( wwfwfest )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Main CPU (68000) */
ROM_LOAD16_BYTE( "31a13-2.ic19", 0x00001, 0x40000, CRC(7175bca7) SHA1(992b47a787b5bc2a5a381ec78b8dfaf7d42c614b) )
ROM_LOAD16_BYTE( "31a14-2.ic18", 0x00000, 0x40000, CRC(5d06bfd1) SHA1(39a93da662158aa5a9953dcabfcb47c2fc196dc7) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU (Z80) */
ROM_LOAD( "31a11-2.ic42", 0x00000, 0x10000, CRC(5ddebfea) SHA1(30073963e965250d94f0dc3bd261a054850adf95) )
ROM_REGION( 0x80000, "oki", 0 ) /* ADPCM samples */
ROM_LOAD( "31j10.ic73", 0x00000, 0x80000, CRC(6c522edb) SHA1(8005d59c94160638ba2ea7caf4e991fff03003d5) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* FG0 Tiles (8x8) */
ROM_LOAD( "31a12-0.ic33", 0x00000, 0x20000, CRC(d0803e20) SHA1(b68758e9a5522396f831a3972571f8aed54c64de) )
ROM_REGION( 0x800000, "gfx2", 0 ) /* SPR Tiles (16x16), 27080 Mask ROM's */
ROM_LOAD( "31j3.ic9", 0x000000, 0x100000, CRC(e395cf1d) SHA1(241f98145e295993c9b6a44dc087a9b61fbc9a6f) ) /* Tiles 0 */
ROM_LOAD( "31j2.ic8", 0x100000, 0x100000, CRC(b5a97465) SHA1(08d82c29a5c02b83fdbd0bad649b74eb35ab7e54) ) /* Tiles 1 */
ROM_LOAD( "31j5.ic11", 0x200000, 0x100000, CRC(2ce545e8) SHA1(82173e58a8476a6fe9d2c990fce1f71af117a0ea) ) /* Tiles 0 */
ROM_LOAD( "31j4.ic10", 0x300000, 0x100000, CRC(00edb66a) SHA1(926606d1923936b6e75391b1ab03b369d9822d13) ) /* Tiles 1 */
ROM_LOAD( "31j6.ic12", 0x400000, 0x100000, CRC(79956cf8) SHA1(52207263620a6b6dde66d3f8749b772577899ea5) ) /* Tiles 0 */
ROM_LOAD( "31j7.ic13", 0x500000, 0x100000, CRC(74d774c3) SHA1(a723ac5d481bf91b12e17652fbb2d869c886dec0) ) /* Tiles 1 */
ROM_LOAD( "31j9.ic15", 0x600000, 0x100000, CRC(dd387289) SHA1(2cad42d4e7cd1a49346f844058ae18c38bc686a8) ) /* Tiles 0 */
ROM_LOAD( "31j8.ic14", 0x700000, 0x100000, CRC(44abe127) SHA1(c723e1dea117534e976d2d383e634faf073cd57b) ) /* Tiles 1 */
ROM_REGION( 0x80000, "gfx3", 0 ) /* BG0 / BG1 Tiles (16x16) */
ROM_LOAD( "31j0.ic1", 0x40000, 0x40000, CRC(8a12b450) SHA1(2e15c949efcda8bb6f11afe3ff07ba1dee9c771c) ) /* 0,1 */
ROM_LOAD( "31j1.ic2", 0x00000, 0x40000, CRC(82ed7155) SHA1(b338e1150ffe3277c11d4d6e801a7d3bd7c58492) ) /* 2,3 */
ROM_END
ROM_START( wwfwfesta )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Main CPU (68000) */
ROM_LOAD16_BYTE( "wf_18.rom", 0x00000, 0x40000, CRC(933ea1a0) SHA1(61da142cfa7abd3b77ab21979c061a078c0d0c63) )
ROM_LOAD16_BYTE( "wf_19.rom", 0x00001, 0x40000, CRC(bd02e3c4) SHA1(7ae63e48caf9919ce7b63b4c5aa9474ba8c336da) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU (Z80) */
ROM_LOAD( "31a11-2.ic42", 0x00000, 0x10000, CRC(5ddebfea) SHA1(30073963e965250d94f0dc3bd261a054850adf95) )
ROM_REGION( 0x80000, "oki", 0 ) /* ADPCM samples */
ROM_LOAD( "31j10.ic73", 0x00000, 0x80000, CRC(6c522edb) SHA1(8005d59c94160638ba2ea7caf4e991fff03003d5) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* FG0 Tiles (8x8) */
ROM_LOAD( "31e12-0.ic33", 0x00000, 0x20000, CRC(06f22615) SHA1(2e9418e372da85ea597977d912d8b35753655f4e) )
ROM_REGION( 0x800000, "gfx2", 0 ) /* SPR Tiles (16x16), 27080 Mask ROM's */
ROM_LOAD( "31j3.ic9", 0x000000, 0x100000, CRC(e395cf1d) SHA1(241f98145e295993c9b6a44dc087a9b61fbc9a6f) ) /* Tiles 0 */
ROM_LOAD( "31j2.ic8", 0x100000, 0x100000, CRC(b5a97465) SHA1(08d82c29a5c02b83fdbd0bad649b74eb35ab7e54) ) /* Tiles 1 */
ROM_LOAD( "31j5.ic11", 0x200000, 0x100000, CRC(2ce545e8) SHA1(82173e58a8476a6fe9d2c990fce1f71af117a0ea) ) /* Tiles 0 */
ROM_LOAD( "31j4.ic10", 0x300000, 0x100000, CRC(00edb66a) SHA1(926606d1923936b6e75391b1ab03b369d9822d13) ) /* Tiles 1 */
ROM_LOAD( "31j6.ic12", 0x400000, 0x100000, CRC(79956cf8) SHA1(52207263620a6b6dde66d3f8749b772577899ea5) ) /* Tiles 0 */
ROM_LOAD( "31j7.ic13", 0x500000, 0x100000, CRC(74d774c3) SHA1(a723ac5d481bf91b12e17652fbb2d869c886dec0) ) /* Tiles 1 */
ROM_LOAD( "31j9.ic15", 0x600000, 0x100000, CRC(dd387289) SHA1(2cad42d4e7cd1a49346f844058ae18c38bc686a8) ) /* Tiles 0 */
ROM_LOAD( "31j8.ic14", 0x700000, 0x100000, CRC(44abe127) SHA1(c723e1dea117534e976d2d383e634faf073cd57b) ) /* Tiles 1 */
ROM_REGION( 0x80000, "gfx3", 0 ) /* BG0 / BG1 Tiles (16x16) */
ROM_LOAD( "31j0.ic1", 0x40000, 0x40000, CRC(8a12b450) SHA1(2e15c949efcda8bb6f11afe3ff07ba1dee9c771c) ) /* 0,1 */
ROM_LOAD( "31j1.ic2", 0x00000, 0x40000, CRC(82ed7155) SHA1(b338e1150ffe3277c11d4d6e801a7d3bd7c58492) ) /* 2,3 */
ROM_END
ROM_START( wwfwfestb )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Main CPU (68000) */
ROM_LOAD16_BYTE( "3", 0x00000, 0x40000, CRC(ea73369c) SHA1(be614a342f9014251810fa30ec56fec03f7c8ef3) )
ROM_LOAD16_BYTE( "2", 0x00001, 0x40000, CRC(632bb3a4) SHA1(9c04fed5aeefc683810cfbd9b3318e155ed9813f) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU (Z80) */
ROM_LOAD( "1", 0x00000, 0x10000, CRC(d9e8cda2) SHA1(754c73cd341d51ffd35cdb62155a3f061416c9ba) )
ROM_REGION( 0x80000, "oki", 0 ) /* ADPCM samples */
ROM_LOAD( "wf_73a.rom", 0x00000, 0x80000, CRC(6c522edb) SHA1(8005d59c94160638ba2ea7caf4e991fff03003d5) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* FG0 Tiles (8x8) */
ROM_LOAD( "4", 0x00000, 0x20000, CRC(520ef575) SHA1(99a5e9b94e9234851c6b504d58939ad84e0d6589) )
ROM_REGION( 0x800000, "gfx2", 0 ) /* SPR Tiles (16x16) */
ROM_LOAD( "wf_09.rom", 0x000000, 0x100000, CRC(e395cf1d) SHA1(241f98145e295993c9b6a44dc087a9b61fbc9a6f) ) /* Tiles 0 */
ROM_LOAD( "wf_08.rom", 0x100000, 0x100000, CRC(b5a97465) SHA1(08d82c29a5c02b83fdbd0bad649b74eb35ab7e54) ) /* Tiles 1 */
ROM_LOAD( "wf_11.rom", 0x200000, 0x100000, CRC(2ce545e8) SHA1(82173e58a8476a6fe9d2c990fce1f71af117a0ea) ) /* Tiles 0 */
ROM_LOAD( "wf_10.rom", 0x300000, 0x100000, CRC(00edb66a) SHA1(926606d1923936b6e75391b1ab03b369d9822d13) ) /* Tiles 1 */
ROM_LOAD( "wf_12.rom", 0x400000, 0x100000, CRC(79956cf8) SHA1(52207263620a6b6dde66d3f8749b772577899ea5) ) /* Tiles 0 */
ROM_LOAD( "wf_13.rom", 0x500000, 0x100000, CRC(74d774c3) SHA1(a723ac5d481bf91b12e17652fbb2d869c886dec0) ) /* Tiles 1 */
ROM_LOAD( "wf_15.rom", 0x600000, 0x100000, CRC(dd387289) SHA1(2cad42d4e7cd1a49346f844058ae18c38bc686a8) ) /* Tiles 0 */
ROM_LOAD( "wf_14.rom", 0x700000, 0x100000, CRC(44abe127) SHA1(c723e1dea117534e976d2d383e634faf073cd57b) ) /* Tiles 1 */
ROM_REGION( 0x80000, "gfx3", 0 ) /* BG0 / BG1 Tiles (16x16) */
ROM_LOAD16_BYTE( "5", 0x40000, 0x20000, CRC(35e4d6eb) SHA1(d2a12bde268bc0734e6806ff5302b8c3dcc17280) ) /* 0 */
ROM_LOAD16_BYTE( "6", 0x40001, 0x20000, CRC(a054a5b2) SHA1(d6ed5d5a20acb7cdbaee8e3f520873650529c0ae) ) /* 1 */
ROM_LOAD16_BYTE( "7", 0x00000, 0x20000, CRC(101f0136) SHA1(2ccd641e49cdd3f5243ebe8c52c492842d62f5b8) ) /* 2 */
ROM_LOAD16_BYTE( "8", 0x00001, 0x20000, CRC(7b2ecba7) SHA1(1ed2451132448930ac4afcdc67ca14e3e922863e) ) /* 3 */
ROM_END
ROM_START( wwfwfestj )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Main CPU (68000) */
ROM_LOAD16_BYTE( "31j13-0.ic19", 0x00001, 0x40000, CRC(2147780d) SHA1(9a7a5db06117f3780e084d3f0c7b642ff8a9db55) )
ROM_LOAD16_BYTE( "31j14-0.ic18", 0x00000, 0x40000, CRC(d76fc747) SHA1(5f6819bc61756d1df4ac0776ac420a59c438cf8a) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU (Z80) */
ROM_LOAD( "31a11-2.ic42", 0x00000, 0x10000, CRC(5ddebfea) SHA1(30073963e965250d94f0dc3bd261a054850adf95) )
ROM_REGION( 0x80000, "oki", 0 ) /* ADPCM samples */
ROM_LOAD( "31j10.ic73", 0x00000, 0x80000, CRC(6c522edb) SHA1(8005d59c94160638ba2ea7caf4e991fff03003d5) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* FG0 Tiles (8x8) */
ROM_LOAD( "31j12-0.ic33", 0x00000, 0x20000, CRC(f4821fe0) SHA1(e5faa9860e9d4e75393b64ca85a8bfc4852fd4fd) )
ROM_REGION( 0x800000, "gfx2", 0 ) /* SPR Tiles (16x16), 27080 Mask ROM's */
ROM_LOAD( "31j3.ic9", 0x000000, 0x100000, CRC(e395cf1d) SHA1(241f98145e295993c9b6a44dc087a9b61fbc9a6f) ) /* Tiles 0 */
ROM_LOAD( "31j2.ic8", 0x100000, 0x100000, CRC(b5a97465) SHA1(08d82c29a5c02b83fdbd0bad649b74eb35ab7e54) ) /* Tiles 1 */
ROM_LOAD( "31j5.ic11", 0x200000, 0x100000, CRC(2ce545e8) SHA1(82173e58a8476a6fe9d2c990fce1f71af117a0ea) ) /* Tiles 0 */
ROM_LOAD( "31j4.ic10", 0x300000, 0x100000, CRC(00edb66a) SHA1(926606d1923936b6e75391b1ab03b369d9822d13) ) /* Tiles 1 */
ROM_LOAD( "31j6.ic12", 0x400000, 0x100000, CRC(79956cf8) SHA1(52207263620a6b6dde66d3f8749b772577899ea5) ) /* Tiles 0 */
ROM_LOAD( "31j7.ic13", 0x500000, 0x100000, CRC(74d774c3) SHA1(a723ac5d481bf91b12e17652fbb2d869c886dec0) ) /* Tiles 1 */
ROM_LOAD( "31j9.ic15", 0x600000, 0x100000, CRC(dd387289) SHA1(2cad42d4e7cd1a49346f844058ae18c38bc686a8) ) /* Tiles 0 */
ROM_LOAD( "31j8.ic14", 0x700000, 0x100000, CRC(44abe127) SHA1(c723e1dea117534e976d2d383e634faf073cd57b) ) /* Tiles 1 */
ROM_REGION( 0x80000, "gfx3", 0 ) /* BG0 / BG1 Tiles (16x16) */
ROM_LOAD( "31j0.ic1", 0x40000, 0x40000, CRC(8a12b450) SHA1(2e15c949efcda8bb6f11afe3ff07ba1dee9c771c) ) /* 0,1 */
ROM_LOAD( "31j1.ic2", 0x00000, 0x40000, CRC(82ed7155) SHA1(b338e1150ffe3277c11d4d6e801a7d3bd7c58492) ) /* 2,3 */
ROM_END
ROM_START( wwfwfestk )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Main CPU (68000) */
ROM_LOAD16_BYTE( "31e13-0.ic19", 0x00001, 0x40000, CRC(774a26a7) SHA1(30e00bff9027a0ae971f8820ca6c3e4cdea82994) )
ROM_LOAD16_BYTE( "31e14-0.ic18", 0x00000, 0x40000, CRC(05bbb807) SHA1(1dc2ddd9ae498468a97e002f78e7f3a331d802d1) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU (Z80) */
ROM_LOAD( "31a11-2.ic42", 0x00000, 0x10000, CRC(5ddebfea) SHA1(30073963e965250d94f0dc3bd261a054850adf95) )
ROM_REGION( 0x80000, "oki", 0 ) /* ADPCM samples */
ROM_LOAD( "31j10.ic73", 0x00000, 0x80000, CRC(6c522edb) SHA1(8005d59c94160638ba2ea7caf4e991fff03003d5) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* FG0 Tiles (8x8) */
ROM_LOAD( "31e12-0.ic33", 0x00000, 0x20000, CRC(06f22615) SHA1(2e9418e372da85ea597977d912d8b35753655f4e) )
ROM_REGION( 0x800000, "gfx2", 0 ) /* SPR Tiles (16x16), 27080 Mask ROM's */
ROM_LOAD( "31j3.ic9", 0x000000, 0x100000, CRC(e395cf1d) SHA1(241f98145e295993c9b6a44dc087a9b61fbc9a6f) ) /* Tiles 0 */
ROM_LOAD( "31j2.ic8", 0x100000, 0x100000, CRC(b5a97465) SHA1(08d82c29a5c02b83fdbd0bad649b74eb35ab7e54) ) /* Tiles 1 */
ROM_LOAD( "31j5.ic11", 0x200000, 0x100000, CRC(2ce545e8) SHA1(82173e58a8476a6fe9d2c990fce1f71af117a0ea) ) /* Tiles 0 */
ROM_LOAD( "31j4.ic10", 0x300000, 0x100000, CRC(00edb66a) SHA1(926606d1923936b6e75391b1ab03b369d9822d13) ) /* Tiles 1 */
ROM_LOAD( "31j6.ic12", 0x400000, 0x100000, CRC(79956cf8) SHA1(52207263620a6b6dde66d3f8749b772577899ea5) ) /* Tiles 0 */
ROM_LOAD( "31j7.ic13", 0x500000, 0x100000, CRC(74d774c3) SHA1(a723ac5d481bf91b12e17652fbb2d869c886dec0) ) /* Tiles 1 */
ROM_LOAD( "31j9.ic15", 0x600000, 0x100000, CRC(dd387289) SHA1(2cad42d4e7cd1a49346f844058ae18c38bc686a8) ) /* Tiles 0 */
ROM_LOAD( "31j8.ic14", 0x700000, 0x100000, CRC(44abe127) SHA1(c723e1dea117534e976d2d383e634faf073cd57b) ) /* Tiles 1 */
ROM_REGION( 0x80000, "gfx3", 0 ) /* BG0 / BG1 Tiles (16x16) */
ROM_LOAD( "31j0.ic1", 0x40000, 0x40000, CRC(8a12b450) SHA1(2e15c949efcda8bb6f11afe3ff07ba1dee9c771c) ) /* 0,1 */
ROM_LOAD( "31j1.ic2", 0x00000, 0x40000, CRC(82ed7155) SHA1(b338e1150ffe3277c11d4d6e801a7d3bd7c58492) ) /* 2,3 */
ROM_END
/*************************************
*
* Game driver(s)
@ -983,8 +1441,15 @@ GAME( 1990, ddragon3, 0, ddragon3, ddragon3, driver_device, 0, ROT0, "Tec
GAME( 1990, ddragon3j,ddragon3, ddragon3, ddragon3, driver_device, 0, ROT0, "Technos Japan", "Double Dragon 3 - The Rosetta Stone (Japan)", GAME_SUPPORTS_SAVE )
GAME( 1990, ddragon3p,ddragon3, ddragon3, ddragon3, driver_device, 0, ROT0, "Technos Japan", "Double Dragon 3 - The Rosetta Stone (prototype)", GAME_SUPPORTS_SAVE )
GAME( 1990, ddragon3b,ddragon3, ddragon3b,ddragon3b, driver_device,0, ROT0, "bootleg", "Double Dragon 3 - The Rosetta Stone (bootleg)", GAME_SUPPORTS_SAVE )
GAME( 1990, ctribe, 0, ctribe, ctribe, driver_device, 0, ROT0, "Technos Japan", "The Combatribes (US)", GAME_SUPPORTS_SAVE )
GAME( 1990, ctribe1, ctribe, ctribe, ctribe, driver_device, 0, ROT0, "Technos Japan", "The Combatribes (US set 1?)", GAME_SUPPORTS_SAVE )
GAME( 1990, ctribej, ctribe, ctribe, ctribe, driver_device, 0, ROT0, "Technos Japan", "The Combatribes (Japan)", GAME_SUPPORTS_SAVE )
GAME( 1990, ctribeb, ctribe, ctribe, ctribeb, driver_device, 0, ROT0, "bootleg", "The Combatribes (bootleg set 1)", GAME_SUPPORTS_SAVE )
GAME( 1990, ctribeb2, ctribe, ctribe, ctribeb, driver_device, 0, ROT0, "bootleg", "The Combatribes (bootleg set 2)", GAME_SUPPORTS_SAVE )
GAME( 1991, wwfwfest, 0, wwfwfest, wwfwfest, driver_device, 0, ROT0, "Technos Japan", "WWF WrestleFest (US set 1)", GAME_SUPPORTS_SAVE )
GAME( 1991, wwfwfesta, wwfwfest, wwfwfest, wwfwfest, driver_device, 0, ROT0, "Technos Japan (Tecmo license)", "WWF WrestleFest (US Tecmo)", GAME_SUPPORTS_SAVE )
GAME( 1991, wwfwfestb, wwfwfest, wwfwfstb, wwfwfest, driver_device, 0, ROT0, "bootleg", "WWF WrestleFest (US bootleg)", GAME_SUPPORTS_SAVE )
GAME( 1991, wwfwfestj, wwfwfest, wwfwfest, wwfwfesta, driver_device, 0, ROT0, "Technos Japan (Tecmo license)", "WWF WrestleFest (Japan)", GAME_SUPPORTS_SAVE )
GAME( 1991, wwfwfestk, wwfwfest, wwfwfest, wwfwfesta, driver_device, 0, ROT0, "Technos Japan (Tecmo license)", "WWF WrestleFest (Korea)", GAME_SUPPORTS_SAVE )

View File

@ -1,616 +0,0 @@
/*******************************************************************************
WWF Wrestlefest (C) 1991 Technos Japan (drivers/wwfwfest.c)
********************************************************************************
driver by David Haywood
Special Thanks to:
Richard Bush & the Rest of the Raine Team - Raine's WWF Wrestlefest driver on
which some of this driver has been based.
********************************************************************************
Hardware:
Primary CPU : 68000 - 12MHz
Sound CPUs : Z80 - 3.579MHz
Sound Chips : YM2151, M6295
4 Layers from now on if mentioned will be referred to as
BG0 - Background Layer 0
BG1 - Background Layer 1
SPR - Sprites
FG0 - Foreground / Text Layer
Priorities of BG0, BG1 and SPR can be changed
********************************************************************************
Change Log:
20 Jun 2001 | Did Pretty Much everything else, the game is now playable.
19 Jun 2001 | Started the driver, based on Raine, the WWF Superstars driver,
| and the Double Dragon 3 Driver, got most of the basics done,
| the game will boot showing some graphics.
*******************************************************************************/
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h"
#include "includes/wwfwfest.h"
#include "sound/2151intf.h"
#include "sound/okim6295.h"
#define MASTER_CLOCK XTAL_24MHz
#define CPU_CLOCK MASTER_CLOCK / 2
#define PIXEL_CLOCK MASTER_CLOCK / 4
/*- in this file -*/
/*******************************************************************************
Memory Maps
********************************************************************************
Pretty Straightforward
still some unknown writes however, sound cpu memory map is the same as dd3
*******************************************************************************/
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, wwfwfest_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x0c0000, 0x0c1fff) AM_RAM_WRITE(wwfwfest_fg0_videoram_w) AM_SHARE("fg0_videoram") /* FG0 Ram - 4 bytes per tile */
AM_RANGE(0x0c2000, 0x0c3fff) AM_RAM AM_SHARE("spriteram") /* SPR Ram */
AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(wwfwfest_bg0_videoram_w) AM_SHARE("bg0_videoram") /* BG0 Ram - 4 bytes per tile */
AM_RANGE(0x082000, 0x082fff) AM_RAM_WRITE(wwfwfest_bg1_videoram_w) AM_SHARE("bg1_videoram") /* BG1 Ram - 2 bytes per tile */
AM_RANGE(0x100000, 0x100007) AM_WRITE(wwfwfest_scroll_write)
AM_RANGE(0x10000a, 0x10000b) AM_WRITE(wwfwfest_flipscreen_w)
AM_RANGE(0x140000, 0x140003) AM_WRITE(wwfwfest_irq_ack_w)
AM_RANGE(0x14000c, 0x14000d) AM_WRITE(wwfwfest_soundwrite)
AM_RANGE(0x140010, 0x140011) AM_WRITE(wwfwfest_1410_write)
AM_RANGE(0x140020, 0x140021) AM_READ_PORT("P1")
AM_RANGE(0x140022, 0x140023) AM_READ_PORT("P2")
AM_RANGE(0x140024, 0x140025) AM_READ_PORT("P3")
AM_RANGE(0x140026, 0x140027) AM_READ_PORT("P4")
AM_RANGE(0x180000, 0x18ffff) AM_READWRITE(wwfwfest_paletteram16_xxxxBBBBGGGGRRRR_word_r,wwfwfest_paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* Work Ram */
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, wwfwfest_state )
AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xc7ff) AM_RAM
AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0xd800, 0xd800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_byte_r)
AM_RANGE(0xe800, 0xe800) AM_WRITE(oki_bankswitch_w)
ADDRESS_MAP_END
/*******************************************************************************
Read / Write Handlers
********************************************************************************
as used by the above memory map
*******************************************************************************/
WRITE16_MEMBER(wwfwfest_state::wwfwfest_irq_ack_w)
{
if (offset == 0)
m_maincpu->set_input_line(3, CLEAR_LINE);
else
m_maincpu->set_input_line(2, CLEAR_LINE);
}
WRITE16_MEMBER(wwfwfest_state::wwfwfest_flipscreen_w)
{
flip_screen_set(data&1);
}
/*- Palette Reads/Writes -*/
READ16_MEMBER(wwfwfest_state::wwfwfest_paletteram16_xxxxBBBBGGGGRRRR_word_r)
{
offset = (offset & 0x000f) | (offset & 0x7fc0) >> 2;
return m_generic_paletteram_16[offset];
}
WRITE16_MEMBER(wwfwfest_state::wwfwfest_paletteram16_xxxxBBBBGGGGRRRR_word_w)
{
offset = (offset & 0x000f) | (offset & 0x7fc0) >> 2;
paletteram_xxxxBBBBGGGGRRRR_word_w (space, offset, data, mem_mask);
}
/*- Priority Control -*/
WRITE16_MEMBER(wwfwfest_state::wwfwfest_1410_write)
{
m_pri = data;
}
/*- Scroll Control -*/
WRITE16_MEMBER(wwfwfest_state::wwfwfest_scroll_write)
{
switch (offset) {
case 0x00:
m_bg0_scrollx = data;
break;
case 0x01:
m_bg0_scrolly = data;
break;
case 0x02:
m_bg1_scrollx = data;
break;
case 0x03:
m_bg1_scrolly = data;
break;
}
}
/*- Sound Related (from dd3) -*/
WRITE8_MEMBER(wwfwfest_state::oki_bankswitch_w)
{
m_oki->set_bank_base((data & 1) * 0x40000);
}
WRITE16_MEMBER(wwfwfest_state::wwfwfest_soundwrite)
{
soundlatch_byte_w(space,1,data & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE );
}
/*******************************************************************************
Input Ports
********************************************************************************
There are 4 players, 2 sets of dipswitches and 2 misc
*******************************************************************************/
/* DIPs are spread across the other input ports */
CUSTOM_INPUT_MEMBER(wwfwfest_state::dsw_3f_r)
{
const char *tag = (const char *)param;
return ioport(tag)->read() & 0x3f;
}
CUSTOM_INPUT_MEMBER(wwfwfest_state::dsw_c0_r)
{
const char *tag = (const char *)param;
return (ioport(tag)->read() & 0xc0) >> 6;
}
static INPUT_PORTS_START( wwfwfest )
PORT_START("P1")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x3000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, wwfwfest_state,dsw_c0_r, "DSW2")
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P2")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x3f00, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, wwfwfest_state,dsw_3f_r, "DSW2")
PORT_START("P3")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(3)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(3)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(3)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(3)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START3 )
PORT_BIT( 0x3f00, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, wwfwfest_state,dsw_3f_r, "DSW1")
PORT_START("P4")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(4)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(4)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(4)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(4)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START4 )
PORT_BIT( 0x0300, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, wwfwfest_state,dsw_c0_r, "DSW1")
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
/* Nb: There are actually 3 dips on the board, 2 * 8, and 1 *4 */
PORT_START("DSW1")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2")
PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x04, 0x04, "Buy In Price" ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x04, "1 Coin" )
PORT_DIPSETTING( 0x00, "As start price" )
PORT_DIPNAME( 0x08, 0x08, "Regain Power Price" ) PORT_DIPLOCATION("SW1:4")
PORT_DIPSETTING( 0x08, "1 Coin" )
PORT_DIPSETTING( 0x00, "As start price" )
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Continue_Price ) ) PORT_DIPLOCATION("SW1:5")
PORT_DIPSETTING( 0x10, "1 Coin" )
PORT_DIPSETTING( 0x00, "As start price" )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:6")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:7")
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "FBI Logo" ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
PORT_START("DSW2")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2")
PORT_DIPSETTING( 0x02, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x03, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x01, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Players ) ) PORT_DIPLOCATION("SW2:3,4") /* Nothing listed for seting ON/ON IE:0x00 */
PORT_DIPSETTING( 0x04, "2" )
PORT_DIPSETTING( 0x08, "3" )
PORT_DIPSETTING( 0x0c, "4" )
PORT_DIPUNUSED_DIPLOC( 0x10, IP_ACTIVE_LOW, "SW2:5" )
PORT_DIPNAME( 0x60, 0x60, "Clear Stage Power Up" ) PORT_DIPLOCATION("SW2:6,7")
PORT_DIPSETTING( 0x00, "0" )
PORT_DIPSETTING( 0x20, "12" )
PORT_DIPSETTING( 0x60, "24" )
PORT_DIPSETTING( 0x40, "32" )
PORT_DIPNAME( 0x80, 0x80, "Championship Game" ) PORT_DIPLOCATION("SW2:8")
PORT_DIPSETTING( 0x00, "4th" )
PORT_DIPSETTING( 0x80, "5th" )
INPUT_PORTS_END
static INPUT_PORTS_START( wwfwfesta )
PORT_INCLUDE(wwfwfest)
PORT_MODIFY("DSW1")
PORT_DIPNAME( 0x80, 0x00, "FBI Logo" ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
INPUT_PORTS_END
/*******************************************************************************
Graphic Decoding
*******************************************************************************/
static const gfx_layout tiles8x8_layout =
{
8,8,
RGN_FRAC(1,1),
4,
{ 0, 2, 4, 6 },
{ 1, 0, 8*8+1, 8*8+0, 16*8+1, 16*8+0, 24*8+1, 24*8+0 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
32*8
};
static const gfx_layout tile_layout =
{
16,16, /* 16*16 tiles */
4096, /* 8192 tiles */
4, /* 4 bits per pixel */
{ 8, 0, 0x40000*8+8 , 0x40000*8+0 }, /* the bitplanes are separated */
{ 0, 1, 2, 3, 4, 5, 6, 7,
32*8+0, 32*8+1, 32*8+2, 32*8+3, 32*8+4, 32*8+5, 32*8+6, 32*8+7 },
{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
16*8, 16*9, 16*10, 16*11, 16*12, 16*13, 16*14, 16*15 },
64*8 /* every tile takes 64 consecutive bytes */
};
static const gfx_layout sprite_layout = {
16,16, /* 16*16 tiles */
RGN_FRAC(1,4),
4, /* 4 bits per pixel */
{ 0, 0x200000*8, 2*0x200000*8 , 3*0x200000*8 }, /* the bitplanes are separated */
{ 0, 1, 2, 3, 4, 5, 6, 7,
16*8+0, 16*8+1, 16*8+2, 16*8+3, 16*8+4, 16*8+5, 16*8+6, 16*8+7 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
32*8 /* every tile takes 32 consecutive bytes */
};
static GFXDECODE_START( wwfwfest )
GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0x0000, 16 )
GFXDECODE_ENTRY( "gfx2", 0, sprite_layout, 0x0400, 16 )
GFXDECODE_ENTRY( "gfx3", 0, tile_layout, 0x1000, 16 )
GFXDECODE_ENTRY( "gfx3", 0, tile_layout, 0x0c00, 16 )
GFXDECODE_END
/*******************************************************************************
Interrupt Function
*******************************************************************************/
TIMER_DEVICE_CALLBACK_MEMBER(wwfwfest_state::wwfwfest_scanline)
{
int scanline = param;
/* An interrupt is generated every 16 scanlines */
if (scanline % 16 == 0)
{
if (scanline > 0)
m_screen->update_partial(scanline - 1);
m_maincpu->set_input_line(2, ASSERT_LINE);
}
/* Vblank is raised on scanline 248 */
if (scanline == 248)
{
m_screen->update_partial(scanline - 1);
m_maincpu->set_input_line(3, ASSERT_LINE);
}
}
/*******************************************************************************
Machine Driver(s)
*******************************************************************************/
static MACHINE_CONFIG_START( wwfwfest, wwfwfest_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, CPU_CLOCK) /* 24 crystal, 12 rated chip */
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", wwfwfest_state, wwfwfest_scanline, "screen", 0, 1)
MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz)
MCFG_CPU_PROGRAM_MAP(sound_map)
/* video hardware */
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 320, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */
MCFG_SCREEN_UPDATE_DRIVER(wwfwfest_state, screen_update_wwfwfest)
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE(wwfwfest)
MCFG_PALETTE_LENGTH(8192)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "mono", 0.45)
MCFG_SOUND_ROUTE(1, "mono", 0.45)
MCFG_OKIM6295_ADD("oki", 1024188, OKIM6295_PIN7_HIGH) /* Verified - Pin 7 tied to +5VDC */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( wwfwfstb, wwfwfest )
MCFG_VIDEO_START_OVERRIDE(wwfwfest_state,wwfwfstb)
MACHINE_CONFIG_END
/*******************************************************************************
Rom Loaders / Game Drivers
********************************************************************************
5 sets supported,
wwfwfest - US Set (Technos only copyright for US distribution?)
wwfwfesta - World? Set (Tecmo License / Distribution for outside the US?)
wwfwfestj - Japan Set (Japanese text at "Game Select" screen)
wwfwfestk - Korean Set (Shows "KOREA ONLY" on manufacturer's screen)
readme / info files below
--------------------------------------------------------------------------------
wwfwfstj: README.TXT
--------------------------------------------------------------------------------
Wrestlefest
Technos 1991
TA-0031
68000-12
31J0_IC1 6264 6264 31A14-2 31A13-2 6264 6264 31A12-0 24MHz
31J1_IC2
TJ-002 TJ-004
6264 SW1
28MHz SW2
SW3
61C16-35
61C16-35 61C16-35
31J2_IC8
31J3_IC9
31J4_IC10
31J5_IC11
31J6_IC12
31J7_IC13
31J8_IC14 TJ-003 31A11-2 M6295 31J10_IC73
31J9_IC15 61C16-35 61C16-35 Z80 YM2151
Clock Crystals:
X1 - 28.000 MHz
X2 - 3.579545 MHz (for Z80)
X3 - 24.000 MHz (for 68000)
X4 - 1.056 MHz (not used, initially intended for OKI6295?)
The mask roms at IC1 and IC2 have the same pinouts as a MX27C4100 or M27C400
except pin 1 is not A17 but instead not used (not connected).
*******************************************************************************/
ROM_START( wwfwfest )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Main CPU (68000) */
ROM_LOAD16_BYTE( "31a13-2.ic19", 0x00001, 0x40000, CRC(7175bca7) SHA1(992b47a787b5bc2a5a381ec78b8dfaf7d42c614b) )
ROM_LOAD16_BYTE( "31a14-2.ic18", 0x00000, 0x40000, CRC(5d06bfd1) SHA1(39a93da662158aa5a9953dcabfcb47c2fc196dc7) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU (Z80) */
ROM_LOAD( "31a11-2.ic42", 0x00000, 0x10000, CRC(5ddebfea) SHA1(30073963e965250d94f0dc3bd261a054850adf95) )
ROM_REGION( 0x80000, "oki", 0 ) /* ADPCM samples */
ROM_LOAD( "31j10.ic73", 0x00000, 0x80000, CRC(6c522edb) SHA1(8005d59c94160638ba2ea7caf4e991fff03003d5) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* FG0 Tiles (8x8) */
ROM_LOAD( "31a12-0.ic33", 0x00000, 0x20000, CRC(d0803e20) SHA1(b68758e9a5522396f831a3972571f8aed54c64de) )
ROM_REGION( 0x800000, "gfx2", 0 ) /* SPR Tiles (16x16), 27080 Mask ROM's */
ROM_LOAD( "31j3.ic9", 0x000000, 0x100000, CRC(e395cf1d) SHA1(241f98145e295993c9b6a44dc087a9b61fbc9a6f) ) /* Tiles 0 */
ROM_LOAD( "31j2.ic8", 0x100000, 0x100000, CRC(b5a97465) SHA1(08d82c29a5c02b83fdbd0bad649b74eb35ab7e54) ) /* Tiles 1 */
ROM_LOAD( "31j5.ic11", 0x200000, 0x100000, CRC(2ce545e8) SHA1(82173e58a8476a6fe9d2c990fce1f71af117a0ea) ) /* Tiles 0 */
ROM_LOAD( "31j4.ic10", 0x300000, 0x100000, CRC(00edb66a) SHA1(926606d1923936b6e75391b1ab03b369d9822d13) ) /* Tiles 1 */
ROM_LOAD( "31j6.ic12", 0x400000, 0x100000, CRC(79956cf8) SHA1(52207263620a6b6dde66d3f8749b772577899ea5) ) /* Tiles 0 */
ROM_LOAD( "31j7.ic13", 0x500000, 0x100000, CRC(74d774c3) SHA1(a723ac5d481bf91b12e17652fbb2d869c886dec0) ) /* Tiles 1 */
ROM_LOAD( "31j9.ic15", 0x600000, 0x100000, CRC(dd387289) SHA1(2cad42d4e7cd1a49346f844058ae18c38bc686a8) ) /* Tiles 0 */
ROM_LOAD( "31j8.ic14", 0x700000, 0x100000, CRC(44abe127) SHA1(c723e1dea117534e976d2d383e634faf073cd57b) ) /* Tiles 1 */
ROM_REGION( 0x80000, "gfx3", 0 ) /* BG0 / BG1 Tiles (16x16) */
ROM_LOAD( "31j0.ic1", 0x40000, 0x40000, CRC(8a12b450) SHA1(2e15c949efcda8bb6f11afe3ff07ba1dee9c771c) ) /* 0,1 */
ROM_LOAD( "31j1.ic2", 0x00000, 0x40000, CRC(82ed7155) SHA1(b338e1150ffe3277c11d4d6e801a7d3bd7c58492) ) /* 2,3 */
ROM_END
ROM_START( wwfwfesta )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Main CPU (68000) */
ROM_LOAD16_BYTE( "wf_18.rom", 0x00000, 0x40000, CRC(933ea1a0) SHA1(61da142cfa7abd3b77ab21979c061a078c0d0c63) )
ROM_LOAD16_BYTE( "wf_19.rom", 0x00001, 0x40000, CRC(bd02e3c4) SHA1(7ae63e48caf9919ce7b63b4c5aa9474ba8c336da) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU (Z80) */
ROM_LOAD( "31a11-2.ic42", 0x00000, 0x10000, CRC(5ddebfea) SHA1(30073963e965250d94f0dc3bd261a054850adf95) )
ROM_REGION( 0x80000, "oki", 0 ) /* ADPCM samples */
ROM_LOAD( "31j10.ic73", 0x00000, 0x80000, CRC(6c522edb) SHA1(8005d59c94160638ba2ea7caf4e991fff03003d5) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* FG0 Tiles (8x8) */
ROM_LOAD( "31e12-0.ic33", 0x00000, 0x20000, CRC(06f22615) SHA1(2e9418e372da85ea597977d912d8b35753655f4e) )
ROM_REGION( 0x800000, "gfx2", 0 ) /* SPR Tiles (16x16), 27080 Mask ROM's */
ROM_LOAD( "31j3.ic9", 0x000000, 0x100000, CRC(e395cf1d) SHA1(241f98145e295993c9b6a44dc087a9b61fbc9a6f) ) /* Tiles 0 */
ROM_LOAD( "31j2.ic8", 0x100000, 0x100000, CRC(b5a97465) SHA1(08d82c29a5c02b83fdbd0bad649b74eb35ab7e54) ) /* Tiles 1 */
ROM_LOAD( "31j5.ic11", 0x200000, 0x100000, CRC(2ce545e8) SHA1(82173e58a8476a6fe9d2c990fce1f71af117a0ea) ) /* Tiles 0 */
ROM_LOAD( "31j4.ic10", 0x300000, 0x100000, CRC(00edb66a) SHA1(926606d1923936b6e75391b1ab03b369d9822d13) ) /* Tiles 1 */
ROM_LOAD( "31j6.ic12", 0x400000, 0x100000, CRC(79956cf8) SHA1(52207263620a6b6dde66d3f8749b772577899ea5) ) /* Tiles 0 */
ROM_LOAD( "31j7.ic13", 0x500000, 0x100000, CRC(74d774c3) SHA1(a723ac5d481bf91b12e17652fbb2d869c886dec0) ) /* Tiles 1 */
ROM_LOAD( "31j9.ic15", 0x600000, 0x100000, CRC(dd387289) SHA1(2cad42d4e7cd1a49346f844058ae18c38bc686a8) ) /* Tiles 0 */
ROM_LOAD( "31j8.ic14", 0x700000, 0x100000, CRC(44abe127) SHA1(c723e1dea117534e976d2d383e634faf073cd57b) ) /* Tiles 1 */
ROM_REGION( 0x80000, "gfx3", 0 ) /* BG0 / BG1 Tiles (16x16) */
ROM_LOAD( "31j0.ic1", 0x40000, 0x40000, CRC(8a12b450) SHA1(2e15c949efcda8bb6f11afe3ff07ba1dee9c771c) ) /* 0,1 */
ROM_LOAD( "31j1.ic2", 0x00000, 0x40000, CRC(82ed7155) SHA1(b338e1150ffe3277c11d4d6e801a7d3bd7c58492) ) /* 2,3 */
ROM_END
ROM_START( wwfwfestb )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Main CPU (68000) */
ROM_LOAD16_BYTE( "3", 0x00000, 0x40000, CRC(ea73369c) SHA1(be614a342f9014251810fa30ec56fec03f7c8ef3) )
ROM_LOAD16_BYTE( "2", 0x00001, 0x40000, CRC(632bb3a4) SHA1(9c04fed5aeefc683810cfbd9b3318e155ed9813f) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU (Z80) */
ROM_LOAD( "1", 0x00000, 0x10000, CRC(d9e8cda2) SHA1(754c73cd341d51ffd35cdb62155a3f061416c9ba) )
ROM_REGION( 0x80000, "oki", 0 ) /* ADPCM samples */
ROM_LOAD( "wf_73a.rom", 0x00000, 0x80000, CRC(6c522edb) SHA1(8005d59c94160638ba2ea7caf4e991fff03003d5) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* FG0 Tiles (8x8) */
ROM_LOAD( "4", 0x00000, 0x20000, CRC(520ef575) SHA1(99a5e9b94e9234851c6b504d58939ad84e0d6589) )
ROM_REGION( 0x800000, "gfx2", 0 ) /* SPR Tiles (16x16) */
ROM_LOAD( "wf_09.rom", 0x000000, 0x100000, CRC(e395cf1d) SHA1(241f98145e295993c9b6a44dc087a9b61fbc9a6f) ) /* Tiles 0 */
ROM_LOAD( "wf_08.rom", 0x100000, 0x100000, CRC(b5a97465) SHA1(08d82c29a5c02b83fdbd0bad649b74eb35ab7e54) ) /* Tiles 1 */
ROM_LOAD( "wf_11.rom", 0x200000, 0x100000, CRC(2ce545e8) SHA1(82173e58a8476a6fe9d2c990fce1f71af117a0ea) ) /* Tiles 0 */
ROM_LOAD( "wf_10.rom", 0x300000, 0x100000, CRC(00edb66a) SHA1(926606d1923936b6e75391b1ab03b369d9822d13) ) /* Tiles 1 */
ROM_LOAD( "wf_12.rom", 0x400000, 0x100000, CRC(79956cf8) SHA1(52207263620a6b6dde66d3f8749b772577899ea5) ) /* Tiles 0 */
ROM_LOAD( "wf_13.rom", 0x500000, 0x100000, CRC(74d774c3) SHA1(a723ac5d481bf91b12e17652fbb2d869c886dec0) ) /* Tiles 1 */
ROM_LOAD( "wf_15.rom", 0x600000, 0x100000, CRC(dd387289) SHA1(2cad42d4e7cd1a49346f844058ae18c38bc686a8) ) /* Tiles 0 */
ROM_LOAD( "wf_14.rom", 0x700000, 0x100000, CRC(44abe127) SHA1(c723e1dea117534e976d2d383e634faf073cd57b) ) /* Tiles 1 */
ROM_REGION( 0x80000, "gfx3", 0 ) /* BG0 / BG1 Tiles (16x16) */
ROM_LOAD16_BYTE( "5", 0x40000, 0x20000, CRC(35e4d6eb) SHA1(d2a12bde268bc0734e6806ff5302b8c3dcc17280) ) /* 0 */
ROM_LOAD16_BYTE( "6", 0x40001, 0x20000, CRC(a054a5b2) SHA1(d6ed5d5a20acb7cdbaee8e3f520873650529c0ae) ) /* 1 */
ROM_LOAD16_BYTE( "7", 0x00000, 0x20000, CRC(101f0136) SHA1(2ccd641e49cdd3f5243ebe8c52c492842d62f5b8) ) /* 2 */
ROM_LOAD16_BYTE( "8", 0x00001, 0x20000, CRC(7b2ecba7) SHA1(1ed2451132448930ac4afcdc67ca14e3e922863e) ) /* 3 */
ROM_END
ROM_START( wwfwfestj )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Main CPU (68000) */
ROM_LOAD16_BYTE( "31j13-0.ic19", 0x00001, 0x40000, CRC(2147780d) SHA1(9a7a5db06117f3780e084d3f0c7b642ff8a9db55) )
ROM_LOAD16_BYTE( "31j14-0.ic18", 0x00000, 0x40000, CRC(d76fc747) SHA1(5f6819bc61756d1df4ac0776ac420a59c438cf8a) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU (Z80) */
ROM_LOAD( "31a11-2.ic42", 0x00000, 0x10000, CRC(5ddebfea) SHA1(30073963e965250d94f0dc3bd261a054850adf95) )
ROM_REGION( 0x80000, "oki", 0 ) /* ADPCM samples */
ROM_LOAD( "31j10.ic73", 0x00000, 0x80000, CRC(6c522edb) SHA1(8005d59c94160638ba2ea7caf4e991fff03003d5) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* FG0 Tiles (8x8) */
ROM_LOAD( "31j12-0.ic33", 0x00000, 0x20000, CRC(f4821fe0) SHA1(e5faa9860e9d4e75393b64ca85a8bfc4852fd4fd) )
ROM_REGION( 0x800000, "gfx2", 0 ) /* SPR Tiles (16x16), 27080 Mask ROM's */
ROM_LOAD( "31j3.ic9", 0x000000, 0x100000, CRC(e395cf1d) SHA1(241f98145e295993c9b6a44dc087a9b61fbc9a6f) ) /* Tiles 0 */
ROM_LOAD( "31j2.ic8", 0x100000, 0x100000, CRC(b5a97465) SHA1(08d82c29a5c02b83fdbd0bad649b74eb35ab7e54) ) /* Tiles 1 */
ROM_LOAD( "31j5.ic11", 0x200000, 0x100000, CRC(2ce545e8) SHA1(82173e58a8476a6fe9d2c990fce1f71af117a0ea) ) /* Tiles 0 */
ROM_LOAD( "31j4.ic10", 0x300000, 0x100000, CRC(00edb66a) SHA1(926606d1923936b6e75391b1ab03b369d9822d13) ) /* Tiles 1 */
ROM_LOAD( "31j6.ic12", 0x400000, 0x100000, CRC(79956cf8) SHA1(52207263620a6b6dde66d3f8749b772577899ea5) ) /* Tiles 0 */
ROM_LOAD( "31j7.ic13", 0x500000, 0x100000, CRC(74d774c3) SHA1(a723ac5d481bf91b12e17652fbb2d869c886dec0) ) /* Tiles 1 */
ROM_LOAD( "31j9.ic15", 0x600000, 0x100000, CRC(dd387289) SHA1(2cad42d4e7cd1a49346f844058ae18c38bc686a8) ) /* Tiles 0 */
ROM_LOAD( "31j8.ic14", 0x700000, 0x100000, CRC(44abe127) SHA1(c723e1dea117534e976d2d383e634faf073cd57b) ) /* Tiles 1 */
ROM_REGION( 0x80000, "gfx3", 0 ) /* BG0 / BG1 Tiles (16x16) */
ROM_LOAD( "31j0.ic1", 0x40000, 0x40000, CRC(8a12b450) SHA1(2e15c949efcda8bb6f11afe3ff07ba1dee9c771c) ) /* 0,1 */
ROM_LOAD( "31j1.ic2", 0x00000, 0x40000, CRC(82ed7155) SHA1(b338e1150ffe3277c11d4d6e801a7d3bd7c58492) ) /* 2,3 */
ROM_END
ROM_START( wwfwfestk )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Main CPU (68000) */
ROM_LOAD16_BYTE( "31e13-0.ic19", 0x00001, 0x40000, CRC(774a26a7) SHA1(30e00bff9027a0ae971f8820ca6c3e4cdea82994) )
ROM_LOAD16_BYTE( "31e14-0.ic18", 0x00000, 0x40000, CRC(05bbb807) SHA1(1dc2ddd9ae498468a97e002f78e7f3a331d802d1) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU (Z80) */
ROM_LOAD( "31a11-2.ic42", 0x00000, 0x10000, CRC(5ddebfea) SHA1(30073963e965250d94f0dc3bd261a054850adf95) )
ROM_REGION( 0x80000, "oki", 0 ) /* ADPCM samples */
ROM_LOAD( "31j10.ic73", 0x00000, 0x80000, CRC(6c522edb) SHA1(8005d59c94160638ba2ea7caf4e991fff03003d5) )
ROM_REGION( 0x20000, "gfx1", 0 ) /* FG0 Tiles (8x8) */
ROM_LOAD( "31e12-0.ic33", 0x00000, 0x20000, CRC(06f22615) SHA1(2e9418e372da85ea597977d912d8b35753655f4e) )
ROM_REGION( 0x800000, "gfx2", 0 ) /* SPR Tiles (16x16), 27080 Mask ROM's */
ROM_LOAD( "31j3.ic9", 0x000000, 0x100000, CRC(e395cf1d) SHA1(241f98145e295993c9b6a44dc087a9b61fbc9a6f) ) /* Tiles 0 */
ROM_LOAD( "31j2.ic8", 0x100000, 0x100000, CRC(b5a97465) SHA1(08d82c29a5c02b83fdbd0bad649b74eb35ab7e54) ) /* Tiles 1 */
ROM_LOAD( "31j5.ic11", 0x200000, 0x100000, CRC(2ce545e8) SHA1(82173e58a8476a6fe9d2c990fce1f71af117a0ea) ) /* Tiles 0 */
ROM_LOAD( "31j4.ic10", 0x300000, 0x100000, CRC(00edb66a) SHA1(926606d1923936b6e75391b1ab03b369d9822d13) ) /* Tiles 1 */
ROM_LOAD( "31j6.ic12", 0x400000, 0x100000, CRC(79956cf8) SHA1(52207263620a6b6dde66d3f8749b772577899ea5) ) /* Tiles 0 */
ROM_LOAD( "31j7.ic13", 0x500000, 0x100000, CRC(74d774c3) SHA1(a723ac5d481bf91b12e17652fbb2d869c886dec0) ) /* Tiles 1 */
ROM_LOAD( "31j9.ic15", 0x600000, 0x100000, CRC(dd387289) SHA1(2cad42d4e7cd1a49346f844058ae18c38bc686a8) ) /* Tiles 0 */
ROM_LOAD( "31j8.ic14", 0x700000, 0x100000, CRC(44abe127) SHA1(c723e1dea117534e976d2d383e634faf073cd57b) ) /* Tiles 1 */
ROM_REGION( 0x80000, "gfx3", 0 ) /* BG0 / BG1 Tiles (16x16) */
ROM_LOAD( "31j0.ic1", 0x40000, 0x40000, CRC(8a12b450) SHA1(2e15c949efcda8bb6f11afe3ff07ba1dee9c771c) ) /* 0,1 */
ROM_LOAD( "31j1.ic2", 0x00000, 0x40000, CRC(82ed7155) SHA1(b338e1150ffe3277c11d4d6e801a7d3bd7c58492) ) /* 2,3 */
ROM_END
GAME( 1991, wwfwfest, 0, wwfwfest, wwfwfest, driver_device, 0, ROT0, "Technos Japan", "WWF WrestleFest (US set 1)", GAME_SUPPORTS_SAVE )
GAME( 1991, wwfwfesta, wwfwfest, wwfwfest, wwfwfest, driver_device, 0, ROT0, "Technos Japan (Tecmo license)", "WWF WrestleFest (US Tecmo)", GAME_SUPPORTS_SAVE )
GAME( 1991, wwfwfestb, wwfwfest, wwfwfstb, wwfwfest, driver_device, 0, ROT0, "bootleg", "WWF WrestleFest (US bootleg)", GAME_SUPPORTS_SAVE )
GAME( 1991, wwfwfestj, wwfwfest, wwfwfest, wwfwfesta, driver_device, 0, ROT0, "Technos Japan (Tecmo license)", "WWF WrestleFest (Japan)", GAME_SUPPORTS_SAVE )
GAME( 1991, wwfwfestk, wwfwfest, wwfwfest, wwfwfesta, driver_device, 0, ROT0, "Technos Japan (Tecmo license)", "WWF WrestleFest (Korea)", GAME_SUPPORTS_SAVE )

View File

@ -4,6 +4,8 @@
*************************************************************************/
#include "sound/okim6295.h"
#include "video/bufsprite.h"
class ddragon3_state : public driver_device
{
@ -15,13 +17,19 @@ public:
m_spriteram(*this, "spriteram"),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_oki(*this, "oki"){ }
m_oki(*this, "oki")
{
vblank_level = 6;
raster_level = 5;
}
/* memory pointers */
required_shared_ptr<UINT16> m_bg_videoram;
required_shared_ptr<UINT16> m_fg_videoram;
required_shared_ptr<UINT16> m_spriteram;
// UINT16 * m_paletteram; // currently this uses generic palette handling
// required_shared_ptr<UINT16> m_spriteram;
required_device<buffered_spriteram16_device> m_spriteram;
// UINT16 * m_paletteram; // currently this uses generic palette handling
/* video-related */
tilemap_t *m_fg_tilemap;
@ -33,8 +41,13 @@ public:
UINT16 m_fg_scrolly;
UINT16 m_bg_tilebase;
UINT16 m_sprite_xoff;
UINT16 m_bg0_dx;
UINT16 m_bg1_dx[2];
/* misc */
UINT16 m_io_reg[8];
UINT16 m_pri;
/* devices */
required_device<cpu_device> m_maincpu;
@ -56,4 +69,44 @@ public:
UINT32 screen_update_ctribe(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(ddragon3_scanline);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
int vblank_level;
int raster_level;
};
class wwfwfest_state : public ddragon3_state
{
public:
wwfwfest_state(const machine_config &mconfig, device_type type, const char *tag)
: ddragon3_state(mconfig, type, tag),
m_fg0_videoram(*this, "fg0_videoram")
{
vblank_level = 3;
raster_level = 2;
}
/* wwfwfest has an extra layer */
required_shared_ptr<UINT16> m_fg0_videoram;
tilemap_t *m_fg0_tilemap;
DECLARE_WRITE16_MEMBER(wwfwfest_fg0_videoram_w);
//required_device<buffered_spriteram16_device> m_spriteram;
DECLARE_WRITE16_MEMBER(wwfwfest_1410_write);
DECLARE_WRITE16_MEMBER(wwfwfest_scroll_write);
DECLARE_WRITE16_MEMBER(wwfwfest_irq_ack_w);
DECLARE_WRITE16_MEMBER(wwfwfest_flipscreen_w);
DECLARE_READ16_MEMBER(wwfwfest_paletteram16_xxxxBBBBGGGGRRRR_word_r);
DECLARE_WRITE16_MEMBER(wwfwfest_paletteram16_xxxxBBBBGGGGRRRR_word_w);
DECLARE_WRITE16_MEMBER(wwfwfest_soundwrite);
DECLARE_CUSTOM_INPUT_MEMBER(dsw_3f_r);
DECLARE_CUSTOM_INPUT_MEMBER(dsw_c0_r);
TILE_GET_INFO_MEMBER(get_fg0_tile_info);
virtual void video_start();
DECLARE_VIDEO_START(wwfwfstb);
UINT32 screen_update_wwfwfest(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};

View File

@ -1,56 +0,0 @@
#include "video/bufsprite.h"
#include "sound/okim6295.h"
class wwfwfest_state : public driver_device
{
public:
wwfwfest_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_fg0_videoram(*this, "fg0_videoram"),
m_bg0_videoram(*this, "bg0_videoram"),
m_bg1_videoram(*this, "bg1_videoram"),
m_spriteram(*this, "spriteram") ,
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_oki(*this, "oki") { }
required_shared_ptr<UINT16> m_fg0_videoram;
required_shared_ptr<UINT16> m_bg0_videoram;
required_shared_ptr<UINT16> m_bg1_videoram;
UINT16 m_pri;
UINT16 m_bg0_scrollx;
UINT16 m_bg0_scrolly;
UINT16 m_bg1_scrollx;
UINT16 m_bg1_scrolly;
tilemap_t *m_fg0_tilemap;
tilemap_t *m_bg0_tilemap;
tilemap_t *m_bg1_tilemap;
UINT16 m_sprite_xoff;
UINT16 m_bg0_dx;
UINT16 m_bg1_dx[2];
required_device<buffered_spriteram16_device> m_spriteram;
DECLARE_WRITE16_MEMBER(wwfwfest_1410_write);
DECLARE_WRITE16_MEMBER(wwfwfest_scroll_write);
DECLARE_WRITE16_MEMBER(wwfwfest_irq_ack_w);
DECLARE_WRITE16_MEMBER(wwfwfest_flipscreen_w);
DECLARE_READ16_MEMBER(wwfwfest_paletteram16_xxxxBBBBGGGGRRRR_word_r);
DECLARE_WRITE16_MEMBER(wwfwfest_paletteram16_xxxxBBBBGGGGRRRR_word_w);
DECLARE_WRITE16_MEMBER(wwfwfest_soundwrite);
DECLARE_WRITE16_MEMBER(wwfwfest_fg0_videoram_w);
DECLARE_WRITE16_MEMBER(wwfwfest_bg0_videoram_w);
DECLARE_WRITE16_MEMBER(wwfwfest_bg1_videoram_w);
DECLARE_CUSTOM_INPUT_MEMBER(dsw_3f_r);
DECLARE_CUSTOM_INPUT_MEMBER(dsw_c0_r);
DECLARE_WRITE8_MEMBER(oki_bankswitch_w);
TILE_GET_INFO_MEMBER(get_fg0_tile_info);
TILE_GET_INFO_MEMBER(get_bg0_tile_info);
TILE_GET_INFO_MEMBER(get_bg1_tile_info);
virtual void video_start();
DECLARE_VIDEO_START(wwfwfstb);
UINT32 screen_update_wwfwfest(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(wwfwfest_scanline);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<okim6295_device> m_oki;
};

View File

@ -1814,7 +1814,6 @@ $(MAMEOBJ)/technos.a: \
$(DRIVERS)/tagteam.o $(VIDEO)/tagteam.o \
$(DRIVERS)/vball.o $(VIDEO)/vball.o \
$(DRIVERS)/wwfsstar.o $(VIDEO)/wwfsstar.o \
$(DRIVERS)/wwfwfest.o $(VIDEO)/wwfwfest.o \
$(DRIVERS)/xain.o $(VIDEO)/xain.o \
$(MAMEOBJ)/tehkan.a: \

View File

@ -40,117 +40,209 @@ READ16_MEMBER(ddragon3_state::ddragon3_scroll_r)
return 0;
}
/*****************************************************************************************************************************************************/
TILE_GET_INFO_MEMBER(ddragon3_state::get_bg_tile_info)
{
UINT16 attr = m_bg_videoram[tile_index];
int code = (attr & 0x0fff) | ((m_bg_tilebase & 0x01) << 12);
int color = ((attr & 0xf000) >> 12);
SET_TILE_INFO_MEMBER(0, code, color, 0);
}
WRITE16_MEMBER(ddragon3_state::ddragon3_bg_videoram_w)
{
COMBINE_DATA(&m_bg_videoram[offset]);
m_bg_tilemap->mark_tile_dirty(offset);
}
/*****************************************************************************************************************************************************/
TILE_GET_INFO_MEMBER(ddragon3_state::get_fg_tile_info)
{
UINT16 *tilebase;
int tileno,colbank;
tilebase = &m_fg_videoram[tile_index*2];
tileno = (tilebase[1] & 0x1fff);
colbank = (tilebase[0] & 0x000f);
SET_TILE_INFO_MEMBER(
1,
tileno,
colbank,
TILE_FLIPYX((tilebase[0] & 0x00c0) >> 6));
}
WRITE16_MEMBER(ddragon3_state::ddragon3_fg_videoram_w)
{
COMBINE_DATA(&m_fg_videoram[offset]);
m_fg_tilemap->mark_tile_dirty(offset / 2);
}
TILE_GET_INFO_MEMBER(ddragon3_state::get_bg_tile_info)
{
UINT16 attr = m_bg_videoram[tile_index];
int code = (attr & 0x0fff) | ((m_bg_tilebase & 0x01) << 12);
int color = ((attr & 0xf000) >> 12) + 16;
SET_TILE_INFO_MEMBER(0, code, color, 0);
/*****************************************************************************************************************************************************/
/* 8x8 text layer - wwfwfest only */
TILE_GET_INFO_MEMBER(wwfwfest_state::get_fg0_tile_info)
{
UINT16 *tilebase;
int tileno;
int colbank;
tilebase = &m_fg0_videoram[tile_index*2];
tileno = (tilebase[0] & 0x00ff) | ((tilebase[1] & 0x000f) << 8);
colbank = (tilebase[1] & 0x00f0) >> 4;
SET_TILE_INFO_MEMBER(
3,
tileno,
colbank,
0);
}
TILE_GET_INFO_MEMBER(ddragon3_state::get_fg_tile_info)
WRITE16_MEMBER(wwfwfest_state::wwfwfest_fg0_videoram_w)
{
int offs = tile_index * 2;
UINT16 attr = m_fg_videoram[offs];
int code = m_fg_videoram[offs + 1] & 0x1fff;
int color = attr & 0xf;
int flags = (attr & 0x40) ? TILE_FLIPX : 0;
/* Videoram is 8 bit, upper & lower byte writes end up in the same place */
if (ACCESSING_BITS_8_15 && ACCESSING_BITS_0_7) {
COMBINE_DATA(&m_fg0_videoram[offset]);
} else if (ACCESSING_BITS_8_15) {
m_fg0_videoram[offset]=(data>>8)&0xff;
} else {
m_fg0_videoram[offset]=data&0xff;
}
SET_TILE_INFO_MEMBER(0, code, color, flags);
m_fg0_tilemap->mark_tile_dirty(offset/2);
}
/*****************************************************************************************************************************************************/
void ddragon3_state::video_start()
{
save_item(NAME(m_pri));
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(ddragon3_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
m_fg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(ddragon3_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
m_bg_tilemap->set_transparent_pen(0);
m_fg_tilemap->set_transparent_pen(0);
m_sprite_xoff = m_bg0_dx = m_bg1_dx[0] = m_bg1_dx[1] = 0;
m_bg_tilebase = 0;
}
/*
* Sprite Format
* ----------------------------------
*
* Word | Bit(s) | Use
* -----+-fedcba9876543210-+----------------
* 0 | --------xxxxxxxx | ypos (signed)
* -----+------------------+
* 1 | --------xxx----- | height
* 1 | -----------xx--- | yflip, xflip
* 1 | -------------x-- | msb x
* 1 | --------------x- | msb y?
* 1 | ---------------x | enable
* -----+------------------+
* 2 | --------xxxxxxxx | tile number
* -----+------------------+
* 3 | --------xxxxxxxx | bank
* -----+------------------+
* 4 | ------------xxxx |color
* -----+------------------+
* 5 | --------xxxxxxxx | xpos
* -----+------------------+
* 6,7| unused
*/
void ddragon3_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
void wwfwfest_state::video_start()
{
UINT16 *source = m_spriteram;
UINT16 *finish = source + 0x800;
ddragon3_state::video_start();
while (source < finish)
m_fg0_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(wwfwfest_state::get_fg0_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,64,32);
m_fg0_tilemap->set_transparent_pen(0);
}
VIDEO_START_MEMBER(wwfwfest_state,wwfwfstb)
{
wwfwfest_state::video_start();
m_sprite_xoff = 2;
m_bg0_dx = m_bg1_dx[0] = -4;
m_bg1_dx[1] = -2;
}
/*****************************************************************************************************************************************************/
void ddragon3_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect )
{
/*- SPR RAM Format -**
16 bytes per sprite (8-bit RAM? only every other byte is used)
---- ---- yyyy yyyy ---- ---- lllF fXYE ---- ---- nnnn nnnn ---- ---- NNNN NNNN
---- ---- ---- CCCC ---- ---- xxxx xxxx ---- ---- ---- ---- ---- ---- ---- ----
Yy = sprite Y Position
Xx = sprite X Position
C = colour bank
f = flip Y
F = flip X
l = chain sprite
E = sprite enable
Nn = Sprite Number
other bits unused
*/
UINT16 *buffered_spriteram16 = m_spriteram->buffer();
int length = m_spriteram->bytes();
gfx_element *gfx = machine().gfx[2];
UINT16 *source = buffered_spriteram16;
UINT16 *finish = source + length/2;
while( source<finish )
{
UINT16 attr = source[1];
int xpos, ypos, colourbank, flipx, flipy, chain, enable, number, count;
if (attr & 0x01) /* enable */
{
int i;
int bank = source[3] & 0xff;
int code = (source[2] & 0xff) + (bank * 256);
int color = source[4] & 0xf;
int flipx = attr & 0x10;
int flipy = attr & 0x08;
int sx = source[5] & 0xff;
int sy = source[0] & 0xff;
int height = (attr >> 5) & 0x07;
enable = (source[1] & 0x0001);
if (attr & 0x04) sx |= 0x100;
if (attr & 0x02) sy = 239 + (0x100 - sy); else sy = 240 - sy;
if (sx > 0x17f) sx = 0 - (0x200 - sx);
if (enable) {
xpos = +(source[5] & 0x00ff) | (source[1] & 0x0004) << 6;
if (xpos>512-16) xpos -=512;
xpos += m_sprite_xoff;
ypos = (source[0] & 0x00ff) | (source[1] & 0x0002) << 7;
ypos = (256 - ypos) & 0x1ff;
ypos -= 16 ;
flipx = (source[1] & 0x0010) >> 4;
flipy = (source[1] & 0x0008) >> 3;
chain = (source[1] & 0x00e0) >> 5;
chain += 1;
number = (source[2] & 0x00ff) | (source[3] & 0x00ff) << 8;
colourbank = (source[4] & 0x000f);
if (flip_screen())
{
sx = 304 - sx;
sy = 224 - sy;
flipx = !flipx;
flipy = !flipy;
if (flip_screen()) {
if (flipy) flipy=0; else flipy=1;
if (flipx) flipx=0; else flipx=1;
ypos=240-ypos-m_sprite_xoff;
xpos=304-xpos;
}
for (i = 0; i <= height; i++)
{
drawgfx_transpen(bitmap, cliprect,
machine().gfx[1], code + i, color, flipx, flipy,
sx, sy + (flip_screen() ? (i * 16) : (-i * 16)), 0);
for (count=0;count<chain;count++) {
if (flip_screen()) {
if (!flipy) {
drawgfx_transpen(bitmap,cliprect,gfx,number+count,colourbank,flipx,flipy,xpos,ypos+(16*(chain-1))-(16*count),0);
} else {
drawgfx_transpen(bitmap,cliprect,gfx,number+count,colourbank,flipx,flipy,xpos,ypos+16*count,0);
}
} else {
if (flipy) {
drawgfx_transpen(bitmap,cliprect,gfx,number+count,colourbank,flipx,flipy,xpos,ypos-(16*(chain-1))+(16*count),0);
} else {
drawgfx_transpen(bitmap,cliprect,gfx,number+count,colourbank,flipx,flipy,xpos,ypos-16*count,0);
}
}
}
}
source += 8;
source+=8;
}
}
/*****************************************************************************************************************************************************/
UINT32 ddragon3_state::screen_update_ddragon3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m_bg_tilemap->set_scrollx(0, m_bg_scrollx);
@ -200,3 +292,44 @@ UINT32 ddragon3_state::screen_update_ctribe(screen_device &screen, bitmap_ind16
}
return 0;
}
UINT32 wwfwfest_state::screen_update_wwfwfest(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
if (m_pri == 0x0078) {
m_fg_tilemap->set_scrolly(0, m_fg_scrolly );
m_fg_tilemap->set_scrollx(0, m_fg_scrollx + m_bg0_dx);
m_bg_tilemap->set_scrolly(0, m_bg_scrolly );
m_bg_tilemap->set_scrollx(0, m_bg_scrollx + m_bg1_dx[0]);
} else {
m_bg_tilemap->set_scrolly(0, m_fg_scrolly );
m_bg_tilemap->set_scrollx(0, m_fg_scrollx + m_bg1_dx[1]);
m_fg_tilemap->set_scrolly(0, m_bg_scrolly );
m_fg_tilemap->set_scrollx(0, m_bg_scrollx + m_bg0_dx);
}
/* todo : which bits of pri are significant to the order */
if (m_pri == 0x007b) {
m_fg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE,0);
m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0);
draw_sprites(bitmap,cliprect);
}
if (m_pri == 0x007c) {
m_fg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE,0);
draw_sprites(bitmap,cliprect);
m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0);
}
if (m_pri == 0x0078) {
m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE,0);
m_fg_tilemap->draw(screen, bitmap, cliprect, 0,0);
draw_sprites(bitmap,cliprect);
}
m_fg0_tilemap->draw(screen, bitmap, cliprect, 0,0);
return 0;
}

View File

@ -1,286 +0,0 @@
/*******************************************************************************
WWF Wrestlefest (C) 1991 Technos Japan (video/wwfwfest.c)
********************************************************************************
driver by David Haywood
see (drivers/wwfwfest.c) for more notes
*******************************************************************************/
#include "emu.h"
#include "includes/wwfwfest.h"
/*******************************************************************************
Write Handlers
********************************************************************************
for writes to Video Ram
*******************************************************************************/
WRITE16_MEMBER(wwfwfest_state::wwfwfest_fg0_videoram_w)
{
/* Videoram is 8 bit, upper & lower byte writes end up in the same place */
if (ACCESSING_BITS_8_15 && ACCESSING_BITS_0_7) {
COMBINE_DATA(&m_fg0_videoram[offset]);
} else if (ACCESSING_BITS_8_15) {
m_fg0_videoram[offset]=(data>>8)&0xff;
} else {
m_fg0_videoram[offset]=data&0xff;
}
m_fg0_tilemap->mark_tile_dirty(offset/2);
}
WRITE16_MEMBER(wwfwfest_state::wwfwfest_bg0_videoram_w)
{
COMBINE_DATA(&m_bg0_videoram[offset]);
m_bg0_tilemap->mark_tile_dirty(offset/2);
}
WRITE16_MEMBER(wwfwfest_state::wwfwfest_bg1_videoram_w)
{
COMBINE_DATA(&m_bg1_videoram[offset]);
m_bg1_tilemap->mark_tile_dirty(offset);
}
/*******************************************************************************
Tilemap Related Functions
*******************************************************************************/
TILE_GET_INFO_MEMBER(wwfwfest_state::get_fg0_tile_info)
{
/*- FG0 RAM Format -**
4 bytes per tile
---- ---- tttt tttt ---- ---- ???? TTTT
C = Colour Bank (0-15)
T = Tile Number (0 - 4095)
other bits unknown / unused
basically the same as WWF Superstar's FG0 Ram but
more of it and the used bytes the other way around
**- End of Comments -*/
UINT16 *tilebase;
int tileno;
int colbank;
tilebase = &m_fg0_videoram[tile_index*2];
tileno = (tilebase[0] & 0x00ff) | ((tilebase[1] & 0x000f) << 8);
colbank = (tilebase[1] & 0x00f0) >> 4;
SET_TILE_INFO_MEMBER(
0,
tileno,
colbank,
0);
}
TILE_GET_INFO_MEMBER(wwfwfest_state::get_bg0_tile_info)
{
/*- BG0 RAM Format -**
4 bytes per tile
---- ---- fF-- CCCC ---- TTTT tttt tttt
C = Colour Bank (0-15)
T = Tile Number (0 - 4095)
f = Flip Y
F = Flip X
other bits unknown / unused
**- End of Comments -*/
UINT16 *tilebase;
int tileno,colbank;
tilebase = &m_bg0_videoram[tile_index*2];
tileno = (tilebase[1] & 0x0fff);
colbank = (tilebase[0] & 0x000f);
SET_TILE_INFO_MEMBER(
2,
tileno,
colbank,
TILE_FLIPYX((tilebase[0] & 0x00c0) >> 6));
}
TILE_GET_INFO_MEMBER(wwfwfest_state::get_bg1_tile_info)
{
/*- BG1 RAM Format -**
2 bytes per tile
CCCC TTTT tttt tttt
C = Colour Bank (0-15)
T = Tile Number (0 - 4095)
**- End of Comments -*/
UINT16 *tilebase;
int tileno;
int colbank;
tilebase = &m_bg1_videoram[tile_index];
tileno = (tilebase[0] & 0x0fff);
colbank = (tilebase[0] & 0xf000) >> 12;
SET_TILE_INFO_MEMBER(
3,
tileno,
colbank,
0);
}
/*******************************************************************************
Sprite Related Functions
********************************************************************************
sprite drawing could probably be improved a bit
*******************************************************************************/
void wwfwfest_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect )
{
/*- SPR RAM Format -**
16 bytes per sprite
---- ---- yyyy yyyy ---- ---- lllF fXYE ---- ---- nnnn nnnn ---- ---- NNNN NNNN
---- ---- ---- CCCC ---- ---- xxxx xxxx ---- ---- ---- ---- ---- ---- ---- ----
Yy = sprite Y Position
Xx = sprite X Position
C = colour bank
f = flip Y
F = flip X
l = chain sprite
E = sprite enable
Nn = Sprite Number
other bits unused
**- End of Comments -*/
UINT16 *buffered_spriteram16 = m_spriteram->buffer();
gfx_element *gfx = machine().gfx[1];
UINT16 *source = buffered_spriteram16;
UINT16 *finish = source + 0x2000/2;
while( source<finish )
{
int xpos, ypos, colourbank, flipx, flipy, chain, enable, number, count;
enable = (source[1] & 0x0001);
if (enable) {
xpos = +(source[5] & 0x00ff) | (source[1] & 0x0004) << 6;
if (xpos>512-16) xpos -=512;
xpos += m_sprite_xoff;
ypos = (source[0] & 0x00ff) | (source[1] & 0x0002) << 7;
ypos = (256 - ypos) & 0x1ff;
ypos -= 16 ;
flipx = (source[1] & 0x0010) >> 4;
flipy = (source[1] & 0x0008) >> 3;
chain = (source[1] & 0x00e0) >> 5;
chain += 1;
number = (source[2] & 0x00ff) | (source[3] & 0x00ff) << 8;
colourbank = (source[4] & 0x000f);
if (flip_screen()) {
if (flipy) flipy=0; else flipy=1;
if (flipx) flipx=0; else flipx=1;
ypos=240-ypos-m_sprite_xoff;
xpos=304-xpos;
}
for (count=0;count<chain;count++) {
if (flip_screen()) {
if (!flipy) {
drawgfx_transpen(bitmap,cliprect,gfx,number+count,colourbank,flipx,flipy,xpos,ypos+(16*(chain-1))-(16*count),0);
} else {
drawgfx_transpen(bitmap,cliprect,gfx,number+count,colourbank,flipx,flipy,xpos,ypos+16*count,0);
}
} else {
if (flipy) {
drawgfx_transpen(bitmap,cliprect,gfx,number+count,colourbank,flipx,flipy,xpos,ypos-(16*(chain-1))+(16*count),0);
} else {
drawgfx_transpen(bitmap,cliprect,gfx,number+count,colourbank,flipx,flipy,xpos,ypos-16*count,0);
}
}
}
}
source+=8;
}
}
/*******************************************************************************
Video Start and Refresh Functions
********************************************************************************
Draw Order / Priority seems to affect where the scroll values are used also.
*******************************************************************************/
void wwfwfest_state::video_start()
{
save_item(NAME(m_pri));
save_item(NAME(m_bg0_scrollx));
save_item(NAME(m_bg0_scrolly));
save_item(NAME(m_bg1_scrollx));
save_item(NAME(m_bg1_scrolly));
m_fg0_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(wwfwfest_state::get_fg0_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,64,32);
m_bg1_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(wwfwfest_state::get_bg1_tile_info),this),TILEMAP_SCAN_ROWS, 16, 16,32,32);
m_bg0_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(wwfwfest_state::get_bg0_tile_info),this),TILEMAP_SCAN_ROWS, 16, 16,32,32);
m_fg0_tilemap->set_transparent_pen(0);
m_bg1_tilemap->set_transparent_pen(0);
m_bg0_tilemap->set_transparent_pen(0);
m_sprite_xoff = m_bg0_dx = m_bg1_dx[0] = m_bg1_dx[1] = 0;
}
VIDEO_START_MEMBER(wwfwfest_state,wwfwfstb)
{
wwfwfest_state::video_start();
m_sprite_xoff = 2;
m_bg0_dx = m_bg1_dx[0] = -4;
m_bg1_dx[1] = -2;
}
UINT32 wwfwfest_state::screen_update_wwfwfest(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
if (m_pri == 0x0078) {
m_bg0_tilemap->set_scrolly(0, m_bg0_scrolly );
m_bg0_tilemap->set_scrollx(0, m_bg0_scrollx + m_bg0_dx);
m_bg1_tilemap->set_scrolly(0, m_bg1_scrolly );
m_bg1_tilemap->set_scrollx(0, m_bg1_scrollx + m_bg1_dx[0]);
} else {
m_bg1_tilemap->set_scrolly(0, m_bg0_scrolly );
m_bg1_tilemap->set_scrollx(0, m_bg0_scrollx + m_bg1_dx[1]);
m_bg0_tilemap->set_scrolly(0, m_bg1_scrolly );
m_bg0_tilemap->set_scrollx(0, m_bg1_scrollx + m_bg0_dx);
}
/* todo : which bits of pri are significant to the order */
if (m_pri == 0x007b) {
m_bg0_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE,0);
m_bg1_tilemap->draw(screen, bitmap, cliprect, 0,0);
draw_sprites(bitmap,cliprect);
m_fg0_tilemap->draw(screen, bitmap, cliprect, 0,0);
}
if (m_pri == 0x007c) {
m_bg0_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE,0);
draw_sprites(bitmap,cliprect);
m_bg1_tilemap->draw(screen, bitmap, cliprect, 0,0);
m_fg0_tilemap->draw(screen, bitmap, cliprect, 0,0);
}
if (m_pri == 0x0078) {
m_bg1_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE,0);
m_bg0_tilemap->draw(screen, bitmap, cliprect, 0,0);
draw_sprites(bitmap,cliprect);
m_fg0_tilemap->draw(screen, bitmap, cliprect, 0,0);
}
return 0;
}