Advance Wars Days of Ruin/Dark Conflict language mod

Discussion in 'NDS - ROM Hacking and Translations' started by Gilberd, Sep 17, 2010.

  1. Gilberd
    OP

    Member Gilberd GBAtemp Regular

    Joined:
    Jan 29, 2010
    Messages:
    157
    Country:
    Taiwan
    you all know that these games change the language depending on the firmware
    and that there are action replay codes to force a language
    but can i go into the game and change what language boots for which firmware so I do not have to use a code?
    My firmware is japan and without a code it boots the game in english
    I personally would want the game to boot in japanese
    can some one help me with this?
    also can you actually try to help me and not give me an obvious answer or question my motives
    no trolls please
     
  2. CrimzonEyed

    Member CrimzonEyed GBAtemp's Assassin

    Joined:
    Sep 3, 2007
    Messages:
    2,486
    Location:
    The Shadows
    Country:
    Japan
    download the japanese version of the game maybe?
     
  3. Gilberd
    OP

    Member Gilberd GBAtemp Regular

    Joined:
    Jan 29, 2010
    Messages:
    157
    Country:
    Taiwan
    umm maybe the japanese version has never been released
    that's what I am trying to do change the EUR version into a japanese version
    I have a code to enable japanese language but I need to be able to make it boot in japanese without a code
    I already changed the title screen
     
  4. Lumstar

    Member Lumstar Princess

    Joined:
    Mar 6, 2006
    Messages:
    3,531
    Location:
    Darling
    Country:
    United States
    Has anyone figured this out yet? It'd be nice having the language select restored to complete form. Nintendo did something to stop japanese in system settings, from enabling japanese correctly.
     
  5. ZAFDeltaForce

    Member ZAFDeltaForce Specialist

    Joined:
    Sep 9, 2006
    Messages:
    2,786
    Country:
    Singapore
    I don't think that's possible, you will need to input the code via Action Replay or flashcart to display the original Japanese text. Unless you hack the ROM, by which I won't be of much help

    Then again, the Japanese release was cancelled after several delays so don't expect a full translation
     
  6. Cid2mizard

    Member Cid2mizard GBAtemp Fan

    Joined:
    Aug 16, 2007
    Messages:
    330
    Location:
    Maubeuge
    Country:
    France
    Play with your original game !
     
  7. FAST6191

    Reporter FAST6191 Techromancer

    pip
    Joined:
    Nov 21, 2005
    Messages:
    21,698
    Country:
    United Kingdom
    I do not know why we are replying to a 2010 vintage thread but I will roll with it and provide nothing resembling a solution but a method to get there (we are in the DS rom hacking section after all).

    For what it is worth as far as I am aware the Japanese version was cancelled and tweaking the game to display the Japanese script like this is the only way to do it for this game- it is not a simple option we can select somewhere but an actual hidden thing only unlocked by AR codes (consider it a developer leftover similar to the stuff we were discussing later in http://gbatemp.net/topic/320192-japanese-programming-madness/ ). This possibly also makes it different to making a more general patching tool for other games that trigger from firmware (I have to analyse the codes) and especially if there is a workaround.

    The quick and dirty way is to use DSATM to patch in the codes to the rom.

    After this I would look at the cheats and see how they work
    From the GBAtemp XML database
    Code:
    [Advance Wars: Days of Ruin (U)]
    
    Language Mod Codes
    1
    
    Japanese
    22168F8C 00000000
    
    
    English
    22168F8C 00000001
    
    
    French
    22168F8C 00000002
    
    
    German
    22168F8C 00000003
    
    
    Italian
    22168F8C 00000004
    
    
    Spanish
    22168F8C 00000005
    
    
    
    http://doc.kodewerx.org/hacking_nds.html#arcodetypes
    Type 0x02
    8-bit
    2XXXXXXX 000000YY Writes byte YY to [XXXXXXX+offset].

    02000000h Main Memory (4MB) according to gbatek (linked in a moment- http://nocash.emubase.de/gbatek.htm )

    2168F8C is then the location. Curiously or perhaps not the codes line up with the firmware/cart header order of names (see gbatek- http://www.romhacking.net/documents/542/ ).

    Rom info thanks to NDSTS
    ARM9 source (ROM) 0x00004000
    ARM9 execute address 0x02000800
    ARM9 copy to address 0x02000000
    ARM9 binary size 0x00132438
    ARM7 source (ROM) 0x00283800
    ARM7 execute address 0x02380000
    ARM7 copy to address 0x02380000
    ARM7 binary size 0x00026DB8
    ARM9 overlay source (ROM) 0x00136600
    ARM9 overlay size 0x00000180
    ARM7 overlay source (ROM) 0x00000000
    ARM7 overlay size 0x00000000

    Alas ARM9 copy to address 0x02000000 + 0x00132438 (the size of the binary) gives 2132438 which is smaller than 2168F8C (and similarly for the ARM7 but I did not expect it to be there) and according to crystaltile2 the lowest overlay is found at 02169020 (which is very close indeed and probably chosen for that reason but still not there) so this cheat is not a binary patch cheat and you can not just patch a part of the ARM9 binary or an overlay based entirely upon the cheat. With all the above if I had to guess I would say that is the location the dump of the relevant DS firmware settings was held.
    Now the quick and dirty way (my usual preferred way as I am lazy) is to recreate the cheat idea (and what DSATM will most likely be doing) and patch something to constantly write it (I do not actually know if it needs to be constantly written or just there at boot/for a while) probably by hooking into the ARM7 or something ( http://crackerscrap.com/ see documentation).
    The not quite proper but still better than constant write method is to find the read function and force it to return a 0 or whatever you want it to be- this would be done by looking for the (hopefully it is just one) function to read it and forcing it to return your value of choice. There are probably slightly more elegant ways and maybe you can exploit part of the underlying function (in your case it might already assume it is zero aka Japanese and just have the function grab and carry from there but if you NOP it it will think it was always 0 or something- such are the options when playing ASM hacker) but that you will have to see once you see the function. There might be further implications in that you have to force the bit there (realistically it should have just let you use Japanese- forcing it to another language almost certainly took extra code to do) but cross that bridge when you come to it (or not if it will be a pain).
    The proper doing the job properly method is to find the thing that triggers the initial read function and stop it from doing a read at all and just using whatever you would have forced it to use.
    The crazy man way is to physically repoint everything but that is just silly, for many language set requests like this though we see the related method of deconstruct the rom and swap all the files out manually or relink them but this has troubles for some games if they change the font or text handling (Japanese to Roman character or other small glyph set languages being especially prone to it- see 16 bit to 8 bit text conversion hacks). The crazy man's genius cousin's method comes when the number here probably informs which pointer table to use for text and just jump straight to that but at this point in time you are just optimising the hack/game and probably only by about 20 instructions at best and probably about as many clock cycles when it comes down to it (most of which are probably already wasted displaying the company logos).

    I imagine it is a fairly similar method for any game that reads the firmware settings to choose a language.
     
  8. Lumstar

    Member Lumstar Princess

    Joined:
    Mar 6, 2006
    Messages:
    3,531
    Location:
    Darling
    Country:
    United States
    Perhaps there's a table somewhere in the game, with the list of which firmware language corresponds to each game language.
    We could be looking at a single byte hack which changes that pointer from "Japanese>English" back into the correct "Japanese>Japanese".
     
  9. FAST6191

    Reporter FAST6191 Techromancer

    pip
    Joined:
    Nov 21, 2005
    Messages:
    21,698
    Country:
    United Kingdom
    I have yet to test it fully but if you do really want Japanese and cheats are not an option but running a rom is then change the game as follows

    Offset 0E71E0 in the US rom to 0000A0E3
    It changes the first load of that area from a load memory (which is what the cheat changed) to a mov r0, #0x00

    Full credit to the cheat makers here though- all I did was track down the load of the area (static disassembly gave that and iDeaS run to line did the rest before watching it work a few times) and assemble the above opcode. I would like a more elegant solution but it appears anything other than 01, 02 or 05 which correspond to English, French and Spanish (otherwise known as the languages it officially supports) sends it through a massive loop (in both senses of the word). German and Italian are available in the EU release which is the usual multi5 anyway.
     
  10. Lumstar

    Member Lumstar Princess

    Joined:
    Mar 6, 2006
    Messages:
    3,531
    Location:
    Darling
    Country:
    United States
    Hey guys try this new patch out there. http://www.romhacking.net/hacks/1003/

    It's intended to restore most of Japanese.
    From my brief look, German and Italian both work too. Bringing the US game up to multi6 as it's called.
     
  11. Gilberd
    OP

    Member Gilberd GBAtemp Regular

    Joined:
    Jan 29, 2010
    Messages:
    157
    Country:
    Taiwan
    hey that's cool man i never expected that this would actually happen lol
    but unfortunately you did they hack on the US ver
    I should have specified this but I wanted it on the EUR ver
    because they kept the original army logos and don't have that ESRB message

    However, this is still very interesting and if you don't help me with the EUR ver
    which I don't expect you to since you did this hack almost an year ago lol
    This is cool stuff that I could try for myself

    also that romhacking website that you posted Lumstar said that it can't get the original Japanese Title
    but I know how to get it to start up with it

    also did u include u hacking the language in a presentation or something?
    I found a pdf of this online
     
  12. FAST6191

    Reporter FAST6191 Techromancer

    pip
    Joined:
    Nov 21, 2005
    Messages:
    21,698
    Country:
    United Kingdom
    Triple post much?

    I had a look through the cheat database and there was no cheat for the EU version of the ROM, that is not to say Japanese is not there (I would not be surprised either way) but it is likely you will have to remake the cheat if so. Assuming it works in much the same way then do a RAM dump of the ROM and see where the firmware stuff is and it will hopefully be a simple tweak.

    Also yeah I did do a slightly expanded version of this hack as part of my hacking docs which I revamped last year. I am still not entirely sure what good it would do as part of it all (this is not exactly a common sort of hack) but I figured more basic applied assembly hacks are always good.

    Edit- tried remaking the cheat and partially succeeded. Certainly I now have Japanese in the main menu (press start menu is still in English)

    I saw 02168d2c changed with the firmware and sorted the language, forcing it with cheats causes it to disregard the firmware
    Cheat is of the form
    22168d2c 000000??
    Replace ?? with one of the following
    00 = Japanese
    01 = English
    02 = French
    03 = German
    04 = Italian
    05 = Spanish

    06 crashes the game early on.

    Again all credit to the original cheat makers- this was but a port of that logic.

    It is 12:30am though so I will probably have to leave it at a cheat for the time being. Hopefully I can return to it in the morning and get something done.
     
  13. kosheh

    Member kosheh GBAtemp Advanced Fan

    Joined:
    Jan 3, 2009
    Messages:
    573
    Country:
    United States
    I...thought I did this a while ago, and it's bugging the heck out of me how I did it. AWDoR is one of my favorite games, so I had to play with the files in it.
    I even changed the banner name for funsies...but I'll be damned if I can remember how I did it.

    Quite frankly, you can go with FAST's suggestion, but if I remember correctly I haphazardly just switched the position of the _jp and _en endings of the files with a hex editor. Though...I honestly don't remember if there's an _en segment so I had to literally rewrite lines of hex, but that seems too silly to be the case. I'd just try swapping the tags on the filenames WITHIN the game.
    I had the Japanese logo and everything - ugh I can't believe I can't remember how it worked.

    If all else fails, I thought I made a thread of Wars World News (an Advance Wars community with a decent hacking forum). I'll take a look there to see if I posted it there...
    EDIT: http://forums.warsworldnews.com/viewtopic.php?t=9943

    My friend and I found out how to change it for the US and EU versions. I'm also fairly sure somewhere around that code is a "01" lying around for the title graphic that can simply be changed to "00" to show the Japanese title logo, too.
     
  14. RadioShadow

    Member RadioShadow GBAtemp Advanced Fan

    Joined:
    Aug 30, 2007
    Messages:
    525
    Location:
    UK
    Country:
    United Kingdom
    If you don't want to flap about swapping graphic files over you can just edit the overlay or arm file and change the name of the file of the required graphics to load. It was very simple to do.

    I'll have a look and remind myself how I did it.

    I do remember that that the US version had extra coding to load the ESRB Online graphics compared to the EU version.
     
  15. TaeWongNew

    Banned TaeWongNew TaeWong 2: The Revenge

    Joined:
    Feb 5, 2013
    Messages:
    10
    Country:
    Korea, South
    You don’t want to get your threads deleted although you want to translate AWDoR into Hungarian language.
     
  16. Gilberd
    OP

    Member Gilberd GBAtemp Regular

    Joined:
    Jan 29, 2010
    Messages:
    157
    Country:
    Taiwan
    If you all are still curious I was able to get the game running in japanese without having to enable the code everytime
    the thing is that I had to hard code the cheat into the rom by using a trainer.
    So I basically did a full hack of the game into Japanese that I posted on emuparadise: http://www.epforums.org/showthread.php?87456-Famicom-Wars-DS-Ushinawareta-Hikari-JPN&highlight=
    the only thing is that the alphabet selection in the map maker mode is messed up(selecting different alphabets chooses the wrong alphabets) other than that it runs perfectly fine with everything translated.
     

Share This Page