اکثر بازی های میکرو واقعا سخت هستن. تموم کردن بعضی از بازی ها بدون کد تقلب واقعا امکان پذیر نیست. به کدهای تقلب بازی های میکرو به اصطلاح Game Genie Code گفته میشه. واسه پیدا کردن این کدها برای هر بازی میتونین از سایت های GameGenie و BSFree استفاده بکنین. نحوه استفاده از این کدها هم خیلی راحت هست. ولی واسه هر شبیه ساز فرق میکنه. مثلا واسه شبیه ساز Nestopia کافیه که بعد از اجرای بازی، کارهای زیر رو انجام بدین تا کد تقلب فعال بشه :
Options --> Cheats --> Add --> Game Genie
[کد رو وارد بکنین]
Validate --> Submit --> OK
خوشبختانه واسه اکثر بازی های میکرو کدهای تقلب از قبل موجود هستن ولی واسه بعضی هاشون کدی ارائه نشده بنابراین واسه این جور بازی ها باید خودمون کد تقلب رو بسازم. در ادامه مطلب با ارائه یه مثال نحوه ساخت کد تقلب رو آموزش میدم.
خلاصه کار :
1. پیدا کردن آدرس RAM
2. پیدا کردن آدرس CPU
3. تحلیل و تغییر کد در حال اجرا
4. ایجاد کد تقلب
توضیح مراحل :
1. پیدا کردن آدرس RAM
بازی Aladdin 4 (1996) (Unl) [!].nes رو با شبیه ساز FCEUX اجرا بکنین
از منوی Tools گزینه Cheats رو بزنین
تیک گزینه Pause when active رو بزنین
دکمه Reset رو بزنین تا لیست تمامی آدرس های رم به نمایش در بیاد
وارد بازی بشین و یه دونه سیب پرت بکنین تا تعداد سیب هاتون از 10 تا بشه 9 تا
به پنجره چیت برگردین و تو کادر کنار HEX مقدار 9 رو وارد بکنین و دکمه Known Value رو بزنین
دوباره به بازی برگردین و یه دونه سیب دیگه پرت بکنین
به پنجره چیت برگردین و تو کادر کنار HEX مقدار 8 رو وارد بکنین و دکمه Known Value رو بزنین
اون قدر این کار رو ادامه بدین تا فقط یه دونه آدرس رم باقی بمونه
آدرسی که در نهایت باقی میمونه 04F0 هست و اگه دقت بکنین با هر بار پرت کردن سیب مقدارش یک واحد کم میشه
2. پیدا کردن آدرس CPU
باید آدرس محلی از CPU رو پیدا بکنیم که باعث تغییر مقدار آدرس رم در 04F0 میشه
کارهای زیر رو انجام بدین :
Debug --> Debugger --> Add --> Address --> 04F0 --> v Write --> OK
به بازی برگردین و یه دونه سیب پرت بکنین، به محض این کار پنجره دیباگر بالا میاد
به اولین خط دیباگر دقت بکنین : CB03:CE F0 04 DEC $04F0
بنابراین آدرس CB03 از سی پی یو جایی هست که دستور کاهش مقدار آدرس رم 04F0 رو صادر میکنه
3. تحلیل و تغییر کد در حال اجرا
دستوری که اجرا میشه DEC $04F0 به زبان اسمبلی 6502 هست
دستور DEC مخفف Decrement و به معنی کاهش هست
یعنی با پرتاپ هر سیب این دستور اجرا میشه و باعث کم شدن مقدار موجود در آدرس رم 04F0 میشه که اونم باعث کم شدن تعداد سیب های ما میشه
باید کد رو طوری تغییر بدیم که مقدار موجود در آدرس رم 04F0 کاهش پیدا نکنه
معادل کد DEC $04F0 در زبان ماشین میشه CE F0 04 که در آدرس های CB03 - CB04 - CB05 ذخیره شدن
کارهای زیر رو انجام میدیم :
Debug --> Hex Editor --> File --> Goto Address --> [CB03] --> OK
[راست کلیک]
Go Here In Rom File
مقدار CE F0 04 رو با مقدارهای EA EA EA جایگزین میکنیم
مقدار EA معادل NOP مخفف No Operation به معنی هیچ کاری انجام نده هست!
اگه بخواهیم به صورت دائمی کد تقلب رو روی بازی اعمال بکنیم از منوی File گزینه Save Rom رو میزنیم
اگه بازی رو با هر شبیه سازی اجرا بکنیم و یا حتی روی کنسول اصلی اجرا بکنیم از تعداد سیب ها کم نمیشه!
ولی برای اینکه فایل اصلی بازی دست نخورده باقی بمونه از Save Rom استفاده نمیکنیم
4. ایجاد کد تقلب
بازی رو با شبیه ساز FCEUX اجرا بکنین
از منوی Debug گزینه Game Genie رو بزنین
مقادیر زیر رو هر بار وارد بکنین تا کد تقلب مربوطه تولید بشه :
Address : CB03 / Compare : CE / Value : EA --> XTEGUUVK
Address : CB04 / Compare : F0 / Value : EA --> XTEGKLEN
Address : CB05 / Compare : 04 / Value : EA --> XTEGSLGE
این سه تا کد تقلب رو داخل هر شبیه ساز میکرو میتونین استفاده بکنین
دقت بکنین که هر سه تا کد XTEGUUVK - XTEGKLEN - XTEGSLGE همزمان باید فعال باشن تا کد تقلب کار بکنه
حالا به عنوان تمرین سعی بکنین کدهای انرژی بی نهایت و جون بی نهایت رو هم پیدا بکنین!