ReverseBox 0.26.0__tar.gz → 0.26.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.
- {reversebox-0.26.0 → reversebox-0.26.2}/PKG-INFO +6 -31
- {reversebox-0.26.0 → reversebox-0.26.2}/README.md +5 -30
- {reversebox-0.26.0 → reversebox-0.26.2}/ReverseBox.egg-info/PKG-INFO +6 -31
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/common.py +8 -4
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/image_decoder.py +40 -31
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/image_formats.py +2 -1
- {reversebox-0.26.0 → reversebox-0.26.2}/setup.py +1 -1
- {reversebox-0.26.0 → reversebox-0.26.2}/LICENSE +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/ReverseBox.egg-info/SOURCES.txt +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/ReverseBox.egg-info/dependency_links.txt +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/ReverseBox.egg-info/requires.txt +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/ReverseBox.egg-info/top_level.txt +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/__init__.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/checksum/__init__.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/checksum/checksum_adler32.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/checksum/checksum_cocos2d_pvr.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/checksum/checksum_fletcher16.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/checksum/checksum_fletcher32.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/checksum/checksum_internet_ipv4_header.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/checksum/checksum_sum8.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/checksum/checksum_sum8_2s_complement.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/checksum/checksum_unix_sum_bsd16.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/checksum/checksum_unix_sum_sysv.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/checksum/checksum_xor8.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/common/__init__.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/common/common.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/common/logger.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/common/numpy_helper_functions.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/compression/__init__.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/compression/compression_jcalg1.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/compression/compression_lzo.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/compression/compression_mio0.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/compression/compression_refpack.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/compression/compression_zlib.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/crc/__init__.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/crc/crc16_arc.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/crc/crc16_ccitt.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/crc/crc16_dnp.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/crc/crc16_ea_crcf.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/crc/crc16_kermit.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/crc/crc16_modbus.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/crc/crc16_sick.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/crc/crc32_asobo.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/crc/crc32_iso_hdlc.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/crc/crc64_asobo.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/crc/crc64_go_iso.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/crc/crc8.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/crc/crc_unix_cksum.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/encryption/__init__.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/encryption/encryption_hatch_engine.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/encryption/encryption_rot13.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/encryption/encryption_xor_basic.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/encryption/encryption_xor_basic_key_guesser.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/encryption/encryption_xor_gianas_return_zda.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/encryption/encryption_xor_retro64_eco.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/hash/__init__.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/hash/hash_additive.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/hash/hash_ap.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/hash/hash_djb2.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/hash/hash_fnv.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/hash/hash_jenkins_one_at_a_time.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/hash/hash_md2.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/hash/hash_md5.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/hash/hash_murmur3.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/hash/hash_sdbm.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/hash/hash_sha1.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/hash/hash_sha2.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/__init__.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/compression/__init__.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/compression/compression_gst.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/compression/compression_lzw.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/compression/compression_packbits.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/compression/compression_rle_executioners.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/compression/compression_rle_tga.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/compression/compression_zlib.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/decoders/__init__.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/decoders/bumpmap_decoder.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/decoders/compressed_decoder.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/decoders/gst_decoder.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/decoders/n64_decoder.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/decoders/yuv_decoder.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/encoders/__init__.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/encoders/gst_encoder.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/file_formats/__init__.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/file_formats/image_dds.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/image_encoder.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/palettes/__init__.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/palettes/palette_random.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/palettes/palette_vga.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/pillow_wrapper.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/swizzling/__init__.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/swizzling/swizzle_3ds.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/swizzling/swizzle_bc.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/swizzling/swizzle_cmpr.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/swizzling/swizzle_gamecube.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/swizzling/swizzle_gst.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/swizzling/swizzle_morton.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/swizzling/swizzle_morton_ps4.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/swizzling/swizzle_ps2.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/swizzling/swizzle_psp.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/swizzling/swizzle_psvita_dreamcast.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/swizzling/swizzle_switch.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/swizzling/swizzle_x360.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/io_files/__init__.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/io_files/bytes_handler.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/io_files/bytes_helper_functions.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/io_files/check_file.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/io_files/file_handler.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/io_files/mod_handler.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/io_files/translation_text_handler.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/libs/DirectXTex.dll +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/libs/__init__.py +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/libs/ea_swizzle.dll +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/reversebox/libs/refpack.dll +0 -0
- {reversebox-0.26.0 → reversebox-0.26.2}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ReverseBox
|
|
3
|
-
Version: 0.26.
|
|
3
|
+
Version: 0.26.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
|
|
@@ -169,37 +169,12 @@ or software researchers).
|
|
|
169
169
|
- Decode/Encode BGRA8888 ✔️
|
|
170
170
|
- Decode RGB48 ✔️
|
|
171
171
|
- Decode BGR48 ✔️
|
|
172
|
-
- Decode
|
|
173
|
-
- Decode
|
|
174
|
-
- Decode
|
|
175
|
-
- Decode
|
|
176
|
-
- Decode PAL4_RGB888 ✔️
|
|
177
|
-
- Decode PAL4_BGR888 ✔️
|
|
178
|
-
- Decode PAL4_IA8 ✔️
|
|
179
|
-
- Decode PAL4_RGB565 ✔️
|
|
180
|
-
- Decode PAL4_RGB5A3 ✔️
|
|
181
|
-
- Decode PAL4_RGBA8888 ✔️
|
|
182
|
-
- Decode PAL4_BGRA8888 ✔️
|
|
183
|
-
- Decode PAL4_RGB5A3 ✔️
|
|
184
|
-
- Decode PAL8_RGBX2222 ✔️
|
|
185
|
-
- Decode PAL8_RGBX5551 ✔️
|
|
186
|
-
- Decode PAL8_BGRX5551 ✔️
|
|
187
|
-
- Decode PAL8_XRGB1555 ✔️
|
|
188
|
-
- Decode PAL8_XBGR1555 ✔️
|
|
189
|
-
- Decode PAL8_RGB888 ✔️
|
|
190
|
-
- Decode PAL8_BGR888 ✔️
|
|
191
|
-
- Decode PAL8_RGBX6666 ✔️
|
|
192
|
-
- Decode PAL8_IA8 ✔️
|
|
193
|
-
- Decode PAL8_RGB565 ✔️
|
|
194
|
-
- Decode PAL8_RGB5A3 ✔️
|
|
195
|
-
- Decode PAL8_RGBA8888 ✔️
|
|
196
|
-
- Decode PAL8_BGRA8888 ✔️
|
|
197
|
-
- Decode PAL16_IA8 ✔️
|
|
198
|
-
- Decode PAL16_RGB565 ✔️
|
|
199
|
-
- Decode PAL16_RGB5A3 ✔️
|
|
200
|
-
- Decode PAL16_RGBA8888 ✔️
|
|
201
|
-
- Decode N64_RGB5A3 ✔️
|
|
172
|
+
- Decode PAL4 ✔️
|
|
173
|
+
- Decode PAL8 ✔️
|
|
174
|
+
- Decode PAL16 ✔️
|
|
175
|
+
- Decode PAL32 ✔️
|
|
202
176
|
- Decode PAL_I8A8 ✔️
|
|
177
|
+
- Decode N64_RGB5A3 ✔️
|
|
203
178
|
- Decode N64_I4 ✔️
|
|
204
179
|
- Decode N64_I8 ✔️
|
|
205
180
|
- Decode N64_IA4 ✔️
|
|
@@ -132,37 +132,12 @@ or software researchers).
|
|
|
132
132
|
- Decode/Encode BGRA8888 ✔️
|
|
133
133
|
- Decode RGB48 ✔️
|
|
134
134
|
- Decode BGR48 ✔️
|
|
135
|
-
- Decode
|
|
136
|
-
- Decode
|
|
137
|
-
- Decode
|
|
138
|
-
- Decode
|
|
139
|
-
- Decode PAL4_RGB888 ✔️
|
|
140
|
-
- Decode PAL4_BGR888 ✔️
|
|
141
|
-
- Decode PAL4_IA8 ✔️
|
|
142
|
-
- Decode PAL4_RGB565 ✔️
|
|
143
|
-
- Decode PAL4_RGB5A3 ✔️
|
|
144
|
-
- Decode PAL4_RGBA8888 ✔️
|
|
145
|
-
- Decode PAL4_BGRA8888 ✔️
|
|
146
|
-
- Decode PAL4_RGB5A3 ✔️
|
|
147
|
-
- Decode PAL8_RGBX2222 ✔️
|
|
148
|
-
- Decode PAL8_RGBX5551 ✔️
|
|
149
|
-
- Decode PAL8_BGRX5551 ✔️
|
|
150
|
-
- Decode PAL8_XRGB1555 ✔️
|
|
151
|
-
- Decode PAL8_XBGR1555 ✔️
|
|
152
|
-
- Decode PAL8_RGB888 ✔️
|
|
153
|
-
- Decode PAL8_BGR888 ✔️
|
|
154
|
-
- Decode PAL8_RGBX6666 ✔️
|
|
155
|
-
- Decode PAL8_IA8 ✔️
|
|
156
|
-
- Decode PAL8_RGB565 ✔️
|
|
157
|
-
- Decode PAL8_RGB5A3 ✔️
|
|
158
|
-
- Decode PAL8_RGBA8888 ✔️
|
|
159
|
-
- Decode PAL8_BGRA8888 ✔️
|
|
160
|
-
- Decode PAL16_IA8 ✔️
|
|
161
|
-
- Decode PAL16_RGB565 ✔️
|
|
162
|
-
- Decode PAL16_RGB5A3 ✔️
|
|
163
|
-
- Decode PAL16_RGBA8888 ✔️
|
|
164
|
-
- Decode N64_RGB5A3 ✔️
|
|
135
|
+
- Decode PAL4 ✔️
|
|
136
|
+
- Decode PAL8 ✔️
|
|
137
|
+
- Decode PAL16 ✔️
|
|
138
|
+
- Decode PAL32 ✔️
|
|
165
139
|
- Decode PAL_I8A8 ✔️
|
|
140
|
+
- Decode N64_RGB5A3 ✔️
|
|
166
141
|
- Decode N64_I4 ✔️
|
|
167
142
|
- Decode N64_I8 ✔️
|
|
168
143
|
- Decode N64_IA4 ✔️
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ReverseBox
|
|
3
|
-
Version: 0.26.
|
|
3
|
+
Version: 0.26.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
|
|
@@ -169,37 +169,12 @@ or software researchers).
|
|
|
169
169
|
- Decode/Encode BGRA8888 ✔️
|
|
170
170
|
- Decode RGB48 ✔️
|
|
171
171
|
- Decode BGR48 ✔️
|
|
172
|
-
- Decode
|
|
173
|
-
- Decode
|
|
174
|
-
- Decode
|
|
175
|
-
- Decode
|
|
176
|
-
- Decode PAL4_RGB888 ✔️
|
|
177
|
-
- Decode PAL4_BGR888 ✔️
|
|
178
|
-
- Decode PAL4_IA8 ✔️
|
|
179
|
-
- Decode PAL4_RGB565 ✔️
|
|
180
|
-
- Decode PAL4_RGB5A3 ✔️
|
|
181
|
-
- Decode PAL4_RGBA8888 ✔️
|
|
182
|
-
- Decode PAL4_BGRA8888 ✔️
|
|
183
|
-
- Decode PAL4_RGB5A3 ✔️
|
|
184
|
-
- Decode PAL8_RGBX2222 ✔️
|
|
185
|
-
- Decode PAL8_RGBX5551 ✔️
|
|
186
|
-
- Decode PAL8_BGRX5551 ✔️
|
|
187
|
-
- Decode PAL8_XRGB1555 ✔️
|
|
188
|
-
- Decode PAL8_XBGR1555 ✔️
|
|
189
|
-
- Decode PAL8_RGB888 ✔️
|
|
190
|
-
- Decode PAL8_BGR888 ✔️
|
|
191
|
-
- Decode PAL8_RGBX6666 ✔️
|
|
192
|
-
- Decode PAL8_IA8 ✔️
|
|
193
|
-
- Decode PAL8_RGB565 ✔️
|
|
194
|
-
- Decode PAL8_RGB5A3 ✔️
|
|
195
|
-
- Decode PAL8_RGBA8888 ✔️
|
|
196
|
-
- Decode PAL8_BGRA8888 ✔️
|
|
197
|
-
- Decode PAL16_IA8 ✔️
|
|
198
|
-
- Decode PAL16_RGB565 ✔️
|
|
199
|
-
- Decode PAL16_RGB5A3 ✔️
|
|
200
|
-
- Decode PAL16_RGBA8888 ✔️
|
|
201
|
-
- Decode N64_RGB5A3 ✔️
|
|
172
|
+
- Decode PAL4 ✔️
|
|
173
|
+
- Decode PAL8 ✔️
|
|
174
|
+
- Decode PAL16 ✔️
|
|
175
|
+
- Decode PAL32 ✔️
|
|
202
176
|
- Decode PAL_I8A8 ✔️
|
|
177
|
+
- Decode N64_RGB5A3 ✔️
|
|
203
178
|
- Decode N64_I4 ✔️
|
|
204
179
|
- Decode N64_I8 ✔️
|
|
205
180
|
- Decode N64_IA4 ✔️
|
|
@@ -83,7 +83,8 @@ def get_bpp_for_image_format(image_format: ImageFormats) -> int:
|
|
|
83
83
|
ImageFormats.N64_I4,
|
|
84
84
|
ImageFormats.BC1_DXT1,
|
|
85
85
|
ImageFormats.BC4_UNORM,
|
|
86
|
-
|
|
86
|
+
ImageFormats.PAL4,
|
|
87
|
+
):
|
|
87
88
|
return 4
|
|
88
89
|
elif image_format in (ImageFormats.RGBX2222,
|
|
89
90
|
ImageFormats.RGBA2222,
|
|
@@ -110,7 +111,8 @@ def get_bpp_for_image_format(image_format: ImageFormats) -> int:
|
|
|
110
111
|
ImageFormats.GST222,
|
|
111
112
|
ImageFormats.GST422,
|
|
112
113
|
ImageFormats.GST822,
|
|
113
|
-
|
|
114
|
+
ImageFormats.PAL8,
|
|
115
|
+
):
|
|
114
116
|
return 8
|
|
115
117
|
elif image_format in (ImageFormats.YUV410P, ):
|
|
116
118
|
return 9
|
|
@@ -152,8 +154,9 @@ def get_bpp_for_image_format(image_format: ImageFormats) -> int:
|
|
|
152
154
|
ImageFormats.YUV422_YUY2,
|
|
153
155
|
ImageFormats.YUV440P,
|
|
154
156
|
ImageFormats.BUMPMAP_SR,
|
|
155
|
-
|
|
156
|
-
|
|
157
|
+
ImageFormats.PAL16,
|
|
158
|
+
ImageFormats.PAL_I8A8,
|
|
159
|
+
):
|
|
157
160
|
return 16
|
|
158
161
|
elif image_format in (ImageFormats.YUVA420P, ):
|
|
159
162
|
return 20
|
|
@@ -175,6 +178,7 @@ def get_bpp_for_image_format(image_format: ImageFormats) -> int:
|
|
|
175
178
|
ImageFormats.B32,
|
|
176
179
|
ImageFormats.RGBM8888,
|
|
177
180
|
ImageFormats.AYUV,
|
|
181
|
+
ImageFormats.PAL32,
|
|
178
182
|
):
|
|
179
183
|
return 32
|
|
180
184
|
elif image_format in (ImageFormats.RGB48,
|
|
@@ -440,17 +440,17 @@ class ImageDecoder:
|
|
|
440
440
|
|
|
441
441
|
def _decode_i4_pixel(self, pixel_int: int) -> bytes:
|
|
442
442
|
p = bytearray(4)
|
|
443
|
-
p[0] = pixel_int * 0x11
|
|
444
|
-
p[1] = pixel_int * 0x11
|
|
445
|
-
p[2] = pixel_int * 0x11
|
|
443
|
+
p[0] = (pixel_int * 0x11) & 0xFF
|
|
444
|
+
p[1] = (pixel_int * 0x11) & 0xFF
|
|
445
|
+
p[2] = (pixel_int * 0x11) & 0xFF
|
|
446
446
|
p[3] = 0xFF
|
|
447
447
|
return p
|
|
448
448
|
|
|
449
449
|
def _decode_i8_pixel(self, pixel_int: int) -> bytes:
|
|
450
450
|
p = bytearray(4)
|
|
451
|
-
p[0] = pixel_int
|
|
452
|
-
p[1] = pixel_int
|
|
453
|
-
p[2] = pixel_int
|
|
451
|
+
p[0] = pixel_int & 0xFF
|
|
452
|
+
p[1] = pixel_int & 0xFF
|
|
453
|
+
p[2] = pixel_int & 0xFF
|
|
454
454
|
p[3] = 0xFF
|
|
455
455
|
return p
|
|
456
456
|
|
|
@@ -564,6 +564,7 @@ class ImageDecoder:
|
|
|
564
564
|
ImageFormats.PAL8: 8,
|
|
565
565
|
ImageFormats.PAL16: 16,
|
|
566
566
|
ImageFormats.PAL_I8A8: 16,
|
|
567
|
+
ImageFormats.PAL32: 32,
|
|
567
568
|
}
|
|
568
569
|
|
|
569
570
|
def _get_endianess_format(self, endianess: str) -> str:
|
|
@@ -579,7 +580,7 @@ class ImageDecoder:
|
|
|
579
580
|
decode_function, bits_per_pixel, image_entry_read_function = image_format
|
|
580
581
|
image_handler = BytesHandler(image_data)
|
|
581
582
|
texture_data = bytearray(img_width * img_height * 4)
|
|
582
|
-
read_offset = 0
|
|
583
|
+
read_offset: int = 0
|
|
583
584
|
image_endianess_format: str = self._get_endianess_format(image_endianess)
|
|
584
585
|
|
|
585
586
|
if bits_per_pixel == 4:
|
|
@@ -648,20 +649,39 @@ class ImageDecoder:
|
|
|
648
649
|
image_endianess_format: str = self._get_endianess_format(image_endianess)
|
|
649
650
|
palette_endianess_format: str = self._get_endianess_format(palette_endianess)
|
|
650
651
|
|
|
651
|
-
palette_data_ints = []
|
|
652
|
+
palette_data_ints: list = []
|
|
652
653
|
for i in range(len(palette_data) // palette_entry_size):
|
|
653
654
|
palette_entry = palette_handler.get_bytes(palette_offset, palette_entry_size)
|
|
654
655
|
palette_entry_int = palette_entry_read_function(palette_entry, palette_endianess_format)
|
|
655
656
|
palette_offset += palette_entry_size
|
|
656
657
|
palette_data_ints.append(palette_entry_int)
|
|
657
658
|
|
|
658
|
-
if img_bits_per_pixel ==
|
|
659
|
+
if img_bits_per_pixel == 4:
|
|
660
|
+
for i in range(0, img_width * img_height, 2):
|
|
661
|
+
palette_index: bytes = image_handler.get_bytes(image_offset, 1)
|
|
662
|
+
palette_index_int: int = struct.unpack(image_endianess_format + "B", palette_index or b'\x00')[0]
|
|
663
|
+
if image_endianess == "little":
|
|
664
|
+
texture_data[i * 4:(i + 1) * 4] = decode_function(self, palette_data_ints[palette_index_int & 0xf]) # noqa
|
|
665
|
+
texture_data[(i + 1) * 4:(i + 2) * 4] = decode_function(self, palette_data_ints[(palette_index_int >> 4) & 0xf]) # noqa
|
|
666
|
+
elif image_endianess == "big":
|
|
667
|
+
texture_data[i * 4:(i + 1) * 4] = decode_function(self, palette_data_ints[(palette_index_int >> 4) & 0xf]) # noqa
|
|
668
|
+
texture_data[(i + 1) * 4:(i + 2) * 4] =decode_function(self, palette_data_ints[palette_index_int & 0xf]) # noqa
|
|
669
|
+
else:
|
|
670
|
+
raise Exception(f"Endianess not supported! Endianess: {image_endianess}")
|
|
671
|
+
image_offset += 1
|
|
672
|
+
elif img_bits_per_pixel == 8:
|
|
673
|
+
for i in range(img_width * img_height):
|
|
674
|
+
palette_index: bytes = image_handler.get_bytes(image_offset, 1)
|
|
675
|
+
palette_index_int: int = struct.unpack(image_endianess_format + "B", palette_index or b'\x00')[0]
|
|
676
|
+
texture_data[i * 4:(i + 1) * 4] = decode_function(self, palette_data_ints[palette_index_int]) # noqa
|
|
677
|
+
image_offset += 1
|
|
678
|
+
elif img_bits_per_pixel == 16:
|
|
659
679
|
for i in range(img_width * img_height):
|
|
660
|
-
if
|
|
680
|
+
if image_format is ImageFormats.PAL_I8A8:
|
|
661
681
|
palette_index: bytes = image_handler.get_bytes(image_offset, 1)
|
|
662
682
|
alpha_value: bytes = image_handler.get_bytes(image_offset+1, 1)
|
|
663
|
-
palette_index_int: int = struct.unpack(image_endianess_format + "B", palette_index)[0]
|
|
664
|
-
alpha_value_int: int = struct.unpack(image_endianess_format + "B", alpha_value)[0]
|
|
683
|
+
palette_index_int: int = struct.unpack(image_endianess_format + "B", palette_index or b'\x00')[0]
|
|
684
|
+
alpha_value_int: int = struct.unpack(image_endianess_format + "B", alpha_value or b'\x00')[0]
|
|
665
685
|
output_bytes: bytes = decode_function(self, palette_data_ints[palette_index_int]) # noqa
|
|
666
686
|
|
|
667
687
|
decoded_bytes: bytearray = bytearray(4)
|
|
@@ -678,29 +698,18 @@ class ImageDecoder:
|
|
|
678
698
|
|
|
679
699
|
texture_data[i * 4:(i + 1) * 4] = decoded_bytes
|
|
680
700
|
else:
|
|
681
|
-
palette_index = image_handler.get_bytes(image_offset,
|
|
682
|
-
palette_index_int = struct.unpack(image_endianess_format + "
|
|
701
|
+
palette_index: bytes = image_handler.get_bytes(image_offset, 1) # PAL16 = I8P8
|
|
702
|
+
palette_index_int: int = struct.unpack(image_endianess_format + "B", palette_index or b'\x00')[0]
|
|
683
703
|
texture_data[i * 4:(i + 1) * 4] = decode_function(self, palette_data_ints[palette_index_int]) # noqa
|
|
684
704
|
image_offset += 2
|
|
685
|
-
elif img_bits_per_pixel ==
|
|
705
|
+
elif img_bits_per_pixel == 32:
|
|
686
706
|
for i in range(img_width * img_height):
|
|
687
|
-
palette_index = image_handler.get_bytes(image_offset, 1)
|
|
688
|
-
palette_index_int = struct.unpack(image_endianess_format + "B", palette_index)[0]
|
|
707
|
+
palette_index: bytes = image_handler.get_bytes(image_offset, 1) # PAL32 = I8P24
|
|
708
|
+
palette_index_int: int = struct.unpack(image_endianess_format + "B", palette_index or b'\x00')[0]
|
|
689
709
|
texture_data[i * 4:(i + 1) * 4] = decode_function(self, palette_data_ints[palette_index_int]) # noqa
|
|
690
|
-
image_offset +=
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
palette_index = image_handler.get_bytes(image_offset, 1)
|
|
694
|
-
palette_index_int = struct.unpack(image_endianess_format + "B", palette_index)[0]
|
|
695
|
-
if image_endianess == "little":
|
|
696
|
-
texture_data[i * 4:(i + 1) * 4] = decode_function(self, palette_data_ints[palette_index_int & 0xf]) # noqa
|
|
697
|
-
texture_data[(i + 1) * 4:(i + 2) * 4] = decode_function(self, palette_data_ints[(palette_index_int >> 4) & 0xf]) # noqa
|
|
698
|
-
elif image_endianess == "big":
|
|
699
|
-
texture_data[i * 4:(i + 1) * 4] = decode_function(self, palette_data_ints[(palette_index_int >> 4) & 0xf]) # noqa
|
|
700
|
-
texture_data[(i + 1) * 4:(i + 2) * 4] =decode_function(self, palette_data_ints[palette_index_int & 0xf]) # noqa
|
|
701
|
-
else:
|
|
702
|
-
raise Exception(f"Endianess not supported! Endianess: {image_endianess}")
|
|
703
|
-
image_offset += 1
|
|
710
|
+
image_offset += 4
|
|
711
|
+
else:
|
|
712
|
+
raise Exception(f"Bpp {img_bits_per_pixel} not supported!")
|
|
704
713
|
|
|
705
714
|
return texture_data
|
|
706
715
|
|
|
@@ -43,7 +43,7 @@ class ImageFormats(Enum):
|
|
|
43
43
|
BGRX4444 = "bgrx4444"
|
|
44
44
|
|
|
45
45
|
ARGB4444 = "argb4444"
|
|
46
|
-
XRGB4444 = "
|
|
46
|
+
XRGB4444 = "xrgb4444"
|
|
47
47
|
ABGR4444 = "abgr4444"
|
|
48
48
|
XBGR4444 = "xbgr4444"
|
|
49
49
|
|
|
@@ -87,6 +87,7 @@ class ImageFormats(Enum):
|
|
|
87
87
|
PAL8 = "pal8"
|
|
88
88
|
PAL16 = "pal16"
|
|
89
89
|
PAL_I8A8 = "pal_i8a8"
|
|
90
|
+
PAL32 = "pal32"
|
|
90
91
|
|
|
91
92
|
# N64 / WII formats
|
|
92
93
|
N64_RGB5A3 = "n64_rgb5a3" # COLOR+ALPHA, 16bpp
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reversebox-0.26.0 → reversebox-0.26.2}/reversebox/checksum/checksum_internet_ipv4_header.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reversebox-0.26.0 → reversebox-0.26.2}/reversebox/encryption/encryption_xor_basic_key_guesser.py
RENAMED
|
File without changes
|
{reversebox-0.26.0 → reversebox-0.26.2}/reversebox/encryption/encryption_xor_gianas_return_zda.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/compression/compression_packbits.py
RENAMED
|
File without changes
|
{reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/compression/compression_rle_executioners.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reversebox-0.26.0 → reversebox-0.26.2}/reversebox/image/swizzling/swizzle_psvita_dreamcast.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|