* Increased internal sampling rate to audio 'frame rate' for better sync.
* Moved envelope processing into sample-update loop. Fixes envelopes.
* Reset envelope rampdown bit when a channel stops. Fixes missing channels in vii and others.
* Only process envelope rampdown for active channels. Fixes missing channels in icanpian and others.
* Reset ADPCM bit at sample loop point. Fixes bad samples in jak_sith and others.
* Avoid treating end-of-sample marker as a playable sample. Fixes sample popping.
* Fixed sample ordering for 8-bit PCM samples. Improves audio quality.
This patch causes regression on sound for many machines. Fixing it shows
that it does not cause a performance win but the opposite - sigh.
Thanks to Scott Stone for tests and reporting.
This reverts most parts of commit 107fff092e.
ibm5150: Dragon's Lair, Golden Axe (3.5"), Indiana Jones And The Last Crusade - The Action Game (Kixx release), Panza Kick Boxing (Kixx budget release)
* pokey: yet another performance enhancement
In case
* no counters are running at high speed without prescalers - and
* no prescalers have triggered - and
* there is no borrow counter expected to finish
there is no need to continue on step_one_clock.
Performance measuements:
Before:
./mame64 -bench 50 missile -> Average speed: 1322.75% (49 seconds)
./mame64 -bench 50 starwars -> Average speed: 548.97% (49 seconds)
./mame64 -bench 50 jedi -> Average speed: 375.08% (49 seconds)
After:
./mame64 -bench 50 missile -> Average speed: 1503.10% (49 seconds)
./mame64 -bench 50 starwars -> Average speed: 648.10% (49 seconds)
./mame64 -bench 50 jedi -> Average speed: 444.25% (49 seconds)
Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
* pokey: remove unused macros
Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
* This fixes a regression introduced by [1]
* Could not detect a performance change introduced by this
[1] 308c3c2d04
Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
* step_pot is called from step_one_clock only and just in case pokey is not in
reset state -> No need to check reset state again
* in case there were no bits in 'upd' latched to one, there is no need to call
synchronize(SYNC_POT, 0) because m_ALLPOT won't change.
Performance results with missile / starwars (no pots):
Before:
./mame64 -bench 50 missile -> Average speed: 1171.67% (49 seconds)
./mame64 -bench 50 starwars -> Average speed: 551.66% (49 seconds)
After:
./mame64 -bench 50 missile -> Average speed: 1321.16% (49 seconds)
./mame64 -bench 50 starwars -> Average speed: 551.10% (49 seconds)
Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>