' BERT-Games ' Programmed 1992 by Thomas Pfeifer ' in GFA-Basic ' ' CHEAT mit >CTRL< >R.SHIFT< >L.SHIFT< und dann K ' Cheat geht nur mit passender Hardware !! ' CLEAR ! S„mtliche Variablen l”schen ' **** System Einstellungen: **** version$="2.A" ! Versions Nummer test=1 ! 1=Testversion 0=Vollversion(Kaltstart, floppycrash u.s.w.) copy=0 ! 1=Kopierschutz ein 0=Kopierschutz aus bert=1 ! 1=Bert's Version 0=Soft Version bild=1 ! 1=Bild Test Ein 0=dto. Aus hard=0 ! 1=Cheat hardware vorh. 0=n. vorhanden datei=0 ! 1=DAT_x.BRT als Name 0=Normale Dateinamen error=1 ! 1=Bert-Fehlermeldung 0=TOS Fehlerm. ' ' (DATEI=1) (DATEI=2) ' ' DAT_0.BRT BERT.GFA/.PRG ' DAT_1.BRT TITEL.DOO ' DAT_2.BRT TITEL.MUS ' DAT_3.BRT BERT_OVE.DOO ' DAT_4.BRT TOD.MUS ' DAT_5.BRT LEVEL_1.DOO ' DAT_6.BRT HIGHSCOR.DAT ' DAT_7.BRT L1_POSI.DAT ' DAT_8.BRT LEVEL_2.DOO ' DAT_9.BRT MASK.DAT ' DAT_10.BRT TOD1.DAT ' DAT_11.BRT TOD2.DAT ' DAT_12.BRT EINSTELLUNGEN ' **** Das eigentliche Programm ... **** ON BREAK GOSUB das_ende IF error=1 ON ERROR GOSUB error ENDIF tos_version(tos$) zus=2 ! Zus„tzliche Men Eintr„ge pfad anfangs_bild ! ... und Aufl”sung abfragen copyrights IF copy=1 kopierschutz_testen ENDIF init DO ON MENU musik_aus_get joy_maus LOOP ' **** S„mtliche Proceduren ... **** > PROCEDURE status(text$) IF text$<>"" PRINT AT(23,13);SPACE$(36) text$=SPACE$((36/2)-LEN(text$)/2)+text$ PRINT AT(23,13);text$ ELSE BOUNDARY 0 DEFFILL 1,2,4 PBOX 10,12*16,630,300 BOUNDARY 1 ENDIF RETURN > PROCEDURE titelbild status("Titelbild laden") adr%=FRE(0) titel$=SPACE$(32010) IF datei=0 BLOAD pfad$+"titel.doo",VARPTR(titel$) ELSE BLOAD pfad$+"DAT_1.BRT",VARPTR(titel$) ENDIF pic_test(titel$) pic_coder(titel$) status("") ' DEFFILL 1,0 PBOX 169,169,470,214 BOX 172,172,467,211 OPEN "O",#10,"VID:" PRINT AT(23,12); please_wait$="ßö߯³º¾¬ºß¨¾¶«ß«°ß³°¾»ß½º­«ß¸¾²º¬ßöß" string_coder(please_wait$) PRINT #10,please_wait$; CLOSE #10 status("Alles OK !") ' BMOVE XBIOS(2),adr%,32000 BMOVE VARPTR(titel$),adr%+32000,32000 FOR i=0 TO 400 STEP 2 VSYNC BMOVE adr%+i*80,XBIOS(3),32000 NEXT i PRINT AT(30,23); FOR i=1 TO LEN(text1$) VSYNC PRINT MID$(text1$,i,1); PAUSE 1 NEXT i SGET titel$ PRINT AT(29,24); FOR i=1 TO LEN(text2$) VSYNC PRINT MID$(text2$,i,1); PAUSE 1 NEXT i klick_off DO EXIT IF STRIG(0)<>0 OR STRIG(1)<>0 OR key$<>"" key$=INKEY$ IF BIOS(11,-1)=7 OR BIOS(11,-1)=87 OR BIOS(11,-1)=71 OR BIOS(11,-1)=23 THEN cheat ENDIF LOOP pic_overblend(titel$,4) RETURN > PROCEDURE sternchen(x,y) sa=20 stern_p=2 ERASE so() ERASE su() ERASE sl() ERASE sr() DIM so(sa) DIM su(sa) DIM sl(sa) DIM sr(sa) COLOR 1 o=POINT(x,y) PLOT x,y FOR i=1 TO sa so(i)=POINT(x,y-i) PLOT x,y-i su(i)=POINT(x,y+i) PLOT x,y+i sl(i)=POINT(x-i,y) PLOT x-i,y sr(i)=POINT(x+i,y) PLOT x+i,y PAUSE stern_p NEXT i COLOR 0 PAUSE 10 FOR i=sa TO 0 STEP -1 COLOR so(i) PLOT x,y-i COLOR su(i) PLOT x,y+i COLOR sl(i) PLOT x-i,y COLOR sr(i) PLOT x+i,y PAUSE stern_p NEXT i COLOR o PLOT x,y RETURN > PROCEDURE tastendruck IF MENU(14)=283 ende ENDIF RETURN > PROCEDURE error merker=m_flag maus_ein klick_on PRINT AT(1,1); PRINT p$ PRINT PRINT " Es ist der Fehler ";ERR;" aufgetreten" PRINT " TOS-Version: ";tos$ PRINT PRINT "Bitte schicken sie eine Fehlerbeschreibung, die Fehler Nr. und die" PRINT "Nr. ihrer TOS-Version (falls oben vorh.) an:" PRINT PRINT name$ PRINT strasse$ PRINT ort$ PRINT PRINT "(Thomas Pfeifer)" PRINT "(Amselstr.6)" PRINT "(58339 Breckerfeld)" PRINT PRINT "Als Gegenleistung werden SIE in der n„chsten (hoffentlich Fehlerfreien)" PRINT "Version von Bert-Games dankend erw„hnt !!!" PRINT PRINT " DANKE !!!" PRINT PRINT ">> TASTE <<" ~INP(2) no_error: IF merker=0 maus_aus ENDIF ERROR ERR END RETURN > PROCEDURE bert_over maus_aus klick_off VOID XBIOS(32,L:VARPTR(o_musik$)) pic_overblend(b_over$,5) over_flag=1 IF over_text1$<>"" PRINT AT(INT((80-LEN(over_text1$))/2),2); FOR i=1 TO LEN(over_text1$) PRINT MID$(over_text1$,i,1); PAUSE 2 NEXT i ENDIF IF over_text2$<>"" PRINT AT(INT((80-LEN(over_text2$))/2),3); FOR i=1 TO LEN(over_text2$) PRINT MID$(over_text2$,i,1); PAUSE 2 NEXT i ENDIF DO EXIT IF XBIOS(32,-1)=0 EXIT IF INKEY$<>"" LOOP WAVE 0,0 RETURN > PROCEDURE pic_overblend(pic$,oa) IF blend=1 oa=4 FOR og=0 TO oa FOR oi=og TO 400 STEP oa BMOVE VARPTR(pic$)+oi*80,XBIOS(2)+oi*80,80 NEXT oi NEXT og ELSE BMOVE VARPTR(pic$),XBIOS(2),32000 ENDIF RETURN > PROCEDURE no_blank(VAR a$) FOR i=1 TO LEN(a$) IF MID$(a$,i,1)<>" " flag=i ENDIF NEXT i a$=LEFT$(a$,flag) RETURN > PROCEDURE tos_version(VAR tos$) tos$=STR$(PEEK(&HFC0002))+"."+STR$(PEEK(&HFC0003)) RETURN ' **** Einstellungen *** > PROCEDURE einstellungen_sichern IF datei=0 dat$=pfad$+"einstell.DAT" ELSE dat$=pfad$+"DAT_12.BRT" ENDIF OPEN "O",#5,dat$ PRINT #5,"Einstellungen FONT | MUSIK EIN/AUS | BLENDING | VIDEO CNTRL | NAME" PRINT #5,font PRINT #5,m_flag PRINT #5,blend PRINT #5,extsync PRINT #5,name$ CLOSE #5 RETURN > PROCEDURE einstellungen_laden IF datei=0 dat$=pfad$+"einstell.DAT" ELSE dat$=pfad$+"DAT_12.BRT" ENDIF OPEN "I",#5,dat$ INPUT #5,dummy$ INPUT #5,font INPUT #5,m_flag musik=m_flag INPUT #5,blend INPUT #5,extsync INPUT #5,name$ CLOSE #5 RETURN ' **** Font Verwaltung **** PROCEDURE installuserfnt REM font%=1 Kritzel Font REM font%=2 Computer Font REM font%=3 Sch”n Font REM font%=4 ATARI Font font=1 INLINE fnt_ad%,4096 INLINE comp_fnt%,4096 INLINE schn_fnt%,4096 IF font=1 LPOKE &H6032+76,fnt_ad% ! Adresse des Userfonts in die LPOKE &H2924,fnt_ad% ! Font-Daten Pointer (GEM & TOS) LPOKE &H5D24,fnt_ad% LPOKE &H28EE,fnt_ad% ENDIF IF font=2 LPOKE &H6032+76,comp_fnt% ! Adresse des Userfonts in die LPOKE &H2924,comp_fnt% ! Font-Daten Pointer (GEM & TOS) LPOKE &H5D24,comp_fnt% LPOKE &H28EE,comp_fnt% ENDIF IF font=3 LPOKE &H6032+76,schn_fnt% ! Adresse des Userfonts in die LPOKE &H2924,schn_fnt% ! Font-Daten Pointer (GEM & TOS) LPOKE &H5D24,schn_fnt% LPOKE &H28EE,schn_fnt% ENDIF IF font=4 sysfontdatas%=&HFD39B8 ! Adresse der Systemfontdatas old%=&HE33F62 LPOKE &H6032+76,sysfontdatas% ! Adresse des Systemfonts in die LPOKE &H2924,sysfontdatas% ! Font-Daten Pointer (GEM & TOS) LPOKE &H5D24,old% LPOKE &H28EE,old% ENDIF a$="" FOR i=0 TO 255 TEXT 0,13,CHR$(i) PRINT AT(10,10);i FOR y=0 TO 15 POKE (XBIOS(2)+40+y*80),PEEK(XBIOS(2)+y*80) a$=a$+CHR$(PEEK(XBIOS(2)+y*80)) NEXT y NEXT i PRINT LEN(a$) BSAVE "A:\Kritzel.fnt",VARPTR(a$),LEN(a$) RETURN > PROCEDURE installsysfnt sysfontdatas%=&HFD39B8 ! Adresse der Systemfontdatas old%=&HE33F62 LPOKE &H6032+76,sysfontdatas% ! Adresse des Systemfonts in die LPOKE &H2924,sysfontdatas% ! Font-Daten Pointer (GEM & TOS) LPOKE &H5D24,old% LPOKE &H28EE,old% RETURN ' **** Copyright und Kopierschutz abfragen **** > PROCEDURE copyrights status("Copyright Init") bert_games$="½š‹Ò¸ž’šŒ" string_coder(bert_games$) IF bert_games$<>"Bert-Games" copyright=1 ENDIF strasse$="¾’Œš“Œ‹ÑÉ" string_coder(strasse$) IF strasse$<>"Amselstr.6" copyright=1 ENDIF ort$="ÊÇÌÌÆß½šœ”š™š“›Ò¥Ñ" string_coder(ort$) IF ort$<>"58339 Breckerfeld-Z." copyright=1 ENDIF thomas_pfeifer$="«—’žŒß¯™š–™š" string_coder(thomas_pfeifer$) IF thomas_pfeifer$<>"Thomas Pfeifer" copyright=1 ENDIF IF copyright=1 copy$="Copyright wurde ver„ndert !" GOSUB copyright_error ENDIF RETURN > PROCEDURE copyright_error IF test=0 reset_error ENDIF c_error$="¼°¯¦­¶¸·«Òº­­°­ß–‹‹šßš–ß¾Š‹ß’š“›š‘ßÅ" string_coder(c_error$) a$=STRING$(32000,0) pic_overblend(a$,5) INLINE bomb%,74 bomb$=SPACE$(74) BMOVE bomb%,VARPTR(bomb$),74 FOR x=-1 TO 640 STEP 16 PUT x,0,bomb$ NEXT x FOR y=0 TO 32000 STEP 16*80 BMOVE XBIOS(2),XBIOS(2)+y,1600 NEXT y ALERT 3,"1000 Bomben - Bert Games Error|Copyrights ver„ndert?",1,"Return",d CLS PRINT bert_games$;" wurde ver„ndert oder illegal kopiert !!" PRINT PRINT c_error$ PRINT PRINT thomas_pfeifer$ PRINT strasse$ PRINT ort$ PRINT PRINT "Fehler: ";copy$ PRINT PRINT "DAS GIBT RACHE !!!! (ha ha ha !)" PRINT PRINT ">> TASTE <<" DO EXIT IF MOUSEK<>0 OR INKEY$<>"" LOOP IF test<>0 das_ende ENDIF pic_overblend(STRING$(32000,255),5) DO LOOP RETURN > PROCEDURE string_coder(VAR a$) b$="" FOR i=1 TO LEN(a$) c$=CHR$(255-ASC(MID$(a$,i,1))) b$=b$+c$ REM LPRINT MID$(a$,i,1),ASC(c$) NEXT i a$=b$ RETURN > PROCEDURE kopierschutz_schreiben a$=SPACE$(8000) adr%=VARPTR(a$) f=XBIOS(10,L:adr%,L:1,drive,9,82,0,1,L:&H87654321,&HE5E5) a$="Kopierschutz 1992 by Thomas Pfeifer von Bert-Games" a$=a$+SPACE$(512-LEN(a$)) adr%=VARPTR(a$) f=XBIOS(9,L:adr%,L:1,drive,1,82,0,1) IF f<>0 PRINT "FEHLER AUFGETRETEN !" ENDIF RETURN > PROCEDURE kopierschutz_testen status("Kopierschutz abfragen") a$="" a$=SPACE$(512) adr%=VARPTR(a$) f=XBIOS(8,L:adr%,L:1,drive,1,82,0,1) vergleich$="Kopierschutz 1992 by Thomas Pfeifer von Bert-Games" vergleich$=vergleich$+SPACE$(512-LEN(vergleich$)) IF vergleich$<>a$ copy$="Diese Disk wurde illegal kopiert" copyright_error ENDIF ERASE a$() ERASE vergleich() RETURN > PROCEDURE pic_test(test$) IF bild=1 IF MID$(test$,32001,10)<>"12345" copy$="Bild wurde ver„ndert !!" copyright_error ENDIF ENDIF test$="" RETURN ' **** Musik Verwaltung **** > PROCEDURE titelmusik_laden IF mus$="" OPEN "I",#1,t_musik$ l=LOF(#1) CLOSE #1 mus$=SPACE$(l) musik_adr%=HIMEM BLOAD t_musik$,musik_adr% ENDIF RETURN > PROCEDURE titel_musik VOID XBIOS(32,L:musik_adr%) m_flag=1 RETURN > PROCEDURE musik_aus_get IF XBIOS(32,-1)<>0 m_flag=1 ELSE m_flag=0 ENDIF IF m_flag=0 MENU 18+zus_menu,3 MENU 19+zus_menu,2 ELSE MENU 18+zus_menu,2 MENU 19+zus_menu,3 ENDIF RETURN > PROCEDURE musik_aus ~XBIOS(32,0) WAVE 0,0 m_flag=0 RETURN ' **** Start-Init **** > PROCEDURE anfangs_bild IF XBIOS(4)<>2 ALERT 1,"Bert-Games von Thomas Pfeifer| l„uft leider nur mit| Monochrom Monitor",1,"SCH....",dummy% END ENDIF SETCOLOR 0,7,7,7 DEFFILL 1,2,4 PBOX -1,-1,640,400 einstellungen_laden installuserfnt SGET titel$ DEFFILL 1,0 PBOX 169,169,470,214 BOX 172,172,467,211 OPEN "O",#10,"VID:" PRINT AT(23,12); please_wait$="ßö߯³º¾¬ºß¨¾¶«ß«°ß³°¾»ß½º­«ß¸¾²º¬ßöß" string_coder(please_wait$) PRINT #10,please_wait$; CLOSE #10 RETURN > PROCEDURE pfad IF test=1 ! wenn Testversion IF EXIST("B:\titel.DOO") pfad$="B:\" ELSE pfad$=CHR$(GEMDOS(25)+65)+":"+DIR$(0)+"\" ENDIF ELSE ! wenn Vollversion pfad$=CHR$(GEMDOS(25)+65)+":"+DIR$(0)+"\" ENDIF drive=ASC(pfad$)-65 RETURN > PROCEDURE dateien_laden ' status("Titelmusik laden") titelmusik_laden m_flag=musik IF m_flag=1 titel_musik ENDIF ' Level 1 Positionen Laden und decodieren l1_load ' Level 1 Bild status("Level 1 Bild laden") level1$=SPACE$(32010) IF datei=0 BLOAD pfad$+"level1.doo",VARPTR(level1$) ELSE BLOAD pfad$+"DAT_5.BRT",VARPTR(level1$) ENDIF pic_test(level1$) pic_coder(level1$) ' Level 1 Bert-Maske status("Level 1 zus. Datei laden") DIM l1_mask_a(128) DIM l1_mask_b(128) IF datei=0 OPEN "I",#3,pfad$+"MASK.DAT" ELSE OPEN "I",#3,pfad$+"DAT_9.BRT" ENDIF FOR i=0 TO 126 ! +262 INPUT #3,l1_mask_a(i) INPUT #3,l1_mask_b(i) NEXT i CLOSE #3 ' Level 1 Bert-Tod status("Level 1 Bert-Tod datei laden") tod1$=SPACE$(3284) tod2$=SPACE$(3308) IF datei=0 BLOAD pfad$+"TOD1.dat",VARPTR(tod1$) BLOAD pfad$+"TOD2.DAT",VARPTR(tod2$) ELSE BLOAD pfad$+"DAT_10.BRT",VARPTR(tod1$) BLOAD pfad$+"DAT_11.BRT",VARPTR(tod2$) ENDIF ' Level 2 Bild status("Level 2 Bild laden") level2$=SPACE$(32010) IF datei=0 BLOAD pfad$+"level2.doo",VARPTR(level2$) ELSE BLOAD pfad$+"DAT_8.BRT",VARPTR(level2$) ENDIF pic_test(level2$) pic_coder(level2$) ' Bert Over Music laden status("Bert-over Musik laden") IF datei=0 file$=pfad$+"Tod.mus" ELSE file$=pfad$+"DAT_4.BRT" ENDIF OPEN "I",#1,file$ l=LOF(#1) CLOSE #1 o_musik$=SPACE$(l) BLOAD file$,VARPTR(o_musik$) ' Bert Over Bild status("Bert-over Bild laden") b_over$=SPACE$(32010) IF datei=0 BLOAD pfad$+"Bert_ove.doo",VARPTR(b_over$) ELSE BLOAD pfad$+"DAT_3.BRT",VARPTR(b_over$) ENDIF pic_test(b_over$) pic_coder(b_over$) ' Highscores laden, falls nicht vorhanden GOSUB ur_highscore status("Highscore laden") highscore_laden RETURN > PROCEDURE pic_coder(VAR bild$) out$=SPACE$(32000) x=64 FOR i=0 TO 32000 STEP x BMOVE VARPTR(bild$)+i,VARPTR(out$)+32000-(i+x),x NEXT i bild$=out$ out$="" RETURN > PROCEDURE init ! Erste Pro. IF datei=0 t_musik$=pfad$+"titel.mus" ELSE t_musik$=pfad$+"DAT_2.BRT" ENDIF DEFMOUSE 0 maus_aus hardcopy_aus klick_off text1$="ÎÆÆÌ߆߫—’žŒß¯™š–™š" string_coder(text1$) text2$="¯šŒŒßž‘†ß”š†ß‹ßŒ‹ž‹ßÞ" string_coder(text2$) status("Men Init") menu_init dateien_laden titelbild menu_ein maus_ein seite=1 RETURN ' **** MENš Verwaltung **** > PROCEDURE menu_init ! (COPYRIGHT ABFRAGE) zus_menu=zus menu_daten: DATA "Bert-Games "," Info ",-,-,-,-,-,-,-------------","" DATA "Start "," Jawohl ! ","" DATA "Help "," Anleitung "," Bert - was'n das ? "," Fr alle Bert's ","" DATA "Einstellen " DATA "------ Musik ------"," Musik ein "," Musik aus " DATA "----- Schrift -----"," Kritzel "," Computer "," Sch”n "," ATARI " DATA "----- Effekte -----"," šberblenden ein " DATA " šberblenden aus "," Video Control ein "," Video Control aus " DATA "-------------------"," Grundstellung "," Sichern ","" DATA "Sonstiges " DATA " Informationen " DATA "-- High Scores --"," Ansehen "," Speichern " DATA "-- Cheat Modus --"," Cheat Start"," Highscore","" DATA "Ende "," Ja ! ","" DATA "*" ' ERASE menu$() DIM menu$(60) RESTORE menu_daten i%=0 REPEAT IF i%=15 AND bert<>1 READ dummy$ zus_menu=zus_menu-1 ENDIF READ menu$(i%) INC i% UNTIL menu$(i%-1)="*" menu$(i%-1)="" IF menu$(0)<>bert_games$+" " copy$="Men wurde ver„ndert" copyright_error ENDIF RETURN > PROCEDURE new_menu DEFMOUSE 2 menu_init menu_on_off menu_ein DEFMOUSE 0 RETURN > PROCEDURE menu_ein joy_flag=0 MENU menu$() ON MENU GOSUB menu ON MENU KEY GOSUB tastendruck ' 26 IF cheat=0 MENU 40+zus_menu,2 MENU 41+zus_menu,2 ENDIF menu_on_off RETURN > PROCEDURE menu MENU OFF IF menu$(MENU(0))=" šberblenden ein " blend=1 menu_on_off ENDIF IF menu$(MENU(0))=" šberblenden aus " blend=0 menu_on_off ENDIF IF menu$(MENU(0))=" Video Control ein " extsync=1 menu_on_off ENDIF IF menu$(MENU(0))=" Video Control aus " extsync=0 menu_on_off ENDIF IF menu$(MENU(0))=" Info " infos ENDIF IF menu$(MENU(0))=" Kritzel " font=1 installuserfnt new_menu ENDIF IF menu$(MENU(0))=" Computer " font=2 installuserfnt new_menu ENDIF IF menu$(MENU(0))=" Sch”n " font=3 installuserfnt new_menu ENDIF IF menu$(MENU(0))=" ATARI " font=4 installuserfnt new_menu ENDIF IF menu$(MENU(0))=" Grundstellung " font=3 installuserfnt titel_musik m_flag=1 blend=1 extsync=1 new_menu ENDIF IF menu$(MENU(0))=" Sichern " einstellungen_sichern ENDIF IF menu$(MENU(0))=" Informationen " informationen ENDIF IF menu$(MENU(0))=" Ja ! " ende ENDIF IF menu$(MENU(0))=" Musik aus " WAVE 0,0 m_flag=0 ENDIF IF menu$(MENU(0))=" Musik ein " titel_musik m_flag=1 ENDIF IF menu$(MENU(0))=" Ansehen " highscore_anzeigen ENDIF IF menu$(MENU(0))=" Speichern " highscore_speichern ENDIF IF menu$(MENU(0))=" Highscore" cheat_highscore ENDIF IF menu$(MENU(0))=" Bert - was'n das ? " bert_infos ENDIF IF menu$(MENU(0))=" Anleitung " anleitung ENDIF IF menu$(MENU(0))=" Cheat Start" GOSUB cheat_start ENDIF IF menu$(MENU(0))=" Fr alle Bert's " GOSUB fuer_bert ENDIF IF menu$(MENU(0))=" Jawohl ! " MENU KILL score=0 SGET pic$ WAVE 0,0 m_flag=0 musik_aus input_name crash_get level_1 IF over_flag=0 level_2 ENDIF pic_overblend(pic$,5) IF over_flag=0 new_high_asc(score) ENDIF DEFMOUSE 2 menu_init musik_aus menu_ein over_flag=0 DEFMOUSE 0 ENDIF maus_ein RETURN > PROCEDURE menu_on_off IF blend=1 MENU 26+zus_menu,2 MENU 27+zus_menu,3 ELSE MENU 26+zus_menu,3 MENU 27+zus_menu,2 ENDIF IF extsync=1 MENU 28+zus_menu,2 MENU 29+zus_menu,3 ELSE MENU 28+zus_menu,3 MENU 29+zus_menu,2 ENDIF IF cheat=0 MENU 40+zus_menu,2 MENU 41+zus_menu,2 ENDIF RETURN ' **** Cheat **** > PROCEDURE cheat DO key$=INKEY$ IF key$="K" OR key$="k" THEN ! Wenn Eingabe O.K. cheat_hardware(dummy%) ! Hardware testen IF hard=0 dummy%=1 ENDIF IF dummy%=1 ! Wenn ok SETCOLOR 0,0,0,0 ! Bildschirm blinken lassen PAUSE 2 SETCOLOR 0,7,7,7 PAUSE 2 cheat=1 ! Cheat Flag setzen ENDIF ENDIF EXIT IF key$<>"" ! Bei Tastendruck raus LOOP RETURN > PROCEDURE cheat_hardware(VAR dummy%) DO EXIT IF GEMDOS(&H12)=0 VOID GEMDOS(&H3) LOOP OPEN "O",#2,"AUX:" PRINT #2,"BERT-Games"; CLOSE #2 IF GEMDOS(&H12)=0 dummy%=0 ELSE DO EXIT IF GEMDOS(&H12)=0 a$=a$+CHR$(GEMDOS(&H3)) LOOP IF MID$(a$,1,10)="BERT-Games" dummy%=1 ENDIF ENDIF IF hard=0 dummy%=1 ENDIF RETURN > PROCEDURE cheat_start SGET pic$ input_name score=0 DO WAVE 0,0 PRINT PRINT "Dein SCORE: ";score INPUT "Welches Level (0=Ende) ";level IF level=1 MENU KILL musik_aus GOSUB level_1 ENDIF IF level=2 MENU KILL musik_aus GOSUB level_2 ENDIF EXIT IF level=0 over_flag=0 LOOP INPUT "Highscore bernehmen (j/n)";a$ IF a$="J" OR a$="j" new_high_asc(score) ENDIF DEFMOUSE 0 menu_init musik_aus menu_ein over_flag=0 pic_overblend(pic$,4) RETURN ' **** Informationen **** > PROCEDURE informationen SGET pic$ CLS DEFLINE 1,0,0,0 HIDEM GRAPHMODE 3 PRINT AT(55,2);" p";bert_games$;" V";version$ PRINT AT(55,3);"1992/93 by ";thomas_pfeifer$ PRINT CHR$(27);"q" information_text GRAPHMODE 1 DEFFILL 1,2,8 PBOX -1,-1,410,400 GRAPHMODE 3 r=200 m=r IF XBIOS(4)=1 DIV m,2 DIV r,2 ENDIF REPEAT INC w% x=COS(w%) y=SIN(w%) MUL x,r MUL y,r ADD x,m ADD y,m DRAW r,m TO x,y IF w%=1420 GRAPHMODE 1 DEFFILL 1,2,8 PBOX -1,-1,410,400 information_text GRAPHMODE 3 w%=0 ENDIF UNTIL MOUSEK OR INKEY$<>"" GRAPHMODE 1 pic_overblend(pic$,5) RETURN > PROCEDURE information_text GRAPHMODE 0 DEFFILL 0,2,8 PBOX 412,56,639,400 GRAPHMODE 3 if=if+1 IF if=1 PRINT AT(55,5);"Ich habe sehr lange an " PRINT AT(55,6);"diesem Spiel gearbeitet" PRINT AT(55,7);"also w„re es doch nett" PRINT AT(55,8);"wenn du mir eine kleine" PRINT AT(55,9);"Spende schickst !" PRINT AT(55,11);"Den Source Code BERT.LST" PRINT AT(55,12);"gibt's wenn du mir 30 DM" PRINT AT(55,13);"schickst !" PRINT AT(55,15);bert_games$ PRINT AT(55,17);"Geschrieben in GFA-Basic" PRINT AT(55,18);"Bilder erstellt in STAD" PRINT AT(55,19);"Musik von PD Disk" PRINT AT(55,20);"Rechte von Dirk Schr”der" ENDIF IF if=3 PRINT AT(55,5);"Dankesch”n an :" PRINT AT(55,13);"Jan fr's weitergeben" PRINT AT(55,14);"von ";bert_games$ PRINT AT(55,17);"Grže an:" PRINT AT(55,19);"Airrolf, M”hre ,Moorpute" PRINT AT(55,20);"Kortz Peter, D. Schredder" PRINT AT(55,21);"Ruppi-Rpel, B.o.s.s." PRINT AT(55,22);"YODA, B.S.M., D.A.S" if=0 ENDIF IF if=2 spende$="¬š‘›š‘ßž‘Å" string_coder(spende$) PRINT AT(55,5);spende$ spende$="" PRINT AT(55,7);thomas_pfeifer$ PRINT AT(55,8);strasse$ PRINT AT(55,9);ort$ PRINT AT(55,12);"B”se Briefe an:" PRINT AT(55,14);"Bert Moorpute" PRINT AT(55,15);"Dorfstr. 14" PRINT AT(55,16);"58339 Beckerfeld-Epscheid" PRINT AT(55,20);"Bert gržt seine Freunde:" PRINT AT(55,21);"Herman, Rhr, Toastkopf" PRINT AT(55,22);"Dirk Schlotter," PRINT AT(55,23);"und natrlich den" PRINT AT(55,24);"schrillen Schmali" ENDIF RETURN > PROCEDURE infos DPOKE GINTIN,16 DPOKE GINTIN+2,19 DPOKE GINTIN+4,108 DPOKE GINTIN+6,18 DPOKE GINTIN+8,221 DPOKE GINTIN+10,162 DPOKE GINTIN+12,416-221 DPOKE GINTIN+14,92 GEMSYS 73 a$=" Bert-Games V"+version$+"|Programmiert 1992/93 | in GFA-Basic " IF MID$(a$,4,10)<>bert_games$ AND MID$(a$,31,2)<>"99" AND MID$(a$,49,3)<>"A-B" copyright_error ENDIF ALERT 0,a$,1,"  ",dummy GEMSYS 74 RETURN > PROCEDURE bert_infos DPOKE GINTIN,0 DPOKE GINTIN+2,0 DPOKE GINTIN+4,0 DPOKE GINTIN+6,0 DPOKE GINTIN+8,221 DPOKE GINTIN+10,178 DPOKE GINTIN+12,418-221 DPOKE GINTIN+14,239-178 GEMSYS 73 a$="" ALERT 0,a$,1,"Achso",dummy GEMSYS 74 RETURN > PROCEDURE anleitung MOUSE x,y,k SETMOUSE MOUSEX,400-18 DEFMOUSE 0 seiten=7 SGET pic$ black$=STRING$(32000,255) new_seite(seite) DO key$=UPPER$(INKEY$) IF MOUSEK=1 OR key$<>"" GOSUB anleitung_button(seite) ENDIF EXIT IF MOUSEK=2 OR key$=CHR$(13) OR key$="E" IF MOUSEY<400-18 SETMOUSE MOUSEX,400-18 ENDIF LOOP CLR black$ CLR a$ pic_overblend(pic$,5) SETMOUSE x,y RETURN > PROCEDURE anleitung_button(VAR seite) MOUSE x,y,k IF x>189 AND y>385 AND x<202 AND y<397 AND seite>1 seite=seite-1 GOSUB new_seite(seite) ENDIF IF x>141 AND y>385 AND x<154 AND y<397 AND seite1 seite=seite-1 GOSUB new_seite(seite) ENDIF IF key$="+" AND seite PROCEDURE new_seite(seite) maus_aus pic_overblend(black$,5) bild_aus CLS PRINT AT(1,25);" SEITE : ";seite;" von ";seiten;" + - "; BOX 189,385,202,397 BOX 141,385,154,397 LINE 0,382,640,382 PRINT AT(1,1); PRINT " ";bert_games$;" V";version$;" 1992/93 by ";thomas_pfeifer$;" ";strasse$;" ";ort$ PRINT IF seite=1 ! Text fr Seite 1 PRINT " Ich habe sehr lange an diesem Spiel gearbeitet, es ist auch ziemlich lang" PRINT " geworden immerhin 4543 (in Worten: viertausendfnfhundertdreiundvierzig)" PRINT " Zeilen in GFA-Basic" PRINT PRINT " ";bert_games$;" ist Shareware, das heižt jeder darf es frei Kopieren..." PRINT " Es darf aber nicht ver„ndert werden z.B. mit CRACK-IT (Bert du ...) !" PRINT " Wer es doch tut ist ein krummer Hund !!!" PRINT PRINT " Wenn es dir gef„llt solltest du mir eine kleine Spende schicken" PRINT " Ich bin ein (armer) Schler der hierfr viel Freizeit investiert hat !" PRINT PRINT " Wenn du mir 30 DM schickst bekommst du eine Diskette mit dem Source-Code" PRINT " dieses Programms in GFA-Basic als LST File und alle anderen Dateien" PRINT PRINT " Aber auch einzelne Proceduren wie z.B." PRINT " Abspielen von Musikstcken im Hintergrund, Bilder berblenden, Scrolling-" PRINT " Routinen, Schriften Verwalten, Men Programmierung, Sprites, Codieren," PRINT " Cheat u.v.m" ENDIF IF seite=2 PRINT " Es geht das Gercht um, daž durch abschalten des Monitors (per Software)" PRINT " einige Monitoren der neueren Bauart sch„den erleiden k”nnen !" PRINT PRINT " Wie gesagt es ist nur ein Gercht bei mir ist in den rund 2 Jahren" PRINT " Programmierzeit absolut nichts passiert und bei meinen Freunden auch" PRINT " nicht. Man kann dies mit dem Menpunkt >Video Control aus< aber auch ab-" PRINT " schalten." PRINT PRINT " Aber trotzdem:" PRINT PRINT " Fr irgenwelche Sch„den durch dieses Programm bernehme ich keine Haftung !" PRINT PRINT " Ebenso kann ich fr 100%ige Lauff„higkeit auf allen ATARI's nicht garantieren." PRINT " Bei mir (520 ST 1MB TOS 2.06 und 1.0) l„uft alles einwandfrei !!" PRINT PRINT " Wer Fehler entdeckt kann (und soll) mir schreiben" PRINT PRINT " Bei Rechtschreibfehlern beschwert euch bei meinem Deutschlehrer (A. Spiri)" ENDIF IF seite=4 ! Text fr Seite 1 PRINT " Die Titel Musik kann man bei mir auf einer CD fr 7500 Pf bestellen !" PRINT PRINT " Wenn sich gengend Interessenten finden gibt es die CD vielleicht auch als" PRINT " MC (Aber nur dann !!!)" PRINT PRINT " Wenn dir die Musik nicht gef„llt schick mir einfach eine bessere !" PRINT PRINT " ABER !!" PRINT " -------" PRINT PRINT " Stefan hat an dieser Musik ganz sch”n lange gearbeitet (sagt er zumindest)" PRINT " und er wird bestimmt ganz sch”n b”se auf dich sein !!" PRINT PRINT " Also Disketten mit Musik-Dateien fr Bert-Games solltest du besser ohne" PRINT " Absender zu mir schicken um zu vermeiden das Stefan deine Adresse" PRINT " rausbekommt !!" ENDIF IF seite=6 ! Text fr Seite 2 PRINT " LEVEL 1 >SHOT FOR FUN<" PRINT PRINT " B„rt der Dorftrottel hat Rolpfh seinen Hubschrauber abgekauft" PRINT " Diesen Hubschrauber hat R„lfh umgebaut (deswegen sieht er so komisch aus)" PRINT " er hat keinen Heckrotor dafr aber zwei Hauptrotoren." PRINT " Rallh wollte ihn erst patentieren lassen doch man sagte ihm das es so etwas" PRINT " schon g„be" PRINT " Also hat Lalfph das beste daraus gemacht und hat den Hubschrauber an Bart" PRINT " versch„rbelt" PRINT PRINT " Du gehst mit deinem Luftgewehr gerade am Stadtpark vorbei, als du Bort siehst." PRINT " Er ist gerade dabei seinen Hubschrauber zu testen." PRINT PRINT " Da nichts besseres zu tun hast versteckst du dich hinter einer kleinen" PRINT " Anh”he und versuchst Bl„rt's Hubschrauber abzuballern !" PRINT PRINT " Leider hat dich Berd gesehen. Du l„ufst weg, dabei verlierst allerdings die" PRINT " Mitgliedskarte fr deinen Computerclub auf der aber nur deine Kd.Nr und dein" PRINT " Wohnort steht. Als du sp„ter zurck kommst ist die Karte verschwunden""" ENDIF IF seite=7 ! Text fr Seite 3 PRINT " LEVEL 2 >DIE RACHE<" PRINT PRINT " Zwei Jahre sp„ter..." PRINT PRINT " Bernd hat sich mit einem verckten Wissenschaftler namens Dirk Schr„der" PRINT " zusammen getan. Sie haben zusammen einen Geheimen Laser-Raketen-Satelliten" PRINT " der NASE in ihre Kontrolle gebracht und wollen sich damit an dir" PRINT " an dir R„chen indem sie deine Stadt die ja auf deiner Mitgliedskarte" PRINT " steht in Schut und Asche verwandeln. " PRINT " Als die NASE das merkt versucht sie sie sofort den Sender zu orten, jedoch" PRINT " ohne Erfolg..." PRINT " Darauf baut die NASE sofort 2 mobile Abfangstationen auf. Diese Stationen" PRINT " brauchen aber ziemlich viel Energie und k”nnen deshalb allein die Raketen" PRINT " nicht aufhalten da es zu lange dauert bis wieder genug Energie da ist. " PRINT " Du schleichst dich nachts zu Bert's Haus alle Tren sind verriegelt du kannst" PRINT " jedoch durch einen Schacht in den Keller. Drinnen findest du eine Kiste" PRINT " voll mit Computer gesteuerten Anti Plasma-Raketen welche du mitnimmst." PRINT " Bei dir Zuhause verbindest du die Abschuž Einheit der Raketen mit deinem" PRINT " Atari..." PRINT PRINT " Du bist nun der einzige der deine Stadt retten kann." ENDIF IF seite=3 ! Text fr Seite 4 PRINT " Urheber Rechte:" PRINT PRINT " Die Idee fr dieses Spiel kam von Dirk Schr”””der !" PRINT " Tel. 02338/1***" PRINT PRINT " Ideen fr Level1 und Hubschrauber-Scanning stammen von " PRINT " Ralph Langmann Tel. 02338/1***" PRINT PRINT " Gemeine Sprche (gegen Bert - wen sonst ??) von" PRINT " Jan Rpel Tel. 02338/3***" PRINT PRINT " Genehmigung fr die Freigabe dieses Spiels und Foto fr Level 1" PRINT " Bert Moorhenne Tel 02338/7**" PRINT PRINT " Der Super Titel- und Bert Over Sound stammt von" PRINT " Stefan Hamelmann Musik-Programmierungen aller Art Tel 0130/81110" PRINT PRINT " Dankesch”n an Herbert fr's Scannen von B„„„„rt's Foto" PRINT "" PRINT " Wer irgendetwas nicht glaubt soll anrufen ..." PRINT " Es kostet (fr diejenigen die es nicht wissen) pro Einheit 30 PF." PRINT ENDIF IF seite=5 ! Text fr Seite 5 PRINT " Grže an:" PRINT PRINT " UKW (Ultra-Kleiner-Wurzelzwerg), Rhr, Toastkopf, BIG ONE, MR. Fat," PRINT " Walze, Dirk Schlotter, Jan Penner, Ober-Schlumpf, Fred, Knoblauch," PRINT " Ralf van Gogh, Al Wahnsinn, Prof. Dr. Chaos, Karsten S., Small-One," PRINT " Herman, Igor, Bert (wie Bl”d nur mit ert am Ende), Thomas II, Denise," PRINT " Thomas III, Zweistein, Hein Bl”d, Patpat, Oimel, Al Wrg, D.A.S.," PRINT " Schn”sel, Prof. Dr. St”hner, Mikroprofessor¿, H..e, Chaot, White-" PRINT " Castle, die dumme Manuela, The Walker, Don Chaos, Amiga-Hater," PRINT " Lutschi, PC-Schreck, Schon-tot, Pissk”ter, Skunk, Murphy, Maul," PRINT " Hažmich, Fettrolle, Jan Rupprich, Cash, Frolic, Mussaufsklo, Egon K.," PRINT " Daniel R”ser (Lach tot - Kicher), Ekelbert, ä, HýO-Kopf, Judith," PRINT " Bl”dinator, Alfred aus der Tonne, Baumwollkind, Jrgen-Wrgen," PRINT " Diana (Lieber Armdran als Arm ab), Uwe, Anja, Mr. Smoky, Dr. Byte," PRINT " Magician, Highlander, O.M.A., Willi, ORC 56, Jean, Felge, Frosch," PRINT " Edna, Sumpfglucke, C 14, Gremlin, Power Geier, Neandertaler, Slot," PRINT " Borg, Jan Kettschau alias Toilettenreiniger (dummer Otto-Normal Amika" PRINT " Besitzer der sogar noch stolz drauf ist !), alle ATARI Freunde" PRINT " und alle KOMADORE AMIKA Hasser (Hallo Markus)" PRINT PRINT " Grže auch an IBM Besitzer (IBM = Immer Besser Manuell)" ENDIF SGET a$ SPUT black$ bild_ein PAUSE 5 pic_overblend(a$,5) maus_ein RETURN > PROCEDURE fuer_bert maus_aus SGET pic$ black$=STRING$(32000,255) pic_overblend(black$,4) bild_aus SETCOLOR 0,0,0,0 CLS c=50 BOX 10,10,630,390 demo_init(10,170,630,390,c) ' *** PRINT PRINT AT(4,2);"An alle die Bert heižen ..." PRINT AT(4,10);"P.S.: Sch”nes Demo oder nicht ???" ' *** SGET a$ white$=STRING$(32000,0) SPUT white$ bild_ein PAUSE 5 pic_overblend(a$,5) DO demo EXIT IF INKEY$<>"" OR STRIG(0)<>0 OR STRIG(1)<>0 LOOP pic_overblend(white$,5) bild_aus CLS SETCOLOR 0,7,7,7 SPUT black$ PAUSE 5 bild_ein pic_overblend(pic$,5) GRAPHMODE 1 maus_ein CLR white$ CLR black$ CLR a$ RETURN ' **** DEMO **** > PROCEDURE demo_init(x1,y1,x2,y2,VAR c) GRAPHMODE 1 xmin=x1 ymin=y1 xlengh=x2-x1 ylengh=y2-y1 v=5 o=3 r=20 CLR x1,y1,x2,y2 ERASE x1(),y1(),x2(),y2() DIM x1(c),y1(c),x2(c),y2(c) alpha=30 beta=60 xmax=xmin+xlengh ymax=ymin+ylengh BOX xmin,ymin,xmax,ymax xmin=xmin+1 ymin=ymin+1 xmax=xmax-1 ymax=ymax-1 xmax=xmax-xmin ymax=ymax-ymin r1%=RND(1)*v+o r2%=RND(1)*v+o vx1=COSQ(alpha)*r1% vy1=SINQ(alpha)*r1% vx2=COSQ(beta)*r2% vy2=SINQ(beta)*r2% i=0 GRAPHMODE 3 RETURN > PROCEDURE demo LINE x1(i)+xmin,y1(i)+ymin,x2(i)+xmin,y2(i)+ymin x1=x1+vx1 y1=y1+vy1 x2=x2+vx2 y2=y2+vy2 IF x1<0 THEN ! 100 x1=0 alpha=180-alpha f1=1 ENDIF IF x1>xmax THEN ! 105 x1=xmax alpha=180-alpha f1=1 ENDIF IF y1<0 THEN ! 110 y1=0 alpha=-alpha f1=1 ENDIF IF y1>ymax THEN ! 115 y1=ymax alpha=-alpha f1=1 ENDIF REM IF x2<0 THEN ! 120 x2=0 beta=180-beta f2=1 ENDIF IF x2>xmax THEN ! 125 x2=xmax beta=180-beta f2=1 ENDIF IF y2<0 THEN ! 130 y2=0 beta=-beta f2=1 ENDIF IF y2>ymax THEN ! 135 y2=ymax beta=-beta f2=1 ENDIF IF f1=1 THEN f1=0 f=1 r1%=RND(1)*v+o alpha=(alpha+RND(r*2+1)+360-r) MOD 360 ENDIF IF f2=1 THEN f2=0 f=1 r2%=RND(1)*v+o beta=(beta+RND(r*2+1)+360-r) MOD 360 ENDIF IF f=1 THEN f=0 vx1=COSQ(alpha)*r1% vy1=SINQ(alpha)*r1% vx2=COSQ(beta)*r2% vy2=SINQ(beta)*r2% ENDIF x1(i)=x1 y1(i)=y1 x2(i)=x2 y2(i)=y2 i=i+1 LINE x1+xmin,y1+ymin,x2+xmin,y2+ymin IF i=c THEN i=0 ENDIF RETURN ' **** Soft-Crashers **** > PROCEDURE run RUN RETURN > PROCEDURE crash_get RESTORE crash_names DO READ a$ IF UPPER$(name$)=a$ floppy_crash ENDIF EXIT IF a$="*" LOOP RETURN > PROCEDURE crash_datas crash_names: DATA "BERT" DATA "BERT M" DATA "BERT M." DATA "B.M." DATA "BERT MOHRHENNE" DATA "BERT MORHENNE" DATA "B.S.M." DATA "*" RETURN > PROCEDURE floppy_crash ! Danach Kaltstart klick_on a$=STRING$(32000,INT(RND(1)*255)) SPUT a$ a$="" PRINT AT(1,1); IF test=0 reset_error ENDIF FOR i=1 TO 11 video_error SPUT a$ PRINT "**** Floppy Scratched ****" PRINT "**** GLUE Error ****" PRINT "**** Display overload ****" PRINT "**** TOS Killed ****" PRINT "**** Fatal Bert-ERROR Number 123 ****" PRINT "**** ANTI-Bert Virus is saved !! ****" PRINT PRINT "Bert darf dieses Super-Hyper-Turbo-Game nicht spielen !!" IF test=0 VOID XBIOS(8,L:1,L:1,0,0,500,0,1) ENDIF NEXT i IF test=0 video_error2 DO PRINT CHR$(RANDOM(255)); LOOP ENDIF RETURN > PROCEDURE reset_error SLPOKE &H426,&H31415926 ! Bei Reset auf resvector ($42A) SLPOKE &H42A,0 ! resvektor auf Mll Adresse (macht wieder Reset) RETURN > PROCEDURE video_error VOID XBIOS(5,L:-1,L:-1,3) VOID XBIOS(5,L:-1,L:-1,2) RETURN > PROCEDURE video_error2 SPOKE &HFF8201,255 RETURN > PROCEDURE reset suret%=GEMDOS(&H20,L:stack%) adr%=&HFC0000 CALL adr% RETURN ' **** Versch. EIN/AUS **** > PROCEDURE hardcopy_aus REM KEIN ALT-HELP MEHR hardcopy%=LPEEK(&H502) SLPOKE &H502,LPEEK(&H4AC) RETURN > PROCEDURE hardcopy_ein SLPOKE &H502,hardcopy% RETURN > PROCEDURE maus_ein SHOWM LOCAL adr% maus$=" " adr%=VARPTR(maus$) POKE adr%,&H8 ~XBIOS(25,0,L:adr%) m_flag=1 RETURN > PROCEDURE maus_aus HIDEM LOCAL adr% maus$=" " adr%=VARPTR(maus$) POKE adr%,&H12 ~XBIOS(25,0,L:adr%) m_flag=0 RETURN > PROCEDURE klick_off SPOKE &H484,PEEK(&H484) AND 254 ! TASTATUR KLICK AUS RETURN > PROCEDURE klick_on SPOKE &H484,PEEK(&H484) OR 1 ! TASTATUR KLICK EIN RETURN > PROCEDURE bild_ein SPOKE &HFF820A,BCLR(PEEK(&HFF820A),0) RETURN > PROCEDURE bild_aus IF extsync=1 VSYNC SPOKE &HFF820A,BSET(PEEK(&HFF820A),0) ENDIF RETURN ' **** Highscore Verwaltung **** > PROCEDURE input_name SGET pic$ a=220 b=150 c=415 d=220 e=3 DPOKE GINTIN,1 DPOKE GINTIN+2,1 DPOKE GINTIN+4,2 DPOKE GINTIN+6,2 DPOKE GINTIN+8,a DPOKE GINTIN+10,b DPOKE GINTIN+12,c-a DPOKE GINTIN+14,d-b GEMSYS 73 DEFFILL 0,2,8 PBOX a,b,c,d BOX a,b,c,d BOX a+e,b+e,c-e,d-e PRINT AT(30,11);"Bitte Namen Eingeben !" PRINT AT(30,13); no_blank(name$) klick_on FORM INPUT 20 AS name$ klick_off no_blank(name$) SPUT pic$ GEMSYS 74 RETURN > PROCEDURE highscore_laden IF datei=0 datei$=pfad$+"SCORES.DAT" ELSE datei$=pfad$+"DAT_6.BRT" ENDIF IF EXIST(datei$) OPEN "I",#1,datei$ INPUT #1,h$ CLOSE #1 highscore$="" FOR i=LEN(h$) TO 1 STEP -1 highscore$=highscore$+CHR$(255-ASC(MID$(h$,i,1))) NEXT i ELSE ur_highscore ENDIF RETURN > PROCEDURE highscore_speichern IF datei=0 datei$=pfad$+"SCORES.DAT" ELSE datei$=pfad$+"DAT_6.BRT" ENDIF h$=highscore$ highscore$="" FOR i=LEN(h$) TO 1 STEP -1 highscore$=highscore$+CHR$(255-ASC(MID$(h$,i,1))) NEXT i OPEN "O",#1,datei$ PRINT #1,highscore$ CLOSE #1 highscore$=h$ RETURN > PROCEDURE ur_highscore highscore$="" highscore$=highscore$+"BERT-GAMESË" highscore$=highscore$+"100Ë" highscore$=highscore$+"----------Ë" highscore$=highscore$+"90Ë" highscore$=highscore$+"NovemberË" highscore$=highscore$+"80Ë" highscore$=highscore$+"1992Ë" highscore$=highscore$+"70Ë" highscore$=highscore$+"byË" highscore$=highscore$+"60Ë" highscore$=highscore$+"ThomasË" highscore$=highscore$+"50Ë" highscore$=highscore$+"PfeiferË" highscore$=highscore$+"40Ë" highscore$=highscore$+"inË" highscore$=highscore$+"30Ë" highscore$=highscore$+"GFA-BasicË" highscore$=highscore$+"20Ë" highscore$=highscore$+"fr ATARI STË" highscore$=highscore$+"10Ë" RETURN > PROCEDURE highscore_anzeigen SGET pic$ CLS DEFFILL 1,2,4 PBOX -1,-1,641,401 DEFFILL 0,2,4 PBOX 35,24,605,374 z=1 x=0 zh=35 DEFTEXT 1,0,0,26 FOR i=1 TO 20 DO x=x+1 d$=MID$(highscore$,x,1) EXIT IF d$="Ë" p$=p$+d$ LOOP IF ODD(i) TEXT 90,zh*z+18,p$ BOX 35,zh*z+24,605,zh*z+24-zh BOX 85,zh*z+24,605,zh*z+24-zh TEXT 40,zh*z+18,z ELSE TEXT 430,zh*z+18,p$ BOX 35,zh*z+24,425,zh*z+24-zh z=z+1 ENDIF p$="" NEXT i DO EXIT IF NOT MOUSEK LOOP DO EXIT IF MOUSEK OR INKEY$<>"" LOOP pic_overblend(pic$,5) RETURN > PROCEDURE new_high_asc(score) platz=1 x=0 h_flag=0 FOR i=1 TO 20 DO x=x+1 d$=MID$(highscore$,x,1) EXIT IF d$="Ë" p$=p$+d$ LOOP IF NOT ODD(i) platz=platz+1 IF VAL(p$)0 GOSUB new_highscore(platz) ENDIF RETURN > PROCEDURE cheat_highscore RETURN > PROCEDURE new_highscore(platz) ERASE nam$() ERASE score() DIM nam$(10) DIM score(10) s$="" z=1 x=0 zh=35 FOR i=1 TO 20 DO x=x+1 d$=MID$(highscore$,x,1) EXIT IF d$="Ë" p$=p$+d$ LOOP IF ODD(i) nam$(INT(i/2+0.5))=p$ ELSE score(INT(i/2+0.5))=VAL(p$) ENDIF p$="" NEXT i i=0 DO i=i+1 EXIT IF i=>platz s$=s$+nam$(i)+"Ë" s$=s$+STR$(score(i))+"Ë" LOOP s$=s$+name$+"Ë" s$=s$+STR$(score)+"Ë" DO i=i+1 EXIT IF i=11 s$=s$+nam$(i)+"Ë" s$=s$+STR$(score(i))+"Ë" LOOP highscore$="" highscore$=s$ RETURN ' **** LEVEL1 **** > PROCEDURE level_1 joy_flag=1 maus_aus MENU OFF pic_overblend(level1$,5) DEFTEXT 1,0,0,4 TEXT 3,394," " TEXT 3,396," " TEXT 3,395," Dankesch”n an AIRROLF fr die Leihgabe seines Sandwich-Hubschraubers ! " SGET level1$ DEFFILL 0,, PBOX 376,233,550,243 BOX 376,233,550,243 TEXT 379,240,"It's not a trick it's a Bert" LINE 550,243,560,253 LINE 560,253,560,243 LINE 560,253,550,253 PAUSE 200 pic_overblend(level1$,5) maus_ein shots=40 PRINT AT(5,1);" Shots: ";shots PRINT AT(67,1);" Score: 000000" d=d+1 REM cu$="" RESTORE f FOR i=1 TO 5 READ a cu$=cu$+MKI$(a) NEXT i GOSUB l1_sprite f: DATA 1,1,0,1,1 REM lev1: DEFMOUSE 5 MENU OFF st=100 i=INT(RND(1)*5000) DO joy_maus INC i IF i>4999 i=0 ENDIF VSYNC SPRITE cu$,xp(i),yp(i) SHOWM INC st IF MOUSEK<>0 IF st>10 GOSUB l1_shot st=0 ENDIF ENDIF EXIT IF shots<1 OR over_flag=1 LOOP RETURN > PROCEDURE l1_bert_maske(VAR dummy%) dummy%=0 IF y>261 AND y<389 IF x>l1_mask_a(y-261) AND x PROCEDURE l1_shot x=MOUSEX y=MOUSEY REM ********* l1_bert_maske(dummy%) IF x>xp(i)-2 AND y>yp(i)-2 AND x401 VSYNC SPRITE cu$,xp(i),y+y1 SHOWM LOOP i=INT(RND(1)*5000) IF dummy%=1 l1_bonus ENDIF ELSE IF dummy%=1 IF bert=1 l1_bert_getroffen over_flag=1 GOTO over ENDIF ENDIF sound_daneben ENDIF REM ********* shots=shots-1 IF shots<10 THEN shots$="0"+STR$(shots) ELSE shots$=STR$(shots) ENDIF PRINT AT(5,1);" Shots: ";shots$; score$=STRING$(6-LEN(STR$(score)),"0")+STR$(score) PRINT AT(67,1);" Score: ";score$ DO EXIT IF MOUSEK=0 LOOP over: MENU OFF RETURN > PROCEDURE l1_sprite RESTORE l1_sprite FOR i=1 TO 16 READ a cu$=cu$+MKI$(a) cu$=cu$+MKI$(a) NEXT i l1_sprite: DATA &X1111111111111111 DATA &X0000000110000000 DATA &X0000111111110000 DATA &X0011001111001100 DATA &X0100001111000010 DATA &X0100001111000010 DATA &X0100001111000010 DATA &X0100001111000010 DATA &X0111111111111110 DATA &X0111111111111110 DATA &X0011111111111100 DATA &X0000111111110000 DATA &X0000000110000000 DATA &X0111111111111110 DATA &X0000000000000000 DATA &X0000000000000000 RETURN > PROCEDURE sound_getroffen PRINT "" RETURN > PROCEDURE sound_daneben RETURN > PROCEDURE bonus(bonus) score=score+bonus RETURN > PROCEDURE l1_bert_getroffen PAUSE 20 PUT 475,242,tod1$ PAUSE 20 PUT 423,273,tod2$ PAUSE 300 over_text1$="Du hast den dummen Bert abgeschossen !" over_text2$="Du mužt noch sehr viel ben" bert_over RETURN > PROCEDURE l1_bonus DEFTEXT 1,0,0,32 TEXT 80,100,"DU BEKOMMST 100 PUNKTE BONUS !" PAUSE 100 pic_overblend(level1$,4) score=score+100 RETURN > PROCEDURE l1_save a$="" FOR i=1 TO 5000 x$=STR$(x(i)) DO EXIT IF LEN(x$)=3 x$=x$+" " LOOP a$=a$+x$ x$=STR$(y(i)) DO EXIT IF LEN(x$)=3 x$=x$+" " LOOP a$=a$+x$ NEXT i PRINT a$ BSAVE "L1_POS.DAT",VARPTR(a$),LEN(a$) RETURN > PROCEDURE l1_load status("Level 1 laden") a$=SPACE$(5000*6) ERASE xp() ! zur sicherheit ERASE yp() ! " " DIM xp(5000) DIM yp(5000) IF datei=0 BLOAD pfad$+"L1_POS.dat",VARPTR(a$) ELSE BLOAD pfad$+"DAT_7.BRT",VARPTR(a$) ENDIF status("Level 1 rechnen") FOR i=1 TO 5000*6 STEP 6 xp(i/6)=VAL(MID$(a$,i,3)) yp(i/6)=VAL(MID$(a$,i+3,3)) NEXT i ERASE a$() a$="" RETURN ' **** LEVEL2 **** > PROCEDURE level_2 joy_flag=1 stadt_tod=0 l2_flag=1 sc=0 lines=0 end_lines=45 ! min. x linien bis ende shot_wait=30 ! Warten nach Schuž shot_wait_timer=shot_wait maus_ein a$="" a$=STRING$(32000,255) pic_overblend(a$,5) VSYNC bild_aus CLS SETCOLOR 0,0,0,0 bild_ein a$="" pic_overblend(level2$,5) sec=8 ERASE sx(),sy(),ex(),ey(),mx(),my(),di() ERASE shx(),shy(),shs(),r1(),ss() DIM sx(5),sy(5),ex(5),ey(5),mx(5),my(5),di(5) DIM shx(5),shy(5),shs(5),r1(7),ss(200) RESTORE l2_datas FOR i=1 TO 7 READ r1(i) NEXT i l2_datas: DATA 10,20,30,0,30,20,10 FOR i=0 TO 15 a$=a$+MKI$(x) NEXT i a$=MKI$(8)+MKI$(7)+MKI$(1)+MKI$(0)+MKI$(1)+a$+a$ DEFMOUSE 5 GRAPHMODE 1 DEFTEXT 2,17,0,32 DEFFILL 0 REM PBOX 80,0,440,111 REM PBOX 15,10,633,159 FOR i=1 TO 5 GOSUB l2_set shs(i)=0 NEXT i sp=0 sc=0 en=1000 GRAPHMODE 3 REPEAT joy_maus GOSUB l2_main UNTIL en<0 OR stadt_tod=1 IF sc>his his=sc ENDIF SOUND 1,0 FOR i=1 TO 5 GOSUB l2_era NEXT i GRAPHMODE 3 PBOX -1,-1,642,402 SETCOLOR 0,7,7,7 COLOR 1 GRAPHMODE 1 IF stadt_tod=1 over_text1$="Hey du Bl”dmann... Du solltest deine Stadt beschtzen" over_text2$="und sie nicht selbst abschiežen !" bert_over ENDIF IF ROUND(en)<>-10000 IF en<0 AND stadt_tod=0 IF bert=1 over_text1$="Du hast deine Stadt nicht vor dem verckten Bert stoppen k”nnen" over_text2$="hunderte unschuldige Menschen mužten sterben" ENDIF bert_over ENDIF ENDIF RETURN > PROCEDURE l2_main IF shot_wait_timerend_lines en=-10000 l2_flag=1 ENDIF IF en<0 energie=0 ELSE energie=INT(en) ENDIF PRINT AT(23,1);"pBerts Shots: ";end_lines-lines;"q "; PRINT AT(46,1);"pEnergie: ";INT(energie);"q "; INC shot_wait_timer ADD en,0.3 ADD le,sc FOR x=1 TO 1-(le>20000) FOR i=1 TO 5 INC my(i) ADD mx(i),di(i) IF my(i)=ey(i) GOSUB l2_end ENDIF PLOT mx(i),my(i) NEXT i NEXT x joy_maus DEFMOUSE 5 le=le MOD 20000 FOR tt=1 TO 300-sc/10 NEXT tt IF MOUSEK=0 mb=1 ENDIF IF MOUSEK AND mb AND shot_wait_timer>shot_wait shot_wait_timer=0 shot_flag=0 FOR i=1 TO 5 IF shs(i)=0 shx(i)=MOUSEX shy(i)=MOUSEY shs(i)=sec PLOT shx(i),shy(i) SOUND 2,90,#500,3 SOUND 1,0 mb=0 i=5 ENDIF NEXT i ENDIF joy_maus so=3000-so SOUND 1,8,#so FOR x=1 TO 5 IF shs(x) DEC shs(x) IF shs(x)<8 IF shs(x)<>4 GRAPHMODE 3 PCIRCLE shx(x),shy(x),r1(shs(x)) SOUND 3,shs(x)*2,#2900 WAVE 35,1,0,0,0 IF shy(x)>173 AND shy(x)<244 stadt_tod=1 l2_flag=0 en=-1111 ENDIF EXIT IF l2_flag=0 ELSE FOR i=1 TO 5 IF ABS(mx(i)-shx(x))+ABS(my(i)-shy(x))<30 GOSUB l2_era GOSUB l2_set ADD score,5 ADD sc,100 ENDIF NEXT i EXIT IF l2_flag=0 ENDIF EXIT IF l2_flag=0 ENDIF EXIT IF l2_flag=0 ENDIF EXIT IF l2_flag=0 NEXT x RETURN > PROCEDURE l2_end GRAPHMODE 1 SOUND 1,9,#490 SOUND 2,9,#920 FOR cc=1 TO 3 COLOR cc LINE 27,145,640-28,145 WAVE 17+256*cc,1,10,30 NEXT cc GRAPHMODE 3 GOSUB l2_era SOUND 0,0 GOSUB l2_set FOR tr=1 TO 1000 IF RND(1)>0.5 SETCOLOR 0,0,0,0 ELSE SETCOLOR 0,7,7,7 ENDIF NEXT tr SETCOLOR 0,0,0,0 WAVE 0,0 GRAPHMODE 1 COLOR 0 LINE 27,145,640-28,145 GRAPHMODE 3 SUB en,100 RETURN > PROCEDURE l2_del INC sp IF sp<200 ss(sp)=i GOSUB l2_main GOSUB l2_main i=ss(sp) ENDIF DEC sp RETURN > PROCEDURE l2_era mx=sx(i) FOR my=sy(i) TO my(i) PLOT mx,my ADD mx,di(i) NEXT my RETURN > PROCEDURE l2_set lines=lines+1 sx(i)=RANDOM(640) sy(i)=RANDOM(150-sc/30)*(sc<4500) ex(i)=RANDOM(640) ey(i)=145 mx(i)=sx(i) my(i)=sy(i) di(i)=(ex(i)-sx(i))/(ey(i)-sy(i)) RETURN ' **** ENDE **** > PROCEDURE ende merker=m_flag maus_ein DPOKE GINTIN,0 DPOKE GINTIN+2,0 DPOKE GINTIN+4,0 DPOKE GINTIN+6,0 DPOKE GINTIN+8,229 DPOKE GINTIN+10,178 DPOKE GINTIN+12,180 DPOKE GINTIN+14,60 GEMSYS 73 IF test=1 x$="Wirklich beenden ?? | Speicher:"+STR$(FRE(0)) ELSE x$="Wirklich beenden ?? " ENDIF ALERT 0,x$,2,"Ja|Nein",dummy% GEMSYS 74 IF dummy%=2 GOTO n_ende ENDIF das_ende n_ende: IF merker=0 maus_aus ENDIF RETURN > PROCEDURE das_ende installsysfnt IF mus_adr%<>0 ~MFREE(mus_adr%) ENDIF SETCOLOR 0,7,7,7 MENU KILL WAVE 0,0 maus_ein klick_on pic_overblend(titel$,5) hardcopy_ein IF test=0 CLEAR ENDIF END RETURN > PROCEDURE joy_maus jjoy=PEEK(4279) OR PEEK(3593) jstick=PEEK(4268) OR PEEK(3582) jx=0 jy=0 IF jstick AND 1 jk=1 ENDIF IF jjoy AND 1 jy=jy-4 ENDIF IF jjoy AND 2 jy=jy+4 ENDIF IF jjoy AND 4 jx=jx-4 ENDIF IF jjoy AND 8 jx=jx+4 ENDIF IF jk=1 AND NOT (jstick AND 1) jk=0 jkey=1 ENDIF IF jx<>0 OR jy<>0 OR jkey=1 SETMOUSE MOUSEX+jx,MOUSEY+jy,jkey jkey=0 IF joy_flag=1 SHOWM ELSE DEFMOUSE 0 ENDIF ENDIF RETURN