Editing Dialogue

Animal Crossing: New Horizons keeps much of its dialogue in archives containing folders of message files, whether it's dialogue from the villagers, talking to NPCs, and even all the horrible puns made when you catch something.

If you're constantly tired of hearing the same dialogue over and over and over, then this is the guide for you!

Requirements
You'll need:


 * Either a modded Switch or an emulator with a copy of ACNH
 * A copy of the game's RomFS (or really, just the Message folder inside it)
 * Switch Toolbox


 * MSBT Editor Reloaded

Getting the Message Files
There are separate archives for various parts of the game:


 * Dialog, LayoutMsg and System: text for the various layouts and menus you'll find in the game
 * Mail: contents of mail sent by your villagers, special characters, etc.
 * String: contains names of villagers, special characters and items, as well as others like catchphrases, preset nicknames, days of the week, etc.
 * TalkFtr: dialogue when interacting with furniture
 * TalkNNpc: villager dialogue
 * TalkObj: for things like Lloid, the snowman, the Nook Stop, empty plots and all that
 * TalkSNpc: dialogue for special characters like Tom Nook, Isabelle, Orville, Wilbur, etc.
 * TalkSys: contains text for getting reactions, the art pieces and their descriptions, and all the terrible puns for catching creatures.
 * Tutorials: everything related to the beginning of the game up to K.K.'s first live on your island.

These are then separated by language and region:


 * CNzh: Simplified Chinese
 * EUde: German
 * EUen: European English
 * EUes: European Spanish
 * EUfr: European French
 * EUit: Italian
 * EUnl: Dutch
 * EUru: Russian
 * JPja: Japanese
 * KRko: Korean
 * TWzh: Traditional Chinese
 * USen: North American English
 * USes: Latin American Spanish
 * USfr: Canadian French

In order to extract the message files you want, you'll need to:


 * 1) Open Switch Toolbox.
 * 2) Open the desired archive by going to File > Open or open the folder containing them with File > Open (Folder) and selecting the folder with them.
 * 3) *If you selected a folder, double click on the archive you want to open.

For TalkNNpc (villager dialogue)
In TalkNNpc_(region/language).sarc.zs, you'll find 8 folders. These represent the 8 distinct personalities that villagers can have. These are:


 * B1_Bo: Lazy (Bonyari)
 * B2_Ha: Jock (Hakihaki)
 * B3_Ko: Cranky (Kowai)
 * B4_Zk: Smug (Kiza)
 * G1_Fu: Normal (Futsū)
 * G2_Ge: Peppy (Genki)
 * G3_Ot: Snooty (Otona)
 * G4_An: Sisterly (Aneki)

It's up to you to explore what's in the folders, although most of the files are pretty self-explanatory.

Once you've found the file containing the section of dialogue you want to edit, right-click on the file and choose "Export Raw Data". Select a location you'd like to extract it to, and save it.

Editing the Message File
Now that you have your .msbt file, open up MSBT Editor Reloaded, and open the file by going to File > Open. The first thing you'll see in the Edit box is some boxes, some "\0"s, Korean characters and whatnot alongside the text. Those characters are what make up what are called "tags", and they define things like reactions, timing in text, and getting things like the speaker's name or your island name.

In the Hex View box right below, you'll probably see something like: 0E 00 28 00 ?? 00 04 00 ?? CD 00 00

This is the format for a reaction tag. What these represent is as follows:


 * 0E 00 - Tags always start with this
 * 28 00 - This is the command for grabbing reactions
 * ?? 00 - This is the reaction itself, ?? being the value of the reaction you want (a list of them can be found here.)
 * 04 00 - How many bytes the parameters after this take up
 * ?? CD 00 00 - The parameters. ?? represents who is going to do the reaction, and possible values are:
 * 00 - who you're talking to
 * 01 - you, the player
 * 02 - the character you're talking to if there is more than one character (like Timmy and Tommy at Nook's Cranny, if you were talking to Timmy in this case, then this would be Timmy.)
 * 03 - the other character if more than one character at a time (Tommy in the case described above.)

Other times, you might see a tag that looks like this: 0E 00 6E 00 ?? 00 00 00

This is a string tag. It follows almost the same format as the emotion tag, as many other kinds of tags do:


 * - Starts the tag
 * - Command for getting certain strings
 * - The string to get. List is found here.
 * - Parameter size. Value is 0 (no parameters) unless specified.

There are many other tags that follow this same format. Each of the parts of the parts will always have a  byte after it, unless it is the parameters, in which they only take up what is specified in the parameter count.


 * starting the tag
 * The command you want the tag to do
 * The parameter size
 * The parameters (takes up as much as the param size specifies)

The rest of the tags can be found at this page in ACMods.org.