ReverseBox 0.35.3__tar.gz → 0.35.6__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 (120) hide show
  1. {reversebox-0.35.3 → reversebox-0.35.6}/PKG-INFO +2 -2
  2. {reversebox-0.35.3 → reversebox-0.35.6}/README.md +1 -1
  3. {reversebox-0.35.3 → reversebox-0.35.6}/ReverseBox.egg-info/PKG-INFO +2 -2
  4. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/common/common.py +1 -1
  5. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/image_encoder.py +23 -1
  6. {reversebox-0.35.3 → reversebox-0.35.6}/setup.py +1 -1
  7. {reversebox-0.35.3 → reversebox-0.35.6}/LICENSE +0 -0
  8. {reversebox-0.35.3 → reversebox-0.35.6}/ReverseBox.egg-info/SOURCES.txt +0 -0
  9. {reversebox-0.35.3 → reversebox-0.35.6}/ReverseBox.egg-info/dependency_links.txt +0 -0
  10. {reversebox-0.35.3 → reversebox-0.35.6}/ReverseBox.egg-info/requires.txt +0 -0
  11. {reversebox-0.35.3 → reversebox-0.35.6}/ReverseBox.egg-info/top_level.txt +0 -0
  12. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/__init__.py +0 -0
  13. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/checksum/__init__.py +0 -0
  14. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/checksum/checksum_adler32.py +0 -0
  15. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/checksum/checksum_cocos2d_pvr.py +0 -0
  16. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/checksum/checksum_fletcher16.py +0 -0
  17. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/checksum/checksum_fletcher32.py +0 -0
  18. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/checksum/checksum_internet_ipv4_header.py +0 -0
  19. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/checksum/checksum_sum8.py +0 -0
  20. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/checksum/checksum_sum8_2s_complement.py +0 -0
  21. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/checksum/checksum_unix_sum_bsd16.py +0 -0
  22. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/checksum/checksum_unix_sum_sysv.py +0 -0
  23. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/checksum/checksum_xor8.py +0 -0
  24. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/common/__init__.py +0 -0
  25. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/common/logger.py +0 -0
  26. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/common/numpy_helper_functions.py +0 -0
  27. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/compression/__init__.py +0 -0
  28. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/compression/compression_jcalg1.py +0 -0
  29. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/compression/compression_lzo.py +0 -0
  30. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/compression/compression_mio0.py +0 -0
  31. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/compression/compression_re_tiyoruga_dat.py +0 -0
  32. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/compression/compression_refpack.py +0 -0
  33. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/compression/compression_zlib.py +0 -0
  34. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/crc/__init__.py +0 -0
  35. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/crc/crc16_arc.py +0 -0
  36. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/crc/crc16_ccitt.py +0 -0
  37. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/crc/crc16_dnp.py +0 -0
  38. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/crc/crc16_ea_crcf.py +0 -0
  39. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/crc/crc16_kermit.py +0 -0
  40. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/crc/crc16_modbus.py +0 -0
  41. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/crc/crc16_sick.py +0 -0
  42. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/crc/crc32_asobo.py +0 -0
  43. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/crc/crc32_iso_hdlc.py +0 -0
  44. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/crc/crc64_asobo.py +0 -0
  45. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/crc/crc64_go_iso.py +0 -0
  46. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/crc/crc8.py +0 -0
  47. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/crc/crc_unix_cksum.py +0 -0
  48. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/encryption/__init__.py +0 -0
  49. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/encryption/encryption_hatch_engine.py +0 -0
  50. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/encryption/encryption_rot13.py +0 -0
  51. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/encryption/encryption_xor_basic.py +0 -0
  52. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/encryption/encryption_xor_basic_key_guesser.py +0 -0
  53. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/encryption/encryption_xor_gianas_return_zda.py +0 -0
  54. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/encryption/encryption_xor_retro64_eco.py +0 -0
  55. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/hash/__init__.py +0 -0
  56. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/hash/hash_additive.py +0 -0
  57. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/hash/hash_ap.py +0 -0
  58. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/hash/hash_djb2.py +0 -0
  59. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/hash/hash_fnv.py +0 -0
  60. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/hash/hash_jenkins_one_at_a_time.py +0 -0
  61. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/hash/hash_md2.py +0 -0
  62. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/hash/hash_md5.py +0 -0
  63. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/hash/hash_murmur3.py +0 -0
  64. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/hash/hash_pivotal_games_dat.py +0 -0
  65. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/hash/hash_sdbm.py +0 -0
  66. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/hash/hash_sha1.py +0 -0
  67. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/hash/hash_sha2.py +0 -0
  68. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/__init__.py +0 -0
  69. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/byte_swap.py +0 -0
  70. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/common.py +0 -0
  71. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/compression/__init__.py +0 -0
  72. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/compression/compression_gst.py +0 -0
  73. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/compression/compression_lzw.py +0 -0
  74. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/compression/compression_packbits.py +0 -0
  75. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/compression/compression_rle_executioners.py +0 -0
  76. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/compression/compression_rle_tga.py +0 -0
  77. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/compression/compression_zlib.py +0 -0
  78. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/decoders/__init__.py +0 -0
  79. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/decoders/bumpmap_decoder.py +0 -0
  80. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/decoders/compressed_decoder.py +0 -0
  81. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/decoders/gst_decoder.py +0 -0
  82. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/decoders/n64_decoder.py +0 -0
  83. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/decoders/yuv_decoder.py +0 -0
  84. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/encoders/__init__.py +0 -0
  85. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/encoders/gst_encoder.py +0 -0
  86. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/file_formats/__init__.py +0 -0
  87. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/file_formats/image_dds.py +0 -0
  88. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/image_decoder.py +0 -0
  89. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/image_formats.py +0 -0
  90. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/palettes/__init__.py +0 -0
  91. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/palettes/palette_random.py +0 -0
  92. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/palettes/palette_vga.py +0 -0
  93. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/pillow_wrapper.py +0 -0
  94. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/swizzling/__init__.py +0 -0
  95. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/swizzling/swizzle_3ds.py +0 -0
  96. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/swizzling/swizzle_bc.py +0 -0
  97. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/swizzling/swizzle_cmpr.py +0 -0
  98. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/swizzling/swizzle_gamecube.py +0 -0
  99. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/swizzling/swizzle_gst.py +0 -0
  100. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/swizzling/swizzle_morton.py +0 -0
  101. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/swizzling/swizzle_morton_ps4.py +0 -0
  102. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/swizzling/swizzle_ps2.py +0 -0
  103. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/swizzling/swizzle_ps2_4bit.py +0 -0
  104. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/swizzling/swizzle_ps2_suba.py +0 -0
  105. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/swizzling/swizzle_psp.py +0 -0
  106. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/swizzling/swizzle_psvita_dreamcast.py +0 -0
  107. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/swizzling/swizzle_switch.py +0 -0
  108. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/swizzling/swizzle_wii_u.py +0 -0
  109. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/image/swizzling/swizzle_x360.py +0 -0
  110. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/io_files/__init__.py +0 -0
  111. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/io_files/bytes_handler.py +0 -0
  112. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/io_files/bytes_helper_functions.py +0 -0
  113. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/io_files/check_file.py +0 -0
  114. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/io_files/file_handler.py +0 -0
  115. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/io_files/mod_handler.py +0 -0
  116. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/io_files/translation_text_handler.py +0 -0
  117. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/libs/DirectXTex.dll +0 -0
  118. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/libs/__init__.py +0 -0
  119. {reversebox-0.35.3 → reversebox-0.35.6}/reversebox/libs/refpack.dll +0 -0
  120. {reversebox-0.35.3 → reversebox-0.35.6}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ReverseBox
3
- Version: 0.35.3
3
+ Version: 0.35.6
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
@@ -161,7 +161,7 @@ or software researchers).
161
161
  - Decode RGBA4444 ✔️
162
162
  - Decode ABGR4444 ✔️
163
163
  - Decode XBGR4444 ✔️
164
- - Decode RGBX4444 ✔️
164
+ - Decode/Encode RGBX4444 ✔️
165
165
  - Decode BGRA4444 ✔️
166
166
  - Decode BGRX4444 ✔️
167
167
  - Decode XRGB1555 ✔️
@@ -124,7 +124,7 @@ or software researchers).
124
124
  - Decode RGBA4444 ✔️
125
125
  - Decode ABGR4444 ✔️
126
126
  - Decode XBGR4444 ✔️
127
- - Decode RGBX4444 ✔️
127
+ - Decode/Encode RGBX4444 ✔️
128
128
  - Decode BGRA4444 ✔️
129
129
  - Decode BGRX4444 ✔️
130
130
  - Decode XRGB1555 ✔️
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ReverseBox
3
- Version: 0.35.3
3
+ Version: 0.35.6
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
@@ -161,7 +161,7 @@ or software researchers).
161
161
  - Decode RGBA4444 ✔️
162
162
  - Decode ABGR4444 ✔️
163
163
  - Decode XBGR4444 ✔️
164
- - Decode RGBX4444 ✔️
164
+ - Decode/Encode RGBX4444 ✔️
165
165
  - Decode BGRA4444 ✔️
166
166
  - Decode BGRX4444 ✔️
167
167
  - Decode XRGB1555 ✔️
@@ -39,7 +39,7 @@ def fill_data_with_padding(input_data: bytes, padding_length: int) -> bytes:
39
39
  # e.g. "aaa" and 5 --> "aaa\x00\x00"
40
40
  def fill_data_with_padding_to_desired_length(
41
41
  input_data: bytes, desired_padding_length: int
42
- ):
42
+ ) -> bytes:
43
43
  if len(input_data) > desired_padding_length:
44
44
  raise Exception("Data too big or desired padding too low!")
45
45
  elif len(input_data) == desired_padding_length:
@@ -146,6 +146,25 @@ class ImageEncoder:
146
146
  p[1] = (bgra4444 >> 8) & 0xFF
147
147
  return p
148
148
 
149
+ def _encode_rgbx4444_pixel(self, pixel_int: int) -> bytearray:
150
+ p = bytearray(2)
151
+
152
+ r = pixel_int & 0xFF
153
+ g = (pixel_int >> 8) & 0xFF
154
+ b = (pixel_int >> 16) & 0xFF
155
+ x = 0xFF
156
+
157
+ r4 = (r >> 4) & 0x0F
158
+ g4 = (g >> 4) & 0x0F
159
+ b4 = (b >> 4) & 0x0F
160
+ x4 = (x >> 4) & 0x0F
161
+
162
+ rgbx4444 = (x4 << 12) | (b4 << 8) | (g4 << 4) | r4
163
+
164
+ p[0] = rgbx4444 & 0xFF
165
+ p[1] = (rgbx4444 >> 8) & 0xFF
166
+ return p
167
+
149
168
  def _encode_rgba5551_pixel(self, pixel_int: int) -> bytearray:
150
169
  p = bytearray(2)
151
170
 
@@ -236,6 +255,7 @@ class ImageEncoder:
236
255
  ImageFormats.BGR565: (_encode_bgr565_pixel, 16, get_uint16, set_uint16),
237
256
  ImageFormats.ABGR4444: (_encode_abgr4444_pixel, 16, get_uint16, set_uint16),
238
257
  ImageFormats.BGRA4444: (_encode_bgra4444_pixel, 16, get_uint16, set_uint16),
258
+ ImageFormats.RGBX4444: (_encode_rgbx4444_pixel, 16, get_uint16, set_uint16),
239
259
  ImageFormats.RGBA5551: (_encode_rgba5551_pixel, 16, get_uint16, set_uint16),
240
260
  ImageFormats.BGRA5551: (_encode_bgra5551_pixel, 16, get_uint16, set_uint16),
241
261
  ImageFormats.RGBX5551: (_encode_rgbx5551_pixel, 16, get_uint16, set_uint16),
@@ -324,7 +344,9 @@ class ImageEncoder:
324
344
 
325
345
  # colour quantization and dithering
326
346
  pillow_img: Image = PillowWrapper().get_pillow_image_from_rgba8888_data(image_data, img_width, img_height)
327
- pillow_img = pillow_img.quantize(colors=max_colors_count, method=2).convert("RGBA", dither=Image.Dither.FLOYDSTEINBERG)
347
+ unique_colors_count: int = len(set(pillow_img.getdata()))
348
+ if unique_colors_count > max_colors_count:
349
+ pillow_img = pillow_img.quantize(colors=max_colors_count, method=2).convert("RGBA", dither=Image.Dither.FLOYDSTEINBERG)
328
350
  image_data = pillow_img.tobytes()
329
351
 
330
352
  # encode to intermediate image (e.g. RGBA8888 -> RGB565)
@@ -8,7 +8,7 @@ from typing import Final
8
8
 
9
9
  import setuptools
10
10
 
11
- VERSION_NUM: Final[str] = "0.35.3"
11
+ VERSION_NUM: Final[str] = "0.35.6"
12
12
 
13
13
 
14
14
  def get_long_description() -> str:
File without changes
File without changes