<--- Turn the page
   
(contents page)
   
Turn the page ---> Animation, Kind ofAnimation with out moving a pixel |
Have you ever seen a water fall screen saver and wondered how they did the animation? It is not as hard as you might think. Most waterfalls are set up with different shades of blue and then the palette is rotated rather than the pixels. For instance. If I set the top of the waterfall to a lighter blue, every section down a little darker, and the last section dark blue, then I can rotate the palette and the waterfall comes alive. Here is a sample code of a line drawn across the screen. I never move a pixel, I just rotate the palette. .model tiny .code xor ax,ax ; set up palette buffer mov cx,31 ; mov di,offset buffer ; Setup1: stosw ; r(ed) stosb ; g(reen) inc ax ; b(blue) inc ax ; loop Setup1 ; mov cx,31 ; Setup2: stosw ; stosb ; dec ax ; dec ax ; loop Setup2 ; xor ax,ax ; make sure rest of buffer stosw ; is zero'd out stosw ; stosw ; stosw ; mov ax,0013h ; set screen mode 13h int 10h ; (320x200x256) Main: mov dx,offset Buffer ; set DAC block mov bx,01 ; skip color 0 (black) mov cx,63 ; 63 other 'registers' mov ax,1012h ; int 10h ; push es ; print the line mov ax,0A000h ; vga screen memory mov es,ax ; mov di,32000 ; half way down the screen xor ax,ax ; mov ax,63 ; 64 times (63 + 1 for the zero) PLoop1: mov cx,05 ; rep ; stosb ; dec ax ; jns short PLoop1 ; jnz doesn't print the zero color pop es ; mov di,offset Buffer ; scroll palette buffer mov si,offset Buffer ; lodsw ; mov dx,ax ; lodsb ; mov bl,al ; mov cx,189 ; rep ; movsb ; mov ax,dx ; stosw ; mov al,bl ; stosb ; ; might need a pause here, depending ; on how fast your machine is mov ah,01 ; was a key pressed int 16h ; jz short Main ; zero flag in no pressed xor ah,ah ; 'kill' the key int 16h ; mov ax,0003h ; set screen back to text (80x25) int 10h ; .exit ; ret to DOS buffer dup 192,? ; our palette buffer .endDepending on the speed of your computer and if you would like to get a better idea of what is going on, insert a 'pause' routine where specified above. ¥ |
<--- Turn the page
   
(contents page)
   
Turn the page ---> Page 3