More DAC identification and Namco sound research (nw)

This commit is contained in:
AJR 2017-01-13 14:04:23 -05:00
parent d6caa76734
commit 4fa462593d
7 changed files with 24 additions and 13 deletions

View File

@ -292,6 +292,7 @@ DAC_GENERATOR(MC3410, mc3410_device, dac_word_interface, dac_code_binary<10>, da
DAC_GENERATOR(PCM54HP, pcm54hp_device, dac_word_interface, dac_code_binary<16>, dac_gain_r2r, "PCM54HP", "pcm54hp") DAC_GENERATOR(PCM54HP, pcm54hp_device, dac_word_interface, dac_code_binary<16>, dac_gain_r2r, "PCM54HP", "pcm54hp")
DAC_GENERATOR(UDA1341TS, uda1341ts_device, dac_word_interface, dac_code_twos_complement<16>, dac_gain_r2r, "UDA1341TS", "uda1341ts") // I2C stereo audio codec DAC_GENERATOR(UDA1341TS, uda1341ts_device, dac_word_interface, dac_code_twos_complement<16>, dac_gain_r2r, "UDA1341TS", "uda1341ts") // I2C stereo audio codec
DAC_GENERATOR(ZN425E, zn425e_device, dac_byte_interface, dac_code_binary<8>, dac_gain_r2r, "ZN425E", "zn425e") DAC_GENERATOR(ZN425E, zn425e_device, dac_byte_interface, dac_code_binary<8>, dac_gain_r2r, "ZN425E", "zn425e")
DAC_GENERATOR(ZN429E, zn429e_device, dac_byte_interface, dac_code_binary<8>, dac_gain_r2r, "ZN429E-8", "zn429e")
// DAC circuits/unidentified chips // DAC circuits/unidentified chips
DAC_GENERATOR(DAC_1BIT, dac_1bit_device, dac_bit_interface, dac_code_binary<1>, 1.0, "1-Bit DAC", "dac") DAC_GENERATOR(DAC_1BIT, dac_1bit_device, dac_bit_interface, dac_code_binary<1>, 1.0, "1-Bit DAC", "dac")

View File

@ -11,6 +11,16 @@
- 8-voice mono (custom 15XX: Mappy, Dig Dug 2, etc) - 8-voice mono (custom 15XX: Mappy, Dig Dug 2, etc)
- 8-voice stereo (System 1) - 8-voice stereo (System 1)
The 15XX custom does not have a DAC of its own; instead, it streams
the 4-bit PROM data directly into the 99XX custom DAC. Most pre-99XX
(and pre-15XX) Namco games use a LS273 latch (cleared when sound is
disabled), a 4.7K/2.2K/1K/470 resistor-weighted DAC, and a 4066 and
second group of resistors (10K/22K/47K/100K) for volume control.
Pole Position does more complicated sound mixing: a 4051 multiplexes
wavetable sound with four signals derived from the 52XX and 54XX, the
selected signal is distributed to four volume control sections, and
finally the engine noise is mixed into all four channels.
***************************************************************************/ ***************************************************************************/
#include "emu.h" #include "emu.h"

View File

@ -13,7 +13,7 @@ board containing the video and sound cpus, and the video controller
and the sound DAC and amp. and the sound DAC and amp.
Granny uses the MPU4 board, but it has a Vidiot Deluxe for the Granny uses the MPU4 board, but it has a Vidiot Deluxe for the
video, and a Cheep Squeek sound board. The manual incorrectly video, and a Cheap Squeek sound board. The manual incorrectly
describes the babypac vidiot board, which is of little use. describes the babypac vidiot board, which is of little use.
@ -794,7 +794,7 @@ static MACHINE_CONFIG_START( babypac, by133_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("speaker") MCFG_SPEAKER_STANDARD_MONO("speaker")
MCFG_SOUND_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC MCFG_SOUND_ADD("dac", ZN429E, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // U32 (Vidiot) or U6 (Cheap Squeak)
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT)

View File

@ -6024,7 +6024,7 @@ static MACHINE_CONFIG_DERIVED( sfx, galaxian_base )
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(galaxian_state, sfx_sample_control_w)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(galaxian_state, sfx_sample_control_w))
/* DAC for the sample player */ /* DAC for the sample player */
MCFG_SOUND_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) // unknown DAC MCFG_SOUND_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) // 16-pin IC (not identified by schematics)
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -452,7 +452,7 @@ static MACHINE_CONFIG_START( junofrst, junofrst_state )
MCFG_SOUND_ROUTE(1, "filter.0.1", 0.30) MCFG_SOUND_ROUTE(1, "filter.0.1", 0.30)
MCFG_SOUND_ROUTE(2, "filter.0.2", 0.30) MCFG_SOUND_ROUTE(2, "filter.0.2", 0.30)
MCFG_SOUND_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC MCFG_SOUND_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // 100K (R56-63)/200K (R64-71) ladder network
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT)

View File

@ -14,9 +14,8 @@ They can be divided in three "families":
The hardware consists of two 6809, and several Namco custom ICs that provide The hardware consists of two 6809, and several Namco custom ICs that provide
a static tilemap and 2bpp sprites. a static tilemap and 2bpp sprites.
Grobda is the only Namco game of this era that has speech (just a short Grobda is the only Namco game of this era that has speech (just a short
sample). At this time, it is still unknown whether the DAC used to play sample). At this time, it is still unknown how speech samples are transmitted
the speech is part of the standard Namco sound hardware, or a quick addition to the DAC (almost certainly the same resistor network used by the 15XX).
to the base board.
2) Phozon. This game runs on an unique board: the large number of sprites on 2) Phozon. This game runs on an unique board: the large number of sprites on
screen at the same time required a 3rd 6809 to help with the calculations. screen at the same time required a 3rd 6809 to help with the calculations.
The sprite hardware is also different from Super Pacman, featuring 8x8 sprites. The sprite hardware is also different from Super Pacman, featuring 8x8 sprites.
@ -44,7 +43,8 @@ CPU board:
15XX sound control 15XX sound control
16XX I/O control 16XX I/O control
5xXX(x2) I/O 5xXX(x2) I/O
99XX sound volume (only Mappy, Super Pacman uses a standard LS273) 99XX DAC with volume control (only Mappy, Super Pacman uses LS273, CD4066
and binary-weighted resistors R34-37 and R22-25)
Video board: Video board:
00XX tilemap address generator with scrolling capability (only Super Pacman) 00XX tilemap address generator with scrolling capability (only Super Pacman)
@ -1766,7 +1766,7 @@ static MACHINE_CONFIG_START( grobda, mappy_state )
MCFG_NAMCO56XX_OUT_0_CB(WRITE8(mappy_state, out_mux)) MCFG_NAMCO56XX_OUT_0_CB(WRITE8(mappy_state, out_mux))
/* sound hardware */ /* sound hardware */
MCFG_SOUND_ADD("dac", DAC_4BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.275) // unknown DAC MCFG_SOUND_ADD("dac", DAC_4BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.275) // alternate route to 15XX-related DAC?
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -2412,13 +2412,13 @@ DRIVER_INIT_MEMBER(mappy_state,grobda)
{ {
m_type = GAME_GROBDA; m_type = GAME_GROBDA;
/* I think the speech in Grobda is not a standard Namco sound feature, but rather a hack. /* The speech in Grobda might not be a standard Namco sound feature, but rather a hack.
The hardware automatically cycles the bottom 6 address lines of sound RAM, so they The hardware automatically cycles the bottom 6 address lines of sound RAM, so they
probably added a latch loaded when the bottom 4 lines are 0010 (which corresponds probably added a latch loaded when the bottom 4 lines are 0010 (which corresponds
to locations not used by the sound hardware). to locations not used by the sound hardware).
The program writes the same value to 0x02, 0x12, 0x22 and 0x32. The program writes the same value to 0x02, 0x12, 0x22 and 0x32.
However, removing the 15XX from the board causes sound to disappear completely, so However, removing the 15XX from the board causes sound to disappear completely, so
the DAC might be built-in after all. the 15XX may still play some part in conveying speech to the DAC.
*/ */
m_subcpu->space(AS_PROGRAM).install_write_handler(0x0002, 0x0002, write8_delegate(FUNC(dac_byte_interface::write), (dac_byte_interface *)m_dac)); m_subcpu->space(AS_PROGRAM).install_write_handler(0x0002, 0x0002, write8_delegate(FUNC(dac_byte_interface::write), (dac_byte_interface *)m_dac));
} }

View File

@ -1068,8 +1068,8 @@ static MACHINE_CONFIG_START( ns1, namcos1_state )
MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
MCFG_SOUND_ADD("dac0", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) // unknown DAC MCFG_SOUND_ADD("dac0", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) // 10-pin 1Kx8R SIP with HC374 latch
MCFG_SOUND_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) // unknown DAC MCFG_SOUND_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) // 10-pin 1Kx8R SIP with HC374 latch
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
MCFG_SOUND_ROUTE_EX(0, "dac0", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac0", -1.0, DAC_VREF_NEG_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac0", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac0", -1.0, DAC_VREF_NEG_INPUT)
MCFG_SOUND_ROUTE_EX(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac1", -1.0, DAC_VREF_NEG_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)