To create the English MOTHER 3 fan translation, we needed to create a lot of custom utilities, files, and game code. We're now releasing a set of these files to the public, so that other fans can translate the game into their native languages.
Note: these files and tools are not to be sold in any way, or used to create anything that is to be sold in any way.
Keep in mind that these files and tools aren't magic - before attempting a translation project, there are a number of things you should be aware of:
We've been providing support for existing translation groups for many years now, and it's grown cumbersome as everyone has moved on with their lives. So we're releasing these tools and files to the public so we don't have to keep providing support forever. In simpler terms, this means we don't have to be middlemen for everything - for example, if you want to translate the game, you don't need to go through us anymore.
This also means, though, that we won't be providing much support - if your project needs something that's unique or different from the English release, you'll need to devise a solution of your own. Since the assembly programming code is also included with these files, you can easily add your own modifications to the game to fit your unique needs.
For minor issues and questions, we'll still provide limited support here.
Here's a list of the files included in the download above:
MAIN TOOLSi.bat | Run this to make the magic happen! It builds a translated ROM using all the other files. See further below for details on how to use this. |
Mother 3 Text Injector.exe | The main script text editor! This edits and saves the main script, and is used to convert the text into .bin format. |
M3FontEditor.exe | Use this to edit the font graphics if you need to. |
Edit this stuff with a text editor. In general, Notepad is probably the safest bet - other text editors might have encoding issues.
script.txt | The main script! You can edit this with Notepad if you want, but you're crazy if you do. Use Mother 3 Text Injector.exe to edit this monstrosity! |
0-8.txt | A long text line used by Block 0 of the main script. Don't edit this directly - instead, create a new file and then use the [FILE=".\____"] directive in script.txt to "include" it. |
0-15.txt | A long text line used by Block 0 of the main script. Don't edit this directly - instead, create a new file and then use the [FILE=".\____"] directive in script.txt to "include" it. |
0-16.txt | A long text line used by Block 0 of the main script. Don't edit this directly - instead, create a new file and then use the [FILE=".\____"] directive in script.txt to "include" it. |
0-41.txt | A long text line used by Block 0 of the main script. Don't edit this directly - instead, create a new file and then use the [FILE=".\____"] directive in script.txt to "include" it. |
0-42.txt | A long text line used by Block 0 of the main script. Don't edit this directly - instead, create a new file and then use the [FILE=".\____"] directive in script.txt to "include" it. |
battletext.txt | Battle text and battle messages |
castroll_names.txt | The names of characters for the cast of characters thing at the end of the game. The game uses a few names from other files, too. |
charnames.txt | Character & NPC names |
custom_text.txt | A scary voodoo file that we used to work some magic. This is the key to making custom control codes working... but it's been so long that how it works and how it should be formatted is a mystery. The text in here isn't meant to be translated; it's meant to enhance your translation. It's complicated and weird, so don't touch this until the very end. This can apparently only be 50 lines long, too. |
defaultnames.txt | The default names for the main characters |
enemy_extras.txt | Assigns articles (such as "a" and "the") to use for each enemy. This is slightly voodoo-y too, so be ready for crazy times. |
enemydescriptions.txt | Enemy descriptions and more |
enemynames.txt | Enemy names and more |
enemynames_short.txt | Shortened versions of enemy names and more - used for the Battle Memory item, the gray speaker boxes, and more. |
item_extras.txt | Assigns articles (such as "a" and "the") to use for each item. This is slightly voodoo-y too, so be ready for issues. |
itemdescriptions.txt | Item descriptions for the main menus. Note that some items also have alternate descriptions for use in battle - they're in a separate file. |
itemnames.txt | Item names |
M3FontEditor.txt | A config file for the font editor program. You don't need to edit or translate anything in here. |
mapnames.txt | The names of maps and locations in the game |
menus1.txt | Various main menu and misc. menu text |
menus2.txt | Secret Memo menu text |
menus3.txt | An undiscovered debug menu's text, plus some other things |
miscmenus.txt | Sound Player message text |
musicnames.txt | Song names for the Sound Player |
pcharnames.txt | The names of playable characters |
psidescriptions.txt | PSI descriptions |
psinames.txt | PSI names |
skilldescriptions.txt | Descriptions for special battle skills |
special_itemdescriptions.txt | Some item descriptions normally include status icon sprites in the text. In battle, though, they don't appear - so to fix that, we created this file. It contains alternate item descriptions for those few items. |
specialtext.txt | Mostly text from an undiscovered debug menu |
statuses.txt | Status names |
texttable.txt | A technical file that you shouldn't edit. It's used by some of the text conversion tools, but not all, so editing this to alter the text table probably won't work 100% anyway. |
These are the actual voice clip sound files. They get converted into .bin files by i.bat.
The English clips were saved in RAW format using Audacity. I don't recall the exact playback rate, but it was very low. If you're going to mess with this, just be prepared for a lot of trial and error. The GBA hardware also means the voices don't sound very clear. There's also a volume issue that we never fixed.
lookoverthere_eng.snd | Voice clip used for the Made-You-Look item. Must be a raw audio file, 8-bit PCM stereo, and under 6991 bytes. |
readysetgo.snd | Full voice clip used during the rock-paper-scissors scene in Chapter 4. Must be raw audio file, 8-bit PCM stereo, and under 20000 bytes. |
Python 3 scripts used by the compiling script. They allow avoiding possible issues which could be frustrating to debug.
prepare_special_text.py | A script which removes comments from certain files when they're about to be compiled. It allows having comments in files like enemynames_short.txt and custom_text.txt, which couldn't have them otherwise. |
check_overlap.py | A script which makes sure files you insert using assembly don't overlap with each other. Reports overlaps when they happen, doesn't solve them. |
Editing graphics is a bit of a pain. Use a tile editor like Tile Layer Pro or Tile Molestor Mod (or other newer programs that might exist nowadays) to try editing some of them.
Files with [c] in their name generally mean it contains compressed data. Compressed data is a pain to edit, but generally use the standard GBA compression scheme. Some files might be compressed even if they don't have a [c] in their name. You should probably wait until the end of your project to mess with compressed data.
gfx_3yearslater.bin | Displayed at the start of Chapter 4, use a tile viewer to edit |
gfx_K9000_battle_[c].bin | CCG block used to display K9000's sprite in battle |
gfx_amusement_[c].bin | Graphics for New Pork City's amusement park sign |
gfx_arcade_bottom_[c].bin | Graphics for part of New Pork City's arcade sign |
gfx_arcade_top_[c].bin | Graphics for the other part of New Pork City's arcade sign |
gfx_bazar1_[c].bin | Graphics for part of Thomas' bazar's sign |
gfx_bazar2_[c].bin | Graphics for the other part of Thomas' bazar's sign |
gfx_bazar_credits.bin | Graphics for Thomas' bazar's sign in the credits |
gfx_beauty_extern_[c].bin | Graphics for New Pork City's Beauty & Tasty outdoor sign |
gfx_beauty_intern1_[c].bin | Graphics for part of New Pork City's Beauty & Tasty indoor sign |
gfx_beauty_intern2_[c].bin | Graphics for the other part of New Pork City's Beauty & Tasty indoor sign |
gfx_bellicon.bin | Graphics for the Recollection Bell item icon |
gfx_bellicon_pal.bin | Custom palette info for the Recollection Bell item icon |
gfx_bom.bin | Graphics for the BOOM sprite |
gfx_bom_npc_[c].bin | Graphics for the BOOM sign inside New Pork City's arcade |
gfx_cafe_bottom_[c].bin | Graphics for part of the Highway's Cafe sign |
gfx_cafe_top_[c].bin | Graphics for the other part of the Highway's Cafe sign |
gfx_chapt1-4_arrangement.bin | Tile arrangement for the chapter 1-4 title text |
gfx_chapt5-8_arrangement.bin | Tile arrangement for the chapter 5-8 title text |
gfx_chaptertitles_[c].bin | Graphics for the chapter titles. These are compressed and will require some extra work to implement. Save these for last. |
gfx_charge0_[c].bin | Graphics for one of the Highway's charging stations |
gfx_charge1_[c].bin | Graphics for one of the Highway's charging stations |
gfx_charge2_[c].bin | Graphics for one of the Highway's charging stations |
gfx_club_keepout_[c].bin | Graphics for the KEEP OUT! sign inside Club Titiboo |
gfx_combo.bin | Graphics for the combo system |
gfx_currency.bin | Graphics for the currency's symbol. Also in other graphics |
gfx_cutscene_[c].bin | Fixed graphics for an unused cutscene |
gfx_cutscene_layer2_arrangement_[c].bin | Fixed arrangement layer for an unused cutscene |
gfx_cutscene_layer3_arrangement_[c].bin | Fixed arrangement layer for an unused cutscene |
gfx_debug_[c].bin | Graphics for the Debug Room's wall sign |
gfx_disclaimer.bin | |
gfx_disclaimer_pal.bin | Palette for the disclaimer screen |
gfx_disclaimer_[c].bin | The disclaimer screen graphics. Currently says a generic "M3FT". If you wish to edit this, you're on your own. Graphics are compressed using the standard GBA compression. |
gfx_end0_[c].bin | Graphics for the ending sequence |
gfx_end1_[c].bin | Graphics for the ending sequence |
gfx_end2_[c].bin | Graphics for the ending sequence |
gfx_exit_battle.bin | Graphics for the Exit Battle option |
gfx_factory_arrangement.bin | |
gfx_flavours.bin | Graphics for the window flavor-choosing screen. Edit with a tile viewer. |
gfx_forest_layer3_[c].bin | Graphics data that fixes the Skull Gift Box issue in Sunshine Forest |
gfx_frogatm.bin | Graphics for the ATM screen. Edit with a tile viewer. |
gfx_happy_end.bin | Graphics for an alternative, unused, ending sequence |
gfx_healthscreen_[c].bin | |
gfx_healthtext_[c].bin | |
gfx_heli_[c].bin | Graphics for the Empire Pork Building's EarthBound helicopter |
gfx_highroad_ice_1_[c].bin | Graphics data that fixes the Skull Gift Box issue in the Highway, near the Cafe. May contain the ICE cart's graphics! |
gfx_highroad_ice_2_[c].bin | Graphics data that fixes the Skull Gift Box issue in the Highway, near the Cafe. May contain the ICE cart's graphics! |
gfx_highroad_ice_3_[c].bin | Graphics data that fixes the Skull Gift Box issue in the Highway, near the Cafe. May contain the ICE cart's graphics! |
gfx_highroad_ice_4_[c].bin | Graphics data that fixes the Skull Gift Box issue in the Highway, near the Cafe. May contain the ICE cart's graphics! |
gfx_highroad_ice_tiledata_[c].bin | Graphics data that fixes the Skull Gift Box issue in the Highway, near the Cafe |
gfx_highroad_layer3_[c].bin | Graphics data that fixes the Skull Gift Box issue in the Highway, near the Cafe |
gfx_highway_graphics_[c].bin | Graphics data used to fix a clipping issue in the Highway |
gfx_highway_layer3_[c].bin | Graphics data used to fix a clipping issue in the Highway |
gfx_highway_tilemap_[c].bin | Graphics data used to fix a clipping issue in the Highway |
gfx_hp_pp.bin | Graphics data used for the overworld HP/PP symbols |
gfx_hp_pp_battle.bin | Graphics data used for the in-battle HP/PP symbols |
gfx_ice.bin | Graphics for the ICE cart's sprite |
gfx_ice_highroad_palette.bin | Palette for the ICE cart on the Highway, near the Cafe |
gfx_k9000_sprite.bin | Graphics for K9000's overworld sprite |
gfx_knock.bin | Graphics for the KNOCK sprite |
gfx_lab1_[c].bin | |
gfx_lab2_[c].bin | |
gfx_lab_arrangement_1f_[c].bin | Tile arrangements for Chimera's lab's 1F floor. In case you want to change from 1F to F1 |
gfx_lab_arrangement_1f_room_[c].bin | Tile arrangements for one of Chimera's lab's 1F rooms. In case you want to change from 1F to F1 |
gfx_lab_arrangement_2f_[c].bin | Tile arrangements for Chimera's lab's 2F floor. In case you want to change from 2F to F2 |
gfx_lab_arrangement_2f_room2_[c].bin | Tile arrangements for one of Chimera's lab's 2F rooms. In case you want to change from 2F to F2 |
gfx_lab_arrangement_2f_room_[c].bin | Tile arrangements for one of Chimera's lab's 2F rooms. In case you want to change from 2F to F2 |
gfx_lab_arrangement_3f_room1_[c].bin | Tile arrangements for one of Chimera's lab's 3F rooms. In case you want to change from 3F to F3 |
gfx_lab_arrangement_3f_room2_[c].bin | Tile arrangements for one of Chimera's lab's 3F rooms. In case you want to change from 3F to F3 |
gfx_lab_arrangement_b1f_[c].bin | Tile arrangements for Chimera's lab's B1F. In case you want to change from B1F to something else |
gfx_lab_box1_[c].bin | Graphics for boxes inside Chimera's lab |
gfx_lab_box2_[c].bin | Graphics for boxes inside Chimera's lab |
gfx_lab_box3_[c].bin | Graphics for boxes inside Chimera's lab |
gfx_lab_elevator1_[c].bin | Graphics for elevators and floor signs inside Chimera's lab |
gfx_lab_elevator2_[c].bin | Graphics for elevators and floor signs inside Chimera's lab |
gfx_lab_elevator_animation2_[c].bin | Graphics for elevators' EV symbol animation inside Chimera's lab |
gfx_lab_elevator_animation_[c].bin | Graphics for elevators' EV symbol animation inside Chimera's lab |
gfx_lab_elevator_floors_[c].bin | Graphics for elevators and floor signs inside Chimera's lab |
gfx_lab_movie_[c].bin | Graphics for the movie played in an unused cutscene inside Chimera's lab |
gfx_main_menu_[c].bin | Graphics for the main menu when starting the game |
gfx_menu_text_swapped_palette.bin | Palette used in order to optimize swapping between colors for menu options |
gfx_monotoli_[c].bin | |
gfx_music.bin | Graphics for the Sound Player |
gfx_namingscreen.bin | Graphics for the naming screen. Edit with a tile viewer. |
gfx_nuclear_battle_[c].bin | CCG block used to display Nuclear Reactor Robot's sprite in battle |
gfx_nuclear_sprite.bin | Nuclear Reactor Robot's overworld sprites |
gfx_offdef_[c].bin | Graphics for many menus |
gfx_park_[c].bin | Graphics for New Pork City's amusement park |
gfx_pencil_sprites.bin | |
gfx_police.bin | Graphics for the police car's sprite |
gfx_porky_empire_[c].bin | Graphics for the Empire Porky Building's sign |
gfx_ropeway_bottom_[c].bin | Graphics for part of the Ropeway's sign |
gfx_ropeway_top_[c].bin | Graphics for the other part of the Ropeway's sign |
gfx_sanctuaryborders.bin | |
gfx_sheriff1_[c].bin | Graphics for part of the Sheriff's Office sign |
gfx_sheriff2_[c].bin | Graphics for the other part of the Sheriff's Office sign |
gfx_sprays.bin | Graphics for the various sprays' inventory sprites |
gfx_starsprite.bin | |
gfx_start_battle_[c].bin | Graphics for the START BATTLE button inside the Battle Memoes |
gfx_statues_[c].bin | |
gfx_statues_pal.bin | |
gfx_summary_arrangements.bin | Tile arrangement for the Summary menu. It's used to heavily optimize that part of the naming screen menu |
gfx_tanetane_cliff_tilemap_[c].bin | Graphics data used for fixing a clipping issue in Tanetane Island's cliffs |
gfx_tanetane_layer1_arrangement_[c].bin | Graphics data used for fixing a clipping issue in Tanetane Island |
gfx_tanetane_layer2_arrangement_[c].bin | Graphics data used for fixing a clipping issue in Tanetane Island |
gfx_tanetane_layer3_arrangement_[c].bin | Graphics data used for fixing a clipping issue in Tanetane Island |
gfx_theater_[c].bin | Graphics for the Theater sign in New Pork City |
gfx_thunder_elevator_extern_[c].bin | Graphics for the elevator's symbol outside Thunder Thower |
gfx_thunder_elevator_intern_[c].bin | Graphics for the elevator's symbol inside Thunder Thower |
gfx_ticket_[c].bin | Graphics for the Ticket sign inside the Theater in New Pork City |
gfx_titiboo_oil_[c].bin | Graphics for the OIL tank inside Club Titiboo |
gfx_various_menu1.bin | Graphics for various menu sprites. Contains the currency symbol! |
gfx_various_menu2_[c].bin | raphics for various menu sprites |
gfx_vikings_[c].bin | Graphics for the VIKINGS sign in New Pork City |
gfx_welcome_[c].bin | Graphics for the WELCOME sign in New Pork City |
gfx_youwon.bin |
This is where the technical magic happens to make everything work in English. Most of it should work fine for other languages. If you plan to edit or add to any of these files, you'll want to brush up on GBA assembly programming first. It's not hard, it just takes some time to learn.
m3hack.asm | Custom GBA code & the main "glue" for all the other custom code. This also contains the position coordinates for a lot of text, so if you need to reposition something, look around in here. The coordinates are likely in hexadecimal format. |
battle_hacks.asm | Custom GBA code for battle stuff |
credits_hacks.asm | Custom GBA code for credits-related stuff |
extra_hacks.asm | Custom GBA code for extra goodies we added |
general_hacks.asm | Custom GBA code for general stuff |
main_menu_hacks.asm | Custom GBA code for the main menus |
main_script_hacks.asm | Custom GBA code for main script stuff |
naming_screen_hacks.asm | Custom GBA code for naming screens |
outside_hacks.asm | Custom GBA code for overworld stuff |
sound_hacks.asm | Custom GBA code for sound-related stuff |
sprite_text_hacks.asm | Custom GBA code for sprite-based text |
You shouldn't need to ever run these by themselves, but they're necessary to have!
m3preweld.exe | i.bat uses this to pre-create tiles for the cast of character names at the end of the game. It's also used for a few other instances that call for pre-welded text in the game. |
xkas.exe | Created by byuu. i.bat uses this to compile all the custom GBA programming code (the .asm files) into a format the actual GBA can run. |
soundconv.exe | i.bat uses this to create sound .bin files for two voice clips in the game. More info on this below. |
textconv.exe | i.bat uses this to convert all the non-script .txt files into .bin formats usable by the game. |
FreeSpace.exe | Frees some space by moving around enemies' graphics data. Called by i.bat. Source file can be found here. |
fix_custom_text.exe | Fixes issues that can arise when more than 50 particles are inside custom_text.txt. Called by i.bat. Source file included with the tools. |
rearrange_font.exe | Used to optimize the game's text symbol loading routine. Called by i.bat. Source file included with the tools. |
Many .bin files are just .txt files that have been converted by the tools. Other than the gfx_ .bin files, you shouldn't need to mess with any of these files. Note that the tools might also create other .bin files that aren't listed here.
GiftBoxGlitch058Table1.bin | |
GiftBoxGlitch058Table4.bin | |
GiftBoxGlitch1D9Table1.bin | |
data_castroll_table.bin | |
data_creditstable.bin | |
data_enemy_extras.bin | |
data_ghost_fix.bin | |
data_introcode.bin | |
data_item_extras.bin | |
data_memo_flags.bin | |
data_namingcursors.bin | |
data_namingscreen1.bin | |
data_namingscreen2.bin | |
data_random.bin | |
data_target_table.bin | |
font_castroll.bin | |
font_castroll_rearranged.bin | |
font_creditsfont_[c].bin | |
font_equip_rearranged.bin | |
font_mainfont.bin | |
font_mainfont_rearranged.bin | |
font_mainfont_used.bin | |
font_mainwidths.bin | |
font_smallfont.bin | |
font_smallfont_used.bin | |
font_smallwidths.bin | |
logic_00E.bin | |
logic_00F.bin | |
logic_059.bin | |
logic_0EA.bin | |
logic_1DA.bin | |
logic_36D.bin | |
logic_36E.bin | |
logic_blocks_37F_380.bin | |
logic_blocks_37F_380_381_382.bin | |
logic_code_058.bin | |
logic_code_0E9.bin | |
logic_code_1D9.bin | |
logic_code_277.bin | |
logic_code_36C.bin | |
logic_fix_debug_chapter7_kumatora.bin | |
logic_fix_debug_pigmask.bin | |
logic_leder_fix_counter_fireplace.bin | |
logic_leder_fix_song.bin | |
logic_leder_memo.bin | |
logic_multi_debug.bin | |
logic_new_npc_debug.bin | |
logic_pointer_058.bin | |
logic_pointer_1D9.bin | |
logic_pointer_277.bin | |
logic_pointer_283.bin | |
logic_pointer_36C.bin | |
multi_debug.bin | |
object_table_1_058.bin | |
object_table_1_1D9.bin | |
object_table_4_025_segment.bin | |
object_table_4_058.bin | |
object_tables_debug.bin | |
sound_lookoverthere_eng.bin | Voice clip data for the "Made You Look" item. Created automatically by i.bat and soundconv.exe |
sound_readysetgo_a.bin | First part of the voice clip data for the rock-paper-scissors voice clip. Created automatically by i.bat and soundconv.exe |
sound_readysetgo_b.bin | Second part of the voice clip data for the rock-paper-scissors voice clip. Created automatically by i.bat and soundconv.exe |
sound_readysetgo_c.bin | Third part of the voice clip data for the rock-paper-scissors voice clip |
sound_relocate_dump.bin | |
text_itemnames.bin | |
text_itemdescriptions.bin | |
text_enemynames_short.bin | |
text_enemynames.bin | |
text_psinames.bin | |
text_skilldescriptions.bin | |
text_sleep.bin | |
text_enemydescriptions.bin | |
text_defaultnames.bin | |
text_custom_text.bin | |
text_charnames.bin | |
text_battletext.bin | |
text_pcharnames.bin | |
text_psidescriptions.bin | |
text_miscmenus.bin | |
text_specialtext.bin | |
text_special_itemdescriptions.bin | |
text_statuses.bin | |
text_menus1.bin | |
text_menus2.bin | |
text_menus3.bin | |
text_mapnames.bin | |
text_mainscript.bin | The main script file, converted into a format the game can use. Don't edit this - edit script.txt and then use the Text Injector |
text_musicnames.bin |
The text files should ideally be edited with Windows Notepad - other programs may cause encoding problems when you use non-English letters. You can also edit the main script with Notepad, but it's recommended that you use the custom script text editor instead. See further below on usage details.
Here's the general format of the non-script .txt files - your translations go in the empty spaces beneath the existing text:
Some text files are laid out differently - in those cases you'll usually need to just directly overwrite the existing text:
If a line in the original text has an [END] at the end of it, you NEED to include an [END] at the end of your translated line. Similarly, if a line DOESN'T have an [END] at the end of a line, then you shouldn't include one in your translation.
Be sure you don't include any extra stuff after an [END] code. Blank spaces after an [END] can cause trouble too.
i.bat is the key to the project - once you've translated your text, run this file. It will build a fresh ROM for you with your translation inserted!
Before you start, though, it's important that you understand how the tool system works. Basically, you edit the .txt files. Then i.bat runs through them, converting them into .bin format. Then a copy of the original ROM is made, and the .bin files are automatically inserted into this ROM copy. Then you can play your translation in an emulator.
In other words, you'll never need to edit the ROM directly - the translated ROM is built from scratch each time you run i.bat.
For i.bat to do its magic, you need to:
You could probably just double-click the i.bat file to make it run from Windows, but it's possible some complications might arise, and as soon as it finishes the window will probably close - so if any errors happen you won't be able to tell. For these reasons, it's recommended that you run i.bat from the command prompt. That way you can also view the messages that i.bat outputs.
If everything works and you have everything set up properly, i.bat will create a new ROM called test.gba - this is your translated ROM!
More technically, here's what i.bat does:
--------------------------------------------------------- Converting non-script text files to data files --------------------------------------------------------- ----------------FORMAT-LENGTH-----ORIG.---NEW-----MAX-----MOVED--- ITEM NAMES 16-bit STATIC 11268 * CHAR NAMES 16-bit STATIC 12004 * ENEMY NAMES 16-bit STATIC 16454 * SHORT EN. NAMES 16-bit STATIC 13204 PSI NAMES 16-bit STATIC 4004 * SPECIAL TEXT 16-bit STATIC 2004 * DEFAULT NAMES 16-bit STATIC 1260 P CHAR NAMES 16-bit STATIC 288 STATUS TEXT 16-bit STATIC 1664 * CUSTOM TEXT 16-bit STATIC 254 2000 BATTLE TEXT 16-bit VARIABLE 48772 71120 81856 * PSI DESC TEXT 16-bit VARIABLE 3234 6148 6720 * MUSIC TEXT 16-bit VARIABLE 4922 8946 10240 * MISC MUSIC TEXT 16-bit VARIABLE 86 148 512 * SKILL DESC TEXT 16-bit VARIABLE 756 816 1200 * ITEM DESC TEXT 16-bit VARIABLE 15471 25454 30000 * SPEC ITEM DESCS 16-bit VARIABLE 1656 2000 * MENU 1 TEXT 16-bit VARIABLE ??? 7136 10000 * MENU 2 TEXT 16-bit VARIABLE 17442 32034 36000 * MENU 3 TEXT 16-bit VARIABLE 518 756 2000 * ENEMY DESCS 16-bit VARIABLE 23620 39090 46592 * MAP NAMES 16-bit VARIABLE 11262 8120 11262 EXTRA EN. DATA 1645 EXTRA ITEM DATA 1536
Your numbers will be different, but you can use the "MAX" info to see if you have too much text in a file. If so, you need to cut down on text - otherwise things will break in the game.
Entries without a "MAX" might still have a maximum value, but it's unlikely you'll run into any problems. The only exception is the "custom text" - this might cause problems, so save any work on that until the end of your project!
It's possible you'll get "UNABLE TO CONVERT CHARACTER" errors. This happens because different text editing programs save text differently. I recommend that you use Windows Notepad to edit these .txt files - if you use anything else, you risk running into this problem.
--------------------------------------------------------- Copying base ROM (mother3.gba) to new test ROM (test.gba) --------------------------------------------------------- 1 file(s) copied.
--------------------------------------------------------- Freeing enemy graphics' space --------------------------------------------------------- Free SOB space from: 0x1CFD27C - To: 0x1CFF688 Free CCG space from: 0x1CDF638 - To: 0x1CE5420
--------------------------------------------------------- Converting audio .snd files to data files --------------------------------------------------------- Converting readysetgo.snd, 19986 bytes sound_readysetgo_a.bin: 6662 bytes sound_readysetgo_b.bin: 6662 bytes sound_readysetgo_c.bin: 6662 bytes
Your numbers might look different if you use different .snd files. If you want to change the voice clips, refer to the file lists above for more details about the file formats and file sizes.
--------------------------------------------------------- Creating pre-welded cast of characters --------------------------------------------------------- Opening files... Thomas Nichol Lisa Richie Lighter Fuel Bud & Lou Bronson Abbot Abbey Paul Linda Jackie Betsy Tessie Caroline Angie Alec Matt Jill Biff Butch Ed Nan Alle Scamp Nippolyte Jonel Brenda Dona Bob Reggie Isaac Bateau Nana Pusher Elmore Ollie Sebastian Mapson Wess *2004256 Friendly Ghosts *2038000 Item Guy DCMC Neckbeard Skinhead *20042C2 Dr. Andonuts Mr. Pump Dryguy Bucket Bros. Claymen Ultimate Chimera ~Mr. Saturn Leder Rope Snake Dragos Aeolia Doria Lydia Phrygia Mixolydia Ionia Save Frogs Fassad Pigmasks Chauffeur Mini-Porky Oxygen Supply Porky Masked Man *2038000 *200432E *20041EA *200468E To continue the game, press Select and the L and R Buttons simultaneously.
This output will look different if you've translated the names, of course, but it'll basically look something like this.
--------------------------------------------------------- Checking overlap of the files that will be used --------------------------------------------------------- Overlap check for m3hack.asm done!
--------------------------------------------------------- Compiling .asm files and inserting all new data files --------------------------------------------------------- End of Current Hacks: 0x8128036 Max: 0x813C743 COMPLETE!
The addresses here might change depending on whether or not you've added any files or code to any of the .asm files. It's vital that the "End of the Current Hacks" address stays below the "Max" - otherwise the game could behave unpredictably.
Note that if any errors or problems occur when running i.bat, it will always say "COMPLETE!" at the end - so it pays to pay attention to the rest of the output!
The script editor, also known as the "Mother 3 Text Injector" or "Mother 3 Funland" is where you'll probably spend most of your time translating. Following are some instructions and tips on how to use it.
Here's a look at the editor in action:
This is an extremely useful and powerful tool... but that also means there's a lot to learn. So here goes!
To get started with the editor, hit the "Load Script" button, and then find and select the "script.txt" file.
The script is separated into about 1000 "Blocks". In general, each block corresponds with a map/area in the game. You can actually cross-reference block numbers with map numbers (although the numbers are off by 1 or 2) if you use the MOTHER 3 map viewer or if you just follow along here:
http://earthboundcentral.com/m3script/
Knowing what map each block is connected to helps a LOT with context issues, so always try to check the map if you can.
To navigate between blocks, press the up or down arrow where it says "Container/block:". Be careful - if you try to go to anything before Block 0, you could crash the program! You can also type in the block number you want to go to, but this could cause a crash too if you're not careful.
Each "block" contains a bunch of lines of text. You can navigate to a specific line by pressing the up or down arrow next to where it says "Line:"
When looking at a line of text, the top area will show the original text (in this case, the English text). The window beneath it is where you type in your translation. Beneath that is another window where you can add translation notes - some lines already have translation notes for reference or for other purposes.
When editing a line of text, press the "Preview" button to get a preview of how it will look in the game. An optional blue line will indicate the edge of the screen in the game - you need to make sure all your text will stay inside.
There's also an optional red line... but I can't quite recall what it's for. It might be for certain Block 0 lines.
If the preview for a line goes too far down, you won't be able to see it. You can switch the scaling from 2x to 1x... but if it's still too big, then you'll need to preview the text in pieces, then stitch the pieces together afterward.
When you've finished entering a line of text, you can hit the "Apply Changes" button. This gets to be a hassle though, so you can also just navigate to a new line - the changes you made will be retained. This isn't permanent, though - you NEED to save your file before quitting the program!
To save your work, click the "Save script" button. You can then choose to overwrite the existing .txt file, or you can save your changes to a new file if you want. Whatever you do, just remember to save your work!
Some lines of text, particularly in Block 0, are so long that they'll break the text editor. To get around this, we implemented a code to "include" a file. That's what the files like "0-8.txt" and "0-42.txt" are. When you do your translation, you should create your own files like "0-8trans.txt" and then do something like [FILE=".\0-8trans.txt"] in the text editor.
Some lines in Block 0 have limits to the number of letters that can be on each line. Other lines have non-standard width limits. Basically, if there's scrolling text involved or special text that appears after the screen darkens, then be prepared for some trial and error. It's possible the red line in the text editor was meant to help format some of this Block 0 text.
Be sure that every line of text ends with an [END] control code! Things will act unpredictably otherwise!
Use the "Check for errors" button to check the current block for [END] and other control code (the things in []s) errors. If you have the "Check for width overflow" option checked, this will also check for lines that go beyond the blue line/screen edge.
You can also use the "Check all" button to check ALL blocks for the above errors. This is especially helpful once your project is nearing completion and you don't want to have to go through every block manually.
Click the "Stats" button to see how many lines you've finished working on, and how many more you have to go.
You'll quickly notice that many lines in the game repeat in different blocks. It's a hassle to copy/paste all the time, so if you click the "Check for repeats" button, the program will try to find repeats of the current line. If any repeats are found, the editor will offer to automatically copy your existing translation into all other spots in the script. It's handy!
Click the "Script size" button to see how big the script will be when converted. You'll need to make sure the converted script is smaller than the maximum size, which is also listed. The text here talks about Japanese script and English script - just keep an eye on the middle number, as that's the size of YOUR script.
You can ignore the "Inject script" button.
You can ignore the "Miscellaneous" menu.
You can ignore the "Old, stinky stuff" menu.
Most important of all! Before you can use your script in the game, you need to convert it to a .bin file.
To do this, first MAKE SURE TO UNCHECK "ENCODE THE SCRIPT" FROM THE ENCODING MENU, then click the "Dump to binfile" button and save it to text_mainscript.bin
Once you've saved the .bin file, you need to run i.bat to rebuild the ROM from scratch - this will insert your script into the game.
(Of course, don't forget to save your script.txt file too, so that you won't lose your changes.)
Q: I just want to edit some stuff in the existing translation - how can I do that?
A: The tools and files here are more oriented toward people translating the game into other languages. If you want to modify the existing game, you can always edit the existing ROM with a hex editor, or you can reproduce the existing text and then edit it.
Q: I want to change some special graphical text on some buildings and elsewhere. How can I do that?
A: Most of the graphical text in the game is compressed. Editing compressed graphics isn't an easy process and we didn't create any tools for this, so you'll need to learn how to do some complicated ROM hacking to change sign text and such.
Q: I want to translate the game, but my language uses letters that aren't in the font set!
A: It's a tough situation, but one option is to overwrite existing letters using the font editor. For instance, if you don't need a ! in your font, you can draw a new letter there. Then, everywhere in the script files, if you type in a "!" it will print your new letter instead. It's a hassle and it has limitations, but its a workaround.
If that's not an option, then your next best bet is to start a translation from scratch - the original Japanese ROM had a big font bank in some standard format, likely Unicode or something like that. Your language's writing system is likely in there - but you'll need to do all the hacking yourself, plus it means you'll have very limited text space and huge letters. It actually shouldn't be too hard if you have basic ROM hacking knowledge - and if you don't have any experience, the info here is a good way to teach yourself the ropes.
Q: I want to distribute my project as a patch - how can I do that? Can you make a patcher program for me?
A:You don't need to rely on us to make a patch for you - you can use any number of patch formats out there: UPS, Xdelta, BPS, and more. You can even program your own utility instead of relying on an existing patch format.
Standard IPS patches aren't an option, however, because the MOTHER 3 ROM is two times larger than the IPS format's address limit.
To simplify things for us, we ask that you come up with a patching solution of your own.
Q: I've translated some text in the game, but not all. I want to try it out in the game, but it's acting strange. What do I do?
A: Until you've translated all the text in a file, you can expect weird things to happen. One solution is to put placeholder text for all the untranslated lines. i.bat will also sometimes give error messages if you haven't finished translating a file, usually things like "Missing [END] code on line _____".
Q: The enemy name text files have non-enemy names in there. Should I translate them?
A: The enemy name files actually provide more than just enemy names - some NPC names are pulled from them. So be sure to translate everything in those files.
Q: In the shop menu text, sometimes there are English words that won't go away, like "now" or "Sell your". How can I get rid of that?
A: This is handled in main_menu_hacks.asm - you might need to fiddle with some numbers. The "now" shouldn't appear anymore, but if anything else pops up and you can't figure it out, go ahead and post on the translation forum about it. It should be a simple fix to make.
Q: The text during the cast of characters thing at the end of the game sometimes messes up. What should I do?
A: You'll probably need to shorten some names or just blank some names out entirely. Note that using the debug room to test the cast of characters can cause issues, so you'll want to test it normally.
Q: I want to change the way the naming screens look/act. How can I do that?
A: This is in an advanced topic - if you want to do this, you should definitely wait until the end of your project. The English patch didn't support multiple alphabets on the naming screen like the Japanese version did, so you'll likely need to undo some of the naming screen .asm code and write some of your own code instead.
Q: What do those mice in the attic say?
A: You can find out more about their text here.
Here are some suggestions based on personal experience and from watching other teams translating the game.
If you are updating from the old translation tools, you may find this repository very useful, in order to check what changed.
If you want to see how the update was developed, look here instead.
Here, one can find the old translation tools. You aren't meant to download them, unless you really need them for some reason.
It's recommended to use the new ones, otherwise. Many issues were fixed.