diff --git a/rpatool b/rpatool index 58b2f8d..bcd39d4 100755 --- a/rpatool +++ b/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():