Sable Text Inserter

tl:dr: Sable is a text parser inserter for SNES games with a number of features, including:

  • Fully customizable encoding schemes via Yaml configuration.
  • Automatic line length checking.
  • Automatic address table generation.
  • LoROM, HiROM, and extended mapper supports.
  • 1 or 2 byte encoding support.
  • Fixed or variable width encoding support.
  • Built-in assembler via an Asar library.
  • Automatic ROM expansion(somewhat experimental, though!)

You can find the latest release at https://github.com/RobertTheSable/sable-text-converter/releases

Background:

Some of you may know me for making the most recent (at the time of writing, anyway) FE3 translation patch update. Or maybe the FE3 reverse recruitment patch I made, or some of the old Nightmare modules I made.

This tool is a side effect of my work on the translation. To update the translation to add the features I wanted, I reverse-engineered a dump of the existing script. Then I wrote a tool to re-insert my updated script. I didn’t want to have to manually search for errors like line overflows or missing terminators, so I added checks for those. I also wanted to make updates to the custom ASM in the older patches, so I used Asar as a built in assembler.

The tool was originally made for FE3 of course, but since most of the encoding is defined by Yaml/text files, it can be configured to insert text for most SNES games, I think. Especially as of version 1.2.0, which adds HiROM support.

Hopefully this is useful to people. And feel free to make feature requests, or even contribute yourself if you feel up to it. :slight_smile:

23 Likes

Holy shit Robert is finally on FEU! I was the one that told you your FE3 links were broken about a year ago

I hope this inspires more people here to hack FE3.

added github link for you

1 Like

Amazing! I am looking forward to giving this a go!

I’ve released Version 1.3.0 of Sable. There are a few small bugfixes, but the change is code page switching. This would probably mainly be useful for Japanese text, or any other language with a large number of glyphs in its writing system.

Other changes:

  • Allow multiple inMapping files to be specified.
  • Fixed a possible infinite loop when writing font lengths.
  • Fixed a crash that occurred if the output directly for font data wasn’t created before running.

Windows binaries for the release can be found on Github.

7 Likes

Another release out today. This fixes a bug where digraphs with spaces weren’t being parsed correctly.

It’s on Github as usual.

5 Likes

After a “brief” hiatus, I have a new release.

Version 1.4.0.

The main improvement is the addition of collision detection during the parsing stage. But I also added code for normalizing utf8 string variants, which should make things simpler for anyone using this for non-English languages.

5 Likes

I updated Sable again to fix a bug reported by a team working on a Korean translation.

Version 1.4.1.

2 Likes

I updated Sable to fix a bug with auto-addressing in folders with tables.

Version 1.4.2.

1 Like

I have a release candidate for a new version of sable. I tested it with my project, but I want to wait until I see that others can use it to mark it as stable 1.5.0-rc1: Release 1.5.0-RC1 · RobertTheSable/sable-text-converter · GitHub

The features that I added in this release are:

  • New parser setting: @end_on_label
  • New parser setting: @export_width
  • New config.yml Option: exportAllAddresses

See the Updates_1.5 file for more details: https://github.com/RobertTheSable/sable-text-converter/blob/master/Updates_1.5.md