A broken Ghoul

reminisce about bbc micro & electron games like chuckie egg, repton, elite & exile

Related forum: adventures


User avatar
Lardo Boffin
Posts: 978
Joined: Thu Aug 06, 2015 6:47 am
Contact:

A broken Ghoul

Postby Lardo Boffin » Thu Nov 03, 2016 10:57 am

Back in the day I assumed that all commercially written arcade games were written in machine code because: -

1) They were fast
2) You have to *Load or *Run the main file
3) I didn't know you could make BASIC programs behave as above

Fast forward to now and until recently I had an IFEL ROM / RAM board installed in a Beeb (I gave it away to someone on here as I was no longer using it) and when I played Ghouls (a favorite of mine, see viewtopic.php?f=1&t=12046) and died, which was often the case, it crashed out.

What I found shocked me to the core! A load of BASIC!

Below is an extract of it for anyone interested!

Code: Select all

    0REM                                                G H O U L S             
    1DIMHI(10),N$(10):FORF=0TO9:N$(F)="„Ghoul Basher "+STR$(F+1):HI(F)=(20-F)*10:NEXT
    2IFINKEY(-255)=-1 THEN *FX200,2
    3ONERRORGOTO8100
    5IFINKEY(-255)=-1 ?&220=166:?&221=255 ELSE GOTO7
    6PROCman
    7ONERRORGOTO3000
    8PROCASS:ERROR
   10REM***** GHOULS *****
   11*FX11,0
   31MODE5:VDU23;11;0;0;0;
   35FORF=0TO4:F?&E10=230:NEXT:LI=4:SC=1:?&AF2=60:GO=0
   48FORF=1TO3:VDU19,F,0;0;:NEXT
   49PRINTTAB(0,5);:COLOUR3:GCOL0,1::ON SC GOSUB1000,1050,1100,1150
   50!&CF8=0:!&CFB=0:COLOUR1:PRINTTAB(14,1);:VDU240,241,242
   55GCOL0,1:MOVE0,60:DRAW0,952:MOVE1279,60:DRAW1279,860:MOVE1080,800:DRAW1080,860:GCOL0,2:MOVE0,952:PLOT21,1279,952:GCOL0,2:MOVE1092,864:DRAW1270,864
   59IFLI=1GOTO75
   60FORF=0TO((LI-2)*16)STEP16:FORG=0TO15STEP4:G!(F+&7D80)=G!&980:G!(F+&7EC0)=G!&990:NEXT,
   75?&E00=235:?&E01=230:COLOUR2:PRINTTAB(18,1);:VDU235,230
   76FORF=0TO31:F?&DDE=0:NEXT:FORF=0TO4:PRINTTAB(F,1);CHR$(F?&E10):NEXT
   79FORF=0TO31STEP4:F!&5CE0=F!&A00:F!&5E20=F!&A20:NEXT
   80VDU23,0,1,0;0;0;0;:VDU19,1,1;0;19,2,3;0;:IFSC<>2VDU19,3,SC+3;0; ELSEVDU19,3,2;0;
   85SOUND&12,4,0,18:SOUND&13,4,1,18:FORF=1TO41STEP.2:VDU23,0,1,F;0;0;0;:NEXT
   90!&70=&7A00:FORF=0TO GO STEP2:G=&6000+(RND(300)*16):F!&CF8=G:NEXT:?&AEA=31
   96?&7D=0:?&84=0
  100CALL&E20:*FX15,0
  101IF?&AF9=255GOTO500
  102FORG=0TO4STEP2:N=G?&CF9*256+G?&CF8:IFN>&5800 FORF=0TO15STEP4:F!N=F!&2020:F!(N+320)=F!&2030:NEXT
  103NEXT:N=?&7B*256+?&7A:FORF=0TO31STEP4:F!N=F!&9E0:NEXT:N=?&83*256+?&82:IFN>&5800 FORF=0TO31STEP4:F!N=F!&A70:F!(N+320)=F!&A90:NEXT
  104SOUND&10,-15,3,18:FORF=200TO0STEP-.6:SOUND&11,0,F,1:NEXT:N=?&71*256+?&70:IF?(N+326)=224N=N+320 ELSEIF?(N-314)=224N=N-320
  105K=110:FORG=&2040 TO &20B0 STEP16:FORF=0TO15STEP4:F!N=F!G:NEXT
  106FORJ=K TO K+5STEP.3:SOUND&11,-12,J,1:SOUND&12,-12,J-12,1:NEXT:FORJ=K+5 TO K-10STEP-.8:SOUND&11,-12,J,1:SOUND&12,-12,J-12,1:NEXT:K=K-8:NEXT
  109FORF=0TO15STEP4:F!N=F!&A50:NEXT:FORG=0TO35STEP35:FORF=G TO G+40STEP1.5:SOUND&11,-15,F,1:NEXT:FORH=1TO400:NEXT:FORH=0TO15STEP4:H!N=H!&DDE:NEXT,
  140LI=LI-1:IFLI=0GOTO2500
  150FORF=1TO3000:NEXT
  155SOUND&10,4,4,18:CALL&2100:VDU23,0,13,0;0;0;0;
  160GOTO48
  255NEXT
  499END
  500IF?&70=192 FORJ=0TO15STEP4:J!&5CC0=0:J!&5CD0=J!&980:J!&5E00=0:J!&5E10=J!&990:NEXT
  503ENVELOPE1,2,-1,1,-1,1,1,1,0,-3,0,-1,126,90:RESTORE8000:FORF=1TO39:READP
  504SOUND&11,1,P,4:SOUND&12,1,P+1,4:SOUND&13,1,P-1,4:FORK=1TO200:NEXT
  505NEXT:FORF=1TO4000:NEXT:ENVELOPE1,1,0,0,0,0,0,200,0,0,0,-2,126,0
  511?&AF2=?&AF2-5:IF?&AF2<20?&AF2=20
  512SC=SC+1:IFSC=5:PROCtower:GOTO48
  515*FX15
  520SOUND&11,2,2,50:SOUND&12,2,130,50:FORF=0TO15STEP4:F!&5CE0=F!&2020:F!&5CF0=F!&2020:F!&5E20=F!&2030:F!&5E30=F!&2030:NEXT
  521FORF=1TO1000:NEXT:SOUND&10,1,2,2:FORF=0TO15STEP4:F!&5CD0=0:F!&5E10=0:NEXT:FORF=0TO15STEP4:F!&5A50=F!&980:F!&5B90=F!&990:NEXT:FORF=1TO500:NEXT:FORF=0TO15STEP4:F!&5A50=0:F!&5B90=0:NEXT
  522GCOL0,2:MOVE0,952:PLOT21,1279,952:COLOUR2:PRINTTAB(1,14);"                  ";TAB(1,16);"                  ";TAB(1,15);"ESCAPE TO LEVEL ";SC;"."
  525FORF=1TO700:NEXT:SOUND&11,2,100,50:FORF=1TO4000:NEXT
  526G=999:F=999:H=999
  530VDU30:FORF=0TO31:VDU11:IFINKEY(-255)=-1THEN *FX19
  532IFINKEY(-255)=0I=INKEY(2)
  535NEXT:CLS
  555CLS:GOTO48
  999END
 1000REM ***SCENE1***
 1001!&84=&1800:CALL&D01:VDU5:MOVE364,28:PRINT"SPECTRES' LAIR":VDU4
 1005COLOUR1:PRINTTAB(7,23);CHR$228:FORF=0TO15STEP4:F!&6BE0=F!&AB0:NEXT
 1006COLOUR2:FORF=7TO12:PRINTTAB(F,27);CHR$243;TAB(F+2,22);CHR$243:NEXT:FORF=1TO2:PRINTTAB(F,4);CHR$243;TAB(F+5,4);CHR$243:NEXT
 1010!&7A=&6A00:?&AF5=6:?&81=0:!&83=0:IFGO>0!&82=&6A10:?&AEB=8
 1049RETURN
 1050REM ***SCENE2***
 1051!&84=&1A00:CALL&D01:VDU5:MOVE400,28:PRINT"HORRID HALL":VDU4
 1055COLOUR1:PRINTTAB(4,17);CHR$228;TAB(17,26);CHR$225;TAB(17,27);CHR$229;TAB(17,12);CHR$228
 1056COLOUR2:FORF=6TO15:PRINTTAB(F,11);CHR$243;TAB(F/1.5+7,17);CHR$243:NEXT
 1060!&7A=&61A0:?&AF5=14:!&80=&6960:!&83=0
 1061IFGO>0!&82=&6708:?&AEB=4
 1065FORF=0TO15STEP4:F!&74D0=F!&AB0:NEXT
 1099RETURN
 1100REM ***SCENE3***
 1101!&84=&1C00:CALL&D01:VDU5:MOVE332,28:PRINT"SPIDERS PARLOUR":VDU4
 1105COLOUR1:PRINTTAB(14,8);CHR$225;TAB(1,13);CHR$228;TAB(17,16);CHR$228;TAB(8,24);CHR$228;"  ";CHR$228;TAB(7,28);CHR$228
 1106COLOUR2:FORF=13TO18:PRINTTAB(F,9);CHR$243;TAB(F-4,15);CHR$243:NEXT
 1110!&7A=&6A50:?&AF5=5:!&80=&6E60:!&82=&6130:?&AEB=12:FORF=0TO15STEP4:F!&7390=F!&AB0:NEXT
 1149RETURN
 1150REM ***SCENE4***
 1151!&84=&1E00:CALL&D01:VDU5:MOVE400,28:PRINT"DEATH TOWER":VDU4
 1155COLOUR1:PRINTTAB(2,7);CHR$228;"  ";CHR$228;"  ";CHR$228;TAB(9,17);CHR$228;"     ";CHR$228;TAB(16,27);CHR$225TAB(16,28);CHR$229
 1156COLOUR2:FORF=3TO8:PRINTTAB(F,22);CHR$243;TAB(F-1,9);CHR$243;TAB(F/2+9,16);CHR$243;:NEXT
 1160!&7A=&6B50:?&AF5=8:!&80=&7360:!&82=&77A0:?&AEB=12:FORF=0TO15STEP4:F!&6D60=F!&AB0:F!&5F90=F!&AB0:NEXT
 1199RETURN
 2000DEFPROCtower:G=6:F=16:GO=GO+2:IFGO=6GO=4
 2001FORG=0TO4STEP2:N=G?&CF9*256+G?&CF8:IFN>&5800 FORF=0TO15STEP4:F!N=0:F!(N+320)=0:NEXT, ELSENEXT
 2002SOUND&10,-15,7,255:FORJ=7TO0STEP-1:SOUND&11,-8,J*16,1:FORH=1TO200:NEXT
 2005FORG=0TO4STEP2:N=G?&CF9*256+G?&CF8:IFN>&5800 FORF=J TO15STEPJ+1:F?N=F?&2020:F?(N+320)=F?&2010:NEXT
 2007NEXT,:SOUND&10,0,0,0
 2010FORF=1TO1000:NEXT:FORH=1TO5:SOUND&10,1,2,2:FORF=0TO15STEP4:F!&5CD0=0:F!&5E10=0:NEXT:FORF=0TO15STEP4:F!&5B90=F!&980:F!&5CD0=F!&990:NEXT:FORF=1TO200:NEXT:FORF=0TO15STEP4:F!&5B90=0:F!&5CD0=0:NEXT
 2012GCOL0,2:MOVE0,952:PLOT21,1279,952
 2015FORF=0TO15STEP4:F!&5CD0=F!&980:F!&5E10=F!&990:NEXT:FORF=1TO200:NEXT
 2020NEXT:FORF=0TO15STEP4:F!&5CD0=F!&900:F!&5E10=F!&910:NEXT
 2040FORF=1TO3000:NEXT:CLS:VDU28,0,9,19,0,19,3,6;0;:COLOUR3:PRINTTAB(2,1);:IFGO-2=0PRINT" GHOST GAVE UP." ELSEPRINT" GHOSTS GAVE UP"
 2041PRINTTAB(1,3);"YOU TOOK THE POWER       JEWELS"'" AND ESCAPED TO GET    SOME MORE....."
 2042COLOUR3:PRINT'" AWARDED EXTRA LIFE"
 2044FORG=-1TO-15STEP-.02:SOUND&11,G,0,30:SOUND&12,G,0,30:SOUND&13,G,2,30:NEXT
 2045VDU19,1,0;0;19,2,0;0;:GCOL0,2:MOVE300,700:FORF=0TO360STEP20:IFF=80ORF=120GCOL0,1 ELSEGCOL0,2
 2046IFF=100GCOL0,0
 2047MOVE300,500:PLOT85,300+232*SINRADF,500+200*COSRADF:NEXT
 2048GCOL0,0:MOVE308,500:DRAW532,500:VDU23,0,13,40;0;0;0;19,2,3;0;:CLS
 2050G=3:FORF=40TO17STEP-1:VDU23,0,13,F;0;0;0;19,1,G;0;:IFG=3G=0:SOUND&10,-15,7,-1:FORI=175TO245STEP2:SOUND&11,0,I,1:NEXT ELSE G=3:SOUND&10,0,0,0:FORI=0TO35:SOUND&10,0,0,0:NEXT
 2055NEXT:LI=LI+1:IFLI>6LI=6
 2060FORF=1TO3500:NEXT:SC=1:CLS:VDU19,1,0;0;19,2,0;0;23,0,13,0;0;0;0;26:ENDPROC
 2500FORF=1TO1500:NEXT:COLOUR2:FORF=13TO15:PRINTTAB(5,F);"          ":NEXT:PROCPRNT(6,14,"THE  END",400,0)
 2505FORF=1TO2000:NEXT:CALL&2100
 2510MODE7:VDU23;8202;0;0;0;
 2515S=0:G=100000:FORF=0TO4:G=G/10:N=(F?&E10)-230:S=S+(N*G):NEXT
 2520SC=10:FORF=9TO0STEP-1:IFHI(F)<S SC=F
 2525NEXT
 2528IFSC=10GOTO2600
 2530FORF=10TOSC+1 STEP-1:HI(F)=HI(F-1):N$(F)=N$(F-1):NEXT
 2531FORF=1TO2:PRINTTAB(3,F);CHR$141;"C‚OƒN„G…R†A‡TU‚LƒA„T…I†O‡NS":NEXT:PROCPRNT(7,4,"ƒYOU ARE IN THE TOP TEN",45,1):PROCPRNT(7,6,"‚PLEASE ENTER YOUR NAME",80,1)
 2532IFSC=0A$=" st" ELSEIFSC=1A$=" nd" ELSEIFSC=2A$=" rd" ELSEIFSC>2A$=" th"
 2534FORF=15TO16:PRINTTAB(13,F);CHR$141;"ˆ";SC+1;A$:NEXT
 2535PRINTTAB(7,10);"†";CHR$157;"„                    ";CHR$156
 2540*FX15
 2545L$="":K=10:P=0:L=0:F=.1:RESTORE8202
 2550IFINKEY(-74)=-1GOTO2590
 2551IFF<.4READG,F:IFG=-1RESTORE8200:GOTO2551 ELSE SOUND&11,2,G+48,F/5.5:SOUND&12,2,G,F/5.5
 2552IFF>=.4F=F-.8
 2555P=P+1:IFP=10P=1:L=(L+1 AND3)
 2560IFL=3PRINTTAB(K+1,10);"]"ELSE IFL=1PRINTTAB(K+1,10);"["
 2570I=INKEY(0):IFI=-1GOTO2550
 2571F=F-.48
 2575IFI=127ANDK=10 GOTO2550
 2580IFI=127 K=K-1:L$=LEFT$(L$,K-10):PRINTTAB(K+2,10);" ":GOTO2550
 2585IFK=26 ORI<32ORI>127GOTO2550 ELSEK=K+1:L$=L$+CHR$I:PRINTTAB(K,10);CHR$I:F=F-.3:GOTO2550
 2590PRINTTAB(K+1,10);" "
 2595N$(SC)=L$:HI(SC)=S:CLS
 2600FORF=0TO1:PRINTTAB(10,F);CHR$141;"‚BEST TEN TODAY":NEXT
 2605FORF=0TO9:PRINTTAB(2,F*2+2);"†";F+1;"...";TAB(7,F*2+2);" ‡"::PROCPRNT(9,F*2+2,N$(F),6,1):PRINTTAB(26,F*2+2);"ƒ...";HI(F):NEXT
 2608IFSC=255GOTO2620
 2610IFSC<>10PRINTTAB(7,SC*2+2);"ˆ"
 2615IFSC=10 PRINTTAB(9,22);"†YOU SCORED ";S
 2620PRINTTAB(5,23);"…Press SPACE BAR to start"
 2630IFINKEY(0)<>32GOTO2630
 2650GOTO10
 3000REM*** INSTRUCTIONS **
 3001MODE7:VDU23,0,11;0;0;0;
 3004*FX15
 3005FORF=1TO2:PRINTTAB(10,F);CHR$141;CHR$(131-F);"G H O U L S":NEXT:PRINTTAB(10,3);"“``,,,ppp,,,``"
 3006SOUND&11,2,5,50:SOUND&12,2,5,50:SOUND&13,2,6,50:FORF=1TO2500:NEXT
 3020IFINKEY(-255)=0GOTO3110
 3022FORF=10TO11:PRINTTAB(0,F);CHR$141;"‚Do you want sound in the game?†":NEXT
 3023A$=GET$
 3024FORF=10TO11:PRINTTAB(33,F);A$:NEXT:IFA$<>"N"ANDA$<>"Y" ANDA$<>"n"ANDA$<>"y" PRINTTAB(0,20);"INPUT NOT CORRECT, TRY AGAIN":SOUND&10,-15,2,1:A$=GET$:PRINTTAB(1,20);"                                                ":GOTO3024
 3025*FX210,1
 3026IFA$="Y"ORA$="y"THEN *FX210,0
 3100REM***** BRIEF *****
 3105PROCCLR
 3110PRINTTAB(1,5);"†Situated in a deadlyhaunted†mansion, †you have to rescue your power jewels   †from the horrid ghosts that stole them."
 3112PRINTTAB(0,8);" ‚But this is not as easy as it sounds! ‚On your trek up the house you are      ‚confronted with spookyghosts,‚cracked ‚and contracting floor boards, moving   ‚platforms, springs, and deadly spikes."
 3114PRINT"‚There is also a nasty spider that jumps‚up and down ready to catch you!!"
 3116PRINT" ƒBy eating one of the stray power      ƒjewels you can over power and paralyse ƒthe ghosts for a few seconds helping   ƒyou in your quest...."
 3118FORF=21TO22:PRINTTAB(4,F);CHR$141;"…Press SPACE BAR to continue":NEXT
 3119*FX15
 3120I=GET:IFI<>32GOTO3120
 3125PROCCLR
 3130PRINTTAB(1,5);"†The keys are as follows..."
 3135PRINT'"        ƒ""Z""„_‡MOVES YOU LEFT"''"        ƒ""X""„_‡MOVES YOU RIGHT"''"   ƒ""RETURN""„_‡TO JUMP"
 3136PRINT'"        ƒ""P""„_‡PAUSES GAME"''"        ƒ""O""„_‡CANCELS PAUSE"
 3138PRINT'"   ƒ""ESCAPE""„_‡RETURNS TO SOUND OPTION                 AND INSTRUCTIONS"
 3140FORF=20TO21:PRINTTAB(1,F);CHR$141;"…DO YOU WANT TO SEE GAME OBJECTS?";TAB(13,F+2);CHR$141;"‚(Y/N)":NEXT
 3144*FX15
 3145I$=GET$:IFI$="Y" ORI$="y"MODE5:VDU23,0,11;0;0;0;:PROCSHOW
 3150GOTO10
 3200DEFPROCSHOW
 3202FORF=1TO3:VDU19,F,0;0;:NEXT
 3205COLOUR2:PRINTTAB(4,1);"GAME OBJECTS"
 3210N=&5BC0:FORF=0TO15STEP4:F!N=F!&980:F!(N+320)=F!&990:NEXT:COLOUR1:PRINTTAB(2,4);" = YOU!!"
 3212N=N+960:FORF=0TO15STEP4:F!N=F!&2000:F!(N+320)=F!&2010:NEXT:COLOUR1:PRINTTAB(2,7);" = GHOUL"
 3215N=N+960:FORF=0TO31STEP4:F!N=F!&A70:F!(N+320)=F!&A90:NEXT:COLOUR1:PRINTTAB(2,10);" = SPIDER"
 3220N=N+960:FORF=0TO31STEP4:F!N=F!&9E0:NEXT:COLOUR1:PRINTTAB(2,12);" = MAGIC PLATFORM"
 3225N=N+736:FORG=N TO N+196STEP8:FORF=0TO7STEP4:F!G=F!&A48:NEXT,:COLOUR3:PRINTTAB(0,14);CHR$224;TAB(18,14);CHR$224;CHR$224;:COLOUR1:PRINTTAB(2,15);" = MOVING FLOOR"
 3230PRINTTAB(0,17);CHR$228;"  = DEADLY SPIKE";TAB(0,19);CHR$225;TAB(0,20);CHR$229;"  = SUPER SPRING"
 3255N=&7380:FORF=0TO15STEP4:F!N=F!&AB0:NEXT:PRINTTAB(2,22);" = POWER JEWEL"
 3260COLOUR2:PRINTTAB(0,24);CHR$243;CHR$243:COLOUR1:PRINTTAB(2,24);" = STRAY EDIBLES!"
 3265N=N+1280:FORF=0TO31STEP4:F!N=F!&A00:F!(N+320)=F!&A20:NEXT:COLOUR1:PRINTTAB(2,27);" = STOLEN JEWELS"
 3270COLOUR2:PRINTTAB(0,29);"PRESS SPACE TO PLAY."
 3271VDU19,1,1;0;19,2,3;0;19,3,4;0;
 3272*FX15
 3280I=GET:IFI<>32GOTO3780
 3285CALL&2100:ENDPROC
 3372*FX15
 7999PRINT:PRINT:END
 8000DATA41,69,89,101,117,137,117,101,89,69
 8001DATA33,61,81,97,109,129,109,97,81,61
 8002DATA25,53,73,89,101,121,101,89,73,53,21,49,69,81,97,117,129,145,165
 8005DATA-1
 8010DEFPROCPRNT(X,Y,A$,L,H):SOUND&10,-15,3,255:SOUND&11,0,0,255
 8015PRINTTAB(X,Y);:FORJ=1TO LENA$:G=ASCMID$(A$,J,1):IFG<>32AND H=1SOUND&11,0,G*2,0
 8020PRINT;MID$(A$,J,1);:FORG=1TOL:NEXT,:SOUND&11,0,0,0:SOUND&10,0,0,0:ENDPROC
 8050DEFPROCCLR:SOUND&10,-15,7,255:FORF=22TO5STEP-1:SOUND&11,0,128+F*5,1:PRINTTAB(0,F);CHR$(128+(F AND7));CHR$157;"                                      ":NEXT
 8055FORF=22TO5STEP-1:SOUND&11,0,150+((F*300)AND105),1:PRINTTAB(0,F);"                                       ":NEXT:SOUND&10,0,0,0:ENDPROC
 8100ONERRORCLEAR:GOTO8100
 8102MODE7:VDU23;11;0;0;0;
 8105PROCPRNT(5,10,"ƒE N D  O F  L I N E . . .",50,1)
 8110!&2200=RND(65535)
 8115IFINKEY(-255)=-1CALL&D9CD
 8120GOTO8120
 8145DEFPROCman
 8155ENDPROC
 8200DATA5,16,17,16,33,16,53,16,37,24,37,8,33,8,25,8,17,8,13,8,5,16,17,16,33,16,53,16,65,32,61,28
 8202DATA5,20,13,8,17,16,5,16,25,20,33,8,37,16,25,16,33,20,37,8,33,8,25,8,17,8,13,8,-1,-1
 8999END
 9000DEFPROCASS
 9805ENVELOPE1,1,0,0,0,0,0,200,0,0,0,-2,126,0
 9806ENVELOPE2,2,1,-1,1,2,4,2,1,0,0,-1,100,0
 9807ENVELOPE3,3,20,-20,8,5,5,5,0,0,0,-1,110,0
 9808ENVELOPE4,2,0,0,0,0,0,255,3,0,0,-126,127,0
 9860ENDPROC


Obviously it calls loads of machine code but still i was not expecting to see it. Oh naive youth that I was...

Lardo
BBC model B 32k issue 4, 16k sideways RAM, Watford 12 ROM board, Retroclinic Datacentre + HDD, Viglen twin 40/80 5.25" discs, acorn cassette, Acorn 6502 coproc
BBC model B 32k issue 7, turboMMC, Opus Challenger 3 512k, Pi 3 coproc
BBC Master

Michael Brown
Posts: 1991
Joined: Sat Apr 03, 2010 12:54 pm
Location: Nottingham
Contact:

Re: A broken Ghoul

Postby Michael Brown » Thu Nov 03, 2016 1:17 pm

Hi Lardo,
Quite a lot of BBC games have sections of basic code hidden somewhere within them.

It is also nice to see you have a listing for Ghouls from the original tape - which features a mistake at line 3280 where it says I=GET:IFI<>32GOTO3780.
This causes a On ERROR routine as there is no line 3780.
I changed this back in the day to GOTO3280.
The corrected version is on my disc 004.

Obviously no one at Micro Power found or checked this basic code BITD either.

Luckily I kept a spreadsheet of all errors and amendments to BBC games that I found and changed.

regards,
Mick.

User avatar
paulv
Posts: 3618
Joined: Tue Jan 25, 2011 6:37 pm
Location: Leicestershire
Contact:

Re: A broken Ghoul

Postby paulv » Thu Nov 03, 2016 9:33 pm

Why do

Code: Select all

3280I=GET:IFI<>32GOTO3280


instead of

Code: Select all

3280REPEAT UNTIL GET=32


?

Paul

Andrew_Waite
Posts: 34
Joined: Tue Aug 30, 2016 2:58 pm
Contact:

Re: A broken Ghoul

Postby Andrew_Waite » Sun Nov 06, 2016 6:02 pm

Ghouls was one one of my favourate Electron games. Thank you for posting, it is very interesting to see the code in the raw!

Bandits at 3 O'Clock was another great game, much of it written in basic.

User avatar
Lardo Boffin
Posts: 978
Joined: Thu Aug 06, 2015 6:47 am
Contact:

Re: A broken Ghoul

Postby Lardo Boffin » Sun Nov 06, 2016 7:54 pm

Andrew_Waite wrote:Ghouls was one one of my favourate Electron games. Thank you for posting, it is very interesting to see the code in the raw!

Bandits at 3 O'Clock was another great game, much of it written in basic.


You're welcome! I had started a thread about favourite underrated games viewtopic.php?f=1&t=12046 maybe you can add these and any other to this?
BBC model B 32k issue 4, 16k sideways RAM, Watford 12 ROM board, Retroclinic Datacentre + HDD, Viglen twin 40/80 5.25" discs, acorn cassette, Acorn 6502 coproc
BBC model B 32k issue 7, turboMMC, Opus Challenger 3 512k, Pi 3 coproc
BBC Master