Hacking Hack ROM to force a Language

RadioShadow

Well-Known Member
OP
Member
Joined
Aug 30, 2007
Messages
550
Trophies
1
Age
35
Location
UK
XP
634
Country
So I noticed there was an Action Replay code to force a NDS game to force the required language: https://gbatemp.net/threads/force-the-ds-dsi-games-language-with-an-ar-code.478344/

I have figured out a way to hack the NDS rom to force the required language, instead of using Action Replay codes. I'm aware that some tools like the TwilightMenu++ allow you to do this, but this is more useful if you are injecting a NDS rom into a NDS Wii U Virtual Console game (https://gbatemp.net/threads/wii-u-nintendo-ds-virtual-console-inject-guide.480668/), and some NDS Flash Cards don't give you this option.

To find out what languages a NDS game supports, I would recommend checking this website (https://www.advanscene.com/html/index.php). It sadly doesn't explain if the supported language is selected from the firmware, or if the user can pick (sometimes both methods are used). That you have to figure out for yourself.

From the few roms I have tried, this method seems to work perfectly. I will use Super Princess Peach (Europe) as a demonstration. This game supports English, French, German, Spanish, and Italian, and selects the language that is based on the firmware setting (if the firmware's language is set to Japanese, the game will load in English).

Download the Force Language Tools:
https://gbatemp.net/attachments/force-language-tools-7z.426768/

Install Notepad++:
https://notepad-plus-plus.org/

1 - Extract the contents of the Force Language Tools.7z files.
2 - Place a copy of the NDS rom into the main Force Language Tools folder.
1.png


3 - Open DsSmuMe emulator: desmume-0.9.11-win32 > DeSmuME_0.9.11_x86.exe
4 - Click: Config > Firmware Settings
2.png


5 - Change Language to the one you want to use.
3.png


6 - The required language will have been selected. In this example, Spanish has loaded, and there is no way to select a different language in the game.
4.png


7 - Open: dsbuff_v1Final > dsbuff.exe
8 - Click Browse... and open the NDS rom.
5.png


9 - Click Unpack.
6.png


10 - Click on Info button next to the Directory text box.
7.png


11 - Locate and click on the rom folder.
Note: Check that there are no files inside the folder! If there is, then delete all the files in that folder!
8.png


12 - Click the Green Tick to unpack the contents.
9.png


13 - This will open a new folder that contains the contents of the rom.
14 - Make a copy of arm9.bin file.
10.png


15 - Place a copy of "arm9.bin into the main folder.
11.png


16 - Open: no$gba > NO$GBA.EXE
17 - Click: Debug > Define Break/Condition
12.png


18 - Type in the following: [027FFCE4]?

This will freeze the emulator if a byte is read at that address.
13.png


19 - Click: Cartridge menu (FileName)
20 - Open the NDS rom.
14.png


21 - The game should freeze on the following instruction: add r0,r12,6h
15.png


22 - What we are interested in is the instruction above. It should be: ldrh r2,[r12,64h]

What it is doing is taking the R12 Address, adding 64 Hex bytes to R12 Address, and storing the value located at the new address into R2. So doing some calculations: 027FFC80 + hex(64) = 027FFCE4

That is the RAM Address that stores the language that was set in the firmware. What we are going to do is change the instruction to always load the required language setting into R2.

Make a note of the address where ldrh is stored. In this example: 020C98FC
15b.png


23 - In the main folder, open compile.asm in Notepad++.
16.png


24 - At Line 20, place the new address after the 0x.
Take the address you made a note of in Step 22, and remove the 02 from the beginning.
For example: 020C98FC > 0C98FC

At Line 22, change the InsertLanguage text to language you want to force:
  • English
  • French
  • German
  • Spanish
  • Italian
  • Japanese
17.png


25 - Save the changes to the compile.asm file.
26 - Click on the make.bat file in the main folder.
18.png


27 - If you see this message, the instruction was changed successfully.
19.png


28 - Click the Pack icon.
29 - Click on Info button next to the ROM Contents text box.
20.png


30 - Locate and click on the rom folder.
21.png


31 - Click the Green Tick to pack the contents.
22.png


32 - Choose a location where you want to save the new NDS rom to, and give it a new name.
23.png


33 - Use the DeSmuMe emulator to test the new rom. Change the "Language" in the Firmware Settings to one that is different to the forced language (in this example, I will select English).
24.png


34 - Now the forced language will always load.
25.png


Enjoy!
 

Attachments

  • Force Language Tools.7z
    2.7 MB · Views: 13
Last edited by RadioShadow,

eyeliner

Has an itch needing to be scratched.
Member
Joined
Feb 17, 2006
Messages
2,899
Trophies
2
Age
44
XP
5,586
Country
Portugal
Good job, mate!

The Google thing to download the tools is asking us to request access.
 

RadioShadow

Well-Known Member
OP
Member
Joined
Aug 30, 2007
Messages
550
Trophies
1
Age
35
Location
UK
XP
634
Country
Good job, mate!

The Google thing to download the tools is asking us to request access.

I didn't realize that GBATemp allows users to attach files. Those are now attached, so I don't need to upload them to Google Drive. That should fix the download issues.
 
  • Like
Reactions: eyeliner

The Real Jdbye

*is birb*
Member
Joined
Mar 17, 2010
Messages
23,377
Trophies
4
Location
Space
XP
13,994
Country
Norway
I didn't realize that GBATemp allows users to attach files. Those are now attached, so I don't need to upload them to Google Drive. That should fix the download issues.
For future reference you can use the "Share" option to set the link to public access rather than just "Copy Link"
I assume you are using Google Workspace which does not set the link to public access by default (doesn't seem like there is a way to change that)
 

SomebodyINSBC

New Member
Newbie
Joined
May 5, 2024
Messages
1
Trophies
0
Age
26
XP
4
Country
Spain
Hi, nice post.
Do you know if I can force games that have for example Spanish language as a Multi-5, to be played in Spanish?
My console is a NDSi LL (NDSi XL outside Japan) that i bought in my country but all games that are not specifically patched in Spanish-only, will be in English.
Can I do something to the ROM in the PC to change it's default language if it is Multi-5?
Or there is no solution to that? Thanks
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
  • SylverReZ @ SylverReZ:
    They probably said "Hey, why not we combine the two together and make a 'new' DS to sell".
  • Veho @ Veho:
    It's a DS Lite in a slightly bigger DS Lite shell.
    +1
  • Veho @ Veho:
    It's not a Nintendo / iQue official product, it's a 3rd party custom.
    +1
  • Veho @ Veho:
    Nothing special about it other than it's more comfortable than the Lite
    for people with beefy hands.
    +1
  • Jayro @ Jayro:
    I have yaoi anime hands, very lorge but slender.
  • Jayro @ Jayro:
    I'm Slenderman.
  • Veho @ Veho:
    I have hands.
  • BakerMan @ BakerMan:
    imagine not having hands, cringe
    +1
  • AncientBoi @ AncientBoi:
    ESPECIALLY for things I do to myself :sad:.. :tpi::rofl2: Or others :shy::blush::evil:
    +1
  • The Real Jdbye @ The Real Jdbye:
    @SylverReZ if you could find a v5 DS ML you would have the best of both worlds since the v5 units had the same backlight brightness levels as the DS Lite unlockable with flashme
  • The Real Jdbye @ The Real Jdbye:
    but that's a long shot
  • The Real Jdbye @ The Real Jdbye:
    i think only the red mario kart edition phat was v5
  • BigOnYa @ BigOnYa:
    A woman with no arms and no legs was sitting on a beach. A man comes along and the woman says, "I've never been hugged before." So the man feels bad and hugs her. She says "Well i've also never been kissed before." So he gives her a kiss on the cheek. She says "Well I've also never been fucked before." So the man picks her up, and throws her in the ocean and says "Now you're fucked."
    +2
  • BakerMan @ BakerMan:
    lmao
  • BakerMan @ BakerMan:
    anyways, we need to re-normalize physical media

    if i didn't want my games to be permanent, then i'd rent them
    +1
  • BigOnYa @ BigOnYa:
    Agreed, that why I try to buy all my games on disc, Xbox anyways. Switch games (which I pirate tbh) don't matter much, I stay offline 24/7 anyways.
  • AncientBoi @ AncientBoi:
    I don't pirate them, I Use Them :mellow:. Like I do @BigOnYa 's couch :tpi::evil::rofl2:
    +1
  • cearp @ cearp:
    @BakerMan - you can still "own" digital media, arguably easier and better than physical since you can make copies and backups, as much as you like.

    The issue is DRM
  • cearp @ cearp:
    You can buy drm free games / music / ebooks, and if you keep backups of your data (like documents and family photos etc), then you shouldn't lose the game. but with a disk, your toddler could put it in the toaster and there goes your $60

    :rofl2:
  • cearp @ cearp:
    still, I agree physical media is nice to have. just pointing out the issue is drm
  • rqkaiju2 @ rqkaiju2:
    i like physical media because it actually feels like you own it. thats why i plan on burning music to cds
  • cearp @ cearp:
    It's nice to not have to have a lot of physical things though, saves space
    +1
  • AncientBoi @ AncientBoi:
    Nor clothes 🤮 . Saves on time, soap, water and money having to wash them. :D
    AncientBoi @ AncientBoi: Nor clothes 🤮 . Saves on time, soap, water and money having to wash them. :D