pouët.net

Go to bottom

Motion Pollution by wamma [web]

; Motion Pollution
; 2023-10-27
; y0bi / wAMMA

  cpu 286

  mov al,13h 
  int 10h
  
  push 0a000h
  pop es
  
  mov dx,03c9h
  mov cx,64
PalLoopO:
  mov bx,16*3
PalLoopI:
  mov al,bl
  rol al,1
  imul al
  and al,31
  add al,31
  sub al,cl
  jns ok
  xor ax,ax
ok: 
  out dx,al
  dec bx
  jnz PalLoopI
  dec cx
  dec cx
  dec cx
  loop PalLoopO

MainLoop:
  mov bp,1024
@AngleLoop:
  mov dx,160*64
  mov bx,100*64
  mov ch,0ffh
  mov cl,127
@RadiusLoop:
  mov ax,bx
  shr ax,6
  push dx
  mov dx,320
  mul dx
  pop dx
  mov di,ax
  mov ax,dx
  shr ax,6
  add di,ax
  
  mov ax,bx
  shr ax,6
  add ax,si
  and al,31
  sub al,16
  imul al
  push dx
  xchg ax,dx
  shr ax,6
  add ax,si
  and al,31
  sub al,16
  imul al
  add ax,dx
  pop dx
  shr ax,1
  
  cmp ax,220
  jbe noshadow
  mov ch,0
noshadow:
  push dx
  mov dl,[last]
  mov [last],al
  and dl,31+3+1
  mov ah,al
  and ah,31+3+1
  sub ah,dl
  add ah,8
  shl ah,2
  mov dl,cl
  add dl,127
  shr dl,2
  sub ah,45
  add ah,dl
  cmp ah,0

  shl ah,2
  and ah,0f0h
  
  
  shr al,4
  add al,ah
  pop dx
  
  and al,ch
  mov [es:di],al

  mov ax,bp
  call tri
  add dx,ax
  js hit
  cmp dx,320*64
  ja hit
  mov ax,bp
  add ax,256
  and ax,1023
  call tri
  add  bx,ax
  js hit
  cmp bx,200*64
  ja hit
  dec cl
  jnz @RadiusLoop

hit:

  dec bp
  jnz @AngleLoop

  inc si

  in al,60h
  cmp al,1
  jne MainLoop

tri:
  push bx
  mov bx,ax
  and ax,511
  sub ax,255
  cmp bx,511
  jbe NoNeg
  neg ax
NoNeg:
  sar ax,2
  pop bx
  ret

  last   db '256b'
Go to top