First of all, i'm not pretending to know anything about anything and people who say they do about any topic should at all times be highly distrusted.
Secondly, this is not an all encompasing writeup of everything you need to get started, there are much better resources for that, such as the awesome http://www.sizecoding.org wiki.
Instead, this is a little story about how I started my journey into sizecoding as well as some tips that could help you out on your own journey.
Everybody got to start somewhere...
...and this is my start last year at outline. I was sitting next to Rho/Trepaan minding my own business, when he was suddenly talking about competing in the 128 byte intro competition.
And while he was chipping away at his intro, he suddenly started to ask me all kinds of questions about x86 assembly. I had dabbled with assembly in my previous stint with the demoscene in the 90s, but I was by no means an expert in this field myself. However, during the process of helping him get his entry under 128byte, things I thought I forgot slowly started coming back to me, and before I knew it I was blabbing some stuff left and right, which helped him complete his intro Auwline at the party.
Upon returning home the concept of trying my hand on some sizecoding myself stuck with me. As I hadn't been active in the demoscene for a long long time and was not part of any big demogroup, it seemed like a nice opportunity to still be productive without having to have a large demogroup to complete a product.
Ready... Set.... Now what?
So for starters, get yourself the following:
- A x86 realmode assembler (I highly recommend NASM myself, which is available for Windows, Linux and Mac (use macports or another package manager to download).
- The DosBox emulator. Make a custom config set to say 50000 cycles to make sure you don't do anything ridiculous in terms of performance. You may want to set MIDI to uart mode as well if you are into cutting corners in terms of accessing MIDI sound.
- A bootable USB stick with FreeDOS , NASM for DOS and Norton Commander like browser for keeping you straight and making sure you are not cutting too much corners.
Additionally, I highly recommend the following as well:
- A small assembler guide or instruction book (like the famous dutch “De kleine assembly language gids” or similar printout with an overview of Assembly and FPU instructions.
- An MS-DOS debugger tool (we use TurboDebugger)
- A hex editor for checking you binary code from time to time.
But what if i'm a millenial who doesn't do printouts?
Stares at prompt...
So yeah, let's get some visuals up the screen then:
org 100h ; start of your .COM file
push 0a000h ; screensegment (es) is at a000h
mov al,13h ; init 320x200x256 video mode
mov ax,0cccdh ; thank your uncle rrrola
mul di ; dl=x, dh=y
add dx,bp ; add framecounter
mov al,dl ; color = x^y
stosb ; store pixel
inc di ; remove if you want a clean pixel by pixel update
inc di ; or increase offset 2 more times crosshatched update
jnz frameloop ; and triggering the zero flag
inc bp ; increase framecounter
in al,60h ; check keys
- Slowly start building out the above example
- Visit the above mentioned sizecoding.org
- (Don't get distracted by his accent, continue watching. it is worth it)
- Learn from others as well
- Build yourself a box of tricks (note these down)
- Keep visiting this blog for new writeups ;-)
Ambition vs Restriction:
At some point you may run into the limits of your skill level at a particular point in time, the sizelimits of your intro, or both..
This happens to everyone all the time. How you deal with development differs greatly
from person to person.. I'm somebody that always has ambitious plans for an intro,
start hacking away at it and quickly realises our intro is at least 64bytes over budget
and not even half of the features i want are in there.
Then i start slowly chipping away at it and/or remove even more
features until i end up with a glimpse of my original intent.
I'm okay with that...
Blossom on the other hand is more cautious (some might say more realistic) about the scope
of her plans and already starts sweating way before her stuff reaches the size
limit and usually is able to execute what she intended to make within budget.
This is also just fine...
What i'm trying to say is: Choose your own adventure, but don't bitch about it aftewards ;-)
So basically keep improving your skills with each effect or even tryout that you make. Don't be intimidated about what's out there. My experience is that the demoscene in general is very warm and welcoming to new people/sizecoders entering the scene. Don't be afraid to ask people for help.
For more information, you can find all our productions complete with sourcecode at: pouet.net