m35 / jpsxdec

jPSXdec: cross-platform PlayStation 1 audio and video converter
http://jpsxdec.blogspot.com/
461 stars 24 forks source link

Digimon World 2003 Missing Textures #39

Closed lunarain0 closed 2 years ago

lunarain0 commented 2 years ago

Environment

jPSXdec version: 1.00rev3921 Operating system: Windows 10 Java runtime environment : 1.8.0_281

PlayStation Game (if applicable)

Name: Digimon World 2003 Region code (e.g. SLUS-1234): SLES-03936

Description

What were you doing?: Trying to extract the field texture files.

What happened?: Many textures are missing, as an example I have included a diagram of the textures that were extracted for the Asuka city area compared to a stitched screenshot of the game. It seems there must be something different about the way these textures are stored as PsPicture couldn't find them either.

What was or was not supposed to happen?: Ideally all the textures would be found.

image

m35 commented 2 years ago

That is an absolutely stunning diagram. Can you try v1.05? The Tim detection logic was improved and should detect more. https://github.com/m35/jpsxdec/releases/tag/v1.05

lunarain0 commented 2 years ago

Unfortunately the newer version didn't detect any more images. I spent a lot of time last night looking at the VRAM in some save states and from what I can tell from searching with a hex editor, the missing image files for each map are in the same bin files as the rest, but they must be stored in some other way because no software has been able to find them and I couldn't locate any other incomplete TIM headers when I searched for them myself.

EDIT (more details): The game stores images in these bin files, and I cross-referenced the values in the VRAM with the ISO of the game and determined the LBA of the missing images. It matched the LBA of the file containing the other images. image

m35 commented 2 years ago

Nice investigation. Can you share a few examples of an LBA + offset where an image starts that isn't being detected? Or is it 1 like image per .bin file?

lunarain0 commented 2 years ago

I made a diagram to try and show my investigation. Each ___PACK.BIN seems to contain the textures for a field in the game. However only a small percentage of those textures seem to be stored in the normal way.

image

m35 commented 2 years ago

Thank you for the details. I've seen Tim-like data that is missing a standard Tim header in other games. It's odd in this case that they mixed standard Tim images with non-standard ones.

You've done some great investigation. I would have done exactly the same thing to find what was going on, so I don't think there's anything more I can add. Unfortunately without a standard header there's not much jPSXdec can do to know if the data is a Tim image or not. And even if these images do have some kind of header that could be identified, it may just be specific to this one game. Special handling for unique Tim images isn't something I plan to add to jPSXdec (I'm focused primarily on videos and audio).

But thank you for taking time to report this. It helps me be more aware of the kind of unique things developers did to store their data.

lunarain0 commented 2 years ago

Thanks for your time, I really appreciate what you're doing with the app regardless.