1 Punkte von GN⁺ 2026-03-22 | 1 Kommentare | Auf WhatsApp teilen
  • 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
      1. Heroin-Bestand: 0→N, (N+G)→N, (N-G)→N
      2. 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

    1. Unbegrenzter Zugang zu Bank und Kredithai: Umgehung der Gebietsbegrenzung bei N=0
    2. Unendliche Heroin-Erzeugung: Wiederholter Verkauf der beim Wechsel in die Bronx automatisch erzeugten 2 Einheiten
    3. 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

 
GN⁺ 2026-03-22
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.

    • Ich bin überrascht, dass ticalc.org immer noch existiert. Joltima war der Grund, warum ich angefangen habe, Assembler zu lernen. Ein vollständiges RPG mit rundenbasierten Kämpfen auf dem TI-86 — das war seiner Zeit voraus.
    • Der Name Bill Nagel erfüllte mein zwölfjähriges Ich mit Ehrfurcht. Damals kannte ich nur TI Basic und konnte überhaupt nicht begreifen, wie er solche Spiele machen konnte.
    • Ich habe auch ständig auf ticalc.org nachgesehen und auf Demo-Updates für einen Port von Zelda: Link’s Awakening gewartet.
    • Bei mir war es Andreas Ess’ PlaneJump. Dadurch lernte ich die Welt von Assembler und der Demoszene kennen und war sofort völlig gefesselt.
  • 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

    • Während alle dieses Spiel und einen Mario-Klon auf ihren TI-Rechnern hatten, spielte ich Space Trader, das von dem auf dem Palm inspiriert war.
    • Algebra 2 war in Wirklichkeit ein Drugwars-und-Snake-Kurs. Zum Glück war ich ein Schuljahr voraus und musste ihn nicht wiederholen.
    • Ich mochte dieses Spiel auch so sehr, dass ich statt Mathe zu lernen lieber das spielte. Nur dank anderer Apps auf dem TI-83+ habe ich die Prüfungen gerade so bestanden.
      Jetzt, im KI-Zeitalter, wo alle ohne kleine Computer nichts mehr hinbekommen, fühlt sich das wie eine gewisse Rechtfertigung an.
    • Von einem Spiel abhängig zu sein, könnte am Ende sogar etwas Gutes sein ;-)
  • 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.

    • Ich wollte zu meinem Geburtstag in der 7. Klasse einen TI-86 haben, weil man darauf programmieren konnte.
      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.
    • Ich habe auch mit dem TI-83+-Handbuch angefangen. Ich baute menübasierte Spiele und Hausaufgaben-Helfer und wechselte dann zu z80-Assembler.
      Heute entwickle ich mobile Apps. Ich fand es immer toll, etwas von mir Gemachtes in der Tasche mit mir herumzutragen.
    • Ich habe mit dem TI-84 angefangen. Ich baute ein Tic-Tac-Toe-Spiel mit perfekter „KI“, bei dem man auch „Anzahl Spieler: 0“ eingeben konnte.
      Zugehöriges Video
    • Bei mir war es auf dem TI-81 ein Scorched-Earth-Klon. Ich hatte Multiplayer, Wind und zufällige Geländegenerierung eingebaut.
      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

    • Wenn man sich die „Ludes“ in dieser Version ansieht, merkt man sofort: Das ist ganz klar 1984.
    • Später entwickelte es sich zu einem BBS-Door-Game weiter
      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.

    • „Ende des 20. Jahrhunderts“ — diese Formulierung tut weh.
    • Mich würde ja schon der erste Buchstabe der Stadt interessieren, in der das passiert ist.
    • Wenn man so etwas sieht, ist die Kreativität von Jugendlichen wirklich erstaunlich. Halb im Scherz gesagt müsste man aus solchen Gründen vielleicht auch Stifte und Farbe verbieten.
  • Dieses Spiel läuft auch auf der HP-48-Serie
    Drugwars für HP 48
    Es lebe RPN

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

    • Bei mir war es genau derselbe Einstieg. Durch Herumspielen auf dem Taschenrechner habe ich die Konzepte des Programmierens verstanden.
  • 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