ReverseBox 0.84.0__tar.gz → 0.84.2__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 (136) hide show
  1. {reversebox-0.84.0 → reversebox-0.84.2}/PKG-INFO +1 -1
  2. {reversebox-0.84.0 → reversebox-0.84.2}/ReverseBox.egg-info/PKG-INFO +1 -1
  3. {reversebox-0.84.0 → reversebox-0.84.2}/ReverseBox.egg-info/SOURCES.txt +1 -0
  4. reversebox-0.84.2/reversebox/compression/compression_rle_syberia.py +18 -0
  5. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/decoders/compressed_decoder_encoder.py +53 -0
  6. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/decoders/gst_decoder_encoder.py +1 -1
  7. {reversebox-0.84.0 → reversebox-0.84.2}/setup.py +1 -1
  8. {reversebox-0.84.0 → reversebox-0.84.2}/LICENSE +0 -0
  9. {reversebox-0.84.0 → reversebox-0.84.2}/README.md +0 -0
  10. {reversebox-0.84.0 → reversebox-0.84.2}/ReverseBox.egg-info/dependency_links.txt +0 -0
  11. {reversebox-0.84.0 → reversebox-0.84.2}/ReverseBox.egg-info/requires.txt +0 -0
  12. {reversebox-0.84.0 → reversebox-0.84.2}/ReverseBox.egg-info/top_level.txt +0 -0
  13. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/__init__.py +0 -0
  14. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/checksum/__init__.py +0 -0
  15. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/checksum/checksum_adler32.py +0 -0
  16. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/checksum/checksum_cocos2d_pvr.py +0 -0
  17. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/checksum/checksum_fletcher16.py +0 -0
  18. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/checksum/checksum_fletcher32.py +0 -0
  19. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/checksum/checksum_internet_ipv4_header.py +0 -0
  20. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/checksum/checksum_sum8.py +0 -0
  21. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/checksum/checksum_sum8_2s_complement.py +0 -0
  22. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/checksum/checksum_unix_sum_bsd16.py +0 -0
  23. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/checksum/checksum_unix_sum_sysv.py +0 -0
  24. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/checksum/checksum_xor8.py +0 -0
  25. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/common/__init__.py +0 -0
  26. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/common/common.py +0 -0
  27. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/common/constants.py +0 -0
  28. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/common/logger.py +0 -0
  29. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/common/numpy_helper_functions.py +0 -0
  30. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/__init__.py +0 -0
  31. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/compression_bzip2.py +0 -0
  32. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/compression_ea_idec.py +0 -0
  33. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/compression_gst.py +0 -0
  34. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/compression_huffman_intelligent.py +0 -0
  35. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/compression_jcalg1.py +0 -0
  36. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/compression_lz4.py +0 -0
  37. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/compression_lzma.py +0 -0
  38. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/compression_lzo.py +0 -0
  39. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/compression_lzw.py +0 -0
  40. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/compression_mio0.py +0 -0
  41. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/compression_packbits.py +0 -0
  42. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/compression_re_tiyoruga_dat.py +0 -0
  43. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/compression_refpack.py +0 -0
  44. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/compression_rle_emergency.py +0 -0
  45. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/compression_rle_executioners.py +0 -0
  46. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/compression_rle_leapster.py +0 -0
  47. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/compression_rle_neversoft.py +0 -0
  48. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/compression_rle_tga.py +0 -0
  49. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/compression_rle_tga_reversed.py +0 -0
  50. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/compression_rle_tzar.py +0 -0
  51. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/compression_zlib.py +0 -0
  52. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/compression/compression_zlib2.py +0 -0
  53. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/crc/__init__.py +0 -0
  54. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/crc/crc16_arc.py +0 -0
  55. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/crc/crc16_ccitt.py +0 -0
  56. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/crc/crc16_dnp.py +0 -0
  57. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/crc/crc16_ea_crcf.py +0 -0
  58. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/crc/crc16_kermit.py +0 -0
  59. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/crc/crc16_modbus.py +0 -0
  60. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/crc/crc16_sick.py +0 -0
  61. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/crc/crc32_asobo.py +0 -0
  62. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/crc/crc32_iso_hdlc.py +0 -0
  63. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/crc/crc64_asobo.py +0 -0
  64. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/crc/crc64_go_iso.py +0 -0
  65. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/crc/crc8.py +0 -0
  66. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/crc/crc_unix_cksum.py +0 -0
  67. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/encryption/__init__.py +0 -0
  68. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/encryption/encryption_hatch_engine.py +0 -0
  69. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/encryption/encryption_rot13.py +0 -0
  70. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/encryption/encryption_xor_basic.py +0 -0
  71. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/encryption/encryption_xor_basic_key_guesser.py +0 -0
  72. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/encryption/encryption_xor_gianas_return_zda.py +0 -0
  73. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/encryption/encryption_xor_retro64_eco.py +0 -0
  74. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/hash/__init__.py +0 -0
  75. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/hash/hash_additive.py +0 -0
  76. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/hash/hash_ap.py +0 -0
  77. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/hash/hash_djb2.py +0 -0
  78. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/hash/hash_fnv.py +0 -0
  79. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/hash/hash_jenkins_one_at_a_time.py +0 -0
  80. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/hash/hash_md2.py +0 -0
  81. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/hash/hash_md5.py +0 -0
  82. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/hash/hash_murmur3.py +0 -0
  83. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/hash/hash_pivotal_games_dat.py +0 -0
  84. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/hash/hash_rx3.py +0 -0
  85. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/hash/hash_sdbm.py +0 -0
  86. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/hash/hash_sha1.py +0 -0
  87. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/hash/hash_sha2.py +0 -0
  88. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/__init__.py +0 -0
  89. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/byte_swap.py +0 -0
  90. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/common.py +0 -0
  91. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/decoders/__init__.py +0 -0
  92. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/decoders/bumpmap_decoder.py +0 -0
  93. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/decoders/n64_decoder_encoder.py +0 -0
  94. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/decoders/psp_dxt_decoder.py +0 -0
  95. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/decoders/pvrtexlib_decoder_encoder.py +0 -0
  96. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/decoders/yuv_decoder.py +0 -0
  97. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/file_formats/__init__.py +0 -0
  98. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/file_formats/image_dds.py +0 -0
  99. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/image_decoder.py +0 -0
  100. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/image_encoder.py +0 -0
  101. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/image_formats.py +0 -0
  102. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/image_padding.py +0 -0
  103. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/palettes/__init__.py +0 -0
  104. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/palettes/palette_random.py +0 -0
  105. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/palettes/palette_vga.py +0 -0
  106. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/pillow_wrapper.py +0 -0
  107. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/swizzling/__init__.py +0 -0
  108. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/swizzling/morton_index.py +0 -0
  109. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/swizzling/swizzle_3ds.py +0 -0
  110. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/swizzling/swizzle_bc.py +0 -0
  111. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/swizzling/swizzle_cmpr.py +0 -0
  112. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/swizzling/swizzle_gamecube.py +0 -0
  113. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/swizzling/swizzle_gst.py +0 -0
  114. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/swizzling/swizzle_morton.py +0 -0
  115. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/swizzling/swizzle_morton_ps4.py +0 -0
  116. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/swizzling/swizzle_morton_ps5.py +0 -0
  117. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/swizzling/swizzle_ps2.py +0 -0
  118. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/swizzling/swizzle_ps2_4bit.py +0 -0
  119. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/swizzling/swizzle_psp.py +0 -0
  120. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/swizzling/swizzle_psvita_dreamcast.py +0 -0
  121. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/swizzling/swizzle_switch.py +0 -0
  122. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/swizzling/swizzle_wii_u.py +0 -0
  123. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/image/swizzling/swizzle_x360.py +0 -0
  124. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/io_files/__init__.py +0 -0
  125. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/io_files/bytes_handler.py +0 -0
  126. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/io_files/bytes_helper_functions.py +0 -0
  127. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/io_files/check_file.py +0 -0
  128. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/io_files/file_handler.py +0 -0
  129. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/io_files/mod_handler.py +0 -0
  130. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/io_files/translation_text_handler.py +0 -0
  131. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/libs/DirectXTex.dll +0 -0
  132. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/libs/PVRTexLib.dll +0 -0
  133. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/libs/PVRTexLibWrapper.dll +0 -0
  134. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/libs/__init__.py +0 -0
  135. {reversebox-0.84.0 → reversebox-0.84.2}/reversebox/libs/refpack.dll +0 -0
  136. {reversebox-0.84.0 → reversebox-0.84.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ReverseBox
3
- Version: 0.84.0
3
+ Version: 0.84.2
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ReverseBox
3
- Version: 0.84.0
3
+ Version: 0.84.2
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
@@ -41,6 +41,7 @@ reversebox/compression/compression_rle_emergency.py
41
41
  reversebox/compression/compression_rle_executioners.py
42
42
  reversebox/compression/compression_rle_leapster.py
43
43
  reversebox/compression/compression_rle_neversoft.py
44
+ reversebox/compression/compression_rle_syberia.py
44
45
  reversebox/compression/compression_rle_tga.py
45
46
  reversebox/compression/compression_rle_tga_reversed.py
46
47
  reversebox/compression/compression_rle_tzar.py
@@ -0,0 +1,18 @@
1
+ """
2
+ Copyright © 2026 Bartłomiej Duda
3
+ License: GPL-3.0 License
4
+ """
5
+
6
+ from reversebox.common.logger import get_logger
7
+
8
+ logger = get_logger(__name__)
9
+
10
+ # fmt: off
11
+
12
+ # Syberia RLE compression
13
+ # https://rewiki.miraheze.org/wiki/Microids_VRLE
14
+
15
+
16
+ # TODO - implement this
17
+ def decompress_rle_syberia(image_data: bytes, img_width: int, img_height: int) -> bytes:
18
+ return bytes(image_data)
@@ -160,6 +160,10 @@ class CompressedImageDecoderEncoder:
160
160
  else:
161
161
  converted_data_size: int = img_height * img_width * 4
162
162
  converted_data = bytearray((c_uint8 * converted_data_size).from_address(ctypes.addressof(output_dxgi_image.pixels.contents)))
163
+
164
+ # TODO - make it work
165
+ # if image_format == ImageFormats.BC2_DXT2:
166
+ # converted_data = self.unpremultiply_rgba(converted_data)
163
167
  return converted_data
164
168
 
165
169
  def decode_compressed_image_main(self, image_data: bytes, img_width: int, img_height: int, image_format: ImageFormats) -> bytes:
@@ -167,3 +171,52 @@ class CompressedImageDecoderEncoder:
167
171
 
168
172
  def encode_compressed_image_main(self, image_data: bytes, img_width: int, img_height: int, image_format: ImageFormats) -> bytes:
169
173
  return self._convert_directxtex_image(image_data, img_width, img_height, image_format, True)
174
+
175
+ # TODO - make it work
176
+ def unpremultiply_rgba(self, data: bytes) -> bytes:
177
+ result = bytearray(len(data))
178
+
179
+ for i in range(0, len(data), 4):
180
+ r = data[i]
181
+ g = data[i + 1]
182
+ b = data[i + 2]
183
+ a = data[i + 3]
184
+
185
+ if a > 0:
186
+ r = min(255, (r * 255) // a)
187
+ g = min(255, (g * 255) // a)
188
+ b = min(255, (b * 255) // a)
189
+ else:
190
+ r = g = b = 0
191
+
192
+ result[i] = r
193
+ result[i + 1] = g
194
+ result[i + 2] = b
195
+ result[i + 3] = a
196
+
197
+ return bytes(result)
198
+
199
+ # TODO - make it work
200
+ def premultiply_rgba(self, data: bytes) -> bytes:
201
+ result = bytearray(len(data))
202
+
203
+ for i in range(0, len(data), 4):
204
+ r = data[i]
205
+ g = data[i + 1]
206
+ b = data[i + 2]
207
+ a = data[i + 3]
208
+
209
+ # uint32_t alpha = pixel.a * 258;
210
+ alpha = a * 258
211
+
212
+ # (pixel.r * alpha) >> 16
213
+ r = (r * alpha) >> 16
214
+ g = (g * alpha) >> 16
215
+ b = (b * alpha) >> 16
216
+
217
+ result[i] = r
218
+ result[i + 1] = g
219
+ result[i + 2] = b
220
+ result[i + 3] = a
221
+
222
+ return bytes(result)
@@ -1,5 +1,5 @@
1
1
  """
2
- Copyright © 2024-2025 Bartłomiej Duda
2
+ Copyright © 2024-2026 Bartłomiej Duda
3
3
  License: GPL-3.0 License
4
4
  """
5
5
 
@@ -8,7 +8,7 @@ from typing import Final
8
8
 
9
9
  import setuptools
10
10
 
11
- VERSION_NUM: Final[str] = "0.84.0"
11
+ VERSION_NUM: Final[str] = "0.84.2"
12
12
 
13
13
 
14
14
  def get_long_description() -> str:
File without changes
File without changes
File without changes