Translation Anyone have any interest in Zoids Saga DS?

Anyone have any interest in this translation?


  • Total voters
    25

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,798
Trophies
3
XP
28,321
Country
United Kingdom
Does seem like an improved effort then (much prefer the chase mechanic to random encounters). Curious why it did not get a release, though I suppose it would have been a while since the Chaotic Century anime and Genesis (newest anime at time of release of this) never quite properly made it to the US with Fuzors tanking hard before then so yeah. Might have also been a rights thing but I am not that invested to go find that out.

N1 Japanese should be more than suitable for this sort of thing -- Japanese wordplay might be an ask but anime game that might not have kanji/might be recognisably only using a very limited set for a certain age in school of the time is a different matter entirely. Harder part will probably be the debate over whether to be true to the Japanese, the dub, the manga, the models or go something else.

Compression wise then LZ says most things.
https://www.romhacking.net/utilities/826/ https://www.romhacking.net/utilities/789/ are usually what we suggest.
The first bytes of the file are usually going to be 10 (older ROMs) or 11 (newer ones, slightly better compression but might not be compatible with the BIOS provided decode functions), and 40 in some rare examples (Golden Sun and one other that I am aware of but have not pulled apart many late stage games). Most things handling DS files will handle them though, indeed crystaltile2 if you are using that will probably have it on the right click of the DS ROM file viewer (the DS icon on the right hand side of the top menu)
The binaries (be aware Crystaltile2 might falsely detect the binaries as being compressed) will instead be using BLZ from cue's tools.

I will have to look at the ROM to see. Most of the time I would expect whatever is used for the menus and library/bestiary to be the same as the script, though there are plenty of exceptions.
Pointers for text will usually be at file level (usually at the start of the file), most of the I look to see if there is a end of section marker (maybe 75% of games have one, or something you can plausibly use for one and going manual to get a decent chunk to work with is not the worst either), find all in a file and compare to the hex at the start of the file (if it is straight there then great, if it is a fixed difference then you have offset pointers which will usually start at the start of the text section, and if they are out by an increasing but same amount then relative). Some archives will have pointers be in a separate file, though usually in the same directory or immediately up in the tree. Some menu text will be fixed length, though if you have descriptions rather than simple text then that is less likely.

I will note for English text then many Japanese games on the DS will use shiftJIS ( http://rikai.com/library/kanjitables/kanji_codes.sjis.shtml ) or EUCjp (same site will have a link) but not have the ASCII backwards compatibility. Some will opt to use the Roman characters included in that, others will hack it further. NFTR is the main font format for the DS but plenty went custom. Forcing your input method to output Roman characters in the shiftJIS space is tricky, so instead I tend to use jwpce, JWPxp, njstar or one of the other Japanese text editors and it will have the option to force it (try the J A and whatever buttons on the top right of the screen). I don't know offhand if there is a cute trick you can do from U16 to get to that space like you can with capitals and lower case for ASCII when you add/subtract a certain amount.
Forcing it into stuff it already understands is easier, however they tend not to use the best fonts for the Roman letters and you are still dropping 16 bits a character when you could be using 8 (not so bad for files most of the time -- even 16 bit pointers will be in the more space than you will likely need for text range but memory can be a concern for some things).

Line of English text of different size is a solid proof of concept. Everything else (give or take truly figuring out the encoding) is so much tedium from that point.
 

Traceytrace

Well-Known Member
Member
Joined
Apr 13, 2022
Messages
112
Trophies
0
XP
816
Country
Australia
I've decided to put my efforts where they're best used, so I've taken the script (a large chunk of it, not quite the whole thing) of the main dialogue from the old Zoids Saga DS thread, imported the txt file as an Excel document and started translating it line by line. Here's what I have right now, I will post updates every few hundred lines and just work through this thing at my own pace. Hopefully in the future we can have a fully translated script and someone who is able to do the hacking side of it.
(it's an Excel file inside a RAR archive since it doesn't let me attach an excel file)
 

Attachments

  • ZoidsDS Story (version 1) - コピー.rar
    579.1 KB · Views: 49
  • Like
Reactions: Tarmfot

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,798
Trophies
3
XP
28,321
Country
United Kingdom
Being separated is good. It can be tricky to insert things made in such a manner (we normally see it with people finding an existing translation on gamefaqs and then wondering how easy it would be to insert, the answer usually being probably easier to do it again from scratch) but if it still largely mirrors the formatting/layout in the base game then you have a leg up over basic text.
 

Traceytrace

Well-Known Member
Member
Joined
Apr 13, 2022
Messages
112
Trophies
0
XP
816
Country
Australia
Being separated is good. It can be tricky to insert things made in such a manner (we normally see it with people finding an existing translation on gamefaqs and then wondering how easy it would be to insert, the answer usually being probably easier to do it again from scratch) but if it still largely mirrors the formatting/layout in the base game then you have a leg up over basic text.
Are you saying the way I'm doing it is good or that I should be doing it differently? (I really appreciate your help!)

I'm trying to keep the length of text boxes in mind and using the shortest translation I can think of that still conveys the same message. I will probably be much better at it in a few months time and end up coming back and redoing parts as well
 

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,798
Trophies
3
XP
28,321
Country
United Kingdom
Are you saying the way I'm doing it is good or that I should be doing it differently? (I really appreciate your help!)

I'm trying to keep the length of text boxes in mind and using the shortest translation I can think of that still conveys the same message. I will probably be much better at it in a few months time and end up coming back and redoing parts as well
In an ideal world a hacker would have set it up to both extract and insert, possibly by way of custom tool or script with stuff like atlas and cartographer or kruptar 7. At which point translate at your own pace by your own means (though few use lookup database software in ROM hacking world like they will in commercial stuff or some anime/manga setups).
You can still make it work though, and the spreadsheet method is 75% of the way there (you are keeping the general setup and thus can tweak things at the end vs the nicely formatted for reading on gamefaqs problem) and might make for some effort on the back end when it comes to insertion instead. Or if you prefer I quite often use spreadsheets, though I also tend to usually get involved in smaller text setups than big RPG or something.

As far as matching sizes... mostly that way madness lies for the translator at least. You can tweak a sentence or two, or maybe some place names (it might look like a mansion, might translate as mansion but if I need those extra few characters/not to have to fiddle with code because someone stuck it in with the code and home makes sense...) to match or be padded out to match but eventually it all breaks down.
There are two primary concerns for text length.

1) Pointers.

2) Memory issues.

Pointers as any intro to ROM hacking will tell you, or indeed intro to C family programming will tell you, are means by which locations of code/data/whatever are noted and located. In the case of ROMs (the Read Only part also coming into play) they have not got time to be parsing out text like a word processor or web page and instead "read from here to here" is far more useful (read only means no extra users coming along and adding things in during play, give or take names which still don't matter for this).
Normally these take the form of numbers in the start of the file that indicate where everything is in the file to come, I usually liken it to contents pages of books as the same problems crop up when someone rips out or inserts a bunch of pages somewhere in the book and the reader dutifully counts pages to get where they need to be.
I can cover pointers if you like (though the guide in my signature has a bunch) or possibly at some point look and see what this game has (there are four main types, though only three in any real capacity on the DS -- standard, that is to say what they are in the file is where they are in the file, offset, that is to say they start at a point in the file and count from there which is somewhat akin to Roman numerals used in contents pages/front matter if going back to that analogy (indeed the start of the text section is where that start is in the vast majority of things I have seen), and relative, which is to say from this location go this number of bytes and is more of a holdover from older styles of computing but as it is seen often enough then yeah.
The fourth is sector addressing and is more a thing for optical media -- when you have gigabytes of DVD then wasting a few hundred kilobytes is no big deal, where wasting a few hundred kilobytes of ROM in the NES era would get you fired, possibly out of a cannon. Anyway so you say each sector is... some megabytes. If the data you care about ends before the end of a sector then so it goes and the next thing starts on the next. More of a thing for optical media than anything vaguely like anything I have seen on the DS, give or take an example in a second and how conceptual you want to get with alignment (if you have ever seen things like word aligned, half word aligned, byte aligned... in programming then both for ease of use and some technical reasons with compression for mostly graphics then you can see it).
Simple end to end sizes I don't normally see in text based efforts but have seen it in archives. Bonus if you do have this is you just change the singular size (and possibly whole archive size values if there is one) and don't have to worry about everything else that follows.
You can also get pointer maths and extra data in pointers. The NSBMD format and the archive format in touch detective notably have pointers but need them shifted (which necessarily loses some clarity as you are basically adding zeros to location). Extra data is generally noted in the popular NARC archive format -- 32 bits is a lot of data to have for a location so use 31 and you are still in the gigabytes but the top bit now indicates a subdirectory. I have seen markup data (bold, italic, coloured, indicator of what character is speaking so as to fetch appropriate portrait...) mixed in with pointers but it is usually a separate value in the pointer field rather than blended in with the pointer itself (think 4 bytes pointer, 4 bytes markup, 4 byte pointer, 4 bytes markup).

Memory issues are rarer on the DS than older stuff, particularly older CD consoles, but while the pointers being a whole 32 bits might indicate a file of 4 gigs (2^32 and all that) the reality is often so much more limiting as you have 4 megs and change ( http://problemkaputt.de/gbatek.htm#dstechnicaldata ) to fit the bulk of the game's code (you can swap out things, see overlays), some graphics, stats tables, level data, working area and whatever else in. If you expand the text massively and are reasonably sure you have not made an error in pointers or used an illegal character/markup then you probably are looking at this. It is however quite rare for any reasonably made translation and usually only games that push system limits that do things here. Solving these can be tricky but if playing with a thesaurus or losing some flavour text is not going to cut it (be it technically or aesthetically, also pun intended) the usual start is an 8 bit conversion of text if going from Japanese -- Japanese having thousands of kanji does not do well when you have 2^8 or 256 possible characters so tends to need 16 bit encodings, English has more than enough for both cases, letters, punctuation and a bunch besides with room left over so going from 16 to 8 is instant doubling of space.
 

Amy_Symilton_Gamequeen

Well-Known Member
Newcomer
Joined
Dec 6, 2020
Messages
52
Trophies
0
Age
21
Location
Surabaya
XP
312
Country
Indonesia
I've decided to put my efforts where they're best used, so I've taken the script (a large chunk of it, not quite the whole thing) of the main dialogue from the old Zoids Saga DS thread, imported the txt file as an Excel document and started translating it line by line. Here's what I have right now, I will post updates every few hundred lines and just work through this thing at my own pace. Hopefully in the future we can have a fully translated script and someone who is able to do the hacking side of it.
(it's an Excel file inside a RAR archive since it doesn't let me attach an excel file)
You can use mine to help translate the rest even though I didn't do much update as I'm focusing on my study since last year. Managing a schedule between college and free time to translate or play video game wasn't easy so we will need any help we can get in case I couldn't be active in gbatemp as a translator in the translation project
 

Attachments

  • ZoidsDS Story -Translated WIP (Polished and arranged by me), made by David_the_tired.txt
    527.3 KB · Views: 60

Traceytrace

Well-Known Member
Member
Joined
Apr 13, 2022
Messages
112
Trophies
0
XP
816
Country
Australia
eeeek, Uni workload is taking up most of my spare time. I will get back to this some time in the near future. Not disappearing though! I'll keep an eye on the thread
 

Traceytrace

Well-Known Member
Member
Joined
Apr 13, 2022
Messages
112
Trophies
0
XP
816
Country
Australia
Still a few weeks out from having more spare time, but I've made a Google Sheet anyone can view and comment on (link: https://docs.google.com/spreadsheets/d/1djyMo5SHQfwPf-p5g229hsk_eId-P-R4reVIi_bC5VI/edit?usp=sharing ), as well as translated down to line ~650 of the sheet. I'll try and chug away at it, but no promises!

25/05/2022: row ~1600, Translated up to the castle escape. Added some missing dialogue
25/05/2022: row ~2100, all story dialogue in Arkana town translated. Added Dr.T's dialogue at the Research Lab
 
Last edited by Traceytrace,

Traceytrace

Well-Known Member
Member
Joined
Apr 13, 2022
Messages
112
Trophies
0
XP
816
Country
Australia
I can do about 400 rows or roughly 80-100 lines of dialogue an hour while playing through the game alongside. At ~40,000 rows in the spreadsheet, this should only be a grand total of 100-150 hours of work to translate the story. Easily achievable! And I'm enjoying the translation process. Should have a full story script within the year :)
 
Last edited by Traceytrace,

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,798
Trophies
3
XP
28,321
Country
United Kingdom
"while playing through the game alongside"
Is the story/game that intertwined and complex enough to justify such an approach?

If it works for you then so it goes. Most people however get the script and translate that cold, maybe after a playthrough to see if there are any in jokes, proper nouns or similar that might trip up the "go to random line, translate from there" approach if it were adopted. If the game decides however to mix the script up compared to the final on screen appearance (if you are going to shuffle around scenes in a story you, the hypothetical game developer, can do that with pointers happily enough).
 

Traceytrace

Well-Known Member
Member
Joined
Apr 13, 2022
Messages
112
Trophies
0
XP
816
Country
Australia
"while playing through the game alongside"
Is the story/game that intertwined and complex enough to justify such an approach?

If it works for you then so it goes. Most people however get the script and translate that cold, maybe after a playthrough to see if there are any in jokes, proper nouns or similar that might trip up the "go to random line, translate from there" approach if it were adopted. If the game decides however to mix the script up compared to the final on screen appearance (if you are going to shuffle around scenes in a story you, the hypothetical game developer, can do that with pointers happily enough).
Since Japanese is a very context heavy language, I need the context in order to best translate into English,since we rely less on context to say what we're trying to say, so it's partly for accuracy of translation. Characters also have a picture of them making a particular face beside their text box e.g. "blank expression", "sad", "yelling/angry", "puzzled", and the spreadsheet doesn't have this information, so I need it in order to pick my words in English such that it makes sense given their facial expressions

Secondly, the spreadsheet containing all the Japanese lines does jump around, for example a scene in the beginning area of the game, that is mandatory, Is ~30000 lines deep, so by going through the game alongside, I can make sure it reads in chronological order from top to bottom. This way, if we never get a full patch, I will at least have created a way for players to read the English alongside playing the original game

Also yes the story is quite linear, there are no "side quests", just main story and post-game events. My idea is "translate every single line of dialogue that is mandatory in order to reach the end credits". So if talking to all the NPCs in the town is required to progress (a frequent occurrence in Zoids Legacy, some might remember), then I'll translate all their dialogue, otherwise I'll leave it until after the story is complete
 
Last edited by Traceytrace,

Traceytrace

Well-Known Member
Member
Joined
Apr 13, 2022
Messages
112
Trophies
0
XP
816
Country
Australia
Also Would you be able to give me advice on whether my calculations for having enough bytes of memory are correct? I have counted the number of characters in column A (up to the last line I've translated) and multiplied them by 2 to get the number of bytes needed for all Japanese text, then done the same for the English text in column G, but not divided it by two, since they theoretically would need 1 byte each, if someone could get the game to output half-width alphanumeric. Am I correct in my calculation that my translations are staying within memory requirements? Obviously some moving around of data and pointers to said data would be needed, but as a proof of concept that there IS enough memory leftover
 
Last edited by Traceytrace,

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,798
Trophies
3
XP
28,321
Country
United Kingdom
If it is what enables your workflow to happen then great. Most games are generally linear and script happens in roughly story event order that such a thing would be on the less optimised side of things but again if it works for you and is happening in a time scale you are content with.

As far as size then yes, no and the list of asterisks is very long here which all amounts to "it depends".

Elaborating a bit though

Japanese in modern games (some Kana only NES stuff can be different) will be 16 bits per character long owing there thousands of kanji and 2^8 being smaller than that, though you might occasionally see 24 and there are legends of 32 bits.
While the shiftJIS popular in DS games supports 8 bit (half width might be understood as a term but it is a bit of a legacy one) in the real world of computing then DS games... not so much which is why you will probably be wanting to use the Roman characters seen in most shiftJIS efforts on the DS http://rikai.com/library/kanjitables/kanji_codes.sjis.shtml , I don't know of any simple conversion tools here to go from ASCII to that even if it would be relatively trivial to do*, normally just enter the text into something like JWPCE or njstar which has the option). 8 bit conversion is a thing that has been done in ROM hacking but it is rare and on the more annoying side of things (you get to change an entire encoding, possibly font**).

*might have to make an insertion table for some ROM hacking tool as that could be used to do it come to think of it.

**ntfr is a popular font format on the DS, though far from as universal as something like sdat for sound, and can be edited like a normal file to add in extra characters with hacker's choice of encoding value, but normally you will be watching the game code fumble with text and changing that to 8 bits.

Characters multiplied by 2 is likely to be on the lower side as you might have markup (bold, underline, sparkly...) and placeholders (this item costs ???? whatever currency, what character is speaking for the portrait, yes/no is not always yes/no but often a value) to deal with. In some especially annoying cases those values can be 8 bits long which makes the blind 16 bit decoding in a hex editor mess up but this project is past that at this point I guess.

Memory has three aspects technically.

1) On screen. There might be a hard limit and making sections larger by more text boxes might be hard. Some would consider this more of a screen or editing problem than memory per se even if technically it is and is likely going to be viewed as such. Older devices might see something more restrictive still depending upon the mode of graphics used but the GBA and then DS are pretty much arbitrary here.

2) In memory. Things on the DS tend to be copied from the ROM to somewhere in RAM and operated on from there, which is a bit different from most older consoles where the ROM itself was visible in memory and fast enough to generally operate so only really compression troubled things. The DS has 4 megs of memory but that does include the space needed to stick the arm9 binary, arm7, overlay area, all the stats tables and whatever work space in use by the game at that point, the firmware settings dump... so the reality is often quite a bit less. Better games will be able to stream game scripts to memory leaving you back at 1) but this is where the "it depends" aspect comes in as not all games will. The effects of going over this limit might be quite subtle as well and we have had cases of it only being apparent in odd points -- I believe it was one of the Fire Emblem games (big came from a company quite competent in coding) that had normal text be fine but the chapter recap section then crash if you reversed it or something not necessarily going to come up in standard "is the line too long and clipping" proof reads/playtesting.

3) In ROM. DS ROMs themselves can reach into the gigabytes quite happily and there is nothing really stopping you from going there in any ROM; if you have read stuff for older consoles about mapper changes, bankswitching, mbc conversion, slowrom/fastrom... then the GBA and DS don't really have this and can be made as large as the base system supports quite trivially. If you are brushing up against a limit here from text then something has gone very wrong -- audio and video being what I would normally expect to go there, that or someone did a 10000 level extravaganza hack.
3a) In format in ROM. 32 bits for the average pointer means around 4 gigabytes can be addressed but sometimes those pointers are cut down a bit (I probably mentioned stuff like the upper bit of NARC pointers being used to indicate a subdirectory meaning the theoretical limit for size is now some 2 gigs, though some things use more or have some maths and reduce things down further still). Chances are you will run into memory issues from 2) long before then though but I mention it as some do fear this for DS ROMs where it is not really a thing (and for most translation hacking purposes then barely a thing on the GBA -- Mother 3 is probably the only example of something commercial going to be trouble there and that has already been done for English at least).

Give or take text on screen limits then any one of those is usually solved by happy accident (if you doubled the size of script in translation you did something wrong) if you did do an 8 bit text conversion hack as most in the ROM hacking world would know it as, and is usually the reason for such a hack to be done/considered.
 

Traceytrace

Well-Known Member
Member
Joined
Apr 13, 2022
Messages
112
Trophies
0
XP
816
Country
Australia
To be clear, I mean that the script (google sheet) that I am translating currently has some things way out of story/linear order e.g. scene A might be at row ~1000 and the next scene, scene B, that the players is thrown into is at row ~28000. I'm moving these things around myself so that if scene A ends at row 1000, then the first line of dialogue of scene B is at row 1001 (or 1002, 1003 so that iI leave a bit of white space, but you get the point), so that someone playing the game could realistically have my translated script open, and not have to jump all over the place.

I understand that, because pointers can point anywhere, this doesn't really matter all that much, since as long as everything points to the right place, it's all good (?)

As for memory, what I'm currently doing is this:

If the Japanese line looks like this:

アトレー
「時空転送装置なんてこわいよ

then counting characters, there are 18, and so that text uses 36 bytes

and so an English translation could be:

Athle
Time machines are scary

counting characters, there are 28, which at 1 byte per character, is 28 bytes

therefore I would say this is fine, since I would expect to gain 8 bytes of space, given that the game could be made to display 8 bit characters. I've done this for every line I've translated (~800 lines of dialogue) and added them all up, and I apparently have ~8 kilobytes of extra space. Should I be optimistic about memory availability not being an issue?

Currently the game does not display roman characters represented by a single byte, I've messed around with hex editing and while the game doesn't crash by replacing japanese text with single bytes of shift-JS text, the game just ignores them:
e.g. わhelloworldん just appears in the game as わん. I'm not trying to solve this problem necessarily, I just want to be confident that anyone who takes up hacking the text is not majorly inconvenienced by the size of my translations, so long as they can make the game display alphanumeric characters represented by a single byte
 
Last edited by Traceytrace,

Traceytrace

Well-Known Member
Member
Joined
Apr 13, 2022
Messages
112
Trophies
0
XP
816
Country
Australia
(Here's the updates so far to date)

https://docs.google.com/spreadsheets/d/1djyMo5SHQfwPf-p5g229hsk_eId-P-R4reVIi_bC5VI/edit?usp=sharing

26/05/2022: row ~2500, everything up to first boss fight with Blood

26/05/2022: row ~3000, everything up to the first time machine use

26/05/2022: Added a translation completion % bar for people to refer to (currently 8% complete). Added logic to count the number of bits of Japanese text (16 per character) and number of bits of English text (8 per character) so that I can monitor if my translations take up more memory than the original. Right now I am well within the space requirements. So there should be enough memory to fit the translations!

27/05/2022: row ~4100, completed everything up to first boss fight with Opis

29/05/2022: row ~5400, 13% complete!

30/05/2022: row ~6200, 15% complete! Completed the first Zoids Genesis arc

31/05/2022: row ~6400, 15.8% complete. Felt sick today so only gave it a half hour

5/06/2022: Starting to get over my sickness, but have a big test to study for! I'll continue translating on the 10th/11th of June :)

10/06/2022: row ~7500, 18.5% complete. We're back in business!

11/06/2022: row 8000, 20.4% complete. Up to the Raven boss battle in the chaotic century arc :)

13/06/2022: row 8600, 21.6% complete

14/06/2022: Row 9400, 23.7% complete. Second battle with Raven finished!

14/06/2022: Row 10500, 26.4% complete. Chaotic Century arc is finished!

15/06/2022: Row 11600, 29% complete. Fuzors arc begins

16/06/2022: Row 12400, 31.1% complete.

17/06/2022: Row 13300, 33.9% complete. Boss fight with Savage Hammer finished!

18/06/2022: Row 14300, 36.3% complete. Fuzors arc is finished!

19/06/2022: Row 15800, 40.1% complete. New Century arc begins!

20/06/2022: Row 16500, 41.8% complete. First tournament complete
 
Last edited by Traceytrace,
  • Like
Reactions: Nikokaro

SkullChronos

New Member
Newbie
Joined
Jul 3, 2022
Messages
4
Trophies
0
Age
32
Location
The Secret Room Under a Walmart Dumpster
XP
33
Country
United States
I am for sure offering my assistance if you need help with anything. Keep us posted. You have fans.

EDIT: Can I suggest a Discord? I'm currently working on a translation for Zoids: Shirogane no Juukishin Liger Zero for GBC, and might be good to have a solid spot to work from together.
 

c0mah

New Member
Newbie
Joined
May 26, 2011
Messages
3
Trophies
1
XP
189
Country
If you get this fully up and going I would be happy to send some money your way if you wanted. Well worth it to finally get to play this. 🙂
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    SylverReZ @ SylverReZ: https://www.youtube.com/watch?v=pnRVIC7kS4s