Skip to content

Tutorial: Cast Credits

Supremekirb edited this page Dec 12, 2022 · 4 revisions

Cast Credits

The Cast sequence text is stored into the ROM as a compressed graphic, located in the data bank 21DA35-21E6E6. Thankfully though, thanks to recent features in CoilSnake 4.0, you can now easily edit the Cast sequence without having to deal with all the compressed graphics stuff!

Although, there's one part of the Cast sequence that is nor encapsulated as a compressed graphic, and that is the text for Paula's mom, Paula's dad and Poo's master.

These are taken into account in the dynamic_names.yml, so how do we translate the remaining three names in the Cast credits for Paula's mom, Paula's dad and Poo's master? Well, let's start!


Quick access:

  1. Editing the Dynamic Names
  2. Miscellaneous & Name Graphics
  3. Editing the Graphic Entries

1. Editing the Dynamic Names.

The Dynamic Names (as they were labelled) are the three particular instances in the Cast Credits where the names themselves are not taken from a compressed graphic, but rather as direct text from the game's data.

The three names that depend on this are Paula's mom, Paula's dad and Poo's master. Thanks to some ASM trickery, we are able to format these three names in whatever order we want.

To begin with, first we need to figure out if the language you are translating the game to uses the name first for genitive forms. For example, English does the following:

  • "Paula's mom"

While other languages, like Spanish, have the Paula name AFTER:

  • "Mamá de Paula"

To edit these three, we need to focus our attention to the dynamic_names.yml file inside the Cast folder. Once opened, you will notice the three previously mentioned entries with two settings.

Entry:
  mode: none/suffix/prefix
  text: Your text

Let's explain each one:

  • Entry: Simple as that, this specifies which text will be replaced. This should NOT be modified
  • mode: none, suffix or prefix. This setting establishes whether or not the text will use Paula or Poo's name in it (none), or if the name of the character will appear first or after your custom text.
  • text: Self explanatory. Your own text goes here.

The original game has the following:

Paula's dad:
  mode: suffix
  text: '''s dad'
Paula's mom:
  mode: suffix
  text: '''s mom'
Poo's master:
  mode: suffix
  text: '''s Master'

As you can see, it doesn't include neither Paula's nor Poo's name in there. That's because those names are taken from the game's RAM, and only the 's dad and the rest are taken as plain text.

So, to make full us of the mode setting, let's explain what each option for it does, alongside a clear example using Paula's dad as the base for each mode:

  • suffix: Using the suffix setting will make it so that Paula/Poo's name appears first, or in other words, before your text. So it will appear in game like "Paula (your text)" or "Poo (your text)". The original game uses this for all three, so that it can print "Paula" and "Poo" first, and then the 's dad after. Original EarthBound prints the text with Paula's dad with Paula's name being printed first as a suffix, and then the rest of the text:
Paula's dad:
  mode: suffix
  text: ''s dad'
  • prefix: Using the prefix setting will make it so that Paula/Poo's name appears last, or in other words, after your text. In-game it will appear like "(Your text) Paula" or "(Your text) Poo". This is useful for certain languages that tend to place certain things last in a sentence. In Spanish, the genitive form requires the name to go last in the sentence. In this case, the prefix form will be of great help:
Paula's dad:
  mode: prefix
  text: 'Pap[B0] de '

(Don't forget to leave a space so that Paula's name doesn't start immediately after the last letter you write)

  • none: This will make it so that neither Paula's/Poo's name appears on the text when the Cast appears, meaning only the text you write in text will show up, nothing else. Let's say you don't want to include Paula's name anywhere in there, or you want to give her dad a proper name, then you use the none setting:
Paula's dad:
  mode: none
  text: Paul Jones

2. Miscellaneous & Name Graphics.

The Miscellaneous and Main Name graphics for the Cast sequence can be found inside the MiscGraphic.png and NameGraphic.png images inside the Cast folder.

For the Miscellaneous grapgics image, you will find the CAST text, the CAST text underline and also the special mr. saturn letters with the Saturn font. These two are the only special graphics that are used for the Cast sequence, everything else uses the main NameGraphic.png.

Both Misc and Name graphic images have the names as sprite text, and these are segmented into 16x16 tiles as shown below:

CastTiles

The size of each tile is really important, as this is what will give us the correct value to input once we are modifying the graphic entries YML. It's recommended to use a software like "Graphics Gale", choosing it's 16x16 tile grid viewer to visualize this easily.

As long as you keep this in mind, you can edit the .png images at will. Add whatever text you want to, and you can expand or shorten the original images in horizontal size as you wish as well. Just make sure that you have a good way to see the 16x16 tiles and where each name starts (at which tile too). Also, keep in mind that at the moment you can't add new entries to the Cast sequence, at least not that we know of (yet).

With all that in mind, we can jump to the important part:


3. Editing the Graphic Entries.

Now that you know how to modify the Dynamic names, and you also know how to add your custom names to the .png images, it's time to learn how to add them so they display in-game properly.

Inside the graphics_entries.yml, we have all of the Cast entries in the following format:

number:
  begin: #
  misc: false/true
  size: #

Let's explain what each one does:

  • number: Numbered entry of the Cast text, following the NameGraphics.png image order from left to right.
  • begin: Numerical value. Determines the tile in which the sprite/text for the corresponding entry will begin. The very first 16x16 tile numbering begins with 0.
  • misc: false or true. This setting determines whether the image used will be the one from the NameGraphics.png (false) or the MiscGraphics.png (true).
  • size: Numerical value. Determines the size in 16x16 tiles of the current entry.

We'll take the previously posted image as a reference for the example:

CastTiles

Using Graphics Gale 16x16 grid options, we can visualize exactly how many tiles in space each entry takes. In this image, we have the "CAST" and its underline taking two 16x16 tiles each, while the name "Picky Minch" takes exactly four 16x16 tiles.

For "Picky Minch", we know that:

  1. "Picky Minch" is Entry #0, since it's the first name in the NameGraphics.png image.
  2. Begins at the starting tile of the image, which is tile #0
  3. Located inside the NameGraphics.png (false)
  4. Takes four 16x16 tiles wide inside NameGraphics.png

With that, we can easily changed its entry inside the YML file:

0:
  begin: 0
  misc: false
  size: 4

With that, we just setup Picky Minch's name in our game properly! Just take into consideration that, for the next numbered entry, the "begin" value will be the sum of begin+size of the current one. For example, for Lardna Minch, her entry will use a begin value of 4, since Picky Minch's size was 4 tiles. Next entry's beginning will depend on the size of its previous entry, and so on.

Now for the Cast image, which uses MiscGraphics.png, the setup is fairly similar to the previous once, except for the miscellaneous graphics, those are limited to entries 44 (CAST), 45 (____) and 46 (mr. saturn). For the word CAST, we know it's begins in the starting tile of the image, takes two 16x16 tiles of space, and it's inside the MiscGraphics.png image, so it's entry will be:

44:
  begin: 0
  misc: true
  size: 2

The key setting here is changing the misc flag from false to true, so CoilSnake knows to use the MiscGraphics instead of the NameGraphics for this entry.


Are you using CoilSnake 3.33 or below? See this page: Cast Credits (3.X)

Clone this wiki locally