Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // **********************************************************
- //
- // HALLOWEEN 2023 - FOR C64 v. 1.3
- // REWRITTEN IN ASSEMBLY BY KIMONO (FELICE NARDELLA)
- // FOR KICK ASSEMBLER
- // GRAPHICS BY KIMONO (FELICE NARDELLA)
- // SID: "MIDSOMER WALTZ" BY MANGANOID (ZACK MAXIS)
- //
- // Use "java -jar kickass.jar halloween_2023.asm" to compile
- //
- // **********************************************************
- *=$0801
- .byte $0E, $08, $0A, $00, $9E, $20, $28, $34, $39, $31, $35, $32, $29, $00, $00, $00
- * = $c000
- .const indspr = $3200
- jsr music
- // background
- lda screen_001
- sta $d020
- lda screen_001+1
- sta $d021
- lda #$15
- sta $d018
- ldx #$00
- loop:
- lda screen_001+2,x
- sta $0400,x
- lda screen_001+$3ea,x
- sta $d800,x
- lda screen_001+$102,x
- sta $0500,x
- lda screen_001+$4ea,x
- sta $d900,x
- lda screen_001+$202,x
- sta $0600,x
- lda screen_001+$5ea,x
- sta $da00,x
- lda screen_001+$2ea,x
- sta $06e8,x
- lda screen_001+$6d2,x
- sta $dae8,x
- inx
- bne loop
- // sprites
- ldx #$00
- lp1:
- lda spr_zombie_1,x
- sta indspr,x
- inx
- cpx #$40
- bne lp1
- ldx #$00
- lp2:
- lda spr_ghost,x
- sta indspr+$40,x
- inx
- cpx #$40
- bne lp2
- ldx #$00
- lp3:
- lda spr_zombie_2,x
- sta indspr+$80,x
- inx
- cpx #$40
- bne lp3
- // pointers
- lda #$c8
- sta $7f8
- lda #$c9
- sta $7f9
- // sprites multicolor
- lda #$01
- sta $d01c
- // multicolor 1 & 2
- lda #$08
- sta $d025
- lda #$05
- sta $d026
- // colors
- lda #$0b
- sta $d027
- lda #$01
- sta $d028
- // set sprites
- lda #$03
- sta $d015
- // y pos sprite 1
- lda #$91
- sta $d001
- // y pos sprite 2
- lda #$5a
- sta $d003
- // width
- lda #$02
- sta $d01d
- // height
- lda #$03
- sta $d017
- // move sprites loop
- su:
- ldx #$00
- ls1:
- jsr wait_frame
- jsr wait_frame
- jsr wait_frame
- jsr wait_frame
- jsr wait_frame
- jsr wait_frame
- lda pointers,x
- sta $7f8
- lda x_sprite1,x
- sta $d000
- lda x_sprite2,x
- sta $d002
- inx
- cpx #$09
- bne ls1
- ls2:
- jsr wait_frame
- jsr wait_frame
- jsr wait_frame
- jsr wait_frame
- jsr wait_frame
- jsr wait_frame
- lda pointers,x
- sta $7f8
- lda x_sprite1,x
- sta $d000
- lda x_sprite2,x
- sta $d002
- dex
- bpl ls2
- jmp su
- wait_frame:
- ldy $d012
- cpy #$fa
- bne wait_frame
- rts
- music:
- sei
- lda #<irq
- ldx #>irq
- sta $314
- stx $315
- lda #$1b
- ldx #$00
- ldy #$7f
- sta $d011
- stx $d012
- sty $dc0d
- sty $dd0d
- bit $dc0d
- bit $dd0d
- lda #$01
- sta $d01a
- lda #$00
- jsr $1000 // Initialize music
- cli
- rts
- irq:
- lsr $d019
- jsr $1003 // Play the music
- jmp $ea31
- * = $1000
- .import binary "MidsomerFINAL3_NO_HEADER.sid"
- // PETSCII memory layout (40x25 screen)
- // byte 0 = border color
- // byte 1 = background color
- // bytes 2-1001 = screencodes
- // bytes 1002-2001 = colors
- screen_001:
- .byte 0,0
- .byte $20,$20,$20,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$2E,$20,$20,$20,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$20,$20,$20,$20,$2E,$20,$20,$6F,$20,$20,$20,$20,$20,$20,$2E,$20,$20
- .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$20,$20,$20,$FE,$A0,$FC,$20,$2E,$20,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$20,$2E,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$67,$A0,$A0,$A0,$74,$20,$20,$20,$20,$20,$20,$20
- .byte $20,$20,$2E,$20,$20,$20,$20,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$20,$FB,$A0,$EC,$20,$20,$20,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$20,$20,$20,$20,$20,$20,$77,$20,$20,$20,$20,$2E,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$2E,$20,$2E,$20,$20,$20,$2E,$20,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$20,$20,$20,$20,$20,$20
- .byte $20,$2E,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$2E,$20
- .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$20
- .byte $20,$20,$20,$20,$20,$2E,$20,$20,$2E,$20,$6F,$6F,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$2E,$20,$20,$20,$20,$20,$20,$20,$20,$2E
- .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$7A,$A0,$A0,$4C,$20,$20,$20,$20,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20
- .byte $20,$2E,$20,$20,$20,$20,$20,$20,$6A,$A0,$FA,$CC,$A0,$65,$20,$20,$2E,$20,$20,$20,$20,$20,$20,$20,$6F,$20,$20,$20,$20,$20,$20,$20,$2E,$20,$20,$20,$6F,$6F,$6F,$20
- .byte $20,$20,$20,$20,$2E,$20,$20,$20,$6A,$A0,$D0,$CF,$A0,$65,$20,$20,$20,$20,$2E,$20,$20,$20,$20,$7A,$A0,$4C,$20,$20,$20,$2E,$20,$20,$20,$20,$20,$67,$A0,$A0,$A0,$74
- .byte $20,$20,$68,$20,$20,$20,$68,$20,$6A,$A0,$EA,$F4,$A0,$65,$20,$20,$20,$20,$20,$20,$20,$20,$67,$A0,$D1,$A0,$74,$20,$20,$20,$20,$68,$20,$20,$20,$67,$A0,$DB,$A0,$74
- .byte $A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$6A,$A0,$E8,$E8,$A0,$65,$A0,$E8,$A0,$A0,$A0,$A0,$A0,$A0,$67,$A0,$E8,$A0,$74,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$67,$A0,$DD,$A0,$74
- .byte $6F,$7C,$A0,$A0,$E8,$A0,$A0,$A0,$6A,$A0,$A0,$A0,$A0,$65,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$7B,$E2,$E2,$E2,$6C,$A0,$A0,$A0,$AE,$A0,$A0,$A0,$4F,$FF,$A0,$A0,$A0,$7F
- .byte $A0,$65,$A0,$A0,$A0,$A0,$A0,$A0,$F8,$F8,$F8,$F8,$F8,$F8,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$E8,$A0,$A0,$A0,$A0,$E8,$A0,$A0,$A0,$E7,$F8,$F4,$7C,$E2,$E2,$E2,$E2,$E2
- .byte $A0,$65,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$E8,$E8,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$EF,$FA,$A0,$CC,$EF,$A0,$A0,$A0,$A0,$8B
- .byte $A0,$65,$A0,$E8,$A0,$A0,$A0,$A0,$A0,$20,$6F,$6F,$6F,$20,$A0,$A0,$A0,$A0,$A0,$E8,$A0,$A0,$A0,$AE,$A0,$A0,$A0,$A0,$A0,$A0,$E1,$A0,$A0,$A0,$61,$A0,$A0,$A0,$A0,$89
- .byte $A0,$65,$A0,$A0,$A0,$DC,$A0,$A0,$20,$7A,$A0,$A0,$A0,$4C,$20,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$E8,$A0,$A0,$A0,$F7,$D0,$A0,$CF,$F7,$A0,$A0,$A0,$A0,$8D
- .byte $F8,$F8,$A0,$A0,$A0,$A0,$A0,$A0,$67,$A0,$92,$89,$90,$A0,$74,$A0,$A0,$A0,$A0,$A0,$A0,$7E,$6F,$6F,$6F,$7C,$A0,$A0,$A0,$A0,$A0,$E7,$A0,$F4,$A0,$A0,$A0,$E8,$A0,$8F
- .byte $A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$67,$A0,$E8,$A0,$E8,$A0,$74,$A0,$E8,$A0,$A0,$E8,$A0,$67,$A0,$E8,$A0,$74,$A0,$A0,$A0,$7E,$6F,$6F,$A0,$6F,$6F,$7C,$A0,$A0,$A0,$8E
- .byte $A0,$E8,$E8,$A0,$A0,$A0,$A0,$A0,$67,$A0,$E8,$E8,$E8,$A0,$74,$A0,$A0,$A0,$A0,$A0,$A0,$67,$A0,$A0,$A0,$74,$A0,$E8,$A0,$6C,$C0,$C0,$C0,$C0,$C0,$7B,$A0,$A0,$A0,$8F
- .byte $0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$0E
- .byte $0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E
- .byte $0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$07,$07,$07,$0F,$07,$0E,$0E,$0E,$0E,$0E,$0E
- .byte $0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$07,$07,$07,$07,$07,$0E,$0E,$0E,$0E,$0E,$0E,$0E
- .byte $0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$07,$07,$07,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E
- .byte $0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E
- .byte $0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E
- .byte $0E,$0E,$0E,$0E,$07,$0E,$07,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E
- .byte $0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$07,$0E
- .byte $0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E
- .byte $0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E
- .byte $0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$07,$0E,$0F,$0F,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$07
- .byte $0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0F,$0B,$0B,$0F,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$07,$0B,$0F,$0F,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E,$0E
- .byte $0E,$07,$0E,$0E,$0E,$0E,$0E,$0E,$0F,$0B,$0B,$0B,$0B,$0F,$0E,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0F,$0F,$0F,$0F,$0F,$0E,$0E,$07,$0E,$0E,$07,$0E,$0E,$0E,$0F,$0F,$0F,$0E
- .byte $0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0F,$0B,$0B,$0B,$0B,$0F,$0E,$0E,$0E,$0E,$07,$0E,$0E,$0E,$0F,$0F,$0B,$0F,$0F,$0F,$0E,$07,$0E,$0E,$0E,$0E,$0E,$0F,$0C,$0C,$0C,$0F
- .byte $0E,$0E,$0D,$0D,$0D,$0D,$0D,$0E,$0F,$0B,$0B,$0B,$0B,$0F,$0E,$0E,$0D,$0D,$0D,$0D,$0D,$0D,$0F,$0B,$0B,$0B,$0F,$0E,$0E,$0E,$0D,$0D,$0D,$0D,$0D,$0F,$0C,$0C,$0C,$0F
- .byte $0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0F,$0B,$0B,$0B,$0B,$0F,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0F,$0B,$0B,$0B,$0F,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0F,$0C,$0C,$0C,$0F
- .byte $0F,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0F,$0B,$0B,$0B,$0B,$0F,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0B,$0B,$0B,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0F,$0C,$0C,$0C,$0F
- .byte $0B,$0F,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0C,$0D,$0C,$0C,$0C,$0C,$0C,$0C
- .byte $0B,$0F,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0C,$0D,$0D,$0D,$0D,$0D,$0D,$0D
- .byte $0B,$0F,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0E,$0F,$0F,$0F,$0E,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0C,$0C,$0C,$0C,$0C,$0D,$0D,$0D,$0D,$0D
- .byte $0B,$0F,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0F,$0B,$0B,$0B,$0F,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0C,$0D,$0D,$0D,$0D,$0D,$0D,$0D
- .byte $0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0F,$0B,$0B,$0B,$0B,$0B,$0F,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0F,$0F,$0F,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0C,$0D,$0D,$0D,$0D,$0D,$0D,$0D
- .byte $0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0F,$0B,$0B,$0B,$0B,$0B,$0F,$0D,$0D,$0D,$0D,$0D,$0D,$0F,$0C,$0C,$0C,$0F,$0D,$0D,$0D,$0D,$0F,$0F,$0C,$0F,$0F,$0D,$0D,$0D,$0D,$0D
- .byte $0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D,$0F,$0B,$0B,$0B,$0B,$0B,$0F,$0D,$0D,$0D,$0D,$0D,$0D,$0F,$0C,$0C,$0C,$0F,$0D,$0D,$0D,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0D,$0D,$0D,$0D
- spr_ghost:
- .byte $00,$00,$00,$00,$38,$00,$00,$7c
- .byte $00,$00,$fe,$10,$10,$d6,$30,$18
- .byte $fe,$70,$1c,$c7,$f0,$1f,$ef,$f0
- .byte $1f,$ff,$e0,$0f,$ff,$c0,$03,$ff
- .byte $00,$03,$fe,$00,$03,$fe,$00,$01
- .byte $fe,$00,$01,$fe,$00,$01,$fe,$00
- .byte $01,$fe,$00,$01,$fc,$00,$03,$f8
- .byte $00,$1f,$f0,$00,$00,$00,$00,$01
- spr_zombie_1:
- .byte $00,$aa,$00,$02,$ff,$80,$03,$be
- .byte $c0,$0b,$3c,$e0,$03,$ff,$c0,$00
- .byte $c3,$00,$00,$ff,$00,$00,$3c,$00
- .byte $0a,$aa,$a0,$05,$96,$50,$05,$aa
- .byte $50,$05,$96,$50,$05,$aa,$50,$05
- .byte $96,$50,$0f,$aa,$f0,$0f,$aa,$f0
- .byte $02,$aa,$80,$02,$82,$80,$03,$c3
- .byte $c0,$03,$c1,$50,$05,$40,$00,$8c
- spr_zombie_2:
- .byte $00,$aa,$00,$02,$ff,$80,$03,$be
- .byte $c0,$0b,$3c,$e0,$03,$ff,$c0,$00
- .byte $c3,$00,$00,$ff,$00,$00,$3c,$00
- .byte $0a,$aa,$a0,$05,$96,$50,$05,$aa
- .byte $50,$05,$96,$50,$05,$aa,$50,$05
- .byte $96,$50,$0f,$aa,$f0,$0f,$aa,$f0
- .byte $02,$aa,$80,$02,$82,$80,$03,$c3
- .byte $c0,$05,$43,$c0,$00,$01,$50,$8c
- // Predetermined x coord sprites
- x_sprite1:
- .byte $f1,$f2,$f3,$f4,$f5,$f6,$f7,$f8,$f9,$fa
- x_sprite2:
- .byte $5a,$59,$58,$57,$56,$55,$54,$53,$52,$51
- pointers:
- .byte $c8,$ca,$c8,$ca,$c8,$ca,$c8,$ca,$c8,$ca
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement