I have to start by saying that I'm quite a novice at ROM Hacking, despite my best efforts to understand it... but luckily a kind member from another forum (https://gbatemp.net/members/darthnemesis.118382/
) helped us out by writing a custom text extractor/inserter called ButlerTrans. https://gbatemp.net/threads/.448456/#post-6827555
. Thanks to that my team and I have been able to make great progress on our quest to release an English patch for the 2009 Black Butler DS Game Phantom & Ghost!
We're now at the stage where I'd really like to be formatting files and testing them out in the game. However, I've noticed that importing doesn't always work quite right, and it tends to cause any repacked .nds games to crash whilst playtesting. I've tried messaging DarthNemesis about this, but they have been inactive for some time. I believe the program they wrote was shared with MIT license (which freely allows editing) as previous ones have been, so I'd like to b̶e̶g̶ ask someone with the know-how to aid us!
I'm providing a demo translation and the edited font NFTR for testing. https://goo.gl/Gm9rme
To get to this scene there's a little introduction, and on the first character choice you need to pick "Ciel."
Incidentally those two introduction scenes 'boot' and 'op' work fine with the English translation. But I have tried around with files other than c01a and have also had issues. It always causes a progression block, usually by freezing the game but sometimes skipping a portion of it and on one occasion just showing garbled text that got stuck.
They always occur in the same places. On the first choice, if you pick "30 minutes" or "I’ll leave it to you." it ends just before a minigame. You can progress further only if you press "5 minutes.". Doing so continues onto another choice, but whatever you pick here ends at the line "As you should. Alright, let’s go." Though it continues onto day 2, it entirely skips the end of c01a, where you're supposed to be met by a mysterious stranger regardless of the choice.
So I'm at a bit of a loss on how to proceed. I'm just assuming it's the importation method here. (Perhaps to do with pointers? ButlerTrans was written to recalculate the pointers and file sizes, which I'm making an uneducated guess is where the problem is). I'm using Windows 10, ButlerTrans 1.0, DeSmuME 0.9.11 and dsbuff is apparently "v1 final". Ideally I'm hoping to get this issue fixed so we can continue using ButlerTrans, but if that's not possible then I'd be happy to try to manually insert text via a hex editor, provided that someone would be able to help get me going with some n00b friendly instructions.
The team has come a long way and the project has gathered a humble following on tumblr, so I really don't want to let them down of my own incompetence. I would be really, really grateful for the help! (And happy to offer any assistance you might need that's within my skillset e.g. image editing, proofreading, testing in exchange for the time.)
Thanks for reading!
EDIT: I know that editing someone else's work can often be more frustrating and time consuming than writing something new from scratch, so I'm very welcome to anyone who might want to create a new inserter/extractor separate to ButlerTrans. Here's everything I know on that front;
The original language of the game is Japanese. It does also use English text on various occasions.
The games text is contained within data> script folder. There's 'script.slt' which is a table listing all of the files within script.ssc. When extracted with ButlerTrans, it splits into various .sjs files with titles such as 'c01a'.
The text strings are embedded within the binary script, so replacing lines isn't as easy as updating a pointer. (However ButlerTrans 1.0 does come with a pointers folder, I think it's to do with the arm9.bin which it also unpacks. That's got all the text for saving/loading data etc so also needs to be extracted/inserted)
Images are in .bgc files which ButlerTrans also extracts into .ncgr/.nclr files e.t.c. Graphics Hacking is something I think I have figured out(!), and from my preliminary tests there are no issues trying to insert modified images back into the ROM with ButlerTrans. I have not tested it with any large number of images as of yet, but so far I don't think there's any need for any new program to also handle images (unless you think it's worth doing for any reason.)
I know I'm shamefully pretty much asking "hey, can someone do most of the work for me?" I have been around the web and found a wealth of knowledge to help beginners to ROM Hacking. (A lot of it from here tbh!) I've taken note how they all mention a steep learning curve. File types in this game seem to be unusual (at least, nothing a thorough google search has discovered.) I wouldn't be here if I wasn't at my wits end. I'm afraid that I don't have a technical bone in me (much more of an 'artsy fartsy' person, after struggling for a while I was immensely pleased with myself for even being able to view an image correctly with CT2...) So, this is me, grovelling and asking for someone else to do the work that I don't think I'd be able to. ^^'''
Then "Why not give up here?" Well, I have a humble team of about 20 people who, like I am asking you to do, have volunteered their free time with faith in this project and a desire to bring a translation patch to the fandom! They have all been doing their very best, and I will never forgive myself if I were to just let their work go to waste. If I could pay someone to help, I would. But I have neither the means, nor the way given the fact offering money would probably be very inappropriate as a newbie member to the forum without any reputation to go on. However as stated above, I will GLADLY trade you my time, doing any task you need that's within my capabilities. I'm happy to complete this task before you even look into the ROM. I'm not asking for help out of laziness or sneakiness, and I hope you can see that this is a genuine case and lend me your assistance in return.
Thank you so much for reading this to the end!
EDIT EDIT: I'm still looking into anything that I can figure out. Had a bright spark to try using a different emulator (iDeaS). Still not working with ButlerTrans, but I did have a look with the debugger. It's loading addresses around 03FFFFFF into memory. In an unedited ROM, these come at the very end (and don't really seem to contain anything?), but in the ButlerTrans version, these lines no longer exist. I'm assuming the screen freeze is therefore due to the game attempting to run something that it can't actually find, though I don't think I'm getting any closer to figuring the solution