- 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
- Quantidade em estoque de heroína:
0→N, (N+G)→N, (N-G)→N
- 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
- Acesso ilimitado ao banco/agiota: contornar a restrição de área com
N=0
- Geração infinita de heroína: vender repetidamente as 2 unidades criadas automaticamente ao ir para o Bronx
- 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
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
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
Agora, na era da IA, vendo que todo mundo ficou incapaz de fazer qualquer coisa sem um computadorzinho, sinto uma estranha validação
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
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
Hoje trabalho com desenvolvimento mobile. Sempre gostei da ideia de poder carregar no bolso algo que eu mesmo fiz
Vídeo relacionado
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
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
Este jogo também roda na série HP 48
Drugwars para HP 48
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
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