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.

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. |
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 |
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 |
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