Steffest digitale pulptuur

Rubbur

Another RSync - another demo.

I made "RUBBUR"



Released at RSYNC 2026


The starting point was this track I made in Ableton Live.
I was playing around with the very nice "The Mouth" VST plugin, not knowing what I was doing, and suddenly out came this funky wobble bassline with this rubbery synth on top.
I couldn't reproduce it if I wanted too, haha.
I made a track around it and was bobbing my head on the beat.
Bam! demo idea!

I had been exploring the Amiga hardware recently, from a software developer point of view, trying out what you can do with BPLCON1 etc (Hey! you can set the horizontal offset for the odd and even planes seperately! cool!) and finally wrapped my head around how to use switching bitplane pointers each scan line to do all these vertical stretching and scrolling things you see so often in amiga demos.

After converting the song to tracker format, it turned out the be HUGE (in terms of diskspace) and I had quite a hard time trimming it down. I allready had build some batch-sample squuzing features in my own BassoonTracker, but OpenMPT - the swiss army knife for tracker files - has a much more finer control - and proved to be the perfect tool to get the size down, obviously in exchange for some audio quality, but hey ... it's Amiga! It can be crunchy!

I landed on 290kb for the tune. Still large, but doable.
Here's the tune in Bassoontracker

Vamos

Another thing I discovered is vamos - it's kind of like Wine (the windows emulator, not the drink) but then for Amiga.
It allows you to run Amiga command line applications directly on Windows or Mac at lightning speeds.
And low and behold! It works perfectly fine with the SAS/C compiler.
Sweet!
Now I can compile for Amiga on all platforms using the exact same compiler and setup, without have to spin up an Amiga Emulator.

Build System.

Having fast iteration times make all the difference.
I ended up using this "autorun" setup.

On the amiga side, I run this script.

LAB loop
IF EXISTS run.flag
DELETE run.flag
smake
a
ENDIF
WAIT 1 SEC
SKIP loop BACK

This checks for a file: "run.flag", and if it exists, it compiles and runs the program.
Then, my mac/windows listens for file changes and writes this "run.flag" file.
The Amiga picks it up, compiles and runs the demo.

So, whenever I save a file, a second later, the program runs on Amiga.
cool!

And I was pleased to find I'm getting more fluent at writing C.
I don't mean "better", per se, but at least I wasn't fighting compiler and syntax errors all the time, so I could focus on getting something done, not HOW to get it done.

And - hip hip hooray! - I made the step to actually include some assembler code in my project.
Baby steps, but it's a plasma like effect that ran far too slow in C.



I still can't believe that actually worked. Yay!
So now I have a good example how to move performance critical code to a assembler function and call that function from C.
Nice!

To recap:

Things I learned

Things I want/need to improve in future productions



Steffest on 1/14/2026 5:05:10 AM
Comments:0


Back to index

This is http://blog.stef.be optimised for your mobile device