Dialog Editing with Sukharah’s MES Unpacker

Introducing Sukharah’s MES Unpacker

After months of painstakingly editing dialog using a combination of Harrison’s MES Editor, Hex Editing, and Spreadsheets, I’m happy to say that we now have a much easier method for editing dialog (mes) files from Harvest Moon: A Wonderful Life and Another Wonderful Life.

Sukharah, the brilliant individual behind the CLZ Compression Tool, has created a new tool for manipulating MES files. This tool has been aptly named the MES Unpacker (although it can also repack).

Compiling the MES Unpacker

Prerequisites

The tool is released as source code, meaning you’ll need to have a C++ compiler such as g++ (included with MinGW, which can be installed using the mingw-get-setup.exe installer from the MinGW releases page.

Once you have MinGW/g++ installed, it’s just a matter of downloading the MES Unpacker repository, and building the program using your terminal of choice.

Compilation Options

There are 3 main modes you can use while compiling the MES unpacker.

The normal mode uses a fairly basic compilation command:

g++ -o mes.exe -std=c++11 -iquote header "source/main.cpp" "source/MES.cpp"

The next mode, known as ddupe, will allow the app to group sequential duplicate messages together in the final repacked .mes file. This is needed for certain dialog files (e.g. muumuu.mes) that approach the 73,376-byte file size limit. Attempting to load a .mes file larger than this in-game will result in a crash.

g++ -o mes_ddupe_seq.exe -DDUPE -std=c++11 -iquote header "source/main.cpp" "source/MES.cpp"

The final mode, known as ddupe2, will group together all duplicate messages from anywhere in the dialog file. This breaks compatibility with Harrison’s MES Editor, but should otherwise work in-game. It’s not advised to use this option unless you’re unable to get below the 73,376-byte limit after using ddupe.

g++ -o mes_ddupe2_nonseq.exe -DDUPE2 -std=c++11 -iquote header "source/main.cpp" "source/MES.cpp"

Precompiled MES Unpacker (Windows 10 only)

I have also created a compiled version. The limitation of this precompiled version is that it’s limited to Windows 10 systems, since that’s the type of system I compiled it on.

[Download]

mes.exe – Standard compilation

This version is recommended for almost all .mes editing use cases

mes_ddupe_seq.exe – Compiled with -DDUPE flag

This version is recommended for certain large .mes files that approach the 73,376-byte filesize limit.

e.g. muumuu.mes, son_talk.mes

It’ll group any sequential (appearing directly after one another) duplicate dialog messages together in the final output .mes file.

mes_ddupe2_nonseq.exe – Compiled with -DDUPE2 flag

This version is experimental. It’ll group any duplicate messages from anywhere in the dialog file.

This is only recommended if you’re having difficulty outputting a .mes file below the 73,376-byte file size after using mes_ddupe_seq.exe, which is possible if you plan on editing Muffy’s dialog (muumuu.mes).

Using Sukharah’s MES Unpacker

MES to TXT

Once you’ve compiled or downloaded the MES Unpacker, using it is fairly trivial.

Simply place your .mes file (e.g. badog.mes) in the same folder as your compiled program. Note this folder must also include the tool’s “data” folder and it’s contents.

Then, launch a command prompt in that folder. The simplest way to do this is by typing “cmd” in the navigation bar and pressing Enter.

From there, just type in the appropriate unpack command.

mes_program unpack file.mes file.txt

Where mes_program is either mes, mes_ddupe_seq, or mes_ddupe2_nonseq and file.mes is your dialog file.

Unpacking badog.mes and muumuu.mes using their respective builds.

Editing the TXT files

After you’ve run the commands, you should have some new text files in your folder.

You can edit these using any tool you like. Personally, I prefer Notepad++.

For this example, we’ll be replacing one of Dr. Hardy’s lines (badog.mes).

Simply locate your desired line in the appropriate text file, and edit it at will. Note that a single line (not counting actions like {PAUSE}, {WIPE}, {SOUND}, etc.) can only be 21 characters (letters) long. Anything beyond that will cause issues when displaying in-game.

TXT to MES

Once you’ve edited and saved the txt file, simply run the appropriate pack command.

mes_program pack file.txt file.mes

Where mes_program is your build of the tool, and file.txt is your edited dialog text file.

This will overwrite the mes file in your folder

You can then put the newly packed mes file back into your ISO or game folder, replacing the previous one.

From there, the game should load your new dialog in place of the old one.

And voila! You’ve successfully edited dialog.

Opening Up Dialog for Community Collaboration

Dialogue Dumps

To help facilitate dialog review/editing, I’ve synced some of my work-in-progress dialog dumps via Google Drive.

This means that anyone interested in helping with the project can view .txt format dialog dumps, which will be continuously updated as I edit the dialog for the game.


Community Dialogue Review

I’ve also created some Google Docs listing any dialogue that I plan on editing, but haven’t gotten around to yet.

If you come across any dialogue in need of fixing (e.g. gender pronouns, grammatical/spelling mistakes), feel free to add it to these docs.

A screenshot of the Google Doc noting dialog from A Proud Life (A Wonderful Life) to be fixed

A Note About File Names

Note that the dialog file names are sometimes different from the in-game character names. This is because the files utilize the original Japanese character names.

English NameJapanese Name (name of dialogue file)
CeliaSepilia
ChrisKris
CodyGodey
FlakFlat
GalenGhali
GrantGurat
GriffinGarfun
HardyBadog
KasseyKesaran
MarlinMash
MuffyMuumuu
MurreyMoi
NakDavid
NicEbony
PatrickPasaran
RubyRou
SamanthaSan
TartanTsurutan
TimTai / Tay
VanBahn
WallySuary

Updating MES Files

Now that I’ve found a bunch of dialogue that needs changing, I’ve started hex editing the MES files in question to adjust the specific messages.

So far, I’ve edited the following for AnWL:

  • [garfun.mes]
  • [godey.mes]
  • [gustafa.mes]
  • [gustafa_husband.mes]
  • [mash_husband.mes]
  • [muumuu.mes]
  • [other.mes]
  • [phrase.mes]
  • [rock.mes]
  • [rock_husband.mes]
  • [sepilia.mes]
  • [son.mes]
  • [son_baby.mes]
  • [son_diary.mes]
  • [son_other.mes]
  • [son_talk.mes]

I’ll be going through the AWL files (as well as some more AnWL edits) tomorrow,.

I’ve created a [directory] from which I will be linking to all of my dialogue file dumps.

I will upload new alpha patches shortly thereafter with just the dialogue edits (no texture/model replacement) so that users can test them and see if there are any lingering misgendered messages.

One main issue I’ve noticed with some of the dialogue, is that when I replace some text with text of different length (e.g. “she” [3 letters] with he [2 letters]), it seems to change the offset of any messages afterwards.  This is especially apparent with the rock_husband dialogue as some of the later messages are missing the first word or half-word.

Starting Dialogue Analysis

I’ve put all of the dialogue from each game. [AWL] [AnWL]

I’m starting to look through the dialogue and make note of any areas that need editing, including grammatical errors and gendered terms.

Please [let me know] if you find any areas that will also need editing.

Once I’ve found the areas to edit, I will make the changes using manual hex editing of the original MES files.


Update #2

I’ve gone through the AWL dialogue.

I’ve located any mentions of “husband”, “father”, “pops”, “dad”, and “daddy” that need to be changed.  I’ve also located a number of grammatical errors that will need to be fixed.

The AWL dialogue dump [link] has been updated as such.

Of course the sections I’ve found won’t be complete.  There are still going to be numerous he/him entries throughout the dialogue, but this is a start.

It’ll go a lot faster if you guys can message me [link] with any dialogue that you come across needing to be fixed.

I’ll work on the AnWL dialogue tomorrow and then will start on hex editing the necessary files, followed by creating updated xDelta patches.

AWL Dialogue Dumped, AnWL Dialogue Cipher Broken

The MES Editor is now at v0.2 [link] and now includes export features.

With this, I’ve been able to fully dump all of the dialogue from AWL. [link]

The dialogue files can be viewed for anyone interested. [link].

The only things that aren’t dumped from AWL are some kanji characters that haven’t been added to the tool yet. But this is being worked on.  I’ve been progressing through each of the characters from the font texture.

The red characters are those that I haven’t been able to identify.  If anyone knows what they are, please let me know so we can add them to the program.

I’ve just broken the AnWL hex cipher, so I should hopefully be able to coordinate with Harrison to create an alternate version of the Editor for AnWL MES files.

If you notice any dialogue lines in-game that need to be changed, please let me know so I can find and edit them.

I’ll start by looking for individual gender identifiers (he/she, husband/wife, boy/girl. mom/dad, etc) and will go from there.  But it will likely be a little slow without full context of the conversations.