Skip to content
View in the app

A better way to browse. Learn more.

ResHax

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Help us keep the site running.

FEAR / FEAR2 archives convert arch00 (ltar) to arch00(ptar)

Featured Replies

  • Author
  • Localization

muuranman, posted Wed Dec 23, 2015 10:31 pm (10538)


how i can convert a file arch00 (lTAR) or arch00 (LTAX) to Arch00 (PTAR) any help please

this is a script for extraction and riemporting by Luigi Auriemma

[color=#80BF00][color=#80BF00]comtype unzip_dynamic
getdstring SIGN 4

if SIGN == "LTAR"
elif SIGN == "RATL"
set SIGN string "LTAR"
endian big

elif SIGN == "LTAX"
comtype xmemdecompress
elif SIGN == "XATL"
comtype xmemdecompress
set SIGN string "LTAX"
endian big

elif SIGN == "PTAR"
elif SIGN == "RATP"
set SIGN string "PTAR"
endian big

elif SIGN == "PSCA"
elif SIGN == "ACSP"
set SIGN string "PSCA"
endian big

else
cleanexit
endif
get VERSION long

# it's possible to make the check on the version or using this solution
savepos TMP
get FULL_SIZE asize
get DUMMY1 long
get DUMMY2 long
math AUTOGUESS = 0
if DUMMY1 u> FULL_SIZE
math AUTOGUESS = 1
endif
if DUMMY2 u> FULL_SIZE
math AUTOGUESS = 1
endif
goto TMP

if SIGN == "PTAR"
callfunction SET_PTAR_ENCRYPTION 1
endif

if SIGN == "PSCA"
get DUMMY long
get FOLDERS long
get NAMESSZ long
get DUMMY long
get FILES long
get DUMMY long
getdstring HASH 16

elif AUTOGUESS == 0
get NAMESSZ long
get FOLDERS long
get FILES long
get DUMMY long # 1
get DUMMY long # 0
get DUMMY long # 0
getdstring HASH 16

else
getdstring HASH 16
get DUMMY long # 1
get DUMMY long # 0
get DUMMY long # 0

# PTAR compatible
savepos PTAR_OFFSET
log MEMORY_FILE PTAR_OFFSET 4
get FILES long MEMORY_FILE
get DUMMY long

savepos PTAR_OFFSET
log MEMORY_FILE PTAR_OFFSET 4
get FOLDERS long MEMORY_FILE
get DUMMY long

savepos PTAR_OFFSET
log MEMORY_FILE PTAR_OFFSET 4
get NAMESSZ long MEMORY_FILE
get DUMMY long

math PTAR_OFFSET = 0
endif

savepos OFFSET
log MEMORY_FILE OFFSET NAMESSZ

math OFFSET = NAMESSZ
set FILESSZ long FILES
math FILESSZ *= 32
log MEMORY_FILE2 OFFSET FILESSZ

math OFFSET = FILESSZ
set FOLDERSSZ long FOLDERS
math FOLDERSSZ *= 16
log MEMORY_FILE3 OFFSET FOLDERSSZ

set FOLDER string ""
if SIGN == "PTAR"
# no handling of folders (different encryption?)
put 0 long MEMORY_FILE3 # NAME_OFF
put 0 long MEMORY_FILE3 # SUB_FOLDERS
put 0 long MEMORY_FILE3 # NEXT_FOLDERS
put FILES long MEMORY_FILE3 # NUM_FILES
goto 0 MEMORY_FILE3
encryption "" ""
get FOLDER basename
endif
callfunction EXTRACT

startfunction EXTRACT
savepos CURR_OFF MEMORY_FILE3
if CURR_OFF u>= FOLDERSSZ
cleanexit
endif
get NAME_OFF long MEMORY_FILE3
get SUB_FOLDERS long MEMORY_FILE3
get NEXT_FOLDERS long MEMORY_FILE3
get NUM_FILES long MEMORY_FILE3

goto NAME_OFF MEMORY_FILE
get NAME string MEMORY_FILE

# don't have the minimal idea if it's correct, it's an update of the old script
if AUTOGUESS == 0
string FOLDER = NAME
else
string FOLDER = NAME
endif
string FOLDER = /

for i = 0 < NUM_FILES
savepos CURR_OFF MEMORY_FILE2
if CURR_OFF u>= FILESSZ
cleanexit
endif
get NAME_OFF long MEMORY_FILE2
get OFFSET longlong MEMORY_FILE2
get ZSIZE longlong MEMORY_FILE2
get SIZE longlong MEMORY_FILE2
get ZIP long MEMORY_FILE2

goto NAME_OFF MEMORY_FILE
get NAME string MEMORY_FILE

if FOLDER != "CRC/" # they are not files
set FNAME string FOLDER
string FNAME = NAME
if ZIP == 0
log FNAME OFFSET SIZE
else
# compression 9, it's the same for both zlib and xmem
callfunction ZIP_DUMP 1 # 1 only for being faster
endif
endif
next i

for i = 0 < SUB_FOLDERS
callfunction EXTRACT
next i

set FOLDER string ""
for i = 0 < NEXT_FOLDERS
callfunction EXTRACT
next i
endfunction

startfunction SET_PTAR_ENCRYPTION
get TMP filename
string TMP u TMP
encryption md5 ""
string TMP E TMP
set MEMORY_FILE10 binary "\x55\x8b\x6c\x24\x08\x56\x57\x8b\xf8\x8d\x47\x0f\x33\xf6\x25\x0f\x00\x00\x80\x79\x05\x48\x83\xc8\xf0\x40\x39\x74\x24\x14\x8a\x94\x28\x00\x00\x00\x00\x88\x54\x24\x10\x0f\x8e\x91\x00\x00\x00\x2b\xf9\x53\x8a\x19\xb8\xab\xaa\xaa\xaa\xf7\xe6\xd1\xea\x8d\x04\x52\x8b\xd0\x8b\xc6\x2b\xc2\x83\xe8\x00\x74\x46\x83\xe8\x01\x74\x23\x83\xe8\x01\x75\x5a\x8d\x04\x0f\x25\x0f\x00\x00\x80\x79\x05\x48\x83\xc8\xf0\x40\x8a\x94\x28\x00\x00\x00\x00\x02\xd3\x02\x54\x24\x14\xeb\x3a\x8d\x04\x0f\x25\x0f\x00\x00\x80\x79\x05\x48\x83\xc8\xf0\x40\x8a\x94\x28\x00\x00\x00\x00\x32\xd3\x32\x54\x24\x14\xeb\x1c\x8d\x04\x0f\x25\x0f\x00\x00\x80\x79\x05\x48\x83\xc8\xf0\x40\x8a\xd3\x2a\x94\x28\x00\x00\x00\x00\x2a\x54\x24\x14\x88\x11\x46\x41\x3b\x74\x24\x18\x88\x5c\x24\x14\x0f\x8c\x73\xff\xff\xff\x5b\x5f\x5e\x5d\xc2\x08\x00"
encryption calldll "MEMORY_FILE10 0 watcom RET PTAR_OFFSET 0x22222222 0x33333333 #INPUT# QUICKBMS_HASH #INPUT_SIZE#"
endfunction

startfunction ZIP_DUMP
putvarchr MEMORY_FILE4 SIZE 0
log MEMORY_FILE4 0 0
math LIMIT = OFFSET
math LIMIT = ZSIZE
append
for OFFSET = OFFSET u< LIMIT
goto OFFSET
padding 4
math CHUNK_PACKED = 1
get CHUNK_ZSIZE long
if SIGN == "LTAR"
get CHUNK_SIZE long
savepos OFFSET
if CHUNK_ZSIZE == CHUNK_SIZE
math CHUNK_PACKED = 0
endif
else # "LTAX"
math CHUNK_SIZE = 0x10000
savepos OFFSET
if CHUNK_ZSIZE & 0x80000000 #0xf0000000
math CHUNK_PACKED = 0
math CHUNK_ZSIZE &= 0x0fffffff
endif
endif
if CHUNK_PACKED == 0
log MEMORY_FILE4 OFFSET CHUNK_ZSIZE
else
clog MEMORY_FILE4 OFFSET CHUNK_ZSIZE CHUNK_SIZE
endif
math OFFSET = CHUNK_ZSIZE
[color=#80FF00] #math OFFSET x= 4
next
append
get SIZE asize MEMORY_FILE4
log FNAME 0 SIZE MEMORY_FILE4
endfunction
  • Author
  • Localization

aluigi, posted Mon Dec 28, 2015 6:19 pm (10588)


Basically what you want is an arch0 ptar rebuilder.
I really doubt someone did or plans to do something similar first because the format is far from being simple and then because there are for sure many issues in doing a conversion like that.

Just curious, why you need something similar?
Guest
This topic is now closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.