Trevor Merritt e29ac45c84 scroll down works on CHIP-8 and High-Res modes
scroll left and right work in stdef and hidef
adds octo test roms
adds schip fonts to memory
2024-10-27 11:41:25 -04:00

383 lines
8.7 KiB
Plaintext

###########################################
#
# Snow Daze
#
# Clear all the snow off your driveway
# before you're late for work!
# Press ASWD to move around the driveway
# and press E to shovel snow behind you.
# Runs best at 100 cycles/frame.
#
# Created for the 2015 CCP Game Jam
# Theme: Winter
#
###########################################
:alias px va
:alias py vb
:alias dir vc
:alias frame vd
:alias timer v9
:alias timerx v8
:alias endflag v7
:const LEFT 45
:const RIGHT 0
:const TICK_TIME 8
:const SNOWFALL 8
: draw-image
v0 := 0
v1 := 0
v2 := 32
loop
sprite v0 v1 0
i += v2
v0 += 16
if v0 == 128 begin
v0 := 0
v1 += 16
end
if v1 != 64 then
again
;
: draw-player
i := person-r
i += dir
i += frame
sprite px py 15
;
: do-snow
i := snow
v3 := 0
loop
v1 := random 0b111111
v1 += 32
v2 := random 0b11111
v2 += 16
sprite v1 v2 15
v0 := 5 wait
v3 += 1
if v3 != SNOWFALL then
again
;
: do-scoop
frame := 15
draw-player
v0 := 5 gamewait
draw-player
frame := 30
draw-player
v0 := 5 gamewait
draw-player
frame := 0
v1 := py
i := snow
:macro scoop DELTA1 DELTA2 {
v0 := px
v0 += DELTA1
sprite v0 v1 15
if vf == 0 begin
sprite v0 v1 15
else
v0 += DELTA2
sprite v0 v1 15
if vf == 1 then sprite v0 v1 15
end
}
if dir == LEFT begin
scoop -8 16
else
scoop 8 -16
end
;
: move-player
vf := 5 if vf key begin
if py != 10 then py += -1
end
vf := 8 if vf key begin
if py != 0x31 then py += 1
end
vf := 7 if vf key begin
px += -1
dir := LEFT
end
vf := 9 if vf key begin
px += 1
dir := RIGHT
end
vf := 6 if vf key then do-scoop
;
: countdown
if timer == 0 begin
timer := TICK_TIME
vf := 4
i := timeslice
sprite timerx vf 3
timerx += -1
if timerx == 3 then endflag := 1
else
timer += -1
end
;
: gamewait
loop
sync
countdown
v0 += -1
if v0 != 0 then
again
;
: wait
loop
sync
v0 += -1
if v0 != 0 then
again
;
: game-over
draw-player
v0 := 20 wait
v1 := 32
v2 := 15
v3 := 0
i := block
loop
sprite v1 v2 0
if vf != 0 then v3 += 1
v0 := 5 wait
sprite v1 v2 0
v1 += 16
if v1 == 96 begin
v1 := 32
v2 += 16
end
if v2 != 63 then
again
i := bighex v3
v1 := 60
v2 := 14
sprite v1 v2 10
v0 := 20 wait
v0 := key
setup
;
: sync
loop
vf := delay
if vf != 0 then
again
vf := 2
delay := vf
;
: intro-num
i := bighex v0
v1 := 60
v2 := 14
sprite v1 v2 10
v0 := 10 wait
sprite v1 v2 10
;
: setup
clear
i := background
draw-image
timerx := 123
timer := 0
px := 64
py := 32
endflag := 0
draw-player
do-snow
v0 := 10 wait
v0 := 3 intro-num
v0 := 2 intro-num
v0 := 1 intro-num
;
: main
hires
setup
loop
draw-player
move-player
draw-player
countdown
if endflag == 1 then game-over
sync
again
: timeslice
0x80 0x80 0x80
: block
0x00 0x00 0x7F 0xFE 0x7F 0xFE 0x7F 0xFE
0x7F 0xFE 0x7F 0xFE 0x7F 0xFE 0x7F 0xFE
0x7F 0xFE 0x7F 0xFE 0x7F 0xFE 0x7F 0xFE
0x7F 0xFE 0x7F 0xFE 0x7F 0xFE 0x00 0x00
: snow
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x7E 0x7E 0x7E 0x00
: person-r
0x38 0x38 0x28 0x3C 0x78 0x70 0x78 0x78
0xF8 0xF8 0xFB 0x7F 0x4F 0x4B 0x6C
: scoop1-r
0x00 0x1C 0x1C 0x14 0x1E 0x7C 0xF8 0xF8
0xFC 0xFC 0xFC 0x7F 0x4F 0x4F 0x6F
: scoop2-r
0xC0 0xCE 0x4E 0x6A 0x7F 0xFE 0x78 0x7E
0x7C 0xF8 0xF8 0xF8 0x38 0x48 0x6C
: person-l
0x1C 0x1C 0x14 0x3C 0x1E 0x0E 0x1E 0x1E
0x1F 0x1F 0xDF 0xFE 0xF2 0xD2 0x36
: scoop1-l
0x00 0x38 0x38 0x28 0x78 0x3E 0x1F 0x1F
0x3F 0x3F 0x3F 0xFE 0xF2 0xF2 0xF6
: scoop2-l
0x03 0x73 0x72 0x56 0xFE 0x7F 0x1E 0x7E
0x3E 0x1F 0x1F 0x1F 0x1C 0x12 0x36
: background # (1024 bytes)
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xE0 0x00
0xEF 0xFF 0xEF 0xFF 0xEF 0xFF 0xE0 0x00
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFE 0xFF 0xFE 0xFF 0xFF 0x00 0x00
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 0x00
0xFF 0xFF 0xFF 0xFE 0xFF 0xFE 0xFF 0xFE
0xFF 0xFE 0xFF 0xFE 0xFF 0xFE 0xFF 0xFE
0x00 0x00 0x00 0x00 0xFF 0xFF 0x00 0x00
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 0x00
0xFF 0xFF 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0xFF 0xFF 0x00 0x00
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 0x00
0xFF 0xFF 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0xFF 0xFF 0x00 0x00
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 0x00
0xFF 0xFF 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0xFF 0xFF 0x00 0x00
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 0x00
0xFF 0xFF 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x7F 0xFF 0x7F 0xFF 0xFF 0xFF 0x00 0x00
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 0x00
0xFF 0xFF 0x7F 0xFF 0x7F 0xFF 0x7F 0xFF
0x7F 0xFF 0x7F 0xFF 0x7F 0xFF 0x7F 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 0x07
0xFF 0xF7 0xFF 0xF7 0xFF 0xF7 0x00 0x07
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFE 0xFF 0xFE 0xFF 0xFE 0xFF 0xFE
0xFF 0xFE 0xFF 0xFE 0xFF 0xFE 0xFF 0xFE
0xFF 0xFE 0xFF 0xFE 0xFF 0xFE 0xFF 0xFE
0xFF 0xFE 0xFF 0xFE 0xFF 0xFE 0xFF 0xFE
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x7F 0xFF 0x7F 0xFF 0x7F 0xFF 0x7F 0xFF
0x7F 0xFF 0x7F 0xFF 0x7F 0xFF 0x7F 0xFF
0x7F 0xFF 0x7F 0xFF 0x7F 0xFF 0x7F 0xFF
0x7F 0xFF 0x7F 0xFF 0x7F 0xFF 0x7F 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFE 0xFF 0xFE 0xFF 0xFE 0xFF 0xFE
0xFF 0xFE 0xFF 0xFE 0xFF 0xFE 0xFF 0xFE
0xFF 0xFE 0xFF 0xFE 0xFF 0xFE 0xFF 0xFE
0xFF 0xFE 0xFF 0xFE 0xFF 0xFC 0xFF 0xFE
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x7F 0xFF 0x7F 0xFF 0x7F 0xFF 0x7F 0xFF
0x7F 0xFF 0x7F 0xFF 0x7F 0xFF 0x7F 0xFF
0x7F 0xFF 0x7F 0xFF 0x7F 0xFF 0x7F 0xFF
0x7F 0xFF 0x7F 0xFF 0x7F 0xFF 0x7F 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFE
0xFF 0xFF 0xFF 0xFF 0xF8 0xFB 0x00 0x00
0xFF 0xFE 0xFF 0xFE 0xFF 0xFE 0xFF 0xFE
0xFF 0xFC 0xFF 0xFC 0xFF 0xEE 0xFF 0xFE
0xFF 0xFE 0xFF 0xFE 0xFF 0xFC 0xFF 0xF8
0xFF 0xB8 0xFF 0xF0 0x8F 0xC0 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x5F 0xFF 0x7F 0xFF 0x7F 0xFF 0x7F 0xFF
0x3F 0xFF 0x5F 0xFF 0x7F 0xFF 0x7F 0xFF
0x3F 0xFF 0x3E 0xFF 0x3F 0xFF 0x1F 0xFF
0x0F 0xDF 0x01 0xFF 0x00 0x3D 0x00 0x00
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x7F
0xFF 0xFF 0xFF 0xFF 0xFE 0x1F 0x00 0x00