While researching a future post about the Copper functionality of the
Amiga’s Agnus custom chip, I decided to really dig in and figure out
how the Copper worked and how you
would write some of the bare metal custom chip code. The process of making this video made me
realize I need to do a few other posts before I can do one about the Copper,
as there are a lot of prerequisites to understand it, at least at the level
I am now able to understand it at. I also wanted to showcase a lot of the
kind of music the Amiga was known for, module music made on
music trackers. So here’s
a nice, long video, with a real Amiga Copper demo (the kind I know I would make
made back in the day, cartoon characters included, if I had these skills in the 90s!) and a lot of
really great music to listen to.
How was it made?
- The animation was done in Krita on Android.
I used a pixel brush for the in-Amiga emulation to ensure all the pixels
lined up with the 320x256 screen I was working on. The rest was
done normally with regular brushes.
- I used GIMP to convert the images destined for the Amiga into
16 color PNGs.
The trick to keeping a consistent palette across all of the images was:
- Convert one image to a 16 color image.
- Swap around the colors in the index so that the color index to knock out via the
Copper effect was index 0.
- Create new layers to physically swap the color pixels in the image.
You have the ability to select all of the pixels of a particular index,
and then you can fill a new layer on top of the original to change
- After you’ve swapped one of these around, you can convert the remaining
ones using the first image’s palette.
- I used Personal Paint
to convert the images from PNGs to IFFs.
- I loaded all of the images, one by one, into memory banks in AMOS
Professional. I loaded the first image again into a separate memory bank,
but one that preserved screen resolution and palette, to simplify app
initialization. I flip through these memory banks to animate Bamboo,
as the IFF animation tools in AMOS Pro seem a bit broken.
- I wrote a lot of AMOS BASIC, which I hadn’t done since
1997 1998, and I referenced a lot of Amiga Copper,
bitplane (Denise’s territory), and DMA examples. These ones helped out the most:
- I ran all of this in FS-UAE, and captured it with vokoscreenNG.
- I edited the video with Kdenlive.
- I converted the music mod files using ffmpeg. It was the fastest way to convert
a large number of modules at once for evaluation and movie use. I hope they sound OK!
Code & Assets
I put the AMOS code – the bundled .amos file, the .abk with the animation frames,
and a .txt file with the code in plaintext – up on GitHub.
The code is released under an MIT license, but the artwork is copyright by me, all
rights reserved. I’m no expert at Copper coding, so if there are
improvements (besides rewriting it in assembler. Learning 68K assembler
is on my list of things to do for R1KR), I’d love to hear them! For it to run fast
enough, I emulated a 68030 with JIT enabled in FS-UAE.
All the music is either
or Creative Commons Attribution 3.0,
it all comes from The Mod Archive. Check out all
of these artists' awesome work! There’s way more there than I could put into
this 90 minute video.
All sound effects, except for Bamboo’s “heh” which was all me, come from
Freesound, and are also either
or Creative Commons Attribution 3.0.
I’ll be converting some of my prior posts into short YouTube
videos on the The Industrious Rabbit channel,
reworking them and updating them for a more visual medium.
Once they’re done, I’ll post them here for viewing!