Upload
This commit is contained in:
commit
43352ff262
1291 changed files with 220976 additions and 0 deletions
632
TECHNO/KOEB.ASM
Normal file
632
TECHNO/KOEB.ASM
Normal file
|
|
@ -0,0 +1,632 @@
|
|||
extrn _circle:byte
|
||||
extrn _circle2:byte
|
||||
code2 SEGMENT para public 'CODE'
|
||||
ASSUME cs:code2
|
||||
.386
|
||||
LOCALS
|
||||
|
||||
include sin1024.inc
|
||||
|
||||
;################################################################
|
||||
|
||||
sizefade dw 0
|
||||
rotspeed dw 0
|
||||
palfader dw 0
|
||||
palfader2 db 255
|
||||
zumplane db 11h
|
||||
|
||||
ALIGN 16
|
||||
|
||||
flip8 LABEL BYTE
|
||||
db 0,128,64,192,32,160,96,224,16,144,80,208,48,176,112,240,8,136,72,200
|
||||
db 40,168,104,232,24,152,88,216,56,184,120,248,4,132,68,196,36,164,100
|
||||
db 228,20,148,84,212,52,180,116,244,12,140,76,204,44,172,108,236,28,156
|
||||
db 92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178
|
||||
db 114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6
|
||||
db 134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206
|
||||
db 46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225
|
||||
db 17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217
|
||||
db 57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245
|
||||
db 13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,3,131,67,195
|
||||
db 35,163,99,227,19,147,83,211,51,179,115,243,11,139,75,203,43,171,107,235
|
||||
db 27,155,91,219,59,187,123,251,7,135,71,199,39,167,103,231,23,151,87,215
|
||||
db 55,183,119,247,15,143,79,207,47,175,111,239,31,159,95,223,63,191,127,255
|
||||
|
||||
circles dw 8 dup(0)
|
||||
|
||||
pal db 32*3 dup(0)
|
||||
|
||||
pal0 LABEL WORD
|
||||
db 0,30,40
|
||||
db 0,0 ,0
|
||||
db 0,0 ,0
|
||||
db 0,0 ,0
|
||||
db 0,0 ,0
|
||||
db 0,0 ,0
|
||||
db 0,0 ,0
|
||||
db 0,0 ,0
|
||||
db 0,30,40
|
||||
db 0,0 ,0
|
||||
db 0,0 ,0
|
||||
db 0,0 ,0
|
||||
db 0,0 ,0
|
||||
db 0,0 ,0
|
||||
db 0,0 ,0
|
||||
db 0,0 ,0
|
||||
|
||||
pal1 LABEL WORD
|
||||
db 0, 0*7/9, 0
|
||||
db 10,10*7/9,10
|
||||
db 20,20*7/9,20
|
||||
db 30,30*7/9,30
|
||||
db 40,40*7/9,40
|
||||
db 50,50*7/9,50
|
||||
db 60,60*7/9,60
|
||||
db 30,30*7/9,30
|
||||
db 0, 0*7/9, 0
|
||||
db 10,10*7/9,10
|
||||
db 20,20*7/9,20
|
||||
db 30,30*7/9,30
|
||||
db 40,40*7/9,40
|
||||
db 50,50*7/9,50
|
||||
db 60,60*7/9,60
|
||||
db 30,30*7/9,30
|
||||
|
||||
pal2 LABEL WORD
|
||||
db 50,50*6/9,50
|
||||
db 60,60*6/9,60
|
||||
db 30,30*6/9,30
|
||||
db 0, 0*6/9, 0
|
||||
db 10,10*6/9,10
|
||||
db 20,20*6/9,20
|
||||
db 30,30*6/9,30
|
||||
db 40,40*6/9,40
|
||||
db 50,50*6/9,50
|
||||
db 60,60*6/9,60
|
||||
db 30,30*6/9,30
|
||||
db 0, 0*6/9, 0
|
||||
db 10,10*6/9,10
|
||||
db 20,20*6/9,20
|
||||
db 30,30*6/9,30
|
||||
db 40,40*6/9,40
|
||||
|
||||
sinuspower db 0
|
||||
powercnt db 0
|
||||
PUBLIC _power1
|
||||
_power1 LABEL WORD
|
||||
power0 db 256 dup(0)
|
||||
db 256 dup(0)
|
||||
db 256 dup(0)
|
||||
db 256 dup(0)
|
||||
db 256 dup(0)
|
||||
db 256 dup(0)
|
||||
db 256 dup(0)
|
||||
db 256 dup(0)
|
||||
db 256 dup(0)
|
||||
db 256 dup(0)
|
||||
db 256 dup(0)
|
||||
db 256 dup(0)
|
||||
db 256 dup(0)
|
||||
db 256 dup(0)
|
||||
db 256 dup(0)
|
||||
db 256 dup(0)
|
||||
|
||||
PLANE MACRO pl
|
||||
mov dx,3c4h
|
||||
mov ax,0002h+pl*100h
|
||||
out dx,ax
|
||||
ENDM
|
||||
|
||||
bltline PROC NEAR
|
||||
push si
|
||||
mov dx,3c4h
|
||||
mov al,2
|
||||
out dx,al
|
||||
inc dx
|
||||
@@1: mov al,ch
|
||||
out dx,al
|
||||
zzz=0
|
||||
REPT 10
|
||||
mov eax,ds:[si+zzz]
|
||||
mov es:[di+zzz],eax
|
||||
zzz=zzz+4
|
||||
ENDM
|
||||
add si,40
|
||||
shl ch,1
|
||||
dec cl
|
||||
jnz @@1
|
||||
pop si
|
||||
ret
|
||||
bltline ENDP
|
||||
|
||||
bltlinerev PROC NEAR
|
||||
push si
|
||||
mov dx,3c4h
|
||||
mov al,2
|
||||
out dx,al
|
||||
inc dx
|
||||
xor bx,bx
|
||||
@@1: mov al,ch
|
||||
out dx,al
|
||||
zzz=0
|
||||
REPT 10
|
||||
mov bl,ds:[si+36-zzz]
|
||||
mov al,cs:flip8[bx]
|
||||
rol eax,8
|
||||
mov bl,ds:[si+37-zzz]
|
||||
mov al,cs:flip8[bx]
|
||||
rol eax,8
|
||||
mov bl,ds:[si+38-zzz]
|
||||
mov al,cs:flip8[bx]
|
||||
rol eax,8
|
||||
mov bl,ds:[si+39-zzz]
|
||||
mov al,cs:flip8[bx]
|
||||
mov es:[di+zzz],eax
|
||||
zzz=zzz+4
|
||||
ENDM
|
||||
add si,40
|
||||
shl ch,1
|
||||
dec cl
|
||||
jnz @@1
|
||||
pop si
|
||||
ret
|
||||
bltlinerev ENDP
|
||||
|
||||
resetmode13 PROC NEAR
|
||||
mov bx,1
|
||||
int 0fch
|
||||
mov dx,3c8h
|
||||
mov al,0
|
||||
out dx,al
|
||||
inc dx
|
||||
mov cx,768
|
||||
@@ccc: out dx,al
|
||||
loop @@ccc
|
||||
mov bx,1
|
||||
int 0fch
|
||||
mov ax,13
|
||||
int 10h
|
||||
mov dx,3dah
|
||||
in al,dx
|
||||
mov dx,3c0h
|
||||
xor al,al
|
||||
REPT 16
|
||||
out dx,al
|
||||
out dx,al
|
||||
inc al
|
||||
ENDM
|
||||
mov al,11h
|
||||
out dx,al
|
||||
mov al,255
|
||||
out dx,al
|
||||
mov al,32
|
||||
out dx,al
|
||||
;clear pal
|
||||
mov dx,3c8h
|
||||
xor al,al
|
||||
out dx,al
|
||||
inc dx
|
||||
mov cx,768
|
||||
@@clp: out dx,al
|
||||
loop @@clp
|
||||
ret
|
||||
resetmode13 ENDP
|
||||
|
||||
mixpal PROC NEAR
|
||||
;cs:si=>cs:di, for cx
|
||||
push dx
|
||||
cmp dx,256
|
||||
jg @@2
|
||||
mov bx,dx
|
||||
@@1: mov al,cs:[si]
|
||||
xor ah,ah
|
||||
inc si
|
||||
mul bx
|
||||
shr ax,8
|
||||
mov cs:[di],al
|
||||
inc di
|
||||
loop @@1
|
||||
pop dx
|
||||
ret
|
||||
@@2: mov bx,dx
|
||||
sub bx,256
|
||||
@@4: mov al,cs:[si]
|
||||
xor ah,ah
|
||||
inc si
|
||||
add ax,bx
|
||||
cmp ax,64
|
||||
jb @@3
|
||||
mov al,63
|
||||
@@3: mov cs:[di],al
|
||||
inc di
|
||||
loop @@4
|
||||
pop dx
|
||||
ret
|
||||
mixpal ENDP
|
||||
|
||||
outpal PROC NEAR
|
||||
mov dx,3c8h
|
||||
out dx,al
|
||||
mov ax,cs
|
||||
mov ds,ax
|
||||
inc dx
|
||||
rep outsb
|
||||
ret
|
||||
outpal ENDP
|
||||
|
||||
waitb PROC NEAR
|
||||
mov bx,1
|
||||
int 0fch
|
||||
ret
|
||||
waitb ENDP
|
||||
|
||||
rotate1 PROC NEAR
|
||||
xor si,si
|
||||
mov cx,32000/32-2
|
||||
cld
|
||||
jmp @@2
|
||||
;edx.eax
|
||||
@@1: popf
|
||||
zzz=0
|
||||
REPT 16
|
||||
mov ax,ds:[si+zzz]
|
||||
rcr al,1
|
||||
rcr ah,1
|
||||
mov es:[si+zzz],ax
|
||||
zzz=zzz+2
|
||||
ENDM
|
||||
@@2: pushf
|
||||
add si,zzz
|
||||
dec cx
|
||||
jz @@0
|
||||
jmp @@1
|
||||
@@0: popf
|
||||
ret
|
||||
rotate1 ENDP
|
||||
|
||||
ALIGN 2
|
||||
framecount dw 0
|
||||
palanimc dw 0
|
||||
palanimc2 dw 0
|
||||
scrnpos dw 0
|
||||
scrnposl dw 0
|
||||
scrnx dw 0
|
||||
scrny dw 0
|
||||
scrnrot dw 0
|
||||
sinurot dw 0
|
||||
overrot dw 0
|
||||
overx dw 0
|
||||
overya dw 0
|
||||
patdir dw -3
|
||||
|
||||
memseg dw 0
|
||||
|
||||
init_interference PROC NEAR
|
||||
mov dx,3d4h
|
||||
mov ax,2813h
|
||||
out dx,ax
|
||||
|
||||
mov bx,20+100*80
|
||||
|
||||
;get mem for circles
|
||||
mov ah,48h
|
||||
mov bx,16384
|
||||
int 21h
|
||||
mov cs:memseg,ax
|
||||
zzz=0
|
||||
REPT 8
|
||||
mov cs:circles[zzz],ax
|
||||
add ax,2048
|
||||
zzz=zzz+2
|
||||
ENDM
|
||||
|
||||
mov ax,SEG _circle2
|
||||
mov ds,ax
|
||||
xor si,si
|
||||
mov ax,0a000h
|
||||
mov es,ax
|
||||
mov cx,200
|
||||
xor di,di
|
||||
mov bp,80*399
|
||||
@@1: push cx
|
||||
push di
|
||||
mov cx,0401h
|
||||
call bltline
|
||||
add di,40
|
||||
mov cx,0401h
|
||||
call bltlinerev
|
||||
add di,40
|
||||
mov di,bp
|
||||
mov cx,0401h
|
||||
call bltline
|
||||
add di,40
|
||||
mov cx,0401h
|
||||
call bltlinerev
|
||||
add di,40
|
||||
pop di
|
||||
add di,80
|
||||
sub bp,80
|
||||
add si,40
|
||||
pop cx
|
||||
loop @@1
|
||||
|
||||
mov dx,3ceh
|
||||
mov ax,0204h
|
||||
out dx,ax
|
||||
mov cx,400
|
||||
mov es,cs:circles[0]
|
||||
mov ax,0a000h
|
||||
mov ds,ax
|
||||
mov cx,32000/4
|
||||
xor si,si
|
||||
xor di,di
|
||||
rep movsd
|
||||
zzz=0
|
||||
REPT 7
|
||||
mov ds,cs:circles[zzz]
|
||||
mov es,cs:circles[zzz+2]
|
||||
call rotate1
|
||||
zzz=zzz+2
|
||||
ENDM
|
||||
|
||||
mov ax,SEG _circle
|
||||
mov ds,ax
|
||||
xor si,si
|
||||
mov ax,0a000h
|
||||
mov es,ax
|
||||
mov cx,200
|
||||
xor di,di
|
||||
mov bp,80*399
|
||||
@@10: push cx
|
||||
push di
|
||||
mov cx,0103h ;start at plane 1, copy 3 planes
|
||||
call bltline
|
||||
add di,40
|
||||
mov cx,0103h ;start at plane 1, copy 3 planes
|
||||
call bltlinerev
|
||||
add di,40
|
||||
mov di,bp
|
||||
mov cx,0103h ;start at plane 1, copy 3 planes
|
||||
call bltline
|
||||
add di,40
|
||||
mov cx,0103h ;start at plane 1, copy 3 planes
|
||||
call bltlinerev
|
||||
add di,40
|
||||
pop di
|
||||
add di,80
|
||||
sub bp,80
|
||||
add si,40*3
|
||||
pop cx
|
||||
loop @@10
|
||||
mov cs:framecount,0
|
||||
ret
|
||||
init_interference ENDP
|
||||
|
||||
do_interference PROC NEAR
|
||||
@@aga: call waitb
|
||||
mov dx,3c0h
|
||||
mov al,13h
|
||||
out dx,al
|
||||
mov al,byte ptr cs:scrnposl
|
||||
out dx,al
|
||||
mov al,32
|
||||
out dx,al
|
||||
|
||||
xor al,al
|
||||
mov si,OFFSET pal
|
||||
mov cx,16*3
|
||||
call outpal
|
||||
|
||||
mov si,cs:palanimc
|
||||
add si,cs:patdir
|
||||
cmp si,0
|
||||
jge @@a11
|
||||
mov si,8*3-3
|
||||
@@a11: cmp si,8*3
|
||||
jb @@a1
|
||||
xor si,si
|
||||
@@a1: mov cs:palanimc,si
|
||||
mov cs:palanimc2,si
|
||||
|
||||
mov dx,cs:palfader
|
||||
add dx,2
|
||||
cmp dx,512
|
||||
jb @@pf1
|
||||
mov dx,512
|
||||
@@pf1: mov cs:palfader,dx
|
||||
;
|
||||
mov si,cs:palanimc
|
||||
add si,OFFSET pal0
|
||||
mov di,OFFSET pal
|
||||
mov cx,8*3
|
||||
call mixpal
|
||||
mov si,cs:palanimc
|
||||
add si,OFFSET pal0
|
||||
mov di,OFFSET pal+8*3
|
||||
mov cx,8*3
|
||||
call mixpal
|
||||
|
||||
mov si,OFFSET pal
|
||||
mov al,0
|
||||
mov cx,16*3
|
||||
call outpal
|
||||
|
||||
jmp @@OVER3
|
||||
mov dx,3c4h
|
||||
mov al,2
|
||||
mov ah,cs:zumplane
|
||||
rol ah,1
|
||||
mov cs:zumplane,ah
|
||||
out dx,ax
|
||||
|
||||
mov ax,0a000h
|
||||
mov es,ax
|
||||
xor si,si
|
||||
mov di,cs:scrnpos
|
||||
mov bp,cs:sinurot
|
||||
add bp,7*2
|
||||
and bp,2047
|
||||
mov cs:sinurot,bp
|
||||
mov cx,200
|
||||
@@cp1: zzz=0
|
||||
push si
|
||||
add bp,9*2
|
||||
and bp,2047
|
||||
mov bx,cs:_sin1024[bp]
|
||||
sar bx,3
|
||||
mov bh,cs:sinuspower
|
||||
movsx ax,byte ptr cs:power0[bx]
|
||||
sub ax,cs:scrnposl
|
||||
add ax,cs:overx
|
||||
mov bx,ax
|
||||
and bx,7
|
||||
shl bx,1
|
||||
neg bx
|
||||
mov ds,cs:circles[bx+7*2]
|
||||
sar ax,3
|
||||
add si,ax
|
||||
add si,cs:overya
|
||||
REPT 40/4+1
|
||||
mov eax,ds:[si+zzz]
|
||||
mov es:[di+zzz],eax
|
||||
zzz=zzz+4
|
||||
ENDM
|
||||
pop si
|
||||
add di,80
|
||||
add si,80
|
||||
dec cx
|
||||
jz @@cp0
|
||||
jmp @@cp1
|
||||
@@cp0:
|
||||
@@OVER3:
|
||||
;MOVE
|
||||
mov bx,6
|
||||
int 0fch
|
||||
;bx=row
|
||||
and bx,7
|
||||
cmp bx,0
|
||||
jne @@m1
|
||||
mov cs:patdir,-3
|
||||
@@m1: cmp bx,4
|
||||
jne @@m2
|
||||
mov cs:patdir,-3 ;-3
|
||||
@@m2:
|
||||
mov bx,cs:scrnrot
|
||||
add bx,5
|
||||
and bx,1023
|
||||
mov cs:scrnrot,bx
|
||||
|
||||
cmp cs:framecount,64
|
||||
jb @@szf1
|
||||
inc cs:rotspeed
|
||||
mov ax,cs:sizefade
|
||||
cmp ax,16834
|
||||
jge @@1
|
||||
;add ax,256
|
||||
@@1: mov cs:sizefade,ax
|
||||
@@szf1:
|
||||
shl bx,1
|
||||
mov ax,cs:_sin1024[bx]
|
||||
imul cs:sizefade
|
||||
mov ax,dx
|
||||
add ax,160
|
||||
mov cs:scrnx,ax
|
||||
add bx,256*2
|
||||
and bx,1024*2-1
|
||||
mov ax,cs:_sin1024[bx]
|
||||
imul cs:sizefade
|
||||
mov ax,dx
|
||||
add ax,100
|
||||
mov cs:scrny,ax
|
||||
|
||||
mov bx,cs:overrot
|
||||
add bx,cs:rotspeed
|
||||
and bx,1023
|
||||
mov cs:overrot,bx
|
||||
|
||||
shl bx,1
|
||||
mov ax,cs:_sin1024[bx]
|
||||
sar ax,2
|
||||
imul cs:sizefade
|
||||
mov ax,dx
|
||||
add ax,160
|
||||
mov cs:overx,ax
|
||||
add bx,256*2
|
||||
and bx,1024*2-1
|
||||
mov ax,cs:_sin1024[bx]
|
||||
sar ax,2
|
||||
imul cs:sizefade
|
||||
mov ax,dx
|
||||
add ax,100
|
||||
mov bx,80
|
||||
mul bx
|
||||
mov cs:overya,ax
|
||||
|
||||
mov ax,cs:scrnx
|
||||
mov bx,ax
|
||||
and ax,7
|
||||
mov cs:scrnposl,ax
|
||||
mov ax,80
|
||||
mul cs:scrny
|
||||
sar bx,3
|
||||
add ax,bx
|
||||
mov cs:scrnpos,ax
|
||||
|
||||
mov bx,cs:scrnpos
|
||||
mov dx,3d4h
|
||||
mov al,0ch
|
||||
mov ah,bh
|
||||
out dx,ax
|
||||
inc al
|
||||
mov ah,bl
|
||||
out dx,ax
|
||||
|
||||
cmp cs:framecount,192
|
||||
jb @@asd2
|
||||
test cs:framecount,3
|
||||
jnz @@asd2
|
||||
@@asd2:
|
||||
; cmp cs:framecount,256
|
||||
; jb @@p1
|
||||
; inc cs:powercnt
|
||||
; cmp cs:powercnt,16
|
||||
; jb @@p1
|
||||
; mov cs:powercnt,0
|
||||
; cmp cs:sinuspower,15
|
||||
; jae @@p1
|
||||
; inc cs:sinuspower
|
||||
@@p1:
|
||||
inc cs:framecount
|
||||
cmp cs:framecount,256
|
||||
je @@xx
|
||||
mov bx,2
|
||||
int 0fch
|
||||
or ax,ax
|
||||
jz @@aga
|
||||
@@xx: ret
|
||||
do_interference ENDP
|
||||
|
||||
PUBLIC _dointerference2
|
||||
_dointerference2 PROC FAR
|
||||
push bp
|
||||
mov bp,sp
|
||||
push si
|
||||
push di
|
||||
push ds
|
||||
|
||||
call resetmode13
|
||||
call init_interference
|
||||
call do_interference
|
||||
mov es,cs:memseg
|
||||
mov ah,49h
|
||||
int 21h
|
||||
|
||||
pop ds
|
||||
pop di
|
||||
pop si
|
||||
pop bp
|
||||
ret
|
||||
_dointerference2 ENDP
|
||||
|
||||
code2 ENDS
|
||||
END
|
||||
Loading…
Reference in a new issue