pouët.net

Helidot by Madness

;... .................................................................
;... HeliDot by Stranger of Madness^AnaLoG............................
;... It has started as a code optimization example....................
;... Then it has been a 256 bytes intro for 7d9 demoparty.............
;... Only one undocumented op used (DCP) b'coz code was 258 bytes :)..
;... Thanx Skate/(Ex-Glance) for Vice to real C64 help................
;... ...........................................20.12.2009............
;... .................................................................
 
!to "helidot@7d9",cbm
* = $0801
!byte $0b,$08,$00,$00,$9e,$32,$30,$35,$39,$00,$a0,$00 

* = $080d

tya
sta $2000,y
dey
bne *-4
dey
sty $206e
lda #240
sta $206f
jsr $e544

;// Set Color And Memory Locations Of Sprites \\ 
;// Also $88 Used For Lowbyte Of $d001 \\

ldy #$03
lda #$01
sta $88
sta $d026,y
tya
adc #$7f
sta $07f7,y
dey
bne *-14

;// My Old Setup Routine for Different Settings\\
;// Which One Was Starting Point Of This Intro \\

; ldy #$03
; lda #$84
; pha
; lda #$01
; sta $d026,y
; pla
; sta $07f7,y
; sec
; sbc #$02
; pha
; dey
; bne *-15
; pla 

sty $d020
sty $d021

;// Dot \\

sta $20c0

;/// Transfer Heli Sprite To $2000 \\\

ldx #45
lda .spriteData-1,x
sta $1fff,x 
dex 
bne *-7

;// Sprite Setup \\

lda #%10011111
sta $d015
sta $d000
lda #20
sta ($88,x)
sta $d003
lda #$8e
sta $d002
sta $d01d ;2x

;// Up'n'Down \\ 

jsr spranim
inc $d001
inc $d003
lda ($88,x)
cmp #150
bne *-13

lda #30
jsr spranim
!byte $cf,$01,$d0 ;dcp $d001
;dec $d001
;lda ($88,x)
;cmp #30
bne *-6

ldx #16
ldy #13
sty $d017 ;2y
clc
jsr $e50a
jsr $f5c1

;// $86 Used For Sprite Speed As A Loop Number \\
;// Actually Heli Sprite Speed Is Controlable \\

lda #10
sta $86
lda #168
sta $d004
lda #112
sta $d005
jsr wwait
inc $d005
lda $d005
cmp #164
bne *-11

inx
inc $da8d,x
jsr wwait
dec $d005
lda $d005
cmp #112
bne *-15
jmp *-26

;///Fix 1st And 2nd Frames Of Heli Sprite\\\

spranim:
lda ($fe,x)
eor #%11111000
sta ($fe,x)
lda $2001
eor #%00110000
sta $2001
lda $2002
eor #%01111100
sta $2002

wwait:
ldy $86
jsr $eeb3
dey
bne *-4

rts

.spriteData
;/// Heli Sprite Data Frame #1 \\\
!byte 255,207,252,0,48,0,0,0,0,0,48,0,0,48,0,0
!byte 252,0,0,204,0,3,3,0,3,135,0,3,207,0,0,252
!byte 0,3,207,0,4,48,128,4,0,128,14,1,192