AY-3-8910:

* Fixed Gyruss audio regression
* Measured RU and RD on AY-3-8910
* Modelled ZX Spectrum audio circuit in SwitcherCAD and derived resistor values for AY-3-8910
This commit is contained in:
Couriersud 2009-03-19 00:59:05 +00:00
parent 1dfa8866e7
commit 6733cec11f

View File

@ -287,7 +287,8 @@ static const ay_ym_param ay8910_param =
/* /*
* RL = 2000, Based on Matthew Westcott's measurements from Dec 2001. * RL = 2000, Based on Matthew Westcott's measurements from Dec 2001.
* * -------------------------------------------------------------------
*
* http://groups.google.com/group/comp.sys.sinclair/browse_thread/thread/fb3091da4c4caf26/d5959a800cda0b5e?lnk=gst&q=Matthew+Westcott#d5959a800cda0b5e * http://groups.google.com/group/comp.sys.sinclair/browse_thread/thread/fb3091da4c4caf26/d5959a800cda0b5e?lnk=gst&q=Matthew+Westcott#d5959a800cda0b5e
* After what Russell mentioned a couple of weeks back about the lack of * After what Russell mentioned a couple of weeks back about the lack of
* publicised measurements of AY chip volumes - I've finally got round to * publicised measurements of AY chip volumes - I've finally got round to
@ -316,14 +317,19 @@ static const ay_ym_param ay8910_param =
* 13 2.06 * 13 2.06
* 14 2.32 * 14 2.32
* 15 2.58 * 15 2.58
* -------------------------------------------------------------------
*
* The ZX spectrum output circuit was modelled in SwitcherCAD and
* the resistor values below create the voltage levels above.
* RD was measured on a real chip to be 8m Ohm, RU was 0.8m Ohm.
*/ */
static const ay_ym_param ay8910_param = static const ay_ym_param ay8910_param =
{ {
1030, 357, 800000, 8000000,
16, 16,
{ 81509, 34403, 26998, 21248, 15890, 11495, 8625, 5314, { 15950, 15350, 15090, 14760, 14275, 13620, 12890, 11370,
4287, 2583, 1836, 1350, 978, 745, 530, 392 } 10600, 8590, 7190, 5985, 4820, 3945, 3017, 2345 }
}; };
/************************************* /*************************************
@ -869,8 +875,10 @@ int ay8910_read_ym(void *chip)
if (r > 15) return 0; if (r > 15) return 0;
/* FIXME: calling stream_update here makes gyruss sound awfull.
* For the time being, no idea why this is the case */
/* update the output buffer before returning the register */ /* update the output buffer before returning the register */
stream_update(psg->channel); /* stream_update(psg->channel); */
switch (r) switch (r)
{ {