ReverseBox 0.48.2__tar.gz → 0.49.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. {reversebox-0.48.2 → reversebox-0.49.0}/PKG-INFO +20 -5
  2. {reversebox-0.48.2 → reversebox-0.49.0}/README.md +3 -1
  3. {reversebox-0.48.2 → reversebox-0.49.0}/ReverseBox.egg-info/PKG-INFO +20 -5
  4. {reversebox-0.48.2 → reversebox-0.49.0}/ReverseBox.egg-info/SOURCES.txt +1 -0
  5. {reversebox-0.48.2 → reversebox-0.49.0}/ReverseBox.egg-info/requires.txt +1 -0
  6. reversebox-0.49.0/reversebox/compression/compression_lz4.py +14 -0
  7. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/common.py +2 -1
  8. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/image_decoder.py +6 -16
  9. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/image_formats.py +2 -1
  10. {reversebox-0.48.2 → reversebox-0.49.0}/setup.py +5 -12
  11. {reversebox-0.48.2 → reversebox-0.49.0}/LICENSE +0 -0
  12. {reversebox-0.48.2 → reversebox-0.49.0}/ReverseBox.egg-info/dependency_links.txt +0 -0
  13. {reversebox-0.48.2 → reversebox-0.49.0}/ReverseBox.egg-info/top_level.txt +0 -0
  14. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/__init__.py +0 -0
  15. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/__init__.py +0 -0
  16. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/checksum_adler32.py +0 -0
  17. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/checksum_cocos2d_pvr.py +0 -0
  18. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/checksum_fletcher16.py +0 -0
  19. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/checksum_fletcher32.py +0 -0
  20. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/checksum_internet_ipv4_header.py +0 -0
  21. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/checksum_sum8.py +0 -0
  22. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/checksum_sum8_2s_complement.py +0 -0
  23. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/checksum_unix_sum_bsd16.py +0 -0
  24. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/checksum_unix_sum_sysv.py +0 -0
  25. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/checksum/checksum_xor8.py +0 -0
  26. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/common/__init__.py +0 -0
  27. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/common/common.py +0 -0
  28. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/common/logger.py +0 -0
  29. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/common/numpy_helper_functions.py +0 -0
  30. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/compression/__init__.py +0 -0
  31. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/compression/compression_jcalg1.py +0 -0
  32. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/compression/compression_lzo.py +0 -0
  33. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/compression/compression_mio0.py +0 -0
  34. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/compression/compression_re_tiyoruga_dat.py +0 -0
  35. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/compression/compression_refpack.py +0 -0
  36. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/compression/compression_zlib.py +0 -0
  37. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/__init__.py +0 -0
  38. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc16_arc.py +0 -0
  39. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc16_ccitt.py +0 -0
  40. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc16_dnp.py +0 -0
  41. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc16_ea_crcf.py +0 -0
  42. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc16_kermit.py +0 -0
  43. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc16_modbus.py +0 -0
  44. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc16_sick.py +0 -0
  45. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc32_asobo.py +0 -0
  46. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc32_iso_hdlc.py +0 -0
  47. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc64_asobo.py +0 -0
  48. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc64_go_iso.py +0 -0
  49. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc8.py +0 -0
  50. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/crc/crc_unix_cksum.py +0 -0
  51. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/encryption/__init__.py +0 -0
  52. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/encryption/encryption_hatch_engine.py +0 -0
  53. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/encryption/encryption_rot13.py +0 -0
  54. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/encryption/encryption_xor_basic.py +0 -0
  55. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/encryption/encryption_xor_basic_key_guesser.py +0 -0
  56. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/encryption/encryption_xor_gianas_return_zda.py +0 -0
  57. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/encryption/encryption_xor_retro64_eco.py +0 -0
  58. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/__init__.py +0 -0
  59. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_additive.py +0 -0
  60. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_ap.py +0 -0
  61. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_djb2.py +0 -0
  62. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_fnv.py +0 -0
  63. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_jenkins_one_at_a_time.py +0 -0
  64. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_md2.py +0 -0
  65. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_md5.py +0 -0
  66. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_murmur3.py +0 -0
  67. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_pivotal_games_dat.py +0 -0
  68. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_sdbm.py +0 -0
  69. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_sha1.py +0 -0
  70. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/hash/hash_sha2.py +0 -0
  71. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/__init__.py +0 -0
  72. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/byte_swap.py +0 -0
  73. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/compression/__init__.py +0 -0
  74. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/compression/compression_gst.py +0 -0
  75. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/compression/compression_lzw.py +0 -0
  76. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/compression/compression_packbits.py +0 -0
  77. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/compression/compression_rle_executioners.py +0 -0
  78. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/compression/compression_rle_tga.py +0 -0
  79. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/compression/compression_zlib.py +0 -0
  80. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/decoders/__init__.py +0 -0
  81. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/decoders/bumpmap_decoder.py +0 -0
  82. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/decoders/compressed_decoder_encoder.py +0 -0
  83. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/decoders/gst_decoder_encoder.py +0 -0
  84. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/decoders/n64_decoder.py +0 -0
  85. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/decoders/pvrtexlib_decoder_encoder.py +0 -0
  86. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/decoders/yuv_decoder.py +0 -0
  87. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/file_formats/__init__.py +0 -0
  88. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/file_formats/image_dds.py +0 -0
  89. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/image_encoder.py +0 -0
  90. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/palettes/__init__.py +0 -0
  91. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/palettes/palette_random.py +0 -0
  92. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/palettes/palette_vga.py +0 -0
  93. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/pillow_wrapper.py +0 -0
  94. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/__init__.py +0 -0
  95. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_3ds.py +0 -0
  96. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_bc.py +0 -0
  97. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_cmpr.py +0 -0
  98. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_gamecube.py +0 -0
  99. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_gst.py +0 -0
  100. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_morton.py +0 -0
  101. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_morton_ps4.py +0 -0
  102. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_ps2.py +0 -0
  103. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_ps2_4bit.py +0 -0
  104. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_ps2_suba.py +0 -0
  105. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_psp.py +0 -0
  106. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_psvita_dreamcast.py +0 -0
  107. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_switch.py +0 -0
  108. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_wii_u.py +0 -0
  109. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/image/swizzling/swizzle_x360.py +0 -0
  110. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/io_files/__init__.py +0 -0
  111. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/io_files/bytes_handler.py +0 -0
  112. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/io_files/bytes_helper_functions.py +0 -0
  113. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/io_files/check_file.py +0 -0
  114. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/io_files/file_handler.py +0 -0
  115. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/io_files/mod_handler.py +0 -0
  116. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/io_files/translation_text_handler.py +0 -0
  117. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/libs/DirectXTex.dll +0 -0
  118. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/libs/PVRTexLib.dll +0 -0
  119. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/libs/PVRTexLibWrapper.dll +0 -0
  120. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/libs/__init__.py +0 -0
  121. {reversebox-0.48.2 → reversebox-0.49.0}/reversebox/libs/refpack.dll +0 -0
  122. {reversebox-0.48.2 → reversebox-0.49.0}/setup.cfg +0 -0
@@ -1,11 +1,12 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: ReverseBox
3
- Version: 0.48.2
3
+ Version: 0.49.0
4
4
  Summary: A set of functions useful in reverse engineering.
5
5
  Home-page: https://github.com/bartlomiejduda/ReverseBox
6
6
  Author: Bartlomiej Duda
7
7
  Author-email: ikskoks@gmail.com
8
- Keywords: ReverseBox,reverse engineering,RE,CRC,Hash,Encryption,Compression,Checksum,Python,image,decode,decoding,RGB,swizzle,swizzling,morton,twiddle,twiddling,texture,UYVY,YUY2,NV21,NV12,RGBA,RGBA8888,RGB565,RGBA8,BGR,grayscale,graphics,color,pixel,convert,converting,YUV,RAW,PSP,PS1,PS2,PS3,PS4,XBOX,X360,gamecube,dreamcast,BC,BC1,BC2,BC3,BC4,BC5,BC6,BC7,DXT1,DXT2,DXT3,PackBits,RLE,Macintosh,Jenkins,murmur,murmur3,one-at-a-time,additive,ASTC,ETC1,ETC2,DXT2,DXT4,EAC,BASISU,PVRTCI,UASTC,RGBM,RGBD
8
+ License: GPL-3.0-or-later
9
+ Keywords: ReverseBox,reverse engineering,RE,CRC,Hash,Encryption,Compression,Checksum,Python,image,decode,decoding,RGB,swizzle,swizzling,morton,twiddle,twiddling,texture,UYVY,YUY2,NV21,NV12,RGBA,RGBA8888,RGB565,RGBA8,BGR,grayscale,graphics,color,pixel,convert,converting,YUV,RAW,PSP,PS1,PS2,PS3,PS4,XBOX,X360,gamecube,dreamcast,BC,BC1,BC2,BC3,BC4,BC5,BC6,BC7,DXT1,DXT2,DXT3,PackBits,RLE,Macintosh,Jenkins,murmur,murmur3,one-at-a-time,additive,ASTC,ETC1,ETC2,DXT2,DXT4,EAC,BASISU,PVRTCI,UASTC,RGBM,RGBD,LZ4
9
10
  Classifier: Programming Language :: Python :: 3
10
11
  Classifier: Programming Language :: Python :: 3.6
11
12
  Classifier: Programming Language :: Python :: 3.7
@@ -22,7 +23,6 @@ Classifier: Topic :: Security :: Cryptography
22
23
  Classifier: Environment :: Console
23
24
  Classifier: Intended Audience :: Developers
24
25
  Classifier: Intended Audience :: Science/Research
25
- Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
26
26
  Classifier: Operating System :: OS Independent
27
27
  Classifier: Natural Language :: English
28
28
  Requires-Python: >=3.6
@@ -34,6 +34,19 @@ Requires-Dist: crc
34
34
  Requires-Dist: hashbase
35
35
  Requires-Dist: pillow
36
36
  Requires-Dist: mmh3
37
+ Requires-Dist: lz4
38
+ Dynamic: author
39
+ Dynamic: author-email
40
+ Dynamic: classifier
41
+ Dynamic: description
42
+ Dynamic: description-content-type
43
+ Dynamic: home-page
44
+ Dynamic: keywords
45
+ Dynamic: license
46
+ Dynamic: license-file
47
+ Dynamic: requires-dist
48
+ Dynamic: requires-python
49
+ Dynamic: summary
37
50
 
38
51
  # Info
39
52
 
@@ -95,6 +108,7 @@ or software researchers).
95
108
  - BZIP2 (TODO) ❌
96
109
  - GZIP (TODO) ❌
97
110
  - JCALG1 (TODO) ❌
111
+ - LZ4 ✔️ <span style="color:yellow">(wrapper only)</span>
98
112
  - LZMA (TODO) ❌
99
113
  - LZO / LZO1X ✔️ <span style="color:yellow">(wrapper only)</span>
100
114
  - LZSS (TODO) ❌
@@ -141,12 +155,13 @@ or software researchers).
141
155
  * Image
142
156
  - Decode RGB121 ✔️
143
157
  - Decode ALPHA4 ✔️
144
- - Decode RAWBMP2_PS2 ✔️
158
+ - Decode ALPHA4_16X ✔️
145
159
  - Decode RGB121_BYTE ✔️
146
160
  - Decode RGBA2222 ✔️
147
161
  - Decode RGBX2222 ✔️
148
162
  - Decode GRAY8 ✔️
149
163
  - Decode ALPHA8 ✔️
164
+ - Decode ALPHA8_16X ✔️
150
165
  - Decode LA44 ✔️
151
166
  - Decode RGBX332 (RGB8) ✔️
152
167
  - Decode BGRX332 (BGR8) ✔️
@@ -58,6 +58,7 @@ or software researchers).
58
58
  - BZIP2 (TODO) ❌
59
59
  - GZIP (TODO) ❌
60
60
  - JCALG1 (TODO) ❌
61
+ - LZ4 ✔️ <span style="color:yellow">(wrapper only)</span>
61
62
  - LZMA (TODO) ❌
62
63
  - LZO / LZO1X ✔️ <span style="color:yellow">(wrapper only)</span>
63
64
  - LZSS (TODO) ❌
@@ -104,12 +105,13 @@ or software researchers).
104
105
  * Image
105
106
  - Decode RGB121 ✔️
106
107
  - Decode ALPHA4 ✔️
107
- - Decode RAWBMP2_PS2 ✔️
108
+ - Decode ALPHA4_16X ✔️
108
109
  - Decode RGB121_BYTE ✔️
109
110
  - Decode RGBA2222 ✔️
110
111
  - Decode RGBX2222 ✔️
111
112
  - Decode GRAY8 ✔️
112
113
  - Decode ALPHA8 ✔️
114
+ - Decode ALPHA8_16X ✔️
113
115
  - Decode LA44 ✔️
114
116
  - Decode RGBX332 (RGB8) ✔️
115
117
  - Decode BGRX332 (BGR8) ✔️
@@ -1,11 +1,12 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: ReverseBox
3
- Version: 0.48.2
3
+ Version: 0.49.0
4
4
  Summary: A set of functions useful in reverse engineering.
5
5
  Home-page: https://github.com/bartlomiejduda/ReverseBox
6
6
  Author: Bartlomiej Duda
7
7
  Author-email: ikskoks@gmail.com
8
- Keywords: ReverseBox,reverse engineering,RE,CRC,Hash,Encryption,Compression,Checksum,Python,image,decode,decoding,RGB,swizzle,swizzling,morton,twiddle,twiddling,texture,UYVY,YUY2,NV21,NV12,RGBA,RGBA8888,RGB565,RGBA8,BGR,grayscale,graphics,color,pixel,convert,converting,YUV,RAW,PSP,PS1,PS2,PS3,PS4,XBOX,X360,gamecube,dreamcast,BC,BC1,BC2,BC3,BC4,BC5,BC6,BC7,DXT1,DXT2,DXT3,PackBits,RLE,Macintosh,Jenkins,murmur,murmur3,one-at-a-time,additive,ASTC,ETC1,ETC2,DXT2,DXT4,EAC,BASISU,PVRTCI,UASTC,RGBM,RGBD
8
+ License: GPL-3.0-or-later
9
+ Keywords: ReverseBox,reverse engineering,RE,CRC,Hash,Encryption,Compression,Checksum,Python,image,decode,decoding,RGB,swizzle,swizzling,morton,twiddle,twiddling,texture,UYVY,YUY2,NV21,NV12,RGBA,RGBA8888,RGB565,RGBA8,BGR,grayscale,graphics,color,pixel,convert,converting,YUV,RAW,PSP,PS1,PS2,PS3,PS4,XBOX,X360,gamecube,dreamcast,BC,BC1,BC2,BC3,BC4,BC5,BC6,BC7,DXT1,DXT2,DXT3,PackBits,RLE,Macintosh,Jenkins,murmur,murmur3,one-at-a-time,additive,ASTC,ETC1,ETC2,DXT2,DXT4,EAC,BASISU,PVRTCI,UASTC,RGBM,RGBD,LZ4
9
10
  Classifier: Programming Language :: Python :: 3
10
11
  Classifier: Programming Language :: Python :: 3.6
11
12
  Classifier: Programming Language :: Python :: 3.7
@@ -22,7 +23,6 @@ Classifier: Topic :: Security :: Cryptography
22
23
  Classifier: Environment :: Console
23
24
  Classifier: Intended Audience :: Developers
24
25
  Classifier: Intended Audience :: Science/Research
25
- Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
26
26
  Classifier: Operating System :: OS Independent
27
27
  Classifier: Natural Language :: English
28
28
  Requires-Python: >=3.6
@@ -34,6 +34,19 @@ Requires-Dist: crc
34
34
  Requires-Dist: hashbase
35
35
  Requires-Dist: pillow
36
36
  Requires-Dist: mmh3
37
+ Requires-Dist: lz4
38
+ Dynamic: author
39
+ Dynamic: author-email
40
+ Dynamic: classifier
41
+ Dynamic: description
42
+ Dynamic: description-content-type
43
+ Dynamic: home-page
44
+ Dynamic: keywords
45
+ Dynamic: license
46
+ Dynamic: license-file
47
+ Dynamic: requires-dist
48
+ Dynamic: requires-python
49
+ Dynamic: summary
37
50
 
38
51
  # Info
39
52
 
@@ -95,6 +108,7 @@ or software researchers).
95
108
  - BZIP2 (TODO) ❌
96
109
  - GZIP (TODO) ❌
97
110
  - JCALG1 (TODO) ❌
111
+ - LZ4 ✔️ <span style="color:yellow">(wrapper only)</span>
98
112
  - LZMA (TODO) ❌
99
113
  - LZO / LZO1X ✔️ <span style="color:yellow">(wrapper only)</span>
100
114
  - LZSS (TODO) ❌
@@ -141,12 +155,13 @@ or software researchers).
141
155
  * Image
142
156
  - Decode RGB121 ✔️
143
157
  - Decode ALPHA4 ✔️
144
- - Decode RAWBMP2_PS2 ✔️
158
+ - Decode ALPHA4_16X ✔️
145
159
  - Decode RGB121_BYTE ✔️
146
160
  - Decode RGBA2222 ✔️
147
161
  - Decode RGBX2222 ✔️
148
162
  - Decode GRAY8 ✔️
149
163
  - Decode ALPHA8 ✔️
164
+ - Decode ALPHA8_16X ✔️
150
165
  - Decode LA44 ✔️
151
166
  - Decode RGBX332 (RGB8) ✔️
152
167
  - Decode BGRX332 (BGR8) ✔️
@@ -24,6 +24,7 @@ reversebox/common/logger.py
24
24
  reversebox/common/numpy_helper_functions.py
25
25
  reversebox/compression/__init__.py
26
26
  reversebox/compression/compression_jcalg1.py
27
+ reversebox/compression/compression_lz4.py
27
28
  reversebox/compression/compression_lzo.py
28
29
  reversebox/compression/compression_mio0.py
29
30
  reversebox/compression/compression_re_tiyoruga_dat.py
@@ -4,3 +4,4 @@ crc
4
4
  hashbase
5
5
  pillow
6
6
  mmh3
7
+ lz4
@@ -0,0 +1,14 @@
1
+ """
2
+ Copyright © 2025 Bartłomiej Duda
3
+ License: GPL-3.0 License
4
+ """
5
+
6
+ import lz4.frame
7
+
8
+
9
+ class LZ4Handler:
10
+ def compress_data(self, input_data: bytes) -> bytes:
11
+ return lz4.frame.compress(input_data)
12
+
13
+ def decompress_data(self, compressed_data: bytes) -> bytes:
14
+ return lz4.frame.decompress(compressed_data)
@@ -85,7 +85,7 @@ def get_bpp_for_image_format(image_format: ImageFormats) -> int:
85
85
  ImageFormats.BC4_UNORM,
86
86
  ImageFormats.PAL4,
87
87
  ImageFormats.ALPHA4,
88
- ImageFormats.RAWBMP2_PS2
88
+ ImageFormats.ALPHA4_16X
89
89
  ):
90
90
  return 4
91
91
  elif image_format in (ImageFormats.RGBX2222,
@@ -95,6 +95,7 @@ def get_bpp_for_image_format(image_format: ImageFormats) -> int:
95
95
  ImageFormats.BGR332,
96
96
  ImageFormats.GRAY8,
97
97
  ImageFormats.ALPHA8,
98
+ ImageFormats.ALPHA8_16X,
98
99
  ImageFormats.LA44,
99
100
  ImageFormats.N64_I8,
100
101
  ImageFormats.N64_IA4,
@@ -74,17 +74,7 @@ class ImageDecoder:
74
74
  p[3] = 0xFF
75
75
  return p
76
76
 
77
- # A4 (Alpha 4-bit)
78
- def _decode_alpha4_pixel(self, pixel_int: int) -> bytes:
79
- p = bytearray(4)
80
- p[0] = 0xFF
81
- p[1] = 0xFF
82
- p[2] = 0xFF
83
- p[3] = pixel_int & 0xFF
84
- return p
85
-
86
- # RAWBMP/2 PS2 (4-bit)
87
- def _decode_rawbmp2_ps2_pixel(self, pixel_int: int) -> bytes:
77
+ def _decode_alpha_16x_pixel(self, pixel_int: int) -> bytes:
88
78
  p = bytearray(4)
89
79
  p[0] = 0xFF
90
80
  p[1] = 0xFF
@@ -92,8 +82,7 @@ class ImageDecoder:
92
82
  p[3] = (16 * pixel_int) & 0xFF
93
83
  return p
94
84
 
95
- # A8 (Alpha 8-bit)
96
- def _decode_alpha8_pixel(self, pixel_int: int) -> bytes:
85
+ def _decode_alpha_only_pixel(self, pixel_int: int) -> bytes:
97
86
  p = bytearray(4)
98
87
  p[0] = 0xFF
99
88
  p[1] = 0xFF
@@ -584,12 +573,13 @@ class ImageDecoder:
584
573
  # image_format: (decode_function, bits_per_pixel, image_entry_read_function)
585
574
  ImageFormats.RGB121: (_decode_rgb121_byte_pixel, 4, get_uint8),
586
575
  ImageFormats.N64_I4: (_decode_i4_pixel, 4, get_uint8), # GRAY, 4bpp
587
- ImageFormats.ALPHA4: (_decode_alpha4_pixel, 4, get_uint8),
588
- ImageFormats.RAWBMP2_PS2: (_decode_rawbmp2_ps2_pixel, 4, get_uint8),
576
+ ImageFormats.ALPHA4: (_decode_alpha_only_pixel, 4, get_uint8),
577
+ ImageFormats.ALPHA4_16X: (_decode_alpha_16x_pixel, 4, get_uint8),
589
578
 
590
579
  ImageFormats.RGB121_BYTE: (_decode_rgb121_byte_pixel, 8, get_uint8),
591
580
  ImageFormats.GRAY8: (_decode_gray8_pixel, 8, get_uint8),
592
- ImageFormats.ALPHA8: (_decode_alpha8_pixel, 8, get_uint8),
581
+ ImageFormats.ALPHA8: (_decode_alpha_only_pixel, 8, get_uint8),
582
+ ImageFormats.ALPHA8_16X: (_decode_alpha_16x_pixel, 8, get_uint8),
593
583
  ImageFormats.LA44: (_decode_la44_pixel, 8, get_uint8),
594
584
  ImageFormats.RGBX2222: (_decode_rgbx2222_pixel, 8, get_uint8),
595
585
  ImageFormats.RGBA2222: (_decode_rgba2222_pixel, 8, get_uint8),
@@ -20,7 +20,7 @@ class ImageFormats(Enum):
20
20
  # 4-bit
21
21
  RGB121 = "rgb121" # PIX_FMT_RGB4 / packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb)
22
22
  ALPHA4 = "alpha4" # (A4 / Alpha 4-bit)
23
- RAWBMP2_PS2 = "rawbmp2_ps2" # RAWBMP/2 PS2 (4-bit)
23
+ ALPHA4_16X = "alpha4_16x"
24
24
 
25
25
  # 8-bit
26
26
  RGBX2222 = "rgbx2222"
@@ -30,6 +30,7 @@ class ImageFormats(Enum):
30
30
  BGR332 = "bgr332" # PIX_FMT_BGR8 / packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb)
31
31
  GRAY8 = "gray8" # PIX_FMT_GRAY8 / Y, 8bpp (Y800 / L8 / Luminance 8-bit)
32
32
  ALPHA8 = "alpha8" # (A8 / Alpha 8-bit)
33
+ ALPHA8_16X = "alpha8_16x"
33
34
  LA44 = "la44" # (LA4 / L4A4 / Luminance 4-bit and Alpha 4-bit)
34
35
  R8 = "r8"
35
36
  G8 = "g8"
@@ -8,7 +8,7 @@ from typing import Final
8
8
 
9
9
  import setuptools
10
10
 
11
- VERSION_NUM: Final[str] = "0.48.2"
11
+ VERSION_NUM: Final[str] = "0.49.0"
12
12
 
13
13
 
14
14
  def get_long_description() -> str:
@@ -27,6 +27,8 @@ setuptools.setup(
27
27
  description="A set of functions useful in reverse engineering.",
28
28
  long_description=get_long_description(),
29
29
  long_description_content_type="text/markdown",
30
+ license="GPL-3.0-or-later",
31
+ license_files=["LICENSE"],
30
32
  url="https://github.com/bartlomiejduda/ReverseBox",
31
33
  classifiers=[
32
34
  "Programming Language :: Python :: 3",
@@ -45,25 +47,16 @@ setuptools.setup(
45
47
  "Environment :: Console",
46
48
  "Intended Audience :: Developers",
47
49
  "Intended Audience :: Science/Research",
48
- "License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
49
50
  "Operating System :: OS Independent",
50
51
  "Natural Language :: English",
51
52
  ],
52
- test_suite="tests",
53
53
  keywords="ReverseBox, reverse engineering, RE, CRC, Hash, Encryption, Compression, Checksum, Python, image, decode, decoding, "
54
54
  "RGB, swizzle, swizzling, morton, twiddle, twiddling, texture, UYVY, YUY2, NV21, NV12, RGBA, RGBA8888, RGB565, RGBA8, BGR, "
55
55
  "grayscale, graphics, color, pixel, convert, converting, YUV, RAW, PSP, PS1, PS2, PS3, PS4, XBOX, X360, gamecube, dreamcast, "
56
56
  "BC, BC1, BC2, BC3, BC4, BC5, BC6, BC7, DXT1, DXT2, DXT3, PackBits, RLE, Macintosh, Jenkins, murmur, murmur3, one-at-a-time, "
57
- "additive, ASTC, ETC1, ETC2, DXT2, DXT4, EAC, BASISU, PVRTCI, UASTC, RGBM, RGBD",
57
+ "additive, ASTC, ETC1, ETC2, DXT2, DXT4, EAC, BASISU, PVRTCI, UASTC, RGBM, RGBD, LZ4",
58
58
  python_requires=">=3.6",
59
- install_requires=[
60
- "lzokay",
61
- "polib",
62
- "crc",
63
- "hashbase",
64
- "pillow",
65
- "mmh3",
66
- ],
59
+ install_requires=["lzokay", "polib", "crc", "hashbase", "pillow", "mmh3", "lz4"],
67
60
  packages=setuptools.find_packages(exclude=["tests", "tests.*"]),
68
61
  package_data={"": ["libs/*.dll"]},
69
62
  include_package_data=True,
File without changes
File without changes