Caution! Expanding Items

16 years ago by Mato

Just wanna toss this up before I hit the hay for tonight, gotta get up early and hit the translation work hard tomorrow.


(whoa, listen to the JENOVA battle song from Final Fantasy 7 as you read this, it really makes it seem… dunno what the word is, but it’s neat)

Okay, so last time on Mr. Mato’s Neighborhood, we managed to get farther with the items hacking. As you’ll recall, the original Japanese version only allowed items to be 8 or 9 letters long. And that’s fine for languages like Japanese, but not so much with English — even just some of the ADJECTIVES in the item names already completely fill up that space, like “Expensive” or “Souvenir” (yeah that’s not an adjective, don’t sue me grammar commandos). So unless we wanna go with crappy old-school Game Boy RPG item names, this 8/9 character limit is unacceptable. (Actually, even FF3 for SNES had this problem, “Antdot” comes to mind 😛 ) If you’ve played the MOTHER 3 Menu Patch before, you’ve seen how ugly the names can get.

So anyway, that’s the point of the last 1-2 weeks or so of my hacking – to expand item name lengths. What sucks is that extending the names in the battle menus is almost done without doing a thing! But with these non-battle menus, expanding the item names is a complete mess, and as I hack things to work, the hole just gets deeper and deeper and things get far more difficult than anyone could’ve imagined.

Anywho, here’s where we left off last time.


It looked liked everything was working, and we managed to get 20 letters per name now, instead of a measly 9. MUCH better 😀 But, it turns out we were wrong…

For some reason, the game wouldn’t print what was on the last 3 item slots. HUH?!? 😯

What’s more, the game seemed to barf on some other item screens:

And that’s where we left off. I later looked more closely at the problems. The cause of the first problem seemed easy enough – the names of those lines were either going too far into other routines’ memory, or the programming wasn’t set to read all the way out to the end of the new expanded text. Even though I had rewritten the memory-organizing equation thing to be really efficient, the text was probably still going too far out. So after some quick testing, it was obvious that that was the case.

This meant that we’d need to calculate just how much space we COULD safely use. This should’ve done much earlier, but at quick glance it LOOKED like the memory afterwards was safe to use, but apparently not. Anyway, doing the calculations, we were going to be able to only do 15 letters per word, if we were to make everything fit in the original space. I suppose that’s okay, but I really didn’t want to half-ass it, so I decided to test my luck. If I couldn’t use memory ahead of the original memory block, maybe I could use the memory BEFORE the block. And luckily enough, it seemed possible 😀

The idea being to start the block of memory earlier in memory. I only needed 200 more bytes to allow for 20 letters per word. I spent a lot of time working on this; getting it to work was pretty painful.

Hmm, that’s not right.

oops

!!!!!!!!

Awesome, I fixed it, and it displays it all correctly 😯

Party time! Excellent!

Let’s check out that other wacked-out menu now!

……

(insert swearing of your choice)

After testing and more unfun stuff, it was obvious that the problem was still the last 3 items. But the problem wasn’t in any of the routines and hacks I’d become so familiar with. This was being caused by something else, in a completely different part of memory, used by a completely different routine. No idea about any of it, though. All that was clear was that these three items caused issues elsewhere in memory. The cause of the graphical glitches is very obvious – something’s interfering with the names of the text somewhere, and so the VWF counter is adding garbage numbers in because of garbage data being sent to it.

After hours of trying to trace things and trying to step through the actual code line by line, I just said screw it, let’s go with 15 letters per line and ditch this memory moving thing. So I shaved down the names of about 10% of the items (which was very painful to do) and undid some of my hacks. The program now used ONLY the original memory allotted to the item names. That’d fix things finally.

WRONG

That problem with the last three items still persisted (though my 15-letter long change worked flawlessly). So changing stuff to fit within the original memory constraints wasn’t the issue. The issue must be that memory related to all this text is being written elsewhere, and all this extra text was never intended for by the original programmers. So that’s another completely huge mystery thing to hack.

(insert swearing)

So after some time to reflect on the situation in a calmer manner, I decided to turn off all my item-length hacks for the time being and come back to the issue at another time. There are other issues with menus that need attention and can actually be done without as much headache. So I’m gonna mess with that next. It’ll be mostly 8-bit hacks and some VWF-related stuff. And once they’re working, the results will be drastic. They’ll actually look like real menus finally 😛

Oh yeah, for a short bit there, I considered saying screw it, let’s don’t do any of this name-extending hack and let’s just use 8 or 9-letter names. So I inserted the names I used for the menu patch to see what it looked like. Here’s some comparison pics, and other pics of them in action just to see.


  • 20 letter hack

  • No hack, menu patch text

Doesn’t seem TOO bad, but then as I look at these other pics, I can only shake my head and say, “No.”


After looking back at the pics at the start of this post, I can only say that the translation absolutely MUST have at least 18 letters per name, any less is unacceptable 😐 I got so close to making it work with 20 letters, even. So I think coming back to it later with a fresh mind is probably the best option for now. And maybe my skills will be better by then, too. I might have to wind up trying to recreate the original C coding to help myself make sense of how this name junk works. Which will be a very painful and slow process. But it’s almost laughable when you consider that getting the battle menus to show the full names required almost NO hacking.

Anyway, that’s the latest so far. Managed to take a step or two forward, but then a couple back. Hopefully later in the week I’ll have some neat pics of menu stuff looking better.

Posted on Monday, December 3rd, 2007 at 1:46 am by Mato, filed under Uncategorized. You can follow any responses to this entry through the RSS 2.0 feed. Comments and pings are currently closed.

47 Responses to “Caution! Expanding Items”

  1. Magish said 16 years ago:

    Wh00t! Decided to check in before heading off to bed, and whaddya know, update happened 2 minutes ago! 🙂

    Anyway, just wanna say thanks a ton for all the effort you guys are putting into this, and good luck getting everything to work!

  2. hooba said 16 years ago:

    I cannot believe I was beaten to the first reply.

  3. Steve said 16 years ago:

    Wow, that was brutal. After all of that frustrating work, is the blog post here kind of like a therapy session? Whatever helps with the progress and your sanity!

    I would think no one would fault you for going either way on name lengths. However, it sounds like you’d really like to make a 20-letter max work so I say go for it, even if it takes longer. As a translator, I’m sure your biggest satisfaction is in making everything as close to the original as possible.

  4. squall said 16 years ago:

    wow listening to the jenova battle song while reading this update made it seem a lot more action packed. hopefully you can get this working with at least 18 char lengths. those unhacked pics look pretty ugly. thanks for keeping us updated. good luck!!

  5. hooba said 16 years ago:

    Also, great work hammering through this stuff for us! I know it seems sometimes like you’re taking steps backwards, but every time it feels like you’ve hit a wall, you’re really learning a bit more about how to solve the real problem.

    Thanks!

  6. snakepissskin said 16 years ago:

    i’m bored, i’ll be back when everything’s finished. lol.

    final fantasy 7

  7. snakepissskin said 16 years ago:

    internet’s caving in.

  8. hunter said 16 years ago:

    you should change “big city cola” to “pork soda” as a tribute to PRIMUS, because they rule

  9. Dr. Meat said 16 years ago:

    Tomato you and the rest of your team are God’s soldiers and you must never forget that

    You must go on a crusade through this game’s whack code and settle in the promised land of the finally completed patch

  10. kimba28 said 16 years ago:

    “DCMC UNDWR”?!?! What do you do with those???????

  11. Prosthesis said 16 years ago:

    hey, keep up the hard work, I’m doing a ton of assembler stuff in college right now, and I feel your pain. I know we all appreciate the great amount of time and work you’ve put in to bring Mother 3 to the fans.
    Just remember, we’re always behind you 100%.

  12. Product said 16 years ago:

    Mato,

    You should think about doing a Q&A for the fans. I have a lot of question about the translation.

    How much (if any) dialoge is done ? We can live without item descriptions.

    How many people are working on this project ? Because it seems like you’re all by your self.

    Best of luck, I FULLY support you. This wait is really killing me…

  13. Panichurtz said 16 years ago:

    Wow, this is nuts. I don’t understand a word of what you did. I tried my hand at programming once, it was disastrous.

    And Kimba? The DCMC underwear is Duster’s starting Body equipment when you find him in Chapter 5.

  14. kimba28 said 16 years ago:

    Thanks, I was just wondering.

  15. Brian said 16 years ago:

    Would it make the game any less enjoyable for you if you started seeing the code instead of the graphics? It probably would for me.

  16. Hemlock said 16 years ago:

    There is a lot of progress going on, and I know that everyone on the team is doing their best. I just wish I could help out somehow… I think I’m going to go learn how to hack, if only to understand what’s going on with all this. Keep up the good work!

    -Hemlock

  17. CrimsonNeko said 16 years ago:

    Probably best to give it a little break. Sounds like you’re making awesome progress, so there’s no point in letting this stop you. Besides, maybe you’ll fix the issue when hacking some other random line of code. Might be a good idea to randomly try this patch every once in a while after tweaking the program. Anything changes, and you might of found the problem. Course, you probably already thought of though….I’m tired, and need sleep badly. Just love the work you guys are doing, keep it up! We’re all behind you 100%

  18. Coconut of Enlightenment said 16 years ago:

    Rotten Eclair Powder? Big City Cola Tart? What kind of game is this?

  19. Abysmal said 16 years ago:

    I do hope that you manage to get the 18 letter thing to work. Otherwise, where would we be without our Luxury Banana? We’d just have a LuxBanana:P. Anyways, keep up the good work! Good luck!

  20. Tom Tom Tom said 16 years ago:

    Mato, you are a saint for doing all of this. But seriously, can’t some of the other guys help you out? I would learn computer programming to help complete this project (as others would as well).

    So call in the cavalry! It seems like you are the only one working on this! What happened to the UNIFIED mother three translation project?

  21. Mato said 16 years ago:

    Steve: Yeah, I guess it kind of is. More than anything, I think it helps organize my thoughts better. Plus, since I have stuff documented now, it’ll be easier for me or someone else to come back later and pick things up. Probably. It’s never easy to pick up other people’s work though.

    Product: Some of your answers are already in the site FAQ. I already finished all of the first draft of the main script.

    Brian: Kind of. Every once in a while I’ll play a few minutes of the actual game, and it seems so different to me. Like, the fact the game I’m hacking and the game I’m playing are the same game doesn’t register in my brain. So much work to do thoughhhhhhh

    Tom Tom Tom: Like I mentioned before, everyone’s busy with their own lives/projects/etc. so at the moment, I guess I kind of am the only one working on it fully. Only reason I can put in as much time as I have is because I don’t work a standard 9-5 job and because I sleep less. It’s really taking its toll so I hope some of the other hackers will be able to help soon 😯 Not only that, they’re WAY more skilled than I am.

  22. A Fan said 16 years ago:

    The GBA doesn’t have any concept of a memory page or page alignment or something screwball like that, does it?

    It just seems odd that it’s always the last three items, no matter their position in memory. Maybe the equipped/not equipped status indicators are supposed to be there or something?

    But you probably already checked that, and some completely different part of the game is misreading the inventory list or something. Hmm… What else even uses that?

  23. TheReaper said 16 years ago:

    Mato its best if you take time to rest a bit and man making the items names work with 20 letters looks so much better than with no hack even if it takes way longer its worth the wait.

  24. A Fan said 16 years ago:

    Was trying to think of what else *might* care about the inventory list since you’re stuck right now and thought of a few more possibilities. Of course, they’re mere hunches not based on any knowledge of the code, but they might have some slim chance of helping 🙂

    * Equipped/not equipped status (I already mentioned this)
    * Selected item (that feather thingy)
    * Item swapping (can you move items around to organize them?)

    In the mean time, I guess I should read those sites you gave me and figure out how to work the debugger at some point 🙂 Not likely that I’ll be able to figure out anything that’s eluded you so far, but you’re right that sometimes a fresh mind helps.

    As always, we’re all cheering you on!

  25. DaMarsMan said 16 years ago:

    Just create tiles that use more than 1 letter per tile. Use two indexes for the items…One for menus and one for scrolling text. Should be a lot easier.

  26. Mato said 16 years ago:

    A Fan: I still need to do some more detailed tests (I’ll probably wind up naming all the items 11111111 except certain items, which I’ll call 1111 or 11111 or 111111 etc. to see just how/where the breaking happens. Judging from some tests, I think the fact that sometimes the last three items work and don’t work is caused by the total # of letters of all item names, as weird as that sounds. Maybe the game stores the X, Y coords of each and every letter beforehand. Only thing I can think up right now.

    DaMarsMan: The thought of DTE or something along those lines had crossed my mind, but it’d be too much of a pain to get to work, and even then I’d need to optimize all the item names, then test all the item names, and possibly test them in all possible combinations in the item menus to make sure the current problem doesn’t show up, and that’s way too much. Unless you’re talking about making combined tiles on the fly.

    But it’s an option, so I’ll keep it on the table if nothing else works 😛

  27. Gary Biela said 16 years ago:

    Hey guys, I just wanted to say this is lookin’ pretty good and I’m ready to eat!!! 😉 😉 ;););)::::)_+++=

    Try naming the items 11111111 and various to split up the probleme. than ks, much love,

    Gary Biela,

    xoxo

  28. Wiiplayah43 said 16 years ago:

    Nice, but I noticed two things: The names occasionally cut through the menu border, and long characters such as g, q, & y were cut off at the bottom. Just thought I’d let you know in case you didn’t notice. Anyway, nice work! 🙂

  29. A Fan said 16 years ago:

    Hmm, that’s really weird, then. I can certainly see it being cross-linked with something else in memory, but I’d think that it’d connect to some other bit of character data. Then again, this program apparently does make weird assumptions about the screen…

    The only thing that bothers me about that explanation is that it was always the last three items, even when you shrunk the item name length down? Unless I misunderstood that part of the story. So something connects to this code, and it has to go through your new memory calculation code otherwise, it wouldn’t know where those items were every time you moved them, no?

    Or maybe your memory-layout / character counting math has an overflow in it somewhere? Hmm… That sort of thing could explain it, even though it seems unlikely.

  30. A Fan said 16 years ago:

    Wiiplayah43:

    Trust me, they’ve noticed 🙂

    (Read the FAQ page.)

  31. winfrenzy said 16 years ago:

    Mato. You are amazing. Keep going or rest, it’s up to you. But you are still amazing.

  32. Mato said 16 years ago:

    A Fan: I’ve only really done tests on that one screen. I would ditch the bottom three items and then everything would look 100% A-OK. I’d then give other characters’ items to him and the screen would mess up again. (btw, simply rearranging his items still results in the same problems too.) If I gave him a bomb in that next empty slot though (item 14 I guess) it’d still show up as Bomb and without any problems. But any more letters than that and it’d blow up. Which leads me to believe it’s gotta do something with the # of letters. I should try to count the # of letters and see what the limit is, that might help. But I’m thinking I might just leave the problem for now.

    Wiiplayah43: Yeah, I know. Everyone makes sure to mention it once or twice per update 😯 I already addressed it in earlier posts and in comments to earlier posts. I stare at these pics constantly, so I do naturally notice stuff like that 😛 The issue is caused by the fact we had to implement new font routines to allow text hooks in the main dialoge text. Though these menus are EVIL and I don’t even want to start describing how painful it’s gonna be to hack some of the more detailed stuff, like how it uses different routines to redraw all the names each time you move the cursor. Very very ugly stuff. Anyway, hi.

  33. G.Wicks said 16 years ago:

    Man, that looks really frustrating… all that noise just for item names. Thanks for keeping at it though. 8 letter items would be pretty lame. So I’ll encourage you now.

    Awesome Show, Great Job!

  34. Artek said 16 years ago:

    I can feel the stress you’re under dripping off the blog (eww, it’s on my shoe!) From just looking at the screens, 20 letter items are definately worth it, though! This is probably pretty obvious if you’re a hacker, but I’m not, so I’ll ask. I know you fixed the hooks on the ‘y’s and ‘g’s in the dialogue. Will the solution you found for them there work in the menus, or do you have another blank sheet to add to your growing blank sheet box?

    Keep up the great work Mato! Just please don’t work to death on us.

    Please!

  35. cant wait to play-_- said 16 years ago:

    I just found this site a few days ago at that point i thought that all hope of playing mother 3 was lost until i could speak japanese(iv been studying for months but its going slow)Id just like to thank you mato(and everybody)for your hard work…-on another note one piece rocks i heard you worked on a translation(hey if you dont mind answoring a stupid question is it easy to get a job as a translator)

  36. butt said 16 years ago:

    Starmen has done a lot for us over the years; if it were not for them I would probably not even know there is a part 3. And I do not know for sure but I may not have found out about EB zero so easily even though I knew about it years before I knew about the site

    I love the games earthbound is my favorite.

  37. Ness said 16 years ago:

    Mato, I just wanted to tell you that you and the rest of the chosen ones are doing a service for this community and beyond. That service cannot be repaid with the worlds praise, riches or even beer. When this is over, you could give your address out and the next day there would be a huge crowd of people with simple offerings outside your door everyday. Just like that stupid Matrix sequel. I thank you from the deepest pit of my heart, and I am sure that the rest of the people here would say the same. Salute!

  38. A Fan said 16 years ago:

    Mato: Ugh. That’s some crazy code, then. On the few things I’ve had to reverse, I’ve always kept in mind the maxim “programmers are lazy.”

    But maybe that doesn’t apply to Mother programmers? Maybe “demented” is the correct word…

    Just keep us posted, we’re glad to hear that you’re still hard at work when less determined people would’ve given up by now 🙂

    cant wait to play-_-: I’m learning Japanese, too. But it’s not my day job, just for fun. I know what you mean about it being slow, but then I hit the parts where someone left out a line in the subtitles or something and I notice and understand what they’re saying, so keep at it 🙂 http://www.nihongoresources.com/ is a site you might find useful. Reading is MUCH harder than speaking & listening, too. I don’t expect to be able to play Mother 3 in Japanese any time soon, though. Mato will finish all the hacking _long_ before I learn all the kanji that everyone except for foreigners know 🙂 (Yeah, I know, M3 is 99% kana, but that’s actually not that helpful.) I heard that passing JLPT level 1 is all but necessary to get a job as a professional translator. At least that gives you something to aim for.

  39. Triple10X said 16 years ago:

    Keep up the great work Mato!! I know you’ll be able to fix this items issue and all will be well! Keep hard rockin’!

  40. cant wait to play-_-: said 16 years ago:

    thanks

  41. Mato said 16 years ago:

    Artek: there’s gonna be two parts to the problem. The easy part is simple, just figure out how the game determines where to draw the text, then pull it up 3 pixels. Hopefully it’ll be easier said than done. The hard part is that the game, with almost ALL menus, updates/redraws all the text each time you move the cursor. This causes hooks, if they’re fixed, to get unfixed. And we might have to edit every single instance of this. VERY ugly, and it even affects in-battle menus. Not fun not fun not fun

    cantwait: depends on what kind of translator, but it’s not too hard if you put your all into it. I haven’t gotten to the translator job part yet, but here’s this.

    A Fan: It’s probably a combination of weird programmers and smelly compiler. Like I said, I’ll mess with that junk later sometime, hopefully a holiday miracle will happen inside my brain.

    ———–

    Not really worthy of a whole update, but just wanted to show this — it only took like an hour to get this working 😛 It’s also slightly changed how I view the hacking side of things, so it could possibly speed things up a tiny bit, more details later. But for now, rejoice in the fact that the menus are starting to look more sane 😀

  42. Crazed Hippie said 16 years ago:

    just a crazy idea:

    try to get a nintendo programmer that has the guts to defy his own company to help you out or a least give you advice.

  43. Raj said 16 years ago:

    I think you ought to stick to 9 letters and look to completing the project for a release, wouldn’t simply items be updated with the versions? 9 or less wouldn’t matter for the earlier releases! We could help you guys test things with you keeping the update process with your workloads, as needed.

    But irregardless, thanks for the efforts, it’s appreciated. Reminds me of the first time I ran into your work with Dragon Warrior stuff with DeJAP.

  44. Miek said 16 years ago:

    Man, I wish I could deflect attacks with MY boxers. I suppose they’re not band merchandise; that’s the problem.

    I’ll have to check for System of a Down underwear next time they come around my city.

    C’mon. SOAD, DCMC, the only practical difference is the sharp decline in the use of organs and saxophones and a corresponding increase in the average tempo of songs.

    Oh, and they don’t fight robots. But neither do the Blues Brothers, and they’re basically the Runaway Five Minus Four in my book.

  45. A Fan said 16 years ago:

    Raj: They already put out a simple menu patch that does something like that, I think. But if you read the above, it still screws up the last three items, anyhow.

    And yeah, it took a while for it to dawn on me (probably when I discussed Bahamut Lagoon’s hacking troubles, only to find out that it was because I had a *VERY* old patch) that these are the folks who translated almost _all_ my favorite jRPGs 🙂 That incidentally drives home the point of not releasing a broken patch. People will pass it around online and others will think it’s a crappy game because they won’t know if or when the good stuff is finally available 🙁 That old patch actually kept me from getting more than halfway through the game until I updated it, and I’m sure it’s still available for download somewhere. Really sucks when you spend hours playing this great game, then *wham* it crashes in an unskippable cut scene.

    Me? I’ll wait for the good version. Mato & co. have hacked up translations of lots of great games. I have full confidence that they’ll figure out this one, even if they have to rewrite the whole damn thing in assembly 🙂 Mato here survived Lance, after all, who made people take timed tests on hex arithmetic, graded people based on how many bytes (yes, bytes) their solutions were bigger than his solution (which used sneaky tricks he didn’t show me until *after* the entire course was over), and gave you weird programming assignments like making a game of “Battleship” where your output is in the “B” register and memory addresses $00F0-$00FF (screen? there is no screen, you do a memory dump if you want to look at things), and made us write our programs using a Vax. Yes, a Vax. There were a few locked away in a lab no one else uses any more. But Lance did give you cheat sheets with all the gold-X and red-X key combos used in the editor. There was even an editor command to draw fancy ***** boxes around text in your comments.

    I still have my Little Pink Book, which is your only friend (you can use it on tests) & only textbook in his class. Don’t ask 🙂 But let’s just say it wouldn’t surprise me one bit if Mato remembers what 0x20FE does on the Motorola 86HC11…

    (In BASIC, you’d write something like 0x20FE as “10 GOTO 10”)

  46. EliotAndrews said 16 years ago:

    Nice update, and I loved your Learn Japanese webpage! Everything you said there really makes sense, it was an amazingly worthwhile read for me.

  47. Jesse said 16 years ago:

    Looks like the items in the menu are a pixel or two too high. 🙂