Harry Potter and the Order of the Phoenix ".rpk"
- 
				Puterboy1
- Posts: 382
- Joined: Wed Sep 12, 2018 2:22 am
Harry Potter and the Order of the Phoenix ".rpk"
Who can take a look at these?
			
			
									
						
										
						- 
				GHFear
- Posts: 290
- Joined: Fri Mar 30, 2018 2:48 am
Re: Harry Potter and the Order of the Phoenix ".rpk"
Put the rpk files in the folder with the "EXTRACT, quickbms and scripts files" and click EXTRACT and it will auto extract all rpk files.

It might end with an error, but you get all the files.
			
			
									
						
										
						
It might end with an error, but you get all the files.
- 
				Puterboy1
- Posts: 382
- Joined: Wed Sep 12, 2018 2:22 am
Re: Harry Potter and the Order of the Phoenix ".rpk"
GHFear wrote:Put the rpk files in the folder with the "EXTRACT, quickbms and scripts files" and click EXTRACT and it will auto extract all rpk files.
It might end with an error, but you get all the files.
Good, now if I can find a way of extracting the .sdt files from this game with proper file names.
- 
				AlphaTwentyThree
- Posts: 909
- Joined: Sat Aug 09, 2014 11:21 am
Re: Harry Potter and the Order of the Phoenix ".rpk"
I just wrote a better-working extractor for those files. Updates:
- decompresses rpk into memory and extracts it in one step
- correct names
- no error termination
			
			
									
						
										
						- decompresses rpk into memory and extracts it in one step
- correct names
- no error termination
Code: Select all
# Harry Potter games (2008 and newer)
# *.rpk/*.str.* extractor
# (c) 2022-02-07 by AlphaTwentyThree of Zenhax
# script for QuickBMS http://quickbms.aluigi.org
getDstring TEST 4
if TEST == "MRTS" || TEST == "STRM"
   get SIZE asize
   putVarChr MEMORY_FILE SIZE 0
   log MEMORY_FILE 0 0
   append
   log MEMORY_FILE 0 SIZE
   append
else
   comtype dk2
   endian big
   get ZSIZE asize
   goto 2
   get SIZE long
   putVarChr MEMORY_FILE SIZE 0
   log MEMORY_FILE 0 0
   append
   clog MEMORY_FILE 0 ZSIZE SIZE
   append
   endian little
endif
goto 0 MEMORY_FILE
getDstring TEST 4 MEMORY_FILE
get FSIZE long MEMORY_FILE
getDstring TEST 4 MEMORY_FILE
if TEST == "AGRP"
   endian big
endif
goto 8 MEMORY_FILE
callfunction getFields 1
startfunction getFields
   getDstring IDENT 4 MEMORY_FILE # PRGA
   if IDENT != "PRGA" && IDENT != "AGRP"
      cleanexit
   endif
   get PRGA_SIZE long MEMORY_FILE
   getDstring DUMMY 4 MEMORY_FILE # RDHG
   get DUMMY long MEMORY_FILE # 14
   get DUMMY long MEMORY_FILE # 10
   get NAMEPOS long MEMORY_FILE
   get DUMMY long MEMORY_FILE # 10
   xmath FILES "(PRGA_SIZE - 0x1c) / 0x28"
   for i = 0 < FILES
      getDstring DUMMY 0x18 MEMORY_FILE
      get OFFSET long MEMORY_FILE
      get SIZE long MEMORY_FILE
      get NAMEPOS long MEMORY_FILE
      get ZERO long MEMORY_FILE
      savepos MYOFF MEMORY_FILE
      goto NAMEPOS MEMORY_FILE
      get NAME string MEMORY_FILE
      goto MYOFF MEMORY_FILE
      log NAME OFFSET SIZE MEMORY_FILE
   next i
   callfunction getFields 1
endfunction