C 64
Hot Wheels

Hot Wheels

Brausen Sie mit dem »Feuerstuhl« über die Landstraße. Das Einlegen des Ganges ist einem richtigen Motorrad nach-empfunden. Ein schnelles Spiel für den
Commodore 64.

Es gehört schon viel Geschick dazu, in den höheren Spielstufen alle Kurven sauber zu nehmen. Wenn dann auch noch ab und zu Hindernisse auf der Fahrbahn auftauchen, kann man meistens nur noch auf die Qualität seines Sturzhelms vertrauen.

Ziel des Spiels ist es, mit einem Motorrad möglichst unfallfrei eine Straße entlang zu fahren und dabei soweit wie möglich zu kommen. Dies wird durch Steine auf der Fahrbahn und Straßensperren erschwert.

Nach Erreichen von 2000 Punkten gelangt man in die nächste Schwierigkeitsstufe, die dann schon etwas mehr Geschicklichkeit verlangt. Die Anzahl der Hindernisse und die Geschwindigkeit steigen von Spielstufe zu Spielstufe, wobei maximal drei Stufen durchfahren werden können.

Ein Bewegen des Joysticks in Richtung »vorwärts« erhöht die Geschwindigkeit, die bei Richtung »zurück« wieder gedrosselt wird. Der Punktestand steigt natürlich proportional zur Geschwindigkeit. Eine einprogrammierte Mindestgeschwindigkeit verhindert dabei das Aufkommen von Langeweile.

Der Kern des Spiels ist vollständig in Maschinensprache programmiert, wodurch eine Spielgeschwindigkeit erzielt wird, die mit Basic nicht zu erreichen wäre. Lediglich Start und Ende einer Spielstufe sind in Basic geschrieben.

Während des Spiels ist der Bildschirm in zwei Teile geteilt; der obere Teil stellt den Horizont sowie den Spielstand dar, während im unteren Teil das Bild ständig durch das Maschinenprogramm nach unten gescrollt wird. Der Verlauf der Straße wird durch einen Zufallszahlengenerator bestimmt, ebenso das Auftreten der verschiedenen Hindernisse. Doch damit genug der Vorrede. Sie können das Programm jetzt eintippen, aber vergewissern Sie sich vor dem Starten bitte vom ordnungsgemäßen Sitz Ihres Sturzhelms!

(Bernd Günther)
1000-1040 Einlesen des Sprites
1050-1580 Einlesen des Maschinenspracheteils:
$C000 Hauptschleife, hier wird ununterbrochen die Straße erzeugt.
$C003 Bewirkt einen Scroll-Down der unteren Bildschirmhälfte.
$C009 Hier wird der Punktestand proportional zur Geschwindigkeit erhöht und dann ausgedruckt. Wenn die Score-Grenze für den nächsten Level erreicht ist, wird ins Basic-Programm zurückgesprungen.
$C079 Hier wird das Motorrad entsprechend der Bewegung der Joysticks gesteuert, ebenso die Frequenzen des Motorgeräusches.
$C063 Straße einen Schritt geradeaus.
$C120 Straße einen Schritt links.
$C147 Straße einen Schritt rechts.
$C168 Hier wird das Haus ausgedruckt, das immer zufällig erscheint.
$C30D Verzögerung.
$C328 Erzeugen verschiedener Hindernisse mit Zufallsgenerator im SID.
1590-1600 Einlesen der Schlußmelodie.
1610-1860 Kaltstart.
1870-2080 Warmstart.
2090 Einsprung ins Maschinenprogramm.
2100-2130 Test auf Kollosion oder nächsten Level.
2140-2220 Initialisierung des SID.
ab 2230 Spielende mit Schlußmelodie, Laufschrift bei Highscore, Sprung an den Programmanfang.
Die einzelnen Programmteile von »Hot Wheels«
A1(), A2() Low Byte und High Byte der Noten der Schlußmelodie
V Startadresse des VIC
SI Startadresse des SID
LE Momentaner Level
MR Momentane Anzahl der Motorräder
HI Highscore
A$ Text für Laufschrift oder Tastaturabfrage
I, J,K Laufvariablen
Speicherbelegung des Maschinenspracheprogramms
832 Farbe des Straßenrandes
833 Momentane Position der linken Straßenecke
834 Zwischenspeicher für Joystickabfrage
835 Flag für Feuerknopf (betätigt bei »0«)
836 Joystick rechts
837 Joystick links
838 Joystick unten
839 Joystick oben
841-848 Zwischenspeicher für Scroll-Routine
850-852 Zwischenspeicher für Tonfrequenzen
853 Zähler für Hauptschleife
855 Zähler für Haus-Grafik
860-862 Zwischenspeicher für Verzögerungszähler
870,871 Score-Grenze für nächsten Level
872 Häufigkeit für das Auftreten von Hindernissen
880,881 Momentaner Punktestand
Variablenliste des Basicprogramms
1000 data0,16,0,0,16,0,0,16,0,0,32,0,1,169,0,4
1010 data168,64,16,32,16,128,32,8,0,48,0,0,48,0,0,48
1020 data0,0,252,0,0,252,0,0,252,0,0,48,0,0,48,0
1030 data0,16,0,0,16,0,0,00,0,0,00,0,0,0,0,0
1040 restore:fori=896to959:reada:pokei,a:next
1050 data076,181,193,076,012,192,076,099,192,076,214,194,162,008,181,001,157
1060 data072,003,189,124,195,149,001,202,208,243,160,039,177,006,145,008,177
1070 data002,145,004,136,016,245,162,007,181,001,056,233,040,149,001,176,004
1080 data232,214,001,202,202,202,016,239,165,009,201,005,208,218,165,008,201
1090 data024,208,212,162,008,189,072,003,149,001,202,208,248,096,162,039,173
1100 data064,003,157,024,217,169,160,157,024,005,202,016,242,096,032,082,192
1110 data160,012,169,012,024,109,065,003,170,169,032,157,024,005,202,136,208
1120 data249,096,169,000,141,003,220,173,001,220,141,066,003,162,004,169,000
1130 data157,067,003,078,066,003,062,067,003,202,016,244,169,000,141,003,220
1140 data173,069,003,208,013,162,013,206,000,208,208,003,206,016,208,202,208
1150 data245,173,068,003,208,013,162,013,238,000,208,208,003,238,016,208,202
1160 data208,245,173,071,003,208,035,173,001,208,201,130,144,028,206,092,003
1170 data162,011,206,001,208,202,208,250,238,082,003,024,173,083,003,105,020
1180 data141,083,003,144,003,238,084,003,173,070,003,208,035,173,001,208,201
1190 data221,176,028,238,092,003,162,011,238,001,208,202,208,250,206,082,003
1200 data056,173,083,003,233,020,141,083,003,176,003,206,084,003,173,082,003
1210 data141,001,212,173,083,003,141,007,212,173,084,003,141,008,212,096,238
1220 data065,003,032,082,192,169,012,024,109,065,003,170,169,095,157,024,005
1230 data202,160,011,169,032,157,024,005,202,136,208,249,169,223,157,024,005
1240 data206,065,003,096,032,082,192,169,012,024,109,065,003,170,169,233,157
1250 data024,005,202,160,011,169,032,157,024,005,202,136,208,249,169,105,157
1260 data024,005,096,169,007,141,087,003,162,000,160,000,138,072,152,072,032
1270 data012,192,173,031,208,240,004,104,076,100,194,032,121,192,173,031,208
1280 data240,004,104,076,100,194,032,099,192,032,013,195,104,168,104,170,189
1290 data102,194,153,052,005,232,189,102,194,153,052,217,232,200,192,008,208
1300 data237,206,087,003,173,087,003,208,189,076,194,193,032,040,195,173,065
1310 data003,201,008,208,003,076,104,193,234,234,234,172,027,212,240,251,192
1320 data010,176,247,174,027,212,224,085,176,050,140,085,003,173,065,003,056
1330 data237,085,003,144,237,152,072,032,214,194,032,012,192,173,031,208,208
1340 data118,032,121,192,173,031,208,208,110,206,065,003,032,032,193,032,013
1350 data195,104,168,136,208,221,076,181,193,224,170,176,035,152,072,032,214
1360 data194,032,012,192,173,031,208,208,076,032,121,192,173,031,208,208,068
1370 data032,099,192,032,013,195,104,168,136,208,224,076,181,193,140,085,003
1380 data173,065,003,024,109,085,003,176,148,201,026,176,144,152,072,032,214
1390 data194,032,012,192,173,031,208,208,025,032,121,192,173,031,208,208,017
1400 data238,065,003,032,071,193,032,013,195,104,168,136,208,221,076,181,193
1410 data104,096,160,005,160,002,160,002,160,002,160,002,160,002,160,002,160
1420 data005,160,005,160,002,160,002,160,002,160,002,160,002,160,002,160,005
1430 data160,005,160,002,091,006,160,002,160,002,091,006,160,002,160,005,160
1440 data005,160,002,160,002,160,002,160,002,160,002,160,002,160,005,105,005
1450 data032,001,032,001,032,001,032,001,032,001,032,001,095,005,160,005,105
1460 data005,032,001,032,001,032,001,032,001,095,005,160,005,160,005,160,005
1470 data160,005,160,005,160,000,160,005,160,005,160,005,162,000,160,033,024
1480 data032,010,229,173,112,003,024,105,016,144,003,238,113,003,056,237,092
1490 data003,141,112,003,176,003,206,113,003,173,113,003,174,112,003,205,103
1500 data003,208,009,236,102,003,144,004,104,104,104,096,032,205,189,096,173
1510 data092,003,141,093,003,169,001,141,094,003,206,095,003,208,251,206,094
1520 data003,208,246,206,093,003,208,236,096,173,027,212,201,003,176,023,173
1530 data065,003,105,004,170,160,003,169,127,157,024,005,169,002,157,024,217
1540 data232,136,208,242,096,205,104,003,176,049,173,027,212,041,015,201,001
1550 data240,247,168,173,027,212,201,003,144,249,201,012,176,245,109,065,003
1560 data170,152,157,024,217,173,027,212,201,128,176,008,169,090,157,024,005
1570 data076,124,195,169,081,157,024,005,096,152,219,192,219,152,007,192,007
1580 fori=49152to50052:reada:pokei,a:next
1590 data103,17,237,21,20,26,69,29,3,31,69,29,20,26,237,21,103,17
1600 fori=1to9:reada1(i),a2(i):next
1610 v=53248:pokev,160:pokev+1,215
1620 pokev+23,1:pokev+29,1
1630 pokev+28,1:pokev+37,12:pokev+38,0:pokev+39,7
1640 poke2040,14:poke53281,2
1650 print"{clr}{yel}";
1660 print"           {rvon}{SHIFT-POUND}{rvof}   {rvon}{SHIFT-POUND}{rvof} {rvon}{SHIFT-POUND}    {rvof} {rvon}{SHIFT-POUND}   {rvof}{SHIFT-POUND}"
1670 print"           {rvon} {rvof}   {rvon} {rvof} {rvon} {rvof}   {rvon} {rvof}   {rvon} "
1680 print"           {rvon} {rvof}   {rvon} {rvof} {rvon} {rvof}   {rvon} {rvof}   {rvon} "
1690 print"           {rvon}     {rvof} {rvon} {rvof}   {rvon} {rvof}   {rvon} "
1700 print"           {rvon} {rvof}   {rvon} {rvof} {rvon} {rvof}   {rvon} {rvof}   {rvon} "
1710 print"           {rvon} {rvof}   {rvon} {rvof} {rvon} {rvof}   {rvon} {rvof}   {rvon} "
1720 print"           {SHIFT-POUND}   {SHIFT-POUND} {rvon}    {rvof}{SHIFT-POUND}   {SHIFT-POUND}":print:print
1730 print"  {rvon}{SHIFT-POUND}{rvof}   {rvon}{SHIFT-POUND}{rvof} {rvon}{SHIFT-POUND}{rvof}   {rvon}{SHIFT-POUND}{rvof} {rvon}{SHIFT-POUND}   {rvof}{SHIFT-POUND} {rvon}{SHIFT-POUND}   {rvof}{SHIFT-POUND} {rvon}{SHIFT-POUND}{rvof}     {rvon}{SHIFT-POUND}   {rvof}{SHIFT-POUND}"
1740 print"  {rvon} {rvof}   {rvon} {rvof} {rvon} {rvof}   {rvon} {rvof} {rvon} {rvof}     {rvon} {rvof}     {rvon} {rvof}     {rvon} "
1750 print"  {rvon} {rvof}   {rvon} {rvof} {rvon} {rvof}   {rvon} {rvof} {rvon} {rvof}     {rvon} {rvof}     {rvon} {rvof}     {rvon} "
1760 print"  {rvon} {rvof} {rvon}{SHIFT-POUND}{rvof} {rvon} {rvof} {rvon}     {rvof} {rvon}   {rvof}{SHIFT-POUND}  {rvon}   {rvof}{SHIFT-POUND}  {rvon} {rvof}     {rvon}     "
1770 print"  {rvon} {rvof} {rvon} {rvof} {rvon} {rvof} {rvon} {rvof}   {rvon} {rvof} {rvon} {rvof}     {rvon} {rvof}     {rvon} {rvof}         {rvon} "
1780 print"  {rvon} {rvof} {rvon} {rvof} {rvon} {rvof} {rvon} {rvof}   {rvon} {rvof} {rvon} {rvof}     {rvon} {rvof}     {rvon} {rvof}         {rvon} "
1790 print"  {rvon}    {rvof}{SHIFT-POUND} {SHIFT-POUND}   {SHIFT-POUND} {rvon}    {rvof}{SHIFT-POUND} {rvon}    {rvof}{SHIFT-POUND} {rvon}    {rvof}{SHIFT-POUND} {rvon}{SHIFT-POUND}   {rvof}{SHIFT-POUND}"
1800 print:print"         (c) by bernd guenther":print
1810 print"         press joystick button"
1820 pokev+21,1:poke832,5:poke880,0:poke881,0:le=1:mr=3:poke198,0
1830 poke53280,7
1840 poke53280,2
1850 geta$:ifa$=""then1830
1860 pokev+23,0:pokev+29,0
1870 ifmr=0then2230
1880 poke860,(4-le)+12:pokev+21,0
1890 ifle<3thenl1=le*2000:poke870,l1and255:poke871,l1/256
1900 poke872,le*30:pokev,180:pokev+1,230:poke833,14
1910 print"{clr}{blu}";:poke53281,1:poke53280,7:si=54272:pokev+31,0
1920 print"{rvon}  high=                    score=       ";
1930 print"{rvon}          {rvof}   {rvon} {rvof}  {rvon}                        {rvof}";
1940 print"{rvon}      {rvof}           {rvon}      {rvof}  {rvon}     {rvof}       {rvon}   {rvof}";
1950 print"{rvon}     {rvof}             {rvon}    {rvof}    {rvon}   {rvof}           ";
1960 print"{rvon}     {rvof}           {rvon}         {rvof} {rvon}              {rvof}";
1970 print"{rvon}      {rvof}     {rvon} {rvof}   {rvon}                         {rvof}";
1980 print"{rvon}                                        {rvof}";
1990 print"{home}{rvon}"tab(7)mid$(str$(hi),2);
2000 printtab(16);:fori=1tomr:print"Q ";:next
2010 printtab(33)mid$(str$(peek(880)+256*peek(881)),2)
2020 pokesi+15,100:pokesi+18,129
2030 gosub2140
2040 sys49158
2050 fori=1to18:sys49155:next
2060 print"{red}{home}{down}{down}{down}{down}{down}{down}{down}{down}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}level"le
2070 fori=1to18:sys49155:forj=1to100:next:next
2080 pokev+21,1
2090 print"{rvon}";:sys49152
2100 ifpeek(880)+256*peek(881)<le*2000orle=3thengosub2200:mr=mr-1:goto1870
2110 ifle<3thenle=le+1:ifle<3then1870
2120 poke870,255:poke871,255:goto1870
2130 end
2140 pokesi,0:pokesi+1,3:poke850,3:pokesi+4,0
2150 pokesi+5,255:pokesi+6,255
2160 pokesi+7,80:poke851,80:pokesi+8,0:poke852,0:pokesi+11,0
2170 pokesi+12,255:pokesi+13,255
2180 pokesi+4,33:pokesi+11,129
2190 pokesi+24,138:return
2200 pokesi+4,0:pokesi+11,0:pokev+21,0:pokesi+1,50:pokesi+5,0
2210 pokesi+6,250:pokesi+4,129:pokesi+4,128
2220 fori=1to200:pokev+21,0:pokev+21,1:nexti:return
2230 poke53280,13:pokesi+11,0:pokev+21,0:print"{clr}"
2240 fori=1to9:pokesi,a1(i):pokesi+1,a2(i):pokesi+4,17
2250 :forj=1to200:next:pokesi+4,16:next
2260 ifpeek(880)+256*peek(881)<hithen1000
2270 hi=peek(880)+256*peek(881)
2280 a$="............................................."
2290 a$=a$+"highscore"+a$:poke53281,1:print"{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{cyn}"tab(18)hi
2300 fork=1to3:fori=1to59
2310 print"{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{cyn}"mid$(a$,i,40)
2320 print"{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{lred}"mid$(a$,60-i,40)
2330 forj=1to100:next:next:next:goto1000
Listing von »Hot Wheels«
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →