Add Haunted Night Halloween demo

This commit is contained in:
Christian Johannesen 2026-10-23 15:10:23 +02:00
parent 74cb26bd58
commit 272484cbbc
5 changed files with 798 additions and 2 deletions

View file

@ -1,6 +1,6 @@
# C64 Program Collection # C64 Program Collection
Thirty-eight small, polished programs for the Commodore 64, written in stock Commodore BASIC V2 and 6502 machine code. The collection mixes arcade action, puzzles, simulations, mathematics, physics, creative tools, music, utilities, and visual effects. Every entry is self-contained and runs on an ordinary PAL or NTSC C64 without a cartridge or BASIC extension. Thirty-nine small, polished programs for the Commodore 64, written in stock Commodore BASIC V2 and 6502 machine code. The collection mixes arcade action, puzzles, simulations, mathematics, physics, creative tools, music, utilities, and visual effects. Every entry is self-contained and runs on an ordinary PAL or NTSC C64 without a cartridge or BASIC extension.
Browse and run the collection at [c64.p20.dev](https://c64.p20.dev). Browse and run the collection at [c64.p20.dev](https://c64.p20.dev).
@ -46,6 +46,7 @@ Browse and run the collection at [c64.p20.dev](https://c64.p20.dev).
| Pi Drop | 2026-10-22 | Mathematics | BASIC | Space, `Q` | Estimate pi by dropping random coordinates into a virtual unit circle. | [BAS](pi-drop/pi-drop.bas) | [Run](https://c64.p20.dev/program/pi-drop) | | Pi Drop | 2026-10-22 | Mathematics | BASIC | Space, `Q` | Estimate pi by dropping random coordinates into a virtual unit circle. | [BAS](pi-drop/pi-drop.bas) | [Run](https://c64.p20.dev/program/pi-drop) |
| Wave Composer | 2026-10-22 | Physics | BASIC | `A`, `Z`, `S`, `X`, Space, `Q` | Combine two sine waves and watch interference reshape the graph. | [BAS](wave-composer/wave-composer.bas) | [Run](https://c64.p20.dev/program/wave-composer) | | Wave Composer | 2026-10-22 | Physics | BASIC | `A`, `Z`, `S`, `X`, Space, `Q` | Combine two sine waves and watch interference reshape the graph. | [BAS](wave-composer/wave-composer.bas) | [Run](https://c64.p20.dev/program/wave-composer) |
| Orbit Lab | 2026-10-22 | Physics | BASIC | `1`-`3`, `T`, `R`, Space, `Q` | Explore how velocity and gravity shape a simple two-dimensional orbit. | [BAS](orbit-lab/orbit-lab.bas) | [Run](https://c64.p20.dev/program/orbit-lab) | | Orbit Lab | 2026-10-22 | Physics | BASIC | `1`-`3`, `T`, `R`, Space, `Q` | Explore how velocity and gravity shape a simple two-dimensional orbit. | [BAS](orbit-lab/orbit-lab.bas) | [Run](https://c64.p20.dev/program/orbit-lab) |
| Haunted Night | 2026-10-23 | Demo | Machine Code | `1`-`3`, `L`, `C`, `M`, Space, `Q` | Visit a moonlit haunted manor alive with ghosts, bats, lightning, and a sinister three-voice SID score. | [ASM](haunted-night/haunted-night.asm) | [Run](https://c64.p20.dev/program/haunted-night) |
## Running the programs ## Running the programs

View file

@ -0,0 +1,788 @@
!cpu 6510
; HAUNTED NIGHT
; Animated Halloween scene with sprites, lightning and a three-voice SID score.
; Self-starting BASIC line: 10 SYS4096
* = $0801
!word basic_end
!word 10
!byte $9e
!text "4096"
!byte 0
basic_end: !word 0
* = $1000
SCREEN = $0400
COLOR = $d800
GETIN = $ffe4
CHROUT = $ffd2
start:
jsr save_state
lda #0
sta $d020
sta $d021
jsr show_splash
jsr initialize_demo
main_loop:
jsr read_controls
lda quit_flag
beq wait_frame
jmp exit_demo
wait_frame:
lda $a2
cmp last_jiffy
beq main_loop
sta last_jiffy
lda paused
bne main_loop
lda music_muted
bne skip_music
jsr update_music
skip_music:
jsr update_lightning
inc frame_divider
lda frame_divider
cmp animation_speed
bcc main_loop
lda #0
sta frame_divider
jsr update_sprites
jmp main_loop
save_state:
lda $d020
sta old_border
lda $d021
sta old_background
lda $d011
sta old_d011
lda $d016
sta old_d016
lda $d018
sta old_d018
lda $d015
sta old_sprite_enable
lda $d010
sta old_sprite_msb
lda $d017
sta old_sprite_expand_y
lda $d01d
sta old_sprite_expand_x
lda $d01b
sta old_sprite_priority
lda $d01c
sta old_sprite_multicolor
ldx #0
save_sprite_registers:
lda $d000,x
sta old_sprite_positions,x
inx
cpx #16
bne save_sprite_registers
ldx #0
save_sprite_colors:
lda $d027,x
sta old_sprite_colors,x
inx
cpx #8
bne save_sprite_colors
ldx #0
save_sid:
lda $d400,x
sta old_sid,x
inx
cpx #25
bne save_sid
rts
initialize_demo:
lda #0
sta paused
sta music_muted
sta quit_flag
sta frame_divider
sta scene_phase
sta music_tick
sta music_step
sta flash_timer
sta palette_index
lda #2
sta animation_speed
lda $a2
sta last_jiffy
lda #0
sta $d020
lda #6
sta $d021
lda old_d011
and #$9f
ora #$10
sta $d011
lda old_d016
and #$e8
ora #8
sta $d016
lda old_d018
and #$f1
ora #$14
sta $d018
lda #147
jsr CHROUT
jsr draw_scene
jsr initialize_sprites
jsr initialize_sid
rts
draw_scene:
; Deep-blue sky and dark ground.
ldx #0
clear_screen:
lda #32
sta SCREEN,x
sta SCREEN+256,x
sta SCREEN+512,x
sta SCREEN+768,x
lda #14
sta COLOR,x
sta COLOR+256,x
sta COLOR+512,x
sta COLOR+768,x
inx
bne clear_screen
ldx #0
draw_stars:
lda star_lo,x
sta $fb
lda star_hi,x
sta $fc
ldy #0
lda star_chars,x
sta ($fb),y
lda star_color_lo,x
sta $fd
lda star_color_hi,x
sta $fe
lda #1
sta ($fd),y
inx
cpx #24
bne draw_stars
; Pale moon assembled from twelve solid character cells.
ldx #0
moon_loop:
lda moon_lo,x
sta $fb
lda moon_hi,x
sta $fc
lda moon_color_lo,x
sta $fd
lda moon_color_hi,x
sta $fe
ldy #0
lda #160
sta ($fb),y
lda #7
sta ($fd),y
inx
cpx #12
bne moon_loop
; Ground and mist.
ldx #0
ground_loop:
lda #160
sta SCREEN+760,x
sta SCREEN+800,x
sta SCREEN+840,x
sta SCREEN+880,x
sta SCREEN+920,x
sta SCREEN+960,x
lda #11
sta COLOR+760,x
sta COLOR+800,x
sta COLOR+840,x
sta COLOR+880,x
sta COLOR+920,x
sta COLOR+960,x
inx
cpx #40
bne ground_loop
; Haunted manor: stepped roof.
ldx #0
roof_top:
lda #160
sta SCREEN+408,x
lda #11
sta COLOR+408,x
inx
cpx #3
bne roof_top
ldx #0
roof_middle:
lda #160
sta SCREEN+446,x
lda #11
sta COLOR+446,x
inx
cpx #7
bne roof_middle
ldx #0
roof_bottom:
lda #160
sta SCREEN+484,x
lda #11
sta COLOR+484,x
inx
cpx #11
bne roof_bottom
; Six-row manor facade.
ldx #0
house_walls:
lda #160
sta SCREEN+524,x
sta SCREEN+564,x
sta SCREEN+604,x
sta SCREEN+644,x
sta SCREEN+684,x
sta SCREEN+724,x
lda #11
sta COLOR+524,x
sta COLOR+564,x
sta COLOR+604,x
sta COLOR+644,x
sta COLOR+684,x
sta COLOR+724,x
inx
cpx #11
bne house_walls
lda #160
sta SCREEN+566
sta SCREEN+571
sta SCREEN+646
sta SCREEN+651
lda #7
sta COLOR+566
sta COLOR+571
sta COLOR+646
sta COLOR+651
lda #32
sta SCREEN+648
sta SCREEN+649
sta SCREEN+688
sta SCREEN+689
sta SCREEN+728
sta SCREEN+729
; Gravestones in front of the manor.
ldx #0
grave_loop:
lda grave_lo,x
sta $fb
lda grave_hi,x
sta $fc
ldy #0
lda #102
sta ($fb),y
lda grave_color_lo,x
sta $fd
lda grave_color_hi,x
sta $fe
lda #12
sta ($fd),y
inx
cpx #8
bne grave_loop
rts
initialize_sprites:
lda #$e0
sta $07f8
lda #$e1
sta $07f9
sta $07fa
lda #7
sta $d015
lda #0
sta $d010
sta $d01c
sta $d01b
lda #1
sta $d017
sta $d01d
lda #1
sta $d027
lda #0
sta $d028
sta $d029
lda #104
sta $d000
lda #118
sta $d001
lda #28
sta $d002
lda #72
sta $d003
lda #206
sta $d004
lda #92
sta $d005
rts
initialize_sid:
ldx #0
clear_sid:
lda #0
sta $d400,x
inx
cpx #25
bne clear_sid
lda #$08
sta $d405
lda #$a8
sta $d406
lda #$04
sta $d40c
lda #$98
sta $d40d
lda #$03
sta $d413
lda #$78
sta $d414
lda #$21
sta $d404
lda #$41
sta $d40b
lda #$81
sta $d412
lda #$0f
sta $d418
rts
read_controls:
jsr GETIN
bne control_has_key
rts
control_has_key:
cmp #81
bne control_pause
lda #1
sta quit_flag
rts
control_pause:
cmp #32
bne control_mute
lda paused
eor #1
sta paused
bne pause_sound
lda music_muted
bne controls_done
lda #$0f
sta $d418
rts
pause_sound:
lda #0
sta $d418
rts
control_mute:
cmp #77
bne control_lightning
lda music_muted
eor #1
sta music_muted
bne mute_sid
lda paused
bne controls_done
lda #$0f
sta $d418
rts
mute_sid:
lda #0
sta $d418
rts
control_lightning:
cmp #76
bne control_color
jsr trigger_lightning
rts
control_color:
cmp #67
bne control_speed_one
inc palette_index
lda palette_index
and #3
sta palette_index
tax
lda sky_colors,x
sta $d021
rts
control_speed_one:
cmp #49
bne control_speed_two
lda #4
sta animation_speed
rts
control_speed_two:
cmp #50
bne control_speed_three
lda #2
sta animation_speed
rts
control_speed_three:
cmp #51
bne controls_done
lda #1
sta animation_speed
controls_done:
rts
update_sprites:
inc scene_phase
lda scene_phase
and #63
tax
lda ghost_wave,x
clc
adc #92
sta $d000
txa
and #31
tax
lda bob_wave,x
clc
adc #112
sta $d001
lda $d002
clc
adc #2
cmp #246
bcc store_bat_one_x
lda #18
store_bat_one_x:
sta $d002
lda scene_phase
and #31
tax
lda bat_wave,x
clc
adc #58
sta $d003
lda $d004
sec
sbc #3
cmp #12
bcs store_bat_two_x
lda #238
store_bat_two_x:
sta $d004
lda scene_phase
clc
adc #13
and #31
tax
lda bat_wave,x
clc
adc #78
sta $d005
lda scene_phase
and #$7f
cmp #$65
bne sprite_done
jsr trigger_lightning
sprite_done:
rts
update_lightning:
lda flash_timer
beq lightning_done
dec flash_timer
lda flash_timer
beq restore_sky
and #1
beq bright_flash
lda #15
sta $d021
rts
bright_flash:
lda #1
sta $d021
rts
restore_sky:
ldx palette_index
lda sky_colors,x
sta $d021
lightning_done:
rts
trigger_lightning:
lda #6
sta flash_timer
lda music_muted
bne no_thunder
lda #$90
sta $d40e
lda #$05
sta $d40f
lda #$81
sta $d412
no_thunder:
rts
update_music:
inc music_tick
lda music_tick
cmp #6
bcc music_done
lda #0
sta music_tick
ldx music_step
lda melody_lo,x
sta $d400
lda melody_hi,x
sta $d401
txa
and #3
bne keep_bass
txa
lsr
lsr
tay
lda bass_lo,y
sta $d407
lda bass_hi,y
sta $d408
keep_bass:
txa
and #3
bne close_drum
lda #$35
sta $d40e
lda #$02
sta $d40f
lda #$81
sta $d412
bne advance_music
close_drum:
lda #$80
sta $d412
advance_music:
inc music_step
lda music_step
and #15
sta music_step
music_done:
rts
show_splash:
lda #147
jsr CHROUT
lda #<splash_text
sta $fb
lda #>splash_text
sta $fc
ldy #0
print_splash:
lda ($fb),y
beq wait_for_space
jsr CHROUT
iny
bne print_splash
inc $fc
jmp print_splash
wait_for_space:
jsr GETIN
cmp #32
bne wait_for_space
rts
exit_demo:
lda #0
sta $d418
ldx #0
restore_sid:
lda old_sid,x
sta $d400,x
inx
cpx #25
bne restore_sid
lda old_sprite_enable
sta $d015
lda old_sprite_msb
sta $d010
lda old_sprite_expand_y
sta $d017
lda old_sprite_expand_x
sta $d01d
lda old_sprite_priority
sta $d01b
lda old_sprite_multicolor
sta $d01c
ldx #0
restore_sprite_registers:
lda old_sprite_positions,x
sta $d000,x
inx
cpx #16
bne restore_sprite_registers
ldx #0
restore_sprite_colors:
lda old_sprite_colors,x
sta $d027,x
inx
cpx #8
bne restore_sprite_colors
lda old_d011
sta $d011
lda old_d016
sta $d016
lda old_d018
sta $d018
lda old_border
sta $d020
lda old_background
sta $d021
lda #147
jsr CHROUT
rts
splash_text:
!byte 13,13,13,154
!text " HAUNTED NIGHT"
!byte 13,13,5
!text " A MOONLIT MANOR AWAKENS AFTER DARK"
!byte 13,13,13,153
!text " CONTROLS"
!byte 13,13,158
!text " 1-3"
!byte 5
!text " SPEED "
!byte 158
!text "L"
!byte 5
!text " LIGHTNING "
!byte 158
!text "C"
!byte 5
!text " COLOR"
!byte 13,158
!text " SPACE"
!byte 5
!text " PAUSE "
!byte 158
!text "M"
!byte 5
!text " MUSIC "
!byte 158
!text "Q"
!byte 5
!text " QUIT"
!byte 13,13,13,5
!text " HTTPS://C64.P20.DEV"
!byte 13,13,152
!text " RELEASED 23 OCTOBER 2026"
!byte 13,13,13,158
!text " PRESS SPACE TO START"
!byte 0
sky_colors: !byte 6,11,2,0
; Minor-key melody and bass frequencies.
melody_lo: !byte $18,$8f,$18,$b1,$18,$8f,$56,$8f,$18,$8f,$18,$b1,$56,$3c,$56,$8f
melody_hi: !byte $11,$12,$11,$15,$11,$12,$16,$12,$11,$12,$11,$15,$16,$14,$16,$12
bass_lo: !byte $0c,$4c,$2b,$9e
bass_hi: !byte $08,$09,$0b,$0a
bob_wave:
!byte 6,5,4,3,2,1,0,0,0,0,1,2,3,4,5,6
!byte 7,8,9,10,11,12,12,12,12,12,11,10,9,8,7,6
bat_wave:
!byte 4,3,2,1,0,0,1,2,4,6,8,10,12,13,14,15
!byte 16,15,14,13,12,10,8,6,4,2,1,0,0,1,2,3
ghost_wave:
!byte 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
!byte 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
!byte 32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17
!byte 16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1
; Scattered star addresses and glyphs.
star_lo:
!byte <(SCREEN+43),<(SCREEN+70),<(SCREEN+96),<(SCREEN+124),<(SCREEN+151),<(SCREEN+178)
!byte <(SCREEN+206),<(SCREEN+234),<(SCREEN+263),<(SCREEN+291),<(SCREEN+318),<(SCREEN+347)
!byte <(SCREEN+375),<(SCREEN+22),<(SCREEN+112),<(SCREEN+188),<(SCREEN+245),<(SCREEN+329)
!byte <(SCREEN+53),<(SCREEN+137),<(SCREEN+219),<(SCREEN+302),<(SCREEN+361),<(SCREEN+394)
star_hi:
!byte >(SCREEN+43),>(SCREEN+70),>(SCREEN+96),>(SCREEN+124),>(SCREEN+151),>(SCREEN+178)
!byte >(SCREEN+206),>(SCREEN+234),>(SCREEN+263),>(SCREEN+291),>(SCREEN+318),>(SCREEN+347)
!byte >(SCREEN+375),>(SCREEN+22),>(SCREEN+112),>(SCREEN+188),>(SCREEN+245),>(SCREEN+329)
!byte >(SCREEN+53),>(SCREEN+137),>(SCREEN+219),>(SCREEN+302),>(SCREEN+361),>(SCREEN+394)
star_color_lo:
!byte <(COLOR+43),<(COLOR+70),<(COLOR+96),<(COLOR+124),<(COLOR+151),<(COLOR+178)
!byte <(COLOR+206),<(COLOR+234),<(COLOR+263),<(COLOR+291),<(COLOR+318),<(COLOR+347)
!byte <(COLOR+375),<(COLOR+22),<(COLOR+112),<(COLOR+188),<(COLOR+245),<(COLOR+329)
!byte <(COLOR+53),<(COLOR+137),<(COLOR+219),<(COLOR+302),<(COLOR+361),<(COLOR+394)
star_color_hi:
!byte >(COLOR+43),>(COLOR+70),>(COLOR+96),>(COLOR+124),>(COLOR+151),>(COLOR+178)
!byte >(COLOR+206),>(COLOR+234),>(COLOR+263),>(COLOR+291),>(COLOR+318),>(COLOR+347)
!byte >(COLOR+375),>(COLOR+22),>(COLOR+112),>(COLOR+188),>(COLOR+245),>(COLOR+329)
!byte >(COLOR+53),>(COLOR+137),>(COLOR+219),>(COLOR+302),>(COLOR+361),>(COLOR+394)
star_chars: !byte 46,42,46,46,42,46,42,46,46,42,46,42,46,42,46,42,46,42,46,46,42,46,42,46
moon_lo: !byte <(SCREEN+111),<(SCREEN+112),<(SCREEN+150),<(SCREEN+151),<(SCREEN+152),<(SCREEN+153),<(SCREEN+190),<(SCREEN+191),<(SCREEN+192),<(SCREEN+193),<(SCREEN+231),<(SCREEN+232)
moon_hi: !byte >(SCREEN+111),>(SCREEN+112),>(SCREEN+150),>(SCREEN+151),>(SCREEN+152),>(SCREEN+153),>(SCREEN+190),>(SCREEN+191),>(SCREEN+192),>(SCREEN+193),>(SCREEN+231),>(SCREEN+232)
moon_color_lo: !byte <(COLOR+111),<(COLOR+112),<(COLOR+150),<(COLOR+151),<(COLOR+152),<(COLOR+153),<(COLOR+190),<(COLOR+191),<(COLOR+192),<(COLOR+193),<(COLOR+231),<(COLOR+232)
moon_color_hi: !byte >(COLOR+111),>(COLOR+112),>(COLOR+150),>(COLOR+151),>(COLOR+152),>(COLOR+153),>(COLOR+190),>(COLOR+191),>(COLOR+192),>(COLOR+193),>(COLOR+231),>(COLOR+232)
; Eight tombstone cells.
grave_lo: !byte <(SCREEN+704),<(SCREEN+710),<(SCREEN+717),<(SCREEN+723),<(SCREEN+730),<(SCREEN+735),<(SCREEN+748),<(SCREEN+753)
grave_hi: !byte >(SCREEN+704),>(SCREEN+710),>(SCREEN+717),>(SCREEN+723),>(SCREEN+730),>(SCREEN+735),>(SCREEN+748),>(SCREEN+753)
grave_color_lo: !byte <(COLOR+704),<(COLOR+710),<(COLOR+717),<(COLOR+723),<(COLOR+730),<(COLOR+735),<(COLOR+748),<(COLOR+753)
grave_color_hi: !byte >(COLOR+704),>(COLOR+710),>(COLOR+717),>(COLOR+723),>(COLOR+730),>(COLOR+735),>(COLOR+748),>(COLOR+753)
; Runtime state.
old_border: !byte 0
old_background: !byte 0
old_d011: !byte 0
old_d016: !byte 0
old_d018: !byte 0
old_sprite_enable: !byte 0
old_sprite_msb: !byte 0
old_sprite_expand_y: !byte 0
old_sprite_expand_x: !byte 0
old_sprite_priority: !byte 0
old_sprite_multicolor: !byte 0
old_sprite_positions: !fill 16,0
old_sprite_colors: !fill 8,0
old_sid: !fill 25,0
paused: !byte 0
music_muted: !byte 0
quit_flag: !byte 0
frame_divider: !byte 0
animation_speed: !byte 0
scene_phase: !byte 0
music_tick: !byte 0
music_step: !byte 0
flash_timer: !byte 0
palette_index: !byte 0
last_jiffy: !byte 0
; Sprite data at pointers $e0 and $e1 in VIC bank zero.
* = $3800
ghost_sprite:
!byte $00,$18,$00,$00,$3c,$00,$00,$7e,$00,$00,$ff,$00,$01,$ff,$80,$03,$ff,$c0
!byte $03,$bd,$c0,$07,$ff,$e0,$07,$ff,$e0,$07,$db,$e0,$07,$ff,$e0,$07,$ff,$e0
!byte $07,$ff,$e0,$07,$ff,$e0,$07,$ff,$e0,$07,$ff,$e0,$07,$ff,$e0,$06,$db,$60
!byte $04,$92,$20,$00,$00,$00,$00,$00,$00,$00,$00,$00,0
bat_sprite:
!byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$40,$00,$02,$e0,$00,$07,$f8,$18,$1f
!byte $7c,$3c,$3e,$3f,$7e,$fc,$1f,$ff,$f8,$0f,$ff,$f0,$07,$ff,$e0,$03,$ff,$c0
!byte $01,$ff,$80,$00,$ff,$00,$00,$7e,$00,$00,$3c,$00,$00,$18,$00,$00,$00,$00
!byte $00,$00,$00,$00,$00,$00,$00,$00,$00,0

Binary file not shown.

View file

@ -226,5 +226,11 @@
"description": "Explore how velocity and gravity shape a simple two-dimensional orbit.", "description": "Explore how velocity and gravity shape a simple two-dimensional orbit.",
"controls": [{"keys":["1","2","3"],"description":"Select gravity strength"},{"keys":["T"],"description":"Toggle the orbit trail"},{"keys":["R"],"description":"Reset the orbit"},{"keys":["SPACE"],"description":"Pause or resume"},{"keys":["Q"],"description":"Quit"}], "controls": [{"keys":["1","2","3"],"description":"Select gravity strength"},{"keys":["T"],"description":"Toggle the orbit trail"},{"keys":["R"],"description":"Reset the orbit"},{"keys":["SPACE"],"description":"Pause or resume"},{"keys":["Q"],"description":"Quit"}],
"path": "orbit-lab/orbit-lab.prg", "source": "orbit-lab/orbit-lab.bas" "path": "orbit-lab/orbit-lab.prg", "source": "orbit-lab/orbit-lab.bas"
},
{
"title": "Haunted Night", "category": "Demo", "language": "machine-code", "releaseDate": "2026-10-23",
"description": "Visit a moonlit haunted manor alive with ghosts, bats, lightning, and a sinister three-voice SID score.",
"controls": [{"keys":["1","2","3"],"description":"Select slow, medium, or fast animation"},{"keys":["L"],"description":"Summon lightning and thunder"},{"keys":["C"],"description":"Change the night palette"},{"keys":["M"],"description":"Mute or restore the SID score"},{"keys":["SPACE"],"description":"Pause or resume the demo"},{"keys":["Q"],"description":"Return to BASIC"}],
"path": "haunted-night/haunted-night.prg", "source": "haunted-night/haunted-night.asm"
} }
] ]

View file

@ -14,7 +14,8 @@ for source in \
fifteen-puzzle/fifteen-puzzle.asm \ fifteen-puzzle/fifteen-puzzle.asm \
plasma-grid/plasma-grid.asm \ plasma-grid/plasma-grid.asm \
neon-rift/neon-rift.asm \ neon-rift/neon-rift.asm \
infinite-road/infinite-road.asm infinite-road/infinite-road.asm \
haunted-night/haunted-night.asm
do do
output="${source%.asm}.prg" output="${source%.asm}.prg"
echo "Assembling $source -> $output" echo "Assembling $source -> $output"