summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Michaël Banaan Ananas <happppp@users.noreply.github.com>2011-08-23 21:44:02 +0000
committer Michaël Banaan Ananas <happppp@users.noreply.github.com>2011-08-23 21:44:02 +0000
commita424b171e52b337d507fe98586e7d8a32518bc9d (patch)
treedabbad6c4b523451095e1e202874bbc7c3871225
parent9084193629e3a6d39d1530f172748eb464fb3adb (diff)
williams.c: added second sound board to blaster/blaster30 [hap]
-rw-r--r--src/mame/drivers/williams.c169
-rw-r--r--src/mame/includes/williams.h2
-rw-r--r--src/mame/machine/williams.c42
3 files changed, 135 insertions, 78 deletions
diff --git a/src/mame/drivers/williams.c b/src/mame/drivers/williams.c
index 62176f230dc..709a41939c6 100644
--- a/src/mame/drivers/williams.c
+++ b/src/mame/drivers/williams.c
@@ -94,14 +94,9 @@
c80c rom_pia_dataa
c80d rom_pia_ctrla
c80e rom_pia_datab
- bit 0 \
- bit 1 |
- bit 2 |-6 bits to sound board
- bit 3 |
- bit 4 |
- bit 5 /
- bit 6 \
- bit 7 /Plus CA2 and CB2 = 4 bits to drive the LED 7 segment
+ bits 0-5 = 6 bits to sound board
+ bits 6-7 plus CA2 and CB2 = 4 bits to drive the LED 7 segment
+ Blaster only: bits 6-7 are for selecting the sound board
c80f rom_pia_ctrlb
C900 rom_enable_scr_ctrl Switch between video ram and rom at 0000-97FF
@@ -503,8 +498,8 @@
#include "machine/nvram.h"
-#define MASTER_CLOCK (12000000)
-#define SOUND_CLOCK (3579000)
+#define MASTER_CLOCK (XTAL_12MHz)
+#define SOUND_CLOCK (XTAL_3_579545MHz)
@@ -672,7 +667,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( defender_sound_map, AS_PROGRAM, 8 )
AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */
AM_RANGE(0x0400, 0x0403) AM_MIRROR(0x8000) AM_DEVREADWRITE_MODERN("pia_2", pia6821_device, read, write)
- AM_RANGE(0xb000, 0xffff) AM_ROM /* most games start at $F000, Sinistar starts at $B000 */
+ AM_RANGE(0xb000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -680,7 +675,15 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8 )
AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */
AM_RANGE(0x0080, 0x00ff) AM_RAM /* MC6810 RAM */
AM_RANGE(0x0400, 0x0403) AM_MIRROR(0x8000) AM_DEVREADWRITE_MODERN("pia_2", pia6821_device, read, write)
- AM_RANGE(0xb000, 0xffff) AM_ROM /* most games start at $F000, Sinistar starts at $B000 */
+ AM_RANGE(0xb000, 0xffff) AM_ROM
+ADDRESS_MAP_END
+
+/* Same as above, but for second sound board */
+static ADDRESS_MAP_START( sound_map_b, AS_PROGRAM, 8 )
+ AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */
+ AM_RANGE(0x0080, 0x00ff) AM_RAM /* MC6810 RAM */
+ AM_RANGE(0x0400, 0x0403) AM_MIRROR(0x8000) AM_DEVREADWRITE_MODERN("pia_2b", pia6821_device, read, write)
+ AM_RANGE(0xb000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -1576,10 +1579,9 @@ static MACHINE_CONFIG_DERIVED( playball, williams )
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( blaster, williams )
+static MACHINE_CONFIG_DERIVED( blastkit, williams )
/* basic machine hardware */
-
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(blaster_map)
@@ -1592,16 +1594,30 @@ static MACHINE_CONFIG_DERIVED( blaster, williams )
MCFG_SCREEN_UPDATE(blaster)
/* pia */
- MCFG_PIA6821_MODIFY("pia_0", williams_49way_pia_0_intf)
+ MCFG_PIA6821_MODIFY("pia_0", williams_49way_muxed_pia_0_intf)
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( blastkit, blaster )
+static MACHINE_CONFIG_DERIVED( blaster, blastkit )
/* basic machine hardware */
+ MCFG_CPU_ADD("soundcpu_b", M6808, SOUND_CLOCK)
+ MCFG_CPU_PROGRAM_MAP(sound_map_b)
/* pia */
- MCFG_PIA6821_MODIFY("pia_0", williams_49way_muxed_pia_0_intf)
+ MCFG_PIA6821_MODIFY("pia_0", williams_49way_pia_0_intf)
+ MCFG_PIA6821_MODIFY("pia_1", blaster_pia_1_intf)
+ MCFG_PIA6821_ADD("pia_2b", williams_snd_pia_b_intf)
+
+ /* sound hardware */
+ MCFG_DEVICE_REMOVE("wmsdac")
+ MCFG_DEVICE_REMOVE("mono")
+
+ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MCFG_SOUND_ADD("wmsdac", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
+ MCFG_SOUND_ADD("wmsdac_b", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
MACHINE_CONFIG_END
@@ -2350,28 +2366,30 @@ ROM_END
ROM_START( blaster )
ROM_REGION( 0x54000, "maincpu", 0 )
- ROM_LOAD( "blaster.16", 0x0d000, 0x1000, CRC(54a40b21) SHA1(663c7b539e6f1f065a4ecae7bb0477c71951223f) )
- ROM_LOAD( "blaster.13", 0x0e000, 0x2000, CRC(f4dae4c8) SHA1(211dcbe085a30419d649afe10ca7c4017d909bd7) )
-
- ROM_LOAD( "blaster.11", 0x10000, 0x2000, CRC(6371e62f) SHA1(dc4173d2ee88757a6ac0838acaee325eadc2c4fb) )
- ROM_LOAD( "blaster.12", 0x12000, 0x2000, CRC(9804faac) SHA1(e61218fe190ad268af48d611d140d8f4cd38e4c7) )
- ROM_LOAD( "blaster.17", 0x14000, 0x1000, CRC(bf96182f) SHA1(e25a02508eecf79ea1ae5d45278a60becc6c7dcc) )
-
- ROM_LOAD( "blaster.15", 0x18000, 0x4000, CRC(1ad146a4) SHA1(5ab3d9618023b59bc329a9eeef986901867a639b) )
- ROM_LOAD( "blaster.8", 0x1c000, 0x4000, CRC(f110bbb0) SHA1(314dea232a3706509399348c7415f933c64cea1b) )
- ROM_LOAD( "blaster.9", 0x20000, 0x4000, CRC(5c5b0f8a) SHA1(224f89c85b2b1ca511d006180b8d994fccbdfb6b) )
- ROM_LOAD( "blaster.10", 0x24000, 0x4000, CRC(d47eb67f) SHA1(5dcde8be1a7b1927b90ffab3219dc47c5b2f20e4) )
- ROM_LOAD( "blaster.6", 0x28000, 0x4000, CRC(47fc007e) SHA1(3a80b9b7ae460e9732f7c1cdd465a5b06ded970f) )
- ROM_LOAD( "blaster.5", 0x2c000, 0x4000, CRC(15c1b94d) SHA1(5d97628541eb8933870c3ffd3646b7aaf8af6af5) )
- ROM_LOAD( "blaster.14", 0x30000, 0x4000, CRC(aea6b846) SHA1(04cb4b5eb000471a0cec377a5236ac8c83529528) )
- ROM_LOAD( "blaster.7", 0x34000, 0x4000, CRC(7a101181) SHA1(5f1581911ea7fe3e63ce1b9c50b1d3bf081dbf81) )
- ROM_LOAD( "blaster.1", 0x38000, 0x4000, CRC(8d0ea9e7) SHA1(34f8e2e99748bed29285f7e4929bb920960ab03e) )
- ROM_LOAD( "blaster.2", 0x3c000, 0x4000, CRC(03c4012c) SHA1(53f0adc91e5f1ac58b08b3a6d2de8de5a40bebab) )
- ROM_LOAD( "blaster.4", 0x40000, 0x4000, CRC(fc9d39fb) SHA1(126d43a64471bbf4b40aeda8913d50e82d254f9c) )
- ROM_LOAD( "blaster.3", 0x44000, 0x4000, CRC(253690fb) SHA1(06cb2ef95bb06b3618392e298aa690e1f75bc977) )
+ ROM_LOAD( "16.ic39", 0x0d000, 0x1000, CRC(54a40b21) SHA1(663c7b539e6f1f065a4ecae7bb0477c71951223f) )
+ ROM_LOAD( "13.ic27", 0x0e000, 0x2000, CRC(f4dae4c8) SHA1(211dcbe085a30419d649afe10ca7c4017d909bd7) )
+
+ ROM_LOAD( "11.ic25", 0x10000, 0x2000, CRC(6371e62f) SHA1(dc4173d2ee88757a6ac0838acaee325eadc2c4fb) )
+ ROM_LOAD( "12.ic26", 0x12000, 0x2000, CRC(9804faac) SHA1(e61218fe190ad268af48d611d140d8f4cd38e4c7) )
+ ROM_LOAD( "17.ic41", 0x14000, 0x1000, CRC(bf96182f) SHA1(e25a02508eecf79ea1ae5d45278a60becc6c7dcc) )
+
+ ROM_LOAD( "15.ic38", 0x18000, 0x4000, CRC(1ad146a4) SHA1(5ab3d9618023b59bc329a9eeef986901867a639b) )
+ ROM_LOAD( "8.ic20", 0x1c000, 0x4000, CRC(f110bbb0) SHA1(314dea232a3706509399348c7415f933c64cea1b) )
+ ROM_LOAD( "9.ic22", 0x20000, 0x4000, CRC(5c5b0f8a) SHA1(224f89c85b2b1ca511d006180b8d994fccbdfb6b) )
+ ROM_LOAD( "10.ic24", 0x24000, 0x4000, CRC(d47eb67f) SHA1(5dcde8be1a7b1927b90ffab3219dc47c5b2f20e4) )
+ ROM_LOAD( "6.ic13", 0x28000, 0x4000, CRC(47fc007e) SHA1(3a80b9b7ae460e9732f7c1cdd465a5b06ded970f) )
+ ROM_LOAD( "5.ic11", 0x2c000, 0x4000, CRC(15c1b94d) SHA1(5d97628541eb8933870c3ffd3646b7aaf8af6af5) )
+ ROM_LOAD( "14.ic35", 0x30000, 0x4000, CRC(aea6b846) SHA1(04cb4b5eb000471a0cec377a5236ac8c83529528) )
+ ROM_LOAD( "7.ic15", 0x34000, 0x4000, CRC(7a101181) SHA1(5f1581911ea7fe3e63ce1b9c50b1d3bf081dbf81) )
+ ROM_LOAD( "1.ic1", 0x38000, 0x4000, CRC(8d0ea9e7) SHA1(34f8e2e99748bed29285f7e4929bb920960ab03e) )
+ ROM_LOAD( "2.ic3", 0x3c000, 0x4000, CRC(03c4012c) SHA1(53f0adc91e5f1ac58b08b3a6d2de8de5a40bebab) )
+ ROM_LOAD( "4.ic7", 0x40000, 0x4000, CRC(fc9d39fb) SHA1(126d43a64471bbf4b40aeda8913d50e82d254f9c) )
+ ROM_LOAD( "3.ic6", 0x44000, 0x4000, CRC(253690fb) SHA1(06cb2ef95bb06b3618392e298aa690e1f75bc977) )
ROM_REGION( 0x10000, "soundcpu", 0 )
- ROM_LOAD( "blaster.18", 0xf000, 0x1000, CRC(c33a3145) SHA1(6ffe2da7b70c0b576fbc1790a33eecdbb9ee3d02) )
+ ROM_LOAD( "18.sb13", 0xf000, 0x1000, CRC(c33a3145) SHA1(6ffe2da7b70c0b576fbc1790a33eecdbb9ee3d02) )
+ ROM_REGION( 0x10000, "soundcpu_b", 0 )
+ ROM_LOAD( "18.sb10", 0xf000, 0x1000, CRC(c33a3145) SHA1(6ffe2da7b70c0b576fbc1790a33eecdbb9ee3d02) )
ROM_REGION( 0x0c00, "proms", 0 ) /* color & video-decoder PROM data */
ROM_LOAD( "decoder.4", 0x0800, 0x0200, CRC(e6631c23) SHA1(9988723269367fb44ef83f627186a1c88cf7877e) )
@@ -2381,28 +2399,30 @@ ROM_END
ROM_START( blaster30 )
ROM_REGION( 0x54000, "maincpu", 0 )
- ROM_LOAD( "blast30.16", 0x0d000, 0x1000, CRC(2db032d2) SHA1(287769361639695b1c1ceae0fe6899d83b4575d5) )
- ROM_LOAD( "blast30.13", 0x0e000, 0x2000, CRC(c99213c7) SHA1(d1c1549c053de3d862d8ef3ebca02811ed289464) )
-
- ROM_LOAD( "blast30.11", 0x10000, 0x2000, CRC(bc2d7eda) SHA1(831e9ecb75b143f9770eab1939136092a29e64f7) )
- ROM_LOAD( "blast30.12", 0x12000, 0x2000, CRC(8a215017) SHA1(ee9233134907c03f7a1221d9daa84fe047c2db94) )
- ROM_LOAD( "blast30.17", 0x14000, 0x1000, CRC(b308f0e5) SHA1(262e25be40dff66e65a0fe34c9d013a750b90876) )
-
- ROM_LOAD( "blaster.15", 0x18000, 0x4000, CRC(1ad146a4) SHA1(5ab3d9618023b59bc329a9eeef986901867a639b) )
- ROM_LOAD( "blaster.8", 0x1c000, 0x4000, CRC(f110bbb0) SHA1(314dea232a3706509399348c7415f933c64cea1b) )
- ROM_LOAD( "blaster.9", 0x20000, 0x4000, CRC(5c5b0f8a) SHA1(224f89c85b2b1ca511d006180b8d994fccbdfb6b) )
- ROM_LOAD( "blaster.10", 0x24000, 0x4000, CRC(d47eb67f) SHA1(5dcde8be1a7b1927b90ffab3219dc47c5b2f20e4) )
- ROM_LOAD( "blaster.6", 0x28000, 0x4000, CRC(47fc007e) SHA1(3a80b9b7ae460e9732f7c1cdd465a5b06ded970f) )
- ROM_LOAD( "blaster.5", 0x2c000, 0x4000, CRC(15c1b94d) SHA1(5d97628541eb8933870c3ffd3646b7aaf8af6af5) )
- ROM_LOAD( "blaster.14", 0x30000, 0x4000, CRC(aea6b846) SHA1(04cb4b5eb000471a0cec377a5236ac8c83529528) )
- ROM_LOAD( "blast30.7", 0x34000, 0x4000, CRC(a1c4db77) SHA1(7a878d44b6ca7444ecbb6c8f75e5e91de149daf3) )
- ROM_LOAD( "blaster.1", 0x38000, 0x4000, CRC(8d0ea9e7) SHA1(34f8e2e99748bed29285f7e4929bb920960ab03e) )
- ROM_LOAD( "blaster.2", 0x3c000, 0x4000, CRC(03c4012c) SHA1(53f0adc91e5f1ac58b08b3a6d2de8de5a40bebab) )
- ROM_LOAD( "blast30.4", 0x40000, 0x4000, CRC(39d2a32c) SHA1(33707877e841ef86a11b47ffabddce7f3d2a7030) )
- ROM_LOAD( "blast30.3", 0x44000, 0x4000, CRC(054c9f1c) SHA1(c21e3493f1ae506ab9fd28ed9ecc67d3305e9d7a) )
+ ROM_LOAD( "16.ic39", 0x0d000, 0x1000, CRC(2db032d2) SHA1(287769361639695b1c1ceae0fe6899d83b4575d5) )
+ ROM_LOAD( "13.ic27", 0x0e000, 0x2000, CRC(c99213c7) SHA1(d1c1549c053de3d862d8ef3ebca02811ed289464) )
+
+ ROM_LOAD( "11.ic25", 0x10000, 0x2000, CRC(bc2d7eda) SHA1(831e9ecb75b143f9770eab1939136092a29e64f7) )
+ ROM_LOAD( "12.ic26", 0x12000, 0x2000, CRC(8a215017) SHA1(ee9233134907c03f7a1221d9daa84fe047c2db94) )
+ ROM_LOAD( "17.ic41", 0x14000, 0x1000, CRC(b308f0e5) SHA1(262e25be40dff66e65a0fe34c9d013a750b90876) )
+
+ ROM_LOAD( "15.ic38", 0x18000, 0x4000, CRC(1ad146a4) SHA1(5ab3d9618023b59bc329a9eeef986901867a639b) )
+ ROM_LOAD( "8.ic20", 0x1c000, 0x4000, CRC(f110bbb0) SHA1(314dea232a3706509399348c7415f933c64cea1b) )
+ ROM_LOAD( "9.ic22", 0x20000, 0x4000, CRC(5c5b0f8a) SHA1(224f89c85b2b1ca511d006180b8d994fccbdfb6b) )
+ ROM_LOAD( "10.ic24", 0x24000, 0x4000, CRC(d47eb67f) SHA1(5dcde8be1a7b1927b90ffab3219dc47c5b2f20e4) )
+ ROM_LOAD( "6.ic13", 0x28000, 0x4000, CRC(47fc007e) SHA1(3a80b9b7ae460e9732f7c1cdd465a5b06ded970f) )
+ ROM_LOAD( "5.ic11", 0x2c000, 0x4000, CRC(15c1b94d) SHA1(5d97628541eb8933870c3ffd3646b7aaf8af6af5) )
+ ROM_LOAD( "14.ic35", 0x30000, 0x4000, CRC(aea6b846) SHA1(04cb4b5eb000471a0cec377a5236ac8c83529528) )
+ ROM_LOAD( "7.ic15", 0x34000, 0x4000, CRC(a1c4db77) SHA1(7a878d44b6ca7444ecbb6c8f75e5e91de149daf3) )
+ ROM_LOAD( "1.ic1", 0x38000, 0x4000, CRC(8d0ea9e7) SHA1(34f8e2e99748bed29285f7e4929bb920960ab03e) )
+ ROM_LOAD( "2.ic3", 0x3c000, 0x4000, CRC(03c4012c) SHA1(53f0adc91e5f1ac58b08b3a6d2de8de5a40bebab) )
+ ROM_LOAD( "4.ic7", 0x40000, 0x4000, CRC(39d2a32c) SHA1(33707877e841ef86a11b47ffabddce7f3d2a7030) )
+ ROM_LOAD( "3.ic6", 0x44000, 0x4000, CRC(054c9f1c) SHA1(c21e3493f1ae506ab9fd28ed9ecc67d3305e9d7a) )
ROM_REGION( 0x10000, "soundcpu", 0 )
- ROM_LOAD( "blaster.18", 0xf000, 0x1000, CRC(c33a3145) SHA1(6ffe2da7b70c0b576fbc1790a33eecdbb9ee3d02) )
+ ROM_LOAD( "sb13.18", 0xf000, 0x1000, CRC(c33a3145) SHA1(6ffe2da7b70c0b576fbc1790a33eecdbb9ee3d02) )
+ ROM_REGION( 0x10000, "soundcpu_b", 0 )
+ ROM_LOAD( "sb10.18", 0xf000, 0x1000, CRC(c33a3145) SHA1(6ffe2da7b70c0b576fbc1790a33eecdbb9ee3d02) )
ROM_REGION( 0x0c00, "proms", 0 ) /* color & video-decoder PROM data */
ROM_LOAD( "decoder.4", 0x0800, 0x0200, CRC(e6631c23) SHA1(9988723269367fb44ef83f627186a1c88cf7877e) )
@@ -2419,21 +2439,21 @@ ROM_START( blasterkit )
ROM_LOAD( "blastkit.12", 0x12000, 0x2000, CRC(8b1e26ab) SHA1(7d30800a9302f5a83792499d8df536693d01f75d) )
ROM_LOAD( "blastkit.17", 0x14000, 0x1000, CRC(577d1e9a) SHA1(0064124a65490e0473dfb0081ec28b7ee43a04b5) )
- ROM_LOAD( "blaster.15", 0x18000, 0x4000, CRC(1ad146a4) SHA1(5ab3d9618023b59bc329a9eeef986901867a639b) )
- ROM_LOAD( "blaster.8", 0x1c000, 0x4000, CRC(f110bbb0) SHA1(314dea232a3706509399348c7415f933c64cea1b) )
- ROM_LOAD( "blaster.9", 0x20000, 0x4000, CRC(5c5b0f8a) SHA1(224f89c85b2b1ca511d006180b8d994fccbdfb6b) )
- ROM_LOAD( "blaster.10", 0x24000, 0x4000, CRC(d47eb67f) SHA1(5dcde8be1a7b1927b90ffab3219dc47c5b2f20e4) )
- ROM_LOAD( "blaster.6", 0x28000, 0x4000, CRC(47fc007e) SHA1(3a80b9b7ae460e9732f7c1cdd465a5b06ded970f) )
- ROM_LOAD( "blaster.5", 0x2c000, 0x4000, CRC(15c1b94d) SHA1(5d97628541eb8933870c3ffd3646b7aaf8af6af5) )
- ROM_LOAD( "blaster.14", 0x30000, 0x4000, CRC(aea6b846) SHA1(04cb4b5eb000471a0cec377a5236ac8c83529528) )
+ ROM_LOAD( "blastkit.15", 0x18000, 0x4000, CRC(1ad146a4) SHA1(5ab3d9618023b59bc329a9eeef986901867a639b) )
+ ROM_LOAD( "blastkit.8", 0x1c000, 0x4000, CRC(f110bbb0) SHA1(314dea232a3706509399348c7415f933c64cea1b) )
+ ROM_LOAD( "blastkit.9", 0x20000, 0x4000, CRC(5c5b0f8a) SHA1(224f89c85b2b1ca511d006180b8d994fccbdfb6b) )
+ ROM_LOAD( "blastkit.10", 0x24000, 0x4000, CRC(d47eb67f) SHA1(5dcde8be1a7b1927b90ffab3219dc47c5b2f20e4) )
+ ROM_LOAD( "blastkit.6", 0x28000, 0x4000, CRC(47fc007e) SHA1(3a80b9b7ae460e9732f7c1cdd465a5b06ded970f) )
+ ROM_LOAD( "blastkit.5", 0x2c000, 0x4000, CRC(15c1b94d) SHA1(5d97628541eb8933870c3ffd3646b7aaf8af6af5) )
+ ROM_LOAD( "blastkit.14", 0x30000, 0x4000, CRC(aea6b846) SHA1(04cb4b5eb000471a0cec377a5236ac8c83529528) )
ROM_LOAD( "blastkit.7", 0x34000, 0x4000, CRC(6fcc2153) SHA1(00e7b6846c15400315d94e2c7d1c99b1a737c285) )
- ROM_LOAD( "blaster.1", 0x38000, 0x4000, CRC(8d0ea9e7) SHA1(34f8e2e99748bed29285f7e4929bb920960ab03e) )
- ROM_LOAD( "blaster.2", 0x3c000, 0x4000, CRC(03c4012c) SHA1(53f0adc91e5f1ac58b08b3a6d2de8de5a40bebab) )
+ ROM_LOAD( "blastkit.1", 0x38000, 0x4000, CRC(8d0ea9e7) SHA1(34f8e2e99748bed29285f7e4929bb920960ab03e) )
+ ROM_LOAD( "blastkit.2", 0x3c000, 0x4000, CRC(03c4012c) SHA1(53f0adc91e5f1ac58b08b3a6d2de8de5a40bebab) )
ROM_LOAD( "blastkit.4", 0x40000, 0x4000, CRC(f80e9ff5) SHA1(e232d96b6e07c7b4240fa4dd2cb9be4745a1be4b) )
ROM_LOAD( "blastkit.3", 0x44000, 0x4000, CRC(20e851f9) SHA1(efc288ef0333812a6282f22aade8e43e9a827533) )
ROM_REGION( 0x10000, "soundcpu", 0 )
- ROM_LOAD( "blaster.18", 0xf000, 0x1000, CRC(c33a3145) SHA1(6ffe2da7b70c0b576fbc1790a33eecdbb9ee3d02) )
+ ROM_LOAD( "blastkit.18", 0xf000, 0x1000, CRC(c33a3145) SHA1(6ffe2da7b70c0b576fbc1790a33eecdbb9ee3d02) )
ROM_REGION( 0x0c00, "proms", 0 ) /* color & video-decoder PROM data */
ROM_LOAD( "decoder.4", 0x0800, 0x0200, CRC(e6631c23) SHA1(9988723269367fb44ef83f627186a1c88cf7877e) )
@@ -2799,13 +2819,6 @@ static DRIVER_INIT( blaster )
}
-static DRIVER_INIT( blastkit )
-{
- williams_state *state = machine.driver_data<williams_state>();
- CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC02, 0x9700);
-}
-
-
static DRIVER_INIT( spdball )
{
williams_state *state = machine.driver_data<williams_state>();
@@ -2915,8 +2928,8 @@ GAME( 1982, jin, 0, jin, jin, defender, ROT90
/* Standard Williams hardware */
GAME( 1981, stargate, 0, williams, stargate, stargate, ROT0, "Williams", "Stargate", GAME_SUPPORTS_SAVE )
-GAME( 1982, robotron, 0, williams, robotron, robotron, ROT0, "Williams", "Robotron (Solid Blue label)", GAME_SUPPORTS_SAVE )
-GAME( 1982, robotronyo, robotron, williams, robotron, robotron, ROT0, "Williams", "Robotron (Yellow/Orange label)", GAME_SUPPORTS_SAVE )
+GAME( 1982, robotron, 0, williams, robotron, robotron, ROT0, "Williams", "Robotron: 2084 (Solid Blue label)", GAME_SUPPORTS_SAVE )
+GAME( 1982, robotronyo, robotron, williams, robotron, robotron, ROT0, "Williams", "Robotron: 2084 (Yellow/Orange label)", GAME_SUPPORTS_SAVE )
GAME( 1982, joust, 0, williams_muxed, joust, joust, ROT0, "Williams", "Joust (White/Green label)", GAME_SUPPORTS_SAVE )
GAME( 1982, joustr, joust, williams_muxed, joust, joust, ROT0, "Williams", "Joust (Solid Red label)", GAME_SUPPORTS_SAVE )
GAME( 1982, joustwr, joust, williams_muxed, joust, joust, ROT0, "Williams", "Joust (White/Red label)", GAME_SUPPORTS_SAVE )
@@ -2929,8 +2942,8 @@ GAME( 1982, sinistar1, sinistar, sinistar, sinistar, sinistar, ROT27
GAME( 1982, sinistar2, sinistar, sinistar, sinistar, sinistar, ROT270, "Williams", "Sinistar (revision 2)", GAME_SUPPORTS_SAVE )
GAME( 1983, playball, 0, playball, playball, playball, ROT270, "Williams", "PlayBall! (prototype)", GAME_SUPPORTS_SAVE )
GAME( 1983, blaster, 0, blaster, blaster, blaster, ROT0, "Williams", "Blaster", GAME_SUPPORTS_SAVE )
-GAME( 1983, blaster30, blaster, blaster, blaster, blaster, ROT0, "Williams", "Blaster (early 30 wave version)", GAME_SUPPORTS_SAVE )
-GAME( 1983, blasterkit, blaster, blastkit, blastkit, blastkit, ROT0, "Williams", "Blaster (kit)", GAME_SUPPORTS_SAVE )
+GAME( 1983, blaster30, blaster, blaster, blaster, blaster, ROT0, "Williams", "Blaster (early version with 30 waves)", GAME_SUPPORTS_SAVE )
+GAME( 1983, blasterkit, blaster, blastkit, blastkit, blaster, ROT0, "Williams", "Blaster (kit)", GAME_SUPPORTS_SAVE )
GAME( 1985, spdball, 0, spdball, spdball, spdball, ROT0, "Williams", "Speed Ball (prototype)", GAME_SUPPORTS_SAVE )
GAME( 1985, alienar, 0, alienar, alienar, alienar, ROT0, "Duncan Brown", "Alien Arena", GAME_SUPPORTS_SAVE )
GAME( 1985, alienaru, alienar, alienar, alienar, alienaru, ROT0, "Duncan Brown", "Alien Arena (Stargate Upgrade)", GAME_SUPPORTS_SAVE )
diff --git a/src/mame/includes/williams.h b/src/mame/includes/williams.h
index 143d8f9dad3..5caabc3ed43 100644
--- a/src/mame/includes/williams.h
+++ b/src/mame/includes/williams.h
@@ -57,11 +57,13 @@ extern const pia6821_interface williams_49way_pia_0_intf;
extern const pia6821_interface williams_49way_muxed_pia_0_intf;
extern const pia6821_interface williams_pia_1_intf;
extern const pia6821_interface williams_snd_pia_intf;
+extern const pia6821_interface williams_snd_pia_b_intf;
/* Game-specific old-Williams PIA interfaces */
extern const pia6821_interface lottofun_pia_0_intf;
extern const pia6821_interface sinistar_snd_pia_intf;
extern const pia6821_interface playball_pia_1_intf;
+extern const pia6821_interface blaster_pia_1_intf;
extern const pia6821_interface spdball_pia_3_intf;
/* Generic later-Williams PIA interfaces */
diff --git a/src/mame/machine/williams.c b/src/mame/machine/williams.c
index 030a9b56a38..e002bd066c6 100644
--- a/src/mame/machine/williams.c
+++ b/src/mame/machine/williams.c
@@ -19,8 +19,10 @@
static void williams_main_irq(device_t *device, int state);
static void williams_main_firq(device_t *device, int state);
static void williams_snd_irq(device_t *device, int state);
+static void williams_snd_irq_b(device_t *device, int state);
static WRITE8_DEVICE_HANDLER( williams_snd_cmd_w );
static WRITE8_DEVICE_HANDLER( playball_snd_cmd_w );
+static WRITE8_DEVICE_HANDLER( blaster_snd_cmd_w );
/* input port mapping */
static WRITE8_DEVICE_HANDLER( williams_port_select_w );
@@ -100,6 +102,13 @@ const pia6821_interface williams_snd_pia_intf =
/*outputs: A/B,CA/B2 */ DEVCB_DEVICE_HANDLER("wmsdac", dac_w), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
/*irqs : A/B */ DEVCB_LINE(williams_snd_irq), DEVCB_LINE(williams_snd_irq)
};
+/* Same as above, but for second sound board */
+const pia6821_interface williams_snd_pia_b_intf =
+{
+ /*inputs : A/B,CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
+ /*outputs: A/B,CA/B2 */ DEVCB_DEVICE_HANDLER("wmsdac_b", dac_w), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
+ /*irqs : A/B */ DEVCB_LINE(williams_snd_irq_b), DEVCB_LINE(williams_snd_irq_b)
+};
@@ -133,6 +142,14 @@ const pia6821_interface playball_pia_1_intf =
/*irqs : A/B */ DEVCB_LINE(williams_main_irq), DEVCB_LINE(williams_main_irq)
};
+/* Special PIA 1 for Blaster, to support two sound boards */
+const pia6821_interface blaster_pia_1_intf =
+{
+ /*inputs : A/B,CA/B1,CA/B2 */ DEVCB_INPUT_PORT("IN2"), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
+ /*outputs: A/B,CA/B2 */ DEVCB_NULL, DEVCB_HANDLER(blaster_snd_cmd_w), DEVCB_NULL, DEVCB_NULL,
+ /*irqs : A/B */ DEVCB_LINE(williams_main_irq), DEVCB_LINE(williams_main_irq)
+};
+
/* extra PIA 3 for Speed Ball */
const pia6821_interface spdball_pia_3_intf =
{
@@ -301,6 +318,15 @@ static void williams_snd_irq(device_t *device, int state)
/* IRQ to the sound CPU */
cputag_set_input_line(device->machine(), "soundcpu", M6800_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
}
+/* Same as above, but for second sound board */
+static void williams_snd_irq_b(device_t *device, int state)
+{
+ pia6821_device *pia_2 = device->machine().device<pia6821_device>("pia_2b");
+ int combined_state = pia_2->irq_a_state() | pia_2->irq_b_state();
+
+ /* IRQ to the sound CPU */
+ cputag_set_input_line(device->machine(), "soundcpu_b", M6800_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
+}
@@ -548,6 +574,22 @@ WRITE8_DEVICE_HANDLER( playball_snd_cmd_w )
device->machine().scheduler().synchronize(FUNC(williams_deferred_snd_cmd_w), data);
}
+static TIMER_CALLBACK( blaster_deferred_snd_cmd_w )
+{
+ pia6821_device *pia_2l = machine.device<pia6821_device>("pia_2");
+ pia6821_device *pia_2r = machine.device<pia6821_device>("pia_2b");
+ UINT8 l_data = param | 0x80;
+ UINT8 r_data = (param >> 1 & 0x40) | (param & 0x3f) | 0x80;
+
+ pia_2l->portb_w(l_data); pia_2l->cb1_w((l_data == 0xff) ? 0 : 1);
+ pia_2r->portb_w(r_data); pia_2r->cb1_w((r_data == 0xff) ? 0 : 1);
+}
+
+WRITE8_DEVICE_HANDLER( blaster_snd_cmd_w )
+{
+ device->machine().scheduler().synchronize(FUNC(blaster_deferred_snd_cmd_w), data);
+}
+
static TIMER_CALLBACK( williams2_deferred_snd_cmd_w )
{