rem Memblocks Showcase

rem Requires 640x480x16 fullscreen
sync on : sync rate 0 : hide mouse

rem Create array for wavedata
dim wave_table(72)
for i = 1 to 72
   wave_table(i) = int(sin(i*5)*20.0)
next i

rem Load the first image and store it in memblock 1
load bitmap "groovy.jpg",0
make memblock from bitmap 1,0
make memblock from bitmap 2,0

rem Required variables
linesize = 640 * 2
topI = 0

rem Main loop
while mouseclick()=0

 rem Wrap topI variable
 topI = topI + 1
 if topI > 72 then topI = 1
 rollingI = topI

 rem For each vertical position
 for i = 0 to 479

 rem Calculate positions
 fromposition = 52 + (i*linesize)
 toposition = fromposition+(wave_table(rollingI)*2)

 rem Copy data from one area of memblock to another memblock
 copy memblock 1,2,FromPosition,ToPosition,1200

 rem Advance roll effect
 rollingI = rollingI+1
 if rollingI > 72 then rollingI = 1

next i

rem Update screen with memblock containing wave-bitmap
make bitmap from memblock 0,2 : sync

rem End loop
endwhile

rem Remove the memblocks before we exit
delete memblock 1
delete memblock 2