Skip to content

Releases: slfx77/psx_texture_extractor

v0.9

16 May 08:14
Compare
Choose a tag to compare

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

22 Oct 19:59
Compare
Choose a tag to compare
  • 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

21 Oct 07:12
Compare
Choose a tag to compare
  • 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

20 Oct 06:13
Compare
Choose a tag to compare
  • 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

16 Oct 04:23
Compare
Choose a tag to compare
  • Fixed a bug relating to textures with a sequenced palette.
    • As a consequence, there are now textures that will get exported incorrectly, but the program does not catch this. This will be worked on for a later release.

v0.4

14 Oct 02:20
Compare
Choose a tag to compare
  • 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.

v0.3

14 Oct 02:17
Compare
Choose a tag to compare

Initial release. Has no support for 16-bit textures within PSX files yet. (e.g. Spider-Man on Dreamcast)