rolling arrow by Vision
Rolling Arrow, #coders fire effect compo entry
By CodeIt / Vision 17.5.1996
Requirements
------------
- IMB PC compatible computer
- VGA display adapter
- 386+ processor (coded with 386DX25/nocache)
- MS-DOS
- 64+ Kb of free lower memory
Short Technical Description
---------------------------
The fire effect itself is a modified old:
color[x][y] = (color[x][y] +
color[x-1][y+1] +
color[x][y+1] +
color[x+1][y+1]) / 4
There are two modifications:
- Random +-1 change to X-coordinate when calculating new color
- Value N is subtracted from new color to make flames smaller
(N is 4 for this executable), underflow is taken care of
This means that we need one relatively "random" bit to update each
pixel in the buffer. To make this fast and with minimum number of
bytes, I used the executable code itself as a "random" value
string.
The background picture which is "in fire", is updated for each
frame and it presents a rolling upwards pointing arrow. The arrow
was probably one of the easiest figures that could be drawn in the
buffer. Width of each line of the arrow is scaled using scaling
values 0-1 to make it "roll". Scaling value changes linearly, not
according to sin-function because I run out of bytes.
Palette is constructed using colors:
0 - 31 black -> red
32 - 63 red -> yellow
I also used memory buffer to calculate updates and just copied it
to the video memory. I could have made the effect much smaller if I
had used only video memory but it didn't look good on slow machines
(like my 386).
There you go... Source code includes some comments too.
Johannes Lehtinen
CodeIt / Vision
johannes.lehtinen@hut.fi
[ back to the prod ]
