99% of type in 'stomper'

The place for codemasters or beginners to talk about programming any language for the Spectrum.
Post Reply
C.Born
Manic Miner
Posts: 235
Joined: Sat Dec 09, 2017 4:09 pm

99% of type in 'stomper'

Post by C.Born »

Hi, i did an suposed MIA in Personal Computing
"stomper"
and it seems not complete and i have troubles with reading the copy
and sorry for the UGLY form off printing, thats PlusD over FUSE in a txt file
i have to find the correct UDG to replace it all
and i GUESS those ar not complete
last article on page
https://www.computinghistory.org.uk/det ... gust-1983/

its 99% complete, an UDG problem

Code: Select all

   5 DIM t(16): RANDOMIZE : GO SUB 9000: GO SUB 4000: LET score=0: LET level=1: LET hi=0
  10 PAPER 7: INK 2: BORDER 7
  20 LET cntr=0: CLS 
  99 REM *****DRAW SCREEN*******
 100 FOR a=0 TO 21 STEP 2
 110 FOR b=0 TO 31 STEP 2
 120  PRINT AT a,b;"K\00\FF\FF\FF\FF\FF\FF\FF\FFK\00\FF\FF\FF\FF\00\00\00\00";AT a+1,b;"K\00\F0\F0\F0\F0\F0\F0\F0\F0K\00\F0\F0\F0\F0\00\00\00\00"
 130 NEXT b: NEXT a
 145 REM ****DRAW SKULLS******
 150 FOR i=1 TO 4: LET a=1+INT (RND*5)+5*(i=3 OR i=4): LET b=1+INT (RND*8)+7*(i=2 OR i=4)
 160 PRINT AT a*2,b*2; INK 0;"..";AT a*2+1,b*2;".."
 170 NEXT i
1000 REM ******MOVE BOOT******
1010 LET a1=0: LET b1=0
1020 GO SUB 8500: GO TO 2010
1030 GO SUB 8600: IF INKEY$="" THEN  GO TO 1030
1040 IF INKEY$="i" THEN  LET b1=b-2: LET a1=a: IF b1<0 THEN  LET b1=30
1050 IF INKEY$="s" THEN  LET a1=a+2: LET b1=b: IF a1>20 THEN  LET a1=0
1060 IF INKEY$="w" THEN  LET a1=a-2: LET b1=b: IF a1<0 THEN  LET a1=20
1070 IF INKEY$="o" THEN  LET b1=b+2: LET a1=a: IF b1>30 THEN  LET b1=0
1080 IF INKEY$="1" THEN  GO SUB 7000: LET time=time+.2*level: LET a1=a: LET b1=b: GO TO 1110
1090 IF INKEY$="0" THEN  LET time=time+.2*level: GO SUB 7500: LET a1=a: LET b1=b: GO TO 1110
1100 IF ATTR (a1,b1)=60 THEN  GO TO 1030
1110 IF ATTR (a1,b1)=56 THEN  GO TO 8000
1120 IF ATTR (a1,b1)=57 THEN  LET score=score+(time*100)*level: LET cntr=cntr+1: GO SUB 8500
2000 PRINT AT a,b; INK 4;"  ";AT a+1,b; INK 4;"  "
2010 LET a=a1: LET b=b1
2020 PRINT AT a,b; INK 3;"K\00\FF\FF\FFK\00\00\00\00\00";AT a+1,b;"K\00\F0\F0\F0\E0\E0\E0\E0\E0K\00\F0\F0\F0\A0\00\00\00\00": BEEP .003,5: LET score=score+50*level
2025 IF cntr=diff THEN  GO TO 6000
2030 GO TO 1030
4000 REM ********TITLES******
4010 BORDER 2: PAPER 6: INK 0: CLS : PRINT AT 6,11;"STOMPER";AT 8,13;"by";AT 10,8;"Barry H Clayton"
4020 PRINT AT 12,12;"1983"
4030 PAUSE 50: LET t$="               K\00\FF\FF\FFK\00\00\00\00\00                              K\00\F0\F0\F0\E0\E0\E0\E0\E0K\00\F0\F0\F0\A0\00\00\00\00               "
4040 FOR i=1 TO 12: PRINT AT 0,i;"  K\00\FF\FF\FFK\00\00\00\00\00";AT 1,i;"  K\00\F0\F0\F0\E0\E0\E0\E0\E0K\00\F0\F0\F0\A0\00\00\00\00": BEEP .05,4: PAUSE 5: NEXT i
4050 PAUSE 15: FOR i=0 TO 20: IF i>0 THEN  PRINT AT i-1,16; INK 2;"K\00\FF\FF\FF\FF\FF\FF\FF\FFK\00\FF\FF\FF\FF\FF\FF\FF\FF"
4060 PRINT AT i,0; PAPER 2; INK 0;t$: BEEP .05,i: NEXT i
4070 FOR i=1 TO 150: NEXT i
5000 REM ******DIFFICULTY******
5010 POKE 23692,255: PRINT AT 21,0
5020 PAPER 7: PAUSE 5
5030 PRINT TAB 5; INK 3;"HOW BRAVE ARE YOU ?": PAUSE 5
5040 PRINT 'TAB 9;"1)DEAD EASY": PAUSE 5
5050 PRINT 'TAB 9;"2)EASY": PAUSE 5
5060 PRINT 'TAB 9;"3)MODERATE": PAUSE 5
5070 PRINT 'TAB 9;"4)DIFFICULT": PAUSE 5
5080 PRINT 'TAB 9;"5)VERY DIFFICULT": PAUSE 5
5090 PRINT 'TAB 9;"5)IMPOSSIBLE": PAUSE 5
5100 PRINT '': PAUSE 5: PRINT ''': PAUSE 5: PRINT TAB 9;"PICK A NUMBER"''''
5110 LET n=CODE INKEY$: LET a=n-48: IF a<1 OR a>6 THEN  GO TO 5110
5120 LET diff=3*(a=1)+5*(a=2)+7*(a=3)+10*(a=4)+12*(a=5)+20*(a=6)
5130 RETURN 
6000 REM *****NEXT STAGE*****
6010 LET t$="11234": FOR i=1 TO 4: BEEP .2,VAL t$(i): BEEP .4,VAL t$(i+1): NEXT i
6020 FOR i=1 TO 300: NEXT i:: LET level=level+1: CLS : PRINT AT 5,10;"LEVEL ";level: RESTORE : PRINT : PRINT TAB 8;"SCORE=";score: PAUSE 100: GO TO 20
7000 REM ****ROTATE LEFT******
7010 LET t(16)=ATTR (a,0)
7015 FOR i=1 TO 15: LET t(i)=ATTR (a,i*2): NEXT i
7020 FOR i=15 TO 0 STEP -1
7030 IF t(i+1)=58 THEN  PRINT AT a,i*2; INK 2;"K\00\FF\FF\FF\FF\FF\FF\FF\FFK\00\FF\FF\FF\FF\00\00\00\00";AT a+1,i*2;"K\00\F0\F0\F0\F0\F0\F0\F0\F0K\00\F0\F0\F0\F0\F0\F0\F0\F0": GO TO 7100
7040 IF t(i+1)=60 THEN  PRINT AT a,i*2; INK 4;"  ";AT a+1,i*2;"  ": GO TO 7100
7050 IF t(i+1)=55 THEN  PRINT AT a,i*2; INK 0;",,";AT a+1,i*2;"''": GO TO 7100
7060 IF t(i+1)=57 THEN  PRINT AT a,i*2; INK 1;CHR$ (144+time);" ";AT a+1,i*2;"''": LET y1=y1-1
7070 PRINT AT a,b-2; INK 4;"  ";AT a+1,b-2;"  "
7080 IF y1<0 THEN  LET y1=15
7100 NEXT i
7110 RETURN 
7500 REM *****ROTATE RIGHT*****
7510 LET t(1)=ATTR (a,30)
7520 FOR i=0 TO 14: LET t(i+2)=ATTR (a,i*2): NEXT i
7530 FOR i=0 TO 15
7540 IF t(i+1)=58 THEN  PRINT AT a,i*2; INK 2;"K\00\FF\FF\FF\FF\FF\FF\FF\FFK\00\FF\FF\FF\FF\00\00\00\00";AT a+1,i*2;"K\00\F0\F0\F0\F0\F0\F0\F0\F0K\00\F0\F0\F0\F0\00\00\00\00": GO TO 7600
7550 IF t(i+1)=60 THEN  PRINT AT a,i*2; INK 4;"  ";AT a+1,i*2;"  ": GO TO 7600
7560 IF t(i+1)=56 THEN  PRINT AT a,i*2; INK 4;"K\00			K\00\00~ ~\00";AT a+1,i*2;"''": GO TO 7600
7570 IF t(i+1)=57 THEN  PRINT AT a,i*2; INK 1;CHR$ (144+time);" ";AT a+1,i*2;"K\00\C0\C0pp\00\00\00\00 ": LET y1=y1+1
7580 PRINT AT a,b+2; INK 4;"  ";AT a+1,b+2;"  "
7590 IF y1>15 THEN  LET y1=0
7600 NEXT i
7610 RETURN 
8000 REM ******HIT SKULL*******
8005 PRINT AT a,b; INK 4;"  ";AT a+1,b;"  "
8010 FOR i=a1 TO 20: PRINT AT i-1,b1; INK 4;"  ";AT i+1,b1;"  "
8020 PRINT AT i,b1; INK 3;"K\00\FF\FF\FFK\00\00\00\00\00";AT i+1,b1;"K\00\F0\F0\F0\E0\E0\E0\E0\E0K\00\F0\F0\F0\A0\00\00\00\00"
8030 BEEP (21-i)/300,30-i: NEXT i
8040 FOR i=152 TO 135 STEP -1: PRINT AT 21,b1; INK 3; OVER 1;CHR$ i;CHR$ (i+1);AT 20,b1; OVER 1;CHR$ (i+2);CHR$ (i+3)
8050 NEXT i
8060 PRINT AT 20,b1;"  ";AT 21,b1; INK 3;"K\00			K\00			"
8070 GO TO 9500
8200 REM ******EXPLOSION*******
8210 BORDER 0: PAPER 0: RANDOMIZE USR 23300: BEEP 1,0: BEEP 1,0: BEEP .2,0: BEEP 1.1,0
8220 GO TO 9500
8500 REM *****DRAW A BOMB******
8510 LET time=0: LET x1=INT (RND*10): LET y1=INT (RND*15): IF x1=a1 OR ATTR (x1*2,y1*2)<>58 THEN  GO TO 8510
8520 PRINT AT x1*2,y1*2; INK 1;"K\00=\E0\C0@\00\00\00\00 ";AT x1*2+1,y1*2; INK 1;"K\00\C0\C0pp\00\00\00\00 "
8600 REM ****BURN THE FUSE*****
8610 LET time=time+.01*level: IF time>7 THEN  GO TO 8200
8620 PRINT AT x1*2,y1*2; INK 1;CHR$ (144+time)
8630 RETURN 
9000 REM ******GRAPHICS********
9020 DATA 96,112,54,31,22,22,15,15
9030 DATA 31,104,239,192,0,0,0,0
9040 DATA 96,112,192,128,128,128,0,128
9050 DATA 192,240,48,48,0,0,0,0
9060 DATA 32,16,16,12,4,4,8,16
9070 DATA 48,120,120,48,0,0,0,0
9080 DATA 152,248,248,248,248,248,250,255
9085 DATA 0,0,0,0,0,0,160,240
9090 DATA 255,255,255,224,0,0,0,0
9100 DATA 240,224,240,224,0,0,0,0
9110 DATA 0,0,0,136,199,144,188,207
9120 DATA 62,255,33,1,0,17,0,88,1,0,3,237,176,61,35,32,244,201
9130 FOR n=159 TO 162: FOR i=0 TO 7: READ a: POKE USR CHR$ n+i,a: NEXT i: NEXT n
9140 FOR n=0 TO 7: FOR x=0 TO n: READ a: POKE USR CHR$ (144+n)+x,0: NEXT x: FOR x=n TO 7: READ a: POKE USR CHR$ (144+n)+x,a: NEXT x
9150 RESTORE 9060: NEXT n
9160 RESTORE 9070: FOR i=0 TO 7: READ a: POKE USR "u"+i,a: NEXT i
9170 FOR n=152 TO 156: FOR i=0 TO 7: READ a: POKE USR CHR$ n+i,a: NEXT i: NEXT n
9180 FOR i=23300 TO 23317: READ a: POKE i,a: NEXT i
9190 RETURN 
9500 REM ****END OF GAME*******
9510 PRINT AT 5,9;"YOU SCORED :";AT 7,11;score
9520 IF score>hi THEN  LET hi=score: PRINT '"Congratulations that is the best score today.Please type in your name followed by 'enter'": INPUT h$: GO TO 9560
9530 IF score=hi THEN  PRINT '"Well done youeqalled ";h$;"'s high score.Better luck next time.": GO TO 9560
9540 LET t$=STR$ (hi-score): IF VAL t$>6000 THEN  LET t$="a long way"
9550 PRINT : PRINT TAB 4;"YOU were ";t$;" short of "'TAB 5;h$;"'s high score."
9560 PRINT AT 18,0;"WOULD YOU LIKE ANOTHER GAME(Y/N)"
9570 IF INKEY$="" THEN  GO TO 9570
9590 IF INKEY$="y" THEN  LET score=0: LET level=1: LET cntr=0: GO SUB 5000: GO TO 10
9600 IF INKEY$="n" THEN  STOP 
9610 GO TO 9570
9900 CLEAR : SAVE "stomper" LINE 1

9999 REM K\00\00\00\C3$8\00\00K\00\00\00C$8\00\00K\00\00\00$8\00\00K\00\00\00\00\00K\00\00\00\00\00K\00\00\00\00\00\00K\00\00\00\00\00\00\00K\00\00\00\00\00\00\00K\00\FF\FF\FFK\00\00\00\00\00K\00\F0\F0\F0\E0\E0\E0\E0\E0K\00\F0\F0\F0\A0\00\00\00\00K\00			K\00\00~ ~\00K\00\00<BBBB<\00K\00\00\C0\E0|??K\000p`\80ࠠ\A0K\00=\E0\C0@\00\00\00\00K\00\C0\C0pp\00\00\00\00K\00@@@~@@@\00K\00\00`\F0\F0`\00\00\00

EDIT:
maybe with an emulator you can SEE the UDG:

Code: Select all

   1 POKE @5,32: POKE @10,0: POK
E 11,0: LPRINT : LLIST : LPRINT 
: REM AK\00\00>HHHH>\00                        
      BK\00\00~RRRR,\00                        
      CK\00\00<BBBB$\00                        
      DK\00\00~BBB$\00                        
      EK\00\00~RRRRB\00                        
      FK\00\00~PPPP@\00                        
      GK\00\00<BBJJ,\00                        
      HK\00\00~~\00                        
      IK\00\00\00BB~BB\00                        
      JK\00\00|\00                        
      KK\00\00~(D\00                        
      LK\00\00~\00                        
      MK\00\00~  ~\00                        
      NK\00\00~ ~\00                        
      OK\00\00<BBBB<\00                        
      PK\00\00~HHHH0\00                        
      QK\00\00<BJFB<\00                        
      RK\00\00~HHHL2\00                        
      SK\00\00$RRRR\00                        
      TK\00@@@~@@@\00                        
      UK\00\00||\00
  10 PRINT "LINE 1 IS A LIST WIT
H AL 21 UDG FOR PRINTER TRICK WI
TH PLUSD OR DISCILPE, IT WILL PR
INT THE UDG VALUES"

these are from TTF tx2emu, gonna use them.
;these special encodings can be used in the text file:
;{00}-{FF} .for hex byte values $00-$FF
;{80}-{87} .for unshifted block graphics
;{88}-{8F} .for shifted block graphics
; {A}-{U} ..for UDGs A-U
Post Reply