Playing chiptune files on a 1977 vintage 1MHz processor with only 48k of
RAM and a sound card from 1981.
Details
This is an attempt to play some complex chiptune files on an old Apple II
with a Mockingboard card.
The Mockingboard, introduced around 1981, was a sound card for the Apple II
series of computers. It has dual AY-3-8910 chips on it, providing a total
of 6 channels of square-wave sound, plus noise and envelope effects.
This player plays recompressed 3-channel YM5 files,
most of them made in the 90s for the Spectrum and Atari machines.
This was possibly already done in much superior fashion in the
Pure Noise Demo by
French Touch.
You should also see my
Raspberry Pi-Chiptune player page; I developed that board (which is
essentially a Mockingboard for the Raspberry Pi) while waiting to buy
one for my Apple II.
Some more technical details can be found here:
README.chiptune
Where did I find these chiptune files? A lot come from
ZX Art
Development Log
21 December 2019
Uploaded a new version that should make the sound less glitchy.
19 November 2018
Change to use qkumba's RTS disk routine which makes loading the
files from disk much faster.
4 September 2018
Fix interrupt handler bug where older Apple IIs wouldn't work.
13 June 2018
Still trying to track down the mockingboard glitch problem.
It goes deep.
6 April 2018
Started a page here where I try to get to
the bottom of the various sound quality issues with the player.
11 March 2018
Optimized the time taken to write to the AY-3-8910 registers.
Released as version 1.1.
27 February 2018
You can now disable the rasterbars by pressing R.
26 February 2018
Finally got everything together and working!
This includes reduced rasterbars and minimal keyboard support.
25 February 2018
Got it playing multiple songs back-to-back. Wasted hours tracking down
DOS33 load bug which was actually my page copy code over-writing the
DOS buffers by accident.
23 February 2018
Solved the truncation problem, was an off by one error when wrapping
to next chunk.
22 February 2018
Got a full length song playing! But there are glitches in the audio
when it gets to a chunk boundary and decompresses. Going to need to
double-buffer the audio, but that's going to hurt the compression ratio.
21 February 2018
LZ4 bug reported upstream and fixed.
20 February 2018
Found bug in qkumba's LZ4 implementation when copying blocks of exactly
256 bytes.
19 February 2018
Got the visualization going, more or less. Now time to get LZ4 working.
18 February 2018
Tried implementing starfield in background, but I forgot it involved 4k
of multiply and plotting code. Maybe we'll do rasterbars instead.
17 February 2018
Have it playing 14k worth of uncompressed data.
15 February 2018
Spent much of the week getting LZ4 decompression working, as well as trying
to figure out how to fit 120k of uncompressed ym5 data into a form suitable
for playing on the II.