ROM Hack Toshin Toshi (RE)

chaoskagami

G̷̘̫̍̈́̊̓̈l̴̙͔̞͠i̵̳͊ţ̸̙͇͒̓c̵̬̪̯̥̳͒͌̚h̵̹̭͛̒̊̽̚
OP
Developer
Joined
Mar 26, 2016
Messages
1,365
Trophies
1
Location
↑↑↓↓←→←→BA
Website
github.com
XP
2,248
Country
United States
I'm probably not going to ever finish my research on the game, but for anyone who wants a translation of Toshin Toshi: Girl's Gift RPG, here's some RE I've done (warning - wall of text):

BIN files
Most .bin files in the romfs are regular gzip files (not tar.) To decompress the game's data, you can literally just gzip -d. The game will also happily load decompressed bin files, which will aid testing. You can recompress them with gzip on any old linux system as well, including -9 (which actually produces a smaller romfs, incidentally.)

Data files
Most of these data files when extracted have the following header, at least so far as I've decoded:
{
u32 unknown;
u32 ptr1;
u32 ptr2;
...
}

unknown seems to be roughly the same for folders sharing the same data, e.g. everything in btl seems to start the same (aside from btl_resident.bin)

One of ptr1 or ptr2 will always point to a string table, regardless of the file. These strings are utf8-encoded, packed together without padding, and zero terminated. Some bits you'll need to know - <player/> substitutes the player's name, <p0/> and the like are for when numbers are used, such as money and stats. Not all files have in game strings - if it begins with 'root', don't mess with it, those seem to be scripting commands.

The main files containing translations for the actual story are in map. Other translatable strings are located in the item, shop, menu, btl, and the *_resident bins.

There's room to work with because UTF8 takes more space than SJIS.

A whole textbox's worth contains '\n's or 0x0A to separate lines. You can also end-pad the line with zeroes which means the offset of text in-table is directly referenced earlier in the file.

The game also has a proper VWF, but see issues below.

test folder
The test folder contains some files which likely are intermediate files (and probably weren't meant to be left on the cart.)

NTMD is likely some kind of image or model format, for example. It appears to be organized into chunks that are multiples of 0x80 bytes. SCPT seems to be a header in use, as well. There's also a "hello world" script in the test folder, which if you could find a way for the game to run it, would potentially help with RE of the actual script format. Unfortunately no tools were left behind, and you can't simply swap nor inject the hello world script anywhere - there appear to be size checks.

Issues
The game won't display more than the maximum fullwidth characters in a textbox, which means you likely need a code patch to show halfwidth properly.

In summary - with a code patch to display more text on screen, this is probably translatable as-is with careful text considerations. There's absolutely zero crypto or obfuscation involved, just custom datafiles.

Misc info
It appears some files contain debugging information - I'm rather sure that D:\... isn't a valid path on the 3ds, so it's likely this was once built and tested on a computer.

tl;dr - There's no fancy crypto involved, no checksums, nothing but a custom data format which someone more skilled than me could likely build an unpacker for. I'm dumping this here for anyone who wants to go further than me.

As an aside, the game also runs nigh-perfect in citra, so it's probably possible to debug how it does things.
 
Last edited by chaoskagami,

chaoskagami

G̷̘̫̍̈́̊̓̈l̴̙͔̞͠i̵̳͊ţ̸̙͇͒̓c̵̬̪̯̥̳͒͌̚h̵̹̭͛̒̊̽̚
OP
Developer
Joined
Mar 26, 2016
Messages
1,365
Trophies
1
Location
↑↑↓↓←→←→BA
Website
github.com
XP
2,248
Country
United States
General chit-chat
Help Users
  • Skelletonike @ Skelletonike:
    I'm reading several that do atm. x'D
  • Vetusomaru @ Vetusomaru:
    even it looks cool, i still hate smoking and i always hated smoking
  • Skelletonike @ Skelletonike:
    They're seinen though.
  • Skelletonike @ Skelletonike:
    But yeah, it also has to do with the fact that stuff are more sexualised

    now
  • Vetusomaru @ Vetusomaru:
    even at seinen i am reading, the only one that shows nipples sometimes is Oversized Sextet
  • Skelletonike @ Skelletonike:
    Like, Urusei Yatsura, I love the manga and the original anime.
  • Skelletonike @ Skelletonike:
    In the original rumiko takahashi works, nudity was common
  • Vetusomaru @ Vetusomaru:
    i still havent read the manga. also surprisinly i like both the new and the old anime adaption.
  • Skelletonike @ Skelletonike:
    Lum being topless and Ranma always topless when turning female wasn't sexual
  • Vetusomaru @ Vetusomaru:
    also the old anime adaption of Urusei Yatsura had more fanservice than the manga
  • Skelletonike @ Skelletonike:
    That's one of the issues I have with ecchi stuff recently, it focuses too much on the sexual aspect, not the comedy effect.
  • Skelletonike @ Skelletonike:
    The manga had it's fair share.
  • Skelletonike @ Skelletonike:
    I mean, Lum was supposed to be a one time character
  • Vetusomaru @ Vetusomaru:
    ecchi anime focusing too much at fanservice was always a thing
  • Skelletonike @ Skelletonike:
    Rumiko Takahashi got so much fan email about the character that she brought her back in the manga, it was going to be completely different originally (with the alien of the week type).
  • Vetusomaru @ Vetusomaru:
    also i m a takahashi fan and i love ranma
  • Skelletonike @ Skelletonike:
    There are different ways of fanservice
  • Skelletonike @ Skelletonike:
    the first manga I bought, was Psychic Academy, when I was like 12?
  • Skelletonike @ Skelletonike:
    That was good 2000s ecchi
  • Skelletonike @ Skelletonike:
    Great plot too
  • Vetusomaru @ Vetusomaru:
    psychic academy. lol. it was meh even back then when i bought volume 1. also same author also made one of the manga adaptions of Escaflowne.
  • Skelletonike @ Skelletonike:
    Pfffft!
  • Skelletonike @ Skelletonike:
    I have all the volumes.
  • Vetusomaru @ Vetusomaru:
    btw do u have discord?
    Vetusomaru @ Vetusomaru: btw do u have discord?