Winner of 64KB at Evoke 2011
The demo is not what you expect in 2011 but we have shown our love. We released the demo at my first party ever and we shocked a lot of people by putting a cracktro from a known warez scene group into the competition.
The project folder has a total size of 9.3MB with sources and libraries. It runs on Windows, Linux and Mac OS X. A port to other platforms is possible if SSE2 and MMX is supported. For music playback we use minifmod which we extended and optimized a lot with low/high pass filters. We extended Milkytracker so that our artist (Strobflux) could easily compose his tracks, without the need of special software. We also added some effects like reverb. The library will soon be released by us for your projects!
Within the demo we use FFT calculations for manipulating objects and scenes. This is best shown at the end of the demo where cubes of black and white lines appear. The effect is triggered by the amount of bass in the lower bands.
The demo has a size of 59KB compressed under Windows which has been done with a lot of compiler, linker and packaging tweaks. For packaging we used kkrunchy. We tried to get the demo under 64KB on OS X as-well, but we are still fighting this challenge. At the moment it is around 68KB. We are using iPakk for the compression on OS X.
We at Titan have the source for iPakk, and are trying to further optimize the linker overhead. Maybe we’ll implement another algorithm.
The drawing is done with a pixel buffer where we calculate every pixel. For every system we wrote a own drawing mechanism to get as closes to the system as possible.
- Windows: DirectDraw
- Linux: XVideo
- OS X: OpenGL (GLUT) with CoreGraphics
The sounds as described above is using XM with minifmod. We added support for OS X be extending the output interface with OpenAL.
For PNG packing we used pngout, a perfect png compressor. Our images has been converted to 8 bit. They were then converted to char arrays to avoid having files outside the .exe or the need of a packager within the intro.
We used time based scenes to synchronize the scenes and the music.
Most of the code is in header files. Dont get us wrong, we now how to structure projects well, but sometimes you just code and code and code. There is a lot of work within this project and some stuff messed us up a lot.
At least the prod matters and the size and we are proud that we have made a release with love and attention to the things you see 😉
Maybe, if the cracktro is not longer in use we will release the source code so that you can study it in the future.
We tried a lot to get our binary smaller on Mac OS X. Its not that hard to find information on Windows for that. If you are trying to make a 64k under OS X feel free to use our optimization line. For us this works best =)
CCFLAGS = -fasm-blocks -s -arch i386 -msse -msse2 -mmmx -m32 -D__MACOSX__ -Wall -fmessage-length=0 -mdynamic-no-pic -fno-common -ffunction-sections -fdata-sections -c -fno-exceptions -Os ; C++FLAGS = -fasm-blocks -s -arch i386 -msse -msse2 -mmmx -m32 -D__MACOSX__ -fno-exceptions -march=i686 -mdynamic-no-pic -fno-common -ffunction-sections -fdata-sections -c -fno-exceptions -Os -I/System/Library/Frameworks/ApplicationServices.framework/Frameworks/ImageIO.framework/Headers ; Linker LIBS -x -disable-inlining -strip-all -arch i386 -mno-long-calls -gc-sections -framework GLUT -framework OpenGL -framework OpenAL -framework Foundation -framework ApplicationServices ; Linker flags = -Wl,-x,-exported_symbol,_main ;
You can download the production on pouet.net.
If you want to know more about this, feel free to contact me or visit us on Efnet in #titandemo
Credits and probs fly out the dev-team
Code: neoman, isha (me!)
GFX: Alien, moqui and malodix