1Kusai par Shinra est une intro 1 Ko Amstrad CPC présentée lors de la Forever 2018.
Le code source de 1Kusai est disponible.
So, the idea was to fit Hokusai's The Great Wave off Kanagawa in 1K.
I worked from an SVG file and removed a lot of details until it would fit the allocated space (packed with zx7). Eventually it ended up too small after some late minute changes to the code which improved the compression. Oh well.
The SVG was converted to bezier curves using NanoSVG, then a custom Lua script to convert the usual bezier curves definitions into a form more suitable for computation. Normally a Bezier curve is defined by X and Y equations which look like this :
x = A(1-t)³+3B(1-t)²t+3C(1-t)t²+Dt³
We can rewrite this as : Z + t(Y + t(X + Wt))
Z = A
Y = 3B
X = 3C - 6B
W = D - 3C + 3B - A
So in this form we need only 3 multiplications.
The computations are done using CPC firmware which provides neat floating point math support. I compute 256 points along each curve (this could be adjusted to less points for faster drawing, at the cost of slightly less smooth curves) and draw lines between them. Then the system FILL routine is used to fill the closed shapes.
The sound of waves and thunder you can hear is just the Y or X coordinate (I don't remember, whichever sounded best) sent to the AY noise register (again using the CPC firmware, because this is the most space efficient way). I tried to write some music using the free bytes left but did not manage to do anything very convincing. Next time I'll try to spend more effort on the sound side.