Seems you forgot again!
I'm writing up some documentation for it, as that would be the correct course of action I think. Unfortunately it's harder to test exactly what's going on with these files without using pure trial and error, because FromSoft put checksums at the end of every file. Editing one byte stops it from loading the data and crashes the game. I'm currently working my way though a bunch of MIPS and IDA guides to see if I can stop that, but as it stands I have absolutely no clue what I'm doing when it comes to Assembly, and disassembled code probably isn't the easiest place to start.
I think the T files are broken up into 2048B units has something to do with this.
I remember learning on these forums a few years back that the 2048 byte length sections of data in T files could be to increase the speed at which the file loads, since (apparently) 2048 is the sector size the PS1 would load. Best way to check for the 304 bytes is to look at the files in JPSXDec with raw mode, or the raw CD sectors with CDMage. I don't think there are any though, and honestly I think the 2352 sector thing might be a mistake for the image, it would explain why it's impossible to copy the STR data from the 'OP' directory without using special tools.
On RetroArch/Mednafen:
All emulators are terrible for King's Field, both for the PS1 releases and Ancient City on the PS2. I think this is down to either earlier assumptions of FromSoftware using early Sony PS1 SDKs or FromSoft doing tricky business with the console. It's most likely a mix of both. I think King's Field is mesmerizing, and I don't think fully 3D textured mapped graphics with level streaming had even been a dream when they did it.
RetroArch and that core specifically are what I've found to be the best for it however, since it doesn't suffer from horrible timing issues (probably due to a better R3000A implementation than other emulators).
The grid pattern/crossbars you see on the UI is due to King's Field using 9-Patch sprites for their UI. Interestingly the HUD you see in game is an actual quad with colour data, rather than the sprite, which is why you don't get the grid on that. PGXP (with king's field at least) can't tell the difference between flat, screenspace vertices and the world, so everything gets processed the same. I don't think PGXP cares if the projection changes, it just processes the same way all the time.
I've never heard of "disfigured" wrists, however people who work with keyboard/mouse a lot run into strength/pain issues that are related to the nervous system.
On the disfigured wrists, arthritis runs in my family, and I play a few different instruments as well as program; so my wrists never get a break. I doubt it's purely down to typing.
EDITED/P.S. FWIW I feel like the perspective correction makes the game feel sterile. Something about those squirmy polygons makes it feel organic/alive. I wonder if that contributes to the overall esthetic, and if so, how will SOM compensate. I hope the extensions I've developed impart some of the same feeling, since they are similarly squirmy/organic, although at much higher resolutions.
If your SoM extensions support shaders, it's not too difficult to emulate PS1 graphical artifacts using them at a minimal cost to performance, should you feel it necessary.
I've been reading through '
Everything You Have Always Wanted to Know about the Playstation', and it has a pretty nice section on the texture data around page 29. It seems to be that texture pages are at hard-coded addresses in the VRAM:
Texture pages have a unit size of 256*256 pixels, regardless of color mode. This means that in the frame buffer
they will be 64 pixels wide for 4bit CLUT, 128 pixels wide for 8bit CLUT and 256 pixels wide for 15-bit direct. The
pixels are addressed with coordinates relative to the location of the texture page, not the frame buffer. So the top left
texture coordinate on a texture page is (0,0) and the bottom right one is (255,255). The pages can be located in the
frame buffer on X multiples of 64 and Y multiples of 256. More than one texture page can be set up, but each
primitive can only contain texture from one page.
It seems to me that it should just be possible to mark a texture page bounds in VRAM, then check when data is loaded into that area, convert the data to 32-bit RGBA pixels, and put that into a image buffer instead. It's going to require a little manual offset marking (for where the texture pages are in VRAM), but as I've already discovered they use specific pages anyway, so I know that those offsets won't change... Sort of like reverse texture atlasing.
Of course this is just theory, but I will try it tomorrow and update you with the results. It's certainly better than manually adding the textures onto the tiles again.