dog

Only here to post about CD-ROMs

I want!!
⬅️ this mark
🍷white
and Taste 🦆11
require

 

 

(Avatar by @texture, CD-ROM Journal button by @candiedreptile)


CD-ROM Journal
cdrom.ca/

OK, I'm finally finally unblocked on testing. Going to be making some real playtesting progress again soon.

People who have been following might remember I hit a block a couple months ago where Magic School Lunar started 100% reliably crashing when starting chapter 4. I eventually figured out the reason is that the game was hitting the RAM limit - chapter 4's script is just so big that the even-larger English script was hitting the upper limit of what the game could handle.

The classic approach here would be to just slice the script to ribbons and rip text out until it fits, but I'd like to do a little better than that. A previous version of the tooling, written by a collaborator who's not currently available, had an alternate solution: stick any extra text into spare space in RAM and point the game at it. That got removed once the tooling was updated to be able to expand the scripts, but that was before either of us realized we might actually run into the limit of how far we could expand scripts.

I've been busy with life and other side projects, but I finally had the time to sit down and work on it today, and I was able to restore the spare RAM redirection logic. I've made it optional: you can tell the dialogue insertion tool to either expand scripts, or to put spare script data in spare RAM, and I'm now only doing that for this one chapter.

As for what the spare RAM is? It's the font file. The original font file was pretty big: the game uses a 16x16 kanji font with thousands of characters1. The English version uses an 8x16 font, and it's been updated to use a single byte per character encoding instead of two bytes per character, which means that most of the kanji font file is completely unused. The original file is about 52KB, so that's at least 40-45KB of RAM that's getting wasted if it doesn't get reused for something else. And wouldn't you know it, I needed about 40KB of spare RAM! That works out.

Now that this is done, I'm going to get back to playtesting and making progress again.


  1. It's using a modified version of the classic Shift JIS encoding, which made work on this project a lot easier. Many games in this era still used completely custom encodings, so it was nice having something more standard. It's modified in two ways: 1) every codepoint is two-byte; there's no one-byte region, and 2) it only has a subset of the characters instead of the entire Shift JIS set.


You must log in to comment.