home *** CD-ROM | disk | FTP | other *** search
- ;---------------------------------------
- ; sprite mover
- ;---------------------------------------
- ; (w) in 1991 by ingo kusch
- ; simonstr.9
- ; 4700 hamm 3
- ; tel:02381/464619
- ;---------------------------------------
- ; bereich : -x- : 456-480
- ; ------- (480-456) clr !!!!
- ; -y- : 40-240
- ;---------------------------------------
- ;abkuerzungen:
- ; 'sr' - sprite routine
- ; (move-programm)
- ; 'sd' - sprite darstellung
- ; (sichtbarmachen der beerechneten
- ; sprites mit first & next)
- ; zw.sp. - zwischen speicher
- ; s.o. - siehe oben
- ; s.u. - siehe unten
- ; clr - clear = loeschen
- ; spr - sprite
- ; adr - adresse
- ; tab - tabelle
- ; trk - track
- ; nr - nummer
- ; ? - bedingungen/abfragen
- ; ! - befehle/anweisungen
- ;---------------------------------------
-
- ;--- sprite tabellen
-
- base = $4000
- inittb = base
- xpos = base+30 ;position x
- ypos = base+60 ; " y
- block = base+90 ;block nr
- control = base+120 ;on/msb/color
- deltax = base+150 ;bewegung -x-
- deltay = base+180 ; " -y-
- delay = base+210 ;countdown
- sinxhi = base+240 ;sinus -x-
- sinxlo = base+270
- sinx1 = base+300
- sinx2 = base+330
- sinx3 = base+360
- sinyhi = base+390 ;sinus -y-
- sinylo = base+420
- siny1 = base+450
- siny2 = base+480
- siny3 = base+520
- anitb = base+570 ;animation
- anico = base+600
- anitco = base+630
- speclo = base+660 ;special-prgs
- spechi = base+690
- trklo = base+720 ;track count
- trkhi = base+750
- trkpo = base+780
- acctx = base+810 ;beschleunigung-x-
- accty = base+840 ; " -y-
- acct1 = base+870 ; " -zeit -x-
- acct2 = base+900 ; " " -y-
- zwisch = base+930 ;beeliebig
- zwisch2 = base+960 ;nutzbar
- zwisch3 = base+990 ; "
- zwisch4 = base+1020 ; "
-
- xpos2 = base+1050 ;fuer 'sd'
- ypos2 = base+1080 ;notwendige
- control2 = base+1110 ;zwischen tabs
- block2 = base+1140
-
- ytab = base+$0500 ;sortier tab 1
- srtab = ytab+100 ; " " 2
- srtab2 = ytab+130 ; zw.sp. 'sd'
- spfree = ytab+160 ;sortier tab 3
-
-
-
- ;--- zeropage adressen
-
- adr = $02
- madr = $04
- mre = $06
-
- xwert = $08
- ywert = $09
- cntr = $0a
- ireg = $0b
- fspr = $0c
- spr = $0d
- spr2 = $0e
- spr3 = $0f
- zwr = $10
- zwr2 = $11
- mzwr = $12
- mzwr2 = $13
- by = $14
- my = $15
- sy = $16
- time = $17 ;'uhr'
-
- spr21 = $1a
- spr31 = $1b
-
-
-
- ;--- makros
-
- setirq .macro ;setzt irq
- lda #<\1
- sta $fffe
- lda #>\1
- sta $ffff
- .endm
-
- free .macro ;gibt irq frei
- asl $d019
- cli
- .endm
-
-
- ;--- main part
-
-
-
- *= $0810
-
- jmp init ;s.u.
-
-
- ;---------------------------------------
- ;* achtung ! die folgende routine wird
- ; von den irq-programmen first & next
- ; angesprungen ! sie steht hier vorn,
- ; damit sie einige taktzyklen schneller
- ; (branches nur in gleiche page usw...)
- ;---------------------------------------
-
- set dec spr21 ;bringt die
- bmi st3 ;sprs auf
- ldx spr21 ;den screen ...
- ldy srtab2,x
- lda control2,y ;farbe
- bpl set ;noch an ?!?!
- ldx spr
- sta $d027,x
- asl a ;msb holen
- asl a
- lda $d010
- and tabb,x
- bcc st10 ;msb - setzen
- ora tabc,x
- st10 sta $d010
-
- lda block2,y ;block-nummer
- st4 sta $07f8,x
- txa
- asl a
- tax
- lda xpos2,y ;x-position
- sta $d000,x
- lda ypos2,y ;y-position
- sta $d001,x
-
- lda spr ;next spr
- adc #$01
- and #$07
- sta spr
- rts
-
- tabb .byte $fe,$fd,$fb,$f7
- .byte $ef,$df,$bf,$7f
- tabc .byte $01,$02,$04,$08
- .byte $10,$20,$40,$80
-
- st3 pla ;keine sprs
- pla ;mehr
- #setirq (first) ;irq an den
- lda $d011 ; anfang
- and #$7f ;raster
- sta $d011 ; refresh
- lda #10
- sta $d012
- lda spr31
- cmp #$08 ;zurueck nach:
- bcs st31
- jmp f3 ;first ?!?
- st31 jmp n3 ;oder next ??
-
-
-
-
- ;---------------------------------------
- ;* eigentlicher programm beginn
- ;---------------------------------------
-
- init sei
- lda #$05 ;rom aus
- sta $01
- lda #$00
- sta $d020 ;background
- sta $d021 ; colors
- sta $dc0e ;zeit irqs
- sta $dc0d ;sperren
-
- tax
- ii1 lda #$00
- sta base,x ;register
- sta base+$0100,x ;zurueck-
- sta base+$0200,x ; setzen
- sta base+$0300,x
- sta base+$0400,x
- sta base+$0500,x
- lda #$20
- sta $0400,x ;bildschirm
- sta $0500,x ;clr !
- sta $0600,x
- sta $0700,x
- dex
- bne ii1
-
- ldx #30 ;dito
- lda #$00
- ii2 sta $02,x ;zeropage
- dex
- bpl ii2
-
- lda #$ff ;multicolor
- sta $d01c ;on
- lda #$06 ;spr
- sta $d025 ; farben
- lda #$01 ;setzen
- sta $d026
-
- start lda #<nmi ;nmis
- ldx #>nmi ;auffangen
- sta $fffa
- stx $fffb
- #setirq (first) ;raster-irq
- lda $d011 ; init...
- and #$7f ;raster msb
- sta $d011 ;clr
- lda #20 ;rasterzeile
- sta $d012 ;setzen
- lda #$81 ;rasterirq
- sta $d01a ; maskieren
- cli ;freigabe
-
- wait jsr minit ;spr init
- jsr timer ;hier platz fuer
- jmp wait ;check-routinen
- ;timer-routinen
- ;usw. ausserhalb
- ;des irq !
-
-
-
- ;---------------------------------------
- ;* stellt die ersten acht sprites dar
- ;---------------------------------------
-
- first sta a1+1 ;register
- stx x1+1 ; retten
- sty y1+1
-
- inc by ;zeittakt
- lda by
- and #$3f ;circa jeden
- bne i1 ; 64. screen
- lda time ; einmal
- clc ; time-counter
- adc #1 ; erhoehen !
- sta time
- bcc i1
- inc time+1
- i1
- lda spr2 ;hier werden die
- sta spr21 ;von der 'sr'
- lda spr3 ;bearbeiteten
- sta spr31 ;register in
- ldx #30 ;die fuer 'sd'
- in2 lda xpos,x ;notwendigen
- sta xpos2,x ;copiert.
- lda ypos,x
- sta ypos2,x ;dadurch kann
- lda control,x ;die berechnung
- sta control2,x ;'sr' (fuer den
- lda block,x ;naechsten
- sta block2,x ;durchlauf)
- lda srtab,x ;parallel mit
- sta srtab2,x ;'sd' ablaufen,
- dex ;ohne dass beide
- bpl in2 ;sich stoeren !
-
- lda #$00 ;spr ein!
- sta spr
- ldx spr31
- f5 cpx #$09 ;mehr als 8 ?
- bcc f4
- ldx #$08 ;dann: alle an!
- f4 lda tabd,x ;sonst: evtl.
- sta $d015 ; weniger!
-
- jsr set ;die obersten 8
- jsr set ;spr darstellen!
- jsr set
- jsr set
- jsr set
- jsr set
- jsr set
- jsr set
-
- lda $d001 ;untere kante
- adc #21 ;des naechsten
- sta $d012 ;sprs neuer
- #setirq (next) ;raster-init !
-
- f3 #free ;irq frei
-
- jsr move ;'sr'
- lda #$00
- sta $d020
-
- a1 lda #$00 ;register
- x1 ldx #$00 ; retten
- y1 ldy #$00
- nmi rti
-
-
- ;---------------------------------------
- ;* stellt die weiteren sprites dar !
- ;---------------------------------------
-
- next sta a2+1 ;s.o.
- stx x2+1
- sty y2+1
-
- n2 jsr set ;'sd'
- asl a ;noch genug ras-
- tax ;ter zeit bis
- lda $d001,x ;zum naechsten
- adc #21 ;spr, um noch
- sta zwr ;einen irq aus-
- ldx $d012 ;zuloesen ???
- inx
- cpx zwr
- bcs n2 ;nein : n2
-
- sta $d012 ;ja !
- n3
- a2 lda #$00 ;s.o.
- x2 ldx #$00
- y2 ldy #$00
- #free
- rti
-
-
-
- ;---------------------------------------
- ;* eigentliche sprite-routine 'sr'
- ;---------------------------------syntax
- ;zur bewegung & darstellung der sprites!
- ; {CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}
- ; {CBM-A}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-S}
- ; xxxx xxxx {SHIFT--}control-byte{SHIFT--}
- ; {SHIFT--}{SHIFT--}{SHIFT--}{SHIFT--} {CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}sprite farbe {CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-X}
- ; {SHIFT--}{SHIFT--}{SHIFT--}{CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}1st/2nd nibble (sinus)
- ; {SHIFT--}{SHIFT--}{CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}explosion on/off
- ; {SHIFT--}{CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}msb
- ; {CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}sprite on/off
- ;---------------------------------------
-
- move lda my ;fuer x/y
- eor #$80 ;bewegung :
- sta my ;up/down half
- ;(s.u.)
- ldx #30
- mo2 lda control,x
- bpl yr5 ;spr an ?
- ;ja !
- lda #$00 ;zwischenwerte
- sta xwert ;losechen
- sta ywert
-
- an5 lda anitb,x ;animation ?
- bne an51
- jmp xs ;nein : s.u.
- an51 asl a ;ja:ausfuehren
- dec anitco,x
- bpl an21 ;next step ?
- tay ;ja !
- lda anitab+2,y ;wartezeit
- sta anitco,x ; restaurieren
- lda anitab,y ;adr
- sta adr ;holen
- lda anitab+1,y
- sta adr+1
- ldy anico,x ;stepnummer
- an3 lda (adr),y ;block holen
- bne an2 ;block ok ?
- sta anico,x ;nein:
- tay ;animation von
- bcc an3 ;vorne ?
-
- lda anitb,x ;nicht nochmal!
- and #$3f ;explosion ?
- beq an8 ;ja : clr
- an41 inc inittb,x ;nein:next init
- lda #$00 ;anim. fertig
- sta anitb,x
-
- an4 lda control,x
- asl a
- bpl an42 ;msb ?
- lda xpos,x ;ja :
- cmp #160 ; spr clr ?
- bcc an42 ; nein
- cmp #200
- bcs an42 ; nein
- bcc an8 ;ja!
-
- an42 lda ypos,x ; sortiert spr.
- lsr a ; in ytab ein
- lsr a
- cmp #10 ;spr clr ?
- bcc an8 ; ja
- cmp #60
- bcs an8 ; ja
- tay ;nein
- yr4 lda ytab,y
- beq yr3 ;platz besetzt?
- iny ; ja:next place
- cpy #60
- bcc yr4 ; end of tab?
- bcs yr5 ; ja: next spr
- yr3 txa
- sta ytab,y ; einsortieren
- bne yr5
-
- an8 lda #$00 ; spr clr!
- sta control,x
- yr5 dex ; next spr
- beq yr51 ; all ready ?
- jmp mo2 ; no
- yr51 jmp sort ; all ready !!
-
- an2 sta block,x ; new block
- inc anico,x ; step forward
- an21 bcc xs ; explosion ?
- ldy #0 ; vielleicht
- lda anitb,x
- and #$3f
- bne xs ; explosion ?
- jmp setxy ; ja!
-
- xs lda control,x ; weiter :
- eor #$10 ; first/sec.
- sta control,x ; halfbyte
- asl a
- asl a
- asl a
- sta sy ; sichern
- lda sinxhi,x ; sinus in
- beq ys ; x-richtung ?
- sta adr+1 ; ja:adr
- lda sinxlo,x ; holen
- sta adr
- ldy sinx1,x
- lda (adr),y ; wert holen
- bit sy ; 1st/2nd
- bmi xs2 ; halfbyte ?
- lsr a ; first
- lsr a
- lsr a
- lsr a
- xs2 and #$0f ; second
- tay
- lda deltb,y ; aus tab holen
- sta xwert ; ablegen
- bit sy ; bereits next
- bpl ys ; byte ???
- lda sinx1,x ; ja!
- clc ; step forward
- adc #1
- cmp sinx2,x
- bcc xs1 ;ende erreicht?
- lda sinx3,x ; ja:restart
- xs1 sta sinx1,x ; nein:store
-
- ys lda sinyhi,x ; sinus in
- beq del ; y-richtung ?
- sta adr+1 ; ja :adr
- lda sinylo,x ; holen
- sta adr
- ldy siny1,x
- lda (adr),y ; dito
- bit sy ; alles analog
- bmi ys2 ; zu -xs-
- lsr a
- lsr a
- lsr a
- lsr a
- ys2 and #$0f
- tay
- lda deltb,y
- sta ywert
- bit sy
- bpl del
- lda siny1,x
- clc
- adc #1
- cmp siny2,x
- bcc ys1
- lda siny3,x
- ys1 sta siny1,x
-
- del lda delay,x ; countdown ?
- beq acx
- dec delay,x ; ja:ausfuehren
- bne acx ; null ?
- inc inittb,x ; ja:next init
-
- acx lda acctx,x ;beschleunigung x?
- beq dx
- dec acct1,x ;ja:wert schon
- bpl ac1 ; aendern ?
-
- lda acctx,x ;ja: zeit
- sta acct1,x ; restaurieren
-
- lda deltax,x ;tab-wert holen
- and #$f0
- sta zwr2 ;ziel retten
- lsr a
- lsr a
- lsr a
- lsr a
- sta zwr ;ziel wert
- lda deltax,x
- and #$0f ;moment wert
- cmp zwr ;ziel
- bne ac5 ; erreicht?
- lda #$00 ; ja : acc-
- sta acctx,x ; ende !
- beq acy
-
- ac5 bcc ac3 ;ziel annaehren
- sbc #1
- bpl ac4
- ac3 adc #1
- ac4 ora zwr2 ;tab wert
- sta deltax,x ; zurueck !
- bne dx1
-
- ac1 lda deltax,x ;bewegung aus-
- bne dx1 ; fuehren !
-
- dx lda deltax,x ; x -
- beq dy ; bewegung ??
- bit my ; ja
- bpl dx1 ; 1st/2nd half?
- lsr a ;1st
- lsr a
- lsr a
- lsr a
- dx1 and #$0f ;2nd
- tay
- lda deltb,y ; s.o.
- clc
- adc xwert ;ablegen
- sta xwert
-
- acy lda accty,x ;beschleunigung y?
- beq dy
- dec acct2,x ;ja: weiter
- bpl ac11 ;analog -acx-
-
- lda accty,x
- sta acct2,x
-
- lda deltay,x
- and #$f0
- sta zwr2
- lsr a
- lsr a
- lsr a
- lsr a
- sta zwr
- lda deltay,x
- and #$0f
- cmp zwr
- bne ac6
- lda #$00
- sta accty,x
- beq spc
-
- ac6 bcc ac7
- sbc #1
- bpl ac8
- ac7 adc #1
- ac8 ora zwr2
- sta deltay,x
- bne dy1
-
- ac11 lda deltay,x
- bne dy1
-
- dy lda deltay,x ; y bewegung ?
- beq spc
- bit my ; analog -dx- !
- bpl dy1
- lsr a
- lsr a
- lsr a
- lsr a
- dy1 and #$0f
- tay
- lda deltb,y
- clc
- adc ywert
- sta ywert
-
- spc lda spechi,x ;special prg ?!
- beq setxy
- sta sp1+2 ;ja! adr
- lda speclo,x ; holen
- sta sp1+1
- stx sp1+4 ;spr-nr retten
- sp1 jsr $ffff ;ins zusatz-prg
- ldx #0 ;spr-nr retten
-
- setxy lda xwert ;neue spr-pos.
- beq sx5 ;berechnen !
- clc
- adc xpos,x ;x-pos
- sta xpos,x
- bit xwert
- bpl sx3 ;xwert neg?
- bcc sx3+2 ;add.ueberlauf?
- bcs sx5 ;ja/nein?
- sx3 bcc sx5
- lda control,x ;mit msb !
- eor #$40
- sta control,x
- sx5 lda ywert
- beq sx4
- clc
- adc ypos,x ;y-pos
- sta ypos,x ; und fertig!
-
- sx4 jmp an4 ;einsortieren !
-
-
-
- ;---------------------------------------
- ;* abschliessender sortier - algorithmus
- ;---------------------------------------
-
- sort ldy #0
- ldx #60
- an7 lda ytab,x ;tab search
- beq an6 ;spr gefunden?
- sta srtab,y ;ja:einsortieren!
- lda #0
- sta ytab,x ;wert clr!
- iny ;next
- an6 dex ;ganzen bereich
- cpx #10 ;durchsuchen!
- bcs an7
- lda #$ff ;ende der tab
- sta srtab,y ;markieren
- sty spr2 ;spr-anzahl
- sty spr3 ;retten
-
- fs7 dey ;ueberprueft
- beq try ;nochmals die
- ldx srtab,y ;reihenfolge
- lda ypos,x ;der sprites
- ldx srtab-1,y ;mittels der
- cmp ypos,x ;jeweiligen
- bcc fs7 ;(echten) ypos
- lda srtab,y ;& sortiert um
- sta srtab-1,y ;(falls noetig)
- txa
- sta srtab,y
- bne fs7
-
- try ldy #0 ;fertigt eine
- ldx #30 ;tabelle der
- fs2 lda control,x ;freien spr
- bmi fs1 ;an ...
- lda inittb,x
- beq fs3 ;wird von
- bpl fs1 ;getspr genutzt
- cmp #$ff
- bne fs1
- lda #$00
- sta inittb,x
- beq fs1
- fs3 txa
- sta spfree,y
- iny
- fs1 dex
- bne fs2
- dey
- sty fspr ;ende des move
- rts ;programms
-
-
-
- ;---------------------------------------
- ;* initialisiert alle sprites mittels
- ; track-tabelle !
- ;---------------------------------------
-
- minit ldx #30
- mi17 lda inittb,x
- beq mi1 ;init ?
- cmp #$ff ;vielleicht ?
- beq mi1
- bmi mi16 ;ja:explosion
- ldy control,x ;ja:normal
- sty cntr
- bmi mi2 ;spr on?
- asl a ;nein
- tay
- lda trktab,y ;track adr
- sta trklo,x ; holen
- sta madr
- lda trktab+1,y
- sta trkhi,x
- sta madr+1
- jsr clr ;alte wert clr
- ldy #0
- lda (madr),y ;position
- beq mi15 ; gegeben ?
- asl a ;ja !
- sta xpos,x ; x-pos &
- ror a
- lsr a
- and #$40
- sta cntr ; msb holen!
- iny
- lda (madr),y
- sta ypos,x ; y-pos holen!
- mi15 ldy #2
- bne mi32 ; weiter
-
- mi16 jsr expl2 ;expl.-init
- mi13 lda cntr
- sta control,x ;spr ein/aus
- mi14 lda #0
- sta inittb,x ;init fertig!
- mi1 dex
- bne mi17 ;next spr?
- rts ;minit ende !!!
-
-
- ;spr war ein !
- mi2 tya ;control-reg!
- asl a
- asl a
- bmi mi14 ;expl ?
- mi12 lda trklo,x ;no: alte
- sta madr ; adr holen
- lda trkhi,x
- beq mi14
- sta madr+1
- ldy trkpo,x ;pointer
- mi32 lda (madr),y
- beq mi14 ;track ende ?
- cmp #$ff ;no:
- beq mijmp ;jump/einschub?
- jsr mi3 ;no: norm-init!
- iny
- tya ;neuen
- sta trkpo,x ;pointer retten
- jmp mi13 ;next spr !
-
- mijmp iny
- lda (madr),y ;testen !
- cmp #$ff
- beq mij1 ;jump ?
- cmp #$fe
- beq mijs ;einschub ?
- dey
- jmp mi13 ;weder noch !
-
-
- mij1 iny ;jump!
- lda (madr),y ; holt neue
- sta trklo,x ; track adr
- iny ; & uebergibt!
- lda (madr),y ; achtung :
- sta trkhi,x ;----------
- lda #0 ;muss auf
- sta trkpo,x ;status byte
- beq mi12 ;weisen !!!
-
-
- ;einschub !
- mijs iny ; holt
- lda (madr),y ; einsprung
- sta mijs2+1 ; der init-seq
- iny
- lda (madr),y ;achtung:
- sta madr+1 ;--------
- mijs2 lda #$00 ;muss auf
- sta madr ;status byte
- iny ;weisen !
- tya
- sta trkpo,x
- ldy #0
- lda (madr),y ; fuehrt sie
- jsr mi3 ; aus & kehrt
- jmp mi13 ; zurueck
-
-
- mi3 lsr a ;holt alle
- sta ireg ; daten aus dem
- bcc mi4 ; track !
- iny
- lda (madr),y ;special init?
- sta mi4-6 ;wenn ja:
- iny ; holt einsrung
- lda (madr),y
- sta mi4-5
- sty mi4-1 ;rettet x,y
- stx mi4-3
- jsr $ffff ;springt ein!
- ldx #0 ; x,y retten
- ldy #0
-
- mi4 lsr ireg ;basic
- bcc mi5 ; refresh ?
- iny ;ja:
- lda (madr),y ;ja: holt:
- beq mi41
- sta block,x ; block &
- mi41 lda cntr
- and #$40
- iny
- ora (madr),y ; farbe !
- ora #$80 ;& spr on !
- sta cntr
-
- mi5 lsr ireg ;bewegung x/y?
- bcc mi6
- iny ;ja: holt:
- lda (madr),y ; deltax
- sta deltax,x
- iny
- lda (madr),y ; deltay
- sta deltay,x
-
- mi6 lsr ireg ;count down?
- bcc mi7
- iny ;ja:
- lda (madr),y ; holt delay
- sta delay,x
-
- mi7 lsr ireg ;beschleunigung
- bcc mi8 ; x/y ?
- iny ;ja!
- sty mi71+1 ;y retten
- lda (madr),y ;holt zeiger
- asl a ; auf acctb
- asl a ; *4
- tay ;holt aus
- lda acctb+1,y ; acctb :
- sta acctx,x ; time x
- lda acctb,y ;ziel/start -x-
- sta deltax,x
- lda acctb+3,y ; time y
- sta accty,x
- lda acctb+2,y ;ziel/start -y-
- sta deltay,x
- lda #$00 ; alte counter
- sta acct1,x ; clr
- sta acct2,x
- mi71 ldy #$00 ;y zurueck
-
- mi8 lsr ireg ;animation ?
- bcc mi9
- iny ;ja
- lda (madr),y ;animations-nr.
- asl a ;*2
- sta anitb,x ;uebergeben
- lda #0
- sta anitco,x ; clr
- sta anico,x
-
- mi9 lsr ireg ;special-prg
- bcc mi10
- iny ;ja !
- lda (madr),y
- sta speclo,x ;holt adr !
- iny
- lda (madr),y ;&uebergibt !
- sta spechi,x
-
- mi10 lsr ireg ;sinus ?
- bcc mi11
- iny ; ja!
- lda (madr),y ;holt nr fuer
- jmp sininit ;sintab2 & init
- mi11 rts
-
-
-