Skip to content
Vittorioux edited this page Feb 6, 2026 · 4 revisions

Every font used in-game is saved in the Fonts directory. Each font is represented by two files:

  • The .png file contains each letter's appearance.
  • The .yml file contains each letter's width in pixels

0: 2
1: 2
2: 3
3: 2
4: 5
5: 9
6: 7
7: 2
8: 3
etc, etc...
  • 0.png is the main font
  • 1.png is the Mr. Saturn font
  • 2.png is the flyover/coffee break font
  • 3.png is used in the HP/PP name cards
  • 4.png is used at the tops of certain windows (for example, the windows in battle display character names)
  • credits.png is used in the end credits (it doesn't have a .yml file because it's monospace)

Adding New Characters

You may notice that there are 32 blank characters at the end of each font (excluding the credits font). This is because CoilSnake has expanded the fonts for you; you now have access to 32 more characters than EarthBound originally supported in each font. This feature should prove invaluable to you if you are writing the text of your hack in a language with more letters than in the English alphabet.

Since CoilSnake doesn't know what kind of letters or symbols you're going to be using these new characters for, you'll have to use them in CCScript and CoilSnake by specifying their hexidecimal values. The new characters go from 0xB0 to 0xCF. To use these special values in your text, simply put them between brackets like a control code.

For example, let's say you want your new game's main character to be composed of the first five of the 32 extra letters. In dont_care_names.yml, you would specify his default name like this:

0:
  Name 1: "[B0][B1][B2][B3][B4]"
  Name 2: Alec
  Name 3: Roger
  Name 4: Will
  Name 5: Brian
  Name 6: Tyler
  Name 7: Lane

Thus, keep in mind that whenever you want to use one or more of these extra characters in a .yml file, you will have to surround them in quotes for them to be interpreted correctly (check the example above).

In CCScript, you could write his name out like this:

test_npc:
    "@Oh, hello [B0][B1][B2][B3][B4]!" end

Getting the Widths Right

When printing text, EarthBound does not naturally put a space between letters, instead this space is part of each letter itself. So if you want a custom character to display right when printed out without getting smushed against other letters, make the width 1 pixel more than the character is actually wide. So if your new character is 6 pixels wide, you would put 7 into widths.yml.

The first character in each font corresponds to an hex value of 0x50, which means that every other character is offset by that same amount. This means that, if you wanted to edit one of the extra character's width (for example, 0xB0), you would subtract 0x50 from it (resulting in 0x60 = decimal 96, for the given example), and this is the key you'd search for in x_widths.yml to edit its value.

Adding these new characters to the naming keyboard

By default, the only way for custom characters to be used is in the Don't Care names and in ccscript. If you want players to be able to choose these characters themselves when naming the party or the player, you can use the Extended Naming Screen Character Table created by PhoenixBound & ShadowOne333 to modify the naming keyboard.

Useful Resources

Getting Started

Finishing Up

Sprites and Graphics

Characters and Dialogue

Misc.

Music

Map Editing

Battle Data

Advanced

CoilSnake Development Guide

Fan Translation Tutorial

Errors and Issues

Obsolete

Clone this wiki locally