I’ve decided to share a very old and imcomplete program I wrote a very long time ago in Visual Basic. Combificator was a tool to edit the vertical columns that screens in The Legend of Zelda are constructed from.
The program was abandoned because it kept causing strange glitches in the ROMs, and I didn’t know if the program was corrupting something or if this was just the game’s quirky code being quirky. (Example quirk to show what kind of quirkiness I’m talking about: Moving the staircase within one particular screen causes graphical glitching every time the sub-screen is opened.)
The basic editing feature works (more or less). There’s a number of features in the menu, some of which work, some are bugged, and some are incomplete. Should you try and use the program as-is, I wish you luck and strongly recommend thorough testing of your ROM. Should you want to complete, improve, or modify the program, you’re more than welcome. I reserve no rights for this program.
How It Works
I apologize in advance for the immense sense of dissatisfaction this program brings to anyone who intends to use or understand it. Get ready, because it’s confusing.
As far as compression, the vertical “combos” are compressed, and this is done by overlapping them. If one combo has trees at the top, and another has trees at the bottom, those trees will occupy the same memory. Additionally, tiles can be doubled. If two trees appear one directly above the other, the two trees can be stored in a single byte.
The combos are stored as one big long string of tiles (1). You can select a tile in the tile picker (2), and left-click in the tiles (1) to edit them. Right-click a tile on the left for more options. Notice that to the right of each tile is a black bar. Tiles that are doubled have a double-sized black bar (3) to so indicate. Holding control and clicking a tile toggles whether it’s doubled.
Any of these tiles can be tagged as the start of a combo, which is represented as a red bar to the right of the tiles (4). Shift-clicking a tile toggles whether it is tagged as the start of a combo. In the middle (5) is a preview of the combos whose tiles are visible on the left (1). (You can also display all combos using the “View” menu.) Once you’re done, if you’ve added, removed, or re-sized any combos, the combos need to be re-organized into “tables” with no more than 16 combos per table. How is this done? Just click “AutoTable” under the “Tools” menu, and it’s done magically.
Still confused? Probably, but I don’t know how else to explain it. Think it’s a terrible interface? You’re right. Still, I managed to use it to hand-recompress the combos used in the original game to roughly 70% of their original size using this program, creating space for new, unique combos, and thus allow more variety in the overworld.
Now, if you save your ROM and try to play it, you may notice the world is corrupted (the extent of corruption depends on how much the combos were modified). That’s because editing the combos caused their order to become jumbled, and thus switched them around throughout the overworld. Unless you’re planning on making a whole new world from scratch, that’ll probably be a problem.
You’ll notice a “Create conversion table” feature in the “Tools” menu. Conversion tables are a mapping between the original order of combos and the order they appear in after the combos were modified. These are intended to be used to un-jumble the world, but the feature to apply a conversion table is not fully implemented, so you’re out of luck.