base:ballon_demo_from_manual
no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
Last revision | |||
— | base:ballon_demo_from_manual [2017-08-30 20:14] – created abujok | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | This is the BASIC sprite example from the C64 Manual moved to machine code. | ||
+ | |||
+ | This was my first step into the world of sprites :-) | ||
+ | |||
+ | Have fun | ||
+ | |||
+ | < | ||
+ | |||
+ | ; DASM Syntax | ||
+ | |||
+ | processor 6502 | ||
+ | |||
+ | CLRSCN = $E544 ; Clear Screen | ||
+ | |||
+ | VIC = $D000 ; VIC Basis 53248 | ||
+ | MIB_X2 = VIC+4 ; | ||
+ | MIB_Y2 = VIC+5 ; | ||
+ | MIB_Y_MSB = VIC+16 | ||
+ | |||
+ | MIB_ENABLE = VIC+21 ; register Sprite Enable 53269 | ||
+ | MIB_POINTER = $07F8 ; Memory pointer Basis 2040 | ||
+ | |||
+ | MIB_MEM_SP2 = $0340 ; begin memory area sprite2 | ||
+ | |||
+ | |||
+ | org $0800 | ||
+ | |||
+ | ; encode SYS 2064 ($0810) line | ||
+ | ; in BASIC program space | ||
+ | |||
+ | dc $00 ,$0c, $08, $0a, $00, $9e, $20, $32 | ||
+ | dc $30, $36, $34, $00, $00, $00, $00, $00 | ||
+ | |||
+ | |||
+ | init lda #$04 ; Sprite 2 | ||
+ | sta MIB_ENABLE ; | ||
+ | |||
+ | lda # | ||
+ | sta MIB_POINTER+2 ; | ||
+ | |||
+ | ldx #$3e ; max of sprite value => 63 | ||
+ | x0 lda spr0,x ; load sprite byte | ||
+ | sta MIB_MEM_SP2, | ||
+ | dex ; x-- | ||
+ | bne x0 ; last byte? | ||
+ | dex ; x-- | ||
+ | stx MIB_X2 ; set Sprite position x to zero minus one | ||
+ | stx MIB_Y2 ; set Sprite position y to zero minus one | ||
+ | |||
+ | jsr CLRSCN ; C64 ROM Clear Screen | ||
+ | |||
+ | y0 inc MIB_X2 ; Sprite position x++ | ||
+ | inc MIB_Y2 ; Sprite position y++ | ||
+ | |||
+ | |||
+ | ; delay for sprite move | ||
+ | ldx #$05 ; set prescaler outer loop | ||
+ | y11 ldy #$ff ; set prescaler inner loop | ||
+ | y1 dey ; y-- | ||
+ | bne y1 ; no reached of zero | ||
+ | dex ; x-- | ||
+ | bne y11 ; | ||
+ | |||
+ | lda MIB_X2 ; Sprite position x | ||
+ | cmp #$c8 ; Sprite position x are 200? | ||
+ | bne y0 ; no, next position | ||
+ | |||
+ | rts | ||
+ | |||
+ | |||
+ | spr0 byte 0, | ||
+ | byte 7, | ||
+ | byte 3, | ||
+ | byte 1, | ||
+ | byte 62, | ||
+ | </ |
base/ballon_demo_from_manual.txt · Last modified: 2020-07-01 01:15 by ftc