New non-working game

--------------------
18 Wheeler [hap, Siftware]
This commit is contained in:
Michaël Banaan Ananas 2011-02-03 22:08:42 +00:00
parent c92c19f2d8
commit f7b1e68670
5 changed files with 245 additions and 0 deletions

2
.gitattributes vendored
View File

@ -2094,6 +2094,7 @@ src/mame/drivers/munchmo.c svneol=native#text/plain
src/mame/drivers/murogem.c svneol=native#text/plain src/mame/drivers/murogem.c svneol=native#text/plain
src/mame/drivers/murogmbl.c svneol=native#text/plain src/mame/drivers/murogmbl.c svneol=native#text/plain
src/mame/drivers/mustache.c svneol=native#text/plain src/mame/drivers/mustache.c svneol=native#text/plain
src/mame/drivers/mw18w.c svneol=native#text/plain
src/mame/drivers/mw8080bw.c svneol=native#text/plain src/mame/drivers/mw8080bw.c svneol=native#text/plain
src/mame/drivers/mwarr.c svneol=native#text/plain src/mame/drivers/mwarr.c svneol=native#text/plain
src/mame/drivers/mystston.c svneol=native#text/plain src/mame/drivers/mystston.c svneol=native#text/plain
@ -3278,6 +3279,7 @@ src/mame/includes/zaccaria.h svneol=native#text/plain
src/mame/includes/zaxxon.h svneol=native#text/plain src/mame/includes/zaxxon.h svneol=native#text/plain
src/mame/includes/zerozone.h svneol=native#text/plain src/mame/includes/zerozone.h svneol=native#text/plain
src/mame/includes/zodiack.h svneol=native#text/plain src/mame/includes/zodiack.h svneol=native#text/plain
src/mame/layout/18w.lay svneol=native#text/plain
src/mame/layout/280zzzap.lay svneol=native#text/plain src/mame/layout/280zzzap.lay svneol=native#text/plain
src/mame/layout/abaseb.lay svneol=native#text/plain src/mame/layout/abaseb.lay svneol=native#text/plain
src/mame/layout/ampoker2.lay svneol=native#text/plain src/mame/layout/ampoker2.lay svneol=native#text/plain

180
src/mame/drivers/mw18w.c Normal file
View File

@ -0,0 +1,180 @@
/* Midway's 18 Wheeler hardware, game number 653
driver todo:
- discrete sound
- hook up lamps (and sensors)
- lots of external artwork
To diagnose game, turn on service mode and:
- test RAM/ROM, leds, lamps: reset with shifter in neutral
- test sound and misc input: turn on DSW 7 and reset with shifter in neutral
- test accelerator: reset with shifter in 1st gear
- test steering wheel: reset with shifter in 2nd gear
*/
#include "emu.h"
#include "cpu/z80/z80.h"
#include "18w.lh"
static WRITE8_HANDLER( mw18w_sound_w )
{
if (offset==0) coin_counter_w(space->machine, 0, data&1);
}
static WRITE8_HANDLER( mw18w_lamps_w )
{
;
}
static WRITE8_HANDLER( mw18w_led_display_w )
{
// d0-3: 7448 (BCD to LED segment)
const UINT8 ls48_map[16] =
{ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67,0x58,0x4c,0x62,0x69,0x78,0x00 };
// d4-7: 7442 (BCD to decimal) -> pick digit panel
if ((data&0xf0)>0x90) return;
output_set_digit_value(data>>4, ls48_map[data&0xf]);
}
static WRITE8_HANDLER( mw18w_irq0_clear_w )
{
cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
}
static CUSTOM_INPUT( mw18w_sensors_r )
{
// d7: off road
// d6: in dock area
return 0xff;
}
static ADDRESS_MAP_START( mw18w_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x23ff) AM_RAM
ADDRESS_MAP_END
static ADDRESS_MAP_START( mw18w_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_WRITE(mw18w_sound_w)
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_WRITE(mw18w_lamps_w)
AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW") AM_WRITE(mw18w_led_display_w)
AM_RANGE(0x04, 0x04) AM_READ_PORT("IN0") AM_WRITE(mw18w_lamps_w)
AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x07, 0x07) AM_WRITE(mw18w_irq0_clear_w)
ADDRESS_MAP_END
static const UINT32 mw18w_controller_table[] =
{
// same encoder as sspeedr
0x3f, 0x3e, 0x3c, 0x3d, 0x39, 0x38, 0x3a, 0x3b,
0x33, 0x32, 0x30, 0x31, 0x35, 0x34, 0x36, 0x37,
0x27, 0x26, 0x24, 0x25, 0x21, 0x20, 0x22, 0x23,
0x2b, 0x2a, 0x28, 0x29, 0x2d, 0x2c, 0x2e, 0x2f,
0x0f, 0x0e, 0x0c, 0x0d, 0x09, 0x08, 0x0a, 0x0b,
0x03, 0x02, 0x00, 0x01, 0x05, 0x04, 0x06, 0x07,
0x17, 0x16, 0x14, 0x15, 0x11, 0x10, 0x12, 0x13,
0x1b, 0x1a, 0x18, 0x19, 0x1d, 0x1c, 0x1e, 0x1f
};
static INPUT_PORTS_START( mw18w )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) // for both coin chutes
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(mw18w_sensors_r, NULL)
PORT_START("IN1")
PORT_BIT( 0x1f, 0x00, IPT_PEDAL ) PORT_REMAP_TABLE(mw18w_controller_table + 0x20) PORT_SENSITIVITY(100) PORT_KEYDELTA(1) // accelerate
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Shifter 1st Gear")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Shifter 3rd Gear")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Shifter 2nd Gear")
PORT_START("IN2")
PORT_BIT( 0x3f, 0x1f, IPT_PADDLE ) PORT_REMAP_TABLE(mw18w_controller_table) PORT_SENSITIVITY(100) PORT_KEYDELTA(1) // steering wheel
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) // brake
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("Shifter Reverse")
PORT_START("DSW")
PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW:1,2")
PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x03, DEF_STR( 2C_3C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x30, 0x00, DEF_STR( Game_Time ) ) PORT_DIPLOCATION("SW:5,6")
PORT_DIPSETTING( 0x00, "60 seconds" )
PORT_DIPSETTING( 0x10, "70 seconds" )
PORT_DIPSETTING( 0x20, "80 seconds" )
PORT_DIPSETTING( 0x30, "90 seconds" )
PORT_DIPNAME( 0x0c, 0x00, "Extended Time" ) PORT_DIPLOCATION("SW:3,4")
PORT_DIPSETTING( 0x00, "20 seconds at 4000" ) PORT_CONDITION("DSW", 0x30, PORTCOND_EQUALS, 0x00) // @ 60 seconds
PORT_DIPSETTING( 0x04, "30 seconds at 8000" ) PORT_CONDITION("DSW", 0x30, PORTCOND_EQUALS, 0x00)
PORT_DIPSETTING( 0x08, "15 seconds at 8000" ) PORT_CONDITION("DSW", 0x30, PORTCOND_EQUALS, 0x00)
PORT_DIPSETTING( 0x0c, "30 seconds at 10000" ) PORT_CONDITION("DSW", 0x30, PORTCOND_EQUALS, 0x00)
PORT_DIPSETTING( 0x00, "20 seconds at 6000" ) PORT_CONDITION("DSW", 0x30, PORTCOND_EQUALS, 0x10) // @ 70 seconds
PORT_DIPSETTING( 0x04, "30 seconds at 9000" ) PORT_CONDITION("DSW", 0x30, PORTCOND_EQUALS, 0x10)
PORT_DIPSETTING( 0x08, "20 seconds at 9000" ) PORT_CONDITION("DSW", 0x30, PORTCOND_EQUALS, 0x10)
PORT_DIPSETTING( 0x0c, "30 seconds at 12000" ) PORT_CONDITION("DSW", 0x30, PORTCOND_EQUALS, 0x10)
PORT_DIPSETTING( 0x00, "20 seconds at 8000" ) PORT_CONDITION("DSW", 0x30, PORTCOND_EQUALS, 0x20) // @ 80 seconds
PORT_DIPSETTING( 0x04, "30 seconds at 12000" ) PORT_CONDITION("DSW", 0x30, PORTCOND_EQUALS, 0x20)
PORT_DIPSETTING( 0x08, "20 seconds at 12000" ) PORT_CONDITION("DSW", 0x30, PORTCOND_EQUALS, 0x20)
PORT_DIPSETTING( 0x0c, "30 seconds at 16000" ) PORT_CONDITION("DSW", 0x30, PORTCOND_EQUALS, 0x20)
PORT_DIPSETTING( 0x00, "20 seconds at 10000" ) PORT_CONDITION("DSW", 0x30, PORTCOND_EQUALS, 0x30) // @ 90 seconds
PORT_DIPSETTING( 0x04, "30 seconds at 15000" ) PORT_CONDITION("DSW", 0x30, PORTCOND_EQUALS, 0x30)
PORT_DIPSETTING( 0x08, "20 seconds at 15000" ) PORT_CONDITION("DSW", 0x30, PORTCOND_EQUALS, 0x30)
PORT_DIPSETTING( 0x0c, "30 seconds at 20000" ) PORT_CONDITION("DSW", 0x30, PORTCOND_EQUALS, 0x30)
PORT_DIPNAME( 0x40, 0x40, "I/O Test" ) PORT_DIPLOCATION("SW:7")
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE_DIPLOC(0x80, IP_ACTIVE_LOW, "SW:8" )
INPUT_PORTS_END
static MACHINE_CONFIG_START( mw18w, driver_device )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, XTAL_19_968MHz/8)
MCFG_CPU_PERIODIC_INT(irq0_line_assert,960.516) // 555 IC
MCFG_CPU_PROGRAM_MAP(mw18w_map)
MCFG_CPU_IO_MAP(mw18w_portmap)
/* no video! */
/* sound hardware */
// MCFG_SPEAKER_STANDARD_MONO("mono")
MACHINE_CONFIG_END
ROM_START(18w)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD( "18w_b1.rom1", 0x0000, 0x0800, CRC(200c5beb) SHA1(994d67a89f18df9716c5dd4dd60f6e7eeb880f1b))
ROM_LOAD( "18w_a2.rom2", 0x0800, 0x0800, CRC(efbadee8) SHA1(834eaf8ca50544123de7529b90b828cf46b1c001))
ROM_LOAD( "18w_b3.rom3", 0x1000, 0x0800, CRC(214606f6) SHA1(9a9dc20259b4462661c6be410d98d2be54657a0e))
ROM_LOAD( "18w_a4.rom4", 0x1800, 0x0800, CRC(e88ad6a9) SHA1(ac010aa7e0288197ff9342801522623b64dd2a47))
ROM_END
ROM_START(18w2)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD( "18w_b1.rom1", 0x0000, 0x0800, CRC(cbc0fb2c) SHA1(66b14f0d76baebbd64e8ed107e536ad811d55273))
ROM_LOAD( "18w_b2.rom2", 0x0800, 0x0800, CRC(efbadee8) SHA1(834eaf8ca50544123de7529b90b828cf46b1c001))
ROM_LOAD( "18w_b3.rom3", 0x1000, 0x0800, CRC(214606f6) SHA1(9a9dc20259b4462661c6be410d98d2be54657a0e))
ROM_LOAD( "18w_b4.rom4", 0x1800, 0x0800, CRC(e88ad6a9) SHA1(ac010aa7e0288197ff9342801522623b64dd2a47))
ROM_END
GAMEL( 1979, 18w, 0, mw18w, mw18w, 0, ROT0, "Midway", "18 Wheeler (set 1)", GAME_NO_SOUND | GAME_NOT_WORKING | GAME_MECHANICAL, layout_18w )
GAMEL( 1979, 18w2, 18w, mw18w, mw18w, 0, ROT0, "Midway", "18 Wheeler (set 2)", GAME_NO_SOUND | GAME_NOT_WORKING | GAME_MECHANICAL, layout_18w )

58
src/mame/layout/18w.lay Normal file
View File

@ -0,0 +1,58 @@
<?xml version="1.0"?>
<mamelayout version="2">
<element name="digit" defstate="0">
<led7seg>
<color red="1.0" green="0.3" blue="0.0" />
</led7seg>
</element>
<view name="Simple LEDs">
<bounds left="0" right="256" top="0" bottom="256" />
<!-- left panel -->
<!-- TIME -->
<bezel name="digit3" element="digit">
<bounds left="0" top="0" right="9" bottom="15" />
</bezel>
<bezel name="digit2" element="digit">
<bounds left="10" top="0" right="19" bottom="15" />
</bezel>
<!-- not connected -->
<bezel name="dummy_digita" element="digit">
<bounds left="20" top="0" right="29" bottom="15" />
</bezel>
<bezel name="dummy_digitb" element="digit">
<bounds left="30" top="0" right="39" bottom="15" />
</bezel>
<!-- M.P.H. -->
<bezel name="digit1" element="digit">
<bounds left="40" top="0" right="49" bottom="15" />
</bezel>
<bezel name="digit0" element="digit">
<bounds left="50" top="0" right="59" bottom="15" />
</bezel>
<!-- right panel -->
<!-- SCORE -->
<bezel name="digit9" element="digit">
<bounds left="100" top="0" right="109" bottom="15" />
</bezel>
<bezel name="digit8" element="digit">
<bounds left="110" top="0" right="119" bottom="15" />
</bezel>
<bezel name="digit7" element="digit">
<bounds left="120" top="0" right="129" bottom="15" />
</bezel>
<bezel name="digit6" element="digit">
<bounds left="130" top="0" right="139" bottom="15" />
</bezel>
<bezel name="digit5" element="digit">
<bounds left="140" top="0" right="149" bottom="15" />
</bezel>
<bezel name="digit4" element="digit">
<bounds left="150" top="0" right="159" bottom="15" />
</bezel>
</view>
</mamelayout>

View File

@ -892,6 +892,7 @@ $(MAMEOBJ)/midcoin.a: \
$(MAMEOBJ)/midw8080.a: \ $(MAMEOBJ)/midw8080.a: \
$(DRIVERS)/8080bw.o $(AUDIO)/8080bw.o $(VIDEO)/8080bw.o \ $(DRIVERS)/8080bw.o $(AUDIO)/8080bw.o $(VIDEO)/8080bw.o \
$(DRIVERS)/m79amb.o $(AUDIO)/m79amb.o \ $(DRIVERS)/m79amb.o $(AUDIO)/m79amb.o \
$(DRIVERS)/mw18w.o \
$(DRIVERS)/mw8080bw.o $(MACHINE)/mw8080bw.o $(AUDIO)/mw8080bw.o $(VIDEO)/mw8080bw.o \ $(DRIVERS)/mw8080bw.o $(MACHINE)/mw8080bw.o $(AUDIO)/mw8080bw.o $(VIDEO)/mw8080bw.o \
$(DRIVERS)/rotaryf.o \ $(DRIVERS)/rotaryf.o \
$(DRIVERS)/sspeedr.o $(VIDEO)/sspeedr.o \ $(DRIVERS)/sspeedr.o $(VIDEO)/sspeedr.o \
@ -1877,6 +1878,8 @@ $(DRIVERS)/mpu4.o: $(LAYOUT)/mpu4.lh \
$(LAYOUT)/connect4.lh \ $(LAYOUT)/connect4.lh \
$(LAYOUT)/gamball.lh $(LAYOUT)/gamball.lh
$(DRIVERS)/mw18w.o: $(LAYOUT)/18w.lh
$(DRIVERS)/mw8080bw.o: $(LAYOUT)/280zzzap.lh \ $(DRIVERS)/mw8080bw.o: $(LAYOUT)/280zzzap.lh \
$(LAYOUT)/clowns.lh \ $(LAYOUT)/clowns.lh \
$(LAYOUT)/invaders.lh \ $(LAYOUT)/invaders.lh \

View File

@ -1383,6 +1383,8 @@ const game_driver * const drivers[] =
DRIVER( cosmo ) /* TDS+Mints */ DRIVER( cosmo ) /* TDS+Mints */
DRIVER( darthvdr ) /* bootleg */ DRIVER( darthvdr ) /* bootleg */
DRIVER( 18w ) /* 653 (c) 1979 Midway */
DRIVER( 18w2 ) /* 653 (c) 1979 Midway */
DRIVER( sspeedr ) /* 1979 Midway */ DRIVER( sspeedr ) /* 1979 Midway */
/* Similar but with a M6800 instead of an 8080 */ /* Similar but with a M6800 instead of an 8080 */