-lastduel.c: Various fixes [Phil Bennett]

* Fixed madgear and clones background tilemap bitplane order
 * Fixed madgear and clones vertical refresh rate
 * Added buttons 2 and 3 to madgear and clones
 * Fixed ledstorm2 sprite ROM order (though bad sprites remain due to incorrect ROMs)
This commit is contained in:
Phil Bennett 2013-10-13 12:46:36 +00:00
parent c5b08d8ddf
commit b66fd33443

View File

@ -7,19 +7,24 @@
Emulation by Bryan McPhail, mish@tendril.co.uk Emulation by Bryan McPhail, mish@tendril.co.uk
Trivia ;) The Mad Gear pcb has an unused pad on the board for an i8751
microcontroller. PCB Numbers:
- Mad Gear / LED Storm Top:87616A-5 / Bottom:87616B-5
- Last Duel Top:87615A-4 / Bottom:87615B-3
Trivia:
- The Mad Gear and Last Duel PCBs have unpopulated spaces for an
i8751 microcontroller.
To advance test mode screens:
- Last Duel / LED Storm Rally 2011: Press P1 buttons 1 and 2
- Mad Gear / LED Storm: Press P1 button 1 and hold up
TODO: TODO:
- The seem to be minor priority issues in Mad Gear, but the game might just - The seem to be minor priority issues in Mad Gear, but the game might just
be like that. The priority PROM is dumped but currently not used. be like that. The priority PROM is dumped but currently not used.
- visible area might be wrong - visible area might be wrong
PCB Numbers:
Mad Gear / LED Storm Top:87616A-5 / Bottom:87616B-5
Last Duel Top:87615A-4 / Bottom:87615B-3
************************************************************************** **************************************************************************
Led Storm Rally 2011 Led Storm Rally 2011
@ -32,7 +37,7 @@ PCB Layout
|-----------| |------------| |-----------| |-----------| |------------| |-----------|
|------|-----------|-----|------------|-----|-----------|------| |------|-----------|-----|------------|-----|-----------|------|
| | | |
| 43256 CPU1.2D DEC.2F VR2.2J DL-0100-103| | 43256 CPU1.2D DEC.2F VR2.2J DL-010D-103|
| 43256 CPU3.3E VR1.3J 24MHz | | 43256 CPU3.3E VR1.3J 24MHz |
| 6116 | | 6116 |
| LS-01.5B 6116 | | LS-01.5B 6116 |
@ -64,7 +69,7 @@ Notes:
SOUND* / SOUND* /
43256 - 32kx8 SRAM (DIP28) 43256 - 32kx8 SRAM (DIP28)
6116 - 2kx8 SRAM (DIP24) 6116 - 2kx8 SRAM (DIP24)
DL-0100-103 - NEC custom (SDIP64) DL-010D-103 - NEC custom (SDIP64)
ROMs - ROMs -
LS-07 - 27C512 EPROM (DIP28) LS-07 - 27C512 EPROM (DIP28)
LS-08 - 27C256 EPROM (DIP28) LS-08 - 27C256 EPROM (DIP28)
@ -343,16 +348,16 @@ static INPUT_PORTS_START( madgear )
PORT_START("P1_P2") PORT_START("P1_P2")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON3 )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
@ -414,7 +419,7 @@ static const gfx_layout madgear_tile2 =
16,16, 16,16,
RGN_FRAC(1,1), RGN_FRAC(1,1),
4, 4,
{ 1*4, 3*4, 0*4, 2*4 }, { 1*4, 0*4, 3*4, 2*4 },
{ 0, 1, 2, 3, 16+0, 16+1, 16+2, 16+3, { 0, 1, 2, 3, 16+0, 16+1, 16+2, 16+3,
32*16+0, 32*16+1, 32*16+2, 32*16+3, 32*16+16+0, 32*16+16+1, 32*16+16+2, 32*16+16+3 }, 32*16+0, 32*16+1, 32*16+2, 32*16+3, 32*16+16+0, 32*16+16+1, 32*16+16+2, 32*16+16+3 },
{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32,
@ -489,12 +494,12 @@ void lastduel_state::machine_reset()
static MACHINE_CONFIG_START( lastduel, lastduel_state ) static MACHINE_CONFIG_START( lastduel, lastduel_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, 10000000) /* Could be 8 MHz */ MCFG_CPU_ADD("maincpu", M68000, 100000000) // Unconfirmed - could be 8MHz
MCFG_CPU_PROGRAM_MAP(lastduel_map) MCFG_CPU_PROGRAM_MAP(lastduel_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", lastduel_state, irq2_line_hold) MCFG_CPU_VBLANK_INT_DRIVER("screen", lastduel_state, irq2_line_hold)
MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_irq", lastduel_state, lastduel_timer_cb, attotime::from_hz(120)) MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_irq", lastduel_state, lastduel_timer_cb, attotime::from_hz(120))
MCFG_CPU_ADD("audiocpu", Z80, 3579545) /* Accurate */ MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz)
MCFG_CPU_PROGRAM_MAP(sound_map) MCFG_CPU_PROGRAM_MAP(sound_map)
MCFG_MACHINE_START_OVERRIDE(lastduel_state,lastduel) MCFG_MACHINE_START_OVERRIDE(lastduel_state,lastduel)
@ -520,12 +525,12 @@ static MACHINE_CONFIG_START( lastduel, lastduel_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ym1", YM2203, 3579545) MCFG_SOUND_ADD("ym1", YM2203, XTAL_3_579545MHz)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(lastduel_state, irqhandler)) MCFG_YM2203_IRQ_HANDLER(WRITELINE(lastduel_state, irqhandler))
MCFG_YM2203_AY8910_INTF(&ay8910_config) MCFG_YM2203_AY8910_INTF(&ay8910_config)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
MCFG_SOUND_ADD("ym2", YM2203, 3579545) MCFG_SOUND_ADD("ym2", YM2203, XTAL_3_579545MHz)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -533,12 +538,12 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( madgear, lastduel_state ) static MACHINE_CONFIG_START( madgear, lastduel_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, 10000000) /* Accurate */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz)
MCFG_CPU_PROGRAM_MAP(madgear_map) MCFG_CPU_PROGRAM_MAP(madgear_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", lastduel_state, irq5_line_hold) MCFG_CPU_VBLANK_INT_DRIVER("screen", lastduel_state, irq5_line_hold)
MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_irq", lastduel_state, madgear_timer_cb, attotime::from_hz(120)) MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_irq", lastduel_state, madgear_timer_cb, attotime::from_hz(120))
MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */ MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz)
MCFG_CPU_PROGRAM_MAP(madgear_sound_map) MCFG_CPU_PROGRAM_MAP(madgear_sound_map)
MCFG_MACHINE_START_OVERRIDE(lastduel_state,madgear) MCFG_MACHINE_START_OVERRIDE(lastduel_state,madgear)
@ -547,7 +552,7 @@ static MACHINE_CONFIG_START( madgear, lastduel_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_REFRESH_RATE(57.4444)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
@ -564,15 +569,15 @@ static MACHINE_CONFIG_START( madgear, lastduel_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ym1", YM2203, XTAL_3_579545MHz) /* verified on pcb */ MCFG_SOUND_ADD("ym1", YM2203, XTAL_3_579545MHz)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(lastduel_state, irqhandler)) MCFG_YM2203_IRQ_HANDLER(WRITELINE(lastduel_state, irqhandler))
MCFG_YM2203_AY8910_INTF(&ay8910_config) MCFG_YM2203_AY8910_INTF(&ay8910_config)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
MCFG_SOUND_ADD("ym2", YM2203, XTAL_3_579545MHz) /* verified on pcb */ MCFG_SOUND_ADD("ym2", YM2203, XTAL_3_579545MHz)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
MCFG_OKIM6295_ADD("oki", XTAL_10MHz/10, OKIM6295_PIN7_HIGH) /* verified on pcb */ MCFG_OKIM6295_ADD("oki", XTAL_10MHz/10, OKIM6295_PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.98) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.98)
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -838,9 +843,9 @@ ROM_START( ledstorm2 )
ROM_LOAD( "ls-07.14j", 0x00000, 0x08000, CRC(98af7838) SHA1(a0b87b9ce3c1b0e5d7696ffaab9cea483b9ee928) ) ROM_LOAD( "ls-07.14j", 0x00000, 0x08000, CRC(98af7838) SHA1(a0b87b9ce3c1b0e5d7696ffaab9cea483b9ee928) )
ROM_CONTINUE( 0x10000, 0x08000 ) ROM_CONTINUE( 0x10000, 0x08000 )
ROM_REGION( 0x80000, "gfx1", 0 ) ROM_REGION( 0x80000, "gfx1", 0 ) /* These ROMs are good but are incorrect for this set */
ROM_LOAD( "ls-09.5a", 0x000000, 0x40000, BAD_DUMP CRC(80875e1d) SHA1(6f53694a0617bf3b4f65a0cf71750b0e65e49b46) ) /* NEC 23C2000 256kx8 mask ROM (QFP52) */ ROM_LOAD( "ls-10.13a", 0x00000, 0x40000, BAD_DUMP CRC(c5993f93) SHA1(29c565c112edb003c7d4adc5ac52e98e034bd1a1) ) /* NEC 23C2000 256kx8 mask ROM (QFP52) */
ROM_LOAD( "ls-10.13a", 0x040000, 0x40000, BAD_DUMP CRC(c5993f93) SHA1(29c565c112edb003c7d4adc5ac52e98e034bd1a1) ) /* NEC 23C2000 256kx8 mask ROM (QFP52) */ ROM_LOAD( "ls-09.5a", 0x40000, 0x40000, BAD_DUMP CRC(80875e1d) SHA1(6f53694a0617bf3b4f65a0cf71750b0e65e49b46) ) /* NEC 23C2000 256kx8 mask ROM (QFP52) */
ROM_REGION( 0x08000, "gfx2", 0 ) ROM_REGION( 0x08000, "gfx2", 0 )
ROM_LOAD( "ls-08.10k", 0x000000, 0x08000, CRC(8803cf49) SHA1(7a01a05f760d8e2472fdbc1d10b53094babe295e) ) /* 8x8 text */ ROM_LOAD( "ls-08.10k", 0x000000, 0x08000, CRC(8803cf49) SHA1(7a01a05f760d8e2472fdbc1d10b53094babe295e) ) /* 8x8 text */