X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=dos1%2Fc.asm;h=fb0214fa457d9dfeaf4463a69f80c6488dd58bf4;hb=9b33802dd42b97ad95ae6940cf628923d8093d8a;hp=fdba3c0d1681d78c67ed143517e3c6b0fbc0b7a1;hpb=8e0a308b85272b28b59e7db0079472a81f0fc2dc;p=vtuts diff --git a/dos1/c.asm b/dos1/c.asm index fdba3c0..fb0214f 100644 --- a/dos1/c.asm +++ b/dos1/c.asm @@ -1,4 +1,4 @@ -; Lowest yet: 312 +; Lowest yet: 270 bits 16 %ifdef BOOTSECT @@ -16,10 +16,6 @@ RANDVAL equ code_end + 4 %macro WAIT_VBLANK 0 mov dx, 3dah -.inblank: - in al, dx - and al, 8 - jnz .inblank ; loop while vblank bit is 1 (in vblank) .notblank: in al, dx and al, 8 @@ -45,43 +41,18 @@ start: add ax, 1000h mov es, ax - ; setup palette for the effect - ; - bg color (0) - ; - shadow color (1) - ; - fractal color (2) - mov dx, 0x3c8 - xor al, al - out dx, al - inc dx - mov al, 10 ; 0: 40, 40, 80 - out dx, al - out dx, al - shl al, 1 - out dx, al - mov al, 4 ; 1: 16, 16, 32 - out dx, al - out dx, al - shl al, 1 - out dx, al - mov al, 18h ; 2: 96, 192, 96 - out dx, al - mov al, 48 - out dx, al - mov al, 18h - out dx, al - mainloop: call animate ; clear the framebuffer - xor al, al + mov al, 128 mov cx, 64000 xor di, di rep stosb ; draw shadow mov si, 5 - mov byte [setcol + 1], 1 ; shadow color + mov byte [setcol + 1], 199 ; shadow color call drawsierp ; draw fractal xor si, si @@ -167,16 +138,21 @@ sierp_vel: dw 1, 1 dw -1, 1 dw -1, -1 +bounds dw 200 - SHADOW_OFFS + dw 320 - SHADOW_OFFS + animate: mov cx, 3 mov di, sierp_verts mov si, sierp_vel .loop: + mov ebx, 2 +.xyloop: mov ax, [di] ; grab vertex X add ax, [si] ; add velocity X jl .xout - cmp ax, 320-SHADOW_OFFS + cmp ax, [ebx * 2 + bounds - 2] jge .xout jmp .skip_xflip .xout: @@ -188,20 +164,9 @@ animate: ; to do the same for Y increment edi and esi by 2 add di, 2 add si, 2 - mov ax, [di] ; grab vertex Y - add ax, [si] ; add velocity Y - jl .yout - cmp ax, 200-SHADOW_OFFS - jge .yout - jmp .skip_yflip -.yout: - sub ax, [si] ; revert to previous Y - neg word [si] ; negate velocity Y -.skip_yflip: - mov [di], ax ; update vertex Y + dec bx + jnz .xyloop - add di, 2 - add si, 2 dec cx jnz .loop ret