From 1ccda7a6dfa0617d3b4f2135a6def814b0ae17c4 Mon Sep 17 00:00:00 2001 From: Bas Couwenberg Date: Fri, 15 Nov 2024 13:40:17 +0100 Subject: [PATCH] Add extract support for DMA-8.2 & DMA-8.3 archives. --- rpatool | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) 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():