forked from KolibriOS/kolibrios
278 lines
3.2 KiB
NASM
278 lines
3.2 KiB
NASM
|
|
|||
|
; (<28>) ( ) <20> ) ( ) 256b intro by baze/3SC for Syndeecate 2001 use NASM to
|
|||
|
; <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> loveC: thanks, Serzh: eat my socks dude ;] compile the
|
|||
|
; ( ) ( ) ( ) ( ) e-mail: baze@stonline.sk, web: www.3SC.sk source code
|
|||
|
|
|||
|
; Menuet port by VT
|
|||
|
|
|||
|
use32
|
|||
|
org 0x0
|
|||
|
|
|||
|
db 'MENUET01'
|
|||
|
dd 0x01
|
|||
|
dd START
|
|||
|
dd I_END
|
|||
|
dd 0x40000
|
|||
|
dd 0x3ff00
|
|||
|
dd 0,0
|
|||
|
|
|||
|
include 'macros.inc'
|
|||
|
|
|||
|
START:
|
|||
|
|
|||
|
call draw_window
|
|||
|
|
|||
|
call init_tube
|
|||
|
|
|||
|
push ebx
|
|||
|
|
|||
|
still:
|
|||
|
|
|||
|
pop ebx
|
|||
|
|
|||
|
call MAIN
|
|||
|
|
|||
|
push ebx
|
|||
|
|
|||
|
mov eax,23
|
|||
|
mov ebx,1
|
|||
|
int 0x40
|
|||
|
|
|||
|
cmp eax,1
|
|||
|
jne no_red
|
|||
|
call draw_window
|
|||
|
jmp still
|
|||
|
no_red:
|
|||
|
|
|||
|
cmp eax,0
|
|||
|
je still
|
|||
|
|
|||
|
mov eax,-1
|
|||
|
int 0x40
|
|||
|
|
|||
|
|
|||
|
SCREEN equ 160
|
|||
|
PIXBUF equ 200h
|
|||
|
EYE equ EYE_P-2
|
|||
|
|
|||
|
|
|||
|
MAIN:
|
|||
|
|
|||
|
add bh,10;8
|
|||
|
mov edi,PIXBUF
|
|||
|
fadd dword [di-PIXBUF+TEXUV-4]
|
|||
|
push di
|
|||
|
mov dx,-80
|
|||
|
|
|||
|
TUBEY:
|
|||
|
|
|||
|
mov bp,-160
|
|||
|
|
|||
|
TUBEX:
|
|||
|
|
|||
|
mov si,TEXUV
|
|||
|
fild word [si-TEXUV+EYE]
|
|||
|
mov [si],bp
|
|||
|
fild word [si]
|
|||
|
mov [si],dx
|
|||
|
fild word [si]
|
|||
|
mov cl,2
|
|||
|
|
|||
|
ROTATE:
|
|||
|
|
|||
|
fld st3
|
|||
|
fsincos
|
|||
|
fld st2
|
|||
|
fmul st0,st1
|
|||
|
fld st4
|
|||
|
fmul st0,st3
|
|||
|
db 0xde,0xe9 ; fsubp st1,st0
|
|||
|
db 0xd9,0xcb ; fxch st3
|
|||
|
fmulp st2,st0
|
|||
|
fmulp st3,st0
|
|||
|
faddp st2,st0
|
|||
|
db 0xd9,0xca ; fxch st2
|
|||
|
|
|||
|
loop ROTATE
|
|||
|
|
|||
|
fld st1
|
|||
|
db 0xdc,0xc8 ; fmul st0,st
|
|||
|
fld st1
|
|||
|
db 0xdc,0xc8 ; fmul st0,st
|
|||
|
faddp st1,st0
|
|||
|
fsqrt
|
|||
|
db 0xde,0xfb ; fdivp st3,st0
|
|||
|
fpatan
|
|||
|
fimul word [si-4]
|
|||
|
fistp word [si]
|
|||
|
fimul word [si-4]
|
|||
|
fistp word [si+1]
|
|||
|
mov si,[si]
|
|||
|
|
|||
|
lea ax,[bx+si]
|
|||
|
add al,ah
|
|||
|
and al,64
|
|||
|
mov al,-5
|
|||
|
jz STORE_1
|
|||
|
|
|||
|
shl si,2
|
|||
|
lea ax,[bx+si]
|
|||
|
sub al,ah
|
|||
|
mov al,-16
|
|||
|
jns STORE_1
|
|||
|
|
|||
|
shl si,1
|
|||
|
mov al,-48
|
|||
|
|
|||
|
STORE_1:
|
|||
|
|
|||
|
; add al,[ebx+esi+0x80000]
|
|||
|
add [di],al
|
|||
|
inc di
|
|||
|
|
|||
|
inc bp
|
|||
|
cmp bp,160
|
|||
|
|
|||
|
EYE_P:
|
|||
|
|
|||
|
jnz TUBEX
|
|||
|
inc dx
|
|||
|
cmp dx,80
|
|||
|
jnz TUBEY
|
|||
|
|
|||
|
call display_image
|
|||
|
|
|||
|
pop si
|
|||
|
mov ch,SCREEN*320/256
|
|||
|
|
|||
|
BLUR:
|
|||
|
|
|||
|
inc si
|
|||
|
sar byte [si],2
|
|||
|
loop BLUR
|
|||
|
|
|||
|
ret
|
|||
|
|
|||
|
|
|||
|
|
|||
|
display_image:
|
|||
|
|
|||
|
pusha
|
|||
|
|
|||
|
mov esi,PIXBUF
|
|||
|
mov edi,0x10000
|
|||
|
newp:
|
|||
|
movzx edx,byte [esi]
|
|||
|
shl edx,4
|
|||
|
; mov dh,dl
|
|||
|
mov [edi],edx
|
|||
|
|
|||
|
add edi,3
|
|||
|
inc esi
|
|||
|
|
|||
|
cmp esi,320*160+PIXBUF
|
|||
|
jbe newp
|
|||
|
|
|||
|
mov eax,7
|
|||
|
mov ecx,320*65536+160
|
|||
|
mov edx,10*65536+27
|
|||
|
mov ebx,0x10000
|
|||
|
int 0x40
|
|||
|
|
|||
|
popa
|
|||
|
ret
|
|||
|
|
|||
|
|
|||
|
|
|||
|
draw_window:
|
|||
|
|
|||
|
pusha
|
|||
|
|
|||
|
mov eax,12
|
|||
|
mov ebx,1
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,0
|
|||
|
mov ebx,100*65536+339
|
|||
|
mov ecx,100*65536+198
|
|||
|
mov edx,0x03225588
|
|||
|
mov esi,0x0
|
|||
|
mov esi,0x0
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,4
|
|||
|
mov ebx,8*65536+8
|
|||
|
mov ecx,0xffffff
|
|||
|
mov edx,labeltext
|
|||
|
mov esi,19
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,12
|
|||
|
mov ebx,2
|
|||
|
int 0x40
|
|||
|
|
|||
|
popa
|
|||
|
ret
|
|||
|
|
|||
|
labeltext db 'TUBE.ASM - with FPU'
|
|||
|
|
|||
|
db 41,0,0xC3,0x3C
|
|||
|
|
|||
|
TEXUV:
|
|||
|
|
|||
|
init_tube:
|
|||
|
|
|||
|
mov ecx,256
|
|||
|
|
|||
|
PAL1:
|
|||
|
|
|||
|
mov dx,3C8h
|
|||
|
mov ax,cx
|
|||
|
inc dx
|
|||
|
sar al,1
|
|||
|
js PAL2
|
|||
|
mul al
|
|||
|
shr ax,6
|
|||
|
|
|||
|
PAL2:
|
|||
|
|
|||
|
mov al,0
|
|||
|
jns PAL3
|
|||
|
sub al,cl
|
|||
|
shr al,1
|
|||
|
shr al,1
|
|||
|
|
|||
|
PAL3:
|
|||
|
|
|||
|
mov bx,cx
|
|||
|
mov [ebx+0x1000],bh
|
|||
|
loop PAL1
|
|||
|
mov ecx,256
|
|||
|
|
|||
|
TEX:
|
|||
|
|
|||
|
mov bx,cx
|
|||
|
add ax,cx
|
|||
|
rol ax,cl
|
|||
|
mov dh,al
|
|||
|
sar dh,5
|
|||
|
adc dl,dh
|
|||
|
adc dl,[ebx+255+0x1000]
|
|||
|
shr dl,1
|
|||
|
mov [ebx+0x1000],dl
|
|||
|
not bh
|
|||
|
mov [ebx+0x1000],dl
|
|||
|
loop TEX
|
|||
|
|
|||
|
fninit
|
|||
|
fldz
|
|||
|
|
|||
|
ret
|
|||
|
|
|||
|
|
|||
|
I_END:
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|