1 pontos por GN⁺ 2026-03-22 | 1 comentários | Compartilhar no WhatsApp
  • Um jogo de simulação de comércio baseado no jogo em BASIC para IBM PC dos anos 1980, em uma versão executada em calculadoras TI-82·83·83+ com TI-BASIC
  • O jogador se desloca entre seis cidades para comprar e vender drogas, pagar dívidas e buscar o maior lucro possível ao longo de um mês, com eventos aleatórios e perseguições policiais incluídos
  • A comunidade discute ativamente métodos de instalação e execução, como compartilhamento de arquivos .8xp, transferência via TI CONNECT e conversão com TI-Coder, além de criar várias versões modificadas
  • A análise do código revelou bugs causados pela reutilização de variáveis e erros lógicos, como um loop de lucro infinito; vários usuários corrigiram isso e publicaram versões compatíveis com a TI-84 CE
  • Depois disso, o projeto evoluiu para remakes em C/SDL, ports para Pico-8 e C# e adaptações para consoles Z80, com a comunidade se expandindo como um projeto de preservação de jogos clássicos de calculadora

Visão geral do jogo Drugwars para TI-82/83/83+

  • Drugwars, executado nas calculadoras TI-82, TI-83 e TI-83+, é um jogo de simulação de comércio baseado em um jogo em BASIC para IBM PC dos anos 1980
    • O jogador compra e vende drogas para quitar a dívida com o agiota e tentar ganhar o máximo de dinheiro possível ao longo de um mês
    • O jogo foi escrito em TI-BASIC e é estruturado principalmente em torno dos comandos Lbl, Goto, Menu e Disp
  • No início do jogo, ocorre a inicialização de variáveis como capital inicial, dívida, inventário e capacidade da trench coat
    • Ex.: 2000→Z (dinheiro), 5000→Y (dívida), 100→K (espaço disponível) etc.
    • A frase “ORIGINAL GAME FOR IBM BY JOHN E. DELL” é exibida para indicar a origem da obra original
  • Estrutura de progressão do jogo

    • O jogador realiza negociações ao se mover entre seis cidades, como Bronx, Ghetto, Central Park, Manhattan, Coney Island e Brooklyn
    • As ações são escolhidas por meio do menu Menu("DRUGWAR!", "SEE PRICES", "BUY", "SELL", "JET", "SEE LOAN SHARK", "VISIT BANK")
    • Os preços de cada droga (cocaína, heroína, LSD, maconha, speed e ludes) variam aleatoriamente a cada dia
  • Sistema de eventos

    • Eventos aleatórios ocorrem com o uso da função rand
      • Incluem liquidação feita por traficantes rivais, batidas policiais, explosão de preços e assaltos no metrô
      • Ex.: quando ocorre “YOU WERE MUGGED IN THE SUBWAY!”, o jogador perde 1/3 do dinheiro
    • Sob certas condições, é possível comprar armas, fazer upgrade da trench coat, usar o banco e pagar o agiota
  • Combate e perseguição policial

    • Ao portar certa quantidade de drogas, o jogador passa a ser perseguido pela polícia (OFFICER HARDASS)
    • No menu, é possível escolher entre RUN ou FIGHT
    • Sem armas, só é possível fugir, e se a vida (J) for 50 ou mais, isso resulta em morte
    • Ao derrotar todos os policiais, o jogador recebe uma recompensa em dinheiro
  • Fim de jogo e cálculo de pontuação

    • O jogo termina após 31 dias
    • A pontuação é calculada com base em (V+Z-Y) e depois convertida para uma faixa de 1 a 100
    • O resultado é exibido com a mensagem “YOUR SCORE (ON A SCALE OF 1 TO 100)”

Discussões da comunidade e compartilhamento de versões melhoradas

  • Houve ampla discussão sobre como instalar e executar o jogo Drugwars para TI-82/83/83+
    • É possível digitar o código manualmente pelo interpretador BASIC da calculadora (PRGM → New) ou convertê-lo em arquivo .8xp com o TI-Coder e então transferi-lo
    • Durante a conversão, são necessários ajustes como trocar por >=, por -> e θ por 0
    • Também é possível transferir arquivos do PC para a calculadora usando TI CONNECT ou um adaptador USB para TI-83
  • Conselhos de gammalogic

    • Foram apresentadas duas opções: comprar um adaptador USB para TI-83 e baixar o jogo do PC, ou digitar o código-fonte manualmente
    • Alguns adaptadores usam drivers para Windows XP, então podem existir problemas de compatibilidade em versões mais novas do Windows
    • Também foi mencionada a possível existência de drivers de software livre para Linux ou sistemas baseados em Unix
  • Fornecimento do arquivo .8xp por ileathan

    • Um arquivo .8xp gerado com TI-Coder foi compartilhado no link https://t7.vc/dl/DRUGWARS.8xp
    • Ele pode ser transferido para a calculadora usando TI CONNECT e um adaptador USB
  • Correções e melhorias de darth-crunchus

    • Foram apontados erros de símbolos de desigualdade e problemas de maiúsculas/minúsculas em nomes de variáveis durante a conversão com TI-Coder
    • As condicionais em Lbl 3 e Lbl 4 precisam ser corrigidas no editor BASIC para funcionar corretamente
    • Ele ajustou o jogo para funcionar plenamente na TI-84 Plus CE, restaurando eventos aleatórios (cães policiais, brownies etc.), preços de armas, upgrade da trench coat e randomização de espaço de armazenamento
    • O tamanho final do código ficou em 6310B, e em versões posteriores chegou a 11429B
    • Para deixá-lo mais próximo do original de DOS, foi adicionada a funcionalidade de random seeding da função rand(
    • A versão mais recente do código-fonte foi publicada em https://pastebin.com/4dUuw0BR
  • Discussão sobre entrada em TI-BASIC

    • Em discussões sobre entrada alfanumérica, foi mencionado que o TI-BASIC consegue tratar strings com comprimento variável
    • Quando um caractere é inserido em uma variável, o valor correspondente desse caractere é passado para a variável
  • Compatibilidade e problemas de execução

    • O jogo também funciona sem modificações nos modelos TI-84 Plus CE e CE Python
    • Alguns usuários relataram que erros de entrada durante compra/venda faziam o sistema voltar para o MirageOS
  • Ports adicionais e ideias

    • Foi mencionado um plano para reescrever o jogo como aplicativo de console em C#
    • Também apareceu um usuário dizendo ter escrito uma versão em Pico-8
    • Houve ainda interesse em ports para Android e PC

Estrutura do código e análise de bugs

  • Análise de tibbon sobre reutilização de variáveis no BASIC da TI-83

    • A variável N é reutilizada para dois propósitos diferentes
      1. Quantidade em estoque de heroína: 0→N, (N+G)→N, (N-G)→N
      2. Rastreamento de localização: 2→N (Bronx), 1→N (outras áreas)
    • Isso causa os seguintes bugs lógicos
      • Ao se mover, a quantidade de heroína muda (ao ir para o Bronx, N=2, então o jogo entende que há 2 unidades de heroína)
      • Ao negociar heroína, o valor de localização é sobrescrito, fazendo a detecção de Bronx falhar
      • Quando N=0, tanto a verificação de Bronx quanto a de não-Bronx falham, então a restrição de acesso ao banco/agiota é removida
      • Ao ir para o Bronx, 2 unidades de heroína são geradas automaticamente, permitindo um loop de lucro infinito
      • A fórmula de inventário (T-M-N-O-P-Q-R)→K usa o valor de localização, causando erro no cálculo de espaço de armazenamento
  • Principais formas de exploração

    1. Acesso ilimitado ao banco/agiota: contornar a restrição de área com N=0
    2. Geração infinita de heroína: vender repetidamente as 2 unidades criadas automaticamente ao ir para o Bronx
    3. Inconsistência de inventário: como o valor de localização sobrescreve dados, é possível exceder a capacidade da trench coat

Origem do código-fonte e contexto histórico

  • gammalogic perguntou se ele era baseado no código original em IBM BASIC, e mattmanning respondeu que “a versão TI é baseada no jogo de IBM, mas não pode ser compilada para outras plataformas; serve bem como referência para as regras e a lógica do jogo”
    • Ele explicou que encontrou o código na internet e apenas reorganizou a formatação textual
  • O autor original, John Dell, criou Drugwars inspirado no jogo Taipan para TRS-80

Expansão da comunidade e atividades posteriores

  • Alguns usuários relataram erros de execução no TI-84+, mas outros confirmaram funcionamento normal em emuladores TI-83+ e TI-84+
    • Também foi compartilhada a dica de que é preciso adicionar :: na primeira linha do código para que o MirageOS o reconheça
    • O código também pode ser executado se for digitado diretamente na calculadora via prgm -> new
  • O usuário DaSovietPotato publicou em um repositório separado uma versão com correções de bugs compatível com TI-84
  • gammalogic compartilhou planos de fazer um remake em C/SDL e depois portar para consoles baseados em Z80 (Master System, NES etc.)
    • Em um demo inicial em C/SDL, já haviam sido implementados uma interface baseada na resolução do NES e recursos para trocar cidades e drogas
    • Também foi mencionada a intenção de expandir isso futuramente como uma versão “Drugwars 2.0”
  • Alguns usuários citaram a nostalgia de terem jogado isso no ensino médio e compartilharam tentativas de reinstalar o jogo usando cabos para TI-83
    • A comunidade recomenda estudar o código e fazer o port manualmente, com consulta ao manual da TI-83
  • Comentários continuaram sendo adicionados de 2024 a 2026, com tentativas de expansão para várias plataformas, como TI-84 CE, Pico-8 e C#
    • Alguns usuários trocaram pedidos e compartilhamento de arquivos .8xp por e-mail
    • O projeto segue evoluindo dentro da comunidade como uma iniciativa de preservação e melhoria de jogos clássicos de calculadora

1 comentários

 
GN⁺ 2026-03-22
Comentários do Hacker News
  • TI-83 Basic foi a primeira linguagem de programação que senti que dominei completamente
    No primeiro ano da faculdade, eu escrevia código em TI-Basic e depois o traduzia para C++. Na época, Drugwars e Bowling eram jogos realmente marcantes
    Depois, quando descobri assembly z80, pareceu magia. Ainda lembro de ir ao laboratório da faculdade do meu pai (que tinha 2 linhas T1 de internet) para baixar os novos jogos em assembly que saíam. Turbo Breakout, Snake, AShell, Penguins, e Mario em escala de cinza, do Bill Nagel, foram um choque. Mas acho que os mais polidos e rejogáveis eram Sqrxz e ZTetris para TI-86.
    Uma vez, imprimi o código-fonte em assembly z80 de um jogo e andei com aquilo, com a espessura de um palmo, tentando entender.
    E, por algum motivo, também era divertido digitar código hexadecimal aleatório e executar. Às vezes a calculadora virava um tijolo, mas bastava tirar a bateria para ela voltar à vida
    Mais alguém lembra da guerra dos sites da TI? O TI Files (depois TI Philes) dizia que era “muito mais legal que o ticalc.org”, mas no fim o que sobreviveu até hoje foi o ticalc.org

    • É impressionante que o ticalc.org ainda esteja no ar. Joltima foi o que me fez aprender assembly. Um RPG completo com combate por turnos no TI-86, era algo à frente do seu tempo
    • O nome Bill Nagel inspirava reverência no meu eu de 12 anos. Na época eu só conhecia TI Basic, então não conseguia entender como ele fazia jogos daquele jeito
    • Eu também ficava acompanhando o ticalc.org esperando atualizações da demo do port de Zelda: Link’s Awakening
    • No meu caso, foi PlaneJump, do Andreas Ess. Foi por meio dele que conheci o mundo do assembly e da demoscene, e mergulhei de cabeça
  • Esse jogo significa muito para mim. Fiquei completamente viciado nele no ensino médio, e essa experiência ficou marcada na minha vida.
    Drugwars foi a inspiração direta do meu projeto de paixão Farmhand
    Fico muito feliz de vê-lo de novo assim

    • Quando todo mundo colocava esse jogo e clones de Mario nas calculadoras TI, eu jogava Space Trader, inspirado no Palm
    • A aula de Algebra 2 era basicamente aula de Drugwars e Snake. Felizmente eu estava um ano adiantado, então não precisei repetir
    • Eu também gostava tanto desse jogo que ficava jogando em vez de estudar matemática. Só passei nas provas graças a outros apps do TI-83+.
      Agora, na era da IA, vendo que todo mundo ficou incapaz de fazer qualquer coisa sem um computadorzinho, sinto uma estranha validação
    • Talvez ter sido viciado em jogos tenha sido uma coisa boa ;-)
  • Meu “fato curioso” é que comecei a programar lendo o manual do TI-83+
    Passei o 9º ano inteiro fazendo uma versão em bonequinhos de Street Fighter usando TI-BASIC e funções gráficas.
    Como só dava para ver 8 linhas na tela, depois comecei a escrever o código no papel.
    Ainda acho impressionante que consegui implementar uma estrutura em que duas pessoas podiam jogar na mesma calculadora usando GOTO e LABEL.
    Minha otimização favorita foi trocar a cabeça de um círculo por um hexágono — como bastava desenhar 6 linhas, ficava muito mais rápido

    • Eu também quis um TI-86 no meu aniversário de 7ª série. Porque dava para programar nele.
      Na 9ª série, fiz um programa que resolvia problemas de álgebra passo a passo e descobri um bug nível P1 durante uma prova.
      Funcionava perfeitamente na lição de casa, mas quebrava justamente nos problemas da prova. Acabei gastando mais tempo depurando do que fazendo a prova.
      Olhando para trás, foi uma aula mais sobre casos de borda do que sobre matemática
    • Eu também comecei com o manual do TI-83+. Fiz jogos baseados em menu e ajudantes de lição de casa, depois passei para assembly z80.
      Hoje trabalho com desenvolvimento mobile. Sempre gostei da ideia de poder carregar no bolso algo que eu mesmo fiz
    • Eu comecei com um TI-84. Fiz um jogo da velha com uma “IA” perfeita, mas também era possível digitar “número de jogadores: 0”
      Vídeo relacionado
    • No meu caso, fiz um clone de Scorched Earth no TI-81. Tinha multiplayer, vento e geração aleatória de terreno.
      Usei todos os 2,4 KB e todos os slots de variáveis
  • A origem deste jogo vem do DOS em 1984
    Drug Wars (video game) - Wikipedia

    • Vendo o ‘Ludes’ nesta versão, dá para sentir claramente o clima de 1984
    • Depois ele evoluiu para um door game de BBS
      Arquivo relacionado
  • No fim dos anos 1900, na 9ª série, eu tinha um amigo que era um artista tão talentoso que fazia pornô em pixel art no TI-82
    Ele repetia cada cena em dois quadros, criando um movimento surpreendentemente realista

    • “Fim dos anos 1900”... essa expressão dói demais
    • Queria saber pelo menos a primeira letra da cidade onde isso aconteceu
    • Esse tipo de coisa mostra como a criatividade dos adolescentes é impressionante. Brincando, mas por esse motivo talvez também devêssemos proibir caneta e tinta
  • Este jogo também roda na série HP 48
    Drugwars para HP 48
    Vida longa à RPN

    • Vida longa à RPN
  • Minha primeira experiência com programação foi no TI-83.
    Ainda me lembro vividamente de fazer meus amigos jogarem aventuras de múltipla escolha durante a aula

  • Joguei muito esse jogo no TI-83+.
    Foi por causa dessa calculadora que aprendi a programar, e fiz programas de cálculo para matemática/ciências e jogos simples em TI-BASIC.
    Hoje já esqueci bastante da sintaxe, mas na época eu mandava bem

    • Eu comecei exatamente assim também. Mexendo na calculadora, acabei entendendo o conceito de programação
  • Ao ver no código algo como “If Zù500”, fiquei curioso sobre por que o caractere ù era usado
    Segundo o ChatGPT, no TI-BASIC o valor de byte de ≤ é o mesmo que ù(0xF9) em ANSI/Windows-1252. Ou seja, era um problema de codificação

  • Uau, isso trouxe uma avalanche de nostalgia
    Lembro que na 9ª série, quando a professora de ciências perguntou o que eu estava fazendo na calculadora, apaguei o jogo às pressas com medo de levar suspensão
    Em vez disso, mostrei que estava fazendo algo como Wing Commander Privateer, e escapei ileso