A downloadable game

Super Zombie Apocalypse Simulator - a 10 line game for 64k Atari 800xl

Written by Craig Miller aka PREPPIE aka @Retro_Homebrew


Category: PUR-120

Language: Turbo BASIC


STORY:

You play a survivor in the zombie apocalypse.  CDCs from around the world have been working on an anti-virus, and they have air dropped their parts to a safe location.  Your job is to combine the individual work of the CDCs into a final compound and disperse it into the atmosphere to end the zombie plague.  Unfortunately a number of zombies have broke into the safe zone, so you must avoid these while doing your vital work.

You have already been though one simulator but scientists have gathered more intel and have made the simulator more accurate.  Zombies are more intelligent than first thought, this means they are less likely to get stuck behind obstacles.  They are also more aggressively drawn to loud noises than previously believed.  Unfortunately for you, pushing crates around is noisy.   What's worse is that when crates are combined they not only get heavier and harder to push, but they make more noise when pushed.  So be extra careful when moving the heavier crates.

It is, at present, unknown which of our six dropzones we will be able to use.  Therefore, you will be tested in each of the zones - assuming you're able to survive that long.

Hurry, people are dying every second around the world and only you can save them.


GAMEPLAY

You control the player that starts at the top of the screen.  Use the joystick to walk around and push the crates.  When you push two identical crates together they will combine into a new crate.  Once all crates have been combined into the final anti-virus, give it one more push to disperse it into the atmosphere.

Don't worry about a crate getting stuck on the wall, keeping push and you'll flip it around.  What you need to worry about are those zombies, avoid them or block their path with a crate, because a single touch means death.

Each of the six zones you complete will add to your score.  If you die or complete all six zones then hold down the fire button to restart your mission and go for a better score.


***** 10 line listing *****

0DIMZ(9),R(9),w(9):m.57344,24576,1024:do:r.******* CHARSET&COLOR DATA, THIS FILE CAN'T SHOW ATASCII CHARACTERS ********
1Q=48032:M.14455,24576,72:W=1:H=0:REP.:X=Q+99:Z=3999:GR.28:POS.16,0:?#6;"ZONE ";W:M.14527,708,4:POKEQ-29,66:POKE756,96
2POS.1,0:?#6;"SCORE:":POS.29,0:?#6;"BEST:";R:C.34:PL.0,1:DR.39,1:F.I=0TO(W-1)*2:PL.I,1:DR.I,23:DR.39-I,23:DR.39-I,1:n.i
3F.I=1TO8:R(I)=22:Z(I)=I*2+W*2:N.I:REP.:J=Q+INT(RND*720)+120:K=PEEK(J):POKEJ,K+3*(K=0):i=i+(k=0):u.i=41:REP.:S=STICK(0)
4U=X:Y=(S=7)-(S=11)+((S=13)-(S=14))*40:T=PEEK(X+Y):J=PEEK(X+Y+Y):D=T=J:A=T>2:P=Y*((J=0ORD)ANDA):X=X+Y*(T=0)+P:so.:o=999
5X=X+Y*(J=2ANDA):C=S<15:SO.0,9,5+D*A,(T+1)*C:A=U=X:POKEU-A*o,T*(J=2ANDT):POKEX+P-A*o,T+D:POKEX,1:E=(T-3)*C-C*(T>9)*T:f=0
6REP.:POS.7,0:?#6;Z;"   ":B=(B+1)*(B<8)+(B>7):M=R(B):L=Z(B):Y=W(B):P=(X-Q)DIV40:N=X-Q-P*40:A=((N>L)-(N<L))*(Y<1):z=z-1
7D=(P>M)-(P<M)*(Y>=0):LOC.L+A,M+D,V:K=V<33:C=L+A*K:G=M+D*K:POKEQ+L+M*40,(C=L)*(M=G)*129:POKEQ+C+G*40,129:Z(B)=C:R(B)=G
8W(B)=0:W(B)=(Y+1-(Y=1)*3)*(L=C ANDM=G):F=F+1:U.F>E:U.(T>7)+(V=33)+(Z=0)>0:SO.:H=H+Z+(W-1)*o:cls#6:REP.:POS.17,0:IFT=8
9IFW<6:?#6;"CONT":ELSE:?#6;"DONE":END.:ELSE:?#6;"DEAD":END.:U.STRIG(0)=0:IFH>R ANDT=8:R=H:END.:W=W+(T=8):U.T-8ORW=7:LOOP


***** Expanded Listing and Documentation *****

[line 0]
DIMZ(9),R(9),W(9) {setup arrays for zombies}
MOVE 57344,24576,1024 {move default charset to new location}
DO
REM ******* CHARSET&COLOR DATA, THIS FILE CAN'T SHOW ATASCII CHARACTERS ********
[line 1]
Q=48032 {screen memory}
MOVE 14455,24576,72 {load character set changes from REM to new location}
W=1 {zone 1}
H=0 {high score for current game}
REPEAT {current game loop}
X=Q+99 {player position}
Z=3999 {zone timer}
GRAPHICS 28
POSITION 16,0
?#6;"ZONE ";W
MOVE 14527,708,4 {set colors from REM data}
POKE Q-29,66 {set first line of screen to gr.0 instead of gr.12}
POKE 756,96 {tell OS where new charset is}
[line 2]
POSITION 1,0
?#6;"SCORE:"
POSITION 29,0
?#6;"BEST:";R
COLOR 34
PLOT 0,1
DRAWTO 39,1
FOR I=0 TO (W-1)*2 {draw wall border}
PLOT I,1
DRAWTO I,23
DRAWTO 39-I,23
DRAWTO 39-I,1
NEXT I
[LINE 3]
FOR I=1 TO 8 {set zombie start positions}
R(I)=22
Z(I)=I*2+W*2
NEXT I
REPEAT {display crates}
J=Q+INT(RND*720)+120
K=PEEK(J)
POKE J,K+3*(K=0)
I=I+(K=0)
UNTIL I=41
REPEAT {zone loop}
S=STICK(0)
[LINE 4]
U=X {U is old player position}
Y=(S=7)-(S=11)+((S=13)-(S=14))*40 {get direction of player movement}
T=PEEK(X+Y) {pos player wants to move to}
J=PEEK(X+Y+Y) {pos crate will move to}
D=T=J
A=T>2
P=Y*((J=0 OR D) AND A)
X=X+Y*(T=0)+P
SOUND 
O=999
[LINE 5]
X=X+Y*(J=2 AND A)
C=S<15
SOUND 0,9,5+D*A,(T+1)*C
A=U=X
POKE U-A*O,T*(J=2 AND T) {erase old player}
POKE X+P-A*O,T+D {display crate if one has moved or merged}
POKE X,1 {display player in new pos}
E=(T-3)*C-C*(T>9)*T {calculate how many zombies to move}
F=0
[LINE 6]
REPEAT {zombie movement loop}
POSITION 7,0
?#6;Z;"   " {display timer}
B=(B+1)*(B<8)+(B>7) {get next zombie from array}
M=R(B)
L=Z(B)
Y=W(B)
P=(X-Q) DIV 40 {convert player pos to cartesian coords)
N=X-Q-P*40
A=((N>L)-(N<L))*(Y<1) {is player to left/right of zombie}
Z=Z-1
[LINE 7]
D=(P>M)-(P<M)*(Y>=0) {is player below or above zombie}
LOCATE L+A,M+D,V {contents of square zombie wants to move}
K=V<33
C=L+A*K
G=M+D*K
POKE Q+L+M*40,(C=L)*(M=G)*129 {erase zombie}
POKE Q+C+G*40,129 {display zombie in new pos}
Z(B)=C {store zombie data back into array}
R(B)=G
[LINE 8]
W(B)=0
W(B)=(Y+1-(Y=1)*3)*(L=C AND M=G) {if zombie path is blocked try another direction next time}
F=F+1
UNTIL F>E
UNTIL (T>7)+(V=33)+(Z=0)>0 {check if dead or zone complete}
SOUND 
H=H+Z+(W-1)*O
CLS#6
REPEAT {display message for nezt zone or game end}
POSITION 17,0
IF T=8
[LINE 9]
IF W<6
?#6;"CONT"
ELSE
?#6;"DONE"
ENDIF
ELSE
?#6;"DEAD"
ENDIF
UNTIL STRIG(0)=0
IF H>R AND T=8
R=H
ENDIF
W=W+(T=8)
UNTIL T-8 OR W=7 {go to next zone or start new game}
LOOP


Download

Download
instructions.txt 2 kB
Download
README.txt 343 bytes
Download
superzombie.atr 90 kB
Download
superzombie.txt 4 kB

Install instructions

LOADING AND RUNNING INSTRUCTIONS:

1) Use the Altirra emulator (https://www.virtualdub.org/altirra.html)

2) Ensure that Altirra is setup with a standard 64k Atari 800xl, the game may not work on other settings.

3) Load zombies.atr by double clicking, this will start Altirra, install TurboBASIC and autorun the game.  To see a listing press <pause/break> key and type LIST<enter>

Leave a comment

Log in with itch.io to leave a comment.