Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- VIC_SPRITE_MSB=$D010
- VIC_SPRITE_ENABLE=$D015
- VIC_SPRITE_YEXPAND=$D017
- VIC_SPRITE_PRIORITY=$D01B
- VIC_SPRITE_MULTICOLOUR=$D01C
- VIC_SPRITE_XEXPAND=$D01D
- VIC_BORDERCOLOUR=$D020
- VIC_BGCOLOUR= $D021
- VIC_BGCOLOUR_MC1=$D022
- VIC_BGCOLOUR_MC2=$D023
- VIC_SPRITE_MC1= $D025
- VIC_SPRITE_MC2= $D026
- CIA_1 = $dc00 ; CIA#1 (Port Register A)
- CIA_2 = $dc01 ; CIA#2 (Port Register B)
- CIA_ddra = $dc02 ; CIA#1 (Data Direction Register A)
- CIA_ddrb = $dc03 ; CIA#2 (Data Direction Register B)
- XPADDLE= $d419
- MOUSEX= $0400
- MOUSEY= $0401
- MOUSEX_SPEED= $0428 ;$19
- MOUSEY_SPEED= $0429 ;$1a
- MDBUTTON= $0459
- ; 10 SYS2064
- *=$0801
- BYTE $0B, $08, $0A, $00, $9E, $32, $30, $36, $34, $00, $00, $00
- *=$0810
- init
- ; copy sprite data to sprite location
- ldy #$3F
- @in10 lda spritedata,y
- sta $0340,y
- dey
- bpl @in10
- lda #$0D ;set sprite pointer
- sta $07F8
- lda #$01 ;switch on sprite 1
- sta VIC_SPRITE_ENABLE
- lda #$07 ;set sprite colour to yellow
- sta $D027
- lda #%01111111
- sta $DC0D ;"Switch off" interrupts signals from CIA-1
- and $D011
- sta $D011 ;Clear most significant bit in VIC's raster register
- lda #$51
- sta $D012 ; set raster to occour 1 lines down
- lda #<irq_handler
- sta $0314 ; set low bit of start
- lda #>irq_handler
- sta $0315 ; set high bit of start
- lda #%00000001
- sta $D01A
- @endloop
- jmp @endloop
- irq_handler
- LDA #$00
- STA VIC_BORDERCOLOUR
- jsr handlekeyboard
- jsr handlemouseneos
- JSR DRAWSPRITE
- INC VIC_BORDERCOLOUR
- asl $D019
- JMP $EA31
- DRAWSPRITE
- lda MOUSEX
- clc
- adc #$0C
- asl a
- pha
- bcc @ds10
- lda VIC_SPRITE_MSB
- ora #$01
- bne @ds20
- @ds10 lda VIC_SPRITE_MSB
- and #$FE
- @ds20 sta VIC_SPRITE_MSB
- pla
- sta $D000 ; sprite X
- clc
- lda MOUSEY
- adc #$32
- sta $D001 ; sprite y
- rts
- handlekeyboard
- lda #$0
- sta CIA_ddra ;Port A data direction register.
- lda #$0
- sta CIA_ddrb ;Port B data direction register.
- @up
- lda #%11111101 ;
- sta CIA_1
- lda CIA_2 ; load column information
- and #%00000010 ; test 'w' key
- bne @noup ; zero flag is not set -> skip next command
- inc VIC_BGCOLOUR
- @noup
- rts
- handlemouseneos
- @LC020 jsr @LC100
- lda #$00
- bcc @LC029
- lda #$02
- @LC029 sta MDBUTTON
- jsr @LC190
- lda CIA_2 ; left button
- and #$10
- BNE @RT
- INC MDBUTTON
- @RT
- rts
- @LC100 ; READ MOUSE
- lda #$10
- sta CIA_ddrb ;Port B data direction register.
- LDA #$ef
- sta CIA_2 ;PORT B
- lda CIA_2 ;PORT B, read 4 bits
- asl a
- asl a
- asl a
- asl a
- sta MOUSEX_SPEED ; TIMES BY 16 AND STORE AT $19
- LDA #$10
- sta CIA_2
- lda CIA_2 ; read 4 bits
- and #$0F
- ora MOUSEX_SPEED
- sta MOUSEX_SPEED
- LDA #$EF
- sta CIA_2
- lda CIA_2
- asl a
- asl a
- asl a
- asl a
- sta MOUSEY_SPEED
- LDA #$10
- sta CIA_2
- lda CIA_2
- and #$0F
- ora MOUSEY_SPEED
- sta MOUSEY_SPEED
- lda XPADDLE
- cmp #$FF
- rts
- @LC190 ; TRANSLATE BASED ON SPEED
- lda MOUSEX_SPEED
- bmi @LC1A2
- sec
- lda MOUSEX
- sbc MOUSEX_SPEED
- bcs @LC1AF
- lda #$00
- beq @LC1AF
- @LC1A2 sec
- lda MOUSEX
- sbc MOUSEX_SPEED
- bcs @LC1AD
- cmp #$A0
- bcc @LC1AF
- @LC1AD lda #$9F
- @LC1AF sta MOUSEX
- lda MOUSEY_SPEED
- bmi @LC1C0
- sec
- lda MOUSEY
- sbc MOUSEY_SPEED
- bcs @LC1CD
- lda #$00
- beq @LC1CD
- @LC1C0 sec
- lda MOUSEY
- sbc MOUSEY_SPEED
- bcs @LC1CB
- cmp #$C8
- bcc @LC1CD
- @LC1CB lda #$C7
- @LC1CD sta MOUSEY
- rts
- spritedata
- byte $FC,$00,$00,$F0,$00,$00,$F0,$00,$00,$D8,$00,$00,$8C,$00,$00,$86,$00,$00,$03
- bytes 63
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement