Releases: slfx77/psx_texture_extractor
Releases · slfx77/psx_texture_extractor
v0.9
This version includes a major rewrite to the codebase and adds support for additional Dreamcast texture formats.
QOL Improvements:
- Use multithreading to initiate and track file progress
- UI no longer goes unresponsive when handling many files
- Use multiprocessing to extract textures
- Observed a > 5x speedup as a result
- Add total time taken to status bar after extraction is complete
- Numerical columns in the file table are now sorted numerically rather than alphabetically
- Reorganized the code a bit:
- extract_psx.py (formerly io_thps_scene.py) now only reads files up until it gets to the textures rather than also extracting the PS1 (4/8-bit) ones.
- extract_ps1 is a new file that handles extracting PS1 textures
- extract_psx.py has been renamed to extract_pvr.py
- Overall improvements to documentation / code readability
Texture extracting improvements:
- PowerVR formats 0x2 (twiddled & mipmapped) and 0x4 (twiddled VQ & mipmapped) are now supported
- PowerVR formats 0x1 (square twiddled) and 0xD (rectangular twiddled) are now read correctly and no longer require postprocessing
- As such, there is no longer a dependency on PIL
v0.8
- All textures now are extracted to PNG
- Removed bmp.py
- Fixed a bug where 4-bit and 8-bit colors weren't converted properly. This made it impossible to have solid white beforehand.
- Added post-processing to textures with 0x100 and 0xd00 palettes. They now extract to the correct orientation and are no longer mirrored.
- The 0x400 palettes are still unsupported. Added an _i to their filenames to denote this.
- Unsure on if or when support will be added -- these aren't common and account for less than a precent of the 16-bit textures in my testing.
v0.7
- Heavily refactored the io_thps_scene code to reduce cognitive complexity
- psx_extract is now only ever called from within io_thps_scene
- Cleaned up the code for psx_extract, as this change resulted in most of its code being redundant
- Moved Rawtex into psx_extract and removed "nums" - these values never changed since the texture type was hardcoded
- Fixed a bug where textures rotated 90° would be exported without their dimensions swapped
- These textures are still rotated when extracted, but there are no longer other issues
- Denoted textures that are rotated with an _r at the end of their filename
- Removed the extra numbering from the end of extracted textures to eliminate duplicates upon multiple runs
v0.6
- Implemented code from Rawtex in order to support the 0x10x and 0xd0x palettes.
- Cleaned up the code a bit and made the io_thps_scene code call the extract_psx code.
- This fixes cases in which extract_psx couldn't parse the header of a PSX file while io_thps_scene could.
- 0x40x palette textures remain unsupported, but the program will not report this.
v0.5
v0.4
- Refactored the codebase to separate the code borrowed from io_thps_scene into its own file
- When io_thps_scene fails, the program will now call a different algorithm, psx_extract
- psx_extract is krystalgamer's psx_extractor rewritten in Python, and adds partial 16-bit texture support to the extractor.
- Unlike the 4-bit and 8-bit textures, 16-bit textures will be extracted to BMP rather than PNG.
- This may change in the future, but I have no plans to do so currently.