Home > Retro > Games I made when I was a kid #2 – Splatter

Games I made when I was a kid #2 – Splatter

May 8th, 2009
Splatter

Splatter

Splatter (1984) is another game I wrote when I was a kid, that no-one ever played.

You are the guy on top of the rows of bricks. The bird-thing is trying to come up to the top. You try to kill the bird by jumping, which dislodges a brick beneath you to hopefully fall on its head. Dislodge too many and you fall through.

As before, if you want to play this you will need a TRS-80 Model 1 emulator and the Splatter cassette image. The game is written in BASIC, you type CLOAD to load it and RUN to run it.

Keep reading if you would like to see what the vintage BASIC source code looks like. I actually went to some effort to de-tokenize it from the cassette image, just for you.

Back then, whitespace and comments ate precious memory, so you didn’t use them. Statements were combined on the same line for speed, and lines at the start of the program ran faster. Your screen showed 16 lines of 64 characters, and you only had a line editor because a full-screen editor wouldn’t have fitted into your ROM.

People actually bought magazines containing source code like this, and typed it in themselves! This was a great way to learn programming, because if you typed a single character wrong, you had to work out where it was.

Somewhat embarassingly, this code reveals that Hyperwares used to be called SellySoft. It’s generally a bad idea to name a company after something your mother calls you, even an imaginary company.

1 ' SPLATTER - BY SELWYN STEVENS
10 CLEAR:CLS:PRINT@(6,19),"SELLYSOFT INC PRESENTS..."
20 DATA28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,
60,76,76,44,28,52,91,90,89,91,64,60,86,51,71,81,44,44,84,72,56,8
0,60,30,75,91,91,59,29,30,31,29,30,31,29,64,60,72,56,44,52,28,39
,59,75,35,28,28,60,72,56,44,28,52,39,59,75,35,64
30 FORA=0TO2:FORD=1TO3:FORB=1TO6:READC:M$(A)=M$(A)+CHR$(100+C):N
EXT:IFD<3M$(A)=M$(A)+CHR$(26)+STRING$(6,24):NEXTD,A:ELSENEXTD,A
35 B$(0)=LEFT$(M$(0),26)
37 C$(1)="KEEP SPLATTING, YOU ARE LOOKING GOOD!":C$(2)="LOOK OUT
, THIS GUY IS HOT!!":C$(3)="BRILLIANT!!! (JUST HANG IN THERE)"
40 FORA=1TO2:FORD=1TO2:FORB=1TO6:READC:B$(A)=B$(A)+CHR$(100+C):N
EXT:IFD=1B$(A)=B$(A)+CHR$(26)+STRING$(6,24):NEXTD,A:ELSENEXTD,A
42 FORB=16446TO16474:READD:POKEB,D:NEXT:POKE16526,62:POKE16527,6
4:DATA205,127,10,62,1,14,0,237,91,61,64,69,47,230,3,179,211,255,
13,40,4,16,246,24,242,37,32,241,201
45 GOTO1100
50 IFNK>20THENGOSUB2000
52 FORA=258TO390STEP64:PRINT@A,STRING$(60,191):NEXT:PRINT@(15,2)
,STRING$(60,191);
60 BP=864:BX=6
70 FORA=1TO2:PRINT@P,M$(1);:PRINT@BP,B$(A);:Z=PEEK(14400):IFZ=32
ANDP>66THENPRINT@P,M$(0);:P=P-6:ELSEIFZ=64ANDP<118THENPRINT@P,M$
(0);:P=P+6:ELSEIFZ=1ORINKEY$=" "THEN200
80 Z=RND(10):IFZ=1ANDBX>1ORZ=7ANDBX>1PRINT@BP,B$(0);:BP=BP-6:BX=
BX-1:ELSEIFZ=2ANDBX<10ORZ=8ANDBX<10PRINT@BP,B$(0);:BP=BP+6:BX=BX
+1:ELSEIFZ=3ANDBP<832THENPRINT@BP,B$(0);:BP=BP+64:ELSEIFZ=5ORZ=6
PRINT@BP,B$(0);:BP=BP-64:IFBP<192THEN300
90 IFPEEK(P+15552)<>191THENFORD=PTO830STEP64:PRINT@BP,B$(1);:Q=U
SR(880+INT(D/20)):PRINT@D,M$(2);:PRINT@BP,B$(2);:PRINT@D,M$(0);:
NEXT:GOTO500:ELSENEXTA:GOTO70
200 PRINT@P,M$(2);:FORD=1TO10:Q=USR(900+RND(20)):NEXT:PRINT@P,M$
(1);:IFPEEK(P+15680)=191Y=P+320:GOTO210:ELSEIFPEEK(P+15616)=191Y
=P+256:GOTO210:ELSEFORD=PTO830STEP64:Q=USR(880+INT(D/20)):PRINT@
BP,B$(1);:PRINT@D,M$(2);:PRINT@D+192,STRING$(6,191);
205 PRINT@BP,B$(2);:PRINT@D,M$(0);:NEXT:GOTO500
210 FORD=YTO959STEP64:PRINT@D,STRING$(6,191);:IFPEEK(BP+15360)=1
91THEN600:ELSEQ=USR(1100+INT(D/20)):PRINT@D," ";:NEXTD:GOTO70
300 PRINT@BP-64,"HOORAY";:FORA=1TO20:PRINT@BP,B$(1);:FORB=1TO30:
NEXT:PRINT@BP,B$(2);:FORB=1TO30:NEXT:NEXT:GOTO1000
500 PRINT@D,"SHPLAT";:PRINT@D+64,STRING$(2,176)STRING$(2,188)STR
ING$(2,176);:PRINT@D+128,STRING$(6,191);:FORJ=1TO25STEP2:Q=USR(9
40+J):NEXT:GOTO1000
600 PRINT@D,STRING$(6,191);:PRINT@D+64,"CRUNCH";:NK=NK+1:PRINT@(
0,60),NK;:FORE=1TO5:Q=USR(985-RND(20)):NEXT:PRINT@D,B$(0);:IFNK=
KNTHENKA=KA+1:KN=KN+KA:PRINT@(0,60),NK;:GOTO50:ELSE60
1000 PRINT@(8,19),"YOU LOSE. YOUR SCORE:"NK;:Q=USR(150):Q=USR(20
0)
1005 IFNK>HSTHENHS=NK
1100 CLS:T$="<<< SPLATTER - HIGH SCORE:"+STR$(HS)+" - HIT 'S' TO
 START ":FORA=504TO451STEP-2:Q=USR(990):FORB=1TO2:PRINT@A,B$(B)L
EFT$(T$,504-A);:PRINT@A-6," ";:PRINT@A+6," ";:FORC=1TO4:IFINKEY$
<>"S"THENNEXTC,B,A:FORA=1TO5000:IFINKEY$<>"S"THENNEXT:GOTO1100
1110 P=66:NK=0:KN=4:KA=4:NC=0:CLS:GOTO50
2000 IFNK>48THEN2010:ELSENC=NC+1:CLS:PRINT@(7,32)-LEN(C$(NC))/2,
C$(NC);:PRINT@(8,20),"YOU ONLY NEED"49-NK"MORE!!";:FORA=1TO50:FO
RB=1TO2:X=USR(950):PRINT@(7,5),B$(B);:PRINT@(7,52),B$(B);:FORC=1
TO10:NEXTC,B,A:CLS:RETURN
2010 Y$="":U$="*CHAMPION* ":FORA=1TO6:Y$=Y$+U$:NEXTA:CLS:PRINT@(
7,17),"C O N G R A T U L A T I O N S !";:PRINT@(8,13),"YOU ARE T
HE GREATEST SPLATTERER EVER!!!";
2020 FORV=1TO50:FORA=1TO13STEP3:PRINT@(5,0),MID$(Y$,A,64);:PRINT
@(10,0),MID$(Y$,A,64);:FORB=1TO2:PRINT@(6,1),M$(B);:PRINT@(6,57),
M$(B);:X=USR(800+RND(200)):NEXTB,A,V:GOTO1005
Categories: Retro
Comments are closed.