Battle Text Blues
It’s been a few days, and those who’ve been following the comments have seen my mini-updates there, but since I won’t have much time this weekend, I figure it’s best to make a front page update to bring people up to date.
As you probably know, I’ve been working on hacking MOTHER 3’s battle text routine. And I made some big advancements the past week or two, as seen in previous updates. I’m very close to finishing the battle text hack, but there are some last things that are being stubborn.
Technical blah-blah talk ahead, ignore if that’s not your stuff
Talking thing out like this helps me collect my thoughts, so I guess let’s start at the beginning.
First, the battle text system was designed very poorly. Well, at the very least, it’s 100% obvious they weren’t thinking about localization when they designed it. Rather than simply print a letter, then move to the next spot, print the next letter, move to the next spot, print the next letter, which would allow for infinite letters per box, the designers created a type of “grid”. They set it up so there are 44 “boxes”, with 22 per line, for two lines total. That might not sound bad, but some enemy names in English are almost 22 letters in length π―
Anyway, the box grid system might not seem so bad at first, there are standard ways around this in ROM hacking. But this time it’s different. These boxes are actually represented by C-style structs, which are huge and stupid. Instead of printing directly to the correct location like a good programmer would, they instead “fill” up each box with a letter. If that makes sense. All the boxes are fixed in place (their coordinates are also in the structs), and then the game goes through and says, “OK, Box #1, you get the letter M. Box #2, you get the letter o. Box #3, you get the letter l.” And so forth. This is fine with Japanese, but not English. And because the structs are put on the stack, and because the stack is always growing as a battle goes on, trying to add more boxes would probably break things at some point.
Here’s kind of what I’m talking about. Here’s a normal non-VWF pic.
It’s not obvious, but the grid is there.
The grid is actually the exact opposite of what we want with a VWF — the grid keeps everything spaced the exact same space apart. A VWF is meant to have things spaced only as much as is needed. So what we want and what the programmers wanted are completely different.
This is why early pics and videos of battle stuff looked this way.
And this is why nobody, not even really experienced hackers, knew what to do to get a real VWF out of that. It’s a very inflexible design.
In September or so, Exophase did some REALLY detailed analysis of the battle system. We’d still have no idea how the battle system works without his help. I think he made a custom version of his GBA emu for the PSP to get the info before disappearing into the mist again. Then, after getting that info, Jeffman made a very simple VWF, if you remember. See here if you forgot π
It was really exciting, but it was still the same basic thing — all we’d done was change the locations of the boxes to make it look VWF. The same limitations were still there: 22 letters per line and 2 lines. 22 letters per line meant only 1/3 to 1/2 of the text box’s width would get used, and text would go ugly crazy if text needed to be scrolled up. Also, the automatic newline every 22 characters wasn’t automatic or anything at all; the game would simply put a letter in Box #23, which just happened to be on the next line. So that posed an extra problem to fix down the road.
So it was obvious we were going to need to do a much more complicated hack to get what we wanted: lines as long as we need them, and lines that act as they should be. But the entire battle text system is a HUGE mess, and going from one letter to the next is about 100,000-300,000 instructions. So whatever we do, it’s gonna have to work with the existing code.
So my idea was this: just as the next letter is about to be loaded, branch off to our own hack real quick, do some x,y coordinate calcuations of our own, then stuff that and other info back into Box #0 before it goes to print. Then, make it always stay on Box #0 until our hack detects the end of the text, at which time we trick the original code into thinking it’s done.
This worked surprisingly well, and produced this and this. I also had to purposely “break” the game’s original newline feeding code, or else every 22 letters the game would see if it needed to do newline-ish stuff. And then things would barf and go crazy.
This took a couple hours, but I eventually got it. Now text that spans multiple lines doesn’t get automatically barfed up by the original code.
The problem was, the game now wouldn’t parse control codes like newlines (we call them [BREAK]s) and cursor pauses (we call them [WAIT]s). No problem, I’d just handle them on my own. I could make [BREAK]s go to the next line easily enough, as seen here.
At this point, though, for some reason, the value I had for the total length of the current text wasn’t right anymore, and it’d produce some weird garbage and some really interesting memory overwrites (I’ll show videos someyear, they’re pretty funny).
After another many hours, I finally found out what the problem was. It was part typo and part stupidity π
But when it came to [WAIT] codes and other control codes, manually reproducing them isn’t an option. So I had to break the hack into two pieces and rewrite a lot of stuff. After probably 8 hours of staring at code the other day, I managed to get the game to handle control codes and [WAIT] codes and all that just fine π
And that led to yesterday. I figured that after getting [WAIT] to work right, it’d be smooth sailing from there, but it turns out that after a [WAIT] code, the text afterwards doesn’t get displayed — except for the final letter. I spent upwards of 12 hours straight tracking down that issue. Found out a lot about the code, but still haven’t figured out what’s up. What I *thought* was happening (and I still do) is that the game switches to a new Box somehow, and although my hack processes all the non-displayed letters, because the game’s not printing Box #0 anymore, the text doesn’t show up. But it doesn’t even TRY to print those letters, so there must be a status flag involved with them. And that doesn’t explain why the last letter DOES get displayed. Bah.
There are also some other little bugs at the moment, like how Box #0’s original location doesn’t get erased after text ends, and sometimes after a [WAIT] code, the game will crash randomly while you’re playing. Blah.
Anyway, it’s a big mess, and it’s stressy. But we knew this would be the toughest hack in the project, so it’s not a surprise.
Once the control code stuff is fixed (hopefully within the next week) then I can code the text-scrolling-up thing. I already have it half-implemented, but the control code thing is still a big issue and could really change the design of the hack, so I need to get it figured out first.
And that’s why battle text sucks.
Semi-good news is that it’ll be really easy to make the game do auto-word wraps (not letter wraps, word wraps π ) the way EarthBound does. This will probably save a good deal of time on manually-formatting the battle text, and will make the end result look even more professional.
2nd?
We’re all extremely thankful for your hard work, as seen here! Maybe you could come up with a sort of “Behind the scenes” update once the patch is completely done, showing more of tis sort of stuff. It’s very interesting.
Keep it up! π
Oh, ah. First?! There was a guy before me..
*Tis = this.
Thanks Mato and everyone for all of the effort you are putting into this. We all appreciate it and can’t wait for the final project! Keep up the good work!!!
Ah, how much easier this would totally be if it were originally open source. π A code monkey can dream, eh?
*high five for the dev team*
My brain hurts.
Excellent info! π
Man, I think I got a headache after reading that. We really appreciate all this stuff you guys are doing for us.
Thank you.
Roan: You should really post menu patch bugs/issues over at the place designated, not here. See the menu patch for details.
It sounds like you may have a bad ROM, though. One or two people have had this happen before.
(so I don’t look crazy, Roan keeps posting menu patch problems in different blog entries)
22 characters per line?
2 lines?
Printing 1 letter per box via strange, unneccesary code?
Holy cow, that sounds so stupid.
I really wonder…how can a game full of pure, untouched and freshly produced awesome be coded like this?
It sounds like it has been coded by monkeys or something.
I really hope that you guys find a way or another that will work at least 99% fine.
I wish you the best of luck. π
BALLIN!
I posted this after not looking at updates for awhile, sorry.
I didn’t know about any designated place for this, but seriously, the last post was exactly a glitch.
*wasn’t exactly a glitch* sorry.
o__O So it really was held together with band aids and rubber bands.
That’s so weird that it won’t print anything but the last letter. Maybe after a [wait] tag the game automatically waits for a certain number of spaces before printing again (thus ignoring most of the next line). Hee hee, that’s the best my non-programming mind can come up with.
Mato–you’ve done all of this work and you’re so close. Thank you! I’m sorry that this game is causing you massive horrible code-related headaches.
Yep, you guys are awesome.
cool!
You all are doing great!
Maybe, just a suggestion, make the new text appear on the second line, then the previous text appear on the first line, sort of like in mother 1(I think). Maybe if you try that you might get a little more knowledge of the codes. From what you said, this just sort-of came to me somehow.
Oh, and sprite-text-welding, isn’t that having one, one and part of, or multiple letters in single boxes in that grid?
Roan: Uhh, scrolling the text like that is the whole point of all this work π―
And the grid is only in design only, there’s no buffer to do sprite welding in. So it’s not an option, plus we’d still have to contend with all the same problems we have now but with extra work π
Hey Mato:
If you find yourself working too hard on M3 take a couple days off man. We all understand that you do this in your spare time, and we can wait an extra couple weeks if it means sparing your health. Thanks for all the hard work, but I don’t want to see you overwork yourself π Sometimes when coding and you get stuck the best thing to do is take a break.
confusing!!!
Question:
When the translation is all done, have you considered sending it to Nintendo or/and the NOA localization team?
They might say “hey, it’s already translated, lets pay$$$ mato and team for all their work and release it the way it is.”
I wonder if the coding was this bad for Mother 2. I didn’t keep track of things like this back then, but did localization for it take a long time? I got it when it was released, but never really considered localization times at that age.
As a c++ programmer, and from what I’ve read while lurking for the past year or so, it sounds like there were perhaps a dozen or more teams working in conjunction, but never really talking to one another, and then at the end they just threw all of the code together and patched it together when needed, and the way the Japanese language works just played out in their favor. Unfortunately English is a completely different beast…
Anyway, good luck Mato, and if you ever need a C++ coder or a 3D modeler/animator/texturer, just let me know.
I appreciate everything yall are doing in trying to make it 100% perfect for all of us fans. Thank you! Keep up the good work you guys. ^ ^b
Karuvitomsk: I’ve been saving pics and videos the whole time for just such a thing. In fact, if you don’t mind spoilers, there’s a topic on the starmen.net spoiler board full of other WIP pics/videos/etc. that I can’t show here. Interesting stuff.
V-King: The script routine uses a very similar method, though with a different implementation. All the programmers seemed to assume 22 characters per line everywhere. So it’s very obvious they didn’t have localization in mind at all. This weird limited grid system works fine for Japanese because you can say so much in so little. It’s just poorly done, and made harder because of the compiler they used.
Roan: Your question earlier about the naming stuff in the menu patch was really more of a story question. It’s like EarthBound. It knows your name because you typed it in earlier in the game.
Crazed Hippie: No, there’s no need for stuff like that. If anything, the # of patch downloads should speak for itself. So I hope people will dload the patch from here when it comes out. Luckily, the menu patch has been that way most of the time — people link to the menu patch page rather than host the patch themselves. Makes things nice and easy to count and it’s just a considerate thing to do π Anyway, I’m hoping we’ll at least get into the 6-digit downloads, which would be pretty awesome.
m9: I dunno, maybe. But M2 was probably programmed in assembly by hand, so it probably at least made more logical sense. I’ve always wanted to start hacking the M2 ROM to compare stats and script dumps and see what other stuff might’ve been cut out of the Japanese version, but I haven’t had time and probably won’t for another 80 years π
Mato: I don’t mean to question you or any of the other ROM hackers who all seem to agree on this point, but I would like to think that the Mother 3 programmers might not be quite the idiots they are sometimes made out to be. I am willing to believe that the code they wrote was actually very clean and logical, and was translated into the mess you’re wading through now by a good optimizing compiler that was doing its job. (And perhaps a whole chain of tools that was never intended to produce code fit for human consumption.)
For example, you have discovered many places in which code is duplicated instead of being put into a common routine. Couldn’t that be the result of inlining? Or take tail calls, for example– use of tail call optimization will result in a routine that is sometimes run in its own stack frame, and sometimes in the stack frame of its caller. That is very weird when you look at the assembly code, but the original source code was perfectly logical.
Of course, the other way to produce weird assembly code is to write weird C (or other high-level language), and I’m sure that was a part of it. And I know that at the end of the day, it doesn’t matter how the weirdness got there, it’s still a real pain in the butt to try to hack it. But being a programmer myself, I wouldn’t want someone to look at a release build of my code and conclude that I was off my rocker when I wrote it.
I really enjoy your “technical blah-blah talk” and the glimpses you give into the inner workings of a console game. I can’t wait to see the translation when it’s done, and my friends and I are cheering you on!
Well, when I talk about the programmers being smelly, it’s more related to things like there being 6 or so completely different font-loading routines, clearly made by different programmers, or the weird design choices they make, such as this grid/struct thing, or using sprite text when unnecessary, etc., etc. I can’t see the source code, so maybe it was really well thought out and documented, but the compiler would naturally make all of that useless for people in our situation. So it’s a combination of multiple teams + weird design + weird choices + compiler.
The programmers are obviously skilled if they could get a working game of this caliber working π
(How I wish for documentationnnnnnnnnn)
i wouldn’t be surprised if nintendo is just trying to prevent a localization….for SOME strange reason….maybe they think they can increase brawl sales somehow…
Another question, seeming on how you found out about this grid-box system, I assume you guys are also able to see the working algorithms of the many systems in the game? (Damage code, level-up code, etc.)
I know it is “Against the rules” But Not as a serious date or anything…. what are you guys shooting for? I don’t need to know when the patch is going to come out… just at the latest when?
April 20th, 2006
Well, you heard JeffMan. To the time machine!
Awesome job! This thing sounds like a nightmare! Hey Mato, out of curiousity, would you consider this the hardest thing you’ve had to work with as far as rom translations go? It sounds like not only did they never consider localization, but also that no one would ever bother looking at the finished code! What a mess! With how it’s going though, it sounds like, from a technical standpoint, we’ll have an even better version than the original π
He never said anything about 2006 A.D. π I think it’s 2006 P.K.
NessStar3000: Probably, but I don’t think anyone’s looked into it yet. I don’t think it’s really necessary for translation purposes, at least π
Very impressive!
Can’t wait for the finished product. I’m looking forward to finally playing this game portably, as in not sitting next to a computer with a translation guide open.
CrimsonNeko: I’ve usually just been the translator for ROM translation projects (though I did hack the heck out of EB and started PK Hack and all that), but from what many on the project are saying, this is a demon ROM compared to other games that people’ve worked on.
Uh. Maze. Zing!
I really appreciate the behind the scenes look at what you’re going through. Thanks!
Good lord, you guys must be really, really stressed dealing with all that crap. Thanks for all the patience, blood, sweat, and tears. I know it wasn’t brownie brown that worked on Mother 3 for N64, but if that version of the game was being programmed like this one is, it’s no wonder they ran into so many development problems and eventually canceled. The programming sounds like it’s done incredibly unprofessionally.
Don’t give up! We need you guys!
When this is finished I promise to bake you a cake. Maybe even a magic one. That’ll take the edge off for sure…
Still a few months away, but hoping for something nice on Mother’s Day. Keep up the great job!
First, as to my last comment… Yes, this is the name I go by online, although it doesn’t look quite as awesome in English, haha. =) ΡΠΎΠ²Π΅ΡΡΠΊΠΈΠΉ! looks better, I think. Also, sorry if the cyrillic does not work correctly, I hate to write in romanized Russian. Still, it does not look nearly as hard as the ground you guys are slogging through right now. I wish there was something I could do to help, besides cheering…
Keep on truckin
Well, the only way to really find out is to examine Magical Starsign, right? Perhaps it’s not much more a programming fault than it is a bizarre encryption method with strange algorithms up the wazoo… but then again, I really don’t know what I’m talking about. π
hey nice new note box. if people still ignore it, you can put a scrolling marquee on it (it’d look funny!)
anyway, have you guys found any easter eggs in the game code? there are probably spoilers, so just mention if you found any at all
Are you making backups regularly? I don’t want to jinx you or anything, but after what happened with the star ocean translation…
Yes, I personally back up pretty regularly, on my big USB backup drive and sometimes a little thumb drive I use for other backups too. We also share our latest builds/changes on a regular basis in our secret underground lair, so even if something does happen, and even if backups fail, we’ll still have access to recent stuff.
good luck, looks crazy
Good job Mato! It may be distracting you from the issue of VFW issues, but if you still need help translating a few of the enemy descriptions, send a few my way and I’ll see what I can do. I’m leader of an anime fansubbing group, and although I’m not our main translator, I hope to help in my spare time. Maybe try me out on a few to test me if you want, you can contact me at sailorspork at gmail dot com.
It’s no wonder Nintendo has had no apparent interest in translating this game. Thank sweet Jesus there are crazy awesome (or just crazy?) people like you guys to tackle this infernal beast.
So, question.
Does the patch hosted on the site here get updated with every little change, or what?
shadowdeku: Not sure what you mean exactly. There’s been plenty of stuff that’s not used and stuff that was meant to be used but never was. There’s tons of that stuff in the M3 spoiler forum.
Sailor Spork: I appreciate the offer, but the descriptions require in-game testing, editing, in-game testing, multiple times before moving on to the next one. So I’ll probably pick it back up once the major hacking is done.
A Silly Goose: Nintendo would’ve had the documented source code, so reprogramming the game would’ve taken only a few weeks (if that long).
balls: You mean the menu patch? The menu patch is separate from all this, and no, it’s going to stay at version 1.5 for good I’m pretty sure. The stuff you see in this blog is us working toward the final, real patch.
those screen shots look like a giant headache haha
anyway keep up the good work man
Ungodly battle system!!! O_O I guess I should wish that you don’t have too many headaches (if not having them isn’t an option)… :/
Holy smokeys, Mato.
after all this, I’m sure your learned Rom-Hacking skills could help you in any part of the VG business. Imagine the remake of any videogame where Nintendo no longer had the source? Call in TOMATO :O
In any case, what progress. Don’t you hate stupid little problems like these? You’ll have another 12 hours in front of the computer to rewrite a new routine, or you’ll hvae 12 hours in front to find that other typo. :/
Good luck. I’m proud of you, JeffMan’s, and any other lingering hax0rs’ continued efforts. π
That sounds incredibly troublesome.
Wow, on one hand, i’m glad that this has gotten so far along, and that the end seems to be starting to appear on the horizon now. However, on the other hand, i feel really sorry that you have to go through such hell just for us fans. Keep up the good work, but try not to over exert yourself, if you haven’t already.
I don’t have time to work on stuff for a little while, but I have a few more ideas to maybe fix this stuff. But what I think I *really* want to do is try to push our luck and simply use the existing game engine but double (or at least increase by some #) the number of “boxes” it uses. This is pretty risky, but if we can do it and it works (and we’d need to test it VERY intensively) then that’d make everything work well, it’d give us more letters per line, and things like the item get/throw away menu wouldn’t need much more extra hacking. But knowing our luck, it won’t work out π
thats so strange, using boxes for each figure. hopefully you guys will get it working, one way or another.
Wow. That looks really painful. And to think this is juggled with the real-life stuff, like school and what-not. I wish you guys the best of luck on overcoming this obstacle.
And forget the time machine. I got my Phase Distorter! π
“Battle Text Blues” sounds like a Runaway Five LP
Your’re doing a great job man! I’m always surprised how many questions you answer before I even see the update. I usually check every night but somehow there’s always so many questions and answers before I even read the update!
Staring at the code for 12 hours? I don’t think your’re getting appreciated enough! I wish you could and the others could get rewarded by this somehow.
Wow…this is some complicated stuff. It’s starting to sound like it may be easier to just remake the game from scratch. Heh. Well, keep up the good work.
Hey I’ve been watching you guys working on this for awhile now. π You all rock for doing this! I just got done beating Mother 3 today. π It was alot of fun but I wish I understand what was happening. But now when this is done I can understand it!
But anyways this looks like hard stuff there… I wish you alot of good luck! And don’t overwork yourselfs. π
i finally found a rom eb3 but i decided to play it in japanesse and now im kinda regreting it, its a great gameno doubt but one side of me says play it the other says wait a while see what happens heere! what should i do
You can always use the menu patch and then play a chapter or two π
——-
Anyway, I think I had a realization late last night, it might be possible to fix the “why is text after a [WAIT] not printing?” thing with one or two lines of code. I’ll try it out in a bit, I hope this works π
12 hours staring at ONE code…
damn…
Not “one” code. Just assembly code in general.
Anyway, I think I’m on the right track now. If I had time, I could probably finish this battle text hack today, but I guess it’ll have to wait until later. Or maybe if I finish that Phase Distorter III I’m working on…
I love reading this stuff(hey i was just wondering if anyone knows a good site with info on rom hacking-programming thanks)
This is my first post on here, and let me say that firstoff, to undertake such a huge project in defiance of nintendo is heroic in its own rite.
anyhoo, this text thing– it is very interesting. In my opinion, its not that the coding was done unprofessionally, it’s just that they truly were not planning a north american launch, so the the grid- coding bullshit makes sense.
^_^: romhacking.net is where you’d wanna go for stuff like that.
http://www.romhacking.net/start/ is great if you’re starting out, and http://agtp.romhack.net/docs.php has a couple things good for beginners too. Gideon’s Idiot’s Guide to Hacking is outdated by now probably, but it’s still a good read π
Man, I have to give you props. This sounds like real hell that you are working with. I know what it can be like staring at code for hours on end and man it can really burn you out. Hell, I have taken a year off my schooling just because I didn’t have the time to juggle my job and my C++ homework/studying, what you are doing is just unreal though. Keep with it man.
[…] aggiornamento della traduzione, che potete leggere qui; in pratica ci viene comunicato che manca poco al completamento dell’hacking del testo delle […]
Parli inglese?
Mio Italiano e molto male.
A grid system? So that’s why no one could find out why the line-breaks weren’t working. Man, that is one ugly situation. The cleanest way to fix it, of course, would be to delete the grid system and start over from scratch, but without the source code, that could take forever.
I was thinking that maybe you could just leave the grid blank and leave it as a background layer while you print text on top of it, but that wouldn’t work with the scrolling and control codes, would it? Plus you would have to write the routines for that, in assembly code.
But who knows, maybe the developers DID consider a North American release, but they did it with the belief that they could pass on their commented source code to the localizers, who could just delete and rewrite the function for battle text? If you had the source code, it would be that easy.
So what do you say, Mato? If you were given the original C++ code, would you start over from scratch with it, or would you continue hacking in assembly?
If source code were available, probably what I’d do is comment out all this struct stuff and write a tiny bit of new code in key places, code that does the same basic thing that I’m doing now. I think the main reason they wanted to use structs was for making newlines work easily, but most importantly, to make scrolling-up text easier to implement. From a professional design standpoint, it probably does seem nicer to try to handle stuff like that with organized data structs/arrays/whatever. The way I’m gonna do it is probably an ugly hack by comparison, I’m just gonna copy the raw tile data up 12 pixels or so and then clear the tile data where the second line was, and then let the game print on the second line again.
Not sure if that makes any sense, but that would’ve been such an easier implementation for the battle programmer. Looking at the game’s credits, the battle programmer was a Masaki Aikyo. Time for Project: Stalk Programmer-San.
I bet there’s another copy of the letter printing code somewhere clear in the middle of those 100,000 instructions, and after a wait it reprints everything then goes back to the normal code for the very last box so they don’t have to redo the newline code.
At least, that’s the only theory I can come up with. But M3 is so weird, I may be clear wrong… π
You all are so talented. Amazing work…
/Fran loads up the Mother 3 GSFs in Audacious… (The only Mother 3 spoiler I allow for myself…)
Hang in there Mato!
From what I understand, you can either:
A) Tell the game code “hold on, lemme do it my way instead (…) ok, keep going” which makes it difficult to “interface” both pieces of programming in regards to control codes
B) Re-write the whole lot (those code-ghosts will come visit you again repeatedly as you work on this for the next 7 or so years), Near-impossible.
or C) Bend the game’s native programming to have it work like it normally does, but with an increased set of “boxes” per line (which will most likely not work given the usual luck you guys have with this game…)
Either way, take your time, we’re all eager to play the translated game, but don’t fall ill over it, we loves ya, y’know… Don’t give up, keep hope, but don’t kill/burn yourself over it as it won’t help things in the end π
Three cheers for your dedication!
Hi, just thought I’d post to say how impressed I was at the progress that’s been made since the last time I checked this site out. Cudos.
Gah, I know ASM can be a nightmare, I really appreciate the work you guys are putting into this.
It sounds like only one box is getting displayed, which happens to be the last one set. Maybe the game doesn’t do the text updating, but just takes the values that are already in the boxes and draws them during the wait.
Happy hacking!
Great job so far! (like everyone else has said…)
Every update makes me wish the patch was out, but you can’t rush perfection. π
You= MY FAVORITE. We all really appreciate what you are doing… but it was said before: if it gets really stressful, take a few days off!
I’m driving all my friends crazy talking about this translation…. They told me they want it to be done even more than me because then I’ll shut up!! π
I’ll be locked in my dorm playing this for DAYS… I can’t wait!
Just for curiousity’s sake, how much does a person make in the translation biz, Tomato?
Inzoum: Yeah, A is probably the best choice, because we’ll at least know for sure that we won’t run out of stack space. I think I know what the problem with post-[WAIT] issues is, but I just need to find a good block of time to hack some more. Hopefully later this week.
Unsavory Maggot: It depends on so many factors that there’s no good answer. Depends on the type of stuff you translate — medical translators and legal translators probably do pretty well, for example. Also, there’s a big difference if you’re an in-house translator or a freelancer. Too many variables to give a good #. I make enough to get by, but I’d probably make a whole lot more if I acted like a more responsible adult and didn’t work on projects or starmen.net or such stuff π
———
An another note, just thought I’d mention that a few hours ago, the site passed the 1,000,000 hits mark. The # of unique visitors is at 136,000 too, which is pretty impressive. And there’s about 13,000 email signups. That’s a pretty awesome ratio π
Congratulations! It’s splendid to see that the site has recieved so many hits… that alone should make the project a thousand times more worth being a responsible adult, I hope. Generally I find that one can be responsible without letting responsibilities get in the way of enjoying life, aha? Hopefully that makes sense…. Either way though, please except our sincere thanks to you, to everyone working or contributed to the projects, and also to everyone who comes here. The spirit of friendship that I see is the one that also makes me smile and think how wonderful the games that bring so many together are. =)
Cheers, everyone!
hi mato! we really appreciate all the work youve been doing on this project!
what has jeffman been up to lately?
Wow, the battle text code must be really annoying…
I have another semi-off-topic question….. Any plans on changing the title screen and such to “EarthBound 2”? Or might you just leave it Mother 3?
Hope you guys don’t end up surrendering to the coding of the game xD. Keep it up.
Kiriplant: Tomato already said once that the titlescreen was going to remain unchanged or, if anything, was going to had a little caption reading “Earthbound 2”. π
Hi guys,
I’m a fellow coder and I just want to say, tricking the code to print everything in Box #0 – Brilliant! I swear in every big project that involves sifting through other programmers code, there’s some point where you just want to give up, but eventually I always find a solution. Usually the solution comes when I walk away from the computer or at 3am, but still…
Keep up the good work!
tom_foolery: He’s been around, he’s done some little things we’ve noticed recently. He’s also been looking into some of the other remaining stuff on the to-do-list while I’m focusing on the smelly battle text.
skinneejoe: The Box #0 idea came to me in the shower. Funny how breakthroughs are usually made AWAY from projects π
——
Anyway, I still haven’t had time to work on stuff, but from what tiny stuff I did yesterday, it looks like the game is doing what I think it does — when it goes to do the original automatic scroll-up-text routine, it reinitializes all the box struct contents and then moves the stuff in boxes 23-40whatever to 0-22. And then since we never use boxes 23-40, what gets copied is attributes of an empty box with some sort of flag somewhere that says “this box hasn’t been turned on yet, so don’t print it”. So if that’s the case, and if I can just figure out where exactly this is happening, then I should be able to make it so Box #0 doesn’t get turned off after scrolling text. I realize now that it’s probably not the [WAIT] control code itself but auto-text-scrolling up stuff in general, so 2 [BREAK]s would probably cause the same problem to happen.
you’ve made it so far into the translation…..
Do you remember how your nerve-racking and difficult journey began with translating? It was Japanese, one of the most difficult languages to learn, which stared into your soul that fateful night.
During your progress, you hacked, translated, and updated. Yet through all this, you have never lost your courage. You have gotten steadily better at hacking, although you run into some killer bugs many times.
You are no longer alone in your adventure. Jeffman, who is talented, hard-working, and even pretty is always at your side. Sblur is with you as well. Although he is busy, he came from another website to help you.
Mato, as you certainly know by now, you are not a regular young man. You have an awesome destiny to fulfill.
THe journey from this point will be long, and it will be more difficult than anything you have undergone to this point. Yet I know you will be alright. When you decode bad programming, which side do you believe wins? Do you have a faith that you are an uber-H4X0R?
One thing you must never lose is courage. If you believe in the goal you are striving for, you will be corageous.
There are many difficult times ahead, but you must keep your sense of humor, work through the touch hacking and enjoy yourself.
When you finish reading this message, your hacking will begin again. Next, you must get this damn battle text to work.
Mato…
Jeffman…
sblur….
I wish you luck.
Tom_Foolery:
I love you.
Ha ha ha, Mato deserved that cup of coffee.
Mato Good work with that patch
I know that crap is hard to do but is worth it because Nintendo doesn’t want release a translation of Mother 3.
(Imagine if You and the crew working with the game and the next week Nintendo releases a Translated version of the game…)
I wish you luck and try to make at perfect as possible.
oops! sorry with a typo it was spposed to be
Imagine if You and the crew working with the game finishe translating it and the next week Nintendo releases a Translated version of the gameβ¦
I hate a love/hate relationship with Mr. Saturn’s coffee… one one side it’s heartwarming and encouraging, but on the other, it’s just so, well, it’s long, let’s face it, it takes forever… it feels like you really COULD slowly drink a whole cup of coffee (those big big north-american mugs, not the small italian cups) during that time…
but heck, three cheers to tom_foolery π
Hmmm, couldn’t you also just reset the status flag every time you go to print a letter? Or would it screw things up in the mean time? Might have to also turn the last character of the line ‘off’ again.
Or just NOOP out the entire bit where it copies them and changes flags, if you can find that bit…
Weird how stuff comes to you while you’re showering. Can’t wait to see how it all works out. I think I’ll have a much deeper appreciation for the final patch, having read about all the effort you guys are putting into it.
I want to play/comprehend this game… so very, very badly…
hey mato i would also like to know why you began learning japanese -thanks alot for hacking mother 3
fear?
more like ‘people are impressed by shit they don’t understand’
since most people (unfortunately) are pretty dumb,this shit is perfect fodder to bring in the sycophants
bonus cause you really don’t have to do much
it’s like watching some magician at a kid’s birthday party
@i hate bulldog
“more like βpeople are impressed by shit they donβt understandβ”
Very true! In your case, grammatical structure!
Who the heck was bulldog talking to, anyways? π
How about some reailty! Some of us, now 29, have been waiting since we were 16, back in 1995, for a rebirth of EarthBound, wondering why we spend $64.97 on the SNES pack with the Strat. guide, cart, etc. and yet spent in 2004 $60 on the M1+2 cart, and then in 2006 $50 ish on the M3 Cart. We belive. and if you remember in 95 there was a $ 10 off coupon but I was so desperate to get EB that I fore-“Went” that 10 coupon just to get the ^*@^ game!!! I could have never made a better decision and could never even find a way to support the hard workers, at the merging site, and at mother3.fobby.nwet, to work their tails off, giving us a chance, those willing to probably put Mother 3/EB caricatures etched on our windshields, (e..g. a pixel Ness lol) or anything like that) I dunno just, thru the disapoointment of EB64 being canclled when I was about 19, etc) The second iteration of EarthBound must come, and I do request persoanally it me called “Mother 3.” It could not deserve a b etter title. I have never posted here, and have gotten smnet posts in reference as I’m an idiot. and don’t care. I totall understand to entire situation. Ohio cares about MOTHER 3. I will somehow make sure. π mgatskie@mgatskie.com
tom_foolery: Heh, that was cool. I could hear the music during that even π If you had a sm.net forum account I’d give ya a badge of some sort probably.
MotherFan666: I say it a lot, but I honestly wouldn’t mind it if that suddenly happened. I’d probably be happier than most anyone else, plus I’d be able to sleep and do other stuff in my spare time π
A Fan: Well, that’s the idea, but I’m still not 100% sure that’s happening. I do notice that a byte in the struct is set to 0x03 when it reaches my hack and then successfully prints later on, but it’s set to 0x0F when it reaches my hack but then doesn’t print the letter later on. Yesterday or the day before I tried making it always be 0x03, but this game has a crazy habit of swapping #s around in memory at least 20 times at seemingly random times, so trying to figure out the logic that’s going on with stuff like this flag takes time. I’m not even sure if this flag IS related to anything, but my hunch is that it is. Gotta follow it a little more when I get time and see where it makes the decision not to print something or not, then work back from that. When you got hundreds of thousands of instructions to wade through though… π
mitch: I read the SA forums a lot (even got an account a year or two back) and wanted to say how kickass your thread/story turned out. Good job π
MATTHEW GATSKIE: Heh, at the end there you make it sound like this is some political rally π― But uh, go Ohio I guess?
omg…..the suspense be a killing me! :O
Matthew Gatskie…. crazy…. my name is Matthew Gatzke. said the exact same way.
And the battle wages on… this sounds like the most formidable hacking foe from M3 yet. What impresses me, Mato, is that you talk about these ultra complex bugs but never say they’ll be impossible. You just say that could take days or weeks. Too bad the rest of the world (present company included) doesn’t have the sheer drive that you have.
Thanks again for all the hard work you guys are doing while sacrificing your personal lives!
The M3 Fan Translation project soldiers on!
Tom_Foolery: LOL. Brilliant rewrite, great work 8)
Mato: I’ll take his badge pls 8) (just kidding)
I find it pretty amazing that you’ve already been able to manipulate those fixed boxes to have VWF and also to recognize whole words (it doesn’t seem to be taking whole words into account in those pics)
I’m sure you’ll figure out how to manipulate it to do exactly what you want it to do..
I agree with 7ucky, you’ve faced many challenges in this project, but as long as you kept working at them, you’ve been able to figure them out.. so I expect the same with all of the challenges that you’ll face with this hack — You’ll figure it allllll out eventually,
just dont forget to get enough rest in the mean time:)
I sure am glad you worked this out, I was worried I’d have to return to it :> As you probably recall, it was my plan to scrap everything and write a new box displayer, and then I got lost and drove myself totally crazy disassembling all the code to make sure I got everything it was doing (I think I ended up reverse engineering a malloc implementation before calling it quits >_
(hey, it cut off the rest of my message! Oh well here it is)
>_
(OKAY, this time without the opening bracket that’s screwing it up because it’s misparsing it as a tag probably. BAD!)
(…. π one last time )
Great work finding a nice hack to make things work with the existing system. Let me know if you do need anything, although at this point you should be fine π
>> (I think I ended up reverse engineering a malloc implementation before calling it quits >_
Yeah, that’s always a sign that you’re in too deep.
WHOO! Sounds awesome! Thanks for all the hard work on this stuff you guys. Keep on keepin on…
I love how the PLEASE NOTE! box, for posting reply’s, keeps getting bigger and more colorful.
Yeah, big messes of assembly are not easy to look at π I wonder if it would look any better if it had been programmed in ASM to begin with by someone like Lance. It might be easier to understand, except for the weird little hacks, but I bet you wouldn’t have a spare byte anywhere to put things…
As for the other Matts around here, I find it odd that we were near the same age and both bought Earthbound immediately. I remember sending letters to Nintendo Power asking about it (and pointing out inconsistencies in the development screenshots they showed), not to mention having the local video rental place order it for me (Wal-Mart never had a good selection, and they were the ONLY other place I could buy a game from back then, really).
But that was a bleak time for RPG fans. It was hard to find anything but Final Fantasy games, because they never wanted to translate all the good jRPGs and we had to wait for folks like Mato to step in and fill the gap… π
Exophase: Heh, if you wanna take a stab at what it is I’m trying to do, that wouldn’t hurt my feelings π I don’t have much time lately and most of my stuff is based on your old findings anyway…
Actually, now that I think about it, are you talking about the routines that write “free” and “use” in memory before clearing out memory for variable-length strings and the like? Cause I keep seeing them too and was hoping they didn’t write that stuff themselves. I don’t know how most malloc implementations work though so maybe it is their own design.
i had a simple question, the games graphics will be also translated?, i mean, like the YOU WIN -> YOU WON thing =)
*i have
Yeah, if you look in the previews section, you will see some translated graphics.
this is awsum, Earthbound is my favorite game and im stoaked your working so hard to share the newest one with us. i only wish i knew how to hack and shit so i could help it go faster. keep up the work man is greatly appreciated, PEACE!
Yeah I’m with Salvia on this one haha. So stoked for the translation, appreciate the hard work you guys are putting in.
Peace!
Got an hour or two of time today so far, but this stuff makes no sense. For instance, the flag that appears to be the status flag (it’s actually a byte whose bits are used for individual boolean things but it’s not clear what most of them do) for each glyph struct gets read from, changed, and written to like 10 or 20 times between printing out each letter. In non-technical terms this would be programming/hacking torture π I’ve tried changing the flag manually but it changes back/doesn’t matter for some reason. So work continues on.
Yeah. We can say I’ve been waiting quite a long long, while like the rest of us. From the ign64.com’s Disk drive april fool joke, to the “oh EB64 is coming to cart and not 64DD” phase and the sad cancellation letter of EB64, to wishing I’d have purchased all the $15 copies of EarthBound Best Buy had (realize of course this was late 90’s before EB actually becamse ::cough:: collectibly popular) π Dunno… something about EarthBound made some of us go crazy in ’97-’98 when EB0 was discovered, and gave us more patience when M1+2 GBA came out in ’04 with the “M3 is coming” blip. and Finally on April 20th, 2006 our prayers were somewhat (though in the wrong tongue to most of us) answered. I wish I had the patience and the diligence to even ponder reverse engineering machine code to assembly and making it all work given the confines that you have described and successfully battled (fonts, string limits etc) and we all for sure are the most supportive of this project. Ok, this rant has finished for now. The “quiet” Ohio EB fan. (where no one around here even knows or even knew about it) Take care Mato, and *any* progress is progress, period.
Mato; I’m unfortunately busy too and.. don’t really want to look at this stuff very much ^^; Maybe in the future if things look bad.
I didn’t notice those things being put into memory. It just looked it was operating on something that resembled a malloc-style heap arena.
Keep on rocking in the free world, Mato
don’t worry everyone, that’s not the real exophase
the real exophase isn’t such a wimp/baby π
I move that tom_foolery’s parody be hosted in a permanent link on the site.
Looks like it crawls every closer in progress.
Almost there!!!
Keep up the good work, guys, I apreciate it.
Man, I just looked up ‘malloc’ subroutines… You guys are amazing.
Ya know what I’ve noticed on this blog, everyone is always cheering you on and supporting you in all the ways possible. I used to remember how in translation projects, (I did help in one years ago) people used to bitch about how long it is taking, or even flame the people making it because they felt it was owed to them. However, everyone is friendly here, and all the people are giving you support in spirit.
I have to say this community is alot nicer then stuff I used to see.
Orion-J: That’s what EarthBound does do us!
Dave; meanie ;P
can i ask one thing?
“are you guys gonna play brawl?”
with most of your time going to life and the project, i want to know if you are gonna play brawl when it comes out
Jeff’s already played it a ton, plus he’s the Smash Bros. staffer at starmen.net π
I’ll probably play it a little but I don’t have time for games anymore really.
That’s kinda ironic considering your hacking a game, hehe do you play games anymore?
I’m sure Mato remembers the old translator days, the amount of lamers you’d have to end up putting up with.
^ Ha! I remember lurking in translation boards with the kind of people you’re talking about… I wish I could say we’ve all come along way, but we even get those types here.
Meh I notice it alot less here then what I used to see.
damn, not being able to play Brawl… that must REALLY suck…
I mean, I’m going insane WANTING to play it, and you have it there but still CAN’T play it? You’re REALLY determined on this aren’t you?
im waiting for Mato to say something like
” out of nowhere came and was like ‘oh this is nothing at all’ and fixed it in 2 hours :|”
i really wish you had more help from them….
but i know, they’re really busy people…
still…
Oh well, you’ll figure it out eventually, and we’re all patient enough to wait for that time
hmmm…
that was supposed to be “–nowhere (insert one of the super-hacker’s name) came and — ”
lesson learned: never use the pointy bracket things when posting on here
Well Matthew Gatskie your not the only Ohio Earthbound fan. I rented it when I was like 7 yrs old because it was in the big box. But a few months later my cousin had a copy and didnt like it so gave it to me and low and behold I had that copy till today and have been a fan since. My collection has grown and continues to I did sell my copy though on ebay but it was to get a complete mint one box guide inserts etc. I have Mother complete getting a EB Zero cart from canadian (great quality) Just got M3 Awesome quality !!! complete several guides on the way (gotta learn some jap lol) only more rare things are not on my list (WISH TO GOD THAT STARMEN WOULD PUBLISH THE ANTHOLOGY) So at least Ohio has two big fans
…Completely unrelated, but did you notice that you have the wordpress login/register stuff up there completely open, with the register button working and everything? Haven’t tried to register for obvious reasons… But I’m wondering what could happen if someone did. *shudder*
??? What’s wrong with registering? There’s like 250 who’ve registered accounts here.
—-
Might make an update tonight, but it won’t be a very fancy one or anything. I’m so sick of all this crazy code though. I just wanna get back to translating π
We wouldn’t blame you if you took a break from hacking to do straight translation/ revision for a few days.
Ah, I was worried that registering would allow someone to post to the blog. My bad. ^^;
Eh, I registered before I made my reply. I had assumed I needed to register before I could make replies, of course once I made my reply I knew better.
You know, I was thinking the same thing. Someone from the T-Team is going to come out (possibly Face, played by Jeffman… wait, doesn’t that make Tomato “Mr. T”?) and convince the code to do your bidding. π Just watch!
Here’s a thought for you Mato. If your hack was printing first and last letter, just get the hack to print two letters per box, so long as the spacing is correct. Then you don’t need to worry why it isn’t printing he stuff in the middle.