Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

So the history there ...

Star Ocean was a 48mbit (6MiB) game, which was tied with Tales of Phantasia for the largest game ever officially released. But Star Ocean took things further than ToP, by using the SDD1 to allow DMA to transparently decompress data read from the ROM. The compression wasn't stellar in terms of size reduction, but it was wonderful in terms of having no CPU impact, as the SNES was a very slow CPU.

The issue was that it was a really weird compression format. It uses golomb codes and prediction. So the ZSNES/Snes9X teams took a shortcut: they logged every time a DMA from ROM occurred with the SDD1 decompression flag set. Then John Weidman ran the same DMA transfers through his custom setup on real hardware and dumped the decompressed data to files. They packed that together and that's what was called a "graphics pack". The emulators then simply grabbed that already decompressed data. Think of it like using a giant 1000x1000 multiplication table instead of just learning how to multiply yourself.

When it comes to translation, this wasn't any kind of a problem. If you needed to modify one of these graphics, you could bypass the SDD1 and transfer it as normal tile data. But for the most part, fonts and text weren't compressed in this way anyway.

Eventually, Andreas Naive cracked the compression algorithm, and emulators today actually decompress the data without graphics packs.

On that note, the same thing was done for the SPC7110 (used by Far East of Eden Zero), which took many years longer than the SDD1 to crack. Since that was cracked a while after the final release of ZSNES, they still need those graphics packs there.

Now let's talk about the size: yes, Star Ocean was big. But space has never really been a limitation for SNES fan translations. Even without a memory mapper, it's very easy to fit around 96mbit (12MiB) of ROM data into the available memory map. You could very, very easily do 64mbit (8MiB) without any effort at all. It's honestly a bit of a mystery why some of the SNES coprocessors had any MMCs (memory mappers) at all, as they were wholly unnecessary.

That said, you will often hear certain SNES fan translators mention the lack of space in games. And I will never understand it. They seem to want to enforce an artificial limitation on themselves to fit their entire translation back into the original game space; often sacrificing script fidelity, using stronger compressions that hinder game performance, etc. It really makes no sense to me. Yet the person who hacked Star Ocean was one such individual.

If you want a fun anecdote about Star Ocean: I was the first to hack the game for an English fan translation, and was working with the person who ultimately translated the script. Unfortunately, I was an ignorant 14 year old kid and freaked out on him when I found out his translations weren't 100% literal (which in retrospect would have made for a terrible script), so he rightly told me to go fuck off. I eventually grew up, and we worked together much later on to produce the Mother 3 fan translation. But it's too bad, I would have really liked to have finished Star Ocean myself, but I wasn't mature enough to work with other people back then.



Fascinating history, thanks. The one who translated M3... that would be Tomato, right? I found out he had the same assembly language professor I did (Lance), albeit several years apart.


Yep! He's a really nice guy.


I know :) I spent quite a while waiting for M3 to be translated after having so many fond memories of Earthbound. He had a blog of his progress going, detailing all the issues he was having with the hack and we chatted there in the comments quite a bit.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: