Error visitors

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Cain

Pages: [1]
Newcomer's Board / Re: Dragon Quest 7 3DS text file help
« on: February 26, 2015, 12:46:55 pm »
Thanks for the help.  I was looking at the pointer as 8 bytes instead of 4.  I guess now it's just to figure out what the other 4 bytes represent.  :)

Newcomer's Board / Dragon Quest 7 3DS text file help
« on: February 26, 2015, 11:29:07 am »
I've been trying to figure out the format of fpt files the game uses to store it's script.  It looks like they're simple archive files, but I'm having problems figuring out how the pointer table works.  Here's a link to a couple of the smaller files:


I know the first 16 bytes the header with bytes 0x07-0x0B being the number of files.  The next chunk of data is the pointer table and each entry is 32 bytes.  The first 16 are the file name, the next 8 I assume is a pointer of some sort while the last 8 bytes is the size of the file.  After the pointer table is 64 bytes which I don't know what it's for, but it's the same in each file.  Following that is the text files themselves.  We've been trying to figure out what the pointers (assuming that's what they are) represent because it's not the offset in the archive.  With one or two exceptions, the value of these "pointers" always increases in the table.  Any suggestions?  I know nothing about how the 3DS works, just started looking at these files provided to me.

Not just the translator (Easton West) but the editor too, cidkramer.  These two have done an excellent job with the script so far.  They're both very dedicated to the project.

Newcomer's Board / Re: Help finding video/animation
« on: January 28, 2012, 10:06:45 pm »
Finally got it to work.  Thanks to all for their help.

Newcomer's Board / Re: Help finding video/animation
« on: January 27, 2012, 10:18:01 pm »
So it seems the only tool that can show the texture is Console Tool.  NSBMD Tool throws an error when I try to extract the textures.  See the code block.  The file uses LZ77 compression which Console Tool seems to be able to handle.  The texture I want is the first one in the file.  So close, yet so far away.

EDIT:  Here's a zip file with both a compressed and uncompressed version of the file in questions.  The texture we're trying to get at is the first one (tex  0 'ttl_01 256x256);


Code: [Select]
DEBUG: file size = 00029184 (168324)
reading 'MDL0'...
No. of Model = 01
reading model 0...
DEBUG: texnum = 6
tex (matid=6): 'ttl_01'
tex (matid=1): 'ttl_03'
tex (matid=2): 'ttl_04'
tex (matid=0): 'ttl_05'
tex (matid=5): 'ttl_06'
tex (matid=7): 'ttl_07'
DEBUG: palnum = 6
pal (matid=6): 'p1'
pal (matid=1): 'p3'
pal (matid=2): 'p4'
pal (matid=0): 'p5'
pal (matid=5): 'p6'
pal (matid=7): 'z'
DEBUG: matid = 0, texname: ttl_05, palname: p5
DEBUG: matid = 1, texname: ttl_03, palname: p3
DEBUG: matid = 2, texname: ttl_04, palname: p4
DEBUG: matid = 3, texname: , palname:
DEBUG: matid = 4, texname: , palname:
DEBUG: matid = 5, texname: ttl_06, palname: p6
DEBUG: polynum = 8
DEBUG: codeoffset = 0000028c
reading 'TEX0'...
DEBUG: blockoffset = 000040c8, blocksize = 00024dd4
texnum = 6, palnum = 6
tex  0 'ttl_01          ': offset = 0000425c size = 00010000 [W,H] = [256,256]
tex  1 'ttl_03          ': offset = 0001425c size = 00002000 [W,H] = [32,256]
tex  2 'ttl_04          ': offset = 0001625c size = 00000800 [W,H] = [16,128]
tex  3 'ttl_05          ': offset = 00016a5c size = 00002000 [W,H] = [128,128]
tex  4 'ttl_06          ': offset = 00018a5c size = 00010000 [W,H] = [256,256]
tex  5 'ttl_07          ': offset = 00028a5c size = 00000200 [W,H] = [16,64]
pal 'p1' size = 512
pal 'p3' size = 16
pal 'p4' size = 16
pal 'p5' size = -16
pal 'p6' size = 48
DEBUG: converting pal 'p1', palentry = 256
DEBUG: converting pal 'p3', palentry = 8
DEBUG: converting pal 'p4', palentry = 8
ERROR readtex0
Unknown ID VCL0 is not supported

Newcomer's Board / Re: Help finding video/animation
« on: January 27, 2012, 09:14:19 am »
Everything under data/0_title seems to be leftovers from SaGa 2.  The text and opening credits for SaGa3 are under data\title_loop and the thing we can't figure out is what camera_line.nsbmd is.  The console tool just opens a wireframe on it.  Thanks for helping me out with this.


Ok using the console tool I went though every nsbmd file until I found it.  The file turned out to be field/data/mdl/0623.nsmbd.  Now I just have to figure out how I can edit this thing.  Thanks again for helping point me in the right direction.

EDIT 2: Ok I was able to use console tool to export and decompress the file.  Doing some research I can use a tool called NSBMD Tool which will dump the textures and whatnot, except that it fails on the file.  Are there any other tools that can be used to edit nsbmd files?  Google doesn't seem to be helping me today, or perhaps my search terms aren't correct.

Newcomer's Board / Re: Help finding video/animation
« on: January 26, 2012, 03:51:17 pm »
Thanks.  SaGa2 had a similar video but CN managed to change it.  Unfortunately I haven't been able to find the person that did it.

Newcomer's Board / Help finding video/animation
« on: January 26, 2012, 12:57:00 pm »
In my SaGa 3 DS translation project there's some sort of video or animation at the end of the title loop that I can't find.  None of the NANR files in the rom are it.  Basically the animation shows the logo for the title screen then it switches over to the title screen itself.  The animation and the title screen are two different things because we have already translated the title screen image.  Basically you get the untranslated version then it flips over to the translated version.   If you need more information then you can see what I mean in the teaser video I uploaded to youtube for our upcoming patch.  I'm not trying to promote my project here, but I don't know a better way than to show the issue.  Anyway, if it's a problem I'll remove the link, but I would like to try to get this problem resolved.  Thanks.


Are the files decompressed then recompressed?  If so, then even if you only change a few bytes per file...the patch size will be very large.  Try to 7z the xdelta patch and see what you end up with.
Otherwise, maybe you didn't set the window size large enough in xdelta?

All the dialogue is compressed.  By messing with the memory settings I got the patch down to 17MB and I'll zip it up to see if I can get it smaller.  Thanks!

Not if you use xdelta.


So I tried out xdelta, but I'm getting a patch that's 60MB, which is half the size of the rom.  I believe the reason is because when I unpacked and re-packed the rom, the files are in a different order.  Is there any way to avoid this?  I've tried using both DSLazy and DSBuff but I have the same problem.

Newcomer's Board / idx ndx bin
« on: August 01, 2011, 09:44:40 pm »
I used dslazy to unpack Radiant Historia because I want to have a look at the font the game uses.  In the data folder there are three files: Data.bin, Data.idx and Data.ndx.  It looks like bin file is the compressed data file while the idx and ndx files look like index files for the compressed file.  Is there a tool that exists that can extract the files from the bin using the idx/ndx file?  A quick search hasn't turned up anything so I have a feeling there isn't already a tool that can do this.  Thanks.

I dunno if Cartographer can handle this specific case, but it's actually pretty common that you won't get far with a generic tool since there are just too many possiblities in which pointers can be layed out. You might consider just writing your own little dumper, at least how you describe the system it should be pretty simple in this case.

That's when I ended up doing.  Since the files are self contained it was easy to write a dumper for it.  Now I just have to write the other part of the tool which rebuilds the file based on the dump.  Spending the time to write the tools now will save a lot of time in the long run.  Especially if all the script files follow the same format.

Not if you use xdelta.


Awesome, thanks.

You'll definitely want to work on each file individually. Text pointers generally *should* be local to the file they're in, but of course that's not always the case. If you just work with one file by itself, then you'll at least have a much smaller area to search.

Ok it looks like the pointers are in fact in the files.  At least the one I'm working on at the moment.  Thanks for the tip.

EDIT:  If pack/unpack the game which will result in the files in a different order, wouldn't that cause a rather large patch file to be created?

EDIT2:  now if I could only get cartographer to work...keeps on crashing for me.

EDIT3:  Ok here's the deal with cartographer.  I can get it to find the pointers ok, but if the string doesn't end with \0 then cartographer can't seem to handle it.  For example:

This is sentance one.This is sentance 2.

I get:

STRING #0 @ $00
This is sentance one.This is sentance two.

STRING #1 @  $15
This is sentance two.

The reason it works in the game is because in the pointer table, it defines the length of the string.  So it will say pointer 0x00 has a length of 21 bytes.  Cartographer either can't handle that, or I don't have it set up right.  Crystal Tile 2 picks up the pointers correctly though but trying to get it extract/insert text hasn't been working either for some reason.  Hopefully the problem is between the chair and the keyboard.

Hi everyone.

After learning that Crimson Nocturnal shut down I decided to take it upon myself to translate SaGa 3.  SaGa 3 (or FFL3) was one of my favourite games as a kid along with FFL2.  I love the remake of SaGa 2 and I'm sure I'd enjoy the SaGa 3 remake as well.  This is my first hack for the DS and first translation ever.  I'll eventually have to find a translator since I can't read Japanese, but in the mean-time I'm been working on getting the menus done.  The game seems to be built to be translated since it supports shift-jis and has variable width font support.   Progress is going well but I need to start manipulating pointers so I can fit the text properly so I have a few questions.

1. Is it best to work directly with the ROM with hex editor (or similar tool) or should I unpack the game first and then repack it?  One thing that I noticed is that when a game is unpacked and repacked the files don't seem to go back in the same order.  I doesn't seem to be an issue though, at least not that I've encountered.

2. How do I figure out where the pointers are for the text so I can change them?  For example a string that I'm looking for starts at address 0x1104 in FileA.  FileA starts at 0x508D4E0 in the ROM.  It looks like pointers are relative to the start of the file rather than the position in the ROM (based on packing/repacking with files in a different order).  Doing a search for 0x1104 returns about a million (exaggeration) results so going through it manually isn't feasible.  I tried using Cartographer to extract the text but when I give it the sjis table file on this site it complains because there's duplicate entries in it.

I'm sure I'll have some more questions as I continue to play with things, but this is where I'm at now.  Thanks in advance for any help.

Newcomer's Board / Re: Introduction Topic
« on: May 13, 2011, 03:50:58 pm »
Hello everyone!

I'm new in these parts and am just starting up a project of my own and figured this would be a great place to hang out, get help and help others.

The project I'm working on now (SaGa 3 for DS) is my first console hack.  I made a mod of Hellfire a few years ago and have done some Diablo 2 mods as well.  Nothing large scale, just for personal use.  In real-life I'm a software developer that primarily works with JEE6 but I do some C/C++ programming and work with MySQL and SQLServer.


Pages: [1]