A Sprite Text Primer
Very shortly after the last update, I moved right on to the sprite text welding issue, something I’ve/we’ve been avoiding because of the pain it’ll be. But it’s not gonna get done if we stay scared of it, so I went right for the throat. It’s definitely going to be a tough little hack, but I don’t think it’ll be anything quite as crazy as the battle text hack from a few weeks ago.
Anyway, yesterday I managed to follow the code a bit so I could get my bearings. We already hacked two important routines related to this font stuff, one being the routine that tells the game where in the ROM the current font letter is, and the other being a routine that makes the game load 16 rows of font data rather than 10 (this is how we got that old problem with text hooks fixed). So this area of the game’s code isn’t new to us, which is a plus. The way the game does the font loading is kind of lame though, but luckily I found a bit of code that does exactly what I hoped. It was pretty big and inefficient, so I wrote it better in much less space. The freed up space will be handy for the custom code to come.
But it sounds like what exactly this “sprite text welding” stuff is is a mystery to some people, so I thought I’d do a quick explanation.
Blah blah boring technical junk follows
Basically, “sprite text” is just that — text that’s displayed using sprites. The GBA hardware only allows for 128 sprites at any one time, though. In the case of MOTHER 3, if you go over that limit, text won’t appear, which cuts text off in the middle of words. Simply reducing the number of letters in text that uses sprite text isn’t an option either, there’s still a good chance you’ll go over the limit, because you can’t know ahead of time how many sprites will already be in use. If that doesn’t make much sense now, maybe the rest of this will help explain.
It doesn’t make much sense to use sprite text this much though, so I’m not sure why the menu programmer decided to do it this way. What’s weirder is that he/she/it mixed and matched sprite text and normal text — sometimes there’ll be sprite text and normal text right there next to each other. It’s crazy. Blah. And the guy didn’t even do normal text a sane way, but we’ll get to that another week ๐
So anyway, the problem left to us is how to allow more text within these sprite/hardware limits. The answer is “text welding”, a term I think Jeffman coined, but it’s not an uncommon practice in ROM translating. In the case of MOTHER 3, the game is really inefficient and assigns one letter per sprite, so the theoretical maximum number of sprite letters that can be on screen at any one time is 128. That’s not that much as it is, and most of the time you got much less than that available. So, instead of 1 letter per sprite, we’re going to dynamically stuff as many letters into each sprite as possible.
Here’s a pic of sprite text in action. The widely-spaced apart text is all sprite text.
As you can see, I took our VWF code off. The game normally spaces each sprite letter 10 pixels apart, but Jeff’s VWF hack a few months ago made it space things correctly. However, this only moved the sprites into alignment, we still had the exact same limitations as before. Meaning that hack was only a temporary fix — we need to do this at a lower level.
In the case of this pic, you can see the item description gets cut off. This is because too many sprites are in use. But there’s no way to know in advance how many letters you can safely use. For instance, you could have 1-4 different character names on the side at any one time, and any one of those names can be from 1-8 sprite letters long. There’s no way to tell in advance how much DP you have; the numbers up there use sprites too. The same goes for the item prices. And so on and so forth.
I know I just repeated myself, but I think that pic might explain it better than words ๐
So the fix. Like I mentioned before, the game does this sprite text stupidly. It does one letter per sprite, but it sets it up so that each sprite can be 16 pixels wide, as you can see here.
But the average width of our letters is probably 4 or 5. If we used that space efficiently, we could get 3 letters in one sprite on average. In really lucky cases, we could fit more, for instance, right now the word “skill” takes 5 sprites, but with on-the-fly/dynamic text welding, it would only take 1. That’s awesome. Theoretically, you could have 800% more text per sprite in the best of cases ๐ฏ
Making this thing work will be a pain, what with all kinds of bit shifting around in OBJ memory (which is where most of this hack will take place), making sure the game doesn’t move on to the next glyph struct in RAM when it shouldn’t, making the game know to allocate the new correct # of sprites, making the hack work with the status icons and newlines correctly, etc. etc. Given how busy things are right now for me, it’ll probably take a week or so, but once done, we can have lots and lots of sprite text and not worry about text suddenly vanishing or blinking on and off or anything like that. That shop text pic up above actually has a bunch of sprite text blinking on and off really fast ๐
I kinda rambled on here, but the short story is:
sprite text now = ungood
need hack to make good
working on hack, so far so good
UPDATE: To make it a little easier to understand, here’s this. The first pic is how the game’s programming handles sprite text in memory. Just look at that mess, and how many boxes there are and how crazy and inefficient it all is.
Once sprite text welding is done, here’s how the game will handle it in memory. Look how fewer boxes are used and how efficient it is. In this case, the original had 27 sprites in use, the hacked version will result in only 9.
This is the whole point of this — to allow for more sprite text by efficiently using what little resources we have available. Hopefully that makes more sense ๐
first post ๐
gj man, it looks complicated then the stuff you posted previously ๐ฎ good luck with this one
I don’t understand half of that, but it’s still awesome, way to go.
First!
Darn it, I was soo close too
I don’t know if I’ve posted before, but I’ve been watching the progress on here for a looooooonng time. And, like everyone else who says something like that, I’m thoroughly impressed at how far you’ve come. I just turned my girlfriend on to earthbound, and she’s loving it. I played M3 with a translated walkthrough, but I’m so excited for this to be finished.
What I’m surprised about though Mato, is the way you said “Given how busy things are right now for me, itโll probably take a week or so…”…good god man! The way you’ve been talking about this hack (not to mention so many of the other intimidating ones), I figured it would take a month or so of your already busy time! I mean, I’m not complaining, and I don’t think you should let this hacking burn you out or anything…but way to go man! I know it’s just an estimate, and anything could (and probably will) happen, but if the way you perceive this beast means it could theoretically be dealt with in about a week….well, I salute you sir. Thank you so much. Good luck with it.
this is truly exciting. The game almost made me cry the first time i played through it, maybe with the text on screen instead of on a printed out script it will have more impact. i wish i had more to say than thank you! or good work as always but unfortunately my hacking skills are nonexistant. waiting eagerly for the translation, seeing as how the divas at nintendo have deemed us unworthy of it. W00t!rootin 4 u!
Wow,third!
Can’t wait until i get my hands on the game!
Damn!Not third!
Anyway,i respect you a lot!Even when ur busy u make time for the translation!
NOTE: I updated the update slightly with pics to better explain stuff, so check it out if you missed it before.
This makes my brain feel like explode, but the sum at the end made the hurting go away
Amazing!
Ah, man. I hope things go well.
It doesn’t look like it’d be too hard, but…
By the way, I forgot to mention it, but the general idea of this hack will also probably be how we fix the main script display problems too. And how we fix the normal menu text stuff, meaning something very similar to this (probably written by the same person even) will be what finally allows for long item/PSI/skill names once and for all.
So, does the game use sprite text as well as normal text? Or is all text considered sprite text? This is interesting, I think I’m going to slack off while I’m at work even further and try to find some sites to read about it.
Oh, and keep up the good work!
Good luck, Mato! It’s amazing how you’re able to plow through all of this hacking so quickly!
I bet you’ll feel really good when all the hacking is done and you have nothing left but script polishing, though ๐
Holy crap. You guys are masters of programming. Thats is a lot of work just to make something aesthetically pleasing. I am very impressed!
PizzaPasta: It uses both, sometimes side by side for no particularly special reason. This will only fix the sprite text stuff, then we gotta move on to the regular menu text too.
> So, does the game use sprite text as well as normal text? Or is all text considered sprite text? This is interesting, I think Iโm going to slack off while Iโm at work even further and try to find some sites to read about it.
Sometimes it just prints text on a background layer. This is “normal” text. But other times is has to move/erase text, this is usually done as sprite text (because you can move or erase sprites easily). And finally, you have insane menu programmers who use one when the other would be better ๐
Hopefully, Mato will get all this working great, and if there still isn’t space in edge cases, he might be able to shove some of the static text into a bg layer to free up more sprites. I keep forgetting that he was fairly new to the hacking side of things not that long ago, but he’s sure learned a lot! Release a few more Mother games, and we’ll know Mato as one of those super-hackers ๐ Umm, but not before he gets a good long vacation, that is. Maybe at a nice resort in Summers…
Josh D: It’s not really aesthetics exactly, it’s necessary if we want the game to display text fully every time.
Mato what do you think is the reason why the menu programmer use so much sprite text in mother 3 was it a lack of experience or was it done on purpose by the menu programmer ?
pwn(period)
Probably because it was more convenient. Sprites are easier to place anywhere you want on the screen. They’re also easy to remove from the screen, you just turn it off. So maybe the person had a deadline or something. The programmer seemed to have trouble getting normal text displaying at specific locations too, so maybe that’s why.
remember that one episode of ducktales where they had a harp that could tell if people were lying? that was awesome.
No, but I do miss the show. I should watch it again someday. The game was cool too.
random?
Ducktales was a great game, most of the Capcom Disney games are. My girlfriend and I were playing it the other night and we couldn’t remember how to use the cane while jumping. We eventually figured it out but it was a nice way of making us feel senile and old.
I like how I read this site instead of doing my engineering homework
Yes, I think we can all agree this site is a distraction for everyone who visits regularly. /me needs to get back to work now too ๐ฏ
i find its not favorable to relive childhood memories. like re-watching the wizard and finding out it was more of a nintendo advertisement.
anyways, lets celebrate and do vodka/everclear shots when this is finished, okska?
How about greygoose and cristal
sKaNkPiT!!!:
It’s even worse when you remember old cartoons like G.I. Joe being amazing to watch only to find later that they contained about 3 cells of animation for most of the movements.
By the way, are you the one who ripped the Earthbound soundtrack to .SPC? If so, thanks. I’m actually listening to it right now.
i did, but i think mato made another set a few years ago, with more tracks and information.
That’s awesome. I listen to it everyday, thank you.
BECAUSE I LOVE YOU…
best track
You know I will listen to that right now actually while I find the power requirement for multiple gears in this dirty little machine
I’m sorry if this has been asked before, but just a suggestive question:
Would it be any easier if you wrote your own routines to display the text as “actual text” and not as sprites?
Coffee Break and Prayer (or is it Praying) are my favorite. If I couldn’t listen to Coffee Break on my way to work in the morning I would die.
I’ll listen to that one right now for you PizzaPasta..
Oohh Boss introduction just came on… Bleepies Boopies
Life is like a hurricane here in Duckburg…
So the obvious question on my lips is, “Why not just stop using sprite text where it’s not necessary?” For that matter, when IS it necessary?
Bouncy combat numbers are good examples of necessary sprite text. But if things are simply being printed to the screen and then erased this seems like a waste. Is it possible there’s some other kind of animation? Maybe scrolly text where the top line slides off the top?
Is it a z-level/transparency issue, trying to make sure that words below a pane aren’t drawn on top of their masking pane?
If that’s the case and sprite text really is the correct solution, would it be possible to draw each block of text onto an image buffer and use that image as a sprite? Size limits aside, I can’t think of a reason why different words in a sentence should be more than one sprite.
Am I misunderstanding something?
I STILL play Darkwing Duck even all these years later.
wasn’t there an orchestral soundtrack? heard of it, sounded cool, never found it
old games: super mario rpg was the best
duck-tales …oooOOOooo.
By the way, Darkwing Duck was such a rip off of Megaman’s gameplay…
But they were both made by Capcom, so it’s automatically ok. ๐
I agree super mario rpg was a GREAT game … seeing mario in a different genre instead of the classic Action/adventure, bu Earthbound by far is the sweetest game to come out for the super nintendo. I’ve played all the greats and my opinion still lays with Earthbound being the on the top.
wow sorry for the dislexia
dyslexia…
I need to get back to work.. i’ve refresh this site every few minutes…
how am I going to live with myself after the translation is done? I can’t just quit cold turkey… I ‘ll die from withdrawls
Something smells triumphant.
You could try Marlboros instead. ๐ They’ve helped me get by.
I think that they did the sprite text differently because it was in japanaese so they can’t really combine to many Kanji, Hiragana, and Katakana…but that’s just me thinking…
If they made bigger sprites, they’d use up lots of space just for sprites used for word combinations. =|
But maybe I’m wrong. o.o
ParodyKnaveBob: Yes and no. It’d probably be easier to do this welding stuff simply because we’d only need to change one part of the game. To make it print text normally, we’d need to make many major changes, throughout all of the main menu programming. I think if we had documented source code it would be a lot easier to do it that way, but there are also a few instances where text sprite IS important, so it’s probably best to do what the game originally does and simply optimize it to fit our needs.
Jamus: See above, pretty much. Sprite text might be used in item descriptions because they wanted to include those status icons, I dunno. But other than that, there’s no reason anywhere else to use sprite text, except in the file menu, which does have overlapping menus sometimes. The fixes you’re suggesting would be something you might try to do if you had the source code in C, but at the very low ASM level, that’d be a LOT of work.
Unsovory Maggot:
It’s Basics for me, I’m poor.
Unsavory, sorry
I think this blog is a shining example of what more translation and/or modding projects could do.
lol they probably just ran out of room in the tile data and moved on to sprites. D:
FIRST! Yes!
Oh dammit! So close.
wow… I completely understand it now.
if only I could hack it. ๐
Wow, it makes me wonder why the people who did Mother 3 didn’t just do the text this way if they were so hellbent on sprite text. Anyways, this is turning out awesome, you guys are great, Keep up the awesome work, yo!
Harder.
Faster.
Now.
*kicks the robot*
>:|
“how am I going to live with myself after the translation is done? I canโt just quit cold turkeyโฆ I โll die from withdrawls”
I’ll be doing the same thing I do for Gyakuten Saiban for Mother. That is, CONSTANTLY replaying the series. I’m on about my 3rd playthrough of Apollo Justice already, and that’s been out for what, a month? Anyway, I’ll miss the blog, but I’ll have constant replays of EB Zero, EB, and Mother 3 all on handhelds to keep me busy. >>
Mato, never fear! All the unhacked code fears YOU ๐
this is fantastic, you guys are so close!
Hmmm… if you’re going for affordable, I’d have to say Smoke Ones are pretty good. They sacrifice the outrageous price without sacrificing the flavor or the strength, and they’ve helped me through some tough times too. Especially when I’ve needed the cash. (Boy, did I ever spoil some people rotten last christmas.)
Anyway, back on topic. Looking sharp, Tomato! I’m pretty sure the game’s almost at the end of its rope now; pretty soon things will look pretty darn easy, I bet. ๐ After this section, anyway. Hopefully that’s not just me being optimistic. I just hope the testing phase goes along smoothly; we may be a tad far from that part, but again it looks to be in plain sight. ๐ (again, hopefully that’s not like walking to the stop light which looks to be 48 feet away, only to find out it’s two more miles ahead of you)
Last! (thought I’d try something different for once…)
You write about it being “blah blah boring technical junk”, but really it’s incredibly interesting. I just wish more people working on projects like this would keep us updated on their work the way you do.
Wow, that sounds like crazy hard. Even from a professional perspective. At that point I’d just say “fuck it” and try to rewrite the whole thing from scratch XD
I just… love this dedication. srsly <3
All hail sprite-text welding!!!
By the way, Mato: you said in a previous post that you had fixed 90% of the crashing problems. I just have to ask–will this sprite-welding hack fix the other 10%?
No, the other crashing is caused by the main script display routine.
Mato, if the sorite welding will fix most of the issues with main text, normal menu text, and the long item stuff, does that mean that after finishing the initial hack, the other two could come close to or be completely knocked off the list in the same week?
As for childhood memories, I recently explored mine by playing Einhander on my psp. What sucked was for the past two weeks I thought I had been thinking of R-Type Delta. WAY harder and way different gameplay. Those two games will likely be how I kill time until the patch is finished.
Good luck Mato!
Woops, I meant sprite welding, sorry.
Hmmm already 69 responses?
I have a theory, and that theory is this:
Mato updates this site at frequent intervals. These intervals seem to occur when the number of posts exceeds 200.
Ergo, if we all post lots of comments, and if everybody who visits here leaves a comment, mato will post an update. Always.
It’s really as easy as that! If we do this like 20 more times, the game will be done!
Teamwork, guys!
I just started posting here recently, but I’ve been looking on the site for a long time. This got 60 comments in three hours… three months a ago it didn’t get that much in a week
SAM-E-BOI: Normal menu text is probably pretty similar, so it could probably be done without too much trouble. But I haven’t looked enough into it yet. Sounds very similar though. This would get long item names to be almost completely done, but we’d still need to rewrite how the names are stored in RAM so we can get 20 letters for each one. We’ve already done this before many months ago, but it might be good to move this to another part of RAM. I can’t remember since it’s been a while. But short answer to your question is that it’ll help get item name lengths almost complete.
The main script welding might be very different though, as the text is displayed one letter at a time. Depending on how the original code is laid out, welding might not work because it would show the partial letters as it prints out. If it turns out that that’s the case, then something similar to my battle text hack will be necessary, except oh god that will be hell within hell.
Oh, I thought of a suggestion!! If size limitations are such an issue, why not see if you can make the game be read as a DS ROM instead, because I think the cards used for DS games have twice the storage space. Might be difficult or impossible, but it mght make something easier.
Hmmm? my post was deleted?
F you Mato.
F U.
>:O
“Oh, I thought of a suggestion!! If size limitations are such an issue, why not see if you can make the game be read as a DS ROM instead, because I think the cards used for DS games have twice the storage space.”
… i hope you were kidding.
Why? Is it really that difficult, or do you not have something that will play a DS ROM?
you would basically have to port the whole game over to the DS. which is alot harder than it may sound.
Oh….. my bad. Sorry Mato!
gl with that i know you guys can do it
Go, team, go!
I think that a lot of you guys don’t quite understand something here… Yeah, the game uses sprite text in a lot of places that don’t seem important. But, first off, Mato can’t just recode the entire game as he sees fit. This is a translation hack, not “Mato Presents: Mother 3”. The idea is to take as much of the game and keep it the same, and use hacks to get things working how we want them. They were originally sprite text, and so they shall stay.
There were people who got paid who did it like that for a reason. Sure, it might have been because of the Japanese characters, or because it was easier, but they did it. The game does it that way. Sure, it may not have been great, but it worked. And for a GBA game development, that’s what’s really important. They never intended anyone to see the code or to mess with it, so they didn’t care how inefficient it was, so long as it worked.
So, that’s why Mato is hacking the game to make it work instead of redoing everything. Not to mention, redoing it would be hella difficult, I’m sure.
Man this stuff is too crazy. I’m glad it seems to be turning out well, though!
I’m not too fond of this approach. What happens if you still run out of sprites. Is there not enough tile memory to create a tileset on the fly with the VWF? Does the text scroll? If descriptions are always stagnant you can just do a cheap hack and prewrite them all in graphic format. then you just tell the sprites to use that area. Well anyways good luck.
I have the first season of Duck Tales if you want to borrow it Mato:P.
DaMarsMan: Well, the original programmers obviously assumed there would always be 42 sprite slots available. Using this method, a description could fill the entire description box and only take 26 sprites, well under their initial maximum. Not only that, all other sprite text consumption will be reduced, meaning there’d be even more space anyway. So there’s no worry of using too many sprite slots.
The text doesn’t scroll. Your other idea would probably mean more work than this.
Hey, something I understand!.. And not just something I get the idea of!
Having this all familiar to me makes me happy. ๐
Good luck with sprite and text-welding.
I can’t wait to see how it turns out. Good luck!
I’ll try to do these as much as I can to encourage you, Mato.
http://i29.tinypic.com/3531tgl.png
The M3 translation is cool.
Ducktales on NES is cool.
Everything’s cool!
lol@mitch’s art
nice
Ha, awesome! It’d be so cool to like have an art book containing all your stuff like that once the project is done. Probably couldn’t sell it though, doh.
I hate to double-post, but…
Mato, I forgot to ask about the dynamic part of things. (By the by, I thought it was originally going to manually-welded and for the life of me couldn’t figure out how you’d go about dynamically generating that.) Here’s my question:
Are you basically going to assign each character a value based on the number pixels they take up (plus 1 pixel or so for spacing)? If that’s the case, is this similar to the ideology of the pronoun control codes? I hope that I asked that in the right way and not in the dumb waste-of-time way.
Also it needs to be said…
Man, I love this blog!
That’s awesome, mitch.
It’s funny how far the gap is between understanding what Mato’s doing and actually knowing anything. Mato’s been doing a great job of explaining everything that’s going on, and the only time I’ve gone “What the hell is that supposed to be” is when he’s showed us tracing stuff; despite having no hacking knowledge at all, I’ve understood this whole blog without any trouble. I don’t know what my point is, probably something about how great Mato is. :p
7ucky: You mean like a table that contains the width of each letter? If so, we’ve had that since day -1 ๐ All the VWFs need it to know where to put the next letter in relation to the current letter’s position.
What is that picture? It looks like Mato going through Poo’s zen training where he loses his arms and legs and such for some reason… ๐
Well, it might be worth it if Mato learns the ultimate hacking technique … (sorry Mato!) …
Mato, yep! Will you guys be using that table for this hack?
Yeah, it’s always vital to know the width of each letter.
Mato: I mean I guess we’re talking about assembly here where every little thing is a huge to-do, but for scrolly main text, would it be too difficult to basically write the welding routine for main script text so that instead of doing it all at once then pushing it out (then a backwards hack from there to do only one letter at a time?) the scrolly routine becomes the welding routine, more or less? Each letter welded in as it’s displayed; probably computing word wrap ahead of time (unless you have newlines hardcoded, in which case joy one less thing to worry about!)?
From my experiences, after doing a similar routine once somewhere else, adapting it for another use tends to go lickety split, so hopefully it’s pretty straightforward and there isn’t retarded bullshit like 20 different similar but slightly different routines that handle the text scrolling or something ๐
Regardless, good luck, thank you so much for doing this, and I’m glad to hear you’re finally tackling the big thorn-in-the-side you’ve been avoiding forever. ๐ If there’s any way you could use the help of someone who programs and knows the concepts behind assembly programming and 2D console hardware (just haven’t done a lot of it) to do some bitchwork for you to help things speed along or go less tediously, let me know. I was briefly on a team to make a Game Boy Color game; my involvement was very limited but during and since then I’ve read up on and poked around with Nintendo hardware enough to know how it works at a low level. I’d rather not be spoiled (and no, not beta jockeying… if you were even open for that I wouldn’t apply unless you were short on applicants which just wouldn’t happen!) but too many of my friends are waiting that I have to at least offer. I figure most of the work involved is just hammering through it with your own brain, though, so I totally understand that I might not be that useful. ๐
I’m looking forward to next week and seeing how the programmers use regular text. ;p
Keep up the good work, we’re all rooting for you!
(Sorry if this has been asked before, I don’t really feel like rooting through 98+ comments right now)
Now, since sprite welding obviously creates sprites which contain a specific number of letters/half-letters (however many you can fit in the 16×16 pixels allotted, I mean), wouldn’t you technically have to have a sprite for every single possible combination of letters, pre-arranged? Or does it create sprites dynamically based on the script output? Dunno how clear I made that question. :X
DaMarsMan:
I suggested something similar though this approach should still keep the tiles as Sprites in theory, this way we are ENSURED we don’t run out of sprites because we only have as many tiles as are visible at given time. I’m not sure how Mother3 handles its text exactly so Mato’s way of doing it could very well be just as good if not better. Have a read here for Nitty gritty details:
http://mother3.fobby.net/2008/03/03/little-things-aplenty/
Search for OAM or a post by Chris.
The only reason why I can think of why they made it this hard to translate was to make it so they wouldn’t have to translate it
Old west: I get what you mean and to answer the question, no you don’t have to have a giant table of every possible combination, the whole point of the welding is that it is creating it dynamically ๐
The point of hardware sprites, which tend to only exist in video game console hardware (though I’m sure they show up other places) is to allow programmers to move things around the screen easily with little CPU overhead. This was especially important with the very old systems such as the NES as the CPU was far too weak to be able to handle moving objects well, or quickly, among other things. It’s not a thing where there is a giant chunk of game memory for “THIS IS SPRITES” for some arbitrary reason. There is, however, a “sprite palate” in the system’s memory which if I understand Mato right there can be up to 128 16×16 pixel sprites in that memory. Like any other area of computer memory, you can write to it however you want. As such Mato is working on a routine that dynamically fills sprite memory with text.
A highly informative answer. Thank you much. ๐
I was thinking about all the stuff you had mentioned previous to this blog, and the whole sprite welding problem was exactly how I imagined it to be. Very interesting stuff, I’d love to see how you’d manage to program and code different letters into one sprite. It seems that’d be a really tricky task.
Keep up the awesome work Mato!
Wow! With the way you put it, Mato, it sounds really easy – calculating widths and dynamically generating tiles.
But then again, I don’t know a lick of code. ๐
Wow, either I forgot, or this was the first time I heard. I knew you were going to do sprite welding, but I didn’t know you were going to do it dynamically. It makes sense, but it didn’t cross my mind. That’s gotta be some crazy subroutine action. I was thinking, would this ever cause problems with memory usage, or is the memory being modified after it’s already allocated?
In any case, good luck! I’m looking forward to the awesome results!
Hey Mato, which do you find to be a better game in your opinion, Mother 3 or EarthBound?
You go Mato!
You weld those sprites!
Wooooooooooooooooooooo!
Sorta unrelated, but your blog seems abandoned now. Did you run out of stuff to post, Mato? D:
Do you think Nintendo never translated this game cause of all the messy programming and sprite tile business?
Yikes, so many comments in such a short amount of time ๐ฏ Sometimes it gets overwhelming trying to do stuff all at once, so sorry if I don’t reply to everything right away, especially for the next couple weeks, I’m extra busy with real life work now.
Anyway, I’ll try to get to stuff tomorrow, but for now I managed to get about an hour and a half of hacking time, so I did some more planning and some more coding. I think I got everything set up now, now just need to do the scary bit shifting mess, which is the part where the game will figure out where within a tile to put the new letter data and where to put any spill-off. It’s complicated so if that makes no sense don’t worry. Here’s a pic of nothing in action:
I took the pic just for fun to see what the game would do with the current not-finished code in place. I need to follow the code some more to make sure everything is OK, I’m worried I inserted part of my hacks too high up. Also, me and Jeff like to turn the text blue for testing purposes, so we can see the sprite data in those scary technical debugging windows; if it’s black text you can’t see it because it’s on a black background ๐
————
trebulator: Yeah, been way super busy lately ๐ I’ve been meaning to get my personal blog site back up and running like it used to, but this project is a soul sucker. The next big update I have planned is a big review of that movie that Itoi saw as a kid, with screens and such too. I got the DVD the other day and finally sat down to watch it. It’s not quite what we all expect but it’ll still be an interesting addition to my site. So look forward to it ๐
Awesome. Informative and educational.
Good luck with the rest of the project! We eagerly await the final conclusion!
Mato, you spoil us.
<3 <3 <3
@Jack: No, because Nintendo has the source code which can be redone more easily than hacking into the compiled game like Mato and his team are doing.
I think most people think that movie is a porn vid. Isn’t it actually a crime drama or something?
neo: I hear that professional translations can actually sometimes be just as hard as the reverse-engineered fan ones. Sometimes even the source code is a huge mess and requires a litany of mind-bending optimizations and reshifting of memory management to handle a different language, or they get poor documentation from the home office to where they have to reverse-engineer a ton of stuff anyway. I mean hell even in Mother 3 here a pro translator would have to clean up the menu code a ton; even with C sources it’d probably be hell.
On even older games they’re all in assembly anyway so the only advantage of getting the source could would be variables and maybe comments (if you’re lucky) in Japanese to sort through.
So yeah it’d be a bit spendy for Nintendo to translate this since they’d have to have some of their best localization hackers (and writers) on it for a decent amount of time, and given that the suits undoubtedly vowed “never again” after the fiasco-on-paper that was Earthbound, that’s why we’re here today. :3
Looks like hard, frustrating work. The whole Mother community is cheering you on though, and seeing updates like this one just reminds us how hard you’re all working. What i guess I’m trying to say is: thanks for doing what your doing.
What would you do if the day before you released the translation NOA released an official english Mother 3?
I’m guessing he would do like the rest of us and go buy it
i can’t wait to find out what this film was that scarred itoi-san so badly as a child. (not in a weird way, just curious)
So I See you Going On About thiS Weld of Sprite.. Sound Like Interest issue of the Technical Mind of Programing Game “Mother”..
Mato.. I see you As a Programmer.. I respEct you But I Must Ask You Again Is your Feat of Genius Powered by the Binge of Methamphetamine? I Imagine you My Role Model of Code but I imagine You Create Mother patch with Crack Pipe load of Meth.. Silly I Know but I cannot Shake this Imagery..
PLease Tell Me How you Do IT
This seem s like a lot of work. I’m so glad Your doing instead of me. especially ’cause I don’t know Japanese… yet, and I have programed 2 things in VB. Other than that I don’t know anything else. I just got Heart of Darkness. IT IS SOOO HARD!!!! I am on the last level and I can’t beat it.
Ah, that makes sense. When you first spoke of sprite welding and how it would affect the way the game displays text I first thought of a few fan translations I’d played in the past (namely Final Fantasy V and I believe one of the Dragon Quest games).
In some of those there are naming options that make the game appear to accept more characters in the usual 6 – 8 spaces.
In Final Fantasy VI, for example, the name Phillip (mine is spelled with one L anyway) would not fit properly because of the six character limitation. What was done in some fan translations was add extra characters that combined two letters such as “il”, “ll”, “ii”, or “li”. This allowed a bit more room for longer names.
Sorry if that assumption is/was wrong, but it’s what this all reminds me of.
:p
Regarding Duck Tales: of course, I recall the harp which can tell whether or not you’re fibbing. ๐ I also recall it was called “Raiders of the Lost Harp” or something. They all hide in a trojan horse, feed a gigantic minotaur that thinks the harp is his mommy some bubble gum to slow him down, only to end up giving him the harp at the end. ๐ One of the better episodes.
“for instance, right now the word โskillโ takes 5 sprites, but with on-the-fly/dynamic text welding, it would only take 1. Thatโs awesome. Theoretically, you could have 800% more text per sprite in the best of cases”
In that case, I propose the game be entirely translated as “skill skill skill skill skill ill krill mill skill skill skill nil will fill skill.” Also, all characters must now be named “Jill.”
Wait. What am I saying? If that is to be the official DIY (and it certainly will be now that I suggested it!), translation than I can go play my Japanese copy now!
Please Respond Mato You My Role MOdelling Code Man
My Fav Man
Well this is a great explanation for those of us not technically minded, we’re all hoping on you guys!
Go go Team HackMothers!
Blargh zzzzzzzzz trying to get back to the normal schedule of normal people isn’t fun
I keep having dreams about hacking though ๐ And dreams that the game gets released officially. I prefer the second dream.
I recommend you ban anyone who says FIRST POST
Mato i dont know how you can find time to do all this stuff and keep us updated so often.. It is really amazing to see pretty much 2 of you juggling all this at thw same time. You shall go down in history for this!
Theoreticly……… Okay its a guess, but the translation could very well be done in early August. And, if this hasnt been answered, there will be millions of different sprite and text combinations total. I am less than stupid when it comes to computor programs.
that post didnt have a question but wont there be millions of combonations
You’re my hero.
so close but yet so fare!
Sadly, I get this.
>>The next big update I have planned is a big review of that movie that Itoi saw as a kid,
zOMG! is it the one that inspired the giygas dialogue? what’s the title? where’d you get it from? i definitely gotta see that!
@someone: Mato’s not just gonna make a million different combinations and just place them where he needs
skankpit: http://tomato.fobby.net/?p=213 is the interview, http://tomato.fobby.net/?p=224 is info on the movie, including where to get a copy. Keep in mind it’s a 1950s Japanese movie, so it’s nothing that special ๐
Do you think you’ll have an easier time with remaking Mother 1 with all the hacking experience you’re getting from this project?
@someone: (this is non-technical) The hack will dynamically generate text. This means that the game will produce the English text tiles in real-time!
Also, 140th!
Mato, I hate to ask so many questions because I know you’re busy, but do think that text speed will affect this hack in anyway? Personally, I’m just curious if the “Fast” text speed setting would act differently by having to generate two tiles at once. Deep down, though, I know you’ve already taken that into account (if it was even necessary) and more!
Keep up the great work and don’t forget to call your parents once in a while to let them know how you’re doing!
(…also to make sure you don’t get homesick or die from hacking without having saved in a while.)
Mato if NOA ever decided to release mother 3 which system is more likely to have the game nintendo ds or nintendo wii.
^I’d hope the Wii, but that’s just me fantasizing of continuing the Mother series on a big screen.
If only…
What a great idea to optimize the sprite text. I’m really sure that you will find the answer !
Wow, gotta be hardcore to watch some crazy Asian porno just because it inspired some of Giygas’ lines…
Good luck with the sprite welding. Hopefully, you can find a torch tiny enough for all those little letters ๐
A Fan: It’s *not* a porno, blargh. See here. I’m trying to clear up that myth here ๐
You are really really getting into the thick of things now. You’re doing great though, keep up the great work. I’ve had faith in you and will have faith in you until the very end. Thank you so much for taking the time, effort and energy to do this, it means the sooo much to so many people.
WHOOO KEEP ON KEEPIN ON!!!
It’s a porno. You can’t deny it. You watched a porno. You are a gross porno-watcher, sir.
Er, anyway, as dumb as the rumor is it’ll always be a porno to 99% of people who’ve heard that story. Kind of annoying the way the internet rumor machine works. Although I think you have the best chance out of anyone of dispelling that particular myth.
Okay, so porno is the wrong word, but err, I meant to say that it’s not exactly a nice movie if it traumatized a young Mr. Itoi, that’s all ๐
I mean, he does mention someone getting raped and there’s something about dismembered corpses… :/
a grisly crime drama would be more accurate maybe?
Just marking my place. It’s all moving so fast.
I don’t think any of us need to speculate when the final patch will be done. Mato may not say much on the subject, but I’m sure he has a better idea about it than any of us. And as long as HE can see the light at the end of the tunnel, it’s good enough for me.
As a follower of this project of mother 3 English translation since mother3.org and now mother3.fobby.net,All I know is that Mato and the rest of the team have been working as hard as human possible to make a complete English patch of mother 3 a reality so I stop thinking of when the release date of the full patch will be a long time ago and Iam enjoying all the updates and translation progress step by step with pics and information that Mato has provide us all with daily since the start.So I advice everyone reading this blog to enjoy this translation process of a great game which is very rare to see and not think to much about the date of the complete patch.
@Reaper amen.
Hey Mato, make a new post; I have a funny thing I wanna say and I want to make sure people see it because it’s just that great. You can just say hi or something.
Just imagine what Giygas would be like if young Itoi accidentally walked in on A Clockwork Orange. ๐
wut.
Mato, I think that interview gave me my new Brawl wi-fi message. Currently my name is “Giygas?!” in katakana, and my message is “INEXPLICABLE ATTACK” in a nod to Mother 1 (still haven’t actually finished Mother 2 to find out if the form of Giygas’ attack is STILL inexplicable), but I might change it to “I AM A BOOBIE” now. >>
oh, or for that matter, any of the neat things I’ve heard Giygas has got in store for me when I FINALLY finish Mother 2… depends on how quotable it is, and if I find it more worth using than “I AM A BOOBIE.” I just find it extremely funny that Itoi actually says that the part of him that deserves love is “the breast of Hisako Tsukaba.” 0_o
yep, the ducktales games were amazing, and if you guys like that show, I highly advise checking out the original Carl Barks Uncle Scrooge comics. Probably the best thing Disney ever produced. Most of the shows were based on his stuff.
I loved those old capcom disney games, they were like some weird variation on megaman, and lots of them were tough as nails. and learning how to jump over that statue thingie in the amazon without paying is one of my earliest NES memories…ahhh to be young again
oh yeah, I’m interested in knowing, does anybody think there will be a mother 4 after another 10yrs or so? I probably wouldn’t expect anything earlier……
All I can say is: please don’t burn out, Mato. If you’re getting sick of working on it, slow down or take a break. I think we’re all willing to wait longer (after all, an eventual release is better than “never”).
Haha mato should find an NPC with boring/uneventful text (or add one?) and change it to a rant about how that movie isn’t a porno ๐
Also TheReaper since I like answering questions for Mato I’m gonna say if this game is officially localized at all it really only has a prayer as a VC/WiiWare title. By that, I mean a mother-focking miracle. I don’t think Nintendo execs would sign off printing out carts (especially the most expensive ones) after the paper-failure of Earthbound. They’d have to tie up their localization programmers and writers with it for quite some time as it is which is highly unlikely enough; if on the one in a million chance that got greenlighted I could really see them only doing it as a downloadable Wii thing as to avoid having physical inventory . Perhaps some kind of Virtual Console/WiiWare hybrid. Still, this really wouldn’t reduce their costs that much, only eliminate one possible point of failure, so really does this sound like a formula for commercial success to you? ๐
The only remotely likely scenario is an unprecedented arrangement where Nintendo officially distributes this fan patch. It would take a herculean effort on behalf of the legal team to sort it out, not to mention Nintendo really doesn’t want to legitimatize this kind of thing for painfully obvious reasons. Nintendo would have to compensate somehow, too, and how does THAT work? Free starmen.net hosting for a couple decades? Who knows. Of course I would still see this only being a WiiWare kind of deal, and due to its unfortunately limited appeal outside the fanbase, it still might not make much money.
OK now this has me all sad ๐ We’ll be able to play Mother 3 though thanks to the hard work of Mato and friends, that’s all that counts. ๐
Mato got a cookie, and… Jeffman ate it. Jeffman’s HPs are maxed out!
๐ Heeeey… that’s Mato’s cookie!
Hey Mato, do you listen to music while you’re hacking? I find it makes tedious tasks a bit better
Unsavory Maggot: lol
*donates a brain food lunch to Mato*
Ack, very busy today, didn’t get time to work on sprite welding stuff ๐ Now very sleepy, so I will attempt to distract everyone with this thing I subbed last year.
Even when I’m not hacking the game, I think about it and often try to do it in my head. I think that might still be helpful for the actual hacking, or at the very least indicates I need brain surgery.
Take your time. We’re all just a bunch of greedy bastards who have nothing else to do but wish for the game while you and jeffman do all the work. Don’t get me wrong, I can’t wait for this game, but what you guys do is above and beyond.
I know talk is cheap, so how about this: what’s your paypal email? At this point, after seeing how much effort you guys have put in, I’d love to drop you a tip. I already know what you’ll say, that’s not about money at all. Obviously, I know that. But just at work today (as a mechanic), someone slipped me a $20 tip for something that took me 1 minute to do. I’ve probably received a total of $10 in tips in 4 years of working as an auto tech until today. I refused, but he insisted. In the same way, I’d love to send something your way. If you don’t want to post your email in the open, at least email it to me.
I’ve been a lurker of starmen.net since within the first few months it popped up. I’d love to give something back.
He won’t take it; Once Money comes into play; Nintendo might notice more and pull the plug on this. Which we don’t want. most of us would offer him 50 dollars for this game if we met him; But he’s doing this for the world; for everyone. And thats all he needs
What the hell was that video about? I watched like 2 mins of it, it seemed pretty crazy.
@_@
Thanks so much for doing this, I love you!
Wow I sound like a nerd. Ah well.
Awesome work guys, Keep it up!
Hey Mato, is this (link removed) in the game as well? :O
Mato you rule homie! Do you take donations homie? Cuz you can have my allowance.
Man, I can’t imagine how much work you guys have put into this, and all this for one game. I salute you.
KumatoraDancer: No, it’s not.
Others: The offer is appreciated, but please just accept it that we don’t want any money involved and we don’t want donations. Besides, if this were about money, or if money mattered, it’d be so easy to slap some ads on the site and get money that way. We get enough traffic that it’d probably produce a decent amount of money, but the project’s about translating a game and that’s it.
Awesome. I’ve been anticipating the review ever since I read that you’ve decided to order the movie. Bah, I’m tempted to ask questions about it… but I’ll just wait til the review. ๐
what kinda video is that? It looks like someone’s trying to stuff a whole pack of spaghetti down their throat
All of you guys who are working on this thing are awsome beyond all measure, I’ve only played Earthbound recently and let me tell you, I’m hooked on it and looking forward to this translation of Mother 3
Honestly, I’d never be able to do this stuff, since I pretty much am one of the biggest retards knowing how to do anything on the computer XD
Keep up the great work everyone, I’m rootin for ya
It’s hard to believe you’ve come this far, but you have! Congratulations on your sheer determination and heart! There will be many more people who appreciate you than you will ever know!
Too many exclamation points!
Mato, I hope this isn’t a repeat cause I didn’t real the entire thread, but I’m interested in how you’re generating the sprites in real time. Your goal is to actually generate a bitmap on the fly for whatever letter combo you need? Can you go into more detail on how that’s going to work?
Curious Programmer
Thanks, Mr. Mato. (WOW the sheer bulk of discussion in this thread!) Further question stuff:
Menu stuff like item descriptions just chunk all the text on the screen in one frame, right? Totally different from the main script being typed one letter at a time (or two if fast, apparently). Do I understand all that correctly? If so, here’s what I’m thinking:
SUGGESTION 1. Would it make sense to sprite-weld the item descriptions like you’ve already planned, but then change only the main script to display true-text?
~ OR ~
SUGGESTION 2. What about sprite-welding all that menu stuff like planned, and doing a *different* sprite weld to the main script? I’d draw this, or make a video, but I’m limited, and shall do my best in ascii. I’ll assume, for easy math, one letter displayed per frame.
Example line.
FRAME 1: E
one sprite
FRAME 2: Ex
one sprite
FRAME 3: Exa
two sprites (“a” is split between “Ex” sprite and its own sprite)
FRAME 4: Exam
two sprites (“a” is split, “m” finishes the sprite)
FRAME 5: Examp
three sprites
FRAME 6: Exampl
three sprites
FRAME 7: Example
three sprites
FRAME 8: Example
four sprites (” ” has started the next sprite)
FRAME 9: Example l
four sprites (” l” is fourth sprite)
FRAME 10: Example li
four sprites (” li” is fourth sprite)
FRAME 11: Example lin
five sprites (” li” plus half of “n” is fourth, other half of “n” is fifth)
FRAME 12: Example line
five sprites
FRAME 13: Example line.
five sprites
Exa
am
ple
lin
ne.
Same principle as the all-at-once sprite welding, but recalculating and redisplaying sprites *per* screen-refresh. I know that’s an awful lot of work — especially with control code stuff — but it appears the “normal” sprite welding is a lot of work already.
Suggestion 3 would be to display all the main script at once, but I’m sure you don’t want to do that, if for nothing else comic/dramatic timing. And I’m sure we’d all love that EarthBoundy one-letter-at-a-time feel anyway. $:^ ]
Looks like Suggestion 1’s code rewrite (of only the main script) might be about as bad as Suggestion 2’s code rewrite (of primarily the main script). But whatcha think?
catapult37: I’m working on a detailed-ish explanation now. I think it’ll be informative and stuff.
PKB: The main script doesn’t use sprites for text. It’s a comletely different evil scary beast, probably 10x more complicated than the battle text routine. THe main script hack will of course make sure the script is printed letter by letter, it wouldn’t make sense otherwise.
Even if money isn’t the problem, and that the only objective of the translation is to bring the game to the fans that have been eagerly awaiting to play it…
Is there going to be a way for us to thank you? Maybe not by sending money, I understand how that would be wrong. But maybe there could be a way to get you some fan mail, or something, in the way that everyone at Starmen.net decided to thank Mr. Itoi.
Maybe you think the comparison is ridiculous, and maybe a little creepy, but I think that there are a lot of us that have been dying to play this game, and really think you’re deserving of at least some sort of thank-you gift. I don’t mean this as pressure to give off your personal information or anything, I don’t think anyone would benefit from that. But maybe a anonymous P.O. Box where we could send you a little something as a form of appreciation?
I feel kind of frustrated that you’re undertaking this time-consuming and difficult project for the enjoyment of every single one of us, and that there’s nothing I can do to help or thank you. It just feels kind of wrong somehow, and I think there’s many among us who feel that way.
The amount of comments this blog receives and the incessant praise from fans is probably payback enough. Just the interest people have in it, which seems to have exceeded expectations, should suffice.