- 1980s के IBM PC के लिए बने BASIC गेम पर आधारित ट्रेडिंग सिमुलेशन गेम, जिसका यह संस्करण TI-82·83·83+ कैलकुलेटर पर TI-BASIC में चलता है
- खिलाड़ी छह शहरों के बीच घूमते हुए ड्रग्स खरीदता-बेचता है, कर्ज चुकाता है और एक महीने में अधिकतम मुनाफ़ा कमाने की कोशिश करता है, जिसमें रैंडम घटनाएँ और पुलिस पीछा शामिल हैं
- कम्युनिटी ने
.8xp फ़ाइल शेयरिंग, TI CONNECT ट्रांसफ़र, TI-Coder कन्वर्ज़न आदि इंस्टॉल और रन करने के तरीकों पर सक्रिय चर्चा की और कई संशोधित संस्करण बनाए
- कोड विश्लेषण के जरिए वेरिएबल के दोहराए गए उपयोग से होने वाले बग और infinite profit loop जैसी लॉजिकल गलतियाँ मिलीं, जिन्हें कई यूज़र ने ठीक किया और TI-84 CE compatible संस्करण जारी किए
- बाद में यह C/SDL रीमेक, Pico-8 और C# पोर्ट, Z80 console port आदि तक विकसित हुआ, और कम्युनिटी एक क्लासिक कैलकुलेटर गेम restoration प्रोजेक्ट के रूप में फैलती गई
TI-82/83/83+ के लिए Drugwars गेम का अवलोकन
- TI-82, TI-83, TI-83+ कैलकुलेटर पर चलने वाला Drugwars 1980s के IBM PC के लिए बने BASIC गेम पर आधारित एक ट्रेडिंग सिमुलेशन गेम है
- खिलाड़ी ड्रग्स खरीदता-बेचता है, सूदखोर का कर्ज चुकाता है, और एक महीने में जितना संभव हो उतना पैसा कमाना इसका लक्ष्य है
- गेम TI-BASIC भाषा में लिखा गया है और
Lbl, Goto, Menu, Disp कमांड्स के आसपास बना है
- गेम शुरू होने पर शुरुआती नकद, कर्ज, इन्वेंटरी, trenchcoat capacity जैसी वेरिएबल initialization होती है
- उदाहरण:
2000→Z(कैश), 5000→Y(कर्ज), 100→K(उपलब्ध जगह) आदि
- “ORIGINAL GAME FOR IBM BY JOHN E. DELL” वाक्य दिखाया जाता है, जिससे मूल स्रोत का उल्लेख होता है
-
गेम प्रगति संरचना
- खिलाड़ी Bronx, Ghetto, Central Park, Manhattan, Coney Island, Brooklyn जैसे छह शहरों में घूमकर ट्रेड करता है
Menu("DRUGWAR!", "SEE PRICES", "BUY", "SELL", "JET", "SEE LOAN SHARK", "VISIT BANK") मेनू से एक्शन चुना जाता है
- हर ड्रग (cocaine, heroin, LSD, marijuana, speed, ludes) की कीमत हर दिन रैंडम रूप से बदलती है
-
इवेंट सिस्टम
rand फ़ंक्शन से रैंडम घटनाएँ होती हैं
- प्रतिद्वंद्वी डीलर की dumping sale, पुलिस छापा, कीमतों में उछाल, subway mugging जैसी घटनाएँ
- उदाहरण: “YOU WERE MUGGED IN THE SUBWAY!” होने पर कैश का 1/3 हिस्सा चला जाता है
- कुछ शर्तों पर हथियार खरीदना, trenchcoat upgrade, bank transaction, loan shark repayment संभव है
-
लड़ाई और पुलिस पीछा
- एक निश्चित मात्रा से ज़्यादा ड्रग्स रखने पर पुलिस (
OFFICER HARDASS) पीछा करती है
- मेनू में RUN या FIGHT चुना जा सकता है
- हथियार न होने पर केवल भागना संभव है, और health (
J) 50 या उससे अधिक होने पर मौत मानी जाती है
- सभी पुलिसवालों को हरा देने पर कैश इनाम मिलता है
-
गेम समाप्ति और स्कोर गणना
- 31 दिन बीतने पर गेम खत्म हो जाता है
- स्कोर
(V+Z-Y) के आधार पर निकाला जाता है और फिर 1~100 रेंज में बदला जाता है
- “YOUR SCORE (ON A SCALE OF 1 TO 100)” संदेश के साथ परिणाम दिखता है
कम्युनिटी चर्चा और बेहतर किए गए संस्करणों की साझेदारी
- TI-82/83/83+ के लिए Drugwars गेम को इंस्टॉल और चलाने के तरीके पर लगातार सक्रिय चर्चा हुई
- कैलकुलेटर के BASIC interpreter (PRGM → New) में सीधे कोड टाइप किया जा सकता है, या TI-Coder से
.8xp फ़ाइल में बदलकर ट्रांसफ़र किया जा सकता है
- कन्वर्ज़न के समय
≥ को >=, → को ->, θ को 0 में बदलने जैसी एडिट की ज़रूरत पड़ती है
- TI CONNECT या TI-83 के लिए USB adapter से PC से कैलकुलेटर में फ़ाइल भेजी जा सकती है
-
gammalogic की सलाह
- TI-83 के लिए USB adapter खरीदकर PC से गेम डाउनलोड करने या source code सीधे टाइप करने, ये दो तरीके बताए गए
- कुछ adapters Windows XP drivers का उपयोग करते हैं, इसलिए नए Windows पर compatibility समस्या हो सकती है
- Linux या Unix आधारित free software drivers होने की संभावना का भी ज़िक्र किया गया
-
ileathan द्वारा .8xp फ़ाइल उपलब्ध कराना
-
darth-crunchus के संशोधन और सुधार
- TI-Coder कन्वर्ज़न के दौरान inequality symbol error और variable name case problem की ओर ध्यान दिलाया गया
- Lbl 3, Lbl 4 के condition statements को BASIC editor में ठीक करना ज़रूरी है ताकि गेम सही चले
- TI-84 Plus CE पर पूरी तरह काम करने लायक बनाते हुए random events (police dog, brownie आदि), weapon prices, trenchcoat upgrade, storage randomization आदि बहाल किए गए
- अंतिम कोड का आकार 6310B था, और बाद के अपडेट में यह 11429B तक बढ़ा
- DOS original के और करीब लाने के लिए rand( फ़ंक्शन की seed (random seeding) सुविधा जोड़ी गई
- नवीनतम source https://pastebin.com/4dUuw0BR पर प्रकाशित है
-
TI-BASIC इनपुट से जुड़ी चर्चा
- alphanumeric input handling पर चर्चा में बताया गया कि TI-BASIC strings को variable length में handle कर सकता है
- किसी variable में अक्षर डालने पर उस अक्षर का value उस variable में पास होता है
-
compatibility और execution समस्याएँ
- TI-84 Plus CE और CE Python मॉडल पर भी यह बिना किसी संशोधन के चल सकता है
- कुछ यूज़रों ने खरीद/बिक्री के दौरान input error की वजह से MirageOS पर लौट जाने की समस्या बताई
-
अतिरिक्त पोर्ट और आइडिया
- इसे C# console app version के रूप में फिर से लिखने की योजना रखी गई
- एक यूज़र ने बताया कि उसने खुद Pico-8 version लिखा है
- Android या PC पोर्ट में रुचि का भी उल्लेख हुआ
कोड संरचना और बग विश्लेषण
-
tibbon का TI-83 BASIC variable reuse विश्लेषण
- variable N का दो अलग-अलग कामों के लिए दोबारा उपयोग किया गया
- heroin inventory:
0→N, (N+G)→N, (N-G)→N
- location tracking:
2→N(Bronx), 1→N(अन्य क्षेत्र)
- इससे नीचे दिए गए logical bugs पैदा हुए
- शहर बदलते समय heroin की मात्रा बदल जाती है (Bronx जाने पर N=2 → खिलाड़ी के पास heroin 2 होने के रूप में माना जाता है)
- heroin ट्रेड करते समय location value overwrite हो जाती है और Bronx check गलत हो जाता है
- N=0 होने पर Bronx/non-Bronx दोनों checks fail हो जाते हैं, जिससे bank और loan shark access restriction हट जाती है
- Bronx जाने पर अपने-आप heroin 2 बन जाती है, जिससे infinite profit loop संभव हो जाता है
- inventory calculation formula
(T-M-N-O-P-Q-R)→K location value का उपयोग करके storage calculation error पैदा करता है
-
प्रमुख exploit उदाहरण
- असीमित bank/loan shark access: N=0 स्थिति में location restriction bypass
- infinite heroin generation: Bronx जाने पर अपने-आप बने 2 units को बार-बार बेचकर कमाई
- inventory mismatch: location value overwrite होने से trenchcoat capacity पार करना संभव
मूल कोड का स्रोत और ऐतिहासिक पृष्ठभूमि
- gammalogic ने पूछा कि क्या यह IBM BASIC original code पर आधारित है, और mattmanning ने कहा कि “TI version IBM गेम पर आधारित है, लेकिन इसे दूसरे platform पर compile नहीं किया जा सकता; हालांकि गेम के नियम और logic देखने के लिए यह उपयोगी है”
- उन्होंने बताया कि उन्हें कोड इंटरनेट पर मिला था और उन्होंने केवल character formatting व्यवस्थित की थी
- मूल रचयिता John Dell ने TRS-80 के गेम Taipan से प्रेरित होकर Drugwars बनाया
कम्युनिटी विस्तार और बाद की गतिविधियाँ
- कुछ यूज़रों ने TI-84+ पर रनटाइम error की रिपोर्ट की, लेकिन अन्य यूज़रों ने TI-83+ और TI-84+ emulator पर सही चलना कन्फर्म किया
- यह टिप भी साझा की गई कि MirageOS में पहचान के लिए कोड की पहली पंक्ति में
:: जोड़ना चाहिए
- सीधे कैलकुलेटर पर
prgm -> new से कोड डालकर भी इसे चलाया जा सकता है
- यूज़र DaSovietPotato ने TI-84 compatible bug-fixed version अलग repository में प्रकाशित किया
- gammalogic ने C/SDL में रीमेक के बाद Z80 आधारित consoles (Master System, NES आदि) पर पोर्ट करने की योजना साझा की
- शुरुआती C/SDL demo में NES resolution आधारित interface और शहर/ड्रग बदलने की सुविधा लागू की गई
- आगे इसे “Drugwars 2.0” संस्करण तक बढ़ाने की योजना का ज़िक्र किया गया
- कुछ यूज़रों ने स्कूल के दिनों की nostalgia का ज़िक्र किया और TI-83 cable से इसे फिर से इंस्टॉल करने की कोशिश साझा की
- कम्युनिटी ने code analysis और BASIC सीखने के जरिए खुद पोर्ट करने की सलाह दी, और TI-83 manual देखने की सिफारिश की
- 2024~2026 तक लगातार comments जुड़ते रहे, और TI-84 CE, Pico-8, C# port जैसे कई platforms पर विस्तार की कोशिशें जारी रहीं
- कुछ यूज़रों ने
.8xp फ़ाइलें ईमेल से माँगीं और साझा भी कीं
- कम्युनिटी के भीतर यह क्लासिक कैलकुलेटर गेम restoration और improvement project के रूप में विकसित हो रहा है
1 टिप्पणियां
Hacker News की राय
TI-83 Basic वह पहली programming language थी जिसे लेकर मुझे लगा कि मैंने उसे पूरी तरह समझ लिया है
कॉलेज के पहले साल में मैं TI-Basic में code लिखता था और उसे C++ में translate करता था। उस समय Drugwars और Bowling वाकई बहुत प्रभावशाली games थे
बाद में जब मैंने z80 assembly खोजी, तो वह जादू जैसा लगा। मुझे याद है कि मैं अपने पिता की यूनिवर्सिटी लैब जाता था, जहाँ दो T1 internet lines थीं, और वहाँ नए assembly games download करता था। Bill Nagel का Turbo Breakout, Snake, AShell, Penguins, और grayscale Mario ने मुझे चौंका दिया था। लेकिन सबसे polished और replayable games मेरी नज़र में TI-86 के Sqrxz और ZTetris थे।
एक बार मैंने किसी game का z80 assembly source print करके, लगभग हथेली-भर मोटी printout साथ लेकर घूमता था ताकि उसे समझ सकूँ।
और random hex code डालकर उसे run करना भी अजीब तरह से मज़ेदार लगता था। कभी-कभी calculator brick हो जाता था, लेकिन battery निकालो तो फिर ज़िंदा हो जाता था
किसी को TI website wars याद हैं? TI Files, जो बाद में TI Philes बना, कहता था कि वह “ticalc.org से कहीं ज़्यादा cool” है, लेकिन आखिर में आज तक ticalc.org ही बचा है
इस game का मेरे लिए सच में बहुत बड़ा मतलब है। हाई स्कूल में मैं इसका पूरी तरह आदी हो गया था, और वह अनुभव मेरे जीवन में रह गया।
Drugwars मेरे passion project Farmhand की सीधी प्रेरणा था
इसे फिर से देखना सच में बहुत खुशी की बात है
अब AI के दौर में जब सब लोग छोटे computers के बिना कुछ नहीं कर पाते, तो अजीब सा औचित्य महसूस होता है
मेरा “fun fact” यह है कि मैंने TI-83+ manual पढ़कर programming शुरू की थी
9वीं कक्षा के पूरे साल मैं TI-BASIC और graph functions का इस्तेमाल करके Street Fighter का stick-figure version बनाता रहा।
Screen पर सिर्फ 8 lines दिखती थीं, इसलिए बाद में मैं code कागज़ पर लिखने लगा।
आज भी सोचकर हैरानी होती है कि मैंने एक ही calculator पर दो लोगों के खेलने वाली structure को GOTO और LABEL से implement किया था।
मेरी पसंदीदा optimization यह थी कि सिर को circle की जगह hexagon बना दिया जाए — क्योंकि सिर्फ 6 lines draw करनी पड़ती थीं, इसलिए वह कहीं तेज़ था
9वीं में मैंने एक ऐसा program बनाया था जो algebra problems को step-by-step solve करता था, लेकिन exam के दौरान मुझे एक P1-level bug मिल गया।
Homework में वह perfectly चलता था, लेकिन exam problem पर टूट गया। आख़िरकार मैंने exam से ज़्यादा समय debugging में लगा दिया।
अब पीछे मुड़कर देखता हूँ तो लगता है कि वह maths से ज़्यादा edge cases सीखने की class थी
अब मैं mobile development करता हूँ। अपनी बनाई चीज़ को जेब में लेकर घूम पाना मुझे हमेशा अच्छा लगता था
संबंधित वीडियो
मैंने पूरे 2.4KB और सारे variable slots इस्तेमाल कर डाले थे
इस game की जड़ें 1984 के DOS तक जाती हैं
Drug Wars (video game) - Wikipedia
संबंधित archive
1900 के दशक के आख़िरी वर्षों में, 9वीं में मेरा एक दोस्त था जो इतना talented artist था कि TI-82 पर pixel art porn बनाता था
वह हर scene को दो frames में loop करके हैरतअंगेज़ रूप से realistic movement दिखाता था
यह game HP 48 series पर भी चल सकता है
HP 48 yoṅ Drugwars
RPN ज़िंदाबाद
मेरा पहला programming experience TI-83 पर था।
मुझे आज भी vividly याद है कि class के दौरान मैं अपने दोस्तों को choose-your-own-adventure game खिलाया करता था
मैंने TI-83+ पर यह game बहुत खेला है।
उसी calculator की वजह से मैंने programming सीखी, और TI-BASIC में maths/science calculators और simple games बनाए।
अब syntax धुंधली हो गई है, लेकिन उस समय मैं इसमें काफ़ी अच्छा था
Code में “If Zù500” जैसी expression देखकर मुझे हमेशा यह जानने की उत्सुकता थी कि ù character क्यों इस्तेमाल हुआ है
ChatGPT के मुताबिक TI-BASIC में ≤ का byte value, ANSI/Windows-1252 में ù(0xF9) के बराबर है। यानी यह encoding issue था
वाह, यह तो सच में nostalgia blast है
मुझे याद है 9वीं में जब science teacher ने पूछा कि मैं calculator पर क्या कर रहा हूँ, तो suspension के डर से मैंने जल्दी से game delete कर दिया था
उसकी जगह मैंने दिखाया कि मैं Wing Commander Privateer जैसा game बना रहा हूँ, और उसी से बात संभल गई थी