Lol heres my attempt at speeding up the shaking.
sync on : sync rate 60 : randomize timer()
dx = screen width()/2 : dy = screen height()/2 :cls rgb(192,192,192)
max_dx=dx : max_dy=dy : min_dx=dx : min_dy=dy
disable escapekey : while escapekey()=0
if upkey()=1 and dy > 0 then dy = dy - 1
if downkey()=1 and dy < screen height()-1 then dy = dy + 1
if leftkey()=1 and dx > 0 then dx = dx - 1
if rightkey()=1 and dx < screen width()-1 then dx = dx + 1
if dx>max_dx then max_dx=dx
if dy>max_dy then max_dy=dy
if dx<min_dx then min_dx=dx
if dy<min_dy then min_dy=dy
if spacekey()=1
if dx<>max_dx or dx<>min_dx or dy<>min_dy or dy<>max_dy
make memblock from bitmap 1, 0
for shake=1 to 20
for x=min_dx*4 to max_dx*4 step 4
for y=min_dy to max_dy
if rgb(192, 192, 192)<>rgb( memblock byte(1,(x)+((y)*2560)+12), memblock byte(1,(x+1)+((y)*2560)+12), memblock byte(1,(x+2)+((y)*2560)+12))
if rnd(5)=5
write memblock byte 1, (x)+((y)*2560)+12, 192
write memblock byte 1, (x+1)+((y)*2560)+12, 192
write memblock byte 1, (x+2)+((y)*2560)+12, 192
endif
endif
next y
next x
make bitmap from memblock 0, 1
get image 1,min_dx,min_dy,max_dx,max_dy, 1
cls rgb(192,192,192)
g#=rnd(2)
if g#=1 then m#=-1
if g#=2 then m#=1
paste image 1,(rnd(3)*m#)+min_dx,(rnd(3)*m#)+min_dy
sync
next shake
delete memblock 1
endif
endif
dot dx,dy,rgb(255,255,255) : sync : dot dx,dy,0
endwhile : end
Specs:- 1GHZ athlon, Radeon8500, 192mb ram, winxp