Newest Hacks

Brightness fix SMAS + SMW  Improvement Latinfix Super Royal Pals.

Newest Translations

Zelda II: The Adventure of Link Lunar Pool Final Fight Adventure Island

Newest Utilities

sf_decrunch Elemental Gearbolt (PSX) BIN repacker Super Gokuden 1 Translation Tools DashEditor - Mega Man Legends Translation Toolkit

Newest Reviews

Super Princess Sis - Two Drunk Princess (Two Players Hack) Ganbare Goemon 3: Shishi Juurokubee no Karakuri Manjigatame Ganbare Goemon 2: Kiteretsu Shougun Magginesu Pac-Mania arcade style tiles/sprites/colors
  • Hacks | Super Princess Sis - Two Drunk Princess (Two Players Hack)
  • Translations | Ganbare Goemon 3: Shishi Juurokubee no Karakuri Manjigatame
  • Translations | Ganbare Goemon 2: Kiteretsu Shougun Magginesu
  • Hacks | Pac-Mania arcade style tiles/sprites/colors

Newest Homebrew

4 Way Play test ROM Retail Clerk '89 Sega Genesis 6 button controller test Parachute

Featured Hack Images

SMA2 - Super Mario World Color Restoration Metroid Origin Big Boo's Revenge Rockman Cray

Featured Translation Images

Fate/Stay Night Demo Puyo Puyo! 15th Anniversary Mega Man Pokémon: Yellow Version - Special Pikachu Edition

Recent Updates

Romancia Narrow

Description:

This variable-width font was created for Romancia because it was impossible to simply expand the text box. The original game does not write tiles to the text box. Instead the same 30 tiles are permanently used to form the contents of the text box. The tiles’ pattern tables are in VRAM, and the pattern tables are written to with the shapes of the letters from PROM, based on the text that needs to be displayed.

Well, there was no way that English text was going fit in a 30 character box and there were no more tiles to use to expand the size of the box. Also, due to the way the game works, with the text writing and erasing automatically just by the player moving, there was no clean way to make multiple pages of text; no way of reading a button press to indicate done reading the first page. The only thing that was going to work was to display multiple characters per tile. My goal was to make the narrowest font possible.

So, this was my first task. If I couldn’t get it to work, there was no reason to continue working on the game, and we would abandon the project. It was a fun challenge. I knew people implemented VWFs on Genesis and SNES games, but I didn’t look at any of those routines. I just thought about what needed to be done and wrote the code out. I kept editing it until it fit in the location where original text code existed.

Well, after I tested the code that I wrote and ironed out all the bugs to get it to write and erase text correctly, it looked like it wasn’t going to work. There was a timing issue. While it was writing the text, the screen would scroll randomly. This was due to the code for displaying one tile taking too long for the NMI. I had done everything I could think of to make the routine as efficient as possible, but it still had a problem. I looked everywhere in the code to see what I could disable, but nothing worked.

After days, I stumbled upon a solution. I simply made the maximum height of the characters 7 pixels instead of 8. Most characters aren’t 8 pixels high anyway, since you normally need a blank row of pixels to separate lines of characters. That was it. It now looks like the font you see today with no timing issues. A 7-pixel font also had another advantage. The VWF information could be stored on 1st with the 7 pixel bytes following it and now it was easy to view the font and its VFW info together.

Links: