Hooked DAC writes, now Game.com greets you with a very low pitched "Game Com" speech

This commit is contained in:
Angelo Salese 2013-10-23 15:59:18 +00:00
parent 55d8157c14
commit 8788fa1d58
3 changed files with 19 additions and 8 deletions

View File

@ -117,13 +117,11 @@ static MACHINE_CONFIG_START( gamecom, gamecom_state )
MCFG_PALETTE_LENGTH(5)
/* sound hardware */
#if 0
MCFG_SPEAKER_STANDARD_STEREO( "left", "right" )
/* MCFG_SOUND_ADD( "custom", CUSTOM, 0 ) */
/* MCFG_SOUND_CONFIG */
MCFG_SOUND_ROUTE( 0, "left", 0.50 )
MCFG_SOUND_ROUTE( 1, "right", 0.50 )
#endif
MCFG_SPEAKER_STANDARD_STEREO( "lspeaker", "rspeaker" )
/* TODO: much more complex than this */
MCFG_SOUND_ADD("dac", DAC, 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.00)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.00)
/* cartridge */
MCFG_CARTSLOT_ADD("cart1")

View File

@ -15,6 +15,7 @@
#include "cpu/sm8500/sm8500.h"
#include "imagedev/cartslot.h"
#include "rendlay.h"
#include "sound/dac.h"
/* SM8521 register addresses */
enum
@ -211,6 +212,7 @@ public:
gamecom_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_dac(*this, "dac"),
m_p_nvram(*this,"p_nvram"),
m_p_videoram(*this,"p_videoram"),
m_bank1(*this, "bank1"),
@ -223,9 +225,11 @@ public:
m_io_in1(*this, "IN1"),
m_io_in2(*this, "IN2"),
m_io_styx(*this, "STYX"),
m_io_styy(*this, "STYY") { }
m_io_styy(*this, "STYY")
{ }
required_device<cpu_device> m_maincpu;
required_device<dac_device> m_dac;
DECLARE_READ8_MEMBER( gamecom_internal_r );
DECLARE_READ8_MEMBER( gamecom_pio_r );
DECLARE_WRITE8_MEMBER( gamecom_internal_w );

View File

@ -321,6 +321,13 @@ WRITE8_MEMBER( gamecom_state::gamecom_internal_w )
/* Sound */
case SM8521_SGC:
/*
x--- ---- enable sound output
---- x--- enable DAC
---- -x-- enable SG2
---- --x- enable SG1
---- ---x enable SG0
*/
m_sound.sgc = data;
break;
case SM8521_SG0L:
@ -352,6 +359,8 @@ WRITE8_MEMBER( gamecom_state::gamecom_internal_w )
break;
case SM8521_SGDA:
m_sound.sgda = data;
if((m_sound.sgc & 0x88) == 0x88)
m_dac->write_unsigned8(data);
break;
case SM8521_SG0W0: