ReverseBox 0.23.2__tar.gz → 0.23.4__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.23.2 → reversebox-0.23.4}/PKG-INFO +2 -1
- {reversebox-0.23.2 → reversebox-0.23.4}/README.md +1 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/ReverseBox.egg-info/PKG-INFO +2 -1
- {reversebox-0.23.2 → reversebox-0.23.4}/ReverseBox.egg-info/SOURCES.txt +1 -0
- reversebox-0.23.4/reversebox/encryption/encryption_hatch_engine.py +69 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/io_files/file_handler.py +28 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/setup.py +1 -1
- {reversebox-0.23.2 → reversebox-0.23.4}/LICENSE +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/ReverseBox.egg-info/dependency_links.txt +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/ReverseBox.egg-info/requires.txt +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/ReverseBox.egg-info/top_level.txt +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/__init__.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/checksum/__init__.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/checksum/checksum_adler32.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/checksum/checksum_fletcher16.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/checksum/checksum_fletcher32.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/checksum/checksum_internet_ipv4_header.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/checksum/checksum_sum8.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/checksum/checksum_sum8_2s_complement.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/checksum/checksum_unix_sum_bsd16.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/checksum/checksum_unix_sum_sysv.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/checksum/checksum_xor8.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/common/__init__.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/common/common.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/common/logger.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/compression/__init__.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/compression/compression_jcalg1.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/compression/compression_lzo.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/compression/compression_mio0.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/compression/compression_refpack.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/compression/compression_zlib.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/crc/__init__.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/crc/crc16_arc.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/crc/crc16_ccitt.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/crc/crc16_dnp.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/crc/crc16_ea_crcf.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/crc/crc16_kermit.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/crc/crc16_modbus.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/crc/crc16_sick.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/crc/crc32_asobo.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/crc/crc32_iso_hdlc.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/crc/crc64_asobo.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/crc/crc64_go_iso.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/crc/crc8.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/crc/crc_unix_cksum.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/encryption/__init__.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/encryption/encryption_rot13.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/encryption/encryption_xor_basic.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/encryption/encryption_xor_basic_key_guesser.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/encryption/encryption_xor_gianas_return_zda.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/encryption/encryption_xor_retro64_eco.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/hash/__init__.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/hash/hash_ap.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/hash/hash_djb2.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/hash/hash_fnv.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/hash/hash_md2.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/hash/hash_md5.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/hash/hash_sdbm.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/hash/hash_sha1.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/hash/hash_sha2.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/__init__.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/common.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/compression/__init__.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/compression/compression_gst.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/compression/compression_lzw.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/compression/compression_packbits.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/compression/compression_rle_tga.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/compression/compression_zlib.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/decoders/__init__.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/decoders/bumpmap_decoder.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/decoders/compressed_decoder.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/decoders/gst_decoder.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/decoders/n64_decoder.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/decoders/yuv_decoder.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/encoders/__init__.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/encoders/gst_encoder.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/file_formats/__init__.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/file_formats/image_dds.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/image_decoder.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/image_encoder.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/image_formats.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/palettes/__init__.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/palettes/palette_random.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/pillow_wrapper.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/swizzling/__init__.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/swizzling/swizzle_3ds.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/swizzling/swizzle_bc.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/swizzling/swizzle_cmpr.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/swizzling/swizzle_gamecube.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/swizzling/swizzle_gst.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/swizzling/swizzle_morton.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/swizzling/swizzle_morton_ps4.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/swizzling/swizzle_ps2.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/swizzling/swizzle_psp.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/swizzling/swizzle_psvita_dreamcast.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/swizzling/swizzle_switch.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/swizzling/swizzle_x360.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/io_files/__init__.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/io_files/bytes_handler.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/io_files/bytes_helper_functions.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/io_files/check_file.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/io_files/mod_handler.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/io_files/translation_text_handler.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/libs/DirectXTex.dll +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/libs/__init__.py +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/libs/ea_swizzle.dll +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/reversebox/libs/refpack.dll +0 -0
- {reversebox-0.23.2 → reversebox-0.23.4}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ReverseBox
|
|
3
|
-
Version: 0.23.
|
|
3
|
+
Version: 0.23.4
|
|
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
|
|
@@ -109,6 +109,7 @@ or software researchers).
|
|
|
109
109
|
- ROT13 ✔️
|
|
110
110
|
- XOR Cipher (Basic) ✔️
|
|
111
111
|
- XOR Cipher (Basic) Guesser ✔️
|
|
112
|
+
- Hatch Engine Encryption ✔️
|
|
112
113
|
- (game-specific) XOR Cipher (Retro64 ECO) ✔️
|
|
113
114
|
- (game-specific) XOR Cipher (Giana’s Return ZDA) ✔️
|
|
114
115
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ReverseBox
|
|
3
|
-
Version: 0.23.
|
|
3
|
+
Version: 0.23.4
|
|
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
|
|
@@ -109,6 +109,7 @@ or software researchers).
|
|
|
109
109
|
- ROT13 ✔️
|
|
110
110
|
- XOR Cipher (Basic) ✔️
|
|
111
111
|
- XOR Cipher (Basic) Guesser ✔️
|
|
112
|
+
- Hatch Engine Encryption ✔️
|
|
112
113
|
- (game-specific) XOR Cipher (Retro64 ECO) ✔️
|
|
113
114
|
- (game-specific) XOR Cipher (Giana’s Return ZDA) ✔️
|
|
114
115
|
|
|
@@ -41,6 +41,7 @@ reversebox/crc/crc64_go_iso.py
|
|
|
41
41
|
reversebox/crc/crc8.py
|
|
42
42
|
reversebox/crc/crc_unix_cksum.py
|
|
43
43
|
reversebox/encryption/__init__.py
|
|
44
|
+
reversebox/encryption/encryption_hatch_engine.py
|
|
44
45
|
reversebox/encryption/encryption_rot13.py
|
|
45
46
|
reversebox/encryption/encryption_xor_basic.py
|
|
46
47
|
reversebox/encryption/encryption_xor_basic_key_guesser.py
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Copyright © 2025 Bartłomiej Duda
|
|
3
|
+
License: GPL-3.0 License
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from reversebox.crc.crc32_iso_hdlc import CRC32Handler
|
|
7
|
+
from reversebox.io_files.bytes_helper_functions import set_uint32, set_uint64
|
|
8
|
+
|
|
9
|
+
# Encryption algorithm used in Hatch Engine games
|
|
10
|
+
# e.g. Data.hatch archive from "Sonic Galactic" (Demo 2) game
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def decrypt_hatch_data(f_data: bytes, filename: str, f_size: int) -> bytes:
|
|
14
|
+
crc_handler = CRC32Handler()
|
|
15
|
+
keyA: bytearray = bytearray(16)
|
|
16
|
+
keyB: bytearray = bytearray(16)
|
|
17
|
+
decrypted_data: bytearray = bytearray(f_data)
|
|
18
|
+
|
|
19
|
+
filename_hash: int = crc_handler.calculate_crc32(filename.encode("ascii"))
|
|
20
|
+
encoded_filename_hash: bytes = set_uint32(filename_hash, "<")
|
|
21
|
+
encoded_size_value: bytes = set_uint64(f_size, "<")
|
|
22
|
+
size_hash: int = crc_handler.calculate_crc32(encoded_size_value)
|
|
23
|
+
encoded_size_hash: bytes = set_uint32(size_hash, "<")
|
|
24
|
+
|
|
25
|
+
for i in range(4):
|
|
26
|
+
keyA[i * 4 : (i + 1) * 4] = encoded_filename_hash
|
|
27
|
+
|
|
28
|
+
for i in range(4):
|
|
29
|
+
keyB[i * 4 : (i + 1) * 4] = encoded_size_hash
|
|
30
|
+
|
|
31
|
+
swap_nibbles: int = 0
|
|
32
|
+
index_keyA: int = 0
|
|
33
|
+
index_keyB: int = 8
|
|
34
|
+
|
|
35
|
+
xor_value = (f_size >> 2) & 0x7F
|
|
36
|
+
|
|
37
|
+
for x in range(f_size):
|
|
38
|
+
temp = decrypted_data[x]
|
|
39
|
+
|
|
40
|
+
temp ^= xor_value ^ keyB[index_keyB]
|
|
41
|
+
index_keyB += 1
|
|
42
|
+
|
|
43
|
+
if swap_nibbles:
|
|
44
|
+
temp = ((temp & 0x0F) << 4) | ((temp & 0xF0) >> 4)
|
|
45
|
+
|
|
46
|
+
temp ^= keyA[index_keyA]
|
|
47
|
+
index_keyA += 1
|
|
48
|
+
|
|
49
|
+
decrypted_data[x] = temp
|
|
50
|
+
|
|
51
|
+
if index_keyA <= 15:
|
|
52
|
+
if index_keyB > 12:
|
|
53
|
+
index_keyB = 0
|
|
54
|
+
swap_nibbles ^= 1
|
|
55
|
+
elif index_keyB <= 8:
|
|
56
|
+
index_keyA = 0
|
|
57
|
+
swap_nibbles ^= 1
|
|
58
|
+
else:
|
|
59
|
+
xor_value = (xor_value + 2) & 0x7F
|
|
60
|
+
if swap_nibbles:
|
|
61
|
+
swap_nibbles = 0
|
|
62
|
+
index_keyA = xor_value % 7
|
|
63
|
+
index_keyB = (xor_value % 12) + 2
|
|
64
|
+
else:
|
|
65
|
+
swap_nibbles = 1
|
|
66
|
+
index_keyA = (xor_value % 12) + 3
|
|
67
|
+
index_keyB = xor_value % 7
|
|
68
|
+
|
|
69
|
+
return decrypted_data
|
|
@@ -16,18 +16,22 @@ from reversebox.io_files.bytes_helper_functions import (
|
|
|
16
16
|
get_int16,
|
|
17
17
|
get_int24,
|
|
18
18
|
get_int32,
|
|
19
|
+
get_int64,
|
|
19
20
|
get_uint8,
|
|
20
21
|
get_uint16,
|
|
21
22
|
get_uint24,
|
|
22
23
|
get_uint32,
|
|
24
|
+
get_uint64,
|
|
23
25
|
set_int8,
|
|
24
26
|
set_int16,
|
|
25
27
|
set_int24,
|
|
26
28
|
set_int32,
|
|
29
|
+
set_int64,
|
|
27
30
|
set_uint8,
|
|
28
31
|
set_uint16,
|
|
29
32
|
set_uint24,
|
|
30
33
|
set_uint32,
|
|
34
|
+
set_uint64,
|
|
31
35
|
)
|
|
32
36
|
|
|
33
37
|
logger = get_logger(__name__)
|
|
@@ -218,6 +222,18 @@ class FileHandler:
|
|
|
218
222
|
data = self.file.read(4)
|
|
219
223
|
return get_uint32(data, self.endianess)
|
|
220
224
|
|
|
225
|
+
def read_int64(self) -> int:
|
|
226
|
+
self._check_file()
|
|
227
|
+
self._check_read_mode()
|
|
228
|
+
data = self.file.read(8)
|
|
229
|
+
return get_int64(data, self.endianess)
|
|
230
|
+
|
|
231
|
+
def read_uint64(self) -> int:
|
|
232
|
+
self._check_file()
|
|
233
|
+
self._check_read_mode()
|
|
234
|
+
data = self.file.read(8)
|
|
235
|
+
return get_uint64(data, self.endianess)
|
|
236
|
+
|
|
221
237
|
###
|
|
222
238
|
###
|
|
223
239
|
###
|
|
@@ -288,3 +304,15 @@ class FileHandler:
|
|
|
288
304
|
self._check_write_mode()
|
|
289
305
|
self.file.write(set_uint32(value, self.endianess))
|
|
290
306
|
return True
|
|
307
|
+
|
|
308
|
+
def write_int64(self, value: int) -> bool:
|
|
309
|
+
self._check_file()
|
|
310
|
+
self._check_write_mode()
|
|
311
|
+
self.file.write(set_int64(value, self.endianess))
|
|
312
|
+
return True
|
|
313
|
+
|
|
314
|
+
def write_uint64(self, value: int) -> bool:
|
|
315
|
+
self._check_file()
|
|
316
|
+
self._check_write_mode()
|
|
317
|
+
self.file.write(set_uint64(value, self.endianess))
|
|
318
|
+
return True
|
|
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.23.2 → reversebox-0.23.4}/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
|
{reversebox-0.23.2 → reversebox-0.23.4}/reversebox/encryption/encryption_xor_basic_key_guesser.py
RENAMED
|
File without changes
|
{reversebox-0.23.2 → reversebox-0.23.4}/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
|
{reversebox-0.23.2 → reversebox-0.23.4}/reversebox/image/compression/compression_packbits.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
|
{reversebox-0.23.2 → reversebox-0.23.4}/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
|