Previous 15994 Revisions Next

r7004 Monday 11th January, 2010 at 16:36:10 UTC by Jonathan Gevaryahu
[sn76496] fixed period for both sn76489 and sn76489A periodic noise; fixes pitch in 'smooth criminal' demo for colecovision
[src/emu/sound]sn76496.c

src/emu/sound/sn76496.c
r7003r7004
1616  ** SN76489 uses a 15-bit shift register with taps on bits D and E, output on E,
1717  XOR function; SN94624 is identical to SN76489.
1818  It uses a 15-bit ring buffer for periodic noise/arbitrary duty cycle.
19  ** SN76489A uses a 16-bit shift register with taps on bits D and E, output on F,
19  ** SN76489A uses a 15-bit shift register with taps on bits D and E, output on F,
2020  XNOR function
21  It uses a 16-bit ring buffer for periodic noise/arbitrary duty cycle.
21  It uses a 15-bit ring buffer for periodic noise/arbitrary duty cycle.
2222  ** SN76494 and SN76496 are PROBABLY identical in operation to the SN76489A
2323  They have an audio input line which is mixed with the 4 channels of output.
2424  ** Sega Master System III/MD/Genesis PSG uses a 16-bit shift register with taps
r7003r7004
7070  based on testing. Got rid of R->OldNoise and fixed taps accordingly.
7171  Added stereo support for game gear.
7272
73  11/01/2010 : Lord Nightmare
74  Fix an issue with SN76489 and SN76489A having the wrong periodic noise periods.
75  Note that properly emulating the noise cycle accurately may require extensive rewriting.
76
7377  TODO: * Implement the TMS9919 which is an earlier version, possibly
7478          lacking the /8 clock divider, of the SN76489, and hence would
7579          have a max clock of 500Khz and 4 clocks per sample, as opposed to
r7003r7004
7983        * Test the NCR7496; Smspower says the whitenoise taps are A and E,
8084          but this needs verification on real hardware.
8185        * Factor out common code so that the SAA1099 can share some code.
86        * Implement periodic noise as using a pointer to a table rather than a
87          self feeding lfsr. Kold666's recording of dorunrun proves this is the
88          right way.
8289***************************************************************************/
8390
8491#include "sndintrf.h"
r7003r7004
403410
404411static DEVICE_START( sn76489 )
405412{
406   generic_start(device, 0x8000, 0x06, FALSE, FALSE, FALSE); // todo: verify; assumed to be the same as sn94624
413   generic_start(device, 0x4000, 0x03, FALSE, FALSE, FALSE); // todo: verify; assumed to be the same as sn94624
407414}
408415
409416static DEVICE_START( sn76489a )
410417{
411   generic_start(device, 0x10000, 0x0C, TRUE, FALSE, FALSE); // verified by plgdavid
418   generic_start(device, 0x4000, 0x03, TRUE, FALSE, FALSE); // verified by plgdavid
412419}
413420
414421static DEVICE_START( sn76494 )
415422{
416   generic_start(device, 0x10000, 0x0C, TRUE, FALSE, FALSE); // todo: verify; assumed to be the same as sn76489a
423   generic_start(device, 0x4000, 0x03, TRUE, FALSE, FALSE); // todo: verify; assumed to be the same as sn76489a
417424}
418425
419426static DEVICE_START( sn76496 )
420427{
421   generic_start(device, 0x10000, 0x0C, TRUE, FALSE, FALSE); // todo: verify; assumed to be the same as sn76489a
428   generic_start(device, 0x4000, 0x03, TRUE, FALSE, FALSE); // todo: verify; assumed to be the same as sn76489a
422429}
423430
424431static DEVICE_START( sn94624 )
425432{
426   generic_start(device, 0x10000, 0x0C, FALSE, FALSE, FALSE); // verified by plgdavid
433   generic_start(device, 0x4000, 0x03, FALSE, FALSE, FALSE); // verified by plgdavid
427434}
428435
429436static DEVICE_START( ncr7496 )

Previous 15994 Revisions Next


© 1998-2018 The MESS Team