home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er 1994 April
/
64er_Magazin_94-04_1994_Markt__Technik_de_Side_B.d64
/
para64.source
< prev
next >
Wrap
Text File
|
2022-10-26
|
10KB
|
545 lines
;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
; genloc parallaxing / parallaxdemo
;
; program by michael strelecki
;
;copyright by michael strelecki in 1994
;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
*= $0900
jmp start
fce2 lda #$81
sta $dc0d
lda #$2f
sta $00
lda #$37
sta $01
jsr $fda3
ldx #$1f
fce4 lda $fd30,x
sta $0314,x
dex
bpl fce4
jmp $ff5b
;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
bcolour = $8f00
hin = $f6
vor = $f8
ready .byte 0
limove .byte 0
remove .byte 0
d16 .byte 0
d18 .byte 0
coltakt .byte 0
bank .byte 0
scr2 .byte 0
scr .byte 0
pseu .byte 0
scrflag .byte 0
colflag .byte 0
d18tab .byte 8,$1c
screentab .byte $40,$44
;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
start jsr fce2 ;init
lda #$00
sta $d011
sta $d020
tax
a0 lda #$00 ;beide bildschirme
a1 sta $4000,x ;loeschen
inx
bne a1
inc a1+2
lda a1+2
cmp #$48
bcc a0
sei ;set irq
lda #$36
sta $01
lda #$01
sta $d01a
sta $dc0d
lda #<irq
sta $0314
lda #>irq
sta $0315
lda #$fc
sta $d012
lda #$00
sta $d011
lda #$96 ;bank 1
sta $dd00
jsr parainit
cli
;direktmodus
;berechnung von colourram und screen (!)
wait lda colflag ;colourram blitt
beq x
jsr coblit
x lda scrflag ;screen blitten?
beq wait
jsr scblit
jmp wait
;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
parainit lda #$08 ;registerinit
sta pseu
lda #$00
sta d16
sta remove
sta limove
lda #$40
sta scr2
lda #$44
sta scr
lda #<$8078 ;startposition
sta hin
lda #>$8078
sta hin+1
lda #<$91f0
sta vor
lda #>$91f0
sta vor+1
ldy #$00 ;screeninit
jsr sinit
jsr scblit
lda #$44
sta scr2
lda #$40
sta scr
ldy #$00
jsr sinit
jsr scblit
jsr coblit
lda #$00
sta ready
lda #$07
sta $05
sch jsr redo
lda scrflag
beq sch1
jsr scblit
sch1 lda colflag
beq sch2
jsr coblit
sch2 dec $05
bpl sch
lda #$40
sta scr2
lda #$44
sta scr
lda #$00 ;mainflag init
sta scrflag
sta colflag
sta ready
rts
;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
scblit ldx #17 ;screen blitten
sch7 ldy #39
vorne lda $1111,y
bne screen
hinten lda $1111,y
screen sta $1111,y
dey
bpl vorne
lda vorne+1 ;naechste zeilen
clc
adc #$68
sta vorne+1
lda vorne+2
adc #$01
sta vorne+2
lda hinten+1
clc
adc #$c8
sta hinten+1
bcc ueb
inc hinten+2
ueb lda screen+1
clc
adc #$28
sta screen+1
bcc ueb1
inc screen+2
ueb1 dex ;alle zeilen?
bpl sch7
lda ready
ora #$01
sta ready
inx
stx scrflag
outi2 rts
;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
bankswap lda colflag ;screenwechsel
ora scrflag
bne outi2
lda bank
tay
eor #$01
sta bank
tax
lda screentab,y
sta scr
lda d18tab,x
sta pseu
lda screentab,x
sta scr2
lda #$01 ;impuls colourram
sta colflag
rts
;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
coblit lda scr2 ;colourram blitten
sta mix+2
ora #$02
sta block2+2
lda #$d8
sta cram+2
ldx #$01
stx $02
dex
stx coltakt
mix ldy $4000,x
lda bcolour,y
cram sta $d800,x
inx
bne mix
inc mix+2
inc cram+2
dec $02
bpl mix ;$0200 bytes?
block2 ldy $4200,x ;restliche $d0
lda bcolour,y
sta $da00,x
inx
cpx #$d0
bne block2
lda #$00
sta colflag
rts
;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
sinit lda vor ;blitroutinen init
sta vorne+1
lda vor+1
sta vorne+2
lda hin
sta hinten+1
lda hin+1
sta hinten+2
lda #$00
sta screen+1
lda scr
sta screen+2
rts
;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
;irqmodus
;impulsgeber(!)
irq lda #$0f ;obere farben
sta $d021
lda #$0b
sta $d022
lda #$0c
sta $d023
jsr moving
lda coltakt
cmp #$04
bcc doff
lda #$01 ;impuls colourram
sta colflag
doff
lda d16 ;d16 softscroll->
and #$04 ;d18 softscroll
lsr a
ora pseu
sta d18
lda d18
sta $d018
lda d16
ora #$10
sta $d016
lda #$1b
sta $d011
lda #<irq1
sta $0314
lda #>irq1
sta $0315
lda #$aa
sta $d012
inc $d019
jmp $ea81
;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
irq1 ldx #$03
x1 dex
bpl x1
lda #$0d ;untere farben
sta $d021
lda #$09
sta $d022
lda #$0c
sta $d023
lda #<irq
sta $0314
lda #>irq
sta $0315
lda #$fc
sta $d012
inc $d019
jmp $ea81
;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
moving lda remove
ora limove
bne abfrage
lda coltakt
cmp #$02
bcc abfrage
inc coltakt
rts
;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
joystick ldx #$00 ;joystickabfrage
stx limove
stx remove
inc coltakt
inx
lda #$ff
sta $dc00
lda $dc00
lsr a
lsr a
lsr a
bcs clix
stx limove
ldy #$00
clix lsr a
bcs nojoy
stx remove
ldy #$01
nojoy rts
;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
abfrage jsr joystick
lda remove ;joystick-aktion?
bne redo
lda limove
bne lido0
rts
lido0 jmp lido
;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
redo lda ready ;rechts scrollen
bmi onni
lda #$80
sta ready
lda bank
beq outi
inc hin
bne outi
inc hin+1
outi rts
onni tay
lda scrflag
ora colflag
bne links
tya
and #$01
bne links
lda #$01 ;impuls screen
sta scrflag
jsr sinit
links lda vor ;rechtes ende?
cmp #$42
bne dolinks
lda vor+1
cmp #$92
bne dolinks
lda #$00
sta remove
rts
dolinks lda d16 ;softscroll
bne dool
tay
lda scrflag
ora colflag
bne outi
tya
dool sec
sbc #$02
and #$07
sta d16
cmp #$06
beq rhard
rts
rhard lda ready ;hardscroll?
and #$01
beq bk3
lda scrflag
ora colflag
bne bk3
inc vor
bne bk1
inc vor+1
bk1 lda bank
bne bk2
inc hin
bne bk2
inc hin+1
bk2 lda #$80
sta ready
jmp bankswap
bk3 lda #$00
sta d16
rts
;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
lido lda ready ;links scrollen
bpl bum1
lda bank
beq bum
lda hin
sec
sbc #$01
sta hin
bcs bum
dec hin+1
bum lda #$00
sta ready
rts
bum1 ldy scrflag
bne rechts
and #$01
bne rechts
ldy #$01 ;impuls screen
sty scrflag
jsr sinit
jsr setl
rechts lda vor ;linkes ende?
bne dorechts
lda vor+1
cmp #$91
bne dorechts
lda #$00
sta limove
outi1 rts
dorechts lda d16 ;softscroll
cmp #$06
bne sch8
tay
lda scrflag
ora colflag
bne outi1
tya
sch8 clc
adc #$02
and #$07
sta d16
beq lhard
rts
lhard lda ready ;hardscroll?
and #$01
beq tuffy
lda scrflag
ora colflag
bne tuffy
lda vor
sec
sbc #$01
sta vor
bcs xeni
dec vor+1
xeni
lda bank
bne scini
lda hin
sec
sbc #$01
sta hin
bcs scini
dec hin+1
scini lda #$00
sta ready
jmp bankswap
tuffy lda #$06
sta d16
rts
;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
setl lda vorne+1
sec
sbc #$02
sta vorne+1
bcs popl
dec vorne+2
popl lda bank
bne posty
lda hinten+1
sec
sbc #$01
sta hinten+1
bcs posty
dec hinten+2
posty rts
;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC