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.

Gunslinger Stratos Reloaded / Rise of immortals

Featured Replies

  • Author
  • Localization

chrrox, posted Wed Mar 25, 2015 1:58 am (4079)


It appears all games using this engine share the same name hashing generator.
i have made model importers for these games but I can not name files because the hash generation is unknown.
I have the full program here
https://www.myairbridge.com/en/?dl=1#!/ ... R46GK9JFEC (Gunslinger Stratos)
also if you want the steam game it is here.
http://store.steampowered.com/app/258160/ (Rise of incarnates)
I noticed while trying to debug this that if i set breakpoints on set file pointer after the 5th one it loads
GxArchivedTable000 at offset 0x7FFF0138 is the hash for it followed by the extension hash.

Code:
#Gunslinger Stratos Reloaded PC
#quickbms script by chrrox
endian big
open FDDE CSH 0
open FDDE DAT 1
goto 0x80
idstring "BILZ"
get SIZE long
get ZSIZE long
get COMTYPE long
clog MEMORY_FILE 0x90 ZSIZE SIZE
goto 8 MEMORY_FILE
get FILES long MEMORY_FILE
print "%FILES%"
savepos TMP MEMORY_FILE
for i = 0 < FILES
goto TMP MEMORY_FILE
get HASHOFF long MEMORY_FILE
get UNK00 long MEMORY_FILE
get FILEID long MEMORY_FILE
get UNK01 long MEMORY_FILE
savepos TMP MEMORY_FILE
goto HASHOFF MEMORY_FILE
get FILEHASH long MEMORY_FILE
get FLDRHASH long MEMORY_FILE
goto FILEID MEMORY_FILE
get FILENUM long MEMORY_FILE
putarray 0 i FILEHASH
putarray 1 i FLDRHASH
putarray 2 i FILENUM
next i

endian little
get MAGIC long 1
get FILES long 1
for i = 0 < FILES
get OFFSET long 1
get SIZE long 1
getarray FILEHASH 0 i
getarray FLDRHASH 1 i
getarray FILENUM  2 i
print "%FILEHASH|x% _ %FLDRHASH|x% _ %FILENUM|x%"
string NAME p= "X" FLDRHASH
if NAME == "FC397BB3"
set EXT "tex"
elif NAME == "FA61C1D7"
set EXT "mdl"
elif NAME == "B37FE199"
set EXT "m3r"
elif NAME == "ADD2E39F"
set EXT "csh"
elif NAME == "2283660F"
set EXT "unl"
elif NAME == "547560EF"
set EXT "dat"
elif NAME == "497AC17A"
set EXT "rtd"
elif NAME == "5E12DE0D"
set EXT "mdc"
elif NAME == "3A4305EC"
set EXT "mpk"
elif NAME == "0E1057D3"
set EXT "eff"
elif NAME == "0A04B496"
set EXT "mtsq"
elif NAME == "0B20C6BB"
set EXT "hkx"
elif NAME == "2E81A70D"
set EXT "rss"
elif NAME == "3CE77FBD"
set EXT "spk"
elif NAME == "4D6F1F2D"
set EXT "nut"
elif NAME == "7ED3312C"
set EXT "rsc"
elif NAME == "78EE6CEF"
set EXT "csd"
elif NAME == "466FDED3"
set EXT "xml"
elif NAME == "524A23F3"
set EXT "vsb"
elif NAME == "767EFC95"
set EXT "fpb"
elif NAME == "75573CF7"
set EXT "hka"
elif NAME == "217597F8"
set EXT "tvtx"
elif NAME == "A0B392DF"
set EXT "psb"
elif NAME == "C3D0AC23"
set EXT "cbxd"
elif NAME == "C3D0AD70"
set EXT "cbxd2"
elif NAME == "C3D0AE4E"
set EXT "cbxd3"
elif NAME == "DDE6C1B6"
set EXT "msqp"
else
set EXT NAME
endif
string FILE p= "X" FILEHASH
string NAME = \
string NAME = FILE
string NAME = .
string NAME = EXT
log MEMORY_FILE2 OFFSET SIZE 1
if SIZE > 0x80
endian big
goto 0x80 MEMORY_FILE2
getdstring TEST 4 MEMORY_FILE2
if TEST == "BILZ"
get SIZE long MEMORY_FILE2
get ZSIZE long MEMORY_FILE2
get COMTYPE long MEMORY_FILE2
if ZSIZE == SIZE
log NAME 0x90 ZSIZE MEMORY_FILE2
else
clog NAME 0x90 ZSIZE SIZE MEMORY_FILE2
endif
else
log NAME 0 SIZE MEMORY_FILE2
endif
endian little
else
log NAME 0 SIZE MEMORY_FILE2
endif
next i
  • Author
  • Localization

aluigi, posted Wed Mar 25, 2015 9:47 am (4088)


Just a tip about the assigning of extensions.
Considering how quickbms handles variables and strings at the same way ("var" and VAR are the same) probably it's suggested to specify extensions with the dot to avoid collisions with other variables.
So ".res" is better than "res", just in case there is a variable called RES and we don't notice it.
  • Author
  • Localization

raykingnihong, posted Fri Mar 27, 2015 8:18 am (4119)


Hi chrrox
My friend Thanks for your great work
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.