- Sebuah game simulasi perdagangan berbasis game BASIC untuk IBM PC dari era 1980-an, dalam versi yang berjalan di kalkulator TI-82·83·83+ menggunakan TI-BASIC
- Pemain berpindah di antara enam kota untuk membeli dan menjual narkoba, melunasi utang, dan mengejar keuntungan maksimum selama satu bulan, dengan struktur yang mencakup kejadian acak dan kejaran polisi
- Komunitas secara aktif membahas cara instalasi dan menjalankannya, seperti berbagi file
.8xp, transfer lewat TI CONNECT, dan konversi dengan TI-Coder, serta membuat berbagai versi modifikasi
- Melalui analisis kode, ditemukan kesalahan logika seperti bug akibat penggunaan variabel yang tumpang tindih dan loop keuntungan tak terbatas; banyak pengguna kemudian memperbaikinya dan merilis versi yang kompatibel dengan TI-84 CE
- Setelah itu proyek ini berkembang menjadi remake C/SDL, porting Pico-8 dan C#, serta adaptasi ke konsol Z80, sehingga komunitasnya meluas sebagai proyek pelestarian game kalkulator klasik
Gambaran game Drugwars untuk TI-82/83/83+
- Drugwars yang berjalan di kalkulator TI-82, TI-83, dan TI-83+ adalah game simulasi perdagangan yang didasarkan pada game BASIC untuk IBM PC dari era 1980-an
- Pemain membeli dan menjual narkoba sambil melunasi utang kepada lintah darat, dengan tujuan menghasilkan uang sebanyak mungkin dalam waktu satu bulan
- Game ini ditulis dalam bahasa TI-BASIC dan disusun dengan fokus pada perintah
Lbl, Goto, Menu, dan Disp
- Saat game dimulai, dilakukan inisialisasi variabel seperti modal awal, utang, inventaris, dan kapasitas trenchcoat
- Contoh:
2000→Z (uang tunai), 5000→Y (utang), 100→K (ruang tersedia), dll.
- Teks “ORIGINAL GAME FOR IBM BY JOHN E. DELL” ditampilkan untuk mencantumkan sumber karya asli
-
Struktur permainan
- Pemain melakukan perdagangan sambil berpindah di antara enam kota: Bronx, Ghetto, Central Park, Manhattan, Coney Island, dan Brooklyn
- Aksi dipilih melalui menu
Menu("DRUGWAR!", "SEE PRICES", "BUY", "SELL", "JET", "SEE LOAN SHARK", "VISIT BANK")
- Harga setiap jenis barang (cocaine, heroin, LSD, marijuana, speed, ludes) berubah secara acak setiap hari
-
Sistem event
- Kejadian acak muncul dengan fungsi
rand
- Misalnya obral buang stok dari dealer saingan, penggerebekan polisi, lonjakan harga, atau perampokan di kereta bawah tanah
- Contoh: jika muncul “YOU WERE MUGGED IN THE SUBWAY!”, pemain kehilangan 1/3 uang tunai
- Dalam kondisi tertentu pemain bisa membeli senjata, upgrade trenchcoat, bertransaksi dengan bank, dan membayar utang ke lintah darat
-
Pertarungan dan kejaran polisi
- Jika membawa narkoba dalam jumlah tertentu, pemain akan dikejar polisi (
OFFICER HARDASS)
- Di menu, pemain dapat memilih RUN atau FIGHT
- Jika tidak punya senjata maka hanya bisa kabur, dan bila health (
J) mencapai 50 atau lebih maka dianggap mati
- Jika semua polisi berhasil dikalahkan, pemain mendapat hadiah uang tunai
-
Akhir game dan perhitungan skor
- Game berakhir setelah 31 hari
- Skor dihitung berdasarkan
(V+Z-Y) lalu dikonversi ke rentang 1~100
- Hasil ditampilkan bersama pesan “YOUR SCORE (ON A SCALE OF 1 TO 100)”
Diskusi komunitas dan pembagian versi perbaikan
- Diskusi aktif terus berlanjut tentang cara memasang dan menjalankan game Drugwars untuk TI-82/83/83+
- Kode bisa dimasukkan langsung lewat interpreter BASIC di kalkulator (PRGM → New), atau dikonversi menjadi file
.8xp dengan TI-Coder lalu ditransfer
- Saat konversi, perlu penyesuaian seperti mengganti
≥ menjadi >=, → menjadi ->, dan θ menjadi 0
- File dapat dikirim dari PC ke kalkulator menggunakan TI CONNECT atau adaptor USB untuk TI-83
-
Saran dari gammalogic
- Ia menawarkan dua cara: membeli adaptor USB TI-83 untuk mengunduh game dari PC, atau memasukkan source code secara manual
- Beberapa adaptor memakai driver untuk Windows XP, sehingga bisa menimbulkan masalah kompatibilitas di Windows modern
- Ia juga menyebut kemungkinan adanya driver perangkat lunak bebas untuk Linux atau sistem berbasis Unix
-
File .8xp dari ileathan
- File
.8xp hasil TI-Coder dibagikan lewat tautan https://t7.vc/dl/DRUGWARS.8xp
- File itu bisa ditransfer ke kalkulator dengan TI CONNECT dan adaptor USB
-
Modifikasi dan perbaikan oleh darth-crunchus
- Ia menunjukkan adanya kesalahan simbol pertidaksamaan saat konversi dengan TI-Coder serta masalah huruf besar-kecil pada nama variabel
- Kondisional pada Lbl 3 dan Lbl 4 harus diperbaiki di editor BASIC agar game berfungsi normal
- Ia menyesuaikan game agar berjalan penuh di TI-84 Plus CE sambil memulihkan event acak (anjing polisi, brownies, dll.), harga senjata, upgrade trenchcoat, dan pengacakan kapasitas simpan
- Ukuran kode final menjadi 6310B, lalu pada versi pembaruan berkembang hingga 11429B
- Untuk mendekati versi DOS asli, ia juga menambahkan kemampuan random seeding pada fungsi
rand(
- Source versi terbaru dipublikasikan di https://pastebin.com/4dUuw0BR
-
Diskusi soal input TI-BASIC
- Dalam pembahasan tentang input alfanumerik, disebutkan bahwa TI-BASIC dapat menangani string dengan panjang variabel
- Saat karakter dimasukkan ke variabel, nilai karakter tersebut akan diteruskan ke variabel terkait
-
Kompatibilitas dan masalah eksekusi
- Game dapat berjalan tanpa modifikasi di model TI-84 Plus CE maupun CE Python
- Sebagian pengguna melaporkan error input saat membeli/menjual yang menyebabkan program kembali ke MirageOS
-
Porting dan ide tambahan
- Ada rencana untuk menulis ulang game ini sebagai aplikasi konsol C#
- Seorang pengguna juga menyebut telah membuat versi Pico-8 sendiri
- Ketertarikan terhadap port untuk Android atau PC juga ikut disebutkan
Struktur kode dan analisis bug
-
Analisis penggunaan ulang variabel TI-83 BASIC oleh tibbon
- Variabel N dipakai ganda untuk dua tujuan berbeda
- Jumlah stok heroin:
0→N, (N+G)→N, (N-G)→N
- Pelacakan lokasi:
2→N (Bronx), 1→N (wilayah lain)
- Akibatnya muncul bug logika seperti berikut
- Saat berpindah lokasi, jumlah heroin berubah (misalnya pindah ke Bronx membuat N=2 sehingga dianggap memiliki 2 heroin)
- Saat transaksi heroin, nilai lokasi tertimpa sehingga pengecekan Bronx menjadi salah
- Ketika N=0, pengecekan Bronx/non-Bronx sama-sama gagal sehingga batasan akses bank dan lintah darat terlepas
- Pindah ke Bronx otomatis menghasilkan 2 heroin sehingga muncul loop keuntungan tak terbatas
- Rumus inventaris
(T-M-N-O-P-Q-R)→K memakai nilai lokasi sehingga menyebabkan kesalahan perhitungan kapasitas simpan
-
Contoh eksploitasi utama
- Akses bank/lintah darat tanpa batas: pembatasan wilayah bisa dilewati saat N=0
- Generasi heroin tak terbatas: 2 heroin yang muncul otomatis di Bronx bisa dijual berulang kali
- Inkonsistensi inventaris: karena nilai lokasi menimpa data lain, kapasitas trenchcoat bisa terlampaui
Sumber kode asli dan latar historis
- gammalogic menanyakan apakah kode ini memang berbasis pada source IBM BASIC asli, dan mattmanning menjawab bahwa “versi TI didasarkan pada game IBM, tetapi tidak bisa dikompilasi untuk platform lain dan lebih cocok sebagai referensi aturan serta logika game”
- Ia menjelaskan bahwa ia menemukan kodenya di internet lalu hanya merapikan format teksnya
- Kreator asli John Dell membuat Drugwars dengan inspirasi dari game TRS-80 Taipan
Perluasan komunitas dan aktivitas lanjutan
- Sebagian pengguna melaporkan error saat menjalankan di TI-84+, tetapi pengguna lain mengonfirmasi bahwa game berjalan normal di emulator TI-83+ dan TI-84+
- Ada juga tips bahwa
:: harus ditambahkan pada baris pertama kode agar dikenali oleh MirageOS
- Kode juga bisa dijalankan dengan memasukkannya langsung di kalkulator melalui
prgm -> new
- Pengguna DaSovietPotato merilis versi terpisah yang memperbaiki bug kompatibilitas TI-84
- gammalogic membagikan rencana remake dalam C/SDL lalu mem-porting-nya ke konsol berbasis Z80 seperti Master System dan NES
- Demo awal C/SDL sudah mengimplementasikan antarmuka berbasis resolusi NES serta fitur penggantian kota dan barang
- Ia juga menyebut rencana pengembangan lanjutan ke versi “Drugwars 2.0”
- Beberapa pengguna mengungkapkan nostalgia masa sekolah dan membagikan upaya memasang ulang game menggunakan kabel TI-83
- Komunitas juga mendorong porting mandiri melalui analisis kode dan pembelajaran BASIC, serta merekomendasikan merujuk ke manual TI-83
- Hingga 2024~2026, komentar terus bertambah dan upaya ekspansi ke TI-84 CE, Pico-8, dan port C# terus berlanjut
- Beberapa pengguna saling berkirim email untuk meminta dan membagikan file
.8xp
- Proyek ini berkembang menjadi inisiatif pelestarian dan penyempurnaan game kalkulator klasik di dalam komunitas
1 komentar
Komentar Hacker News
TI-83 Basic adalah bahasa pemrograman pertama yang membuatku merasa benar-benar menguasainya
Saat tahun pertama kuliah, aku biasa menulis kode dalam TI-Basic lalu menerjemahkannya ke C++. Pada masa itu Drugwars dan Bowling benar-benar game yang membekas
Lalu ketika aku menemukan assembly z80, rasanya seperti sihir. Aku masih ingat pergi ke lab riset kampus ayahku (tempat yang punya dua jalur internet T1) untuk mengunduh game assembly yang baru rilis. Turbo Breakout, Snake, AShell, Penguins karya Bill Nagel, dan Mario grayscale benar-benar mengguncangku. Tapi menurutku yang paling matang dan paling enak dimainkan berulang kali adalah Sqrxz dan ZTetris untuk TI-86.
Pernah juga aku mencetak source assembly z80 sebuah game dan membawanya ke mana-mana setebal satu telapak tangan sambil mencoba memahaminya.
Selain itu, entah kenapa memasukkan kode heksadesimal acak lalu menjalankannya juga terasa menyenangkan. Kadang kalkulatornya jadi brick, tapi kalau baterainya dilepas lalu dipasang lagi, hidup lagi
Ada yang ingat perang situs web TI? TI Files (yang kemudian jadi TI Philes) bilang bahwa mereka “jauh lebih keren daripada ticalc.org”, tapi pada akhirnya yang masih bertahan sampai sekarang adalah ticalc.org
Game ini sangat berarti bagiku. Saat SMA aku benar-benar kecanduan padanya, dan pengalaman itu membekas dalam hidupku.
Drugwars adalah inspirasi langsung untuk proyek passion-ku, Farmhand
Senang sekali bisa melihatnya lagi seperti ini
Sekarang di era AI, semua orang seolah tidak bisa melakukan apa-apa tanpa komputer kecil, jadi rasanya ada semacam pembenaran yang aneh
“Fakta menarik” versiku adalah aku mulai belajar pemrograman dengan membaca manual TI-83+
Sepanjang kelas 9 aku membuat versi stick figure Street Fighter memakai TI-BASIC dan fungsi grafik.
Karena layar hanya menampilkan 8 baris, belakangan aku bahkan menulis kodenya di kertas.
Sampai sekarang masih terasa menakjubkan bahwa aku berhasil membuat dua orang bisa bermain di kalkulator yang sama dengan GOTO dan LABEL.
Optimasi favoritku adalah mengubah kepala dari lingkaran menjadi heksagon — karena cukup menggambar 6 garis, jadi jauh lebih cepat
Saat kelas 9, aku membuat program yang menyelesaikan soal aljabar langkah demi langkah, lalu menemukan bug level P1 saat ujian.
Untuk PR semuanya bekerja sempurna, tapi justru rusak pada soal ujian. Akhirnya aku menghabiskan lebih banyak waktu untuk debugging daripada mengerjakan ujiannya.
Kalau dipikir-pikir sekarang, itu lebih seperti pelajaran tentang edge case daripada matematika
Sekarang aku bekerja di pengembangan mobile. Aku selalu suka bisa membawa sesuatu yang kubuat sendiri di dalam saku
Video terkait
Seluruh 2.4KB habis terpakai, begitu juga semua slot variabel
Asal-usul game ini bermula dari DOS pada 1984
Drug Wars (video game) - Wikipedia
Arsip terkait
Aku punya teman di kelas 9 pada akhir 1900-an, dan dia adalah seniman berbakat sampai-sampai bisa membuat porno pixel art di TI-82
Dia mengulang setiap adegan dalam dua frame untuk menghasilkan gerakan yang sangat realistis
Game ini juga bisa dijalankan di seri HP 48
Drugwars untuk HP 48
Hidup RPN
Pengalaman pemrograman pertamaku adalah di TI-83.
Aku masih ingat membiarkan teman-teman memainkan game petualangan pilih-sendiri saat jam pelajaran
Aku benar-benar sering memainkan game ini di TI-83+.
Berkat kalkulator itu aku belajar pemrograman, dan membuat program perhitungan untuk matematika/sains serta game sederhana dalam TI-BASIC.
Sekarang sintaksnya sudah agak lupa, tapi waktu itu aku lumayan mahir
Saat melihat ekspresi seperti “If Zù500” di kodenya, aku penasaran kenapa karakter ù dipakai
Menurut ChatGPT, dalam TI-BASIC nilai byte untuk ≤ sama dengan ù(0xF9) di ANSI/Windows-1252. Jadi ini masalah encoding
Wah, ini benar-benar ledakan nostalgia
Aku ingat saat kelas 9 guru sains bertanya aku sedang melakukan apa dengan kalkulatorku, dan karena takut diskors aku cepat-cepat menghapus gamenya
Sebagai gantinya aku menunjukkan bahwa aku sedang membuat game seperti Wing Commander Privateer, dan akhirnya lolos dari masalah