On Tuesday 20 February 2001 12:12, you wrote:

> Just want to know if anyone ever visits
> http://SnatcherTranslation.cjb.net ... We really need to get that
> game translated, please help by visiting...

Well, just visiting won't get the game translated. Recently someone asked 
about progress on the Snatcher translation mailinglist, the text below is 
taken from my reply.

===

To do the reverse engineering efficiently, we need an emulator that has good 
debugging functionality and a save state option. Debugging is necessary to 
see what Snatcher is doing, save state is necessary to test translations 
without having to restart Snatcher every time: using the Snatcher save system 
is too tiresome. Preferably the emulator source is available, so Snatcher 
specific debugging code can be added.
fMSX has source available and a primitive debugger, it would need a better 
debugger and save states added. MESS has a good debugger according to Sean, 
but MSX2 support is incomplete and there is no save state option either. I 
don't know about the Windows emulators, because I do all MSX development in 
Linux nowadays.
[Addition: Some people replied that RuMSX has both a save state option and a 
built-in debugger.]

The reverse engineering itself is difficult because Snatcher apparently keeps 
almost everything in a single data structure. Not just the texts, but also 
the menus, the animation scripting, the game scripting etc. Anyway, that's 
the impression I got when I was hacking at it, because I didn't understand 
all of it I cannot be 100% sure.

As you may know, Japanese is a lot more compact than English. So the 
translated text will take more space than the original text. I already know 
how to replace any Snatcher text with an English text of equal length, but 
that's not good enough.

Fortunately, Snatcher uses 2-byte characters but also supports the display of 
1-byte characters. So a factor 2 is saved by using the Latin alphabet (as 
English does), but a factor 2 is not enough. There are three ways to solve 
this:
1. Shorten the English text: leave out parts of the messages.
2. Compress the English text.
3. Increase the available space: re-arrange the Snatcher data.
It's possible to use a combination of methods.

Shortening should be avoided as much as possible, otherwise the quality of 
the translation will be poor. It's probably impossible to create a good 
translation by using only shortening.
Compression requires a few modifications to the Snatcher routines. It's a 
pretty useful method, but there are limits to how tight you can compress text 
with simple algorithms. And complex algorithms need too much changes in the 
Snatcher routines.
Increasing the space is done by gathering unused space and taking advantage 
of space saved elsewhere. Extra space must be freed both on disk and in 
memory in order to be useful. In memory, a lot of space (about 20 to 30K, I 
forgot the exact amount) can be freed by removing all kanas and kanjis from 
the font. On disk, we'd have to look for empty sectors and parts of script 
sectors that are unused. The largest problem is rearranging all data so that 
the extra space is located in a useful place: it's useless to have small 
empty areas all over the place, it has to be concentrated. When the data is 
rearranged, the game should know the new location of the data. Those pointers 
should be calculated automatically, because calculating by hand is a lot of 
work and error prone. So there is a lot of reverse engineering and tool 
building needed to make this work.

Note: On Solid Snake, we (Takamichi and I) used all three methods. Oasis only 
used shortening.

I hope this info will help you in understanding where the problems of 
Snatcher translation are.

===

There is an overwhelming public interest in a Snatcher translation. However, 
enthousiasm alone doesn't get the job done. There are concrete problems to be 
handled, only if those are solved the translation can become a reality.

Bye,
                Maarten

--
For info, see http://www.stack.nl/~wynke/MSX/listinfo.html

Reply via email to