BOOM - THE MAKING OF...
All started in the early summer of 2000, when I visited DC.Clark and Mr.Vain in Herne. It was the first time we met outside a party. We had no plans for a 4k, I just tried to calculate my first samples. These first tries were very interesting for me, so i continued in calculating different samples. After I realized that the space needed to calc these samples was very small, the basic idea of making an intro in 4kb was born. I calculated some samples for the sounders, who tried to make tunes with them. Some days later the first tune was finished, the Boom-Song.
I loved the sound, so I tried to find a way to get this tune in very little space. I needed some weeks, but the result was great: the whole song was running in about 1.2 kb. This gave us motivation to keep on coding. :)
While I was coding and optimizing the 4kb-soundengine I finished the free-dir-plane effect. As we needed textures for this effect I also coded some routines calculating textures.
Two months flow by, then we had another meeting at DaNDeEs place. It was a very interesting meeting as we planned more and more of the 4k. StingRay coded on my first metaball-tries while I was optimizing the texture-stuff.
The funny thing is that we coded a tool to set the blobs on the screen so that we easily could create the logos. After we created the logos we coded a routine to let the blobs fly around. We tried to let them fly in a circle way, but there was a bug in the routine, the blobs flew like they wanted. But as it looked nice we decided to leave this "bug" and call it a feature. :) Then DC.Clark had the nice idea to let the blobs wobble while they are flying, and we did some code and it looked funny. We optimized the routine and the next effect was finished.
After this meeting we were highly motivated to finish the intro. At this time the sound was finished, the texture-generator was done and the free-dirs and blobs were running as we wanted.
Back home we optimized the routines a bit, then I went on holiday, so it was StingRay's task to do the systempart of the intro and additional effects, too.
Yo, coffee lover Sting at the keys now.
Well, since I not only drink coffee the whole day but also claim to be a coder, I also coded some stuff for Boom. :) The first thing I did was to code the startup code for Boom. First I thought, that this wouldn't be very time consuming, because I already had my nice 4k startup code which I used in my 4k intro I did for MS2k-1. Since I already optimized it heavily (at least that's what I thought...) I didn't think that there was big room for optimizing left. But, coding knowledge increases and so I spend lot's of days killing bytes in the startup code. Actually I nearly completely recoded the whole startup code in a more efficient way and at the end I managed to cut down the startup code, including the palette generator, CGX/AGA support and the VBI handler to 834 Bytes.
For the AGA support I used the mini-c2p routine by our dear c2p master, better known as Kalms. And guess what, I even put my dirty hands on his c2p code and optimized the c2p routine too. :) (Original size was 25o bytes, optimized size: 236 Bytes :D) Too bad I didn't count the amount of cigarettes and coffee I consumed while optimizing the startup code. :=)
After the startup code was finished, the real fun started, putting the intro routines together. During the summer I coded a nice little water effect working with non-linear palettes (getting this one to run at decent speed on my 68o3o was quite a hard task, but that's another story) and a transparent rotation zoomer. Since we only used calculated (i.e. linear) palettes in Boom, I adapted both routines for linear palettes. Then, while watching my water routine, I got a nice idea (that doesn't happen very often ;D). How about writing something with the water? I simply used the metaball coords we used at the beginning to get 'Boom' and 'SCL' written on the screen. This was quite nice but still I missed something. So I timed it with the music and now I know, why girls tend to call coders 'nerds'. :)
I didn't know the inner workings of scicco's nice sound engine and so I had to listen to the music over and over again to wait for the bass sample just to see my text changing routine in action. I'm not sure anymore, who of us spent more time listening to the tune, scicco while coding the sound engine or me while timing my water effect ;). It took me nearly one day to get the correct timing...
I then combined scicco's free-directional tunnel with the water routine and the next problem arised. Lot's of overflow errors. So I had to implement a pixel-clip routine in the innerloop of my once so fast water routine. I managed to do the pixel-clipper in just 22 bytes but it extremely slowed down the water routine :( But thanks to this pixel-clipper, we got some kind of 'fake lighting' which looked quite nice ;)
Implementing the transparent rotation zoomer wasn't much of a problem, I just had to spend some hours optimizing it, because my original routine wasn't coded with size but speed in mind.
I then added all the other routines and spent day and night (mostly nights ;D) to optimize everything. I even developed my very own 'Hunk Faker' which allowed us, to do the whole intro pc-relative, heavy magic indeed :). Never underestimate the power of Macros :). I called scicco nearly everyday, telling him, how many bytes I killed last night :). But since I won't bore you with the details of 'Harcore byte killing using too much coffee, too many cigarettes and too less sleep' :) I hand over the keys to master scicco again who successfully managed to bring back my coding motivation which I seemed to have lost forever. Thanks man, you're great!
But before I go I just wanna say hello to all coders still doing great demos on our beloved Amiga.
Keep the spirit!
After all parts for the intro were finished, we discovered, that we needed an own cruncher. All 'standard' crunchers had the same effect: the assembled intro got bigger. So I used a known crunching algorithm and coded an own decruncher.
After some weeks of optimizing the decruncher (I needed to as the decruncher code is not crunched :) the decruncher was finished: about 300 bytes of code. The cruncher was a bit better than the familiar used ones and it saved some bytes in the crunched file.
After coding this nice decruncher we brought ourself to finish the intro. All effects were done, only the fader and the final timing was missing. We met again to finish this piece of code together. We needed one more long night to finish the fader and parts of the timing. After the intro was running in a final design we looked at the size again: uncrunched 4702 bytes. Crunched with our cruncher it was about 4500 bytes.
The next two weeks were full of hardcode optimizing. Everyone was thinking about X-Mas (not me, I was sleeping after all the hard work I did for Boom :D -StingRay) and I was thinking about Boom and commands and ways to optimize this or that routine. :) Short: I had only Boom in my mind. I optimized all stuff down to crunched 4096 bytes.
The funny thing:
later we wanted to fix one bug which occured while the intro was running on a CGFX-screen. We changed only one register, no more commands, and the intro was 4 bytes bigger, 4100 bytes. Hehe, it was the last fun to find the last command to kill to achieve the final size again. :) We found it and Boom was finished!
We all were looking forward to the MS2001 and were very lucky when the intro achieved place #1. Thanks to all voters!
It was real fun to create this intro!
And finally we have to send our respect to Ephidrena and Exploder for being such good 4k-creators! Your intros also inspired us to code a nice 4k-intro!
scicco and StingRay signing off...