1 puntos por GN⁺ 2026-03-22 | 1 comentarios | Compartir por WhatsApp
  • Un juego de simulación de comercio basado en un juego en BASIC para IBM PC de los años 80, en una versión que corre en calculadoras TI-82·83·83+ con TI-BASIC
  • El jugador se desplaza entre seis ciudades para comprar y vender drogas, pagar sus deudas y buscar la mayor ganancia posible en un mes, con eventos aleatorios y persecuciones policiales
  • La comunidad debate activamente métodos de instalación y ejecución, como compartir archivos .8xp, transferencia con TI CONNECT y conversión con TI-Coder, además de crear varias versiones modificadas
  • Mediante el análisis del código se descubrieron bugs causados por la reutilización de variables y errores lógicos como un bucle de ganancias infinitas; varios usuarios los corrigieron y publicaron versiones compatibles con TI-84 CE
  • Más adelante evolucionó con un remake en C/SDL, ports a Pico-8 y C# y adaptaciones a consolas Z80, expandiendo la comunidad como un proyecto de preservación de juegos clásicos para calculadora

Resumen del juego Drugwars para TI-82/83/83+

  • Drugwars, que corre en calculadoras TI-82, TI-83 y TI-83+, es un juego de simulación de comercio basado en un juego en BASIC para IBM PC de los años 80
    • El jugador compra y vende drogas para pagar la deuda con el prestamista y ganar la mayor cantidad de dinero posible en un mes
    • El juego está escrito en TI-BASIC y se estructura principalmente alrededor de los comandos Lbl, Goto, Menu y Disp
  • Al iniciar la partida se realiza la inicialización de variables como dinero inicial, deuda, inventario y capacidad del impermeable
    • Ejemplo: 2000→Z (efectivo), 5000→Y (deuda), 100→K (espacio disponible), etc.
    • Se muestra la frase “ORIGINAL GAME FOR IBM BY JOHN E. DELL” para indicar el origen de la obra original
  • Estructura del juego

    • El jugador realiza transacciones mientras se mueve entre seis ciudades: Bronx, Ghetto, Central Park, Manhattan, Coney Island y Brooklyn
    • Las acciones se eligen desde el menú Menu("DRUGWAR!", "SEE PRICES", "BUY", "SELL", "JET", "SEE LOAN SHARK", "VISIT BANK")
    • Los precios de cada droga (cocaína, heroína, LSD, marihuana, speed y ludes) cambian aleatoriamente cada día
  • Sistema de eventos

    • Los eventos aleatorios ocurren usando la función rand
      • Entre ellos están las ventas de remate de traficantes rivales, redadas policiales, alzas extremas de precio y asaltos en el metro
      • Ejemplo: si ocurre “YOU WERE MUGGED IN THE SUBWAY!”, se pierde un tercio del efectivo
    • Bajo ciertas condiciones se puede comprar armas, mejorar el impermeable, hacer operaciones bancarias y pagar al prestamista
  • Combate y persecución policial

    • Si el jugador lleva cierta cantidad de droga, la policía (OFFICER HARDASS) empieza a perseguirlo
    • En el menú se puede elegir entre RUN o FIGHT
    • Si no hay armas, solo se puede huir, y si la salud (J) es 50 o más, se considera muerte
    • Si se derrota a todos los policías, se obtiene una recompensa en efectivo
  • Fin de la partida y cálculo de puntaje

    • El juego termina después de 31 días
    • El puntaje se calcula con base en (V+Z-Y) y luego se convierte a un rango de 1 a 100
    • El resultado se muestra con el mensaje “YOUR SCORE (ON A SCALE OF 1 TO 100)”

Debate comunitario y versiones mejoradas

  • Hubo una discusión muy activa sobre cómo instalar y ejecutar Drugwars en TI-82/83/83+
    • Se puede introducir el código directamente en el intérprete BASIC de la calculadora (PRGM → New), o convertirlo a un archivo .8xp con TI-Coder y luego transferirlo
    • Durante la conversión hay que hacer ajustes como cambiar por >=, por -> y θ por 0
    • También es posible transferir archivos desde una PC a la calculadora usando TI CONNECT o un adaptador USB para TI-83
  • Consejos de gammalogic

    • Propuso dos métodos: comprar un adaptador USB para TI-83 y descargar el juego desde una PC, o introducir el código fuente manualmente
    • Algunos adaptadores usan drivers para Windows XP, por lo que pueden presentar problemas de compatibilidad en versiones modernas de Windows
    • También mencionó la posible existencia de drivers de software libre para Linux o sistemas tipo Unix
  • Archivo .8xp compartido por ileathan

    • Compartió un archivo .8xp generado con TI-Coder en el enlace https://t7.vc/dl/DRUGWARS.8xp
    • Ese archivo puede transferirse a la calculadora con TI CONNECT y un adaptador USB
  • Modificaciones y mejoras de darth-crunchus

    • Señaló errores en los símbolos de desigualdad y en las mayúsculas/minúsculas de los nombres de variables al convertir con TI-Coder
    • Indicó que las condiciones de Lbl 3 y Lbl 4 debían corregirse en el editor BASIC para que el programa funcionara bien
    • Lo adaptó para funcionar completamente en TI-84 Plus CE, restaurando eventos aleatorios (perros policía, brownies, etc.), precios de armas, mejora del impermeable y aleatorización del espacio de almacenamiento
    • El tamaño final del código fue de 6310B, y en versiones posteriores se amplió hasta 11429B
    • Para acercarlo al original de DOS, añadió una función de random seeding para rand(
    • La versión más reciente del código fuente está publicada en https://pastebin.com/4dUuw0BR
  • Debate sobre la entrada de texto en TI-BASIC

    • En una discusión sobre el manejo de entrada alfanumérica, se mencionó que TI-BASIC puede manejar cadenas de longitud variable
    • Si se ingresa un carácter en una variable, el valor de ese carácter se pasa a la variable correspondiente
  • Compatibilidad y problemas de ejecución

    • También funciona sin modificaciones en los modelos TI-84 Plus CE y CE Python
    • Algunos usuarios reportaron que, al comprar o vender, errores de entrada hacían que el sistema regresara a MirageOS
  • Ports e ideas adicionales

    • Se planteó reescribirlo como una aplicación de consola en C#
    • También apareció un usuario que afirmó haber hecho su propia versión para Pico-8
    • Se mencionó igualmente el interés en ports para Android o PC

Estructura del código y análisis de bugs

  • Análisis de tibbon sobre la reutilización de variables en TI-83 BASIC

    • La variable N se reutiliza para dos propósitos distintos
      1. Cantidad de heroína en inventario: 0→N, (N+G)→N, (N-G)→N
      2. Seguimiento de ubicación: 2→N (Bronx), 1→N (otras zonas)
    • Esto provoca los siguientes bugs lógicos
      • Al moverse, cambia la cantidad de heroína (al ir al Bronx, N=2 → se interpreta como 2 unidades de heroína)
      • Al comerciar heroína, el valor de ubicación se sobrescribe y la detección del Bronx falla
      • Si N=0, fallan a la vez las comprobaciones de Bronx/no Bronx, lo que elimina la restricción de acceso al banco y al prestamista
      • Al viajar al Bronx aparecen automáticamente 2 unidades de heroína, lo que permite un bucle de ganancias infinitas
      • La fórmula de inventario (T-M-N-O-P-Q-R)→K usa el valor de ubicación, causando un error en el cálculo del espacio de almacenamiento
  • Principales formas de explotación

    1. Acceso ilimitado al banco/prestamista: con N=0 se eluden las restricciones por zona
    2. Generación infinita de heroína: al viajar al Bronx se crean automáticamente 2 unidades que pueden venderse repetidamente
    3. Inconsistencia de inventario: al sobrescribirse el valor de ubicación, se puede exceder la capacidad del impermeable

Origen del código y contexto histórico

  • gammalogic preguntó si estaba basado en el código original de IBM BASIC, y mattmanning respondió que “la versión TI está basada en el juego de IBM, pero no puede compilarse para otras plataformas y sirve más bien como referencia de reglas y lógica del juego”
    • Explicó que encontró el código en internet y que solo ordenó el formato del texto
  • El autor original, John Dell, creó Drugwars inspirado por Taipan, un juego para TRS-80

Expansión de la comunidad y actividad posterior

  • Algunos usuarios reportaron errores al ejecutarlo en TI-84+, pero otros confirmaron que funciona correctamente en emuladores de TI-83+ y TI-84+
    • También se compartió el consejo de añadir :: en la primera línea del código para que MirageOS lo reconozca
    • Igualmente puede ejecutarse introduciendo el código directamente en la calculadora con prgm -> new
  • El usuario DaSovietPotato publicó en un repositorio aparte una versión con bugs corregidos y compatible con TI-84
  • gammalogic compartió planes para un remake en C/SDL y posteriores ports a consolas basadas en Z80 (Master System, NES, etc.)
    • En una demo inicial en C/SDL ya implementó una interfaz basada en la resolución de NES y funciones para cambiar ciudades y drogas
    • También mencionó planes de expandirlo en el futuro como “Drugwars 2.0”
  • Algunos usuarios mencionaron la nostalgia de haberlo jugado en la preparatoria y compartieron intentos por volver a instalarlo usando un cable para TI-83
    • La comunidad recomienda hacer ports propios a partir del análisis del código y del aprendizaje de BASIC, además de consultar el manual de TI-83
  • Entre 2024 y 2026 siguieron apareciendo comentarios, con intentos de expansión a múltiples plataformas como TI-84 CE, Pico-8 y C#
    • Algunos usuarios pidieron y compartieron archivos .8xp por correo electrónico
    • El proyecto sigue creciendo dentro de la comunidad como una iniciativa de restauración y mejora de juegos clásicos para calculadora

1 comentarios

 
GN⁺ 2026-03-22
Comentarios en Hacker News
  • TI-83 Basic fue el primer lenguaje de programación que sentí que dominaba por completo
    En mi primer año de universidad escribía código en TI-Basic y luego lo traducía a C++. En esa época, Drugwars y Bowling eran juegos realmente impresionantes
    Después, cuando descubrí el ensamblador z80, fue como magia. Recuerdo ir al laboratorio universitario de mi padre (donde había dos líneas T1 de internet) para descargar juegos nuevos en ensamblador. Turbo Breakout, Snake, AShell, Penguins y Mario en escala de grises de Bill Nagel me volaron la cabeza. Pero creo que los más pulidos y rejugables eran Sqrxz y ZTetris para TI-86.
    Una vez imprimí el código fuente en ensamblador z80 de un juego y lo cargaba conmigo en un montón del grosor de una palma para tratar de entenderlo.
    También era extrañamente divertido escribir código hexadecimal aleatorio y ejecutarlo. A veces la calculadora quedaba brickeada, pero al sacar las baterías volvía a la vida
    ¿Alguien recuerda las guerras de sitios web de TI? TI Files (más tarde TI Philes) decía que “era muchísimo más genial que ticalc.org”, pero al final el que sigue existiendo hasta hoy es ticalc.org

    • Me sorprende que ticalc.org siga vivo. Joltima fue lo que me hizo aprender ensamblador. Un RPG completo con combate por turnos en una TI-86; era una obra adelantada a su tiempo
    • El nombre Bill Nagel me inspiraba asombro cuando tenía 12 años. En esa época solo conocía TI Basic y no podía entender cómo él hacía juegos así
    • Yo también revisaba ticalc.org seguido esperando actualizaciones del demo del port de Zelda: Link’s Awakening
    • En mi caso fue PlaneJump de Andreas Ess. Gracias a eso conocí el ensamblador y el mundo de la demoscene, y me enganché por completo
  • Este juego significa muchísimo para mí. En la preparatoria estuve totalmente obsesionado con él, y esa experiencia se me quedó para siempre.
    Drugwars fue la inspiración directa para mi proyecto apasionado Farmhand
    Qué gusto verlo otra vez

    • Cuando todos instalaban este juego y clones de Mario en sus calculadoras TI, yo jugaba Space Trader, inspirado en Palm
    • La clase de Álgebra 2 era básicamente clase de Drugwars y Snake. Por suerte iba un año adelantado y me salvé de tener que recursarla
    • A mí también me encantaba tanto este juego que lo jugaba en vez de estudiar matemáticas. Apenas logré pasar los exámenes gracias a otras apps de la TI-83+.
      Ahora que llegó la era de la IA y todos parecen incapaces de hacer nada sin una computadora pequeña, siento una extraña reivindicación
    • Que te hayas enviciado con un juego tal vez hasta fue algo bueno ;-)
  • Mi “dato curioso” es que empecé a programar leyendo el manual de la TI-83+
    Pasé todo 9.º grado haciendo una versión de Street Fighter con monitos de palitos usando TI-BASIC y funciones de gráficas.
    Como la pantalla solo mostraba 8 líneas, después terminé escribiendo el código en papel.
    Aún me sorprende haber implementado una estructura para que dos personas jugaran en la misma calculadora usando GOTO y LABEL.
    Mi optimización favorita fue cambiar la cabeza de un círculo a un hexágono — como solo había que dibujar 6 líneas, era mucho más rápido

    • Yo también quería una TI-86 para mi cumpleaños de 7.º grado. Era porque se podía programar.
      En 9.º hice un programa que resolvía problemas de álgebra paso a paso, pero descubrí un bug nivel P1 durante un examen.
      En la tarea funcionaba perfecto, pero justo con el problema del examen se rompía. Al final pasé más tiempo depurándolo que haciendo el examen.
      Viéndolo en retrospectiva, fue una clase para aprender casos borde más que matemáticas
    • Yo también empecé con el manual de la TI-83+. Hacía juegos con menús y asistentes para la tarea antes de pasarme al ensamblador z80.
      Ahora trabajo en desarrollo móvil. Siempre me gustó poder llevar en el bolsillo algo que yo mismo hice
    • Yo empecé con una TI-84. Hice un juego de tres en raya con una “IA” perfecta, pero también se podía ingresar “número de jugadores: 0”
      Video relacionado
    • En mi caso hice un clon de Scorched Earth en una TI-81. Implementé multijugador, viento y hasta generación aleatoria de terreno.
      Me acabé los 2.4 KB completos y todos los espacios de variables
  • El origen de este juego se remonta a DOS en 1984
    Drug Wars (video game) - Wikipedia

    • Viendo los ‘Ludes’ en esta versión, definitivamente se siente muy 1984
    • Después evolucionó como juego de puerta de BBS
      Archivo relacionado
  • Tenía un amigo en 9.º grado, a finales del siglo XX, que era un artista tan talentoso que hacía porno pixel art en una TI-82
    Repetía cada escena en dos cuadros para lograr un movimiento sorprendentemente realista

    • Eso de “a finales del siglo XX” duele demasiado
    • Me da curiosidad al menos la inicial de la ciudad donde pasó eso
    • Estas cosas te recuerdan lo increíble que es la creatividad adolescente. Es broma, pero por eso quizá también habría que prohibir plumas y pintura
  • Este juego también puede correr en la serie HP 48
    Drugwars para HP 48
    Larga vida al RPN

    • Larga vida al RPN
  • Mi primera experiencia programando fue en una TI-83.
    Todavía recuerdo claramente hacer que mis amigos jugaran un juego de aventura de opciones en clase

  • Jugué este juego muchísimo en una TI-83+.
    Gracias a esa calculadora aprendí a programar, e hice programas de cálculo para matemáticas/ciencias y juegos simples en TI-BASIC.
    Ahora ya casi no recuerdo la sintaxis, pero en ese entonces era bastante bueno

    • Yo empecé exactamente igual. Jugando con la calculadora terminé entendiendo el concepto de programar
  • Al ver en el código algo como “If Zù500”, me pregunté por qué se usaba el carácter ù
    Según ChatGPT, en TI-BASIC el valor de byte de ≤ coincide con ù(0xF9) en ANSI/Windows-1252. O sea, era un problema de codificación

  • Wow, esto sí que fue una explosión de nostalgia
    Recuerdo que en 9.º grado, cuando mi profesor de ciencias me preguntó qué estaba haciendo con la calculadora, borré el juego rapidísimo por miedo a que me suspendieran
    En cambio, le mostré que estaba haciendo un juego tipo Wing Commander Privateer, y así salí del paso