Original Post

A while ago I spent some time on patching Virtual Fishing. The project came to a halt as I needed a break. However, I’m planning to get back to it. So I figured I should share what I have done so far.

The goal of the project obviously is to replace the Japanese text with an English translation. The main problem is that the 16×16 Japanese characters use allot of space on the screen and can not simply be swapped to lain letters. So the plan is to add an 8×16 Latin alphabet, change the text drawing method to support the smaller letters and then patch in the translated text.

Some of that I already did. Well, the first thing I did is reverse engineer how the game draws the text and where the Japanese alphabet is stored. The attached image has been exported from the rom. As you can see there are already Latin letters in the rom but nothing I want to use.

I then patched in a Latin alphabet by overwriting some of the Japanese letters. I also changed the method that draws the text to use 8×16 characters. The resulting rom is of course messed up as the sentences themselves are still Japanese.

I located some sentences in the rom for testing purposes. Unfortunately, there are no big pointer arrays that point towards these sentences. That makes it a bit more difficult for me to dynamically replace them.

The next step will be to clean up what I did so far and make it more generic. After that I will start replacing sentences.

Right now I’m using some translations provided by awesome person Benjamin Stevens. I know Wyndcrosser was also working on translation, so there should be plenty of sources when it actually comes to translating.

65 Replies

OK, so I managed to replace the instructions before each match. There is one problem though. for each match the instructions are the same, except for the length of the fish you are supposed to catch. The game only has one text stored and replaces the number with something else on the fly when it sees a specific address (I guess). So I need to figure out how exactly that works and make it work for my english text.

I also noticed another problem with my previous text replacements. It pretty much breaks when you start a second match. So I will need to take care of that as well.

I took a short break from this project as it is starting to annoy me. However, I got some missing translations from Ben today and patched them in. Now all the phrases that the competitors throw at you are translated (I found quite allot in the rom). So I went ahead and patched that part of the rom to draw smaller chars. It glitched out at first but I was lucky enough to find the problem.

I didn’t fix any of the problems I mentioned before yet. I might have a look at the result screen next.

Good news first: I solved the problem that would screw up the game if you start a second game. I actually patched all of the ingame menus and dialogs. So the game is now pretty usable. I also patched the first part of the result screen. Still need to patch the won/lost screens which seem a bit tricky.

I didn’t look into the problem with the instructions at the beginning of the game yet.

I encountered two new problems though: First there is an idle screen that pops up if you don’t play for a while. For some reason it overwrites part of the charmem and thereby breaks stuff. Then there is the screen that shows the size of the fish you cached. It seems like this one uses yet another text writing method as none of my usual breakpoints worked…

I also found tons of Japanese strings in the rom that I never saw in the game. So that worries me a bit…

Yea! That’s so awesome; I am excited to run this on a Flashboy! 🙂

Ok. I figured out how the win/loose screen works and patched the translation. Ben provided me some missing translations so that part is complete. I also had a deeper look into the measuring screen. It of course uses it’s own method to write strings and also it’s own string format. There is a bigger pointer array that seems to reference all the fishnames though. So that makes it easier.

Next steps are the usual. Change the code to load smaller chars, patch the strings, add something to UI to handle the mappings.

I also tried the Time-Attack mode for the first time. There seems to be allot of work there as well. Also, the username in the All-Time Records is displayed wrong.

So here are the open points:
– fix the 30 minute pause screen glitch
– fix the numbers on the instruction screens
– fix all-time records name
– remove single chars that are displayed sometimes (Record screen)
– translate Time-Attack mode
– translate the measuring screen
– figure out what the book is good for and translate if needed

Good news first. As I mentioned in this thread: http://www.planetvb.com/modules/newbb/viewtopic.php?topic_id=6257&forum=1&post_id=33400#forumpost33400
I found all the fishnames (and a boot) that can be caught in the game. I also found the place in the sram where the game stores the fish you caught in free play mode as well as the won tournaments. So I can just unlock stuff myself. That makes testing allot easier.

However, I somehow misunderstood what is going on in the measuring screen. I guess it was just too late that day. It actually uses the method I initially manipulated. So I wasted quite some time to build a UI and stuff for pretty much nothing… While doing that I accidentally overwrote one of my mapping files. Of course I forgot to backup that file. Now I have to go through the translations again an map all of those sentences a second time.

After unlocking everything in the book I realized there are tons of sentences there as well…

Could you program other items (like the boot) into the game like old car tires, and soda cans? Because I think that would make the game a bit more interesting.

all the time i forget to save, or i overwrite a part of a project. sometimes i get discouraged, but eventually i come back and pick up where i left off. don’t get frustrated. you are doing a great thing and everyone appreciates your efforts. it will get done when its done and on that day i’ll look forward to finally spending some time with this game.

Dreammary wrote:
Could you program other items (like the boot) into the game like old car tires, and soda cans? Because I think that would make the game a bit more interesting.

Sounds like allot of work. There are actually 17 different fish plus the boot in the game. All require different timing when the fish bite. They also all look and behave (slightly) different when being caught. So you already got some variety there.

Lester Knight wrote:
all the time i forget to save, or i overwrite a part of a project. sometimes i get discouraged, but eventually i come back and pick up where i left off. don’t get frustrated. you are doing a great thing and everyone appreciates your efforts. it will get done when its done and on that day i’ll look forward to finally spending some time with this game.

It wasn’t that bad after all, just frustrating. I usually setup a subversion for each project but I expected this patch to be way easier.

So after I stopped being stupid I added the lost data a second time. I then went ahead and added mappings for all the fish names and the remaining text on the measure screen. The fish-names in the book also got translated at the same time. So now I actually have a version that allows you to play the basic game in English. However, there is still plenty of work to do:

– fix the 30 minute pause screen glitch
– fix the numbers on the instruction screens
– fix all-time records name
– remove single chars that are displayed sometimes (Record screen)
– translate Time-Attack mode
– translate the detail screens in the fishbook
– translate all images (titlescreen, stage selection, …)

I think the time attack will be next. Let’s just hope the rules are always the same.

I looked into the time-attack mode yesterday. Most of it can easily be translated using the methods I already have. I patched the instructions yesterday already. For the rest I’m missing translations but they should be easy as well. There is of course one exception. The screen that shows you your time is handled differently as it not simply contains static text. Other screens would have a placeholder text and then fill in the blanks dynamically. However, it seems like this one is build together dynamically in wram and then loaded from there. I will wait for the translation and then take care of it.

I also looked into the forced pause screen menu bug. I actually waited for a hour or so to pop up until I realized it is only displayed on certain screens. The screen is simply overwriting my data in charmem and then reloads the original data when exited. That results in a glitchy mess. I actually found the timer in wram and can force the screen to show at any time. Not sure what to do about the problem yet.

I had a deeper look into the auto-pause-screen problem. I decided the easiest way to fix the problem is to simply disable the screen. I might enable and fix it properly in the future but I wouldn’t bet on it.

I also removed the single Japanese chars on the best-time screens and the all-time records screens. The first one was easy but the code of the second was a bit cryptic. However, they are gone for good. Next step might be to fix the player names on the all-time records screens.

– fix the numbers on the instruction screens
– fix all-time records name
– translate rest of Time-Attack mode
– translate the detail screens in the fishbook
– translate all images (titlescreen, stage selection, …)

Nice work thunder, your really motoring along with this patch.
I think this is the only game i haven’t really played because of the language barrier so I’m really pleased your doing this. Thank you.

OK, so Ben translated everything that was missing after I was able to unlock all of the game content. I went ahead and patched the screens of time-attack mode. I skipped one screen for now. It displays the time you needed to catch all fish and is build dynamically in memory. So my static text replacement does not work.

I went ahead and started patching the fishbook. Some of the text (like the fishnames) was already translated. I was able to patch in the species quite easily. There are some single chars again that I don’t know if the really need to be displayed and translated. Maybe I will just remove them.

The text describing the fish cannot be patch that easily (of course not). Usually the game would load a pointer into memory for this kind of text which I would simply replace. This time the text is just part of an array of strings. So the address is nowhere in the code and cannot be replaced easily. I will have to go ahead a write something that replaces the address dynamically like I did before. I analyzed the code and found a good place for the patching already so it’s more a matter of just doing it…

Here is what is left to do:
– fix the numbers on the instruction screens
– fix all-time records name
– translate result screen in Time-Attack mode
– translate the description text in the fishbook
– translate single chars in the fishbook
– translate all images (titlescreen, stage selection, …)

OK. So I wrote something that is replacing the address of the description strings in the fishbook dynamically. It was easy enough as I kind of did that before with the charmem sentences. I also formated the text so that it is not cut-off on a linebreak. I might do the same for the remaining text in the game as it just looks nicer.

I also patched the 2 single chars that needed to be replaced. Ben wanted them to be “O.” and “F.” but putting in the period would have been very complicated. So I just went with “O” and “F”.

However, the fishbook is now fully patched. Next I will have to look into the dynamic screens in the time-attack and tournament modes.

Here is what is left to do:
– fix the numbers on the instruction screens
– fix all-time records name
– translate result screen in Time-Attack mode
– translate all images (titlescreen, stage selection, …)
– format text

I had a look into how the dynamic text is build together. It wasn’t that complicated after all. The instructions in the tournament mode now shows the correct numbers. The result in the time-attack mode is also displayed correctly.

Most of the game is patched. Only the following things need to be done:

– fix all-time records name
– translate all images (titlescreen, stage selection)
– format text

I looked into the all-time record names a couple of days ago. It is actually kind of tricky. the game uses a 16×8 pixel Japanese alphabet for the names because of the limited space on screen. My initial idea was to let it use my alphabet by changing the offset into charmem. That didn’t work for several reasons. So the way to go is to replace the Japanese chars with latin ones. The problem is that I’m not a 100% sure how the Japanese alphabet is mapped to the stored values. That will need some investigation.

I might put this aside for a while and look into the images and the formating first.

Maybe I will release a test-version soon so that everyone can try to find untranslated screens. I’ve never beaten the game after all.

Cool man, good to see that the majority is done. Can’t wait to try it

I’ve been pretty busy lately with other stuff so no progress. I will most likely do the formating and then put up a testrom for everyone to try. Maybe tomorrow, maybe next week.

I’m looking forward to trying out the ROM.

AAMOI how’s Snatcher going ?

MineStorm wrote:
AAMOI how’s Snatcher going ?

I pretty much didn’t do anything after I released the rom. I needed a break and then jumped into Virtual Fishing which took more time then expected. There is another small game I wanted to make as part of the anniversary. So I doubt I will get back to it this year.

 

Write a reply

You must be logged in to reply to this topic.