Add extract support for DMA-8.2 & DMA-8.3 archives.
This commit is contained in:
parent
74f26d5dfd
commit
1ccda7a6df
1 changed files with 10 additions and 4 deletions
14
rpatool
14
rpatool
|
@ -69,6 +69,8 @@ class RenPyArchive:
|
|||
RPA2_MAGIC = 'RPA-2.0 '
|
||||
RPA3_MAGIC = 'RPA-3.0 '
|
||||
RPA3_2_MAGIC = 'RPA-3.2 '
|
||||
DMA8_2_MAGIC = 'DMA-8.2 '
|
||||
DMA8_3_MAGIC = 'DMA-8.3 '
|
||||
|
||||
# For backward compatibility, otherwise Python3-packed archives won't be read by Python2
|
||||
PICKLE_PROTOCOL = 2
|
||||
|
@ -92,7 +94,11 @@ class RenPyArchive:
|
|||
self.handle.seek(0)
|
||||
magic = self.handle.readline().decode('utf-8')
|
||||
|
||||
if magic.startswith(self.RPA3_2_MAGIC):
|
||||
if magic.startswith(self.DMA8_3_MAGIC):
|
||||
return 'dma-8.3'
|
||||
elif magic.startswith(self.DMA8_2_MAGIC):
|
||||
return 'dma-8.2'
|
||||
elif magic.startswith(self.RPA3_2_MAGIC):
|
||||
return 3.2
|
||||
elif magic.startswith(self.RPA3_MAGIC):
|
||||
return 3
|
||||
|
@ -108,12 +114,12 @@ class RenPyArchive:
|
|||
self.handle.seek(0)
|
||||
indexes = None
|
||||
|
||||
if self.version in [2, 3, 3.2]:
|
||||
if self.version in [2, 3, 3.2, 'dma-8.2', 'dma-8.3']:
|
||||
# Fetch metadata.
|
||||
metadata = self.handle.readline()
|
||||
vals = metadata.split()
|
||||
offset = int(vals[1], 16)
|
||||
if self.version == 3:
|
||||
if self.version in [3, 'dma-8.2', 'dma-8.3']:
|
||||
self.key = 0
|
||||
for subkey in vals[2:]:
|
||||
self.key ^= int(subkey, 16)
|
||||
|
@ -128,7 +134,7 @@ class RenPyArchive:
|
|||
indexes = _unpickle(contents)
|
||||
|
||||
# Deobfuscate indexes.
|
||||
if self.version in [3, 3.2]:
|
||||
if self.version in [3, 3.2, 'dma-8.2', 'dma-8.3']:
|
||||
obfuscated_indexes = indexes
|
||||
indexes = {}
|
||||
for i in obfuscated_indexes.keys():
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue