free speech disabled
For next: 907
Since last post: 1.1 years
Last activity: 11 days
|Link to IPS
NOTE: The patch is for an unheadered Sutte Hakkun (NP) ROM!
Well, it's done. After about a decade I've finally managed to get the translation to a state I'm comfortable releasing.
I've loved Sutte Hakkun since I first played it sometime in 2004. AGTP announced their work on a translation sometime in 2005 I think, and after seeing the project stagnate, I began my own work in late 2007 – In fact, my first progress video is still on YouTube ( LINK )
Back then I didn't know any Japanese and I didn't really know how to hack ROMs either, but I managed to translate parts that had obvious meanings (menus, title, etc.) and didn't require tilemap editing.
I learned my way with a hex editor and got to tilemap editing and made a second progress report much later, sometime in 2009 ( LINK ), and although I had made some more progress, I couldn't continue much further because I still had no script to work with, only Google translate, Tile Molester and a hex editor.
Sometime in 2012, someone called Veal Gins saw the latter video and sent me an e-mail with a full translated script. I was stoked and absolutely sure I could finish the translation very soon. I worked a lot with the hack during this time (notably with the Hakkun's Hut articles) but could never get the parts with compressed graphics done or nail the tutorial dialogs down. I aimed for a 2014 release (as seen in the teaser at LINK ) but ultimately I couldn't.
Enter 2017 – I'm much better in English (better translation), I know some Python (to automate the tedious parts) and some 65816 (I cracked the compression format), and I had stumbled into something very interesting*. These things finally led me to finish the hack.
It's been many years since I began working on this project so although everything(?) is translated, the hack is an unholy amalgamation of kinda-engrishy proto-translations with questionable graphics hack workarounds from the 2007 me, but also neat, well thought out tilemap repoints and perfect english from the person I am today.
If I'd do it all again, I'd do a lot of things differently (I hate the title screen, there's grammar errors in a few places, my workflow was inefficient), but nonetheless here we are.
I guess I'm done. Some screenshots:
So yeah enjoy I guess. Hit me up if you encounter any bugs.
*) This might need its own thread, but the "interesting" thing I mentioned is a massive ($3EA0 bytes, $10 bytes per entry so 1002 entries in total) array located in 0x30BFE. A similar array is present in other games in the Sutte Hakkun series (the several Satellaview versions). It is as follows:
pp pp pp pp dsize csize cflag uu uu uu uu uu uu
00 4C CC 00 00 40 C9 12 01 00 FF FF FF FF FF FF
pp = pointer to data
dsize = decompressed size
csize = compressed size
cflag = is the data compressed?
uu = unused
(dsize and csize are the same if cflag is 0)
I checked out every pointer and the data they point to. Frankly, the ROM hacking implications here are absolutely amazing. You might already realise that this massive array is essentially a file lookup table and it encompasses the whole (rest of the) ROM; everything from 0x34A9E to 0x300000 (pretty much everything except the game code, some smaller stuff and the player graphics). A Table Of Contents, if you will.
Someone should write a general-purpose file extractor/inserter. Instead of worrying with pointers, weird workarounds and editing a single blob - the ROM, you could edit real honest-to-god binary files, insert them wherever and simply update the TOC instead.
After extracting the compressed and uncompressed files and having a look at them, I was even more impressed – everything is super neat. Things are in a very logical order, even the level format can be understood by a baby, tilemaps are clean, graphics pages value readability over minimising tile redundancy... and everything is its own file. Every stage, every physmap, every tilemap, every palette, every graphics page. Additionally, the ROM is huge so there's lots of free space at the end of the ROM anyway.
Alas, although I know Python, I don't think I know if well enough to author a real editor.
If you're a competent programmer and like this fantastic puzzle game, you should definitely look into this. Sutte Hakkun is a super easy game to hack given the proper tools and it's a shame it hasn't seen much love in the ROM hacking scene.
If you're going to dive deeper into this and do some research, I advise you to work on a clean ROM instead of my translation. I repointed several entries in the TOC so you won't get 'pure' files out. I never wrote down the addresses where the TOCs are in the Satellaview games, but I can confirm that they are there.
This is the part where I'd write more about the compression format but I never wrote a comprehensive specification of the algorithm, just a decompressor (yes, I stepped through the decompression code in Geiger's SNES9X disassembler and translated the 65816 to highly unoptimised Python. It works but I'm still not 100% sure what makes it tick. But even so, it's not a terribly complex compression scheme.)
Lastly, for TCRF folks - I quickly scoured through the outfiles and although there are a few unused graphics, nothing terribly interesting. There might be unused tilemaps, though!