mirror of
https://github.com/mamedev/mame.git
synced 2024-11-18 10:06:19 +01:00
Merge pull request #1966 from ajrhacker/pacndac
More DAC identification and Namco sound research (nw)
This commit is contained in:
commit
30c5aa5f69
7 changed files with 25 additions and 13 deletions
|
@ -284,6 +284,7 @@ DAC_GENERATOR(AD7528, ad7528_device, dac_byte_interface, dac_code_binary<8>, dac
|
|||
DAC_GENERATOR(AD7533, ad7533_device, dac_word_interface, dac_code_binary<10>, dac_gain_r2r, "AD7533", "ad7533")
|
||||
DAC_GENERATOR(AD7541, ad7541_device, dac_word_interface, dac_code_binary<12>, dac_gain_r2r, "AD7541", "ad7541")
|
||||
DAC_GENERATOR(AM6012, am6012_device, dac_word_interface, dac_code_binary<12>, dac_gain_r2r, "AM6012", "am6012")
|
||||
DAC_GENERATOR(DAC08, dac08_device, dac_byte_interface, dac_code_binary<8>, dac_gain_r2r, "DAC08", "dac08")
|
||||
DAC_GENERATOR(DAC0800, dac0800_device, dac_byte_interface, dac_code_binary<8>, dac_gain_r2r, "DAC0800", "dac0800")
|
||||
DAC_GENERATOR(DAC1200, dac1200_device, dac_word_interface, dac_code_binary<12>, dac_gain_r2r, "DAC1200", "dac1200")
|
||||
DAC_GENERATOR(MC1408, mc1408_device, dac_byte_interface, dac_code_binary<8>, dac_gain_r2r, "MC1408", "mc1408")
|
||||
|
@ -292,6 +293,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(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(ZN429E, zn429e_device, dac_byte_interface, dac_code_binary<8>, dac_gain_r2r, "ZN429E-8", "zn429e")
|
||||
|
||||
// DAC circuits/unidentified chips
|
||||
DAC_GENERATOR(DAC_1BIT, dac_1bit_device, dac_bit_interface, dac_code_binary<1>, 1.0, "1-Bit DAC", "dac")
|
||||
|
|
|
@ -11,6 +11,16 @@
|
|||
- 8-voice mono (custom 15XX: Mappy, Dig Dug 2, etc)
|
||||
- 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"
|
||||
|
|
|
@ -13,7 +13,7 @@ board containing the video and sound cpus, and the video controller
|
|||
and the sound DAC and amp.
|
||||
|
||||
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.
|
||||
|
||||
|
||||
|
@ -794,7 +794,7 @@ static MACHINE_CONFIG_START( babypac, by133_state )
|
|||
|
||||
/* sound hardware */
|
||||
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_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
|
||||
|
||||
|
|
|
@ -6024,7 +6024,7 @@ static MACHINE_CONFIG_DERIVED( sfx, galaxian_base )
|
|||
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(galaxian_state, sfx_sample_control_w))
|
||||
|
||||
/* 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_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
|
||||
|
|
|
@ -452,7 +452,7 @@ static MACHINE_CONFIG_START( junofrst, junofrst_state )
|
|||
MCFG_SOUND_ROUTE(1, "filter.0.1", 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_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
|
||||
|
||||
|
|
|
@ -14,9 +14,8 @@ They can be divided in three "families":
|
|||
The hardware consists of two 6809, and several Namco custom ICs that provide
|
||||
a static tilemap and 2bpp sprites.
|
||||
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
|
||||
the speech is part of the standard Namco sound hardware, or a quick addition
|
||||
to the base board.
|
||||
sample). At this time, it is still unknown how speech samples are transmitted
|
||||
to the DAC (almost certainly the same resistor network used by the 15XX).
|
||||
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.
|
||||
The sprite hardware is also different from Super Pacman, featuring 8x8 sprites.
|
||||
|
@ -44,7 +43,8 @@ CPU board:
|
|||
15XX sound control
|
||||
16XX I/O control
|
||||
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:
|
||||
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))
|
||||
|
||||
/* 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_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
|
||||
|
@ -2412,13 +2412,13 @@ DRIVER_INIT_MEMBER(mappy_state,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
|
||||
probably added a latch loaded when the bottom 4 lines are 0010 (which corresponds
|
||||
to locations not used by the sound hardware).
|
||||
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
|
||||
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));
|
||||
}
|
||||
|
|
|
@ -1068,8 +1068,8 @@ static MACHINE_CONFIG_START( ns1, namcos1_state )
|
|||
MCFG_SOUND_ROUTE(0, "lspeaker", 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("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("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) // 10-pin 1Kx8R SIP with HC374 latch
|
||||
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, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac1", -1.0, DAC_VREF_NEG_INPUT)
|
||||
|
|
Loading…
Reference in a new issue