taito.c : added ay sound, snake sounds better now.

This commit is contained in:
Robbbert 2014-08-28 14:32:58 +00:00
parent 1a38a001ad
commit 81ce26a79c

View File

@ -13,19 +13,35 @@
Need schematics to do this properly.
Status of each game:
- shock, obaoba, drakor, meteort, sureshop, cosmic, vortexp, stest, rally:
Works, with various quality of sounds
- sharkt, snake:
As above, but outhole can randomly stop working
- lunelle:
Works, but play can be interrupted by a large flashing '14'
- ladylukt, vegast, titan, gork:
Works, no sound
- gemini2k, zarza, cavnegro, hawkman, mrblack, sshuttle, fireactd:
Can insert a coin but cannot start a game
- fireact:
Cannot insert a coin
- mrblkz80:
Different hardware, not emulated
ToDO:
- Inputs
- Outputs
- Sound (need a schematic)
- Display flickers ingame
- Votrax makes continual rattling noise
- Votrax makes continual rattling noise and nothing else
- Some games produce sound, but silence or random sounds often occur, or it just
cuts out for a while.
*****************************************************************************************/
#include "emu.h"
#include "machine/genpin.h"
#include "cpu/i8085/i8085.h"
#include "cpu/m6800/m6800.h"
#include "machine/6821pia.h"
@ -34,11 +50,11 @@ ToDO:
#include "sound/dac.h"
#include "taito.lh"
class taito_state : public driver_device
class taito_state : public genpin_class
{
public:
taito_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
: genpin_class(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_cpu2(*this, "audiocpu")
, m_pia(*this, "pia")
@ -108,11 +124,19 @@ static ADDRESS_MAP_START( taito_sub_map2, AS_PROGRAM, 8, taito_state )
AM_RANGE(0x2000, 0x3fff) AM_ROM AM_REGION("cpu2", 0x2000)
ADDRESS_MAP_END
static ADDRESS_MAP_START( taito_sub_map3, AS_PROGRAM, 8, taito_state )
static ADDRESS_MAP_START( taito_sub_map5, AS_PROGRAM, 8, taito_state )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x007f) AM_RAM // internal to the cpu
AM_RANGE(0x0400, 0x0403) AM_DEVREADWRITE("pia", pia6821_device, read, write)
AM_RANGE(0x5000, 0x7fff) AM_ROM AM_REGION("cpu2", 0x5000)
AM_RANGE(0x1000, 0x1000) AM_DEVWRITE("aysnd_0", ay8910_device, address_w)
AM_RANGE(0x1003, 0x1003) AM_DEVWRITE("aysnd_0", ay8910_device, address_w)
AM_RANGE(0x1007, 0x1007) AM_DEVREAD("aysnd_0", ay8910_device, data_r)
AM_RANGE(0x100c, 0x100c) AM_DEVWRITE("aysnd_1", ay8910_device, address_w)
AM_RANGE(0x100a, 0x100a) AM_DEVWRITE("aysnd_0", ay8910_device, data_w)
AM_RANGE(0x100b, 0x100b) AM_DEVWRITE("aysnd_0", ay8910_device, data_w)
AM_RANGE(0x100d, 0x100d) AM_DEVREAD("aysnd_1", ay8910_device, data_r)
AM_RANGE(0x100e, 0x100e) AM_DEVWRITE("aysnd_1", ay8910_device, data_w)
AM_RANGE(0x2000, 0x7fff) AM_ROM AM_REGION("cpu2", 0x2000)
ADDRESS_MAP_END
static ADDRESS_MAP_START( shock_map, AS_PROGRAM, 8, taito_state )
@ -306,9 +330,11 @@ static MACHINE_CONFIG_START( taito, taito_state )
MCFG_DEFAULT_LAYOUT(layout_taito)
/* Sound */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_FRAGMENT_ADD( genpin_audio )
MCFG_SPEAKER_STANDARD_MONO("dacsnd")
MCFG_DAC_ADD("dac")
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.95)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "dacsnd", 0.95)
MCFG_DEVICE_ADD("pia", PIA6821, 0)
//MCFG_PIA_READPA_HANDLER(READ8(taito_state, pia_pa_r))
@ -323,16 +349,6 @@ static MACHINE_CONFIG_START( taito, taito_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_a", taito_state, timer_a, attotime::from_hz(200))
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( taito2, taito )
MCFG_CPU_MODIFY( "audiocpu" )
MCFG_CPU_PROGRAM_MAP(taito_sub_map2)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( taito3, taito )
MCFG_CPU_MODIFY( "audiocpu" )
MCFG_CPU_PROGRAM_MAP(taito_sub_map3)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( shock, taito )
MCFG_CPU_MODIFY( "maincpu" )
MCFG_CPU_PROGRAM_MAP(shock_map)
@ -340,11 +356,17 @@ static MACHINE_CONFIG_DERIVED( shock, taito )
MCFG_CPU_PROGRAM_MAP(shock_sub_map)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( taito2, taito )
MCFG_CPU_MODIFY( "audiocpu" )
MCFG_CPU_PROGRAM_MAP(taito_sub_map2)
MACHINE_CONFIG_END
// add vox
static MACHINE_CONFIG_DERIVED( taito4, taito )
MCFG_SPEAKER_STANDARD_MONO("voxsnd")
MCFG_DEVICE_ADD("votrax", VOTRAX_SC01, 720000) // guess
MCFG_VOTRAX_SC01_REQUEST_CB(WRITELINE(taito_state, votrax_request))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) // todo: fix - it makes noise continuously
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "voxsnd", 0.15) // todo: fix - it makes noise continuously
MCFG_DEVICE_REMOVE("pia")
MCFG_DEVICE_ADD("pia", PIA6821, 0)
@ -358,6 +380,26 @@ static MACHINE_CONFIG_DERIVED( taito4, taito )
MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("audiocpu", m6802_cpu_device, irq_line))
MACHINE_CONFIG_END
static MACHINE_CONFIG_FRAGMENT( taito_ay_audio )
MCFG_CPU_MODIFY( "audiocpu" )
MCFG_CPU_PROGRAM_MAP(taito_sub_map5)
MCFG_SPEAKER_STANDARD_MONO("aysnd")
MCFG_SOUND_ADD("aysnd_0", AY8910, XTAL_3_579545MHz/2) /* guess */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "aysnd", 0.8)
MCFG_SOUND_ADD("aysnd_1", AY8910, XTAL_3_579545MHz/2) /* guess */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "aysnd", 0.8)
MACHINE_CONFIG_END
// add ay
static MACHINE_CONFIG_DERIVED( taito5, taito )
MCFG_FRAGMENT_ADD( taito_ay_audio )
MACHINE_CONFIG_END
// add vox and ay
static MACHINE_CONFIG_DERIVED( taito6, taito4 )
MCFG_FRAGMENT_ADD( taito_ay_audio )
MACHINE_CONFIG_END
@ -510,9 +552,10 @@ ROM_START(gork)
ROM_LOAD( "gork3.bin", 0x1000, 0x0800, CRC(0ea1a2dc) SHA1(3ab58bc25a4512aae5c16f497bddf713413c02fe))
ROM_LOAD( "gork4.bin", 0x1800, 0x0800, CRC(0e6260fb) SHA1(b2f7190991d63701210a25a3970293b8f4c34022))
ROM_REGION(0x4000, "cpu2", 0)
ROM_REGION(0x8000, "cpu2", 0)
ROM_LOAD("gork_s1.bin", 0x2000, 0x1000, CRC(6611a4cb) SHA1(3ab840b162f9bfe2aebe1d3afeb1fddaf849d9c5))
ROM_LOAD("gork_s2.bin", 0x3000, 0x1000, CRC(440739cb) SHA1(6172bf000f854ccf5c24c7700a0ad208596d24f8))
ROM_RELOAD( 0x7000, 0x1000)
ROM_END
/*--------------------------------
@ -719,9 +762,10 @@ ROM_START(snake)
ROM_LOAD( "snake3.bin", 0x1000, 0x0800, CRC(6f054bc0) SHA1(08ab82131888756e8178b2fe2bbc24fc4f494ef2))
ROM_LOAD( "snake4.bin", 0x1800, 0x0800, CRC(ed231064) SHA1(42410dbbef36dea9d0163c65406bc86b35bb0bd7))
ROM_REGION(0x4000, "cpu2", 0)
ROM_REGION(0x8000, "cpu2", 0)
ROM_LOAD("snake_s1.bin", 0x2000, 0x1000, CRC(f7c1623c) SHA1(77e79ccc4b074b715008de37332baf76791d471e))
ROM_LOAD("snake_s2.bin", 0x3000, 0x1000, CRC(18316d73) SHA1(422a093ff245f0c8f710aeba91acd59666e2398b))
ROM_RELOAD( 0x7000, 0x1000)
ROM_END
/*--------------------------------
@ -845,9 +889,10 @@ ROM_START(voleybal)
ROM_LOAD( "voley3.bin", 0x1000, 0x0800, NO_DUMP)
ROM_LOAD( "voley4.bin", 0x1800, 0x0800, NO_DUMP)
ROM_REGION(0x4000, "cpu2", 0)
ROM_REGION(0x8000, "cpu2", 0)
ROM_LOAD("voley_s1.bin", 0x2000, 0x1000, CRC(9c825666) SHA1(330ecd9caccb8a1555c5e7302095ae25558c020e))
ROM_LOAD("voley_s2.bin", 0x3000, 0x1000, CRC(79a8228c) SHA1(e71d9347a8fc230c70703164ae0e4d44423bbb5d))
ROM_RELOAD( 0x7000, 0x1000)
ROM_END
/*--------------------------------
@ -921,7 +966,7 @@ ROM_START(mrblkz80)
ROM_END
// no sound
GAME(198?, taitest, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Taito Test Fixture", GAME_MECHANICAL | GAME_NO_SOUND_HW )
GAME(198?, taitest, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Taito Test Fixture", GAME_MECHANICAL )
// dac (sintetizador)
GAME(1979, shock, 0, shock, taito, taito_state, taito, ROT0, "Taito do Brasil", "Shock", GAME_MECHANICAL | GAME_IMPERFECT_SOUND )
@ -954,17 +999,17 @@ GAME(1982, hawkman, 0, taito4, taito, taito_state, taito, ROT0,
GAME(1982, hawkman1, hawkman, taito4, taito, taito_state, taito, ROT0, "Taito do Brasil", "Hawkman (set 2)", GAME_IS_SKELETON_MECHANICAL)
// dac and ay
GAME(1982, snake, 0, taito2, taito, taito_state, taito, ROT0, "Taito do Brasil", "Snake Machine", GAME_MECHANICAL | GAME_IMPERFECT_SOUND )
GAME(198?, voleybal, 0, taito2, taito, taito_state, taito, ROT0, "Taito do Brasil", "Voley Ball", GAME_IS_SKELETON_MECHANICAL)
GAME(1984, mrblack, 0, taito3, taito, taito_state, taito, ROT0, "Taito do Brasil", "Mr. Black (set 1)", GAME_IS_SKELETON_MECHANICAL)
GAME(1985, mrblack1, mrblack, taito3, taito, taito_state, taito, ROT0, "Taito do Brasil", "Mr. Black (set 2)", GAME_IS_SKELETON_MECHANICAL)
GAME(1985, sshuttle, 0, taito3, taito, taito_state, taito, ROT0, "Taito do Brasil", "Space Shuttle (Taito) (set 1)", GAME_IS_SKELETON_MECHANICAL)
GAME(1985, sshuttle1, sshuttle, taito3, taito, taito_state, taito, ROT0, "Taito do Brasil", "Space Shuttle (Taito) (set 2)", GAME_IS_SKELETON_MECHANICAL)
GAME(198?, polar, 0, taito3, taito, taito_state, taito, ROT0, "Taito do Brasil", "Polar Explorer", GAME_IS_SKELETON_MECHANICAL)
GAME(1982, snake, 0, taito5, taito, taito_state, taito, ROT0, "Taito do Brasil", "Snake Machine", GAME_MECHANICAL | GAME_IMPERFECT_SOUND )
GAME(198?, voleybal, 0, taito5, taito, taito_state, taito, ROT0, "Taito do Brasil", "Voley Ball", GAME_IS_SKELETON_MECHANICAL)
GAME(1984, mrblack, 0, taito5, taito, taito_state, taito, ROT0, "Taito do Brasil", "Mr. Black (set 1)", GAME_IS_SKELETON_MECHANICAL)
GAME(1985, mrblack1, mrblack, taito5, taito, taito_state, taito, ROT0, "Taito do Brasil", "Mr. Black (set 2)", GAME_IS_SKELETON_MECHANICAL)
GAME(1985, sshuttle, 0, taito5, taito, taito_state, taito, ROT0, "Taito do Brasil", "Space Shuttle (Taito) (set 1)", GAME_IS_SKELETON_MECHANICAL)
GAME(1985, sshuttle1, sshuttle, taito5, taito, taito_state, taito, ROT0, "Taito do Brasil", "Space Shuttle (Taito) (set 2)", GAME_IS_SKELETON_MECHANICAL)
GAME(198?, polar, 0, taito5, taito, taito_state, taito, ROT0, "Taito do Brasil", "Polar Explorer", GAME_IS_SKELETON_MECHANICAL)
// dac, vox and ay
GAME(1982, gork, 0, taito2, taito, taito_state, taito, ROT0, "Taito do Brasil", "Gork", GAME_MECHANICAL | GAME_NO_SOUND )
GAME(198?, fireactd, 0, taito3, taito, taito_state, taito, ROT0, "Taito do Brasil", "Fire Action Deluxe", GAME_IS_SKELETON_MECHANICAL)
GAME(1982, gork, 0, taito6, taito, taito_state, taito, ROT0, "Taito do Brasil", "Gork", GAME_MECHANICAL | GAME_NO_SOUND )
GAME(198?, fireactd, 0, taito6, taito, taito_state, taito, ROT0, "Taito do Brasil", "Fire Action Deluxe", GAME_IS_SKELETON_MECHANICAL)
// different hardware
GAME(198?, mrblkz80, mrblack, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Mr. Black (Z-80 CPU)", GAME_IS_SKELETON_MECHANICAL)