I'm a native Arabic language speaker so I might answer some of your questions.
* The didactical symbols are not needed. They are very optional, like the furigana over the kanji in Japanese (and actually are written over letters, with a single exception). The vowels in Arabic are either short (didactical symbol only) or long (didactical symbol + letter "a","o","i") so they are omitted for practical reasons (they are used for little kids learning Arabic, or for some rare ambiguous obscure words): No need for them for 100%-pure Arabic words, and we just use long vowels for foreign words.
* The written Arabic is unified in all regions, period. The differences arise for each region when using informal spoken language, but spoken formal Arabic (written Arabic) is the same. Writing informal Arabic (Egyptian, Libanese, Algerian..) is just a silly idea. The Koran and the early literature works use the equivalent of Shakespearian English: obscure words but the general meaning can still be understood today. You just need a different dictionary (like Lisan Al Arab i.e.“Arabic Tongue”) to look them up, as there are many abridged versions for students on the market. It's the same language! When they call it "Modern" or "Traditional" it just means whether they are teaching Arabic for communication purposes, or for cultural/historical/religious research purposes.
*Koran specific- didactical symbols are not used outside Koran, not even when quoting it. They work pretty much like punctuation (to preserve its meaning), as it wasn’t used until 1720 or so when printing machines were first converted to Arabic in Liban. Instead, Arabic used interrogation/exclamation articles, like the Japanese end-sentence interrogative “ka”.
*
I’m getting carried away here. So, about technical issues on the hacking side: None of the officially released console games account for Arabic language script/font/linked letter/orientation. So we need to fix some problems:
=
1 - The Arabic is written from right to left, horizontally, unlike in all known videogames (barring Akira Tago DS, Goemon DS, Sigma Harmonics, and a few other Japan-only games which DO write from right to left, but VERTICALLY, which just opens a whole array for even more problems). The numbers however, are written in the occidental orientation (left-to right).
Two solutions:
a- Make it so that the letters start appearing from right to left. The ideal solution, yet it requires ASM hacking.
Such a method would be essential in games like RPG, or anything where text appearance on-screen timing is essential (Voiced dialogue, Mother 3 where timing was emotionally important).
I am currently at loss what to do to translate a certain JP-only Level-5 late DS RPG since i lack the know-how to do such a thing, and to my knowledge, the few Arabic fan-translations that happened did not use this method either for the same reasons. If you can help this tormented soul of yours faithfully, please don’t refrain from doing so.
The general idea is to hack arm7 or arm9 (dear god) to make the starting point at the right edge. The increments must be substracting inside of adding, like you said. The numbers however are from left-to-right (they are variables), and so are some words (item names, etc) so we must implement a control code to render specific portions in that orientation, and add a routine to convert everything unter theses control codes in the right-to left orientation (i.e. reverse everything between them) then output everything from right-to-left. My god, how do I implement ASM routines?
b- Leave it as it is, from left to right. Do not require ASM hacking.
The letter order in the Arabic script is reversed before being inserted in the rom. It shows up as if you selected it and Ctrl+L it. Unfortunately, so far all the fan-translated to Arabic games use this method: Link Awakening, Minish Cap Partial Patch, Pokemon Ruby Partial Patch, Yoshi Island, and the Captain Tsubasa Famicom game, and a handful other games I can't remember right now.
While by far the worst method, it can be useful if you can set the text speed so that it shows up immediately (like in Tales Of games), alleviating it a bit. But in most of the cases, it only makes most games borderline unplayable: try to imagine the last word being shown first.
=
2 - Didactical symbols: unneeded.
If it is a Japanese game with furigana showing on top of characters (for example Phantom Hourglass, all Layton games, Ninokuni...) it's possible to implement them: one can simply edit the furigana font to show all diactrics (except the "i" diactric, as it shows under the letter, so it's better to just omit it).
An alternate solution working for all games would be to copy the whole font six times with each copy having a different diactrical symbol (short “a”, short ”o” , short ”u” , stress (like the small “tsu” in Japanese), and nothing), if you enjoy doing so, and have a Japanese font: you can edit the kanji to insert your duplicate font sets.
Personally, I would just give up on the didactical symbols crap, but it’s up to you.
=
3 - Naming Screens
Naming/Password screens must be tweaked so that: (ASM hacking required, unfortunately)
a- align the letters showing up from right (first letter) to left.
b- the first inputted letter is actually stored as the last one in the password/name data, and so on..
Again, I don't know how to do it. Anyone willing to help with ASM know-how, please contribute.
Alternatively, we can just add all states as the letters on the digital.keyboard. problem: the naming screen hasn't enough space to use all "states" of letters. See below for a solution.
=
4 - Arabic uses attached letters.
An Arabic letter has four different states: linked with next char, linked with previous char, between two chars, and isolated. Some letters even have variations that are considered in typography separate letters, like "a", and "soft t", and there are 28 letters to start with.
It is just better to use an English font (ideally including European chars, or better, a Japanese font) and replace each character from it with an Arabic "state" for all letters. About the characters appearing linked part: AFAIK, for DS games using NTFR font, you can just use Tinke, and set the Width and Length for a character at the same value (but sometimes even this is not enough without ASM hacking), and modify the font from the English/Jap letter to an Arabic letter "state". Tahoma 12 would be the ideal font to use as a basis for Arabic characters.
Then program a custom text convertor, to convert your translated normal linked Arabic script written in Microsoft Word, to garbled English/Japanese text to insert in the game, so that it will show as intended in-game as normal Arabic text. You know about the crappy Wall-E game that was released officially in Arabic? It just uses that method!
Drawbacks: Naming screens would be a huge mess. Unavoidable without implementing complicated routines to actually choose the correct “state” for Arabic letters automatically depending on their position in the word.
My solution:
Basic Arabic alphabet has 28 letters + 5 letter worth of variations = 33 * 4 states = 132 characters (more or less, as there are letters with only two “states”). We should modify the font, but the games depending on the developer (western or Japanese) uses different fonts and need different strategies.
a- European Latin Font available: Most western developed games unfortunately have this, probably this one too (but not My Japanese Coach, from the same series).
The font set has 26*2 letters + 56 symbols = 108 characters. If there is no other choice, you'll have to throw away some letter "states", but the text will look ugly. Do this with rarely used letters, or ones with similar "initial" and "intermediate" states. The article "THE" ("al")however, MUST be included as a character, to save space.
b - Japanese Font Set (best thing you can hope for): the font set has: ( 23*2 letters with 1 alternate form + 5*3 letters with TWO alternate forms + 19 letters = 80 ) * 2 (katakana/hiragana) = 160 (+4) characters , and this is the bare minimum found in every game made in Japan. That's not even accounting for the 52 letters of the alternate English set, or the kanji set (2500~7500, depending on the game).
So that all characters fit on naming screens, I suggest this: http://hpics.li/eefb5ba
Question for ASM experts: Can you just stick a JP font to a western game using ascii, or does it require more (gasp) ASM hacking?
You can add special letters for “P” and “G” (they were added to Arabic, much like Latin accentuated letters) , add as many two-letter combinations as you like, including "THE", all possible consonant + vowel pairs, and all grammatical suffixes/prefixes. This saves you enormous amounts of space. I showed an example of this in the included image with minimal number of letters used, but you can do better.
Of course, you can with this include English letters within Arabic script, which can get extremely useful sometimes.
==
Hope that answered your question. Sorry for the typo fest, everyone. It is actually spelled didactical symbols, but I’m in a hurry right now.
So..
Okay EbraamMorcos, I can't really help since I am myself ignorant in ASM hacking, and I have forgotten my Spanish lessons '
, but once I find a Japanese-to-Arabic/English/French translator (can anyone help?) to actually start tackling Ninokuni DS, I can at least provide you with the font once I work on it.
For now maybe should you actually contribute to your own project and rip the Spanish Text and start translating it to normal Arabic on Microsoft Word as a start, and trust me, that’s a lot of work. Get someone to help you on this tremendous task. Converting the Arabic script will wait.
You'll have to find out if your game supports Japanese text if you replace the font and replace English/Spanish text with Japanese as a start. If it is (hopefully, as you can’t just replace English letters, since you need both English and Arabic letters), you won't need further ASM hacks except for screens that require typing words, and text orientation (second biggest concern). Anyway, best of luck in your project!
So, anyone else can help with some tips on how to tweak the text orientation ASM part? Can't figure it out with Crystaltile : how should I do? Also, as a side note, I want to know how to edit textures stored in BMD0 3D-models, as my efforts with MarioKart Editor have proven unsuccessful. That would be very nice.