
ZeriBeep updates
----------------

1.00

- First release.

1.01

- Could reduce white noise table size from 2^16-2 to 2^15-1. Oops ...

1.02

- An extra noise sound is now issued if the noise channel is linked to tone 3
  frequency, and tone 3 frequency has changed.

1.03

- The base volume of the periodic noise generator used to be 'half volume'
  (compared to the other generators) because I could only detect negative going
  pulses in my samples of a real Beeb's output signal. Apparently there were as
  yet unidentified effects at play, since, judging by ear, it sounds right now
  that it's at full volume, like the others.
- SWI _Attach no longer re-initialises the sound register values, so
  re-attaching after a detach (e.g. by exiting and re-entering BeebIt)
  continues generating sounds as if the detach didn't happen.
- Corrected a rather embarassing mistake : reading the white noise table would
  not wrap around correctly, causing (eventually) a crash for sounds lasting
  more than a few seconds.

1.04

- Bugfix : fixed a potentially uninitialised variable.
- Bugfix : SWI _Attach and _Detach used to corrupt r4.
- Bugfix : SWI _Detach removed voice generator before unlinking from channels
  instead of the other (correct) way around.

1.05

- 32-bit processor mode neutral version of 1.04 (SWIs now corrupt N,Z and C).

1.10

- Major internal change : instead of issuing multiple sound commands, a single
  infinite duration sound is now played on all channels and is parameterised on
  the fly directly from the SN76489 write port routine. This saves CPU time and
  makes sound rendering more responsive to rapid frequency and volume changes.
- Another major internal change : instead of one, multiple sound changes are
  now handled in a single sound buffer fill, which, again, makes the emulator
  more responsive to fast sound changes, without the need to reduce the sample
  period to silly levels. Effectively, emulation now responds as if the sample
  length is 1 (i.e. every sample can introduce a new change). Doesn't get any
  better than that ...
- White noise is now calculated on the fly, saving quite a lot of CPU time.
- New SWI _Configure allows configuration of sample period and sample length
  (must be called *before* SWI _Attach, and only once).
- Lowered default sample length from 208 to 104 for improved response time
  between buffer fills (at the expense of a little more interrupt overhead).
  Default sample period remains 24 us. Defaults are 208 and 32 us respectively
  on non IOMD systems.
- Improved the accuracy of tone generator frequency transitions.
- Improved the accuracy of white noise generator reset behaviour (after finally
  determining the shift register's reset value !).

1.11

- Bugfix : shift register was reset to wrong value for periodic noise.
- Now 26- and 32-bit processor mode neutral (SWIs now corrupt N,Z and C).

1.20

- 'Spring clean' rerelease/test (minor internal changes only, if any).

1.30

- Emulation of the spacing between SN76489 writes is no longer based on their
  (relatively inaccurate) real-time arrival, but on a user-supplied time (in 2
  MHz ticks). Consequently, all hardware dependent code could be removed, and
  this version of ZeriBeep should be compatible (again) with most, if not all
  RISC OS machines, both old and recent.
- Spacing between sound chip writes is now emulated very accurately, so speech
  effects (e.g. in BBC games Citadel, Repton, Spy Hunter) now work.

1.31

- Eliminated non aligned memory accesses for compatibility with modern ARMs.



