summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/audio/beezer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/audio/beezer.c')
-rw-r--r--src/mame/audio/beezer.c102
1 files changed, 51 insertions, 51 deletions
diff --git a/src/mame/audio/beezer.c b/src/mame/audio/beezer.c
index bc74fa31b14..a9d893b6a83 100644
--- a/src/mame/audio/beezer.c
+++ b/src/mame/audio/beezer.c
@@ -6,54 +6,54 @@
Preliminary, partially functional driver by Jonathan Gevaryahu
AKA Lord Nightmare
- TODO:
- * The entire NOISE generator is just copied from exidy.c and is completely
- wrong. It should be using an MM5837 self-clocked LFSR with taps on bits
- 16(0x10) and 13(0xD)
- * The entire audio 6522 VIA isn't even HANDLED in this driver yet, hence
- the sound channel provided by the VIA is completely missing! (it is
- handled in /machine/beezer.c as via 1 at the moment)
- * Related to above, the hookup of timer1 out (from pb7 of 6522) isn't done
- which means selectively latched noise cannot work properly.
- * Several inexplicable things on the schematic are not handled, such as the
- 'VCO' input for 6840 channel 2 external clock whose source does not appear
- anywhere on the schematic, nor does it handle the 'DMOD DATA' and 'DMOD
- CLR' outputs for some sort of digital modulator (perhaps an hc55516?)
- from the VIA, which also does not appear anywhere on schematic.
- The latter the VIA *DOES* seem to write something to, but it may be just
- a silence waveform for 55516, alternating zeroes and ones.
- * The volume dac ram values could be handled better, currently the MSB bit
- is just thrown out; it should invert the waveform.
- * The channel mixing is done additively at the moment rather than
- emulating the original multiplexer, which is actually not that hard to do
- * The 'FM OR AM' output of the audio via (pb1) appears to control some sort
- of suppression or filtering change of the post-DAC amplifier when enabled,
- only during the TIMER1 OUT time-slot of the multiplexer, see page 1B 3-3
- of schematics. This will be a MESS to emulate since theres a lot of analog
- crap involved.
- * The /INT line and related logic of the 6840 is not emulated, and should
- be hooked to the audio 6809
- * Convert this to a modern device instead of a deprecated old style device
-
-
- Notes on multiplexer:
- The sound output is from a DAC76xx 8-bit dac; driving this dac is a pair
- of 74ls670 4x4 register files wired up as four 8-bit words;
- The four words are used as the volumes for four 1-bit channels by inversion
- of the MSB of the 8 bit value.
- The four channels are:
- CNT1 CNT0
- 0 0 6522 pin 7 output (squarewave) NOT EMULATED YET; 'FM or AM'
- affects this slot only
- 0 1 6840 channel 1 clocked by E1(int) OR by 6522 PB7-latched NOISE
- 1 0 6840 channel 2 clocked by E1(int) OR by "VCO" ext (Huh?)
- 1 1 6840 channel 3 clocked by E1(int) OR by channel 2-latched NOISE
-
- The four slots determine which address is selected of the 8-bit words and
- which source will XOR against the MSB of the 8-bit word before it goes
- to the DAC (effectively making the 8-bit word be a 7-bit volume control
- plus optional wave invert). The speed which cnt0 and cnt1 count at is
- E1/16 or 62500Hz.
+ TODO:
+ * The entire NOISE generator is just copied from exidy.c and is completely
+ wrong. It should be using an MM5837 self-clocked LFSR with taps on bits
+ 16(0x10) and 13(0xD)
+ * The entire audio 6522 VIA isn't even HANDLED in this driver yet, hence
+ the sound channel provided by the VIA is completely missing! (it is
+ handled in /machine/beezer.c as via 1 at the moment)
+ * Related to above, the hookup of timer1 out (from pb7 of 6522) isn't done
+ which means selectively latched noise cannot work properly.
+ * Several inexplicable things on the schematic are not handled, such as the
+ 'VCO' input for 6840 channel 2 external clock whose source does not appear
+ anywhere on the schematic, nor does it handle the 'DMOD DATA' and 'DMOD
+ CLR' outputs for some sort of digital modulator (perhaps an hc55516?)
+ from the VIA, which also does not appear anywhere on schematic.
+ The latter the VIA *DOES* seem to write something to, but it may be just
+ a silence waveform for 55516, alternating zeroes and ones.
+ * The volume dac ram values could be handled better, currently the MSB bit
+ is just thrown out; it should invert the waveform.
+ * The channel mixing is done additively at the moment rather than
+ emulating the original multiplexer, which is actually not that hard to do
+ * The 'FM OR AM' output of the audio via (pb1) appears to control some sort
+ of suppression or filtering change of the post-DAC amplifier when enabled,
+ only during the TIMER1 OUT time-slot of the multiplexer, see page 1B 3-3
+ of schematics. This will be a MESS to emulate since theres a lot of analog
+ crap involved.
+ * The /INT line and related logic of the 6840 is not emulated, and should
+ be hooked to the audio 6809
+ * Convert this to a modern device instead of a deprecated old style device
+
+
+ Notes on multiplexer:
+ The sound output is from a DAC76xx 8-bit dac; driving this dac is a pair
+ of 74ls670 4x4 register files wired up as four 8-bit words;
+ The four words are used as the volumes for four 1-bit channels by inversion
+ of the MSB of the 8 bit value.
+ The four channels are:
+ CNT1 CNT0
+ 0 0 6522 pin 7 output (squarewave) NOT EMULATED YET; 'FM or AM'
+ affects this slot only
+ 0 1 6840 channel 1 clocked by E1(int) OR by 6522 PB7-latched NOISE
+ 1 0 6840 channel 2 clocked by E1(int) OR by "VCO" ext (Huh?)
+ 1 1 6840 channel 3 clocked by E1(int) OR by channel 2-latched NOISE
+
+ The four slots determine which address is selected of the 8-bit words and
+ which source will XOR against the MSB of the 8-bit word before it goes
+ to the DAC (effectively making the 8-bit word be a 7-bit volume control
+ plus optional wave invert). The speed which cnt0 and cnt1 count at is
+ E1/16 or 62500Hz.
*************************************************************************/
@@ -148,8 +148,8 @@ INLINE beezer_sound_state *get_safe_token(device_t *device)
/*static WRITE_LINE_DEVICE_HANDLER( update_irq_state )
{
- beezer_sound_state *sndstate = get_safe_token(device);
- cputag_set_input_line(device->machine, "audiocpu", M6809_IRQ_LINE, (sndstate->ptm_irq_state) ? ASSERT_LINE : CLEAR_LINE);
+ beezer_sound_state *sndstate = get_safe_token(device);
+ cputag_set_input_line(device->machine, "audiocpu", M6809_IRQ_LINE, (sndstate->ptm_irq_state) ? ASSERT_LINE : CLEAR_LINE);
}*/
@@ -352,7 +352,7 @@ static STREAM_UPDATE( beezer_stream_update )
sample += (state->sh6840_volume[2]&0x7F);
else
sample -= (state->sh6840_volume[2]&0x7F);
-
+
/* generate channel 1-clocked noise if configured to do so */
if (noisy != 0)
noise_clocks_this_sample = sh6840_update_noise(state, t->clocks - chan1_clocks);