The past few weeks I have been collaborating with GigaBates
to create an "Amiga Demo".
For those unfamiliar with the demoscene, it's a geeky gathering, usually with some friendly competition, to show off creative and technical skills by making "demos": a short media production combining graphics, music and cuttin edge programming into 1 showcase.
Specifically in the retro computer scene, it's also a continuous quest to see how far you can push these wonderful machines and to make them do things never dreamed possible.
We opted for a 64kb "intro" for the Classic Commodore Amiga 500 - a personal computer released in 1986 with 1MB of total memory and a humble CPU running at 7mhz. (basically: a computer that is a thousand times slower then your current phone)
mA2E came up with this funky tune, I did the graphics, GigaBates coded the effects and made it all happen.
I'm happy to say it won the 1st price at the Nova2023 DemoParty
this weekend in the "Old School Demo" category.
And here's a video capture of the demo.
It was quite a challenge to fit everything into 64kb.
Every image was methodically analysed to get it as small as possible.
- Can we reduce the colour count even more?
- Can we half the height and double it again in code while palette-shifting it, without sacrificing too much detail?
- Can we replace some parts with copper lines?
- If we loose the dithering, it compresses 1kb smaller, is that worth it?
- Can we optimize the palette even more to squeeze out those last few bytes?
- Nobody codes directly on Amiga anymore: it's all cross-compilation.
- Writing your own tools pays off: this is such a niche of a niche, that general purpose image software just isn't up for the job.
Being able the add the stuff I needed to my https://github.com/steffest/DPaint-js was super helpful to quickly iterate and get the most optimal results possible.
So: colour cycling, fine-grained palette controls and frame based animation will be part of the next release.
That was fun, let's do it again!
Steffest on 6/26/2023 2:12:37 PMComments:0
Back to index