Spring Vogel, Spring
Kennen Sie Jumpman, Miner 2049 oder Mister Robot and his Factory? Dann haben Sie sich sicherlich geärgert, daß Sie nie die letzten Bilder erreicht haben. Oder Sie haben sich über die eintönigen Spielszenen geärgert. Mit dem Listing des Monats wäre das nicht passiert. Spring-Vogel ist eine Kombination aus den drei Spielen. Eines kann jedoch nicht mehr passieren! Wird eines der Bilder langweilig, dann machen Sie sich einfach ein neues.

Tatsächlich kann man Spring-Vogel fast als Spielgenerator bezeichnen. Mit Spring-Vogel gelingt es Ihnen, sich jedes beliebige Spielfeld aufzubauen. Das klingt sehr vielversprechend, und das ist es auch. Spring-Vogel ist ein Vertreter der Jump and Run-Kategorie. Damit lassen sich also keine Schieß- oder Abenteuerspiele erzeugen, aber innerhalb der Spring- und Laufgruppe bleibt kein Wunsch offen. Worum handelt es sich bei Spring-Vogel nun eigentlich? Zunächst die Story.

Ein heftiger Sturm hat einen Vogel – unseren Helden – mitsamt seinen Eiern aus dem Nest geweht. Durch den harten Aufprall auf die Erde hat er sich seine Flügel gebrochen. Er kann also nicht mehr richtig fliegen, sondern nur noch auf dem Boden laufen, hüpfen und springen. Die Aufgaben des Vogels (die genaue Klassifizierung bleibt Ihnen überlassen) besteht nun darin, in einem Labyrinth aus Aufzügen, Transportbändern, Seilen, Einbahnstraßen, Trampolinen, Rutschbahnen, Gummiwänden, magischen Flügeln, gemeinen Vogelfallen und mißgestimmten Monstern alle Eier wieder einzusammeln. Gelingt es dem Vogel, die Eier in einer Spielszene aufzunehmen, muß er mit der nächsten Überraschung fertig werden; es waren nicht alle. Das nächste vom Winde verwehte Bild erwartet ihn mit weiteren schwierigen Aufgaben.

Die Anzahl der Torturen für unseren leidgeprüften Helden bestimmen Sie selbst. Doch Vorsicht, unser Vogel verfügt nicht wie eine Katze über sieben, sondern »nur« über sechs Leben. Und diese sechs Leben sind schnell, durch Kontakt mit den Monstern oder Verzehrern einer roten Tollkirsche, ausgehaucht.

Der Sturz über mehr als vier Etagen ist ebenfalls für den flugunfähigen Vogel lebensbedrohend. Es sei denn, er findet die von seinem Tierschützer verstreuten »magischen Flügel«. Ausgestattet mit deren zauberhaften Fähigkeiten kann er in einem ökologischen Flecken beliebig umherfliegen. Durch Betätigen des Feuerknopfes wird er wieder in seinen behinderten Zustand zurückversetzt, erlangte allerdings vorher die Fähigkeit an unzugänglichen Stellen landen zu können. Diese magischen Flügel gestatten es, Bilder so aufzubauen, daß nur der taktisch gezielte Einsatz dieser Flughilfe es ermöglicht, ein Bild vollständig abzuräumen. Dabei kann es vorkommen, daß sich der Vogel in eine völlig aussichtslose Situation manövriert, und in einer Sackgasse landet. Auch hier bietet das Programm einen Ausweg an, die Funktionstasten. Diese können jederzeit (außer während der Flugphase) benutzt werden.

Die genaue Bedeutung können Sie der Beschreibung zum Listing entnehmen. Um zu sehen, welcher Vogel von welchem Spieler der bessere ist, gibt es auch hier eine Punktezählung. Bei den bereits mitgelieferten Bildern ist diese in Zehnerschritten ab dem ersten Bild gestaffelt.
Entscheidungskriterien
Weshalb wurde dieses Programm zum Listing des Monats auserkoren? Das Hauptkriterium war die Realisierung eines Spielegenerators. Mit dem Editiermodus von Spring-Vogel lassen sich nahezu beliebig viele Bilder konstruieren. Wird ein Bild langweilig, so kann man ohne großen Aufwand ein neues mit noch größeren Schwierigkeiten entwickeln (versuchen Sie aber erst einmal, die beiden bereits existierenden Bilder 5 und 6 zu bewältigen). Der Phantasie sind keine Grenzen gesetzt.
Warum alleine spielen?
Vorstellbar ist ein Wettbewerb unter Freunden, wer das lustigste, das interessanteste, das schwierigste oder das raffinierteste Bild entwirft. Der Programmieraufwand hält sich für ein solch komplexes Programm in relativ bescheidenen Grenzen. Die vorgegebenen Bausteine bieten eine derartige Vielfalt an verschiedenen Bildern, daß jeder nach seinem eigenen Geschmack entwerfen kann. Insgesamt ein Programm, das durch Witz und Programmierkunst überzeugt.
(aa/Matthias Törk)Bei dem ersten Start des Progrmms dauert es einige Zeit (bei weiteren Starts geht es dann schneller), bis sich das Programm mit der Frage »Edit, Wahl oder Spiel?« meldet.
Mit »W« kann man eines der sechs Bilder zum Spielen auswählen, mit »S« wird ein vollständiges Spiel ab Bild 1 gewählt.
Die Funktionstasten haben folgende Bedeutung:
f1: Dieses Spiel aufgeben, zurück zum Menü
f2: diesen Vogel opfern und mit dem nächsten Vogel neu an der Startposition beginnen
f3: mit dem nächsten Bild weitermachen
f5: Pause (weiter mit SPACE)
Für jedes Ei gibt es je nach Bild 10, 20… 60 Punkte. Wird ein Bild in einer bestimmten Zeit beendet, so erhält der Spieler einen Bonus, der um so größer ist, je schneller das Bild beendet wurde.
Der Editor
Der Editor dient dazu, eigene Spiele zu entwickeln. Mit ihm können neue Bilder erstellt werden, die im Programmtext selbst die alten Bilder überschreiben. Deshalb sollte das Programm vor dem Editieren, das neue Spiel nach dem Editieren unter neuem Namen gespeichert werden. Dazu einfach das Programm mit »STOP« abbrechen. Der Editor fragt zunächst, welches Bild geändert werden soll. Dann erscheint dieses Bild mit einem Cursor. Es stehen folgende Funktionen zur Verfügung:
←: die vorgenommenen Änderungen endgültig in den Programmtext übernehmen
f1: Editor verlassen, ohne Änderungen zu übernehmen. Das Bild bleibt erhalten, wie es vor dem Editoraufruf war. In beiden Fällen fragt das Programm, ob das Bild ausprobiert werden soll. Aus dem Spiel gelangt man mit f1 und E jederzeit in den Editor zurück.
Die Cursorsteuerung erfolgt wie gewohnt über die Cursortasten. SHIFT CLR: Bild löschen
Die Startposition des Vogels wird durch »0« festgelegt. In jedes Bild können zwischen 0 und 7 Monster gesetzt werden, die sich horizontal auf einer Breite von acht Spalten hin und her bewegen. Das linkte Ende dieser Bewegungsbahn kann mit den Tasten 1 bis 7 festgelegt werden.
Mit den Tasten A bis T können die 20 verschiedenen Bausteine, die zur Verfügung stehen, gesetzt werden. Der Vogel reagiert immer nur auf das Zeichen unter seinen Füßen. Bei Sprüngen reagiert er (außer bei Wänden) erst in der absteigenden Phase wieder auf Zeichen. Eine Übersicht über die Bausteine bietet die Tabelle 1. Dazu einige ergänzende Bemerkungen:
TASTE | : BAUSTEIN |
A | : BODEN |
B | : LEITER UNTERES ENDE |
C | : LEITER OBERES ENDE |
D | : LEITER MITTELSTÜCK |
E | : SEIL HOCH |
F | : SEIL RUNTER |
G | : EINBAHNSTRASSE RECHTS |
H | : EINBAHNSTRASSE LINKS |
I | : TRANSPORTBAND RECHTS |
J | : TRANSPORTBAND LINKS |
K | : AUFZUG HOCH |
L | : AUFZUG RUNTER |
M | : RUTSCHBAHN RECHTS RUNTER |
N | : RUTSCHBAHN LINKS RUNTER |
O | : TRAMPOLIN |
P | : LUFT, FREIER FALL |
Q | : TOEDLICHE FALLE |
R | : EI |
S | : GUMMI-WAND |
T | :MAGISCHE FLÜGEL |
Die Bausteine A bis D sind durch verschiedene Bewegungsmöglichkeiten gekennzeichnet. Springen ist möglich:
A: rechts, links
B: rechts, links, runter
C: rechts, links, rauf
D: alle vier Richtungen
Bei E bis H ist eine Bewegung nur in jeweils eine Richtung und kein Sprung möglich.
Bei I bis N wird der Vogel automatisch bewegt. Er selbst kann nur springen.
Der Trampolin O bewirkt einen zufälligen Sprung nach rechts oder links.
Bei der Gummiwand S wird der Vogel auf das letzte Zeichen, das weder Wand noch Luft war, zurückgeworfen.
Hinweise zum Eintippen
Da das Problem in die Interruptroutine eingreift und seinen eigenen Programmtext verändert, sollte es auf jeden Fall vor dem ersten Start abgespeichert werden.
Um das Abtippen des Listings zu erleichtern, wurden im Listing alle Steuerzeichen innerhalb von Printbefehlen durch leicht lesbare Worte entsprechend Tabelle 2 ersetzt. Wenn zum Beispiel im Listing <CD> steht, dann ist an dieser Stellle CURSOR DOWN einzugeben.
Im Listing | : zu drückende Taste |
<HO> | :HOME |
<CLR> | :CLR |
<RON> | :RVS ON |
<ROF> | :RVS OFF |
<CD> | :CURSOR DOWN |
<CU> | :CURSOR UP |
<CR> | :CURSOR RIGHT |
<CL> | :CURSOR LEFT |
<F1 >...<F8> | :FUNKTIONSTASTEN |
<BLK>...<YEL> | :FARBEN 0-7 |
[1]...[8] | :FARBEN 8-15, ZIFFER + COMMODORE-TASTE |
Um Tippfehler bei den zahlreichen DATA-Zeilen besser lokalisieren zu können, wurden diese in verschiedene Blöcke mit jeweils eigener Prüfsumme aufgeteilt.
Um das Eintippen der sechs Bilder zu erleichtern, wurden die Zeilen ab 60000 im Kleinschriftmodus gelistet. Hier ist für jeden Großbuchstaben (nicht bei den Ziffern!) die entsprechende Taste zusammen mit SHIFT zu drücken. Hier ist vor allem darauf zu achten, daß jeder PRINT-Befehl genau 39 Zeichen enthält. Fehlende Zeichen können zur Zerstörung des Programms führen, da der Editor diese Zeilen überschreibt.
Daß die jeweils 39 Zeichen genau mit dem Listing übereinstimmen, ist dagegen nicht so wichtig. Durch Abweichungen wird hier allenfalls die Spielbarkeit des vorgegebenen Spiels beeinflußt, ein Mangel, der jederzeit mit dem Editor behoben werden kann. Im Prinzip ist es auch möglich, auf das Abtippen der Bilder 2 bis 6 zu verzichten und an anderer Stelle einfach mit Hilfe des Bildschirmeditors fünfmal das erste Bild zu kopieren. Auf jeden Fall aber muß die Zahl der Zeilen, die Zeilennummer und die Länge der Zeilen mit dem Listing übereinstimmen.
Um das Eintippen der Bilder zu erleichtern, wurden diese in der vorliegenden Programmversion in den Programmtext selbst gelegt. Deshalb ist die Zahl der Bilder auf sechs (diese Zahl wurde gewählt, um die Tipparbeit in erträglichen Grenzen zu halten) festgelegt. Die Anzahl der Bilder kann aber folgendermaßen erhöht werden:
Der Variablen BM in Zeile 50070 ist die gewünschte Anzahl zuzuweisen. Für jedes weitere Bild sind dem Programm entsprechend dem Schema der ersten sechs Bilder 22 PRINT-Zeilen, die jeweils 39 beliebige Zeichen ausgeben, und ein abschließendes RETURN, anzufügen. Die erste Zeilennummer eines Bildes berechnet sich nach der Formel 59900 + Bildnummer*100 + 1, zum Beispiel 60601 für Bild 7.
(Matthias Törk/aa)XS,YS | : Spritekoordinaten des Helden |
XG,YG | : Koordinatengrenzen |
OX,OY | : Koordinatenoffset Sprite/Zeichen |
TG | : Zeitlimit |
BM | : maximale Bildzahl |
BI | : aktuelles Bild |
UP(), DO(), RI(), LE(), DX(), DY() | : Bewegungstabellen |
JU() | : Sprungtabelle |
CO() | : Farbtabelle |
JP,JS | : Joystick |
EZ,EM | : Anzahl Eier |
SC | : Punkte |
MZ | : Anzahl Leben |
CP | : Cursorposition |
BS | : Bildschirmadresse |
FR | : Adresse Farb-RAM |
KO | : Sprite-Kollisionsregister |
V | : VIC-Chip |
ZS | : Adresse Zeichensatz |
EA | : Adresse Bilder |
SI,W1,GL,GH | : Sound |
50000: | INITIALISIERUNG |
48000: | MENUE |
49000: | EDITOR |
45000: | AB BILD BI SPIELEN |
1050: | EIN BILD SPIELEN |
46000: | BILD BI INITIALISIEREN |
500: | JOYSTICK |
600: | FIGUREN BEWEGEN |
40000: | SPRINGEN |
11000: | EI |
2000: | LUFT |
12000: | TOEDLICHE FALLE |
15000: | FLIEGEN |
10 rem *** spring-vogel 9.3.list 11 rem *** m.toerk 17.6.84 20 poke53280,0:poke53281,0 25 print"{clr}nicht wundern und warten!!" 30 gosub50000:goto48000 499 rem ** joystick ** 500 js=peek(jp):if(jsand16)=0thengosub40000:goto600 505 if(jsandq1)=q0thenpokew1,sw:ifup(cm)thenys=ys-q8:goto590 510 if(jsandq2)=q0thenpokew1,sw:ifdo(cm)thenys=ys+q8:goto590 520 if(jsandq4)=q0thenpokew1,sw:ifle(cm)thenxs=xs-q4:goto590 530 if(jsandq8)=q0thenpokew1,sw:ifri(cm)thenxs=xs+q4 590 pokew1,q0 600 ifxs<oxthenxs=ox 620 sys(sr)q0,xs,ys:return 1000 rem *** main loop ** 1050 ifpeek(ta)then1200 1055 ifpeek(ko)andq1thencm=16:pokeko,0:goto1100 1060 cm=usr(xs-ox),ys-oy:ifcm=z8thenxs=8*peek(49426)+ox:ys=8*peek(49427)+oy 1070 ifcm>q7thenxs=xs+dx(cm):ys=ys+dy(cm) 1075 ifti<tgthenprint"{home}",int(ti/100) 1080 ifcm<z4thengosub500:goto1050 1100 oncm-13goto3000,2000,12000,11000,1050,15000 1200 getb$:ifb$="{f1}"thenreturn 1210 ifb$="{f3}"thencm=16:goto1100 1215 ifb$="{f5}"then11040 1217 ifb$="{f7}"thenpoke198,0:wait198,1 1220 goto1050 2000 i=0:pokew1,33 2010 i=i+1:ys=ys+4:ifi>8orys>ygthencm=16:pokew1,0:pokesi+1,gh:goto1100 2015 pokesi+1,40-2*i 2020 gosub600:cm=usr(xs-ox),ys-oy:ifcm=15then2010 2025 ifcm=18thenxs=fnx(xs) 2030 pokew1,0:pokesi+1,gh:ys=fny(ys):goto1050 3000 rx=2-4*int(rnd(1)*2):gosub40100:gosub600:goto1050 10999 rem ** gegenstand positiv, ei** 11000 pokebs+40*peek(49427)+peek(49426),80:sc=sc+bi*10:ez=ez+1 11030 ifez<emthenprint"{home}",,sc:goto1050 11035 ifti<tgthensc=sc+int((tg-ti)/10) 11040 bi=bi+1:ifbi>bmthenreturn 11050 gosub46000:goto1050 11999 : 12000 mz=mz-1:ifmz=0thenreturn 12050 print"{home}",,sc,mid$("****** ",7-mz,6) 12052 pokew1,17 12055 forxs=xstoxxstepsgn(xx-xs):gosub600:pokesi+1,49+(xsand1):next 12057 forys=ystoyystepsgn(yy-ys):gosub600:pokesi+1,52+(ysand1):next 12060 xs=xx:ys=yy:pokeko,0:pokew1,0 12070 goto1050 15000 pokev+29,255:pokebs+40*peek(49427)+peek(49426),80:cm=3:xs=xs-10:sw=17 15050 js=peek(56320) 15052 if(jsand16)=0thenxs=xs+10:pokev+29,254:gosub600:pokeko,0:sw=129:goto1050 15055 ifys<oythenys=oy 15056 ifys>ygthenys=yg 15057 ifxs>xgthenxs=xg 15060 gosub505:goto15050 39999 rem **** jump **** 40000 ifcm>3andcm<8thenreturn 40005 rx=0:if(jsand4)=0thenrx=-2 40010 if(jsand8)=0thenrx=2 40100 pokesi+6,16*15+13:pokew1,17:pokew1,16:fori=0to13 40120 pokesi+1,104-ju(i):ys=ys-ju(i):xs=xs+rx:gosub600 40130 cm=usr(xs-ox),ys-oy: 40140 ifcm=18thenxs=fnx(xs):goto40300 40150 ifi<9thenpokeko,0:goto40250 40235 ifcm<>15or(peek(ko)and1)then40300 40250 next 40300 ifcm<>15thenys=fny(ys) 40310 pokew1,0:pokesi+6,16*15:pokesi+1,gh:return 45000 mz=6:sc=0:gosub46000 45100 gosub1050:pokev+21,0 45150 fori=1to3000:next 45160 print"{clr}{down}{down}{down}{down}{yel}","{grn}das wars!!!":print"{down}erreichte punktzahl:{rvon}",sc 45163 ifsc>hsthenhs=sc 45165 print"{down}high score:{rvon}",,hs 45170 print"{red}-------------------------------------{lblu}":print,"{down}** jump!! **" 45180 if(peek(56320)and16)<>0then45180 45190 return 46000 sys(49155)0:ez=0:xx=120:yy=120 46010 pokew1,0:pokesi,gl:pokesi+1,gh:sw=129:rem sound 46015 a=0:ifti<tgthena=int((tg-ti)/10) 46020 print"{clr}{yel} bonus:",a,"{left}{left}{left}{left}pkt:";sc,mid$("****** ",7-mz,6):print 46030 fori=1to7:pokexh+i,1:pokexl+i,170:pokety+i,0:next 46050 onbigosub60000,60100,60200,60300,60400,60500 46100 em=0:fori=80to958:c=peek(bs+i):ifc=80thennext:goto46200 46105 ifc=82thenem=em+1 46110 ifc>64andc<85thenpokefr+i,co(c-65):next:goto46200 46120 pokefr+i,0:c=c-48:xs=(i-int(i/40)*40)*8+ox:ys=int(i/40)*8+oy 46121 ifc<0orc>7then46140 46130 pokety+c,ys+12:pokexh+c,xs/256:pokexl+c,xsand255:ifc=0thenxx=xs:yy=ys 46140 next 46200 ti$="000000":tg=5000+2000*bi:ys=yy:xs=xx 46220 print"{home}b";bi;"{left} zeit:";" ":return 48000 rem *** menue *** 48040 pokev+21,0:print"{clr}{lblu}{down}":gosub60500 48041 print"{up}{up}{up}{up}{up}","{orng}{rght}Sf1: aufgebenS":print,"{rght}Sf3: _ vogel S" 48042 print,"{rght}Sf5: _ bild S":print,"{rght}Sf7: pause S" 48043 print"{home}{yel}AAAAAAAAAAAA spring vogel AAAAAAAAAAAA" 48044 print"{grn}{rvon}e{rvof}dit, {rvon}w{rvof}ahl oder {rvon}s{rvof}piel"; 48045 inputb$:ifb$="e"thengosub49000:goto48040 48050 ifb$="s"thenbi=1:gosub45000:goto48040 48060 ifb$<>"w"then48040 48070 input"{clr}{down}welches bild spielen";b$:bi=val(b$):ifbi<1orbi>bmthen48070 48080 gosub45000:goto48040 48999 rem *** editor **** 49000 input"{clr}{down}{down}{down}welches bild";b$:bi=val(b$):ifbi<0orbi>bmthen49000 49020 print"bitte warten":zn=59900+bi*100:za=ea 49050 iffnad(za+2)<znthenza=fnad(za):goto49050 49055 poke53281,1:print"{clr}{down}":poke53281,0 49060 onbigosub60000,60100,60200,60300,60400,60500 49069 rem farbe setzen 49070 fori=80to958 49071 c=peek(bs+i)-65:ifc>=0andc<20thenpoke55296+i,co(c):next:goto49095 49075 poke55296+i,1:next 49095 cp=80:print"{home}{lblu}zeichen: {rvon}a-t{rvof} pos: {rvon}0-7{rvof} {rvon}curs.{rvof} {rvon}clr{rvof}" 49096 print"aenderungen uebernehmen: {rvon}_{rvof} quit: {rvon}f1{rvof}" 49100 poke646,peek(cp+55296):poke204,0 49105 getb$:ifb$=""then49105 49110 poke207,0:poke204,1:pokebs+cp,peek(bs+cp)and127 49120 c=asc(b$):ifc>64andc<85thenpoke646,co(c-65):printchr$(c+32);:goto49140 49125 ifb$>="0"andb$<"8"thenprint"{wht}";b$; 49130 ifb$="{down}"orb$="{up}"orb$="{rght}"orb$="{left}"thenprintb$; 49140 ifpeek(211)>38thenprint"{left}"; 49150 cp=peek(211)+40*peek(214):ifcp>=24*40orcp<80thencp=80:print"{home}{down}" 49155 ifb$="{clr}"thenpoke53281,1:print"{clr}{down}":poke53281,0:goto49095 49160 ifb$<>"_"andb$<>"{f1}"then49100 49170 ifb$="{f1}"thenreturn 49200 b=bs+40:print"{home} **** bitte warten *** " 49210 fori=0to21:za=fnad(za):a=za+6:b=b+40 49220 forj=0to38:c=peek(b+j) 49221 ifc>=48andc<=55thenc=c-32:goto49230 49229 ifc<65orc>84thenc=80 49230 pokea+j,c+32:nextj,i 49350 input"{clr}{down}bild spielen (j/n)";b$:ifb$="n"thenreturn 49370 gosub45000:return 49499 return 49999 rem 50000 rem ** init ** 50010 cm=0:xs=0:ys=0:js=0:ox=14:oy=36:t=0:tg=2000 50020 q0=0:q8=8:q4=4:q1=1:q2=2:q7=7:z8=18:z4=14:jp=56320:sr=49249:ta=198 50040 xh=49400:xl=49392:ty=49432 50042 deffny(y)=peek(49427)*8+oy 50045 deffnx(x)=peek(49426)*8+ox 50050 v=53248:bs=256*204:xg=320+ox:yg=200+oy 50060 ko=v+30:fr=55296:rem spr.kollis.reg / farbram 50070 poke786,193:poke785,32:bm=6:rem usr adr.,max.bilder 50090 dimju(13):fori=0to13:readju(i):next 50100 data5,4,3,2,1,1,0,0,-1,-1,-2,-3,-4,-5 50215 fori=bs+1017tobs+1023:pokei,16:next:pokebs+1016,14 50220 pokev+23,0:pokev+29,254:pokev+39,7 50230 dimx(7),y(7),rx(7),ry(1):fori=0to7:x(i)=100:y(i)=100:next 50249 rem mapro-tabellen 50250 fori=1to7:pokev+39+i,i:poke49432+i,30*i:poke49392+i,35*i:poke49400+i,0 50251 poke49416+i,1:poke49408+i,5+rnd(1)*45:next:poke49401,1 50252 poke49424,1:rem sb-flag 50410 dimup(20),do(20),ri(20),le(20),dx(20),dy(20) 50422 ri(0)=1:le(0)=1:ri(1)=1:le(1)=1:up(1)=1:ri(2)=1:le(2)=1:do(2)=1 50437 up(3)=1:do(3)=1:ri(3)=1:le(3)=1:up(4)=1:do(5)=1:ri(6)=1:le(7)=1:dx(8)=4 50477 dx(9)=-4:dy(10)=-8:dy(11)=8:dy(12)=8:dx(12)=8:dy(13)=8:dx(13)=-8:dy(15)=4 50599 rem sound 50600 si=54272:w1=si+4 50620 pokesi+24,15 50625 pokesi+5,0:pokesi+6,15*16+0 50630 gl=180:gh=18:a=0 50710 fori=13to16:forn=0to62:readq:a=a+q:poke49152+i*64+n,q:next:next 50720 ifa<>16572thenprint"dataerror":stop 50800 data0,255,0,1,255,128,1,153,128,1,153,128,3,255,192,31,195,248 50805 data63,227,252,103,243,230,195,249,195,131,253,193,3,255,192 50807 data3,255,192,1,231,128,0,231,0,0,102,0,0,102,0,0,102,0,1,231,128 50809 data,,,,,,,, 50810 data0,255,0,1,255,128,129,153,129,193,153,131,99,255,198,63,195,252 50815 data31,199,248,7,207,224,3,159,192,3,191,192,3,255,192 50817 data3,255,192,1,231,128,0,231,0,0,102,0,0,102,0,0,102,0,1,231,128 50819 data,,,,,,,, 50850 data0,192,0,1,224,0,3,240,0,2,208,0,2,208,0,3,240,0,3,240,0 50855 data3,48,0,15,112,0 50857 data,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 50870 data0,192,0,1,224,0,3,240,0,2,208,0,2,208,0,3,240,0,3,240,0 50875 data3,48,0,3,188,0 50880 data,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 51000 dimco(19):fori=0to19:readco(i):next 51010 data5,5,5,2,10,8,13,13,5,5,4,4,4,4,12,1,2,7,8,14 52000 rem edit-anfangsadr. 52010 deffnad(x)=peek(x)+256*peek(x+1) 52020 ea=2049 52050 iffnad(ea+2)<59800thenea=fnad(ea):goto52050 58000 rem zeichensatz nach $e0000 (zs), viderram nach $cc00 (bs) 58020 zs=14*4096:zv=53248 58040 if(peek(53272)and254)=56thenreturn 58050 poke53272,56:poke56576,148:poke648,204:bs=204*256 58055 print"{clr} geduld":print:gosub60400 58060 poke56334,0:poke1,51 58070 fori=0to2047:pokezs+i,peek(zv+i):next 58075 poke1,55:poke56334,1:a=0 58090 readc:a=a+c:ifc>255then59010 58095 h=zs+8*(c+65):fori=0to7:readc:a=a+c:pokeh+i,c:next 58098 goto58090 58100 data0,255,60,24,24,24,60,255,255 58110 data1,66,66,66,66,255,24,24,255 58120 data2,255,24,24,255,66,66,66,66 58130 data3,66,66,126,66,66,66,126,66 58140 data4,12,24,48,0,12,24,48,0 58150 data5,48,24,12,0,48,24,12,0 58160 data6,255,129,8,4,62,4,8,255 58170 data7,255,129,16,32,124,32,16,255 58180 data8,255,56,28,14,14,28,56,255 58190 data9,255,28,56,112,112,56,28,255 58200 data10,66,66,90,102,102,66,66,66 58210 data11,66,66,102,102,90,66,66,66 58220 data12,192,208,112,56,28,14,7,3 58230 data13,3,7,14,28,56,112,208,192 58240 data14,255,62,12,48,192,48,12,62 58250 data15,0,0,0,0,0,0,0,0 58260 data16,0,126,126,102,102,126,126,0 58270 data17,24,60,60,126,126,126,60,24 58280 data18,0,223,223,0,0,251,251,0 58290 data19,0,102,255,153,153,56,56,0 58299 data999 59000 rem ** mapros ** 59010 ifa<>14182thenprint"data-error in 58100ff":stop 59014 a=0:fori=49152to49378:readn:pokei,n:a=a+n:nexti 59016 ifa<>27365thenprint"data error":stop 59020 data80,70,83,32,158,183,224,8,176,31,189,219,192,45,21,208,141 59022 data21,208,96,32,158,183,224,16,176,14,134,2,32,253,174,32,235 59024 data183,165,21,201,2,144,3,76,72,178,138,72,166,2,32,10,192 59026 data189,219,192,45,16,208,141,16,208,70,21,144,9,189,211,192,13 59028 data16,208,141,16,208,138,10,170,104,157,1,208,165,20,157,0,208 59030 data166,2,189,211,192,13,21,208,141,21,208,96 59099 rem 59100 data32,20,192,173,16,193,73,254,141,16 59102 data193,162,7,189,248,207,24,109,16,193 59104 data157,248,207,202,16,243,169,7,133,2 59106 data166,2,189,0,193,24,125,8,193,157 59108 data0,193,201,64,144,11,189,8,193,73 59110 data254,157,8,193,176,232,234,24,125,240 59112 data192,133,20,42,29,248,192,41,1,234 59114 data234,133,21,189,24,193,32,45,192,198 59116 data2,208,203,173,30,208,96 59140 data253,174,32 59142 data9,185,211,192,13,29,208,141,29,208,70,2,144,9,185,211,192 59144 data13,23,208,141,23,208,96,1,2,4,8,16,32,64,128,254,253 59146 data251,247,239,223,191,127 59190 rem 59195 a=0:fori=49440to49505:readn:a=a+n:pokei,n:next 59196 ifa<>8224thenprint"data error":stop 59200 data32,238,183,102,21,165,20,106,74,74 59202 data133,211,201,40,144,4,169,15,176,42 59204 data133,211,138,74,74,74,133,214,32,108 59206 data229,164,211,177,209,56,233,65,201,20 59208 data144,2,169,15,201,15,240,14,201,18 59210 data240,10,166,211,142,18,193,166,214,142 59212 data19,193,168,76,162,179 59800 return 59999 rem bild 1 60000 : 60001 print"PPPPPPPPPPPPPRPPPPPPPPPPPPPPPPPPPPPPPPS" 60002 print"PPPPLJJJJAAAAAAAAQAAAAPPPIIIITPPPPPPRPS" 60003 print"PPPPLPPPPPEPPPPPPPPPPPPPPPPPPPPPPPPPPPS" 60004 print"PPPPLPPPPPEPPPPPPPPPPPPPPPPPPPPRPPAAAAS" 60005 print"PPPPLPPPPPEPPPPPPPPPPPPPPPPPPAAAAAPPPSS" 60006 print"PPRPLPRPPPEPPPPPPPPSSSSSSSSSPPPPPPPPPSS" 60007 print"PAAACAAAPPEAAAAPPPPPPPPPPPPPPPPPPPPPRSS" 60008 print"PPPPFPPPPPEPPPPPPP2PPPPPPPPPPPPPPPPPPSS" 60009 print"PPPPFPPPPPEPPPPAAAAAAAAAAAAAAAAOAAAAASS" 60010 print"PPPPFPPPPPEPPPRPPPPPPPPPPPPPPPPPPPPPDPP" 60011 print"PPPPFPPPPPEPPAAAAAPPPPPPPPPPPPPPPPPPDPP" 60012 print"PPPPFPPPPPEPPPPPPPPPPPPPPPPPPPPPPPPPDPP" 60013 print"PPP1FPPPPPEPPPPPPPPPPPPPPPPPPPPPPPPPDPP" 60014 print"PPPPFPPPPPEPPPPPPPPPPPPPPPPPRHHHHHHABAC" 60015 print"PPPPPPPPPPEPPPPPPPPRPPPPPP3PFPPPPPPPPPD" 60016 print"PPPPRPPPPPEPPPPPPPPAPPPPPPPPFPPPPPPPPPD" 60017 print"PPPPGGGGGGEPPPPPPPRKRPPPPPPPFPPPPPPPPPD" 60018 print"PPPPPPPPPPPPPPPPPPAKAPPPIIPPFPPPPPPPRPD" 60019 print"PPPPPPPPPPPPPPPPPPPKPPPPKPRPFPPPPRPPAAB" 60020 print"PPPPPPPPPPRPPPPPPPPKPPPPKPPPPPPAAAAPPPP" 60021 print"P0PPRPPPPAAAAIIIRPPKPPPPKAAAAPPPPPPPPPP" 60022 print"AAAAAAAAASSSSSSSAAABAIIIKSSSSSSSSSSSSSS" 60030 return 60100 : 60101 print"PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP" 60102 print"PPPPPRPPRPPPPPPPPPPPPPPPPPPPRPPPRPPPPPP" 60103 print"AARAAAAAAAAPPPAAARPRAAAPPPAAAAAAAAAARAA" 60104 print"PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP" 60105 print"PPRPPPPPIIIIP4PPPPPPPPPPPJJJJPPPPPPPRPP" 60106 print"PPPPPPPPPPPPPRJJJJAIIIIRPPPPPPPPPPPPPPP" 60107 print"PPRIIIIPPPPPPPPPPPPPPPPPPPPPPPJJJJJPRPP" 60108 print"PPPPPPPJJJPPPPPPPPPPPPPPPPPIIIPPPPPPPPP" 60109 print"PPRPPPPPPPJJJJPPPPPPPPPIIIIPPPPPPPPPRPP" 60110 print"PPPPPPPPPPPPPPJJJPPPIIIPPPPPPPPPPPPPPPP" 60111 print"PP0PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP" 60112 print"CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 60113 print"DSPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP" 60114 print"DSPRPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTP" 60115 print"DSPAPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPAP" 60116 print"DSPPP5PPPPPRPPPPPRPPPPPPRPP6PPRPPPPPPPR" 60117 print"DSAACPPPPCAAAAAAAAAAAAAAAAAAAAAAAACAAAA" 60118 print"DPPPDPPPPDPPPPPPPPPPPPPPPPPPPPPPPPDPPPP" 60119 print"DTPPDPPPPDPPPPPPPPPPPPPPPPPPPPPPPPDPPPP" 60120 print"DAPPDPPPPDPPPPRPPRPPPRPPRPPRPPRPPPDPPPR" 60121 print"DPPPDPPP2DPPPPPPPPPPPPP3PPPPPPPPPPDPPPP" 60122 print"BAAABAAAABAAAAAAAAAAAAAAAAAAAAAAAABAAAA" 60150 return 60199 rem bild3 60200 : 60210 print"SSSSRHHPQPJJJCIIIPPPIIIRIIPPPAAAAAAAAAR" 60214 print"PPPSFSPPPPSPPDPSSPPQPPPLPPPPPPPPPPPPPPN" 60216 print"IIRSFSPPPPSPPDPSSPPPPSPLPPPPPPPP0PPPPNP" 60218 print"KPPSFSPPRPSPPDPSSPPPRSPLPPPPPPPPAPPPNPP" 60220 print"KPLSFSPPRPSPPDPSSPPAASPLPPPPPPPPPPPNPPP" 60222 print"KPLSFSPPRPSPPDPSSPPPPPPLPPPPPPPPPPNPPPP" 60224 print"KPLSFSPPPPSPPDPSSAAPPPPLPPPPPPPPPNPPPPP" 60226 print"KPLSFSP5PPPPPDPSPP6PPPPLPPPPPPPPNPPPPPP" 60228 print"KPLSFSPPIILPPDPSPPAAPPPLPPPPPPPNPPPPPPP" 60230 print"KPLSFSPPPPLPPDPSPPPAAPPLPPPPPPNPPPPPPPP" 60234 print"KPLSFSPPPPLPPDPSPPPPPPPLPPPPPNPPSPPPPPP" 60237 print"KPRSFSPPPPLPPDPSAAAPPPPLPPP4NPPPSPPPPRP" 60240 print"KPPSFSPPPPLPPDPSPPPAAAPLPPPNPPPPSPPPAAP" 60244 print"KPPSFSPPPPLPPDPSPPPPPKPLPPRPPPPPSAAAPPP" 60247 print"KPPSFSPPPPIIIDIIIIIIIKPLPPMPPPPPPPPPPPP" 60250 print"KPTSLSPPPPPPPDPPPPPPPPPLPPPMPPPPPPPPAAP" 60254 print"KPPSLSPPPPPPPDPPPPPPPPPLPPPPMPPPSPPP2PP" 60258 print"KJJJJSPPRPP1PDPPPPPPPPPLPPPPPMPPSAAAPPP" 60260 print"PPPPPPPPAAAPPDPPPPPPPPPLPPPPPPMPPPPPPPP" 60263 print"PPPPPPPPPPPPPDPPPPPPPPPLPPPPPPPMPPPPAAA" 60264 print"PPPPPPPPPPPPPDPPPPRPP3PLPPPPPPPPMPPPPPP" 60270 print"AAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAA" 60280 return 60299 rem bild4 60300 : 60301 print"PAAARAAPPPPPPPPPPPPPPPPPPPPPPSSSPRJJJJJ" 60302 print"PPPPPPPIIIIIIIRIIIIICIIIIIIILSSNJJ2PPPK" 60303 print"PPPPPPPPPPPPPPRSSSSSLSEPPPPPLSNPPPPPPPK" 60304 print"PPPIIIIPPPPJJJJSSPPPLSEPPPPPLNPPPPPPPRK" 60305 print"PPPPPPPPPPPP3PPSPPPPLSEPPJAABIPPPIIPPAB" 60306 print"JJJPPPPPPPPPPPPSARSSLSERPPPPPPPPPPPPPPP" 60307 print"PPPPPPPPPPPPPPPSSMSSLSEIPPPPPRPPPPPPPPR" 60308 print"PPPPRJJJPPPPPPPSSSPSLSEPRPPIIIPPPIIPPIC" 60309 print"PPFHHHHHPPJJJPPPPSRSLSEPIPPPPPHHHHHHHHD" 60310 print"PPFSPPPPPPPPPPPPPSPSLSEHHHHHHHPPPPPPPPD" 60311 print"PPFSPPPPPFPPJJJJPSRSLSEPPPPPPPPPPPPPPPR" 60312 print"PRFSPPPPPPPPPPPPPSPSLSEPPRPPPRPPPPPPPPJ" 60313 print"FAHSPPPPPPPPPPIIPSRSLSEPPAPPJJJPPOPPPAP" 60314 print"FPPPPPIIIPIIIPPPPSPSPSPPAHHHHHHHHHHHPPR" 60315 print"FPPPIIIPPPPPPPPPPPPPPPPPSSSSSSSSSSSSAAA" 60316 print"IIIIIGGGGGGGGGGGGGGGGGGGGGLSSSSSSSSSSSS" 60317 print"SDSSSSSSSSSSSSSSSSSSSSSSSSLSSSPPPPPPPPS" 60318 print"SDPSSSSSSSSSSSSSSSSSSSSSSSLSSSPPPRPPPRS" 60319 print"SDRSSSSSSSSSSSSSSSSSSSSSSS0SSSRPPIPPPAS" 60320 print"SDPPPPPPPPPPPPPPPPPPPPPPPPPSSSIPPPPPPPS" 60321 print"SDP1PPPPPPPPPPP4PPPPPPPPPPPPPPPPPP5PPPS" 60322 print"ABAAAAAAAAAAAAJJJJJJJJJJJJAAAAAAAAAAAAS" 60380 return 60399 rem bild5 60400 : 60401 print"AAARAQJPP1ARAGCHARAPPPPRJJJAAAPCPPPPPPP" 60402 print"PPPPSSSPPPPPPPDPPPPPPPPPPPPPPPPKPPPPPPP" 60403 print"PPPPSSSPPPPPPPDPPPPPPPPPPPPPPPPKJJPPPPP" 60404 print"PPPNSSSPPPPRPPDPPRPPPPPMPPPPPPPPPPPPPPP" 60405 print"PPNPSSSIIIIIPPDPPPPPPPPPPPPPPPPPPPAAPPP" 60406 print"PPMPSSSPPPPPQPEPPPPPPPPPPPPPRPPPHHPPPPP" 60407 print"PPPMPSSCAPPPPPEPPJJJCOPPOPPPOPPOPPPPPPP" 60408 print"PPPIMPPDPSPPPPEP3PPPDPPPPPPPPPPPPPAAAPP" 60409 print"RPPPPMPDPSAARABAAPPPDPPPIIIIPJJJJPPPPRP" 60410 print"AAPPPPMDPSPPPPPPPPPPDPP2PJJJJPPPPPPPAAP" 60411 print"QJJJPPPDPSAAAAAQJJJJDPPPPPPPPPPPPPIIIPP" 60412 print"PPPPPPPDPSPPPPPPPPPPDPPPIIIIPPPIOIQPPPP" 60413 print"PQJJPPPDPSPPPPPPPPPPDPPPPPPPPPPKSSSSSCP" 60414 print"PPPPPPPDPPPPPPP4PPPPDPPPPPPPPPPKSSSSSLP" 60415 print"PPIIIPPBAAAAAAAAAAAABAAAAAAAAAAKSSSSSPP" 60416 print"PPPPPPPSSSSSSSSSSSSPQPPKPPLPPKPPLPPPSPS" 60417 print"IIPPPPPSSSSSSSSPPPP{f5}PDPPKPPLPPKPPLAACSPS" 60418 print"PPPPPPPSSSSSSSSPHHHPDPPKPPLPPKPPLPPDSLS" 60419 print"PPQJJPPPPPPPPSSRSSSPDPPKPPLPPKPPLPDDSRS" 60420 print"PPPPPPPPPPPPPSSPSSSPDPPKPPLPPKPPLPDRSPS" 60421 print"IIPPPPPPPPPPP0PPSSSPDPPKPPLPPKPPLPDPPLS" 60422 print"AAAAAAAAAQJJJJJAAAAIBIQQQQQQQQQQQABAAHS" 60480 return 60499 rem bild6 60500 : 60501 print"PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQ" 60502 print"PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQJJJPK" 60503 print"PPPPPPPPHHHQJPPPPPPPPPPPPPPPPPPPPQPPPPK" 60504 print"PPPPPPPRPPPPPPPJJJPPPPPPPPPPPPPPPQPPPPK" 60505 print"PPPP4PPPPPPPPPPPPPPPPPPPPPPPPJJJJQQJJJQ" 60506 print"PPPPPPPCPPPPPPPPPPOJJPPPPPPPRPPPPPPPPPP" 60507 print"PPPPPPNSMPPPPPPPPPPPPPPJJJQQJPPPPPPIIIQ" 60508 print"FPPPPNSSSMPPPPPPPPPPPPPPPPPPPPPPPPPPPPP" 60509 print"FPPPNSSPSSMPPPPPPPPPPPPPPPPPPPPPPPJJPPP" 60510 print"FPPNSSPRPSSMQQQPQQQPQQQQQMPPPPPPPPPPPPP" 60511 print"FPNSSSPTPSSSMQQRQQQRQQQQQQPPPPPPPPIIIIQ" 60512 print"FQSSSSSSSSSSSIIIIIIIIIIIIIMPPPPPPPPSPPK" 60513 print"RPSPRPSSSPPPSSSSSSSSSSSSSSSMPPPPPPPQPPK" 60514 print"IRSPTPSSSPRPSSSPPPSSSSPPPSSSMPPPPPPLPPK" 60515 print"PRSSDSSSSSNSSSS2RPSSSSPR3SSSSMPPPPPKPPK" 60516 print"5HSSDSSSSNSSSSSSTSSSSSSTSSSSSSMPPPPKPPS" 60517 print"GRSSDSSPPPPSSSSSSSSSSSSSSSSSSSSPPPPKPPQ" 60518 print"RHSSDSSGGGRSPPPPPPPPPPPPSPPPPSSRPPPKPPK" 60519 print"GRSSDSSPPPTSRPRRPPPRRPPRSPAARSSIIIIKPPK" 60520 print"RHSSDSSTTTTSIIIIQIIIIQIIMPPPRSSIPSSSSPK" 60521 print"RPP1DPPPPPPSSSSSSSSSSSSSSMPRRSSPPSSSS0K" 60522 print"AAAAAAAAAAASSSSSSSSSSSSSSAQAAIIIQSSSAAB" 60580 return