+  RHDN Forum Archive
|-+  Romhacking
| |-+  ROM Hacking Discussion
| | |-+  Conan vs Kindaichi Translation (NDS) VWF hack needed, DTE
Pages: [1] 2 3
Author Topic: Conan vs Kindaichi Translation (NDS) VWF hack needed, DTE  (Read 2 times)
cocomonk22
Guest
« on: February 07, 2009, 10:24:46 pm »

Meitantei Conan & Kindaichi Shonen no Jikenbo

So I have the game script ready for translation. Unfortunately the font is in tile format with four fonts on top of each other separated by palette, and are all fixed-width. There is no support for standard ASCII characters, only JASCII and other SJIS. If anyone would like to help get a VWF into the game I can get this project started.

Update:
Progress has begun smoothly with text translations and graphics. However, we still need a VWF hack for English characters!
« Last Edit: March 05, 2009, 11:35:07 pm by cocomonk22 »
Ryusui
Guest
« Reply #1 on: February 07, 2009, 10:37:03 pm »

Check the font file.

In Death Note: The Kira Game, there's a table after the font data giving the widths of every character. If there's a similar width table in your game, you might not have to do any hacking at all to implement a VWF (or at the very least a nicer-looking FWF).
cocomonk22
Guest
« Reply #2 on: February 07, 2009, 11:20:40 pm »

Here are the files in the common folder in rom order. The extension zzz means they're lz77 compressed, so I uncompressed them to view their contents.

Font_Set12_4.zzz: contains the font tiles, 4 separated by palette. 270336 bytes uncompressed.
dltjdb.zzz: contains dbtag Nintendo_non_kanji. 28576 bytes uncompressed. Made by Decuma, so most likely handwriting recognition.
dltjdb_jis0big.zzz: contains dbtag Nintendo_jis0. 305944 bytes uncompressed. Made by Decuma, so most likely handwriting recognition.

What would the width table happen to look like?
Ryusui
Guest
« Reply #3 on: February 08, 2009, 12:41:16 am »

Hmm. Maybe I'm wrong.

If all the fonts are the same size, then there might not be a width table. However, depending on the width of the existing font, adding a VWF or a FWF may be easier.

If the font is an odd size already - such as the 11x11 used by Death Note - then we already have some of the infrastructure needed for a VWF in place already, since the tiles have to be shifted in order to be displayed.

If the font is a multiple of 8 in size, like 16x16, then it will be harder to implement a VWF, but in either case it should be almost trivial to implement a reasonably-sized FWF.

I'm still working on Breath of Fire 2, and I've got Death Note: The Kira Game lined up next (plus who knows how many other projects I've promised but put on the back burner), so I can't help you with programming, but I can give you hints as to how to proceed. You do have no$gba, correct?
cocomonk22
Guest
« Reply #4 on: February 08, 2009, 01:53:12 am »

Yes, I have NO$GBA, the NO$ version though. Tongue

Looking at the tiles, there are least these widths:
11x11
13x15
14x15
15x15

Hopefully there is a width table in here somewhere, that way I can just overwrite the letters and numbers and just change the width.
Ryusui
Guest
« Reply #5 on: February 08, 2009, 02:26:02 am »

Hmm. Is there any data in the font file that you haven't figured out? I know they individual fonts are padded with palette data, but are there any other bytes in between that seem to follow a regular pattern but aren't part of the palette or font data? The font files are the obvious place to find the width tables, but if not...

Worst-case scenario, the width might be hardcoded and there's nothing for it except ASM hacking. Thankfully, changing a single value might give you the leeway you need to at least fit a better-proportioned 6x11 font (of the variety used by Death Note and many other games).

Find where the characters get written to in VRAM, set a write breakpoint for the start of a block of text and trace through. You may have to repeat this multiple times if there are multiple print routines.
cocomonk22
Guest
« Reply #6 on: February 09, 2009, 07:50:50 pm »

Everything's running smoothly in the project, the only thing needed is VWF to change the English character widths, so please let me know if you can help.
« Last Edit: February 12, 2009, 02:22:34 am by cocomonk22 »
Ryusui
Guest
« Reply #7 on: February 13, 2009, 11:10:02 pm »

I'm currently in the middle of orchestrating the BoF2 beta and I've promised the world I'd get back to work on Death Note: The Kira Game next.

I will, however, give you another tip: if you have trouble finding space for any VWF hacks - Death Note uses the space immediately after the code as scratch space - find the end of said scratch space, expand the ARM file beyond that, and tack your hacks onto the end.
cocomonk22
Guest
« Reply #8 on: March 05, 2009, 11:35:35 pm »

Apparently the font uses dual tile encoding, anyone experienced with this?
Ryusui
Guest
« Reply #9 on: March 06, 2009, 12:16:58 am »

DTE is just a specific kind of dictionary compression. Of course, the first thing you'll need to find is the dictionary. :3

(It also helps matters that once you've worked out the DTE system, you can then use it to your advantage.)

If you can, figure out where the script shows up in memory and set a read breakpoint for one of the DTE codes. When it loads it, you'll be able to trace through the code and figure out where it loads the dictionary from. Mind you, that won't tell you on its own where to find the dictionary...it might, however, be stored in one of the code files, come to think of it (Death Note stores a lot of commonly-used strings there).
cocomonk22
Guest
« Reply #10 on: June 18, 2009, 04:32:35 am »

Still need someone with an NDS debugger for help with DTE. Sad
cocomonk22
Guest
« Reply #11 on: June 02, 2010, 05:22:04 am »

Youtube video showing current progress:


Still need help with the font width.
Markliujy
Guest
« Reply #12 on: June 07, 2010, 09:30:02 pm »

I had a look, and as far as I can tell, its got a hardcoded width of 12 and apparently it uses that width of 12 as some sort of check to see if it should do those lil kanji descriptor thingos, so trying to simply halve the width meant it turned out like this:



So, you'll probably need a custom VWF code. If you feel like taking a crack at it, I've traced it as far back as 0x0206D524 which is where the width 0xC gets input. Which then branches to 0x206D63C which is (I think) the text reading routine that pretty much draws it into RAM and so on. Btw, those addresses are RAM addresses.
cocomonk22
Guest
« Reply #13 on: June 08, 2010, 11:19:10 pm »

Thanks for finding that. The data is taken from the overlay files. Unfortunately, I do not have much of an idea how to write the VWF code needed. Hopefully someone who does will come up.
cocomonk22
Guest
« Reply #14 on: June 24, 2010, 07:10:20 pm »

I am willing to pay $ via Paypal for someone to write and insert the VWF code needed.
« Last Edit: June 29, 2010, 03:56:21 am by cocomonk22 »
Pages: [1] 2 3  


Powered by SMF 1.1.4 | SMF © 2006-2007, Simple Machines LLC