home *** CD-ROM | disk | FTP | other *** search
- ;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
-
-