Well, one of the three story segments in Ashita No Joe has been reinserted - part of the true ending. Well, it's sorta been reinserted - I'm using a temporary uppercase-only font, and once the process is finished, I'll be able to go back and edit the script so it actually has uppercase and lowercase letters.
The three segments are arranged in a weird way in the game. The first half of the true ending comes first, followed by the only story segment you can see in a normal game, and the second half of the true ending comes last. The game also has two sets of credits depending on the ending.
I've had a weird issue - for some reason part of the true ending's graphics are gone after reinserting the script. I'm not sure if it's because the game has protection, or if it's because I messed around with the wrong bits of code. I'll have to reinsert the text into another rom and see if that fixes things.
Since I actually had a breakthrough last night, might as well post about it.
The script has been translated for a long time now, but I never really bothered to reinsert it because I couldn't figure out the pointers, and then general laziness set in, so eh. Anyway. I spent a bit of last night messing around, trying to figure out where the pointers were stored. At first, I thought they were right above the main script, but then I realized that that area stored the credits. I checked the part before that, nope, nothing.
After a bit of thinking, I thought I'd figured it out... and nothing. So I tried the absolute simplest thing - the standard SNES pointer lookup method that most everyone knows about by now.
And it worked.
All pointers are stored at a location close to $8000 in the rom file. I couldn't find them because I expected them to be close to the text, not that far away! What? I suck at hacking SNES games, why'd you think I haven't messed with that many?
Anyway. Here's an example of a string, and how the formula works.
That string is located at location 1994A (hexadecimal notation) in the rom. If we follow the classic SNES pointer lookup method, then we take the last four digits of that value, subtract $0200 (since the rom I'm using has a header), then flip the values. So we'd end up with a value of $4A97. I searched for that value and found it at location $8640. Pointers found. *fanfare*
However, finding the pointers didn't really fix anything, because of the text engine the game used. I didn't realize this until after I figured out the pointers, but I'll write about it on my next post.
Been too busy with real life. And I've been trying to scrape up something to show to prospective employers, so the magic just isn't happening.
Oh yeah, Ashita No Joe's text system is a pain in the ass to edit.
For the longest time, I thought that Ashita No Joe only had one ending. But I was poking around the translated script and I noticed that it was referencing a bunch of stuff from the original manga. So I hit up Wikipedia, and looked at the ending... and realized I was going about the final battle the wrong way.
So I got to the final fight. And I let the time run out (not an easy thing to do.) And I get the real ending. And I mean the REAL ending. It's a shame I can't translate the voiceovers, but yeah. If you've seen the show, read the manga, or have seen Rocky Joe (hi Italy!), you already know how it ends. And it doesn't end nicely.
This game made me depressed. That's about all I can say at the moment. And no, I'm not dead.
Just working super dumb late night shifts at work.
I promise, more updates will come soon.
Now I remember why I stopped working on Dunk Heroes.
The game uses two different text encoding methods for the pre-game menus and the names that show up in the court. The pre-game menus have access to all the letters in memory, but the in-game player names do not. Which means that all my work to reinsert the player names all squished up was in vain; I can't fix everything so I'm going to have to start over from scratch.
The parts that are 100% done (attack and item names) will be easy to reinsert, but the rest of the items, such as the menus, will have to be changed around quite a bit. I'm going to stop work on Dunk Heroes for the moment and focus on other games instead. I'm burned out.
Oh yeah, there's a new font pack available at the Fonts section.
When I started writing the translated move names for Dunk Heroes, I wrote the reinsertion script (using Klarth's Atlas software) so that it would insert text beginning at location $137AC in the file, and ending at location $139E3. I chose that address because the super move names began after that location. I eventually figured out that the game reads the super move names just as it reads the rest of the names (but they're not stored in the exact same format; the standard names end with a <$FF>, while the super move names did not).
And so, I continued editing the names, finding less and less space to work with. I was cutting corners; adding icons to replace "punch" and "kick" in the script, and making differently named but still similar moves use the same name in the script. By the time I was down to the last two teams, I was left with 40 bytes, and at least twenty move names that had been left over.
But then, I checked out the game itself via a hex editor, and realized something.
I had completely forgotten to take into account the space used by the super moves.
This also means that part of the reinsertion is done. Every character in the Nekketsu team has their own super move, while the other teams have one super move of their own.
Here's some pictures. (more...)
Icons not final, this is just a test of how this looks...