.const scr = 2 .const bgcol = 3 .const finescroll = 4 .const tmp = 5 .const sin = 10 // 8 .const cos = 20 .const xpos = 30 .const ypos = 40 .var music = LoadSid("Echoing.sid") .pc = $0801 :BasicUpstart(start) .pc = $0810 "program" start: lda #GRAY sta $d020 lda #BLUE sta $d021 lda #0 sta $3fff sta tmp lda #0 sta scr jsr music.init jsr sprinit ldx #0 clear: lda #$20 sta $0400,x sta $0500,x sta $0600,x sta $06e8,x lda #YELLOW sta $d800,x dex bne clear // lda #'x' // sta $0400 + 39 lda #'8' sta $0700 lda #$c7 sta $d016 sta finescroll jsr setirq main: lda #140 wait1: cmp $d012 bne wait1 clc adc #2 wait2: cmp $d012 bne wait2 dec $d020 jsr pixels dec $d020 // jsr music.play inc $d020 inc $d020 jmp main sprinit: ldx #7 ldy #14 !loop: lda #(sprite_0 / 64) sta $07f8,x txa ora #8 sta $d027,x lda #50 sta $d000,y sta $d001,y lda tmp clc adc #8 sta tmp // ***** sta sin,x adc #64 sta cos,x dey dey dex bpl !loop- lda #0 sta $d010 sta $d01c sta $d017 sta $d01d lda #$ff sta $d015 // sprite enable rts setirq: sei lda #irq1 sta $0315 lda #$7f sta $dc0d sta $dd0d and $d011 sta $d011 lda $dc0d lda $dd0d lda #1 sta $d01a lda #42 sta $d012 cli rts irq1: lsr $d019 lda #irq2 sta $0315 lda #58 sta $d012 inc $d020 lda finescroll sta $d016 jmp $ea81 irq2: lsr $d019 lda #irq3 sta $0315 lda #248 sta $d012 lda #$c0 sta $d016 dec $d020 // inc $3fff jsr movesprite jmp $ea81 irq3: lsr $d019 lda #irq4 sta $0315 lda #254 sta $d012 lda $d011 // ********** and #$f7 // ********** sta $d011 // ********** jmp $ea81 irq4: lsr $d019 lda #irq1 sta $0315 lda #42 sta $d012 lda #$18 // ********** sta $d011 //********* jmp $ea81 movesprite: ldx #7 !loop: lda sin,x inc sin,x inc sin,x inc sin,x tay lda sinus,y lsr ora #128 sta xpos,x lda cos,x inc cos,x tay lda sinus,y lsr ora #128 sta ypos,x dex bpl !loop- ldx #7 ldy #14 !loop2: lda xpos,x sta $d000,y lda ypos,x sta $d001,y dey dey dex bpl !loop2- rts pixels: lda finescroll and #7 sec sbc #1 bpl skip pha ldx #0 cpyloop: lda $0401,x sta $0400,x inx cpx #39 bne cpyloop repeat: ldx scr lda scrolltext,x bne common sta scr beq repeat common: sta $0400 + 39 inc scr pla skip: and #7 ora #$c0 sta finescroll ldx #39 dec bgcol lda bgcol and #15 sta bgcol tay !loop: lda bgcolors,y sta $d800,x dex bmi pixdone dey bpl !loop- ldy #15 bne !loop- // jmp !loop- pixdone: rts bgcolors: .byte DARK_GRAY,DARK_GRAY, GRAY, GRAY, LIGHT_GRAY,LIGHT_GRAY, YELLOW, YELLOW .byte WHITE, WHITE, YELLOW, YELLOW, LIGHT_GRAY, LIGHT_GRAY, GRAY, GRAY .print "Addr1: " + toHexString(*,4) .align 256 .print "Addr2: " + toHexString(*,4) scrolltext: .text "hej hopp alla som kodar c64 asm i karlholms sommarhack. " .text "vi tar gladeligen emot alla nerdar utom atarifolk och andra " .text "snoppeljonsar. kod av icepic / deadzone, musik av " .text "nicolai scheiby (the tea drinker) 2004" .text " " .byte 0 // sprite 0 / singlecolor / color: $06 .align 64 sprite_0: .byte $00,$7e,$00 .byte $01,$c1,$80,$03,$f0 .byte $40,$06,$5c,$20,$0c,$2e,$90,$08 .byte $1f,$40,$18,$0e,$a8,$10,$1f,$c0 .byte $18,$0f,$a8,$10,$1f,$d8,$18,$2f .byte $68,$15,$5a,$f8,$0a,$bf,$f0,$09 .byte $55,$70,$04,$a8,$e0,$02,$01,$40 .byte $01,$00,$80,$00,$42,$00,$00,$3c .byte $00,$00,$00,$00,$00,$00,$00,$06 .align 256 .print "Addr sin: " + toHexString(*,4) sinus: .fill 256, 127.5 + 127.5*sin(toRadians(i*360/256)) .print "end of code: $"+toHexString(*) *=music.location "Music" .fill music.size, music.getData(i) // *=$6000 "graphics" //.import binary "scr_wolves.data"