Post by Carl on Mar 13, 2013 18:48:05 GMT
: cdata < builds does > ;
2 base !
cdata udgs
00011100 c,
00111110 c,
01111111 c,
00100010 c,
00011100 c,
00001000 c,
00010100 c,
decimal
udgs vram 608 + 8 cmove
: xy@ ( x y -- addr )
25 * + vram + ;
: screenleft
cls
3 5 xy@ 5 swap ic!
3 6 xy@ 5 swap ic!
3 7 xy@ 5 swap ic!
3 8 xy@ 5 swap ic!
3 9 xy@ 5 swap ic!
3 10 xy@ 5 swap ic!
3 11 xy@ 5 swap ic!
3 12 xy@ 5 swap ic!
3 13 xy@ 5 swap ic!
3 14 xy@ 5 swap ic!
3 15 xy@ 5 swap ic!
3 16 xy@ 5 swap ic!
3 17 xy@ 5 swap ic!
3 18 xy@ 5 swap ic!
3 19 xy@ 5 swap ic!
13 20 xy@ 5 swap ic!
3 21 xy@ 5 swap ic!
3 22 xy@ 5 swap ic! ;
: screenright
13 5 xy@ 5 swap ic!
13 6 xy@ 5 swap ic!
13 7 xy@ 5 swap ic!
13 8 xy@ 5 swap ic!
13 9 xy@ 5 swap ic!
13 10 xy@ 5 swap ic!
13 11 xy@ 5 swap ic!
13 12 xy@ 5 swap ic!
13 13 xy@ 5 swap ic!
13 14 xy@ 5 swap ic!
13 15 xy@ 5 swap ic!
13 16 xy@ 5 swap ic!
13 17 xy@ 5 swap ic!
13 18 xy@ 5 swap ic!
13 19 xy@ 5 swap ic!
13 20 xy@ 5 swap ic!
13 21 xy@ 5 swap ic!
13 22 xy@ 5 swap ic!
;
: screenbottom
4 22 xy@ 5 swap ic!
5 22 xy@ 5 swap ic!
6 22 xy@ 5 swap ic!
7 22 xy@ 5 swap ic!
8 22 xy@ 5 swap ic!
9 22 xy@ 5 swap ic!
10 22 xy@ 5 swap ic!
11 22 xy@ 5 swap ic!
12 22 xy@ 5 swap ic!
;
: sidetext
15 2 at ." Solrac Gap"
17 4 at ." Round"
15 9 at ." Team Fig"
17 19 at ." Use"
17 20 at ." Left"
17 21 at ." Up &"
17 22 at ." Right"
;
555 var gap
:disgap
5 vram gap @ ic!
32 vram gap @ 1+ + ic!
32 vram gap @ 2+ + ic!
5 vram gap @ 3 + + ic! ;
: pause 0 15403 !
begin dup 15403 @ = inkey or until drop ;
: gaps inkey dup 8 = if screenbottom 553 gap ! disgap then
dup 11 = if screenbottom 555 gap ! disgap then
9 = if screenbottom 557 gap ! disgap then ;
0 var seed
: seedon
seed @ 75 u* 75 0
d+ over over u < - -
1 - dup seed ! ;
: rnd seedon u* swap drop ;
: rn 5 rnd 4 + ;
rn var bomb
0 var end
0 var loc
: coll vram bomb @ 25 + + ic@ loc !
loc @ 5 = if 1 end ! than ;
0 var level
: levelup
level @ 1 + level ! 19 6 at level @ . ;
20000 var ss
25 var nobomb
: disbomb 32 vram nobomb @ + ic!
1 vram bomb @ + ic!
bomb @ nobomb ! ;
: wait 0 do loop ;
: dropbomb
bomb @ 25 + bomb !
ss @ wait coll ;
: gobomb begin disbomb dropbomb
gaps bomb @ 559 > until rn bomb ! ;
:up ss @ 900 - ss ! ;
: go cls
screenleft
screenright
screenbottom
sidetext disgap ;
: rs cls at 0 12 ." OUCH!"
at 1 1 ." You rescued " level @ . ." Solracs"
at 5 1 ." run to go again"
20000 ss ! 0 end ! 32 loc ! quit ;
: ch go do i gobomb levelup up
do end @ 1 = if rsthen loop loop ;
: run 0 level ! 50 1 ch ;
2 base !
cdata udgs
00011100 c,
00111110 c,
01111111 c,
00100010 c,
00011100 c,
00001000 c,
00010100 c,
decimal
udgs vram 608 + 8 cmove
: xy@ ( x y -- addr )
25 * + vram + ;
: screenleft
cls
3 5 xy@ 5 swap ic!
3 6 xy@ 5 swap ic!
3 7 xy@ 5 swap ic!
3 8 xy@ 5 swap ic!
3 9 xy@ 5 swap ic!
3 10 xy@ 5 swap ic!
3 11 xy@ 5 swap ic!
3 12 xy@ 5 swap ic!
3 13 xy@ 5 swap ic!
3 14 xy@ 5 swap ic!
3 15 xy@ 5 swap ic!
3 16 xy@ 5 swap ic!
3 17 xy@ 5 swap ic!
3 18 xy@ 5 swap ic!
3 19 xy@ 5 swap ic!
13 20 xy@ 5 swap ic!
3 21 xy@ 5 swap ic!
3 22 xy@ 5 swap ic! ;
: screenright
13 5 xy@ 5 swap ic!
13 6 xy@ 5 swap ic!
13 7 xy@ 5 swap ic!
13 8 xy@ 5 swap ic!
13 9 xy@ 5 swap ic!
13 10 xy@ 5 swap ic!
13 11 xy@ 5 swap ic!
13 12 xy@ 5 swap ic!
13 13 xy@ 5 swap ic!
13 14 xy@ 5 swap ic!
13 15 xy@ 5 swap ic!
13 16 xy@ 5 swap ic!
13 17 xy@ 5 swap ic!
13 18 xy@ 5 swap ic!
13 19 xy@ 5 swap ic!
13 20 xy@ 5 swap ic!
13 21 xy@ 5 swap ic!
13 22 xy@ 5 swap ic!
;
: screenbottom
4 22 xy@ 5 swap ic!
5 22 xy@ 5 swap ic!
6 22 xy@ 5 swap ic!
7 22 xy@ 5 swap ic!
8 22 xy@ 5 swap ic!
9 22 xy@ 5 swap ic!
10 22 xy@ 5 swap ic!
11 22 xy@ 5 swap ic!
12 22 xy@ 5 swap ic!
;
: sidetext
15 2 at ." Solrac Gap"
17 4 at ." Round"
15 9 at ." Team Fig"
17 19 at ." Use"
17 20 at ." Left"
17 21 at ." Up &"
17 22 at ." Right"
;
555 var gap
:disgap
5 vram gap @ ic!
32 vram gap @ 1+ + ic!
32 vram gap @ 2+ + ic!
5 vram gap @ 3 + + ic! ;
: pause 0 15403 !
begin dup 15403 @ = inkey or until drop ;
: gaps inkey dup 8 = if screenbottom 553 gap ! disgap then
dup 11 = if screenbottom 555 gap ! disgap then
9 = if screenbottom 557 gap ! disgap then ;
0 var seed
: seedon
seed @ 75 u* 75 0
d+ over over u < - -
1 - dup seed ! ;
: rnd seedon u* swap drop ;
: rn 5 rnd 4 + ;
rn var bomb
0 var end
0 var loc
: coll vram bomb @ 25 + + ic@ loc !
loc @ 5 = if 1 end ! than ;
0 var level
: levelup
level @ 1 + level ! 19 6 at level @ . ;
20000 var ss
25 var nobomb
: disbomb 32 vram nobomb @ + ic!
1 vram bomb @ + ic!
bomb @ nobomb ! ;
: wait 0 do loop ;
: dropbomb
bomb @ 25 + bomb !
ss @ wait coll ;
: gobomb begin disbomb dropbomb
gaps bomb @ 559 > until rn bomb ! ;
:up ss @ 900 - ss ! ;
: go cls
screenleft
screenright
screenbottom
sidetext disgap ;
: rs cls at 0 12 ." OUCH!"
at 1 1 ." You rescued " level @ . ." Solracs"
at 5 1 ." run to go again"
20000 ss ! 0 end ! 32 loc ! quit ;
: ch go do i gobomb levelup up
do end @ 1 = if rsthen loop loop ;
: run 0 level ! 50 1 ch ;