Water compo ? Sounds like sun'n'fun. But well, of course you have to code something - a routine simulating water in a 2d-array.
These routines are probably known to most people, but it seems to me that still many people dont really know, what makes
them tick. So I added some links, where you can read more about this.
Again we will have a "two-compos-in-one" package: fastest waterroutine and shortest waterroutine.
The deadline was: Sunday, December 14th, 1997.
|
Rules:
- Your contribution has to contain up to three routines: Water_Init, which will be called once to initialise your tables or
whatever, Water_drop this has to initiate water movement at a given position of your water-array (like throwing a
stone in it, or whatever :) ) and Water_do which is rendering the next water frame to a given buffer.
- All tables or buffers have to be in a bss-section. Otherwhise they will be counted to the routines length.
- Water_do is getting a pointer to a chunky screenbuffer in A0. All other registers contain unpredictable
values, when the routine is called.
- The screenbuffers size is 256x256. 0 is the darkest color, 255 the brightest.
- For the size-compo only the length of Water_init and Water_do is measured.
- The speed of the routines will probably be measured on 060/50. I will try to measure it also
on 030/50 and 040/40.
- Water_drop will get the drops position in x=D0.l and y=D1.l.
- Try to avoid overflows , when there are lots of waves !!
- Your entry will be published here, when the compo is over. In case you dont want that, please add a little note.
Here is a piece of the test-code for the water routines. Try it to make sure, that your routine doesnt produce any overflow with it!
moveq #31,d7
.lop1
move.l last,d4
ror.l d4,d4
add.l d7,d4
move.l d4,last
moveq #0,d0
moveq #0,d1
move.b d4,d0
lsr.w #8,d4
move.b d4,d1
jsr water_drop
dbf d7,.lop1
This is called once per frame, before the routine water_do is called. It is producing a kind of "rain" consisting of 32 "drops" per frame.
|