home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fujiology Archive
/
fujiology_archive_v1_0.iso
/
!FALCON
/
AGGRESSN
/
MOTION.ZIP
/
MOTION
/
DSP
/
BEZIER6B.S56
< prev
next >
Wrap
Text File
|
1995-08-01
|
11KB
|
521 lines
; Bezier dots.. v3.2
; screen 320*240, 3 planes (+100 x ylivuoto, +50 y ylivuoto)
; matto matikat, texturet, matto-objectit...
; mattocords/vakiot/kerrointable alarammissa jottei pixel matikka hyytyisi, x + 325!
; centeroi kordinaatit sign wordeista..
; 30*30 matot.. 30*4 controlbezierit
PBC equ $ffe0
HSR equ $ffe9
HTX equ $ffeb
v1 equ $0
v1b equ $000080
v2 equ $0
v2b equ $ff0000
v3 equ $0000ff
v3b equ $008000
v4 equ $00ffff
v4b equ $00ff00
v5 equ $000080
v5b equ $0000ff
org p:$0
jmp start
dc 0,0,0,0,0,0,0,0,0,0
dc 0,0,0,0,0,0,0,0,0,0
dc 0,0,0,0,0,0,0,0,0,0
dc 0,0,0,0,0,0,0,0,0,0
dc 0,0,0,0,0,0,0,0,0,0
dc 0,0,0,0,0,0,0,0,0,0
dc 0,0,0,0
start
move #>$ffff,m0
movep #$0,x:$fffe ;fix read
move m0,m1
move m0,m2
move m0,m3
move m0,m4
move m0,m5
move m0,m6
move m0,m7
jsr fixvakiot
move #>$babe,x0
x_ready jclr #1,X:HSR,x_ready
move x0,X:HTX
kasky movep #1,X:PBC
jclr #0,x:HSR,kasky
move x:HTX,a
tst a #>1,x0
jeq key0 ;feed matto cordinates (N,[txt number,16 x-y cord])
sub x0,a
jeq key1 ;render beziers to dsp screens
sub x0,a
jeq key2 ;feed screens to CPU, clear screens + scrol planeorder
sub x0,a
jeq key3 ;feed kerroin, make offset
sub x0,a
jeq key4 ;cleraa ruutu ekalle framelle
sub x0,a
jeq key5 ;feed one texture (txt number 0-11,32*32 3 bit data)
jmp start
;---------------------------------------
key0
wsync movep #1,X:PBC ;get matto N
jclr #0,x:HSR,wsync
move x:HTX,x1
move x1,y:mattoN
move #control,r0
move #txtlist,r1
do x1,getmattodata
wsync2 movep #1,X:PBC ;get txt number > txt address to list
jclr #0,x:HSR,wsync2
move x:HTX,x1
move #>450,x0 ;30*30 /2
move #>texture,a0
mac x0,x1,a
move a0,y:(r1)+
do #16,getcords
wsync3 movep #1,X:PBC ;get x
jclr #0,x:HSR,wsync3
move x:HTX,x0
move x0,x:(r0)+
wsync4 movep #1,X:PBC ;get y
jclr #0,x:HSR,wsync4
move x:HTX,x0
move x0,x:(r0)+
getcords
nop
getmattodata
move #control,r0
move #>$7fff-(offset+260),y0 ; x fix
move y:mattoN,n7
move #>$7fff-170,y1 ; y fix
move #>offset+519,x1 ; x max 100+320+100
move #>offset,n1 ; x min
move #>339,n0 ; y max 50+240+50
clr b
do n7,scalecords
do #16,scaleones
move x:(r0),a ;x
sub y0,a n1,x0 ;zenteroi
; cmp x0,a
; tlt x0,a ;x ali
; cmp x1,a
; tgt x1,a ;X yli
move a1,x:(r0)+
move x:(r0),a ;y
sub y1,a n0,x0 ;zenteroi
; tmi b,a ;y ali
; cmp x0,a
; tgt x0,a ;y yli
move a1,x:(r0)+
scaleones
nop
nop
scalecords
jmp start
;---------------------------------------
key1
move #>txtlist,x0 ;settaa listat
move x0,y:Dtxtlist
move #>control,x0
move x0,y:Dcontrol
move y:mattoN,x0
do x0,loop_matot
jsr calc.control
jsr render.matto
nop
nop
loop_matot
jmp start
;-------------------
calc.control
move y:Dcontrol,r0
move #7,n0
move #kerroin,r4
move #120,n4
move #mattocontrol,r1
move #5,n1 ;steppi seuraavan bezierin samaan kontrollipisteeseen
;----- X1/Y1 controlpoints -----------
do #30,controlpixel1
move x:(r0)+,x1 y:(r4)+,y0
mpy y0,x1,a x:(r0)+,x0
mpy y0,x0,b x:(r0)+,x1 y:(r4)+,y0
mac y0,x1,a x:(r0)+,x0
mac y0,x0,b x:(r0)+,x1 y:(r4)+,y0
mac y0,x1,a x:(r0)+,x0
mac y0,x0,b x:(r0)+,x1 y:(r4)+,y0
mac y0,x1,a x:(r0)-n0,x0
mac y0,x0,b a1,x:(r1)+
move b1,x:(r1)+n1
controlpixel1
;-------------
move (r0)+n0 ;seuraavat lahtokontrollit
move (r0)+
move (r4)-n4 ;kerroin alkuun
move #mattocontrol+2,r1
;----- X2/Y2 controlpoints -----------
do #30,controlpixel2
move x:(r0)+,x1 y:(r4)+,y0
mpy y0,x1,a x:(r0)+,x0
mpy y0,x0,b x:(r0)+,x1 y:(r4)+,y0
mac y0,x1,a x:(r0)+,x0
mac y0,x0,b x:(r0)+,x1 y:(r4)+,y0
mac y0,x1,a x:(r0)+,x0
mac y0,x0,b x:(r0)+,x1 y:(r4)+,y0
mac y0,x1,a x:(r0)-n0,x0
mac y0,x0,b a1,x:(r1)+
move b1,y:(r1)+n1
controlpixel2
;-------------
move (r0)+n0 ;seuraavat lahtokontrollit
move (r0)+
move (r4)-n4 ;kerroin alkuun
move #mattocontrol+3,r1
;----- X3/Y3 controlpoints -----------
do #30,controlpixel3
move x:(r0)+,x1 y:(r4)+,y0
mpy y0,x1,a x:(r0)+,x0
mpy y0,x0,b x:(r0)+,x1 y:(r4)+,y0
mac y0,x1,a x:(r0)+,x0
mac y0,x0,b x:(r0)+,x1 y:(r4)+,y0
mac y0,x1,a x:(r0)+,x0
mac y0,x0,b x:(r0)+,x1 y:(r4)+,y0
mac y0,x1,a x:(r0)-n0,x0
mac y0,x0,b a1,x:(r1)+
move b1,x:(r1)+n1
controlpixel3
;-------------
move (r0)+n0 ;seuraavat lahtokontrollit
move (r0)+
move (r4)-n4 ;kerroin alkuun
move #7,n1
move #mattocontrol+5,r1
;----- X4/Y4 controlpoints -----------
do #30,controlpixel4
move x:(r0)+,x1 y:(r4)+,y0
mpy y0,x1,a x:(r0)+,x0
mpy y0,x0,b x:(r0)+,x1 y:(r4)+,y0
mac y0,x1,a x:(r0)+,x0
mac y0,x0,b x:(r0)+,x1 y:(r4)+,y0
mac y0,x1,a x:(r0)+,x0
mac y0,x0,b x:(r0)+,x1 y:(r4)+,y0
mac y0,x1,a x:(r0)-n0,x0
mac y0,x0,b a1,x:(r1)-
move b1,y:(r1)+n1
controlpixel4
;-------------
move (r0)+n0
move (r0)+
move r0,y:Dcontrol
rts
;-------------------------------------------------
render.matto
move y:Dtxtlist,r4
move #mattocontrol,r0 ;4 * x,y
move y:(r4)+,r6 ;get txt address
move r4,y:Dtxtlist
move #mattocontrol+3,r5
move #kerroin,r4
move #120,n4
move #-5,n0
move #6,n5
do #30,render32beziers
;-------------------------------------- piirra yksi bezier
move #screen,r3 ;hukkapixel
move x:(r0)+,x0 y:(r4)+,y0 ;con1x, kerroin1
mpy y0,x0,a x:(r0)+,x1 ;con1y
mpy y0,x1,b x:(r0)+,x0 y:(r4)+,y1 ;con2x, kerroin 2
mac y1,x0,a y:(r5)+,y0 ;con2y
mac y1,y0,b x:(r0)+,x1 y:(r4)+,y0 ;con3x, kerroin3
mac y0,x1,a x:(r0)+,x1 y:(r4)+,y1 ;con3y, kerroin4
mac y0,x1,b x:(r0)+n0,x1 y:(r5)-,y0 ;con4x, con4y
mac y1,x1,a y:(r6)+,n7
mac y1,y0,b a1,r7
move y:(r4)+,y0 ;kerroin1
move x:(r0)+,x0 y:(r7)+n7,y1 ;con1x, Xinc
do #29,render32pixels
;------------------------------- piirra yksi dotti
add y1,b x:(r0)+,x1 y:(r4)+,y1 ;con1y, kerroin2
mpy y0,x0,a a1,x:(r3)
mpy y0,x1,b b1,r3
move x:(r0)+,x0 y:(r5)+,y0 ;con2x, con2y
mac y1,x0,a x:(r7),x0 ;bit mask
mac y1,y0,b x:(r0)+,x1 y:(r4)+,y0 ;con3x, kerroin3
mac y0,x1,a x:(r0)+,x1 y:(r4)+,y1 ;con3y, kerroin4
mac y0,x1,b x:(r0)+n0,x1 y:(r5)-,y0 ;con4x, con4y
mac y1,x1,a y:(r6)+,n7
mac y1,y0,b a1,r7
move x:(r3),a y:(r4)+,y0 ;kerroin1
or x0,a x:(r0)+,x0 y:(r7)+n7,y1 ;con1x, Xinc > point mask
render32pixels
;----------------
add y1,b a1,x:(r3) ;write old back
move b1,r3
move x:(r7),x0
move x:(r3),a
or x0,a (r4)-n4 ;kerrointaulun alkuun
move a1,x:(r3)
move (r4)- ;fixaa vika kerroin1 lisays
move (r0)-n0
move (r5)+n5 ;siirry seuraaviin kontrollipisteisiin
render32beziers
;------------
rts
;------------------------------------
key2
move #screen+50,r1
move #290,n0 ;240+50
move #vakio,r7
move #4,n7
move #>238,x1
do x1,givescreen2
; Y loop ----------------
move r1,r0
move (r1)+
move x:(r0)+n0,x1
move #>20,y0 ;kelaa kaikki scanlinet columneista
do y0,givescreen1
; X loop ----------------
;123 123 - screeni byteplanarina, 3 planea
;a b feed conv gfx to cpu + shift/clear screen (lsl #8,gfx)
;
;b xx1.230
;&a 100.000
;&b 001.230 >toka clear
;+a x11.230 >cpu eka
;
;&b 023.000
;&a 020.000
;+a 022.300 >cpu toka
;
;<<a xx1.230 >eka clear
;&b 003.000
;+b 233.000 >cpu kolmas
move x:(r0),x0 y:(r7)+,y1 ;2^7
mpy y1,x0,b y:(r7)+,a1 ;$ff0000
and x1,a l:(r7)+,y ;$0000ff, 2^15
and y1,b a1,y1
mac y0,y1,b b0,x:(r0)-n0 ;toka write back
w1 jclr #1,x:HSR,w1
move b1,x:HTX ;eka plane
move x:(r7),b ;$00ffff
and x0,b y:(r7)+,a ;$00ff00
and x1,a b1,y1
mac y0,y1,a x:(r7),y0 ;y0 - 2^15 , new 2^7
w2 jclr #1,x:HSR,w2
move a1,x:HTX ;toka plane
mpy y0,x1,a y:(r7)-n7,b ;$0000ff
and x0,b a0,y0
add y0,b a0,x:(r0)+n0 ;eka write back
move (r0)+n0
move x:(r0)+n0,x1
w3 jclr #1,x:HSR,w3
move b1,x:HTX ;kolmas plane
givescreen1
;--------
nop
givescreen2
jmp start
;------------------------------------
fixvakiot
move #vakio,r0
move #>v1,x1
move #>v1b,x0
move x,l:(r0)+
move #>v2,x1
move #>v2b,x0
move x,l:(r0)+
move #>v3,x1
move #>v3b,x0
move x,l:(r0)+
move #>v4,x1
move #>v4b,x0
move x,l:(r0)+
move #>v5,x1
move #>v5b,x0
move x,l:(r0)+
rts
;-------------------
key3
move #kerroin,r0
move #>120,x0 ;30 * 4
do x0,qqqw2
qqq2 movep #1,X:PBC
jclr #0,x:HSR,qqq2
move x:HTX,x0
move x0,y:(r0)+
qqqw2
make_offset
move #offset,r0
move #siftit,r1 ;color-table, next color-table
do #8,gencolor
move #>screen,a1
clr b #>100,x0
do x0,vara1
move b1,x:(r0) ;nollaa X 0-99
move a1,y:(r0)+
vara1
move p:(r1)+,y0
move #>290,x0 ;240+50
move #>screen,a
do #40,gener ;320/8
move y0,b1 ;3 planes
do #8,gen2
move a1,y:(r0)
move b1,x:(r0)+
lsr b
gen2
add x0,a
nop
gener
move #>screen,a1
clr b #>100,x0
do x0,vara2
move b1,x:(r0) ;nollaa X 0-99
move a1,y:(r0)+
vara2
nop
nop
gencolor
jmp start
siftit
dc $000000
dc $800000
dc $008000
dc $808000
dc $000080
dc $800080
dc $008080
dc $808080
;-------------------
key4
move #screen+50,r0
clr a #50,n0
move #>240,x0
do #40,clearloop
rep x0
move a,x:(r0)+
move (r0)+n0
nop
clearloop
jmp start
;-------------------
key5
txtpos movep #1,X:PBC
jclr #0,x:HSR,txtpos
move x:HTX,x0
move #>450,x1 ;30*30/2
move #texture,a0
mac x0,x1,a
move a0,r0 ;texture position
move #>900,x0
move #>260,x1 ;x offset_table wide/2!
do x0,qqqw
qqq movep #1,X:PBC
jclr #0,x:HSR,qqq
move x:HTX,x0
mpy x1,x0,a
move a0,y:(r0)+
qqqw
jmp start
;-------------------
;read_one
; movep #1,X:PBC
; jclr #0,x:HSR,read_one
; move x:HTX,a1
;write_one
; jclr #1,X:HSR,write_one
; move a1,X:HTX
;---------------------
;jako ;divs x0,a (signed $123.456)
; rep #12
; asr a
; andi #$fe,ccr ;clear carry
; rep #24
; div x0,a
; asl a
; jclr #23,x0,pos_diver
; neg a
;pos_diver
; rts ;signed result in a0 (finally WORKS!!!)
;---------------------------------
org x:$0
mattocontrol ds 180
vakio ds 5
ds 120
offset ds 4160 ;bittimaskit (8)
control ds 320 ;matoillelle x,y
screen ds 11600 ;320*240+50/8 (ekat 50 alivuotovaraa)
ds 50 ;ylivuoto screenvara 50 lines
org y:$0
mattocontrol2 ds 180
vakiob ds 5
kerroin ds 120
offset2 ds 4160 ;100+320+100 x positionia (520*8)
mattoN ds 1
txtlist ds 10
Dcontrol ds 1 ;pointerit N maton control/txtlistaan
Dtxtlist ds 1
texture ds 11700 ;13 30*30 mappia
end