الباب الرابع – تعريب لعبة


نحن الآن لدينا من الدروس السابقة فكرة عابرة عن كيف خزنت النصوص و الصور في الروم.

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

طبعا، يمكننا لو كان الكلام مخزنا في شكل رسم، أن نرسم ببساطة عنوانا عربيا.


لكن بالنسبة للنص، لحد الآن كل ما نقدر عليه هو تغيير النص الانكليزي إلى نص إنكليزي

يستخدم الحروف اللاتينية الأصلية في الروم و إتجاه النص من اليسار لليمين.

ألم يحن الوقت للبحث عن طرق لجعل هذه الرومات تظهر اللغة العربية على الشاشة؟


الآن يمكننا الدخول في صلب الموضوع.


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

أولا – نعوض رسم الخط و حروفه الانكليزية إلى حروف عربية

ثانيا – نغير النص بحيث لو استعملنا حروف الخط فهي تظهر لنا على الشاشة كلاما عربيا.


صورة الخط في الروم

النص في الروم

البرمجة في الروم

ماذا يظهر في اللعبة


The house door/

is open?#

(من اليسار لليمين)

أول سطر:

مكان حرف = 0 (يسار الشاشة)

كل حرف:

كتابة حرف
مكان حرف يزيد 1 (نحو اليمين)

العودة للسطر:

مكان سطر يزيد 1 (ينزل لأسفل)

مكان حرف = 0 (يسار الشاشة)



The house door/

is open?#

(نفس الجملة الانكليزية،

كتبت بحروف عربية بلا معنى)


qaoQa dbc/

?lYeKS#

(جملة عربية مقلوبة

كل سطر قلب وحده)

(جملة انكليزية جديدة

ظاهريا بلا معنى، لكن مع الخط

العربي تظهر لنا جملة عربية)


نلاحظ في المثال أعلاه، أن اللعبة:

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

إذن – نحن الذين جهزنا الجملة العربية بأنفسنا و نحن نكتب النص

كي يكون كل رمز (بداية أو نهاية الخ) مستخدما لكل حرف في المكان الصحيح من الجملة


لا تستطيع كتابة الجمل العربية من اليمين لليسار

إذن – نحن الذين قلبنا الجملة العربية بأنفسنا و نحن نكتب النص

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


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

و لو أن اللجوء لهذا الأسلوب قد لا يكون دائما ممكنا ان كانت مساحة النص المتاحة ضئيلة

و لا يمكن اهدارها على الفراغات (مثلناها في الأسفل بالرمز § للتوضيح لا غير)

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


§§§§§§§qaoQa dbc/

§§§§§§§§§§?lYeKS#




لكن –


ماذا لو كانت اللعبة تتغير سرعة كتابة نصوصها كثيرا،

و كان ذلك الأمر مهما للقصة فيها؟

حينها، لو عملنا بالطريقة السابقة فحسب...

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


في مثل تلك الحالات، قد يعتبر من الضروري تغيير برمجة اللعبة.

فنجعل النص يظهر من اليمين لليسار.

لكن كون الأعداد تكتب من اليسار لليمين هو تفصيل لا يجب أن نغفل عنه أيضا...


صورة الخط في الروم

النص في الروم

البرمجة في الروم

ماذا يظهر في اللعبة


The house door/

is open?#

(من اليمين لليسار)

أول سطر:

مكان حرف = 15 (يمين الشاشة)

كل حرف:

كتابة حرف
مكان حرف ينقص 1 (نحو اليسار)

العودة للسطر:

مكان سطر يزيد 1 (ينزل لأسفل)

مكان حرف = 15 (يمين الشاشة)



The house door/

is open?#


cdb aQoaq/

SKeYl?#

(جملة عربية غير مقلوبة)


بالطبع هناك ملحوظة مهمة،

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

فهذا يعني أننا لا نحتاج قلب النص.


لكن قلب النص أمر ضروري في حال ما لم نغير البرمجة.

بعبارة أخرى، يجب اتخاذ قرار تغيير البرمجة قبل إدخال حرف واحد من النص في الروم!


أيضا –

ماذا لو كانت اللعبة تضيف ضمائر متصلة أو صيغ جمع في آخر الكلمات.

مثلا ألعاب الأدوار التي فيها معارك و تعاليق في شكل نصوص على ما يحصل، تحتاج الى قواعد تصريف.

لو كنا اكتفينا بما فعلناه فوق...

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


في تلك الحالات، ربما سنحتاج لتغيير البرمجة لجعل اللعبة هي التي تربط الحروف العربية.

لكن الحاجة لهذا التعديل سيكون أندر.



لم لا نجرب مع احدى الألعاب أن نطبق عليها هذا المبدأ؟

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

أي أن النص سيظل يظهر من اليسار لليمين.


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

الإسم: Shaman King – Master of Spirits 2

منطقة الروم: (U)

الجهاز: GBA




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

في حالة VBA-M ذلك ممكن عبر File>Screen Capture.

لكن حتى لو لم يحتو المحاكي هذه الوظيفة يمكنك التقاط صورة للشاشة عبر PrintScreen (زر في أي لوحة مفاتيح)

ثم لزق الصورة في برنامج Paint،

أو باستخدام برامج متخصصة في تسجيل صور الشاشة و حتى فيديوهات الشاشة، مثل Bandicam.

من المهم جدا أن تتمكن من التقاط الصور طبعا!


لنلتقط صورة لأول حوار في اللعبة:


هناك عدة أمور نلاحظها في هذه اللعبة:

لغة اللعبة هي الانكليزية

النص دائما من اليسار لليمين، و لا يكون مرصفا للوسط أو اليمين أبدا

استعمال خطين، واحد صغير (8×8) و واحد طويل (8×16)

عرض جميع الرموز متساوي و هو دائما 8 بيكسل – أي أنه عرض ثابت، و ليس متغيرا حسب كل حرف

أقصى عدد من الحروف في السطر الواحد تستعمله اللعبة هو 27

هناك سطر مخصص لإسم الشخصية و 3 أسطر فقط مخصصة للحوار

هناك كلمات تستخدم ألوانا مختلفة


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


نطبق ما رأيناه في السابق إذن:


أولا – كيف خزن النص، ما قيم حروفه، هل هو قابل للتعديل

أول شيء سنقوم به هو معرفة إن كان تعديل النص الانكليزي بنص انكليزي آخر عملية ممكنة.

نبدأ إذن البحث عن النص.


لهذا الغرض، كالعادة، نستخدم الأداتين التاليتين:


نفتح إذن monkeymoore برنامج البحث النسبي.

هو سيخبرنا بقيم الحروف بالهيكس.

إلا لو كان النص مضغوطا، أو كان صورا،

أو كان الحرف الواحد يستخدم أكثر من بايت واحد (سنرى مثالا لاحقا).

نبحث عن جملة أو كلمة من مثالنا،

و تلك الصورة عندنا ستساعدنا كثيرا الآن.



نضغط الزر الصغير أمام خانة File و نبحث عن روم اللعبة. نفتحه.

نتأكد من أننا إخترنا Relative Search، و أن Enable Wildcards تعمل، و أمامها رمز النجمة * و نبدأ.


سنبحث عن كلمة Dobie Village في الروم.

هي كلمة جيدة، فيها الحروف اللاتينية الصغيرة و الكبيرة معا.

لكن برنامج البحث بالمقارنة لا يقبل سوى الحروف بين A-Z و a-z.

إذن، كل علامة تنقيط، و كل فراغ، سيعوض برمز نجمة واحد بديلا عن كل رمز واحد.

اذن نكتب Dobie*Village في الخانة تحت Relative Search ثم ننقر زر البحث.



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

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

كلها اختيارات صحيحة في حالتنا. ننقر واحدة.


بالطبع، ندون بعض العناوين في ملاحظاتنا، من التي تظهر تحت خانة العنوان Offset –

أين وجد البرنامج هذه الجملة في الروم.

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

على سبيل المثال عنوان النص الذي يظهر لنا في الصورة هو EE3387،

بالست عشري كالعادة بما أن لدينا 0x كتبت أمامه.


لننظر الآن إلى خانة قيم الحروف Values –

في حالتنا هذه الترتيب هو A=41 و a=61

و هو يتبع قيم حروف نظام ال ASCII بالمناسبة.

إذن ربما لن نحتاج لملف تيبل بما أن برنامج الهيكس يعمل بطبيعته دون تيبل في نظام ASCII، أليس كذلك؟

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


نضغط ذلك السطر و نصنع ملف التيبل، الذي به ستكون قيم كل حرف بالهيكس، و ذلك بضغط Create Table.

أكتب اسما للملف من عندك (مثلا shamanking2table على اسم اللعبة...

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

اختر Encoding بقيمة Unicode UTF-8، ثم اضغط زر التسجيل، و سجل هذا الملف في نفس مجلد الروم.


يمكنك طبعا فتح و تعديل هذا الملف، و هو بصيغة tbl، في برنامج مثل Notepad.

سيكون شكله مثل هذا تقريبا:


41=A

42=B

43=C

44=D

45=F

46=G

47=H

48=I

49=J

4A=K

4B=L

4C=M

4D=N

4E=O

4F=P

50=Q

51=R


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

لأنه يحتوي حاليا فقط الحروف من A-Z و a-z

لكن طبعا يجب أن نضيف أي رموز أخرى و علامات تنقيط و فراغات مثلا..

و خاصة رموز التحكم (العودة للسطر، الألوان، الخ)


يمكنك في Notepad اضافة أسطر جديدة لهذا الملف

باتباع طريقة كتابة مشابهة، ثم نسجل الملف.

هذه احدى الطرق العديدة لتعديل ملف التيبل.

الخ الخ... هذا الملف يحتوي حاليا فقط الحروف من A-Z و a-z لكن عليك اكماله طبعا نظرا أن اللعبة فيها علامات تنقيط و فراغات مثلا..

يمكنك اضافة أسطر جديدة لهذا الملف من نفس نوع الأسطر الموجودة، ثم التسجيل. هذه احدى طرق تعديل ملف التيبل.


ملاحظة: هناك وظيفة بحث نسبي Relative Search أيضا في برنامج الهيكس WindHex

قد تغنينا عما أتعبنا فيه أنفسنا فيه في المونكيمور أيضا!

أي أنك تفتح برنامج WindHex دون تيبل، تعمل Relative Search ...

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

عندما تجد نتيجة جيدة تنقر باليمين و تعمل Create Table With Selected Values...

لكن الخلل في هذه الطريقة أنك لا ترى النتائج كما يريها لك المونكيمور، و من الأفضل أن يتقن المرء عمله...



إذن الآن...

لدينا الروم و لدينا ملف التيبل الطازج الذي أعددناه منذ قليل.

فلنبدأ التعديل على النص...

نحن نريد تغيير النصوص فقط من انكليزي لإنكليزي

لنرى هل التغيير يعمل في اللعبة أم لا.


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

نفتح الروم (روم اللعبة) عن طريق اختيار File ثم Open File For Editing.

نفتح ملف التيبل (ملف tbl) عن طريق اختيار File ثم Open Table File ثم Table#1 (أو Table#2، لا يهم).


بما أننا استخدمنا أداة البحث النسبي، فلدينا لو تذكرون جيدا هذا السطر:



لكي نتوصل مباشرة إلى النص في برنامج الهيكس، لدينا عدد من الحلول:

أي أننا نذهب إلى Search ثم Goto Offset ثم نكتب هذه القيمة في File Position و نضغط Done.


لو حصل كل شيء على ما يرام فسنحصل على الآتي...



نحن مهتمون حاليا بتغيير النص.

بما أن "خانة النص" و "خانة الهيكس" هما الإثنتان تعبران عن نفس الشيء،

فأي حرف ستنقر عليه في الأولى سيلمع و يلمع معه في نفس الوقت البايت المطابق له في الخانة الثانية.

تستطيع أن تكتب في لوحة المفاتيح بالانكليزية لتغيير الشيء الذي يلمع الآن بطريقة متقطعة.


لتختار هل تريد الكتابة في خانة الحروف أو خانة الهيكس، أنقر في لوحة المفاتيح الزر TAB

(و هو زر مرسوم عليه سهمان في بعض ألواح المفاتيح، و هو الزر الثاني تحت ESC)


في الصورة أعلاه، الحرف V أول كلمة Village يطابقه البايت ذو قيمة هيكس 56.

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


يمكننا أن نرى غالبية النص بوضوح...

لكن الفراغات بين الكلمات و كل شيء ما عدا الحروف

صارت رموزا مجهولة تم تعويضها بنقاط في خانة النص.

السبب طبعا أن ملف التيبل tbl الذي استخدمناه لم يكن كاملا.


نقوم بالعودة للصورة مرة أخرى للتعرف على هذه الرموز و تغييرها.

التفاصيل في الباب الثاني من الدرس طبعا...



هذه الصورة تحدد لنا بالضبط ماذا تعني تلك الرموز المجهولة في نافذة الهيكس، و بالتحديد:

2E = هذا البايت متكرر ثلاث مرات بعد بايتات حروف كلمة Yoh،

ما يجعلنا نتأكد أنه النقطة

20 = هذا البايت موجود بين الكلمات،

و بالتالي فهو يرمز للفراغ بين الكلمات

27 = هذا البايت موجود داخل كلمة Something*s

و بالتالي فهو رمز الأبستروف (‘).


لكن، هذا ليس كل شيء.

هناك أيضا في مثالنا هذا رموز تسمى رموز التحكم control codes.

و هي النوعية التي ليست تظهر رمزا و تمر للتالي، بل هي تأمر البرنامج بأوامر معينة،

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


في مثالنا أعلاه، رموز التحكم التي تنقصنا هي:

0A = تأتي بعد النقطة (علامة التنقيط، 2E) التي بعد today.

هذا الرمز يأمر اللعبة بالعودة للسطر.

00 = تأتي بعد النقطة (علامة التنقيط، 2E) التي بعد right.

هذا الرمز يشير إلى أن النص قد تم.

اللعبة تتوقف عن اظهار النص في حالتنا هذه و تنتظر متى يضغط اللاعب زرا لتغلق النافذة و تواصل.


في حالة هذه اللعبة تحديدا، لم يستعمل رمز 0A (عودة للسطر) بعد كلمة seems، بل مجرد فراغ عادي (رمز 20).

السبب أن هذه اللعبة صنعت في 2006 و تعد متقدمة نسبيا،

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


لكن في أغلب الألعاب، هذه البرمجة غير موجودة في كثير من الأحيان، و لو تم نسيان رموز العودة للسطر، فقد يحصل أمر من ثلاثة:

نظرا أنها تجاوزت الحيز الذي تتوقعه الذاكرة

و هذا يسبب مشاكل غرافكس كبيرة أحيانا (النص يظهر من أماكن عديدة من الشاشة، و لا يختفي في النهاية)

ما يعني أن النص يكون مبتورا و منقوصا في آخره


رموزنا هذه التي توصلنا إليها مهمة للغاية،

و لنتمكن من قراءة النصوص علينا أن نضيفها لملف التيبل.

و هناك عدة طرق.


الحل الأبسط هو الدخول على ملف التيبل ببرنامج Notepad،

اضافة السطور 27=’ ثم 2E=. و هكذا..

نسجل الملف في النوتباد،

ثم نعيد فتح الملف في Windhex باستخدام File/Open Table File...

لكن سنجرب الحل الذي رأيناه في الباب الثاني.


برنامج Windhex يحتوي أداة لتعديل ملفات tbl ... و حتى لصنعها لو أردنا.

نذهب أولا إلى Tools ثم Table Editor.

هنا نستطيع التعديل على ملف ال tbl بطريقة أسهل.

هناك خانة نكتب فيها النص.

أول شيء نكتبه سيكون

20=

(أنا كتبت مربعا أسودا هنا، لكن أنت أكتب فراغا واحدا مكانه)

ثم نضغط Enter في لوحة المفاتيح.

ثم نحذف كل ما هو مكتوب في المربع، و نكتب السطر التالي.


و نضيف بنفس الطريقة هذه السطور:

27=’

2E=.

(لو أخطأنا في وضع رمز ما،

نذهب للقائمة على اليمين و نختار السطر الخاطئ،

و نضغط في لوحة المفاتيح الزر Del.)


لكن كيف نشير لرمز التحكم الذي يأمر اللعبة بأمر العودة للسطر؟

بما أن اللعبة لا تستعمل الخط المائل (/) في الحوارات العادية،

يمكننا استخدامه في برنامج الهيكس ليشير لنا كل مرة تعود اللعبة فيها للسطر،

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


إذن نضيف هذا السطر:

0A=/

و بنفس الطريقة نضيف ما يمكننا من كتابة رمز التحكم لأمر إنتهاء النص:

00=%


و الآن نضغط File ثم Save Table File. نختار نعم، ثم نقفل النافذة.

و الآن يعود بنا البرنامج إلى نافذة تعديل الهيكس، لكن مع تحسن كبير!



النصوص صارت أوضح!


لكن الرمز (%) كما يبدو واضحا من الصورة مستعمل بكثافة في الروم في أماكن أخرى

لكن تلك الأماكن ليست نصوصا، و هناك هذا البايت لديه معنى آخر.

لذلك لا داعي من الخوف من بحر الرموز %% التي ظهرت.

نحن لن نغير الا الحيز الذي فيه النصوص، و سنلتزم بذلك الحيز لا غير.


الآن عليكم انهاء التيبل بأنفسكم، نظرا أنه بعيد كل البعد عن الانتهاء.

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


شغلوا الروم و أظهروا الحوارات أول اللعبة

و أنتم في نفس الوقت تفتحون برنامج الهيكس و تبحثون عن النص في الروم!


الآن سوف نحاول تغيير النص الأصلي.


ما الرموز التي لدينا الحق في استعمالها في كتابة رسالتنا الجديدة؟

فقط الرموز التي في ملف التيبل مسموح بها.

(و لا داعي من المحاولة بالحروف العربية الآن، نحن الآن نستخدم الحروف اللاتينية فقط)


الحوار الأصلي يقول:


نذهب إلى برنامج الهيكس و نضغط فوق حرف Y في أول كلمة من هذا الكلام (Yoh).

نتأكد أن الرمز الذي يتوهج بشكل متقطع هو في خانة الحروف و ليس خانة الهيكس

(للتغيير بينهما نستخدم الزر Tab في لوحة المفاتيح، و هو الثاني تحت Esc)


و الآن نبدأ على لوحة المفاتيح بكتابة نص من محض خيالنا يعوض هذا النص الأصلي،

كي نعرف هل نستطيع تغيير النص،

أم أن النص الذي وجدناه طعم للمغفلين و ليس الحقيقي (و هذا للأسف شائع جدا مع ألعاب ال PSP)

طبعا نستطيع أن نكتب (/) للعودة للسطر أيضا بما أننا أضفنا هذا الرمز للتيبل.


أي تغيير سنقوم به سيكون تعويضا.

أي أنه يشمل فقط الطول الأصلي للنص أو أقل منه.


لو بدأنا نعدل و التعديلات تجاوزت الطول الأصلي

و مست بمساحة في الروم خارج مساحة النصوص

فهذا يعني أن هناك شيئا آخر في الروم قد أتلف نهائيا.

لذلك، على سبيل الاحتياط، وجب عمل نسخ احتياطية للروم على الدوام!


نعود إلى ما كنا نقوم به...

نسجل التغييرات باستخدام File/Save File As

و نسمي اسم النسخة الاحتياطية الجديدة...

يمكن أيضا عمل Save File للتسجيل دون نسخ احتياطية

و نقوم بتجربة الروم!



... الأجدر بنا أن نتوقف عن العبث :P


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

لكننا لا نريد هذا، بل نريد ترجمة اللعبة إلى العربية، باستعمال حروف عربية!


ثانيا – تغيير صورة الخط


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

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

(ألعاب الويندوز بعضها يستخدم خطوطا من ملفات الويندوز،

و في الواقع بعض ألعاب أجهزة مثل PS1/PSP/GC… تستخدم خطوطا مخزنة في بيوس الجهاز

و ليس في الروم نفسه، و يمكن التعرف على هذه الخطوط من شكلها المميز،

لكن ذلك موضوع آخر و لا ينطبق هنا و على هذا الجهاز – الجيم بوي أدفانس – بالذات!)


هدفنا هو البحث عن صورة الخط إذن.

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

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


لكن كيف نرى الصور التي داخل الروم؟

هناك عدة برامج لفتح البيانات الثنائية،

و قد رأينا قبل قليل أحد أنواعها و هو برنامج الهيكس Hex editor الذي يظهر محتويات الملفات في شكل بايتات،

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


لكن هناك نوع آخر أيضا و هو رائج الاستعمال مع رومات أجهزة الألعاب للبحث عن الصور، و هو برنامج التايل Tile Editor.

التايل Tile هي ببساطة بيانات الصور (أبسط أنواعه تكون بأبعاد 8×8 بيكسل)،

تكون مخزنة في الروم على شكل سلسلة بايتات و كل بايت لديه "رقم لون"

و طرق الكتابة بالضبط تختلف حسب الجهاز (لذلك برامج التايل بها اختيارات بين أنواع الأجهزة النيس/السوبر نيس/الجيم بوي الخ)


و في مكان ما من الروم، هناك جدول الألوان Palette الذي يخبرنا عن كل "رقم لون" ما هو اللون الذي يعوضه.

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

و كذلك هناك خريطة التايل Tile Map التي تستخدم لتجميع و تركيب أجزاء عديدة صغيرة من صورة ما، كل جزء هو تايل،

في شكل الصورة الكبيرة.

لكن هذان الإثنان يغيران أساسا عبر جانب برنامج الهيكس، و ليس جانب برنامج التايل.

و يتطلبان معرفة بالجهاز.



نحن نعلم أن الخط نوع من الرسوم في الروم، و أنه سيكون بسيطا نوعا ما

(نظرا أن ألوان الحروف هي غالبا الأبيض أو الأسود أو أحيانا الظلال الرمادية تحت الحروف).

إذن نستخدم للبحث عن الخط أداة من أدوات التايل Tile editor.

هناك الكثير، مثل yy-chr، tilemolester و crystaltile2.

لكن بما أننا نتعامل مع لعبة من جهاز GBA، فسنختار في حالتنا هذه برنامج Crystaltile2.


نفتح إذن Crystaltile2، و نفتح بداخله الروم التي نود العمل عليها.

أول شيء سنلاحظه هو أن البرنامج هو أيضا في نفس الوقت برنامج هيكس hex editor أيضا ! – لكن هذا لا يهمنا الآن.

على سبيل الملاحظة، فهذا البرنامج فيه خاصية رائعة في جزء الهيكس منه،

هو امكانية تغيير الترميز فوق خانة النص من Arabic (Windows) إلى ترميز Shift-JIS

المستعمل بشكل كثيف في عدة ألعاب يابانية تماما مثلما ASCII مستعمل بكثافة في أغلب المنتجات الانكليزية...



نحن نريد جزء التايل لنبدأ العمل على الصور.

لنركز على هذا الجزء من النافذة:

بشكله الحالي، هذا يعني أن البرنامج في وضع يعمل فيه كأداة هيكس hex editor.

يمكن النقر على الزر على اليسار (أو أيضا F5 في لوحة المفاتيح) لتحويله إلى أداة تايل tile editor.



هذه الخرابيط في شكلها الحالي قد لا تعني الكثير، و السبب...

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

حتى هذه (و التي من شبه المؤكد انها ليست صورًا).


نتأكد أولا أننا إخترنا وضع التايل يناسب الجهاز الذي نعمل عليه:

في حالة الجيم بوي أدفانس،

قد نلاقي نجاحا أكبر مع الأنواع GBA 4bpp / GBA 8bpp / VB 2bpp / … و أنواع أخرى،

دون نسيان solid 1bpp بالطبع لبعض الخطوط!


نترك وضع التايل Tile form في مرحلة أولى كما وجدناه، أي GBA 4bpp كما في الصورة أعلاه.

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

و الآن نبدأ في البحث عن أي رسوم خزنت مكشوفة دون تشفير في الروم.


هذه الأزرار التي نستخدمها في لوحة المفاتيح لأجل هذا الهدف:

فوق / تحت / يمين / يسار / PgUp / PgDown : التنقل داخل محتويات الروم

Shift+فوق / Shift+تحت / Shift+يمين / Shift+يسار : كم من مربع (تايل) في السطر/العمود الواحد يظهر على الشاشة

(مثلا أستطيع في الصورة أعلاه التخلص من الفراغ الرمادي هكذا)


نواصل الضغط على "تحت" و استعمال الأزرار الموضحة أعلاه كي نبحث عن أي رسوم متوفرة في الروم.

لو وجدنا مكان رسمة مثيرة للإهتمام، نقوم بتدوين مكانها، و هو العنوان الذي أمام offset (مهم للغاية!)


نواصل النزول و النزول إذن... ماذا سنجد؟

على مقربة من الأوفسيت (أو بالأحرى العنوان) 9D2C0 ، لدينا هذا:



و هذا هو الخط الصغير المستخدم في اللعبة لدينا، في القائمة التي تظهر بعد زر ستارت.

طبعا، لا أقصد الخط الذي كتبت به Status / Spirit / Item / Ex-Item، بل الخط الصغير الآخر في هذه الصورة:



لكن الخط في أداة الهيكس لا يظهر بشكل صحيح!

العرض صحيح، الشكل العام لكل حرف واضح كليا، لكن... نصف كل حرف ابتلعه التايل الذي بعده.

لكن، على فكرة، ما هو التايل؟

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


لنصلح الخط، نقوم بتصحيح البيتات لغاية إزاحته قليلا، عن طريق ثنائية الأزرار:

Ctrl+يمين / Ctrl+يسار

(لو حصل و قمتم بخطأ ما و تغير شكل الصورة كليا إلى تشويش غير مفهوم،

يمكنكم تغيير Tile form إلى GBA 4bpp و إكمال ما بدأتم)

و النتيجة ستكون:



و الآن صار بإمكاننا تغيير هذا الخط كما نريد!

(الجدير بالذكر هو أن هذا الخط فيه كم هائل من الرموز – خاصة آخر سبعة سطور –

لا يمكن استعمالها في النصوص مهما كانت القيمة التي تضعها،

يعني أنها هنا فقط للزينة و لا يعول عليها،

و ذلك هو المغزى من تجربة جميع قيم الهيكس الممكنة لإكمال التيبل)


هذه المربعات هي التايل. لو ننقر بالفأرة نقرة واحدة بالزر الأيسر، سنختار واحدة منها.

لننقر مثلا فوق التايل الذي فيه حرف A. الآن نحن اخترناه.

الآن للتعديل على هذا التايل، لدينا عدة اختيارات.


الإختيار الأول – التعديل داخل الكريستال تايل

ننقر مرتين فوق التايل الذي نريد التعديل عليه.

نغير scale إلى قيمة أكبر (مثلا 2000)، ثم نختار Palette عوض Propreties.

سنتحصل على شيء من هذا القبيل:



أولا، لا داعي للقلق بشأن بقية الحروف التي اختفت فجأة. للعودة إليها، نضغط ببساطة F5 أو الزر

لنركز على الصورة التي لدينا.

هذا تايل بأبعاد 8×8 بيكسل. البيسكل هو النقطة المكونة لأي رسم على الكمبيوتر، و يمكن رؤيتها بوضوح هنا.


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

كل زر يعطي لونين. في حالة الصورة أعلاه، أنظر للكلمة Char الملونة.

الكلمة ملونة بالأخضر – يعني أنك عندما تنقر بالزر الأيسر من الفأرة على بيكسل سوف تلونه بالأخضر

الإطار وراء الكلمة ملون بالأسود – يعني أنك عندما تنقر بالزر الأيمن من الفأرة على بيسكل ستلونه بالأسود


كيف نغير هذه الألوان؟ لنلق نظرة على هذا القسم من البرنامج:


نحن، لو تذكرون جيدا من الصورة السابقة، نعمل في وضع الصور GBA 4bpp.

في هذا الوضع، عدد الألوان الأقصى المتاح لكل تايل هو 16 لونا فقط.


لكن ما هذه الألوان بالتحديد؟ هذا الأمر طبعا يتغير حسب مزاج اللعبة.

فالروم أيضا تحتوي جداول الألوان Palette و التي تستعمل لتحديد

ما هي هذه الألوان الـ 16 حسب السياق التي استعملت فيه الصورة.


لو نعود للصورة من اللعبة:


فنحن على يقين أن جدول الألوان Palette الخاص بالحروف لا يستعمل الألوان الأخضر أو القرمزي كما في الصورة التي تظهر لنا في الكريستال تايل.

لننظر لجدول الألوان الذي يستعمله الكريستال تايل (و هو مرتب بطريقة عشوائية):


حسب الصورة أعلاه ،الجدول (فيه 16 لون) الذي نرى به الكريستال تايل حاليا، هو السطر الأول.


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

أن نغير جدول الألوان المستعمل من بين هذه الألوان.

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


لنعد للسطر الأول. ماذا نلاحظ؟

اللون الأول (تحته رقم 0) هو المستعمل للخلفية،

و هو لون شفاف يظهر ما وراءه (في صورة اللعبة أعلاه مثلا هناك اطارات حوارات بنية أو رمادية تحت الكتابة تظهر).


لون الحرف هو اللون الخامس عشر (تحته رقم E، أو 14 بالنظام الست عشري).

لون ظل الحرف هو اللون السادس عشر (تحته رقم F، أو 15 بالنظام الست عشري).

بقية الألوان غير مستعملة في رسم الخط الذي لدينا.


لنقم بتغيير الألوان إذن لتصبح ألوانا شبه صحيحة.

نختار مثلا السطر الأول الذي يرمز لجدول الألوان الأول

عندما ننقر مرتين فوق مربع كل لون صغير من هذه الألوان الـ16، تظهر لنا شاشة جديدة نستطيع فيها اختيار لون جديد.

نختار اللون الجديد و نضغط على زر "موافق"، و هكذا لكل من الألوان الست عشر في السطر الأول.


هدفنا الحصول على جدول ألوان كهذا:

اللون الشفاف (أول لون في غالب الحالات) هنا صار اللون الأخضر (لأنه لون غير مستعمل في الحرف أو الصورة)

الألوان الأخرى الغير مستعملة كلها عوضت بلون لا نستعمله (الأزرق)،

المهم ألا تكون مشابهة للألوان المستعملة في الخط (و هي أبيض الحرف، و أسود الظل، و شفاف الخلفية في حالتنا)


و سيتغير شكل الصورة في نفس الوقت ليصبح هكذا:


الآن، يمكننا أن نرسم على هذا الحرف كما نريد.

لكن كلمة Char الملونة التي تخبرنا عن الألوان ليست باللون الذي يعجبنا.

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


هناك 6 أزرار قرب الألوان، و هي Char – BG – Shade – Palette – Import – Export .

(لو ضغطنا Palette ثم TLP سيعود جدول الألوان التابع لبرنامج الكريستال تايل

إلى حالته الأصلية قبل أن غيرنا أغلبه للأزرق، لكن هذا غير مهم الآن)


ننقر بالفأرة بالزر الأيسر فوق أول هذه الأزرار، أي Char.

ثم ننقر بالزر الأيسر على أحد ألوان سطرنا الذي فيه جدول ألواننا الحالي:

سنختار اللون الأبيض أولا.


الآن، نرسم بالفأرة فوق رسمة حرف A.

نحذف أولا بالزر الأيمن (اللون الأخضر)، ثم نبدأ برسم الحرف بالزر الأيسر (اللون الأبيض).

لو أردنا تغيير اللون للزر الأيسر ليصبح الأسود، نختار Char ثم اللون الأسود.

لو أردنا تغيير اللون للزر الأيمن للون آخر لو كان ذلك يريحنا، نختار BG ثم نضغط اللون الذي يعجبنا من سطر جدول ألواننا...


و هكذا إلى أن ننهي رسمنا:



(لا ننسى أن نترك حروفنا العربية على نفس الاستقامة! كي لا تبدو مفككة)

نضغط الآن F5 أو الزر لنعود لرؤية بقية التايلات و ليس هذا التايل المنفرد، و نكرر العملية...



الإختيار الثاني – التعديل على الصورة خارج الكريستال تايل

نفترض أننا نريد مثلا استخدام برنامج صور عادي (مثل ال Paint أو GIMP أو Photoshop و ما شابه) نتصرف في الصور على هذا التايل.

قد يكون هذا لعدة أسباب، إما لأن هذه البرامج المختصة في التعديل على الصور تتيح لنا هامشا من الحرية أكبر بكثير من الكريستال تايل.

و إما لأن لدينا صورة خط معرب أو جاهز على القرص الصلب في شكل صورة BMP/PNG الخ..


الحل إذن مع هذه الأزرار:


ماذا تفعل هذه الأزرار؟

= زر النسخ (Ctrl+C). هذا الزر يسمح لك بنسخ التايل الوحيد الذي اخترته... أو مجموعة التايلات التي اخترتها،

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

يمكنك الآن فتح برنامج رسوم آخر مثل الفوتوشوب أو ال Paint و أن تختار اللصق Paste (Ctrl+V)

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

= التصدير: هذا الزر يقوم بشيء مشابه، لكنه يصنع ملف صورة BMP يمكنك تخزينها على القرص الصلب فيها التايلات التي اخترتها.

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


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

يعني، لو كانت صورة بالأبيض و الأسود، يتم تجنب استعمال أي ألوان أخرى عدا هذه الألوان (كي لا تفسد الصورة عند اعادتها للكريستال تايل).

و لذلك وجب وضع حدود للألوان المسموح بها في الصورة، مباشرة بعد لزق الصورة لوحدها، أو فتح صورة قام الكريستال تايل بتصديرها:

في النافذة، يتم اختيار Exact Palette.

يتم اختيار Generate optimum palette ثم تحديد عدد الألوان المسموح بالضبط (لو كان أبيض و أسود فقط، نعمل 2)

كما يتم استخدام فرشاة على شكل بيكسل.


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

ثم نذهب للكريستال تايل و نختار التايل الذي سنعوضه بشكله الجديد (إن كنا سنلصق مجموعة من التايلات، نختار تايل وحيدا في الركن أعلى اليسار يبدأ منه الصاق الصورة).

نختار اذن واحدا من هذين:

= زر اللصق (Ctrl+V). كي نلصق صورة نسخت من قبل (سواء من الكريستال تايل أو من برنامج رسوم آخر) لنلصقها في التايل الذي اخترناه.

= التوريد، كي نفتح صورة BMP/PNG الخ، مخزنة في القرص الصلب، و نضعها في التايل الذي اخترناه.

طبعا، لو نسينا حكاية الألوان فستفسد الصورة.



لكننا وجدنا فقط الخط الصغير في الروم... أين الخط الكبير؟

سأقوم أولا بإختيار Palette ثم TLP من هنا:

لأن جدول الألوان الجديد الذي صنعته عوض جل الألوان ما عدا 3 باللون الأزرق.

و هذا ما قد يجعل البحث في الروم عن خطوط جديدة مهمة صعبة نظرا أن الشاشة ستكون زرقاء منيلة و لن تساعدنا.

الأفضل العودة للجدول العشوائي الذي يظهر كل تلك الألوان المتنوعة.


و كذلك، نغير هذه من Palette إلى Properties:


نتأكد أننا في وضع إظهار جميع التايلات، باستخدام الزر F5.

(بالمناسبة، F6 يظهر لنا وضع الهيكس، و F8 يظهر لنا تايل منفرد مع خاصية الرسم عليه)

سنعود أين كنا قبل قليل


ننزل إذن في الروم.


هذه الأزرار التي نستخدمها في لوحة المفاتيح لأجل هذا الهدف:

فوق / تحت / يمين / يسار / PgUp / PgDown : التنقل داخل محتويات الروم

Shift+فوق / Shift+تحت / Shift+يمين / Shift+يسار :

كم من مربع (تايل) في السطر/العمود الواحد يظهر على الشاشة

(مثلا أستطيع في الصورة أعلاه التخلص من الفراغ الرمادي هكذا)


نواصل الضغط على "تحت" و استعمال الأزرار الموضحة أعلاه كي نبحث عن أي رسوم متوفرة في الروم.

لو وجدنا مكان رسمة مثيرة للإهتمام، نقوم بتدوين مكانها، و هو العنوان الذي أمام offset (مهم للغاية!)


(نسخت و لزقت هذا الجزء من أعلى)

لكننا لن نبحث طويلا... تحت هذا الخط مباشرة، يوجد أمر مثير للاهتمام:



هذه الحروف هي بالتأكيد نفس الخط المستعمل هنا:


لكنها لا تظهر بشكل صحيح – لأنها مقسمة على جزئين.

و بالتالي، فإن تعديلها غير مريح و هي على هذا الشكل.

السبب هو أن أبعاد التايل هنا هي 8×8 في حين أن الحرف ارتفاعه (height) الصحيح أكبر من 8

لكن بما أنه يظهر كاملا أفقيا، فهذا يعني أن العرض (width) صحيح و بالتالي يساوي 8.


كي نغير عرض و ارتفاع التايل في الكريستال تايل بسرعة، نضغط في لوحة المفاتيح ثنائية Alt مع أحد أزرار الإتجاهات الأربعة:

Alt+يمين/يسار = تغيير العرض (width)، البعد الأفقي للتايل.

Alt+فوق/تحت = تغيير الإرتفاع (height)، البعد العمودي للتايل. و هذا فقط ما سنفعله (لن نغير العرض لأنه صحيح هنا)


اذن، نضغط Alt+تحت كل مرة نقرة، و نراقب كيف تتغير قيمة height هنا:


نزيد قليلا القيمة... بدأنا نلاحظ حركة في الحروف و كأنه درج نازل ثم يبدأ في الانبساط شيئا فشيئا و الحروف تتوضح في الأثناء...


و عندما نصل للقيمة 16 (طبعا، كل خط لعبة له أبعاد مختلفة) سنرى شيئا كهذا:


هناك أجزاء منقوصة من الحروف،

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

الآن حان وقت ضغط Ctrl+يمين/يسار (تصحيح البيتات) لتوضيح الصورة، و النتيجة ستكون:


(لو حصل أي مشكل في أثناء استخدام الزر ctrl، يتم الذهاب إلى Tile Form في الصورة و تغييرها الى GBA 4bpp)


نقوم بتغيير الحرف A في الخط الكبير كالعادة إلى حرف عربي.

لكن حذار! يجب أن تكون جميع الخطوط تستخدم نفس ترتيب الحروف

(نفس الحرف العربي يعوض نفس الحرف اللاتيني في كل الخطوط) و الا كانت الكارثة.

بما أننا استخدمنا في الخط الصغير شكل الحرف (ـأ) همزة القطع على الألف في آخر الكلمة،

نحرص على استخدام نفس الحرف تماما مكان A الخط الكبير.


أترك لكم المجال للقيام بذلك حسب ما جربناه في السابق:



و بالمناسبة يوجد خط ثالث مباشرة بعد هذين الخطين.

أترك لكم تعديل الحرف A منه ليصبح الحرف (ـأ) أيضا. (يمكنكم النسخ و اللزق)


نذهب الى File و نعمل Save As لنسجل ما عملناه، مثلا تحت اسم test.gba


و عندما نفتح الروم الجديدة في المحاكي ونجرب اللعبة...

ظهر تغيير في الخطوط!

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


شرط التعريب هو أن نتمكن من تغيير:

النصوص + رسوم الخط

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


ثالثا – تحضير جدول التحويل التابع لبرنامج محول الحروف


الآن، يجدر بنا أن نضيف بقية حروف الخط العربي،

لكن لو قمنا بذلك عشوائيا فلن يكون وراء هذا فائدة.

الآن، سنمر للمرحلة الثالثة،

التي سنستخدم فيها الكريستال تايل طبعا لإضافة بقية رسوم الحروف، لكن أيضا (و هذا الأهم)...

إعداد جدول الحروف العربية.



سنصمم أولا خطنا العربي.

كيف يمكن لنا أن نصممه؟


اللغة العربية بها 28 حرفا (من الألف للياء).


كل حرف من هذه الحروف لديه 4 أشكال ممكنة حسب مكانه في الكلمة

سواء أول (عـ) أو وسط ( ـعـ ) أو آخر ( ـع ) الكلمة أو منفصلا ( ع ).

كل شكل لديه رسمه المختلف، و نسمي كل واحد "محرف" و جمعها "محارف".


نضيف إلى ذلك أشكالا مختلفة من حروف معينة مثل:

التاء ( ـت ت ـة ة )

الهمزة (ء ـى ى ئـ ـئـ ـئ ئ ؤ ا أ إ آ ﭐ ).


و نضيف الثنائيات، و هي عديدة جدا

(مثلما في لفظ الجلالة "لله" الذي يكتب بشكل مختلف).

لكن الضرورية منها فقط في أي خط،

و التي سنكتفي بها، هي رموز اللام ألف ( ل + ا = لا ) بأنواعها ( لا لأ لإ لآ ).


على هذه الوتيرة نبلغ حوالي 125 محرفا.

لقد تجاهلنا مشكلة الحروف الاضافية مثل مثل پ (p)، ڤ (v)، گ (g) و ما شابه

للرمز إلى بعض الأصوات الأجنبية الغير متوفرة في العربية.

كما تجاهلنا مشكلة اضافة التشكيل، مثل الفتحة و الضمة و غير ذلك. (ربما نتطرق اليها لاحقا؟)



لكن هل وضع كل هذه الحروف ممكن في برنامج لعبة

صمم فقط ليحتوي 52 حرفا لاتينيا مع حوالي 10 إلى 20 رمزا آخر؟

في الغالب، هذا غير مناسب لعدة اعتبارات.

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


حلول التقليص في عدد المحارف


التنازل المنعدم: الخط يحتوي كل شيء

الحروف بالمحارف الأربعة

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

الحروف الخاصة بالأصوات الأجنبية

تشكيل الحروف

ثنائيات الحروف

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

الخ...


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

بدون إضافة التشكيل (الفتحة، الضمة ...) ، أو ثنائيات الحروف مثل (في، لمـ ، لله ...) ما عدا اللام ألف (لا).

(125 رمز على الأقل)...


هذا المثال لخط أبعاد حروفه 12×12 بيكسل.


التنازل الثاني: رسم وضعيتين لكل حرف،

ما عدا بعض الإستثناءات (ع/غ 4 وضعيات، ط/د/ر.. وضعية واحدة)

(حوالي 72 رمزا، 62 بتبسيط أشكال همزة القطع و اللام-ألف)...

هذا الحل الأنسب لمعظم الترجمات.


هذا المثال لخط أبعاد حروفه 8×12 بيكسل،

ذيل حرف السين و الصاد آخر الكلمة رمز منفصل.


= جـ أول الكلمة

= ـجـ وسط الكلمة

= ـج آخر الكلمة

= ج منفصلة

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


التنازل الثالث: رسم وضعية واحدة لكل حرف، مع استخدام الذيول

للحصول على شكل الحرف آخر الكلمة، هناك 3 رموز منفصلة لذيول الحروف تضاف الى تلك الوضعية.

(حوالي 50 رمزا، 44 بعد تبسيط أشكال الهمزة و اللام-ألف)...


هذا المثال لخط أبعاد حروفه 8×16 بيكسل،

هناك ثلاث ذيول و هي ذيل الباء، ذيل الجيم، و ذيل السين – و رمز الذيل يوضع بعد الحرف و يحتسب بحد ذاته فراغا.


ذيل الباء: ينفع مع الحروف ب، ت، ث، ف، ق، ك، ل، ن.

+ =

+ =

ذيل الجيم: ينفع مع الحروف ج، ح، خ، ع، غ، م.

+ =

ذيل السين: ينفع مع الحروف س، ش، ص، ض.

+ =


التنازل الرابع: رسم وضعية واحدة لكل حرف، دون ذيول.

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

هذا الحل قد يصلح مع أنواع من الخطوط مثل الخط الكوفي، لكنه يغير تماما شكل الحرف.

ما قد يجعل النص صعب القراءة.

(حوالي 32/34 رمزا)


هذا المثال لخط بأبعاد 8×16 بيكسل، مركب من أشكال حروف لاتينية.

و هو غير محبذ الإستعمال بسبب صعوبة قراءته.


و هذا مثال لخط 8×8 بيكسل.

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

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


التنازل الخامس: الإستغناء الكلي عن بعض الحروف.

لأجل سلاسة النطق في بعض القصائد للضرورة الشعرية،

أجاز قدماء العرب قلب بعض الحروف و الهمزات إلى حروف غيرها.


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

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

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


و من بين الحروف التي يمكن حذفها في هكذا حالات قصوى هي كالآتي

مع ذكر التعويض الممكن لها.

طبعا هذا قد يؤدي في بعض الحالات الى التباسات (من نوع "ذبابة/دبابة")

ما قد يستدعي جهودا من كاتب النص المترجم أن يتجنب بعض الكلمات.


الحرف / الرمز

التعويض

ث

ت

ذ

د

أ إ آ

ا

ؤ

و

ئـ

يـ

ئ

ىء

ي

ى

ة

ه

لا لأ لإ لآ

لـا

؛ ؟

...



اختيار التنازل و نوع الخط


خط اللعبة التي لدينا هو هكذا:


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

مثل علامات التنقيط (طبعا سنغير بعضها نظرا أن علامات التنقيط العربية معكوسة).

أو الأرقام، و هي ضرورية جدا طبعا!

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

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


سننظر فقط إلى المجال الذي فيه الأحرف، و نحاول أن نحسب كم رمزا متوفر لنا.

ابتداء من الرمز أروباز (@) لدينا على الأقل 4 سطور كاملة (و كل سطر من 16 رمزا) من رموز لا تستخدمها اللعبة الا حروفا

و الكثير من الرموز الأخرى المتاحة لنا سواء في الأعلى أو الأسفل و التي لا استعمال آخر لها.

لدينا على الأقل اذن 64 رمزا و كمية أخرى في الأسفل.


نقوم أولا، كما سبق و جربنا، بتجربة تغيير النص في برنامج هيكس

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

و عندما نتأكد، نعتبرها رموزا متاحة، و يحين الوقت للمرور للمرحلة التالية.


64 الى 70 رمزا...

سنكتفي بعمل خط يقوم بالتنازل الثاني.

سنختار إذن خطا كهذا.



لاحظ رمز الذيل بعد الحروف س/ش/ص/ض.

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

(في الحقيقة يسعها، لكن النتيجة بشعة قليلا مع هذا التصميم بالذات)

فإن تلك الحروف الأربعة مخزنة على جزئين:

جزء رئيسي،

و جزء ذيل صالح لجميع تلك الحروف الأربعة.


مثلا:

+ =

+ =

+ =

+ =


بخصوص رسم الحروف العربية


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


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

بعبارة أخرى...

جميع الحروف مرسومة على نفس خط القاعدة،

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


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

مثلا في حالة حرف وسط الكلمة، فهو يخترق كامل التايل من الجهة اليمنى لليسرى، في نفس المواضع.



أيضا، نحاول ترك سطر بيكسلات فارغ على الأقل فوق الحرف (أو تحته)،

و ذلك لتفادي تلامس حروف السطر بحروف السطر فوقها،

خاصة عندما يتم التلامس في النقاط على الحروف.


هذه القاعدة لم ألتزم بها كثيرا مع هذه الخطوط في الأمثلة هنا،

و قد يكون الالتزام بها صعبا قليلا في حالة الخطوط بارتفاع 8 بيكسل

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


ادخال صورة الخط المعرب للروم


أولا، في الكريستال تايل، نعمل File/New/8Mbits لصنع ملف فارغ، و نحتار وضع التايل (F5).

نختار وضع GB2bpp (بما أنه يعطي 4 ألوان، و صورتنا للخط فيها 3 أسود الخلفية و أبيض الحرف و أحمر الظل).

نختار Palette

و تحتها نختار Palette/Gray Division كي تصبح كل الألوان في الصفة الأولى سوداء.



ثم هنا:


جدول الألوان الحالي المعمول به الآن هو الأربع ألوان الأولى.

ننقر نقرتين على كل لون من هذه الألوان الأربعة، لنحصل على الألوان التالية:

أسود – أبيض – أحمر – أخضر.



الألوان الثلاث الأولى مستعملة في صورة الخط (اللون الرابع غير مهم، المهم أن يكون مختلفا عن الألوان الأخرى، لذلك أخذته أحضر)

الآن بما أن ألوان الصورة كلها صارت في الكريستال تايل، نستطيع النسخ و اللزق.



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



النتيجة... غير مناسبة تماما.

كل حرف في الخط يفترض أن يكون تايل منفرد بأبعاد 8×16 بيكسل (يعني: العرض (الأفقي) 8، و الإرتفاع (العمودي) 16).

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

هو الآن 8×8 بيكسل لذلك كل حرف صار مقسما على جزئين.




لكن لا يهم كثيرا في هذه الحالة.


أمر أخير نقوم به الآن، سنعود لجدول الألوان، و نغير اللون الأسود الأول، ليصبح اللون الأزرق الفاتح.

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



الكريستال تايل لديه عادة سيئة جدا،

كونه يتوقف عن العمل و يضيع كل ما عملت عليه عندما تنفذ منه الذاكرة.

و هذا يحصل كثيرا لو اشتغلت عليه لمدة مطولة من الوقت.


لذلك حاول تسجيل عملك بصفة دورية.

(لا داعي لتسجيل هذا الملف تحديدا، هو مسودة وضعنا فيها الخط).

أيضا، لو سألك و قال لك file outside changed ? فاختر No

لو كنت لا تفتح ذلك الملف الا في الكريستال تايل، و الا فسيضيع شغلك.


لا تغلق هذه النافذة مؤقتا,

يمكنك العودة لها من قائمة Window.


نعود لروم الشامان كينغ، و تحديدا جزء الخط الكبير.

يمكنك نسخ القيم في الصورة اسفله لبلوغ المكان بسرعة:



اذهب لـ Palette

غير Palette / Grey Division

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

اللون الأول هو اللون الشفاف و هو أزرق،

الألوان التي رسم بها الخط تغير لتصبح حرف أبيض و ظل أحمر،

و جميع الألوان الأخرى أسود.



نعود للنافذة التي بها الخط العربي، و نضغط دون ترك زر الفأرة الأيسر، كي نختار الأربعة أسطر الأولى.

نضغط زر النسخ.

نعود للنافذة التي بها روم الشامان كينغ، ننقر فوق تايل رمز الأروباز (@) وحده ثم نضغط زر اللزق.

عندها الأسطر الأربعة من الخط العربي ستعوض الأسطر الأربعة اللاتينية ابتداء من رمز الأروباز. هكذا:



تايل علامة الحذف، أو الثلاث نقاط متتابعة (...) قد يفيدنا.

لكن لو لزقنا بقية الحروف سيحذف.

يمكن نسخه و لزقه في مكان آخر، مثلا لتعويض الأبستروف (‘) الغير مستعملة في اللغة العربية.

لو أردتم القيام بهذا استخدموا أزرار النسخ و اللزق.

لن أقوم بهذا حاليا.


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

في روم اللعبة، أختار رمز اليورو (€) وحده، و أضغط زر اللزق.

سيقع لزق الحروف العربية.

و بذلك نكون أنهينا مع هذا الخط.

لكن هناك خطان آخران!



الخط الثاني، و هو نسخة طبق الأصل من هذا الخط، يوجد ابتداء من الأوفسيت

A330C

يمكنكم نسخ الخط الأول إليه بعد الانتهاء منه، بكل بساطة.

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


أما الخط الآخر، فهو خط صغير في العنوان

9D2CC

و يجب الآن تغيير الأبعاد إلى 8×8 عوض 8×16.

هذا الخط يحتاج تصميما جديدا لخطه العربي.

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


نقترح هذا الخط بالنسبة للخط الصغير.

يمكنكم تكرار نفس العملية معه للتعود على الطريقة.




إعداد جدول تحويل الحروف العربية


نقوم أولا بتحميل برنامج محول الحروف، في أحدث إصدار له.

و هو من برمجة الأخ العزيز أحمد الذي عرب الريزيدنت ايفل و القضية الأولى من إيس أتورني على DS.

و بفضل جهوده صار تعريب الألعاب أقل تعقيدا بكثير من قبل.

و ذلك من هذا الرابط.


نفتح المجلد الذي به برنامج "محول الحروف".

نختار الملف LetterConvertor.accdb

هذا الملف نغير اسمه كما نريد. سنختار تسميته باسم اللعبة ShamanKingGBA2 مثلا.

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


لفتح هذا النوع من الملفات نستعمل برنامج مثل Microsoft Access (نسخ 2007 فما أعلى)،

أو ما يعادله من برامج Open Office.

لكن الآن... سنستخدم برنامج MDB Viewer Plus لأنه مجاني و حجمه صغير جدا.

نقوم بتحميله من هذه الصفحة ثم الضغط على زر Download ZIP.


نفتح الملف LetterConvertor.accdb

نضغط موافق على أي شيء أمامنا، ثم نضغط Auto size columns

كي تظهر لنا بقية محتويات الملف.

الزر (+) يضيف أسطرا جديدة، في حال ما أردنا إضافة حروف أو رموز.

ملاحظة: أي تعديل نقوم به سوف يسجل على الفور في الملف.



هذا الملف إذن يساعد على تحويل الحروف العربية الى حروف انكليزية.

كل محرف عربي من المحارف الأربعة له شكل مختلف، أي رمز مختلف.

و كل رمز منها سيعوض حرفا انكليزيا.

إذن، أمام كل حرف عربي، نكتب بماذا سيعوض.


كيف شكل هذا الملف؟


هناك صفحتان:

Letter للحروف العادية،

و Multi للثنائيات (مثل رمز اللام ألف "لا"، و غيره).


كل صفحة تحتوي على 5 أعمدة.


العمود أقصى اليسار:

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

تحت هذا العمود نضع جميع الحروف العربية، الأرقام، الرموز، و حتى الحروف غير العربية لو أردنا استخدامها (لأزرار التحكم مثلا)...

لأن أي رمز ننساه هنا سيتم حذفه من النص بعد تحويله.


و أمام كل هذا هناك 4 أعمدة:

Initial (أول الكلمة)

Medial (وسط الكلمة)

Final (آخر الكلمة)

Isolated (منفصل)


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


لننظر هنا مثلا، في مثال مشروعنا هذا.


سيكون شكل سطر حرف الغين (غ) مثلا هكذا:

Initial

Medial

Final

Isolated

Letter

`

a

b

c

غ


إذن، نقوم بتعديل جميع محتويات ملف تحويل الحروف LetterConvertor.accdb

و جميع الأسطر، حسب الصور أعلاه – مع الانتباه من الفراغات!

و عندما ننتهي نغلق البرنامج (لأن أي تعديل يسجل فورا).

و نمر إلى المرحلة القادمة.



ملحوظة مهمة للغاية: جميع الرموز اللاتينية التي استخدمناها للحروف العربية،

سواء في الروم أو جدول محول الحروف (accdb)، يجب أن تكون موجودة في ملف التيبل (tbl) الذي أعددناه سابقا.

إن لم تكن موجودة، يجب أن نضيفها، و نستعملها هي بالضبط في جدول محول الحروف (accdb).


لمزيد الفائدة، سأرفق ملفي التيبل و محول الحروف مع الدرس.


أيضا، الثنائيات و الثلاثيات و غيرها يجب أن تكون مرتبة من التي بها أكثر حروف إلى التي بها أقول حروف،

و حسب الأولوية (مثلا، سطر "لا" يجب أن نكتبه قبل سطر "الـ" ، كي لا تحول كلمة "الا" هكذا "الـا").


رابعا – استخدام محول الحروف لتحويل النص العربي إلى نص قابل للإدخال في الروم


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

قد قمنا بترجمة تلك النصوص إلى العربية و كتبناها في برنامج على الكمبيوتر لمعالجة النصوص،

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


كيف ندخل ترجمتنا العربية للروم؟


النص العربي الذي عندنا في برامج الويندوز غير صالح للإستعمال المباشر في الروم،

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

السبب بسيط جدا.


نحن نعلم أن جميع البيانات على الكمبيوتر و خاصة النصوص،

سواء الألعاب أو حتى النص العربي في الويندوز نفسه،

تستعمل البايتات، حيث كل حرف لديه قيمة بايت معينة تعوضه.

لكن في حين أن الانكليزية تستعمل ترميز ASCII الذي يستخدم بايت واحد لكل حرف،

فإن هذا الترميز لا يتيح الا حيز 255 حرف فقط، أي أنه لا يسمح بوجود لغات أخرى.


أغلب طرق ترميز النصوص غير الإنكليزية على الويندوز تستعمل 2 بايت لكل حرف.

في حالة اليابانية، فهناك أحد هذه الأنواع و هو الأشهر، هو نظام Shift-JIS.

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

الذي في جل الأحيان غير مستعمل في الألعاب.


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

طبعا –

هناك استثناءات فيها دعم جزئي لليونيكود حيث تظهر الحروف العربية فعليا لكنها مفككة أو معكوسة.

و قد يكون الدعم هذا كليا و موجودا و شغالا لكنه غير معلن (مثلا، جل ألعاب الأندرويد)

سنخوض في طرق التعامل مع هذه الاستثناءات في أمثلة لاحقة و أغلبها مع الكمبيوتر.

لكننا الآن، سنتعامل مع الحالة التي ستأتينا بصفة عامة: الغياب التام لدعم اليونيكود في اللعبة.


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

أسهل طريقة لذلك هي: استعمال الحروف الانكليزية على أساس أنها حروف عربية (بعد تغيير خطها).


رأينا في أول هذا الباب مثالا من هذا:


صورة الخط في الروم

النص في الروم

ماذا يظهر في اللعبة


The house door/

is open?#


The house door/

is open?#

(نفس الجملة الانكليزية،

كتبت بحروف عربية بلا معنى)


qaoQa dbc/

?lYeKS#

(جملة عربية مقلوبة

كل سطر قلب وحده)

(جملة انكليزية جديدة

ظاهريا بلا معنى، لكن مع الخط

العربي تظهر لنا جملة عربية)


نحن نستطيع فقط ادخال نص انكليزي الى اللعبة.

يمكننا أن نحفظ كل حرف انكليزي ما هو شكل الحرف العربي الذي يعوضه،

لكن حفظ أكثر من 50 رمزا ليس بالأمر العملي و قد نقع في أخطاء كثيرة،

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

لكن معربي موقع الوهج و الومض عندما بدؤوا محاولاتهم الأولى كانوا بهذا الجنون – لأنه لم يكن هناك حل أفضل.


بعد هذه السنوات الأولى الظلماء،

قرر عدة هواة برمجة برامج على الويندوز تقوم بتحويل نصوص عربية من الويندوز الى النصوص الانكليزية التي تقبلها الألعاب

و ذلك ما اختصر الوقت و التعب الزائد كثيرا... من بين هذه الأدوات:


مساعد الوهج

الوحيد الذي يعمل كبرنامج هيكس و يعدل مباشرة على الروم.

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

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

لكنه قد يكون مفيدا في حال ما لديك روم معربة و تريد تصحيح نصها.

طالما استخرجت جزءا من الملف فقط و فيه النص، نظرا لمشكل حجم الروم المذكور أعلاه.

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


المعرب

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

لا يعمل على اصدارات الويندوز 64 بيت، و لا يحول الثنائيات جيدا (كاللام ألف)، و يعتبر علامات التنقيط تلتصق بالحروف.

يحول لحالتي اتجاه النص.

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

يحتاج الى ملف قاعدة بيانات MDB فيها جدول تحويل حروف كما قبل قليل.


اصطفاف

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

محاولة لعمل برنامج اعداد النص المعرب للرومات، لكن في شكل برنامج على صفحة HTML على خلاف غيره.

غير معروف ان كان مازال قيد التطوير.


محول الحروف

يعتمد على نفس فكرة المعرب و يحسنها أكثر بكثير و يقضي على كل عيوبه.

يحول الى النص الانكليزي و حتى مباشرة الى رموز الهيكس.

و به خاصيات عديدة أخرى، مثل خاصيات موجهة لبرامج استخراج النصوص من الرومات مثل Atlas. (سنرى ذلك لاحقا)

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



سنستخدم محول الحروف.

نقوم اذن بفتحه.



في الوقت الحاضر، نحرص أن يكون الاختيار على English (أي أن نتيجة التحويل ستكون حروفا انكليزية)

ما يعني أن الخانة اليسرى ستظهر بالوردي.


بما أننا لم نغير برمجة اتجاه النص، فهذا يعني أن نص اللعبة بقي من اليسار لليمين.

لكن العربية تكتب من اليمين لليسار، أليس كذلك؟

يعني أننا يجب أن نعكس كل سطر من النص المعرب عند التحويل.

نذهب للإعدادات، و نتأكد أن "عكس تلقائي للنص" تعمل.

و في الإعدادات أيضا، نغير خط الخانة الانكليزية الى Courrier New لكي يسهل عد الحروف.


حسب ملاحظاتنا السابقة، فأقصى عدد حروف في السطر هو 27.

نكتب إذن 27 تحت "حروف السطر".

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

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

في حالة شامان كينغ 2، نظرا أن اللعبة في هكذا حالات قامت بتأمين نفسها، فهذا خيار جمالي أساسا.


و الآن، نكتب ما نريد تحويله في الخانة العربية الزرقاء.

على فكرة، لو تضغط "ملف" و "استيراد" و "ملف نص عربي"

فإنك تستطيع فتح ملف txt به نصوصك العربية و سيظهر في النافذة على اليمين دون أن تعيد كتابته.

هذا الاختيار نعمة بصراحة.


في حالتنا سنجرب فقط كتابة بعض الأسطر لترجمة هذه الشاشة:


يو... قرية دوبي تبدو غريبة

اليوم. هناك أمر غير عادي.


سطر 1 = 26 حرف

سطر 2 = 25 حرف

مبدئيا، مساحة النص كافية للنص المعرب.


نحاول اذن...

نكتب هذا النص في خانة محول الحروف، و نضغط "تحويل للانكليزية".



الآن، نعود لبرنامج الهيكس WindHex،

نفتح الروم و نذهب للعنوان الذي به النص أي EE3380

نفتح ملف التيبل الذي أكملناه كما يجب ليشمل جميع قيم الخط العربي (من 41 الى 88 هنا)


نعود لمحول الحروف.

بما أن أول سطر به 26 حرفا و ثاني سطر به 25 حرفا و أقصى حروف السطر هو 27،

سوف نضيف فراغا لأول سطر، و فراغين لثاني سطر،

و هكذا يكون هناك انطباع أن النص يبدو من اليمين لليسار.


بعدها، نختار السطر الأول فقط،

و نحرص أن عدد الحروف المختارة هو بالضبط 27.

لنختار بدقة، يمكننا أن نستعمل Shift + الاتجاهات.

بعد أن نختار، ننسخ بالزر CTRL+V.


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

نختار Paste To Current Location ثم To Text ليلزق لنا النص كما نسخناه.



ملاحظة، في حالات أخرى: تلاحظون أيضا أننا نستطيع أن نلزق To Hex الى خانة الهيكس،

و برنامج محول الحروف فيه خاصية تسمح بتحويل النص العربي مباشرة للهيكس،

بعد ان نكون وضعنا وضع قيم الهيكس مباشرة موضوعة بين سطرين |00| في جدول تحويل الحروف.


نقوم بكتابة رمز العودة للسطر بعد النص المدخل.

ننسخ السطر الثاني من محول الحروف

و نلزقه مباشرة في الرمز بعد رمز العودة للسطر.

و بعد هذا، نكتب رمز نهاية الجملة.


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

لعلي قد احتاج لاصلاح شيء ما لاحقا. طبعا هذه الفراغات لن تظهر.


كلمة AMIDAMARU مختلفة عن التي تظهر في اللعبة Amidamaru

(و التي على الأرجح مخزنة هكذا في مكان آخر و يجب أن أعدلها هناك)

إذن تغييرها هنا سيكون فكرة سيئة. أتركها إذن.


و الآن، نسجل عبر Save File و نجرب اللعبة.

و النتيجة...



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

و ثم تصحيحها في الروم نفسها (أي نعيد نسخ الكلمة التي فيها الهمزة الى الروم).


ثانيا كلمة أميدامارو غير مترجمة.

ثالثا علامات التنقيط التي لم نغيرها من الخط الانكليزي ليست على نفس استقامة الحروف العربية

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

رابعا الخط نحيل جدا و جراء ذلك غير واضح مع بعض الخلفيات الباهتة،

لذلك يجب عمل اطار حول حروفه كليا.


في العنوان 9AD90 هناك قائمة أسماء مستخدمة للحوارات،

و هي التي استخدمتها اللعبة هنا، اذن نغير اسم أميدامارو هناك ...


قبل عمل هذه التصحيحات بال WindHex،

يجب أن نتذكر أننا بعد أن سجلنا الملف فتحناه في برامج أخرى.

نذهب إذن إلى File ثم نضغط Reload Current ROM Data

قبل أن نواصل التعديل بالـ WindHex.


مازال هناك طبعا الكثير لتعديله في هذه اللعبة،

إذ أن بعض القوائم، اضافة لأسماء الفنون القتالية التي تظهر أثناء اللعبة،

كلها نصوص مخزنة في شكل صور.

يمكنكم البحث في الروم عن هذه الصور تحت GBA 4BPP كوضع تايل، ثم تعديلها.


و هكذا نكون انتهينا من هذه اللعبة.

لكن هناك أمر مخالف للعادة في هذه اللعبة نوعا ما:

عرض الحروف متساوي و ثابت لجميع الحروف.


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

حرف i عرضه أصغر من حرف m مثلا.

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

فالنتيجة ستكون شيئا من هذا القبيل:



حروف متداخلة مع بعضها،

و كثيرا ما عندما تتداخل تشوه الحرف الذي يسبقها

أو تحذف الجزء المتداخل كليا

و في كل الحالات فالحروف غير مقروءة.


الحل هو البحث عن قائمة أعراض الحروف، في مثل هذه الحالات.

ستكون هناك قائمة، غالبا تكون قريبة جدا من عنوان تايلات الخط،

و هذه القائمة هي عرض كل حرف بالهيكس، لكامل الخط.

و عندما نجد هذه القائمة، نغيرها لتناسب العرض الجديد للخط المعرب.


لنأخذ لعبة خطها متغير العرض. في حالة Drill Dozer مثلا،

الخط مخزن بهذه الطريقة:



كي نظهره بهذا الشكل الصحيح في حالة هذه اللعبة بالذات، يجب أن:

نكتب العنوان كما في الصورة (2D6224) – و الذي يمكن التوصل اليه بعد بحث بسيط

نختار الوضع VB 2BPP

نفعل القلب الأفقي للتايل Flip Horizontal

نختار أبعاد التايل 8×8 بيكسل

كل سطر يجب أن يكون فيه 16 تايل


نقوم بقياس عرض كل حرف هنا بالبيكسل.

في العادة نحاول ذلك برسم مستطيل أسود مكان حرف ما،

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

لكن النينتندو ساعدتنا جدا هنا، بواسطة الخلفية البيضاء وراء كل حرف.


نقوم بكتابة كل حرف و ما هو عرضه بالبيكسل.


, x / A B C D E

05 0A 08 07 07 07 07 07

F G H I J K L M

07 07 07 07 07 07 07 08


لو نلاحظ، فنحن كتبنا عرض ال 10 بيكسل التابع لعلامة الضرب،

باستخدام النظام الست عشري. أي أنها تكتب 0A.

و السبب أن قائمات قيم أغراض الحروف مخصصة لبرمجة اللعبة التي عادة تتعامل

بالنظام الست العشري في كل شيء.


و الآن في برنامج مثل برنامج الهيكس WindHex به وظيفة البحث،

ليس عن النص، بل البحث عن الهيكس (عبر Search / Search HEX)

نكتب في نافذة البحث مثلا


050A080707070707


و سنجد القائمة التي بها عرض جميع الحروف.

في حالة Drill Dozer هي موجودة قرب العنوان 2D7A24 (طبعا يجب رؤيتها بوضع الهيكس لفهمها)

في خانة الهيكس، ستظهر الأرقام التالية، و معها أرقام مثلها لجميع حروف الخط.


05 0A 08 07 07 07 07 07

07 07 07 07 07 07 07 08

07 07 07 07 07 07 07 07

07 08 07 07 07 07 07 07


نحن هنا فصلناها لأسطر منفردة لأن معناها أوضح بكثير هكذا،

خاصة مع النظر إلى الصورة.


طالما نحن نفهم مغزى هذه القائمة، نستطيع تعديلها بمجرد تعويض القيم الأصلية

بقيم عرض الحروف الجديدة المعربة التي أدخلناها للروم.

و هكذا، لن تتداخل الحروف من جديد.



و الآن، بما أن عندنا فكرة عن المبدأ، لنجرب مع أجهزة أخرى.

بناء على طلب رواد الصفحة، سنأخذ مثالا من النينتندو دي اس.


مثال أول – دراغون كويست 4 (نينتندو دي اس)


الروم التي سنحتاج إليها ستكون:

Dragon Quest IV (U)

لجهاز النينتندو دي اس.

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

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

الروم ستكون بصيغة nds طبعا.


هذه الروم تستخدم نصا انكليزيا.

سنلقي نظرة في المحاكي (DesMume، يحمل من Emucr كالعادة) على أول حوارات اللعبة.

و سنتخذ هذا الحوار هدفا مباشرا لنا.



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

بالمقارنة مع الجيم بوي أدفانس و السوبر نينتندو مثلا.


في حين أن تلك الأجهزة القديمة تخزن كل شيء كتلة واحدة (نص، صور، برمجة...)

و تضع لها مؤشرات أو بوينتر Pointer تشير لعنوانها أين تبدأ، كلما احتاجت إليها...


فإن النينتندو دي اس، و أمثالها من الأجهزة الجديدة، تقسم محتوياتها الى مجلدات و ملفات.

هذا الأمر يسهل علينا الكثير نظرا أن الملفات عادة أسماءها واضحة و تدل على محتواها.

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


من بين الأدوات المستخدمة لفتح رومات الدي اس و تفكيكها ملفات منفردة، نجد:

برنامج الكريستال تايل (الذي يفترض أن يكون عندكم) – عبر اختصار CTRL+N.

برنامج Tinke –


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

نظرا أنه بالتجربة مع شاشة اختيار الاسم يتوضح لنا أن اللعبة تستخدم قيم ASCII.

تظهر لنا نتيجة هنا:



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

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

نذهب الى Tinke

و نختار الملف و ننقر Extract.

الملف الذي سنحصل عليه صغير و سهل التعديل.


هذا الملف لم يكن مضغوطا، إذن لم تكن هناك حاجة لفك ضغطه عبر Unpack.

بالطبع كان يمكننا الاستغناء تماما عن الكريستال تايل،

نظرا أن Tinke نفسه يحتوي برنامج هيكس عبر الزر Hexadecimal

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

هو آمن نسبيا ان كنا نستخدم فقط الحروف الانكليزية).


لو نقوم بتغيير الملف في الخارج و نريد أن نعيد ادخاله في الروم، نضغط Change File.

طبعا لو كان الملف قد كان مضغوطا و فككنا ضغطه ب Unpack

يجب بعد التعديل على الملف الداخلي أن نضغط Pack لاعادة ضغط المجلد المضغوط الأب كما يجب.



ماذا لدينا عدا النص؟

الخط... و كلمة FONT الانكليزية هي "الخط" الذي نبحث عنه.



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

(هذا لن يمنع أي لعبة من عدم استعمالها، و استعمال خطوط غيرها)

و ننقر View لاظهارها و تعديلها:



نلاحظ أن الخطوط han10 و han12 (الذان هما نسختان مختلفتا الحجم لنفس الخط)

هما خطا النسخة الانكليزية و بالتالي هما فقط الذان سنهتم بهما.


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

و الميزة هنا أن كون الخط متغير العرض،

و الكريستال تايل يسمح لنا بتغيير قيمة العرض هنا.

(هناك ألعاب مثل البروفيسور لايتون تأخذ فقط رسم الخط و تحتقر القيمة المستعملة هنا للعرض

و تستعمل قيمة من ملف آخر عندها، لكن تلك حالات نادرة)


يمكننا كتابة نص في الأسفل لاختبار الخط كيف سيظهر في اللعبة.

فيما يخص القيم Width و Length فهي متعلقة بعرض الحرف.

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

و تلك القيمة هي العرض أفقيا بين أول و آخر نقطة في الحرف العربي.


إذن، سنجرب التعديل على هذين العنصرين (الخط و النص)...

كيف يمكننا ارسال ملف صورة لهذا الخط كي نعدله بسرعة؟


(بقية هذا الباب ان شاء الله تأتي تباعا، نظرا لضخامة حجم الملف)