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