- 1980년대 IBM PC용 BASIC 게임을 기반으로 한 거래 시뮬레이션 게임으로, TI-82·83·83+ 계산기에서 TI-BASIC으로 실행되는 버전
- 플레이어는 여섯 도시를 이동하며 마약을 사고팔고 빚을 갚으며 한 달간 최대 수익을 추구, 무작위 사건과 경찰 추격이 포함된 구조
- 커뮤니티는 .8xp 파일 공유, TI CONNECT 전송, TI-Coder 변환 등 설치·실행 방법을 활발히 논의하며 다양한 수정 버전을 제작
- 코드 분석을 통해 변수 중복 사용으로 인한 버그와 무한 수익 루프 등 논리 오류가 발견되어, 여러 사용자가 이를 수정하고 TI-84 CE 호환 버전을 공개
- 이후 C/SDL 리메이크, Pico-8 및 C# 포팅, Z80 콘솔 이식 등으로 발전하며, 고전 계산기 게임 복원 프로젝트로 커뮤니티가 확장됨
TI-82/83/83+용 Drugwars 게임 개요
- TI-82, TI-83, TI-83+ 계산기에서 실행되는 Drugwars는 1980년대 IBM PC용 BASIC 게임을 기반으로 한 거래 시뮬레이션 게임
- 플레이어는 마약을 사고팔며 대부업자에게 진 빚을 갚고, 한 달 동안 가능한 많은 돈을 버는 것이 목표
- 게임은 TI-BASIC 언어로 작성되어 있으며, Lbl, Goto, Menu, Disp 명령어를 중심으로 구성
- 게임 시작 시 초기 자금, 부채, 인벤토리, 트렌치코트 용량 등의 변수 초기화가 이루어짐
- 예: 2000→Z(현금), 5000→Y(부채), 100→K(가용 공간) 등
- “ORIGINAL GAME FOR IBM BY JOHN E. DELL” 문구가 표시되어 원작 출처를 명시
-
게임 진행 구조
- 플레이어는 브롱크스, 게토, 센트럴파크, 맨해튼, 코니아일랜드, 브루클린 등 여섯 도시를 이동하며 거래 수행
-
Menu("DRUGWAR!", "SEE PRICES", "BUY", "SELL", "JET", "SEE LOAN SHARK", "VISIT BANK") 메뉴를 통해 행동 선택
- 각 약물(코카인, 헤로인, LSD, 대마초, 스피드, 루드)의 가격은 매일 무작위로 변동
-
이벤트 시스템
-
rand 함수를 이용해 무작위 사건 발생
- 경쟁 딜러의 덤핑 판매, 경찰 급습, 가격 폭등, 지하철 강도 피해 등
- 예: “YOU WERE MUGGED IN THE SUBWAY!” 발생 시 현금의 1/3 손실
- 일정 조건에서 무기 구매, 트렌치코트 업그레이드, 은행 거래, 대부업자 상환 가능
-
전투 및 경찰 추격
- 일정량 이상의 마약을 보유하면 경찰(OFFICER HARDASS)이 추격
- 메뉴에서 RUN 또는 FIGHT 선택 가능
- 무기가 없으면 도망만 가능하며, 체력(J)이 50 이상이면 사망 처리
- 경찰을 모두 처치하면 현금 보상 획득
-
게임 종료 및 점수 계산
- 31일이 지나면 게임 종료
- 점수는 (V+Z-Y)를 기반으로 계산 후 1~100 범위로 환산
- “YOUR SCORE (ON A SCALE OF 1 TO 100)” 메시지와 함께 결과 표시
커뮤니티 논의 및 개선 버전 공유
- TI-82/83/83+용 Drugwars 게임 설치 및 실행 방법에 대한 활발한 논의가 이어짐
- 계산기 내 BASIC 인터프리터(PRGM → New)를 통해 직접 코드를 입력하거나, TI-Coder를 이용해 .8xp 파일로 변환 후 전송 가능
- 변환 시 ≥를 >=, →를 ->, θ를 0으로 바꾸는 등의 수정 필요
-
TI CONNECT나 TI-83용 USB 어댑터를 사용해 PC에서 계산기로 파일 전송 가능
-
gammalogic의 조언
- TI-83용 USB 어댑터를 구입해 PC에서 게임을 다운로드하거나, 소스 코드를 직접 입력하는 두 가지 방법 제시
- 일부 어댑터는 Windows XP용 드라이버를 사용하므로 최신 Windows에서는 호환성 문제가 있을 수 있음
- Linux나 Unix 기반의 자유 소프트웨어 드라이버 존재 가능성 언급
-
ileathan의 .8xp 파일 제공
-
darth-crunchus의 수정 및 개선
- TI-Coder 변환 시 부등호 기호 오류와 변수명 대소문자 문제를 지적
- Lbl 3, Lbl 4의 조건문을 BASIC 편집기에서 수정해야 정상 작동
- TI-84 Plus CE에서 완전 작동하도록 수정하며 무작위 이벤트(경찰견, 브라우니 등), 무기 가격, 트렌치코트 업그레이드, 저장공간 랜덤화 등을 복원
- 최종 코드 크기는 6310B, 이후 업데이트 버전에서는 11429B까지 확장
- DOS 원작에 가깝게 만들기 위해 rand( 함수의 시드(random seeding) 기능 추가
- 최신 버전의 소스는 https://pastebin.com/4dUuw0BR에 공개
-
TI-BASIC 입력 관련 논의
- alphanumeric 입력 처리에 대한 논의에서 TI-BASIC이 문자열을 가변 길이로 처리할 수 있음을 언급
- 변수에 문자를 입력하면 해당 문자의 값이 변수로 전달되는 방식으로 작동
-
호환성과 실행 문제
- TI-84 Plus CE 및 CE Python 모델에서도 수정 없이 실행 가능
- 일부 사용자는 구매/판매 시 입력 오류로 MirageOS로 되돌아가는 문제를 보고
-
추가 포팅 및 아이디어
-
C# 콘솔 앱 버전으로 재작성하려는 계획 제시
-
Pico-8 버전을 직접 작성했다는 사용자 등장
- Android나 PC용 이식에 대한 관심도 언급됨
코드 구조 및 버그 분석
-
tibbon의 TI-83 BASIC 변수 재사용 분석
- 변수 N이 두 가지 용도로 중복 사용됨
-
헤로인 재고량: 0→N, (N+G)→N, (N-G)→N
-
위치 추적: 2→N(Bronx), 1→N(기타 지역)
- 이로 인해 다음과 같은 논리적 버그 발생
- 이동 시 헤로인 수량이 변경됨 (Bronx로 이동 시 N=2 → 헤로인 2개 보유로 인식)
- 헤로인 거래 시 위치 값이 덮어써져 Bronx 판정이 잘못됨
- N=0 상태에서는 Bronx/비-Bronx 체크가 모두 실패해 은행·대부업자 접근 제한이 해제됨
- Bronx로 이동 시 자동으로 헤로인 2개가 생겨 무한 수익 루프 가능
- 재고 계산식 (T-M-N-O-P-Q-R)→K가 위치값을 사용해 저장공간 계산 오류 발생
-
주요 악용 사례
-
무제한 은행/대부업자 접근: N=0 상태에서 지역 제한 우회
-
무한 헤로인 생성: Bronx 이동 시 자동 생성된 2개를 반복 판매
-
인벤토리 불일치: 위치값 덮어쓰기 때문에 트렌치코트 용량 초과 가능
원본 코드 출처 및 역사적 배경
-
gammalogic은 IBM BASIC 원본 코드 기반 여부를 질문했고, mattmanning은 “TI 버전은 IBM 게임을 기반으로 하지만, 다른 플랫폼으로 컴파일은 불가능하며 게임 규칙과 로직 참고용으로 적합”이라 언급
- 그는 인터넷에서 코드를 발견해 문자 포맷만 정리했다고 설명
- 원작자 John Dell은 TRS-80용 게임 Taipan에서 영감을 받아 Drugwars를 제작
커뮤니티 확장 및 후속 활동
- 일부 사용자는 TI-84+에서 실행 오류를 보고했으나, 다른 사용자는 TI-83+ 및 TI-84+ 에뮬레이터에서 정상 실행 확인
-
::를 코드 첫 줄에 추가해야 MirageOS에서 인식된다는 팁 공유
- 직접 계산기에서 prgm -> new로 코드를 입력해도 실행 가능
- 사용자 DaSovietPotato가 TI-84 호환 버그를 수정한 버전을 별도 저장소에 공개
-
gammalogic은 C/SDL로 리메이크 후 Z80 기반 콘솔(마스터시스템, NES 등) 포팅 계획 공유
- 초기 C/SDL 데모에서는 NES 해상도 기반 인터페이스와 도시·약물 교체 기능 구현
- 향후 “Drugwars 2.0” 버전으로 확장 계획 언급
- 일부 사용자는 고등학교 시절 즐겼던 향수를 언급하며, TI-83용 케이블을 이용해 다시 설치하려는 시도 공유
- 커뮤니티는 코드 분석과 BASIC 학습을 통해 직접 포팅을 권장, TI-83 매뉴얼 참조를 추천
- 2024~2026년까지 지속적으로 댓글이 추가되며, TI-84 CE, Pico-8, C# 포팅 등 다양한 플랫폼 확장 시도가 이루어짐
- 일부 사용자는 .8xp 파일 요청 및 공유를 이메일로 주고받음
- 커뮤니티 내에서 고전 계산기 게임 복원 및 개선 프로젝트로 발전 중임