NOTE: this is rather a long and formatted comment than a definitive answer, moderators may decide to move it to Reverse Engineering as that's the subject we're slowly drifting into.
A quick and dirty introduction to PlayStation VRAM:
Programmers Tool CD 2.2:
TIM Tool, to understand the VRAM @ \PSXGRAPH\BIN\TIMTOOL.EXE:
Technical Reference CD 2.3:
File Formats PDF, describing the TIM format @ \Devrefs\Filefrmt.pdf
You can grab an archive of both of these CDs at psxdev.net.
Try identify TPG format by editing the ISO file directly:
You may want to pinpoint what TPG files really are, as the format looks like no well-known format, you can try the following approach and tools to assert that indeed TPG is a format containing graphics and if it's the case, further proceed in trying to decipher it.
There are 26 .TPG files in the disc, 13 pairs of identical names:
The list of occurrences in TOC in byte order:
The list of occurrences in TOC in name order:
Now what you'd want to try is, with an hex-editor to swap the names to try identify which are which while you watch the VRAM loading in no$psx.
As there are dupes, you could try the following to further identify them:
- give a file a wrong name such as
- save the ISO file
- open no$psx
- open TTY debug console
- launch the game
- watch the TTY console
- the game should crash
- check TTY for something like
CdSearchFile ... not found
At this point you should be able to make the distinction between dupes, take some notes.
Once you know what file really is, you can finally watch the VRAM debugger when the game loads and try visually identify what's the content of the file.
Here's the VRAM debugger in action in no$psx:
Now you may want to use PSX VRAM Viewer to inspect the VRAM in detail:
Grab PSX VRAM Viewer, your A/V may say it's a threat but it really isn't, alternatively, you can build it from the sources by yourself.
I've ran it for the introduction screen, luckily, this was an easy one:
Check the keyboard shortcuts in
README.md on how to use the viewer.
Getting started with no$psx and PSX VRAM Viewer:
no$psx only works with consolidated .BIN/CUE, an image with separate audio tracks is not supported by it.
Create a proper image with IsoBuster, for instance:
- right-click CD
- Extract CD
- Raw (*.bin)
Configure no$psx to write snapshots readable by PSX VRAM Viewer:
- SAV/SNA File Format
Save a snapshot to browse with PSX VRAM Viewer:
Load the snapshot in PSX VRAM Viewer:
- in Windows Explorer, drag and drop the .SNA on the executable
About the TPG format itself:
It's most certainly an LZ-compressed format as commonly seen on PSX, but as there isn't any official compressor in the SDK, everyone went out with their own implementation, which of course differs.
That said, reverse-engineering in general is a very time-consuming task, hence my suggestion of first trying to figure if these are really what you're looking before spending a lot of time in trying to decipher.
Last, you may get some precious advice from the folks at ROMhacking.net forum.
Also, if you have programming skills, you can always try Ghidra along the PSX plugin, it'll generate pseudo-C much easier to study than MIPS assembly.