الباب الثالث – كيف نعدل الصور


نحن رأينا في الأبواب السابقة كيف نتوصل إلى مكان النص، لكننا لاحظنا عدة أمور:


1/ هناك كلام يظهر على الشاشة بخطوط و ألوان خاصة.

هذه الخطوط ليست هي نفس الخطوط التي كتبت بها النصوص التي وجدناها في برنامج الهيكس.

مثلا: شاشة العنوان. أو الكلمات قرب مقاييس الطاقة، أو في بعض الشاشات.


في الواقع، هذه كلها مخزنة في الروم على شكل صور جاهزة.

و يجب تغييرها على ذلك الأساس.


2/ الخطوط التي في الألعاب لا تحتوي رسوم الحروف العربية.

ما يجعل تغيير النص ليستعمل الحروف العربية أمرا مستحيلا... ظاهريا.

نحن نحتاج أن تصبح الحروف العربية متاحة و لذلك يجب أن نرسمها و نصيفها للخط بأنفسنا.


الخط أيضا مخزن على شكل صورة، فيها رسوم كل حرف على حدة.


3/ ترتيب حروف الخط داخل الروم هو أمر نحتاج اليه لكي نعرف ما هو الترتيب الصحيح للحروف،

كي نتمكن من عمل ملف تيبل (جدول قيم الحروف) صحيح.

لكن لمعرفته نحتاج أن نرى الروم.


إذن للتمكن من تغيير كل هذه الأشياء، يجب أن نغير الصور.

لكن كيف تكون الصور مخزنة في الروم؟


الجواب طبعا، هو أن الصور مخزنة على شكل بايتات بالطبع.

لنقم بتجربة بسيطة.

لنحاول أن نصنع صورة بلونين فقط. شيء من هذا النوع:



لدينا في هذه الصورة 8 بيكسل (نقطة) لكل سطر.

و لدينا 8 أسطر.

بما أن الصورة بها لونان فقط، فكل بيكسل يكون اما أبيض أو أسود.


لنعتبر الأبيض 0 و الأسود 1.

يمكننا أن نمثل كل بيكسل باستخدام بيت Bit وحيد،

بما أن البيت (الذي 8 بيتات مثله تكون البايت Byte) يكون اما صفر أو واحد.


الصورة اذن تعطينا:


00111100

01000010

10100101

10000001

10100101

10011001

01000010

00111100


نحن قلنا أن كثرة الأصفار و الواحد ليست جيدة،

لذلك برامج الهيكس تحول هذه الأرقام من النظام الثنائي للنظام الست عشري.

كل 8 بيتات Bit يمكن تحويلها الى بايت Byte (ثماني) واحد.

ما يعني أنه بما أن لدينا 8 بيتات × 8 أسطر،

يمكننا كتابتها في شكل 8 بايتات. حيث كل بايت هو سطر كامل.


مثلا، السطر الأول 00111100 يتم كتابته هكذا:

0011 1100

لكن نحن قلنا في الباب الأول، أن 1100(ثنائي) هي 0+0+4+8(عشري)

أي 12(عشري)، أي C(ست عشري).

و أن 0011(ثنائي) هي 1+2+0+0(عشري) أي 3(عشري) أي 3(ست عشري).

يعني أن السطر الطويل 00111100 يمكن كتابته ببساطة 3C بالست عشري.


نمر إلى السطر الثاني 01000010 (ثنائي)، أو

0100 0010

0010 (ثنائي) هي 0+2+0+0 (عشري) هي 2 (عشري) هي 2 (ست عشري)

0100 (ثنائي) هي 0+0+4+0 (عشري) هي 4 (عشري) هي 4 (ست عشري)

أي أن 01000010 يمكن اختصاره الى 42 بالكتابة الست عشري.


ما يعني أن ما كتبناه قبل قليل بالبيتات، يمكننا الآن كتابته بالبايتات هكذا:


3C 42 A5 81 A5 99 42 3C


3C هي السطر الأول، 42 السطر الثاني، A5 السطر الثالث... الى السطر الثامن.

الآن لنجرب كتابة هذا الشيء في برنامج هيكس و نرى النتيجة.


نقوم بتنزيل البرنامج Crystaltile2 من هذا الرابط.

هذا البرنامج متعدد الوظائف و من بين وظائفه أنه برنامج هيكس.


نفتح البرنامج.

بما أننا نريد أن نصنع شيئا، لم لا نعمل على مسودة فارغة؟

لنصنع ملفا فارغا. ستكون محتوياته كلها بايتات 00 متكررة.

نذهب إلى File ثم New ثم 8Mbits (أي أن حجم الملف سيكون 8 مليون بيت، أي 1 ميغابايت)


و الآن يظهر لنا برنامج الهيكس كما تعودناه.

خانة عنوان، و خانة هيكس، و خانة نصوص.

نحن الآن سنكتب مباشرة قيم البايتات التي تعبر عن صورتنا قبل قليل.

إذن...




نلاحظ أن النص يظهر خرابيطا بلا معنى في خانة النص.

و هذا شيء طبيعي نظرا أن تلك البايتات لا تعبر عن نص.


الآن، هناك أمر بسيط يميز برنامج Crystaltile عن غيره من برامج الهيكس مثل WindHex.

هذا الشيء، هو كون الكريستال تايل هو أيضا برنامج تايل Tile Editor.

ما معنى هذا؟ معناه أنه برنامج يظهر البايتات على شكل صور.

(مثلما برنامج الهيكس يظهر البايتات على شكل نصوص في خانة النص)

بالمناسبة هناك أمر أخفيته عنكم، هو أن WindHex فيه وظيفة مخفية تجعله يعمل أيضا برنامج تايل.



آن الأوان لتجربة وظيفة برنامج التايل في Crystaltile2.

لنلق نظرة على بعض الأزرار في الأعلى:



الزر الثاني الذي يعمل هو وظيفة برنامج الهيكس.

اختصاره في لوحة المفاتيح F6 (كل هذه الأزرار لديها اختصارات من F5 إلى F8)

لكنه لا يهمنا.

ما يهمنا الآن هو الزر الأول، و هو وظيفة برنامج التايل، و اختصاره F5. لنضغط عليه.


(القيمة 400 أمام scale (السلم) يمكن تغييرها لتكبير الصورة في الشاشة)


و النتيجة، هي أن الصورة التي كتبناها قد ظهرت في المربع الأول.

هذا "المربع" (الذي يحتوي صورتنا من أبعاد 8×8 بيكسل) هو يسمى التايل Tile.

معنى كلمة تايل هو اللوح الصغير.


الألعاب تقوم باستخدام عدد كبير من التايلات و تركبها كقطع من البازل،

حسب تعليمات معينة (تسمى خريطة التايل Tile Map، هي أيضا مخزنة بايتات، سنراها لاحقا)

و ذلك للحصول على صور ضخمة.


لاحظوا الكلمة Tile Form (وضع التايل)، و ما كتب أمامها solid 1bpp (1 بايت لكل بيكسل).

هذه تعني نوعية الصورة و طريقة تخزينها.

في حالتنا هذه فهي تعني أن الصورة بلونين فقط لكل بيكسل (أي أن كل بيكسل = 1 بايت).

لو كانت هناك أكثر ألوان من الأبيض و الأسود، فوضع التايل لن يكون solid 1bpp بل شيء آخر.


على ذكر الألوان، لماذا الألوان التي في صورتنا ظهرت بشكل خاطئ؟

صورتنا الأصلية هي وجه رسم بالأسود على خلفية بيضاء.

الصورة التي تظهر هنا هي وجه رسم بالأخضر على خلفية سوداء.


الجواب هو أن كريستال تايل يرقم الألوان وحسب.

البيت 0 ليس الأبيض عنده. هو "اللون أ".

البيت 1 ليس الأسود عنده. هو "اللون ب".

عندما كتبنا في نافذة الهيكس، كتبنا فقط هل أن كل بيت يستعمل اللون أ، أو اللون ب.

لكن لم نحدد في الواقع ما هذان اللونان بالضبط.


اللعبة تخزن قائمة ألوان Palette على شكل بايتات، في شكل منفصل (سنرى ذلك أيضا!)

هذه القائمة تقول للعبة ما هي الهوية الحقيقية للألوان أ، ب، أو حتى ج/د/ الخ...


بالنسبة لرسمنا:



قائمة الألوان لرسمتنا طولها لونان (2)، و هي:

أ (0) = أبيض

ب (1) = أسود

و نحن نريد أن يقوم الكريستال تايل بإظهار الصورة لنا بألوانها الصحيحة.

اذن، سنحدد له قائمة ألوان.

ننقر إذن على Palette في الجهة اليمنى من الشاشة.



ستظهر لنا نافذة تسمح لنا بتعديل قائمة الألوان التي يستعملها الكريستال تايل لرسم صورتنا.



يمكننا أن نلاحظ أن قائمة الألوان الحالية هي "أسود-أخضر".

و عندما ننقر على أي لون في هذا الجدول مرة واحدة،

فإننا نختار قائمة ألوان جديدة فيها ذلك اللون و اللون الذي بعده.


لكن في كم الألوان هذا لا يوجد لونان متتاليان "أبيض-أسود".

نقوم بتغيير اللون كما نريد اذن، مثلا نعود الى "أسود-أخضر" التي في الأول

و الآن ننقر مرتين فوق اللون الأسود.

تفتح نافذة اختيار ألوان. نختار اللون "الأبيض" و نضغط موافق.

عندئذ يحصل تغيير فوري..



نقوم اذن بتغيير اللون الأخضر للون الأسود الآن.

النتيجة أن قائمة الألوان الحالية صارت "أبيض-أسود"

أي قائمة ألوان رسمنا الأصلي!



و بما أن ألوان رسمنا صارت صحيحة الآن، يمكننا الآن تغييره.

أولا، لنعد من Palettes الى Properties.

لننقر مرة بالزر الأيسر على التايل الذي فيه رسم الوجه.

نحن الآن قمنا بعملية اختياره.


يمكننا تغييره بعدة طرق.

سواء ننسخه أو نحوله لملف BMP صورة نعدلها في الخارج

ثم نعيد ادخالها للكريستال تايل (سنجرب ذلك مع الأمثلة التالية)...

أو نغيره داخل الكريستال تايل.


لو أردنا أن نغيره مثلا داخل الكريستال تايل،

لننقر مرتين فوقه، أو عوض ذلك لنضغط F8.

عندها ندخل خاصية رسم التايل.


(القيمة 800 أمام scale (السلم) يمكن تغييرها لتكبير الصورة في الشاشة،

أنا أحبذ أن أضعها 2000 عندما أرسم على تايل)


هنا يمكنك الرسم على التايل كما تريد.


أولا أعود الى Palette، و سأركز على 3 أشياء:

قائمة الألوان التي اخترتها

الزران Char و BG

لون الكلمة Char في الأسفل (اختبار الألوان)



أختار لونا للزر الأيسر من الفأرة.

أنقر زر Char مرة واحدة بزر الفأرة الأيسر،

ثم أنقر أحد ألوان قائمة ألواني الحالية (التي في حالتنا لونان فقط).

لنختر مثلا الأسود.

الآن، هناك كلمة Char في الأسفل تغير لونها للأسود.


أختار لونا للزر الأيمن من الفأرة.

أنقر زر BG مرة واحدة بزر الفأرة الأيسر،

ثم أنقر أحد ألوان قائمة ألواني الحالية،

و ليكن اللون الأبيض.

الآن، هناك كلمة Char في الأسفل تغير لون الخلفية وراءها للأبيض.


يمكنني الآن الرسم فوق الصورة بالفأرة،

و كل زر من زري الفأرة يعطي لونا معينا

(الأيسر يعطي الأسود، و الأبيض يعطي الأيمن)

و نستطيع هكذا تغيير الصورة بالنقطة بالنقطة.


و بالمناسبة، لمغادرة هذا الوضع نضغط F5.

يمكننا اغلاق هذا الملف دون تسجيله الآن، لو أردنا. لأنه لن ينفعنا بعد الآن.


هذه طريقة رسم صور أسهل بكثير من ...



00111100

01000010

10100101

10000001

10100101

10011001

01000010

00111100



3C 42 A5 81 A5 99 42 3C


(و كل هذا التعقيد مع صورة بسيطة بالأبيض و الأسود،

و صغيرة جدا جدا جدا. هكذا دون تكبير

فما بالك بصور كبيرة، أو بالألوان!)

لذلك من هنا فصاعدا، سنستخدم برامج التايل لتعديل الصور في الرومات.


هناك عدة برامج تايل، بالمناسبة:

Crystaltile2 – رابط

yy-CHR – رابط

Tilemolester – رابط


كل واحد لديه مميزات و عيوب.

مثلا، كريستال تايل ممتاز و يسمح بنسخ الصور الى برامج رسم مثل الفوتوشوب

مباشرة عبر Ctrl+C و Ctrl+V، لكنه لا يتعامل جيدا مع رسوم السوبر نيس

و كثيرا ما يتوقف فجئيا عن العمل (لذلك وجب حفظ الملف دائما!).

ال Tilemolester لديه أوضاع تايل كثيرة جدا، لكنه محدود عدا ذلك في كيفية اظهارها

على الشاشة. لكن فيه ميزة أن ملفات اللقطات Save State التي في المحاكيات

يستطيع فتح عدد كبير منها و استخراج قائمات ألوان منها...

و هلم جرا...

لذلك كل واحد يستخدم متى دعت الحاجة إليه.


لنحاول الآن تجربة ما تعلمناه.


مثال أول – البحث عن ماريو



... لكن ليس في تلك اللعبة.


سنجرب الآن روم لعبة مشهورة جدا، و هي Super Mario Bros. لجهاز النيس.

نقوم الآن بفتح Crystaltile2.

نذهب إلى Open و نختار الروم كي يفتحها.

و بالطبع، نغير الوضع من وضع الهيكس إلى وضع التايل بواسطة F5 أو أول هذه الأزرار:



و النتيجة أن اللعبة صارت تظهر لنا خرابيط هنا.

السبب طبعا هو أننا ننظر إلى جزء في الروم ليس فيه صور،

يعني لن نرى صورا عندما نحاول رؤيته في التايل، بل معلومات بصرية بلا معنى.



طبعا هناك أمر يجب أن نتأكد منه حاليا على الأقل.

بما أننا نتعامل مع لعبة نيس، فيجب أن يكون وضع التايل Tile Form هو NES 2bpp.

هذه ليست قاعدة عامة لجميع ألعاب النيس طبعا،

هناك ألعاب تخزن بعض بياناتها بعدة أوضاع تايل مختلفة (مثل solid 1bpp مثلا).

التجربة و المحاولة هي التي ستعطينا الجواب الصحيح.


نلاحظ أن برنامج الكريستال تايل تعرف على الروم على أنه روم نيس فغير الوضع تلقائيا.

هناك أجهزة أخرى يفعل معها الكريستال تايل نفس الشيء أيضا.


نتأكد أيضا أن أبعاد التايل (المربعات) هي 8×8.

سواء بكتابة 8 في خانتي width (العرض) و height (الإرتفاع).

أو بالضغط في لوحة المفاتيح في نفس الوقت على الزر ALT و معه أحد أزرار الأسهم الأربعة.


و الآن سنبحث عن الصور في الروم.

للبحث في الروم، نضغط أزرار الأسهم الأربعة.

ننزل الى أن نصل هذا المكان تقريبا:



من أول وهلة، نستطيع بالفعل أن نتعرف على ملامح شخصية ماريو!

الرسوم لا تتجاوز المربعات و لا "تفيض" أجزاء منها في المربعات بجانبها.

هذا بحد ذاته يعني أن أبعاد التايل التي اخترناها 8×8، كانت صحيحة.

و ثانيا، أننا لا نحتاج لعمل تصحيح للبيتات.


لكن الرسوم مفككة (جزء رأس ماريو ليس متصلا بأجزاء بقية الجسد)،

و الألوان خاطئة تماما.

ما يعطل تعديل هذه الرسوم.


سنضغط أزرار الأسهم (يمين/يسار/فوق/تحت) أولا،

لكي نحرك الصور و ذلك كي تظهر كما هي في الصورة في الأسفل،

و لا تبقى هناك الأجزاء التي ليست رسوما فوق و التي قد تزعجنا.

طبعا، توجد طريقة ثانية و هي كتابة العنوان مباشرة أمام Offset (العنوان)

ليذهب بنا مباشرة هناك. العنوان المطلوب هو 8010.



الآن، لنرى ما لدينا:

نحن استطعنا العثور على الرسوم المطلوبة.

إذن الرسوم كانت مخزنة بدون ضغط،

و كانت تستعمل وضع التايل Tile Mode الذي هو NES 2bpp. (الذي لن نحتاج اذن لتغييره)


هل نحتاج لتغيير أبعاد التايل من 8×8 لشيء آخر؟

(لوحة المفاتيح: العرض: ALT+يمين/يسار ، الارتفاع: ALT+فوق/تحت)

الصورة تظهر ملامحها بشكل سليم، و لا تبدو نقاطا مشتتة من الصورة الأصلية.

لا نحتاج لتغييره.


هل نحتاج لتصحيح البيتات؟

(لوحة المفاتيح: CTRL+يمين/يسار)

تفاصيل الرسوم ليست متداخلة مع المربعات التي بجانبها.

لا نحتاج لذلك.


نحتاج فقط حاليا لأمرين:

ترصيف التايلات بشكل صحيح لتكوين صور كاملة.

تصحيح الألوان


سنبدأ بترصيف التايلات، و يوجد عدة طرق للقيام بذلك.


سنقوم أولا بتغيير كم تايل يظهر على الشاشة في كل سطر و عمود.

و ذلك بالضغط في لوحة المفاتيح على + الأسهم (يمين / يسار / فوق / تحت).

نريد أن نتحصل في كل سطر على 2 تايل فقط.

و النتيجة ستكون تحسنا ملحوظا...



ماريو صار يظهر بشكل صحيح لنا.


بقي فقط الألوان.

نذهب كالعادة إلى Palette، كي نصحح جدول الألوان.

بما أننا نعمل في وضع التايل NES 2bpp، فجدول الألوان سيكون فيه 4 ألوان.

الجدول الذي يعمل حاليا هو هذا

و في كل تلك الألوان، أي لون تضغط عليه نقرة واحدة

هو سيكون أول لون في الجدول الجديد عوض اللون الأسود أعلاه.


لكن هذه الألوان خاطئة و لا أحد منها يعبر عن ألوان ماريو الصحيحة.

سنذهب الى محاكي FCEUX و نفتح لعبة السوبر ماريو هذه،

و نلعب قليلا الى أن نكون في مشهد يظهر فيه ماريو بألوانه الصحيحة.

عندها سنفتح Debug/PPU Viewer التي ستعطينا ماذا يوجد في الذاكرة البصرية للنيس.

الجزء الذي يهمنا موجود في الأسفل، و فيه جدول الألوان:



نحن نعرف أن جدول ألوان ألعاب النيس طوله 4 ألوان.

هناك عدة جداول ألوان في النيس، و كل واحد يطبق على صورة في الشاشة.


مثلا، أول جدول "أزرق-أخضر فاتح-أخضر غامق-أسود" هو للأعشاب.

و ثالث جدول "أزرق- أبيض-أزرق فاتح-أسود" هو للغيوم في السماء.

(و للاقتصاد في كلفة سعة الكارتردج، فتايلات الصورة هي نفسها المستعملة للغيوم و للأعشاب!)


في حالتنا، الجدول الذي فيه ألوان ماريو هو الجدول الخامس (الذي في دائرة في الصورة أعلاه).

أي "أزرق-برتقالي-رملي-بني زيتوني"


الأزرق لا يظهر في ماريو. لماذا؟

هناك معلومة عن النيس، أن اللون الأول هو اللون الشفاف دائما.

و هذا ينطبق حتى مع جل الأجهزة التي أتت بعد النيس.

نلتقط صورة للعبة أو النافذة هذه، لأننا نحتاج هذه الألوان.

و نلزقها في برنامج مثل Paint و نحاول اختيار هذه الألوان من الصورة و معرفة قيمها:




و الهدف هو معرفة القيمة الرقمية بالضبط لكل لون،

و هي تكتب 3 قيم حسب نسبة الألوان الأولية وهي الأحمر RED، أخضر GREEN، و أزرق BLUE.

في حالتنا هنا، ثاني لون و هو البرتقالي (نظرا أن الأزرق هو تعويض للون شفاف و لا يهمنا) هو ما اخترناه.

و قيمته بنظام أحمر-أخضر-أزرق RGB هي 216 و 40 و 0.


نكتب قيم جميع الألوان و هي ستكون:

أ – شفاف (أزرق)

ب – برتقالي : 216، 40، 0.

ج – رملي: 252، 152، 56.

د – بني زيتوني: 136، 112، 0.


نعود للكريستال تايل.


كل لون من هذه الألوان الأربعة ننقر عليه بالفأرة بالزر الأيسر مرتين.

ستظهر لنا نافذة كهذه، نقوم بتغيير القيم "أحمر" "أخضر" "أزرق" الى قيم الألوان التي نريدها.



و بعد تغيير الألوان الأربعة هكذا:



تصبح ألوان ماريو مطابقة تماما لشكله داخل اللعبة، ما يتيح لنا تغيير رسمه كما نشاء.



و الآن حان وقت التعديل.

أريد أن أغير سبرايت ماريو ليستخدم رسوما أخرى.

السبرايت هي الرسوم التي تتحرك في الألعاب أمام الخلفيات.


أقترح هذه السبرايتات،

و هي مأخوذة عن لعبة Super Mario Maker على الـ Wii U.

أنا شخصيا أسميها "ماريو المنحرف".



في الأعلى، السبرايتات الأصلية.

في الأسفل، السبرايتات الجديدة.

لاحظ أن الرسوم الجديدة تستعمل بالضبط نفس الألوان الأصلية دون زيادة،

و نفس أبعاد الصورة الأصلية، أي 2×4 تايل، و كل تايل 8×8 بيكسل.

هذه الشروط مهمة و بدونها التغيير مستحيل. (أو بالأحرى أصعب)


الاطار رقم 5 هو أول شكل يظهر في الروم لماريو،

و فيه قدمه تتجه للأمام.

ملف الصورة مرفق مع الدرس.

افتحوه في برنامج مثل Paint و اختاروا بالضبط اطار ماريو الجديد، بحيث تكون أبعاده 16×32.

و اضغطوا على CTRL+C لنسخ الصورة.

ما سينسخ سيكون هذا:



و الآن في برنامج كريستال تايل،

ننقر بزر الفأرة الأيسر، نقرة واحدة، على أول تايل في صورة ماريو في الروم

هكذا نكون قد قمنا باختياره.


عندما نضغط في الكريستال تايل على CTRL+V

سوف يلزق الصورة التي نسخناها من Paint، انطلاقا من التايل الذي اخترناه قبل قليل.

نستطيع تحريكه، لكن لا نحتاج.

ننقر مرتين بزر الفأرة الأيسر، أو نضغط ENTER على لوحة المفاتيح، كي يتم اللصق.


و هكذا نكون قد أدخلنا ذلك الرسم بنجاح في الروم!



يمكننا اضافة بعض الاطارات الأخرى بنفس الطريقة:



نستطيع ضغط أزرار الأسهم "فوق/تحت" في لوح المفاتيح للنزول في الروم أكثر:



هذه الرسوم مجزوءة أكثر!

في حالة رسم ماريو الكبير و هو يسبح، فعوض اعادة الرسم كاملا،

تم الاكتفاء بوضع أجزاء الجسد التي تتغير فقط، و هي اليدان.

هناك أيضا أجزاء من الرأس مستعملة في أكثر من إطار لاختصار الحيز...


في تلك الحالات، أداة تركيب التايل (Tile Composition Tool) قد تساعدنا،

لكن لن نرى استعمالها الآن و سنكتفي عند هذا القدر بتعديل رسوم ماريو.

يمكنكم تسجيل الروم و تجربتها في محاكي لو أردتم.



يمكنكم طبعا تجربة هذا مع عدد لا بأس به من الألعاب.

على سبيل المثال:


في حالة المونستر وورلد 4،

تطلب ايجاد الصور تحويل وضع التايل إلى N64/MD 4BPP

و تحويل أبعاد التايل (عبر ALT+الأسهم) إلى عرض (width) 8 و ارتفاع (height) 32.

و بالطبع تم استعمال الأزرار SHIFT+يمين/يسار للتحكم في كم تايل في السطر.

جدول الألوان عرفناه بواسطة محاكي اسمه Regen فيه نافذة تظهره.


في حالة التيرانيغما (أو تنشي سوزو)

وضع التايل كان مختلفا أيضا هنا، و كان 4bpp الخاص بالسوبر نيس

(التي أغلب أوضاع الغرافكس فيها هي 2bpp و 4bpp و 8bpp و MODE7)

البرنامج المستخدم هنا لم يكن الكريستال تايل (سنراه لاحقا).

أنا أحبذ هذا شخصيا فقط مع بعض ألعاب السوبر نيس،

و أي شيء لا ينفع معه الكريستال تايل.


هناك عدد كبير من الألعاب في مختلف الأجهزة يمكنكم التعديل عليها،

لو حاولتم. فهل تستطيعون إيجادها؟


أيضا، ليس فقط الشخصيات يمكن تغييرها.

بل أي صورة موجودة في الروم (مثل صور الأماكن، الخ).

الاشكال هو هل تلك الصورة موجودة بشكل واضح،

أو مخزنة مضغوطة حفاظا على المساحة.

لو كانت مضغوطة، لا يمكنك رؤيتها في برنامج التايل مباشرة.

يجب أن تجد وسيلة لفك ضغطها.


مثلا:

في حالة رومات الجيم بوي أدفانس و حتى أحيانا الدي اس، طريقة الضغط LZ77

شائعة جدا، و توجد أداة إسمها LZ77 Restructor2 (من هنا) تظهر أي صورة مشفرة بهذه الطريقة.

(طبعا سيكون من الغباء أن نتوقع أن هذه الأداة ستساعدنا على تشفير غير LZ77،

كأن نجربها مع ألعاب كونامي على الأدفانس المشفرة بطريقة هافمان،

أو مع ألعاب الميغادرايف المشفرة بطرق عديدة منها NEMESIS، و لكن كل ما بيدنا أن نحاول)


لو فتحنا الروم ببرنامج الكريستال تايل لن نجد شيئا واضحا.

لكن لو فتحناها ببرنامج LZ77Restructor2، سيحدد لنا بعض الأماكن التي فيها رسم مشفر،

و يرينا الصورة، و يتيح لنا تسجيل ملف عبر Extract Raw.

يمكننا فتح ذلك الملف ببرنامج مثل الكريستال تايل لكنه هذه المرة سيرينا صورا واضحة

يمكننا بعدها تغييرها بالأبعاد و الألوان الصحيحة و الرسم عليها،

ثم نستخدم من جديد أداة LZ77Restructor2 و Insert From File لإدخال البيانات المعدلة للروم بعد ضغطها.



كل نوعية ضغط لديها أدواتها،

أو يمكنك صنع أدواتها لو كنت محترفا كفاية في البرمجة لتعرف ماذا تفعل اللعبة لفك التشفير.

لكن ذلك موضوع آخر.


مثال 2 – ايجاد شاشة عنوان


هذه المرة سنجرب مع لعبة سوبر نيس، تدعى Umihara Kawase.

سنحمل النسخة اليابانية غير المعدلة.


هذه لعبة مستويات، من تلك النوعية المنتجة تحت تأثير حبوب الهلوسة،

بطولة بنت تدعى أوميهارا كاواسي (أومي 海(うみ)=بحر، كاوا 川(かわ)=نهر،

المعنى الحرفي لإسمها هو "بطنبحر ظهرنهر") و الهدف وراء هذه اللعبة أنها تبحث عن

أبواب خروج وضعت في الهواء الطلق و ذلك باستعمال خيط صنارتها للقفز فوق الهاويات

و الأسماك البرمائية المتوحشة. و هي لعبة مسلية جدا لكنها في منتهى الصعوبة.


نظرا أنها لعبة ليس بها كثير من النصوص، لا يوجد فيها الكثير ليترجم.

ما يجعلها العينة المثالية لنجري تجاربنا عليها.

هدفنا الأول هو تغيير شاشة العنوان.



سنغير العنوان العملاق،

الذي يظهر في الشاشة أعلاه مكتوبا بأربعة رموز كانجي صينية.

سنعوضه بصورة أخرى، و هي العنوان مكتوبا بحروف عربية.


هذه المرة سنعمل مع برنامج tilemolester نظرا أنه أفضل بقليل في التعامل

مع بصريات السوبر نيس، و هو الخيار الوحيد لعدة أجهزة أخرى.


نحمل برنامج tilemolester من هنا.

يحتاج هذا البرنامج لتنزيل أحدث نسخة من برنامج Java كي يعمل.


نفك ضغط محتويات المجلد، و ننقر مرتين على tilemolester.jar لفتح البرنامج.

ثم نذهب إلى File ثم Open و نختار الروم.



سنغير وضع التايل.

نذهب إلى View ثم Codec و نختار 4bpp planar composite (2x2bpp)

و هو وضع معروف في برامج أخرى مثل الكريستال تايل باسم SNES 4bpp.


ننزل و نبحث إلى أن نجد العنوان هنا:



رسوم التايل متداخلة في المربعات التي جانبها.

إذن سنقوم بعملية تصحيح للبيتات.

لو كنا في برنامج الكريستال تايل لكنا ضغطنا CTRL+يمين/يسار.

لكن في التايل مولستر، سنقوم بضغط هذه الأزرار:



في حالتنا، يكفي ضغط الزر الذي فوقه (+) بعض المرات، إلى أن يصبح الرسم نظيفا:



نواصل الضغط على (+) إلى أن يصبح الرسم نظيفا تماما،

و الحافة بين الرسوم و ما فوقها تصبح خطا مستقيما.

هكذا:



نقوم بتحريك التايلات قليلا كي نتخلص من تفكك الصورة الصغير على أقصى اليسار،

ثم نرفعها قليلا.

ذلك يمكننا القيام به في tilemolester تماما مثل الكريستال تايل،

بالضغط على أزرار الاتجاهات فوق/تحت/يمين/يسار.



الآن، سنحاول تصحيح جدول الألوان.


نظرا أن جداول ألوان السوبر نيس أكبر بقليل،

يمكننا جلبها مباشرة من الروم إلى التايل مولستر بعدة طرق.


محاكي BizHawk للسوبر نيس، لديه نافذة تحت Tools و Tool Box و Graphics Degugger

تظهر لنا نافذة مفصلة عن الذاكرة البصرية للسوبر نيس:



يمكننا استخدامها للبحث عن جدول الألوان الصحيح،

أو لرؤية ما تظهره اللعبة بالضبط في لحظة معينة.

محاكي NO$SNS أقل تقدما نسبيا من ناحية جودة المحاكي نفسه، لكنه يحتوي نفس الخاصية

تحت النافذة VRAM Viewer.

يمكن ملاحظة جدول الألوان بوضوح في الصورة،

و نسخ قيم ألوانه يدويا كما فعلنا مع سبرايت الماريو.


عدا ذلك، فان برنامج tilemolester لديه خاصية تحت قائمة Palette و Import From و Another File

تسمح له بفتح ملفات اللقطات التي تنتجها المحاكيات عند عمل تسجيل لقطة Save State

و استخراج جداول الألوان منها، و ذلك مع بعض المحاكيات بالتحديد،

و منها محاكي zsnes و ملفات اللقطات بصيغة zst التابعة له. لكنه للأسف محاكي رديء نسبيا.


لكننا سنحاول أمرا آخر.

لتبسيط العملية، لن نستعمل جدول الألوان الأصلي.

سنختار ألوانا أبسط.

إذن في التايل مولستر، فوق كل لون، سننقر مرتين و نغير هذا اللون كيف يظهر.



اللون أسود 1 هو اللون الشفاف،

سنعوضه باللون الأزرق.


اللون بنفسجي 5 هو لون إطار برواز الحروف.

اللون أخضر 16 هو لون داخل الحروف.

هذان اللونان هما ما سنستعمله في العنوان المعرب.

نعوضهما هكذا: البنفسجي 5 يصبح أسود، و الأخضر 16 يصبح أبيض.


نلاحظ أن كل الألوان التي استعملناها أسندنا لها ألوانا مختلفة عن بعض.

لأن اسناد نفس اللون للونين هو أمر سيسبب لنا مشاكل لاحقا.

نتأكد أنه لا يوجد ألوان أخرى في الجدول هي أيضا أسود / أبيض / أزرق،

و ان وجدناها نعوضها بالوان أخرى بعيدة.


النتيجة شيء كهذا:



بقي أمر بسيط نسبيا.

العنوان مفكك إلى أجزاء.

سنحاول تصور كيف تجتمع هذه الأجزاء ببعضها:


أبعاد الصورة عندما تكون مركبة كاملة ستكون

26 تايل (عرض) × 8 تايل (ارتفاع)

و بما أن التايل هو 8×8 بيكسل هنا،

فأبعاد صورة العنوان التي يجب أن نصنعها يجب أن تكون

208 بيكسل (عرض) × 64 بيكسل (ارتفاع)


الآن، نختار جميع تلك التايلات بزر الاختيار.



على عكس برنامج الكريستال تايل، فهذا البرنامج لا يعترف بالنسخ و اللزق.

لذلك نذهب الى Edit ثم Copy To

و نختار اسم الصورة كي يسجلها.

نحرص ألا يكون في الصورة أي من البيانات التي أسفل،

كي لا نتلف أجزاء من الروم و نحن نتعامل معها كأنها صور.



الآن نذهب لتلك الصورة و نفتحها و نغيرها

بأي برنامج رسم مثل ال Paint و الفوتوشوب أو غيره.

كيف نغيرها؟


أول شيء نقوم به هو تصميم الشعار العربي في برنامج رسم من اختيارنا.

يجب أن نجبر برنامج الرسم أن يرسم بالأبيض و الأسود فقط.


نحن سنقوم بذلك على عجل لذلك لن نهتم بالجمالية كثيرا.

أولا نرسم اطارا أبعاده 208×64 لكي نعرف ما هي أبعاد الصورة التي لا نخرج عنها.

ثم نكتب العنوان العربي، أو نرسمه، بلونين فقط (الأبيض و الأسود)

النتيجة ستكون شيئا كهذا.



لو كنا نريد اضافة اطار برواز حول الحروف،

(من لا يريد، يمكنه أن يمر للفقرة التالية) باستخدام الفوتوشوب،

نختار "اختيار لون"، و ننقر الأسود، كي يختار جميع البيكسلات السوداء.

ننسخ. الآن هناك اختيار توسعة Dilate يوسع المساحة التي اخترناها 1 بيكسل.

نجعل لون الخلفية مثلا الأحمر (لو كنا نريد اطارا أحمر).

ثم نضغط زر الحذف كي تعوض كل تلك المساحة الموسعة 1 بيكسل بالأحمر.

ثم نلزق ما نسخناه.

و هكذا نحصل على البرواز حول الحروف.



الآن نحاول ترصيف الصورة في برنامج الرسوم بالشكل الصحيح

كي تطابق الصورة التي أخرجها التايل مولستر (128 بيكسل عرض × 112 بيكسل ارتفاع)



سنحصل على شيء كهذا:



نسجل الصورة، و نعود الى التايل مولستر.

نذهب الى Edit ثم Apply Selection و نفتح ملف الصورة المطلوب.

و عندها نضع الصورة لتعوض العنوان الأصلي تماما:



نسجل الروم، و نجرب تشغيلها على محاكي، و نستمتع بالنتائج!



(يمكنكم تجربة هذه الطريقة مع شاشة عنوان Super Mario All Stars

أو شاشة عنوان لعبة نيس من اختياركم)


هذه اللعبة كمية نصوصها صغيرة جدا.

أنا لا أحب ترجمة هذه النوعية عادة، لكنها تصلح لتعلم الطريقة.


كل ما علينا الآن، هو الذهاب و البحث عن الخط فيها،

و اضافة رسم الحروف العربية إليه.

ثم نطبق طريقة تغيير النصوص الإنكليزية هنا.


لكن بما أن هذا الدرس طال قليلا،

سنخصص الباب القادم بكامله لعملية تعريب النصوص كاملة

و ليس فقط النصوص التي هي صور جاهزة مثل شاشات العنوان.


أيضا بصراحة، لقد تجاوزت الكثير من الجزئيات (ما يفسر قصر هذا الدرس)،


مثل "ماذا لو كانت شاشة العنوان مفككة أكثر بشكل يستحيل معه الترجمة"

أو "الألوان التي تقيدني لا تعجبني، أريد تعويضها بألوان أخرى (ماريو بنفسجي مثلا)"

أو "لم أجد صورة في الروم، اذن هي مضغوطة. كيف أفتحها إذن"


لكن تلك الأسئلة أجوبتها ستأتي ان شاء الله بعد أهم سؤال

و هو كيفية تغيير الخط و البداية في التعريب.