- Eine Handelssimulation, basierend auf dem BASIC-Spiel für den IBM PC aus den 1980er-Jahren, in einer Version, die auf TI-82-, TI-83- und TI-83+-Taschenrechnern in TI-BASIC läuft
- Der Spieler reist zwischen sechs Städten, kauft und verkauft Drogen, zahlt Schulden zurück und versucht innerhalb eines Monats den maximalen Gewinn zu erzielen; dazu kommen Zufallsereignisse und Verfolgungen durch die Polizei
- Die Community diskutiert aktiv über Installations- und Ausführungsmethoden wie das Teilen von
.8xp-Dateien, Übertragung mit TI CONNECT und Konvertierung mit TI-Coder und erstellt verschiedene modifizierte Versionen
- Durch Codeanalyse wurden Bugs durch doppelte Variablennutzung und logische Fehler wie eine Endlosschleife für unendlichen Gewinn entdeckt; mehrere Nutzer behoben diese und veröffentlichten kompatible Versionen für den TI-84 CE
- Später entwickelte sich das Projekt mit C/SDL-Remakes, Ports für Pico-8 und C# sowie Umsetzungen für Z80-Konsolen weiter, wodurch die Community zu einem Restaurierungsprojekt für klassische Taschenrechnerspiele anwuchs
Überblick über das Spiel Drugwars für TI-82/83/83+
- Drugwars für TI-82-, TI-83- und TI-83+-Taschenrechner ist eine Handelssimulation, die auf einem BASIC-Spiel für den IBM PC aus den 1980er-Jahren basiert
- Der Spieler kauft und verkauft Drogen, begleicht Schulden bei einem Kredithai und versucht, innerhalb eines Monats möglichst viel Geld zu verdienen
- Das Spiel ist in TI-BASIC geschrieben und basiert vor allem auf den Befehlen
Lbl, Goto, Menu und Disp
- Beim Start des Spiels werden Variablen für Startkapital, Schulden, Inventar und Trenchcoat-Kapazität initialisiert
- Beispiel:
2000→Z (Bargeld), 5000→Y (Schulden), 100→K (verfügbarer Platz) usw.
- Der Hinweis „ORIGINAL GAME FOR IBM BY JOHN E. DELL“ nennt die Quelle des Originals
-
Spielablauf
- Der Spieler reist durch sechs Städte wie Bronx, Ghetto, Central Park, Manhattan, Coney Island und Brooklyn, um zu handeln
- Über das Menü
Menu("DRUGWAR!", "SEE PRICES", "BUY", "SELL", "JET", "SEE LOAN SHARK", "VISIT BANK") werden Aktionen ausgewählt
- Die Preise der einzelnen Drogen (Kokain, Heroin, LSD, Marihuana, Speed, Quaaludes) schwanken täglich zufällig
-
Ereignissystem
- Zufällige Ereignisse werden mit der Funktion
rand ausgelöst
- etwa Sonderverkäufe eines konkurrierenden Dealers, Polizeirazzien, Preisspitzen oder Überfälle in der U-Bahn
- Beispiel: Bei „YOU WERE MUGGED IN THE SUBWAY!“ verliert man ein Drittel seines Bargelds
- Unter bestimmten Bedingungen sind Waffenkäufe, Trenchcoat-Upgrades, Bankgeschäfte und Rückzahlungen an den Kredithai möglich
-
Kampf und Verfolgung durch die Polizei
- Ab einer bestimmten Menge Drogen wird der Spieler von der Polizei (
OFFICER HARDASS) verfolgt
- Im Menü kann zwischen RUN und FIGHT gewählt werden
- Ohne Waffen kann man nur fliehen; liegt die Gesundheit (
J) bei 50 oder höher, wird der Tod ausgelöst
- Wenn alle Polizisten besiegt wurden, erhält man eine Bargeldbelohnung
-
Spielende und Punkteberechnung
- Nach 31 Tagen endet das Spiel
- Die Punktzahl wird auf Basis von
(V+Z-Y) berechnet und anschließend auf einen Bereich von 1 bis 100 umgerechnet
- Das Ergebnis wird mit der Meldung „YOUR SCORE (ON A SCALE OF 1 TO 100)“ angezeigt
Community-Diskussionen und geteilte verbesserte Versionen
- Es gab lebhafte Diskussionen über Installation und Ausführung des Drugwars-Spiels für TI-82/83/83+
- Der Code kann entweder direkt über den BASIC-Interpreter des Taschenrechners (PRGM → New) eingegeben oder mit TI-Coder in eine
.8xp-Datei umgewandelt und dann übertragen werden
- Bei der Konvertierung sind Anpassungen wie
≥ zu >=, → zu -> und θ zu 0 nötig
- Die Übertragung vom PC auf den Taschenrechner ist mit TI CONNECT oder einem USB-Adapter für den TI-83 möglich
-
Hinweise von gammalogic
- Es wurden zwei Wege vorgeschlagen: einen USB-Adapter für den TI-83 kaufen und das Spiel vom PC herunterladen oder den Quellcode direkt eintippen
- Einige Adapter verwenden Windows-XP-Treiber, was auf aktuellem Windows zu Kompatibilitätsproblemen führen kann
- Es wurde erwähnt, dass es möglicherweise freie Software-Treiber für Linux- oder Unix-basierte Systeme gibt
-
Bereitstellung der .8xp-Datei durch ileathan
- Eine mit TI-Coder erzeugte
.8xp-Datei wurde unter https://t7.vc/dl/DRUGWARS.8xp geteilt
- Die Datei kann mit TI CONNECT und einem USB-Adapter auf den Taschenrechner übertragen werden
-
Anpassungen und Verbesserungen von darth-crunchus
- Bei der Konvertierung mit TI-Coder wurden Fehler bei Vergleichsoperatoren und Probleme mit Groß- und Kleinschreibung von Variablennamen angesprochen
- Bedingungen in Lbl 3 und Lbl 4 müssen im BASIC-Editor korrigiert werden, damit alles ordnungsgemäß funktioniert
- Für vollständige Funktion auf dem TI-84 Plus CE wurden Zufallsereignisse (Polizeihunde, Brownies usw.), Waffenpreise, Trenchcoat-Upgrades und zufälliger Speicherplatz wiederhergestellt
- Die endgültige Codegröße beträgt 6310B, spätere Updates wuchsen auf 11429B an
- Um das DOS-Original genauer nachzubilden, wurde eine Seed-Funktion für
rand( hinzugefügt
- Der aktuelle Quellcode ist unter https://pastebin.com/4dUuw0BR veröffentlicht
-
Diskussionen zur TI-BASIC-Eingabe
- In einer Diskussion über alphanumerische Eingabe wurde erwähnt, dass TI-BASIC Strings variabler Länge verarbeiten kann
- Gibt man Zeichen in eine Variable ein, wird der Wert dieses Zeichens an die Variable übergeben
-
Kompatibilität und Ausführungsprobleme
- Auch auf den Modellen TI-84 Plus CE und CE Python läuft das Programm ohne Änderungen
- Einige Nutzer berichteten jedoch von Eingabefehlern beim Kaufen/Verkaufen, die zu einem Rücksprung in MirageOS führten
-
Weitere Ports und Ideen
- Es wurde ein Plan vorgestellt, das Spiel als C#-Konsolenanwendung neu zu schreiben
- Ein Nutzer meldete sich, der selbst eine Pico-8-Version geschrieben habe
- Auch Interesse an Ports für Android oder PC wurde erwähnt
Codestruktur und Buganalyse
-
Analyse der Variablen-Wiederverwendung in TI-83 BASIC durch tibbon
- Die Variable N wird doppelt für zwei Zwecke verwendet
- Heroin-Bestand:
0→N, (N+G)→N, (N-G)→N
- Positionsverfolgung:
2→N (Bronx), 1→N (andere Gebiete)
- Dadurch entstehen folgende logische Bugs
- Beim Reisen ändert sich die Heroin-Menge (bei Reise in die Bronx wird
N=2, also als Besitz von 2 Heroin interpretiert)
- Beim Heroinhandel wird der Positionswert überschrieben, wodurch die Bronx-Prüfung fehlerhaft wird
- Wenn
N=0 ist, schlagen sowohl Bronx- als auch Nicht-Bronx-Prüfungen fehl, wodurch Beschränkungen für Bank und Kredithai entfallen
- Bei Reisen in die Bronx entstehen automatisch 2 Einheiten Heroin, was eine Endlosschleife für unendlichen Gewinn ermöglicht
- Die Inventarformel
(T-M-N-O-P-Q-R)→K verwendet den Positionswert und verursacht dadurch Fehler in der Speicherplatzberechnung
-
Wichtige Exploits
- Unbegrenzter Zugang zu Bank und Kredithai: Umgehung der Gebietsbegrenzung bei
N=0
- Unendliche Heroin-Erzeugung: Wiederholter Verkauf der beim Wechsel in die Bronx automatisch erzeugten 2 Einheiten
- Inkonsistentes Inventar: Durch Überschreiben des Positionswerts kann die Trenchcoat-Kapazität überschritten werden
Herkunft des Originalcodes und historischer Hintergrund
- gammalogic fragte, ob der Code auf dem IBM-BASIC-Original basiere, und mattmanning erklärte, dass „die TI-Version auf dem IBM-Spiel basiert, aber nicht auf andere Plattformen kompiliert werden kann und sich eher als Referenz für Regeln und Logik eignet“
- Er erklärte außerdem, den Code im Internet gefunden und lediglich das Zeichenformat bereinigt zu haben
- Der Originalautor John Dell entwickelte Drugwars mit Inspiration durch das TRS-80-Spiel Taipan
Wachstum der Community und spätere Aktivitäten
- Einige Nutzer meldeten Ausführungsfehler auf dem TI-84+, andere bestätigten jedoch, dass das Spiel im TI-83+- und TI-84+-Emulator korrekt läuft
- Es wurde der Tipp geteilt,
:: in die erste Codezeile einzufügen, damit MirageOS es erkennt
- Der Code kann auch direkt auf dem Taschenrechner über
prgm -> new eingegeben und ausgeführt werden
- Nutzer DaSovietPotato veröffentlichte eine Version mit behobenen Bugs für die TI-84-Kompatibilität in einem separaten Repository
- gammalogic teilte Pläne für ein Remake in C/SDL und Ports auf Z80-basierte Konsolen wie Master System und NES
- Ein frühes C/SDL-Demo implementierte bereits eine an der NES-Auflösung orientierte Oberfläche sowie den Austausch von Städten und Drogen
- Es wurde auch eine spätere Erweiterung zu einer Version „Drugwars 2.0“ erwähnt
- Einige Nutzer erinnerten sich nostalgisch daran, das Spiel in ihrer Schulzeit gespielt zu haben, und teilten Versuche, es mithilfe eines Kabels für den TI-83 erneut zu installieren
- Die Community empfahl, selbst Ports zu erstellen, indem man den Code analysiert und BASIC lernt, und verwies auf das TI-83-Handbuch
- Bis 2024–2026 wurden weiterhin Kommentare hinzugefügt, mit Erweiterungsversuchen auf verschiedene Plattformen wie TI-84 CE, Pico-8 und C#
- Einige Nutzer tauschten per E-Mail Anfragen und Freigaben für
.8xp-Dateien aus
- Innerhalb der Community entwickelt sich das Ganze zu einem Projekt zur Wiederherstellung und Verbesserung klassischer Taschenrechnerspiele
1 Kommentare
Hacker-News-Kommentare
TI-83 Basic war die erste Programmiersprache, von der ich das Gefühl hatte, sie wirklich vollständig zu beherrschen
Im ersten Studienjahr schrieb ich Code in TI-Basic und übersetzte ihn dann nach C++. Drugwars und Bowling waren damals wirklich beeindruckende Spiele.
Als ich später z80-Assembler entdeckte, wirkte das wie Magie. Ich erinnere mich noch, wie ich ins Uni-Labor meines Vaters ging, wo es zwei T1-Internetleitungen gab, und dort frisch veröffentlichte Assembler-Spiele herunterlud. Bill Nagels Turbo Breakout, Snake, AShell, Penguins und Mario in Graustufen waren umwerfend. Aber die ausgereiftesten und am besten wiederspielbaren Titel waren meiner Meinung nach Sqrxz und ZTetris für den TI-86.
Einmal druckte ich sogar den z80-Assembler-Quellcode eines Spiels aus und trug den Ausdruck, etwa eine Handbreit dick, mit mir herum, um ihn zu verstehen.
Und aus irgendeinem Grund machte es auch Spaß, zufälligen Hex-Code einzugeben und auszuführen. Manchmal wurde der Rechner dadurch unbrauchbar, aber nach dem Herausnehmen der Batterie lief er wieder.
Erinnert sich noch jemand an die TI-Website-Kriege? TI Files, später TI Philes, behauptete, „viel cooler als ticalc.org“ zu sein, aber am Ende ist ticalc.org bis heute übrig geblieben.
Dieses Spiel bedeutet mir wirklich sehr viel. In der Highschool war ich völlig süchtig danach, und diese Erfahrung ist bei mir hängen geblieben.
Drugwars war die direkte Inspiration für mein Herzensprojekt Farmhand
Ich freue mich sehr, es hier wiederzusehen
Jetzt, im KI-Zeitalter, wo alle ohne kleine Computer nichts mehr hinbekommen, fühlt sich das wie eine gewisse Rechtfertigung an.
Mein „Fun Fact“ ist, dass ich mit dem Programmieren anfing, indem ich das Handbuch des TI-83+ las
Während der gesamten 9. Klasse baute ich mit TI-BASIC und Grafikfunktionen eine Strichmännchen-Version von Street Fighter.
Weil auf dem Bildschirm nur acht Zeilen sichtbar waren, schrieb ich den Code später sogar auf Papier.
Wenn ich heute daran zurückdenke, finde ich es erstaunlich, dass ich die Struktur für zwei Spieler auf demselben Rechner mit GOTO und LABEL umgesetzt habe.
Meine liebste Optimierung war, die Köpfe statt als Kreise als Sechsecke darzustellen — man musste nur sechs Linien zeichnen, also lief es viel schneller.
In der 9. Klasse schrieb ich dann ein Programm, das Algebra-Aufgaben Schritt für Schritt löste, und entdeckte während einer Prüfung einen P1-Bug.
Bei den Hausaufgaben funktionierte alles perfekt, aber an einer Prüfungsaufgabe zerbrach es. Am Ende verbrachte ich mehr Zeit mit Debugging als mit der Prüfung selbst.
Rückblickend war das eher ein Kurs über Edge Cases als über Mathematik.
Heute entwickle ich mobile Apps. Ich fand es immer toll, etwas von mir Gemachtes in der Tasche mit mir herumzutragen.
Zugehöriges Video
Die gesamten 2,4 KB und alle Variablen-Slots waren komplett aufgebraucht.
Die Ursprünge dieses Spiels liegen bei DOS im Jahr 1984
Drug Wars (video game) - Wikipedia
Zugehöriges Archiv
Ich hatte Ende des 20. Jahrhunderts in der 9. Klasse einen Freund, der ein so talentierter Künstler war, dass er auf einem TI-82 Pixel-Art-Pornos machte
Er ließ jede Szene in zwei Frames loopen und erzeugte so erstaunlich realistische Bewegungen.
Dieses Spiel läuft auch auf der HP-48-Serie
Drugwars für HP 48
Es lebe RPN
Meine erste Programmiererfahrung hatte ich auf dem TI-83.
Ich erinnere mich noch lebhaft daran, wie ich meine Freunde im Unterricht ein Choose-your-own-adventure-Spiel spielen ließ.
Ich habe dieses Spiel auf dem TI-83+ wirklich oft gespielt.
Durch diesen Rechner habe ich programmieren gelernt und mit TI-BASIC Rechenprogramme für Mathe und Naturwissenschaften sowie einfache Spiele geschrieben.
An die Syntax erinnere ich mich heute kaum noch, aber damals war ich ziemlich fit darin.
Im Code sah ich Ausdrücke wie „If Zù500“ und fragte mich, warum dort das Zeichen ù verwendet wurde
Laut ChatGPT hat ≤ in TI-BASIC denselben Byte-Wert wie ù (0xF9) in ANSI/Windows-1252. Es war also ein Kodierungsproblem.
Wow, was für ein Nostalgieschub
Ich erinnere mich noch, wie mein Naturwissenschaftslehrer in der 9. Klasse fragte, was ich da auf dem Taschenrechner mache, und ich aus Angst vor einer Suspendierung schnell die Spiele gelöscht habe.
Stattdessen zeigte ich ihm, dass ich angeblich Spiele wie Wing Commander Privateer entwickle, und kam damit durch