News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Author Topic: The Legend of Zelda changing text  (Read 7529 times)

Trax

  • Hero Member
  • *****
  • Posts: 501
    • View Profile
    • Trax ROM Hacking
Intro Text and Colors
« Reply #20 on: February 16, 2014, 11:25:35 pm »
All the sprites used in the Intro Screen are defined in Bank 2, at 90EE (+ 0x10 to account for header). There are 1C (28 decimal) sprites defined in this table. Each sprite is 4 bytes, standard sprite attributes:

Byte 0: Y Position
Byte 1: Tile Code
Byte 2: Color Code, sprite drawn behind background, flipping
Byte 3: X Position

The leaf that covers the 9 in your screenshot is sprite index 0D, with position 50,83. You can change Byte 0 to change its Y position or Byte 3 to change its X position...

----

The problem with the treasures names is only a question of relocating some pointers to allow for more space if the name is longer than the original. All the text (and other PPU commands) pointers are in a table at 94AD. There are 1D pointers in all. These is unused space at 9BD7 in Bank 2. The problematic text strings could be stored there, and the pointers changed accordingly...

----

After analysis, the problem with the TRESOROS line happens to be very tricky. The Intro with the story and the treasures uses Vertical Mirroring, which means Name Tables 0 and 2 are used in alternance during the scroll. When the line TRESOROS is rendered, Name Table 2 is in effect, and the Attributes Table 2 (at 2BC0) is filled with zeroes (background tiles are all white in the All Treasures part of the Intro), except for 4 bytes, set to FF, that make the wreaths green. These bytes are modified using these commands, at 1A85E in the ROM:

2B D0 02
FF FF

2B D6 02
FF FF

Bytes 0-1 define the PPU address to write to
Byte 2 defines the number of bytes to write

These values will modify the first and last 8 tiles of the line. Your problem is that because of the extra tiles that make the wreaths, two byte are not enough anymore. This case needs specific pointer relocation and some data tables would have to be moved elsewhere, because these PPU commands are nested into a big table that can't be split in two. But since there are plenty of unused space left in Banks 2 and 6, it is feasible. Since this is a very specific and advanced problem, I could do it for you if you send me the ROM by email...

Or you could take the lazy solution (less than ideal, in my opinion), and make the wreaths shorter, therefore leaving more space between the text and the wreaths, and you will have enough with the two bytes in the PPU commands to make the wreaths completely green. Or maybe you could add "TODOS" to the text, to make it longer. I don't know Spanish, so I'm just guessing...

By the way, my offsets are all based on the US version of the ROM (PRG0), so maybe some of them are different in the one you are using. If it's the case, we'll have to do a search to match the offsets to your ROM...

Demons exorcised...

Dr. Floppy

  • Restricted Access
  • Hero Member
  • *
  • Posts: 972
  • Make America GREAT Again!
    • View Profile
    • BaddestHacks.net
Re: The Legend of Zelda changing text
« Reply #21 on: February 17, 2014, 10:52:20 pm »
Any photos you could share on progress? :)

       


Mayorofunkytown

  • Jr. Member
  • **
  • Posts: 72
    • View Profile
Re: The Legend of Zelda changing text
« Reply #22 on: March 21, 2014, 11:22:43 pm »
Dr. Floppy that looks totally amazing! I absolutely cannot figure out the sprites in this game minus most of the items. Using the tlp program it's just a giant mess of shapes not sure if there's an easier program for this. The ladder in particular I wanted to turn into like a plank of wood but it seems to use multiple layers and it confuses me too much.

Question though could someone please explain how they are changing the story text color in a little more detail perhaps a screen shot of the actual edited hex. I can see all that fantastic stuff posted above and the datacrystal site is helpful but I am not super well versed in hex editing to understand it enough.