1 points par GN⁺ 2026-03-22 | 1 commentaires | Partager sur WhatsApp
  • Version fonctionnant en TI-BASIC sur les calculatrices TI-82, TI-83 et TI-83+, basée sur un jeu de simulation de commerce en BASIC pour IBM PC des années 1980
  • Le joueur se déplace entre six villes pour acheter et vendre de la drogue, rembourser ses dettes et maximiser ses profits sur un mois, avec des événements aléatoires et des poursuites policières
  • La communauté discute activement des méthodes d’installation et d’exécution, comme le partage de fichiers .8xp, le transfert via TI CONNECT et la conversion avec TI-Coder, et produit de nombreuses versions modifiées
  • L’analyse du code a révélé des bugs dus à la réutilisation de variables ainsi que des erreurs logiques, dont une boucle de profit infini ; plusieurs utilisateurs les ont corrigés et publié des versions compatibles TI-84 CE
  • Le projet a ensuite évolué vers un remake en C/SDL, des portages sur Pico-8 et en C#, ainsi qu’une adaptation sur consoles Z80, élargissant la communauté autour de la restauration de jeux classiques sur calculatrice

Aperçu du jeu Drugwars pour TI-82/83/83+

  • Drugwars, qui tourne sur les calculatrices TI-82, TI-83 et TI-83+, est un jeu de simulation de commerce basé sur un jeu BASIC pour IBM PC des années 1980
    • Le joueur achète et vend de la drogue pour rembourser sa dette à un usurier et gagner le plus d’argent possible en un mois
    • Le jeu est écrit en TI-BASIC et repose principalement sur les commandes Lbl, Goto, Menu et Disp
  • Au démarrage, le jeu initialise les variables de capital, dette, inventaire, capacité du trench-coat, etc.
    • Exemple : 2000→Z (argent liquide), 5000→Y (dette), 100→K (espace disponible)
    • La mention « ORIGINAL GAME FOR IBM BY JOHN E. DELL » s’affiche pour indiquer la source de l’œuvre originale
  • Structure de progression du jeu

    • Le joueur effectue ses transactions en se déplaçant entre six villes : le Bronx, le ghetto, Central Park, Manhattan, Coney Island et Brooklyn
    • Les actions se choisissent via le menu Menu("DRUGWAR!", "SEE PRICES", "BUY", "SELL", "JET", "SEE LOAN SHARK", "VISIT BANK")
    • Le prix de chaque drogue (cocaïne, héroïne, LSD, cannabis, speed, ludes) varie aléatoirement chaque jour
  • Système d’événements

    • Les événements aléatoires sont générés avec la fonction rand
      • Ventes à bas prix par des dealers concurrents, descentes de police, flambées de prix, agression dans le métro, etc.
      • Exemple : lorsque « YOU WERE MUGGED IN THE SUBWAY! » se produit, le joueur perd un tiers de son argent liquide
    • Selon certaines conditions, il est possible d’acheter des armes, d’améliorer le trench-coat, d’effectuer des opérations bancaires et de rembourser l’usurier
  • Combat et poursuite policière

    • Si le joueur possède une certaine quantité de drogue, la police (OFFICER HARDASS) se lance à sa poursuite
    • Le menu permet de choisir RUN ou FIGHT
    • Sans arme, il est seulement possible de fuir, et si les points de vie (J) atteignent 50 ou plus, le personnage est considéré comme mort
    • Si tous les policiers sont éliminés, le joueur reçoit une récompense en argent
  • Fin de partie et calcul du score

    • La partie se termine au bout de 31 jours
    • Le score est calculé à partir de (V+Z-Y), puis converti sur une échelle de 1 à 100
    • Le résultat s’affiche avec le message « YOUR SCORE (ON A SCALE OF 1 TO 100) »

Discussions de la communauté et partage de versions améliorées

  • Les discussions sur l’installation et l’exécution de Drugwars sur TI-82/83/83+ se sont multipliées
    • Il est possible de saisir directement le code dans l’interpréteur BASIC de la calculatrice (PRGM → New) ou de le convertir en fichier .8xp avec TI-Coder avant transfert
    • Lors de la conversion, certaines modifications sont nécessaires, par exemple remplacer par >=, par -> et θ par 0
    • Le transfert du fichier du PC vers la calculatrice peut se faire via TI CONNECT ou un adaptateur USB pour TI-83
  • Conseils de gammalogic

    • Il propose deux méthodes : acheter un adaptateur USB pour TI-83 afin de télécharger le jeu depuis un PC, ou saisir directement le code source
    • Certains adaptateurs utilisent des pilotes pour Windows XP, ce qui peut poser des problèmes de compatibilité sur les versions récentes de Windows
    • Il mentionne l’existence possible de pilotes libres pour Linux ou d’autres systèmes de type Unix
  • Mise à disposition du fichier .8xp par ileathan

    • Un fichier .8xp généré avec TI-Coder est partagé à l’adresse https://t7.vc/dl/DRUGWARS.8xp
    • Il peut être transféré vers la calculatrice avec TI CONNECT et un adaptateur USB
  • Corrections et améliorations par darth-crunchus

    • Il signale des erreurs de symboles d’inégalité lors de la conversion avec TI-Coder, ainsi que des problèmes de casse dans les noms de variables
    • Les conditions de Lbl 3 et Lbl 4 doivent être corrigées dans l’éditeur BASIC pour que le programme fonctionne correctement
    • Il l’adapte pour qu’il fonctionne pleinement sur TI-84 Plus CE, en restaurant les événements aléatoires (chiens policiers, brownies, etc.), les prix des armes, l’amélioration du trench-coat et la randomisation de l’espace de stockage
    • La taille finale du code atteint 6310B, puis jusqu’à 11429B dans une version mise à jour
    • Pour se rapprocher de la version DOS originale, il ajoute une fonctionnalité de graine aléatoire pour rand(
    • Le code source le plus récent est publié sur https://pastebin.com/4dUuw0BR
  • Discussions autour de la saisie en TI-BASIC

    • Dans les échanges sur la saisie alphanumérique, il est indiqué que TI-BASIC peut gérer les chaînes de caractères en longueur variable
    • Lorsqu’un caractère est saisi dans une variable, c’est la valeur de ce caractère qui est transmise à la variable
  • Compatibilité et problèmes d’exécution

    • Le jeu fonctionne sans modification sur les modèles TI-84 Plus CE et CE Python
    • Certains utilisateurs signalent toutefois qu’une erreur de saisie lors de l’achat ou de la vente peut renvoyer vers MirageOS
  • Autres portages et idées

    • Un projet de réécriture en application console C# est évoqué
    • Un utilisateur indique avoir écrit lui-même une version Pico-8
    • Un intérêt pour des portages Android ou PC est également mentionné

Structure du code et analyse des bugs

  • Analyse de la réutilisation des variables en TI-83 BASIC par tibbon

    • La variable N est réutilisée pour deux rôles différents
      1. Quantité d’héroïne en stock : 0→N, (N+G)→N, (N-G)→N
      2. Suivi de position : 2→N (Bronx), 1→N (autres zones)
    • Cela entraîne les bugs logiques suivants
      • La quantité d’héroïne change lors des déplacements (par exemple, aller dans le Bronx fixe N=2, ce qui est interprété comme 2 unités d’héroïne en stock)
      • Lors d’une transaction sur l’héroïne, la valeur de position est écrasée, ce qui fausse la détection du Bronx
      • Quand N=0, les vérifications Bronx/hors Bronx échouent toutes les deux, ce qui supprime les restrictions d’accès à la banque et à l’usurier
      • Se déplacer vers le Bronx fait apparaître automatiquement 2 unités d’héroïne, permettant une boucle de profit infini
      • La formule d’inventaire (T-M-N-O-P-Q-R)→K utilise la valeur de position, ce qui provoque des erreurs de calcul de capacité
  • Principaux cas d’exploitation

    1. Accès illimité à la banque et à l’usurier : contournement des restrictions de zone quand N=0
    2. Génération infinie d’héroïne : vente répétée des 2 unités créées automatiquement à chaque arrivée dans le Bronx
    3. Incohérences d’inventaire : l’écrasement de la variable de position permet de dépasser la capacité du trench-coat

Source du code original et contexte historique

  • gammalogic demande si le code provient bien de l’original en IBM BASIC, et mattmanning répond que « la version TI est basée sur le jeu IBM, mais ne peut pas être compilée pour d’autres plateformes ; elle convient surtout comme référence pour les règles et la logique du jeu »
    • Il explique avoir trouvé le code sur Internet et s’être contenté d’en remettre en forme les caractères
  • Le créateur original, John Dell, a conçu Drugwars en s’inspirant de Taipan, un jeu pour TRS-80

Élargissement de la communauté et activités ultérieures

  • Certains utilisateurs ont signalé des erreurs d’exécution sur TI-84+, tandis que d’autres ont confirmé un fonctionnement normal sur émulateur TI-83+ et TI-84+
    • Astuce partagée : ajouter :: à la première ligne du code pour qu’il soit reconnu par MirageOS
    • Il est également possible de saisir le code directement sur la calculatrice via prgm -> new
  • L’utilisateur DaSovietPotato a publié une version avec corrections de bugs compatible TI-84 dans un dépôt séparé
  • gammalogic a partagé son projet de remake en C/SDL puis de portage vers des consoles à base de Z80 (Master System, NES, etc.)
    • Une première démo C/SDL implémente une interface basée sur la résolution NES et des fonctions de remplacement des villes et des drogues
    • Il mentionne l’intention d’étendre le projet en une future version « Drugwars 2.0 »
  • Certains utilisateurs évoquent la nostalgie du jeu découvert au lycée et partagent leurs tentatives de réinstallation à l’aide d’un câble pour TI-83
    • La communauté encourage le portage manuel à travers l’analyse du code et l’apprentissage du BASIC, et recommande de consulter le manuel TI-83
  • Des commentaires continuent d’être ajoutés entre 2024 et 2026, avec des tentatives d’extension vers de nombreuses plateformes, notamment TI-84 CE, Pico-8 et C#
    • Certains utilisateurs demandent ou s’échangent des fichiers .8xp par e-mail
    • Le projet évolue en initiative communautaire de restauration et d’amélioration de jeux classiques sur calculatrice

1 commentaires

 
GN⁺ 2026-03-22
Réactions sur Hacker News
  • TI-83 Basic a été le premier langage de programmation que j’ai eu l’impression de maîtriser complètement
    En première année d’université, j’écrivais du code en TI-Basic puis je le traduisais en C++. À l’époque, Drugwars et Bowling étaient vraiment des jeux marquants
    Plus tard, quand j’ai découvert le z80 assembleur, ça m’a semblé magique. Je me souviens être allé dans le labo de recherche universitaire de mon père (avec deux lignes Internet T1) pour télécharger les nouveaux jeux en assembleur qui sortaient. Turbo Breakout, Snake, AShell, Penguins de Bill Nagel, et Mario en niveaux de gris m’avaient bluffé. Mais je pense que les jeux les plus aboutis et les plus rejouables étaient Sqrxz et ZTetris sur TI-86.
    Une fois, j’ai imprimé le code source z80 assembleur d’un jeu et je me promenais avec une pile épaisse comme la main pour essayer de le comprendre.
    Et il y avait aussi quelque chose d’étrangement amusant à saisir et exécuter du code hexadécimal aléatoire. Parfois la calculatrice finissait briquée, mais en retirant les piles elle repartait
    Quelqu’un se souvient des guerres entre sites web TI ? TI Files (plus tard TI Philes) disait être « bien plus cool que ticalc.org », mais au final celui qui a survécu jusqu’à aujourd’hui, c’est ticalc.org

    • Je suis surpris que ticalc.org existe encore. Joltima est ce qui m’a poussé à apprendre l’assembleur. Un RPG complet avec des combats au tour par tour sur TI-86, c’était une œuvre en avance sur son temps
    • Le nom Bill Nagel inspirait le respect au gamin de 12 ans que j’étais. À l’époque où je ne connaissais que TI Basic, je ne comprenais pas comment il pouvait créer des jeux pareils
    • Moi aussi, j’allais souvent sur ticalc.org pour attendre les mises à jour de la démo du portage de Zelda: Link’s Awakening
    • Dans mon cas, c’est PlaneJump d’Andreas Ess qui a déclenché ça. C’est comme ça que j’ai découvert l’assembleur et le monde de la demoscene, et j’ai complètement accroché
  • Ce jeu compte énormément pour moi. J’y étais complètement accro au lycée, et cette expérience m’est restée.
    Drugwars a été l’inspiration directe de mon projet passion Farmhand
    Je suis vraiment heureux de le revoir passer

    • Quand tout le monde installait ce jeu et des clones de Mario sur sa calculatrice TI, moi je jouais à Space Trader, inspiré de Palm
    • Le cours d’algèbre 2, c’était en réalité un cours de Drugwars et de Snake. Heureusement que j’avais un an d’avance, ça m’a évité de le repasser
    • Moi aussi, j’adorais tellement ce jeu que j’y jouais au lieu d’étudier les maths. J’ai à peine réussi à passer les examens grâce aux autres applis de la TI-83+.
      Maintenant que l’ère de l’IA est là et que tout le monde ne sait plus rien faire sans un petit ordinateur, j’ai comme un drôle de sentiment de justification
    • Être accro aux jeux est peut-être finalement une bonne chose ;-)
  • Mon « fait amusant », c’est que j’ai commencé à programmer en lisant le manuel de la TI-83+
    Pendant toute la classe de troisième, j’ai créé une version en bonshommes bâtons de Street Fighter à l’aide de TI-BASIC et des fonctions de tracé.
    L’écran n’affichait que 8 lignes, donc plus tard j’écrivais mon code sur papier.
    Avec le recul, c’est assez fou que j’aie réussi à faire un mode où deux personnes pouvaient jouer sur la même calculatrice avec des GOTO et des LABEL.
    Mon optimisation préférée consistait à remplacer les têtes rondes par des hexagones — seulement 6 segments à tracer, donc c’était beaucoup plus rapide

    • Moi aussi, j’avais demandé une TI-86 pour mon anniversaire en cinquième. Parce qu’on pouvait programmer dessus.
      En troisième, j’ai écrit un programme qui résolvait des problèmes d’algèbre étape par étape, puis j’ai découvert un bug P1 en plein examen.
      Il fonctionnait parfaitement sur les devoirs à la maison, mais plantait uniquement sur les questions d’examen. Au final, j’ai passé plus de temps à déboguer qu’à faire le contrôle.
      Avec le recul, c’était plus un cours sur les cas limites que sur les maths
    • Moi aussi, j’ai commencé avec le manuel de la TI-83+. Je faisais des jeux à menus et des aides aux devoirs avant de passer au z80 assembleur.
      Aujourd’hui je fais du développement mobile. J’ai toujours aimé pouvoir garder dans ma poche quelque chose que j’avais créé moi-même
    • Moi, j’ai commencé sur TI-84. J’avais créé un morpion avec une « IA » parfaite, mais on pouvait aussi entrer « nombre de joueurs : 0 »
      Vidéo liée
    • Dans mon cas, j’avais créé un clone de Scorched Earth sur TI-81. Il y avait du multijoueur, du vent et même une génération de terrain aléatoire.
      J’avais utilisé les 2,4 Ko en entier ainsi que tous les emplacements de variables
  • Les origines de ce jeu remontent à 1984 sur DOS
    Drug Wars (video game) - Wikipedia

    • En voyant les « Ludes » de cette version, on sent clairement 1984
    • Ensuite, ça a évolué en jeu door BBS
      Archive liée
  • J’avais un ami en troisième, à la fin des années 1900, qui était un artiste suffisamment doué pour créer du porno en pixel art sur une TI-82
    Il faisait tourner chaque scène sur deux images pour produire un mouvement étonnamment réaliste

    • « Fin des années 1900 », cette formule fait trop mal
    • J’aimerais bien connaître au moins l’initiale de la ville où ça s’est passé
    • Quand on voit ce genre de chose, la créativité des ados est impressionnante. Je plaisante, mais à ce compte-là il faudrait peut-être aussi interdire les stylos et la peinture
  • Ce jeu fonctionne aussi sur la série HP 48
    Drugwars pour HP 48
    Vive la notation polonaise inversée

    • Vive la notation polonaise inversée
  • Ma première expérience de programmation, c’était sur une TI-83.
    Je me souviens encore très bien d’avoir fait jouer mes amis à un livre dont vous êtes le héros pendant les cours

  • J’ai énormément joué à ce jeu sur TI-83+.
    C’est grâce à cette calculatrice que j’ai appris à programmer, et j’ai créé en TI-BASIC des programmes de calcul pour les maths et les sciences ainsi que de petits jeux.
    J’ai un peu oublié la syntaxe aujourd’hui, mais à l’époque je la maîtrisais plutôt bien

    • J’ai commencé exactement pareil. C’est en bidouillant sur la calculatrice que j’ai fini par comprendre les concepts de programmation
  • En voyant dans le code quelque chose comme « If Zù500 », je me suis demandé pourquoi le caractère ù était utilisé
    D’après ChatGPT, en TI-BASIC, la valeur en octet de ≤ est la même que celle de ù(0xF9) en ANSI/Windows-1252. Donc c’était un problème d’encodage

  • Waouh, quelle vague de nostalgie
    Je me souviens qu’en troisième, quand mon prof de sciences m’a demandé ce que je faisais sur ma calculatrice, j’ai supprimé le jeu en catastrophe de peur d’être collé
    À la place, je lui ai montré que je créais un jeu comme Wing Commander Privateer, et j’ai réussi à m’en sortir comme ça