دانلود بازی ترجمه شده نینجا گیدن 1 - پاسخ 5
::: در حال بارگيري لطفا صبر کنيد :::
صفحه اصلي انجمن ورود عضويت خوراک نقشه تماس با ما
نام کاربري : پسورد : يا عضويت | رمز عبور را فراموش کردم

صفحه اصلي ? دانلود بازی های هک شده / دانلود بازی ترجمه شده نینجا گیدن 1 ? پاسخ 5

farid آفلاين



ارسال‌ها : 139
عضويت : 25 /2 /1393
محل زندگي : ارومیه
سن : 29
شناسه ياهو : krauser35@yahoo.com
تشکرها : 90
تشکر شده : 148
پاسخ : 5 RE دانلود بازی ترجمه شده نینجا گیدن 1 :
به صفجه ای میریم که اولین خط چاپ میشه
دکمه Pause‌ رو از صفحه کلید میزنیم
مقدار و آدرس چاپ اولین حرف رو پیدا میکنیم (Name Table Viewer)
Tile ID : 42
PPU Address : 2243

بازی رو ریست میکنیم و دو ثانیه به شروع چاپ اولین حرف جمله بازی رو سیو میکنیم (I)

یه بریک پونت واسه این آدرس قرار میدیم
Debug --> Debugger --> Add
Address : 2243
v Write
PPU Mem

بازی رو لود میکنیم (P)
در صورت نیاز دکمه ران رو اون قدر میزنیم تا مقدار ریجستر A برابر 42 بشه
به کدی که در حال اجرا هست دقت میکنیم :
کد:
07:D52F:8D 07 20 STA $2007 = #$00


آدرس 2007 درگاه چاپ گرافیک هست و هر مقداری روی این درگاه ذخیره بشه باعث چاپ شدن روی صفحه نمایش میشه.
در اینجا مقدار 42 که یه علامت گیومه هست روی صفحه نمایش چاپ میشه.
ولی کجای صفحه نمایش چاپ میشه؟
قبلا پیداش کردیم در جایی چاپ میشه که آدرسش 2243 هست.
اگه یه بریک پونت جدید واسه آدرس 2007 تعریف بکنیم میبینم که این آدرس حی افزایش پیدا میکنه تا حروف بعدی به ترتیب پشت سر هم چاپ بشن.
حالا باید کاری بکنیم که اولین مقدار یعنی 42 که همون گیومه هست از یه جایی در سمت راست تصویر شروع بکنه به چاپ شدن. بنابراین باید مقدار آدرس 2243 رو افزایش بدیم مثلا بکنیم 2255

خب این مقدار کجای برنامه تنظیم میشه؟
آدرس محل چاپ روی صفحه رو درگاه 2006 تنظیم میکنه.
آدرس محل چاپ در دو مرحله به درگاه 2006 ذخیره میشه. (چون میکرو هشت بیتی هست ولی آدرس های صفحه نمایش شانزده بیتی هستن بنابراین با یه بار رایت کردن نمیشه آدرس رو ست کرد)

برمیگردیم به پنجره دیباگر
به آدرس اجرای کد دقت میکنیم : D52F
یه بریک پونت واسه این آدرس تعریف میکنیم :
Address : D52F
v Execute
CPU Mem

روی بریک پونت قبلی هم دابل کلیک میکنیم تا غیر فعال بشه

از منوی دیباگ پنجره Trace Logger رو باز میکنیم
دکمه Start Logging رو میزنیم
به پنجره بازی میریم و دکمه پی رو میزنیم تا بازی لود بشه
به پنجره دیباگر میریم و دکمه ران رو میزنیم
بازی به سختی اجرا میشه
با اجرا شدن کد موجود در آدرس D52F بازی متوقف میشه
توی پنجره دیباگر سه بار دکمه Step Into رو میزنیم
به پنجره تریس لاگر میریم
آخرین کدهایی که اجرا شدن رو متونیم اینجا ببینم
باید به دنبال آدرس 2006 بگردیم
فرایند کار به این صورت هست که ابتدا محل چاپ روی صفحه با درگاه 2006 مشخص میشه بعد چیزی که قرار هست چاپ بشه با درگاه 2007 مشخص میشه.
چیزی که به دنبالش هستیم این هست :
کد:
$D525:B9 F0 03 LDA $03F0,Y @ $03F2 = #$43 A:22 X:01 Y:02 S:F2 P:nvUbdIzc
$D528:8D 06 20 STA $2006 = #$00 A:43 X:01 Y:02 S:F2 P:nvUbdIzc

مقدار 43 از آدرس 03F2 لود میشه و به درگاه 2006 ذخیره میشه
اگه مقدار 43 رو افزایش بدیم محل چاپ تغییر میکنه
با دقت در کد معلوم میشه که مقدار 43 از داخل آدرس 03F2 لود میشه
باید بفهمیم چه زمانی این مقدار به این آدرس ذخیره میشه
بنابراین یه بریک پوینت جدید واسه این آدرس تعریف میکنیم
Address : 03F2
v Write
CPU Mem

بریک پوینت قبلی دیباگر رو هم غیر فعال میکنیم
بازی رو لود میکنیم
دکمه ران رو میزنیم
بازی به سختی اجرا میشه
به ریجستر A دقت میکنیم باید مقدارش 43 باشه (در صورت نیاز دکمه ران اون قدر میزنیم تا به این مقدار برسیم)
دکمه Step Into رو سه بار میزنیم
به پنجره تریس لاگر میریم
آخرین کدی که اجرا شده رو بررسی میکنیم :
کد:
$AF52:AD 19 03 LDA $0319 = #$43 A:22 X:00 Y:42 S:F3 P:nvUbdizC
$AF55:9D F2 03 STA $03F2,X @ $03F2 = #$00 A:43 X:00 Y:42 S:F3 P:nvUbdizC

با بررسی کد متوجه میشیم که مقدار 43 موجود در 03F2 از آدرس 0319 میاد
بنابراین باید این آدرس رو زیر نظر بگیریم
دوباره یه بریک پوینت جدید تعریف میکنیم و همون مراحل قبلی رو انجام میدیم
کد زیر رو پیدا میکنیم :
کد:
$A4C1:A9 43 LDA #$43 A:22 X:02 Y:00 S:F5 P:nvUbdizc
$A4C3:8D 19 03 STA $0319 = #$00 A:43 X:02 Y:00 S:F5 P:nvUbdizc

بالاخره یه چیزی پیدا کردیم که میتونیم مقدارش رو تغییر بدیم
دستور LDA 43 از آدرس A4C1 اجرا میشه که میتونیم تغییرش بدیم
از منوی دیباگ پنجره هگز ادیتور رو باز میکنیم
از منوی فایل گزینه Go to address رو میزنیم
آدرس A4C1 رو وارد میکنیم
روی مقدار A9 راست کلیک میکنیم و گزینه Go Here In Rom File رو میزنیم
مقدار A9 همون معادل دستور LDA هست
مقدار بعدی 43 همون چیزی هست که باید تغییر بدیم
آدرس این مقدار رو من قبلا بهت گفته بودم : A4D2
که بهترین مقدار واسش 5C هست
بازی رو یه بار لود بکن و بررسی بکن ببین چه تغییر داده شده
برای خطوط بعدی هم باید همین کار رو تکرار بکنی! ^_^


شنبه 15 فروردین 1394 - 11:54
ارسال پيام وب کاربر نقل قول تشکر گزارش
تشکر شده: 2 کاربر از farid به خاطر اين مطلب مفيد تشکر کرده اند: reza_of_persia / kalantarahura /
براي نمايش پاسخ جديد نيازي به رفرش صفحه نيست روي تازه سازي پاسخ ها کليک کنيد !