(guides assume you're on Windows)
- download REtool
- download Ghost Trick filepath list
retool -h GTPD_PC_Release.list -x re_chunk_000.pak
primer:
- Ghost Trick runs on Capcom's RE Engine. REtool is an unofficial tool for dealing with the engine's file formats
- all resources are stored in a big file named
re_chunk_000.paklocated in the game's installation directory (which is accessible in steam through [right click] > Manage > Browse local files) - unlike a typical archive format like .zip/.rar/.7z, .pak files don't have filenames plainly stored in a way that REtool can reliably retrieve, so you also need to give it a list of names to read from so it knows what to name the things it's extracting. if you don't, you'll be stuck with a bunch of files without discernable names and your life will become harder
what to do:
- download RETool from the link above and extract
REtool.exeto the game's installation directory (the same folder asre_chunk_000.pak) - download the filepath list from the link above, into the same folder
- open a command prompt in that folder. there are a billion ways to do this but the easiest way is typing
cmdinto the address bar in file explorer - type
retool -h GTPD_PC_Release.list -x re_chunk_000.pakto extract everything. when it's done there'll be a folder namedre_chunk_000with all the stuff - you'll notice there are still hundreds of files without proper names (that look something like
15349567-2389623703.bin). this is normal and most of those files are unimportant/not unique to Ghost Trick, so you can ignore them. it happens because the list we passed to REtool has most but not all filenames, so anything missing will end up with a name like that
(everything here assumes you've just done all the things above)
- type
for /r %f in (*.tex.*) do retool -tex %f. this will recursively convert every .tex file to .dds, which is readable by image editing programs like paint.net
- they're just .wav files with an extra header in front. you have two options:
- if you have Python installed, run this script to convert to and from the format
- open up a hex editor (e.g. HxD) and remove the first 78 (0x4e) bytes, then change the file extension to .wav
- they're just .wmv files. change the file extension to .wmv and you're set
- except for
natives/stm/streaming/movie/igt_op_480x320_500kbps.mov.1, that's an .mp4
- download REMSG_Converter, and type
for /r %f in (*.msg.*) do remsg_converter %fto convert recursively to .csv, which you can open in excel or any text editor. add-m jsonto use json instead
- these are encrypted OpenType and TrueType font files. you can encrypt/decrypt them using REE.FontsCryptor from the REE.PAK.Tool repository (as of writing binaries aren't provided, you'll have to build it yourself)
- you can use the RE_RSZ 010 Editor template to read and edit these
(this is a non-exhaustive list)
- facepics/portraits:
natives/stm/charfiles/3d/08_face - backgrounds:
natives/stm/charfiles/2d/02_bg - character animations:
natives/stm/charfiles/2d/01_human - object animations:
natives/stm/charfiles/2d/03_gimmick - ui:
natives/stm/charfiles/3d/06_id
- bgm:
- remastered:
natives/stm/streaming/sound/bgm_new - original:
natives/stm/streaming/sound/bgm_resource
- remastered:
- sound effects:
natives/stm/streaming/sound/se_resource
- cutscenes:
natives/stm/streaming/gui/ui010500/tex - unused trailer:
natives/stm/streaming/movie
- it's all in
natives/stm/gamedesign/text
- they're in
natives/stm/gui/font/outlinefont
- Junkyard -
st01 - Pigeon Man's Office -
st02 - Prison -
st03 - The Chicken Kitchen -
st04 - Lady's Red Apartment -
st05 - Lynne's Apartment -
st06 - Kamila's Old House -
st07 - Office of the Troubled Man -
st09 - Drive to Chicken Kitchen -
st10 - Special Investigation Unit -
st11 - Temsik Park -
st13 - The Yonoa -
st14 - Prologue & Credits -
st15
- Sissel (human) -
cicel - Sissel (cat) -
neko(猫, lit. "cat") - Lynne -
linne - Ray -
kuneri - Nearsighted Jeego -
killera - Commander Sith -
sisu - Masked Muscleman -
migi(右, lit. "right") - "One Step Ahead" Tengo -
killerb - Kamila -
girl - Missile -
pome("pome[narian]") - Emma -
fujin(婦人, lit. "madam") - Amelie -
eimin(永眠, lit. "death") - Justice Minister -
daijin(大臣, lit. "minister") - Detective Mccaw -
keijig(刑事, lit. "detective g[reen]") - The Blue Detective -
keijib(刑事, lit. "detective b[lue]") - Odd Blue Doctor -
doc - Inspector Cabanela -
kaba - Detective Rindge -
caron - Guardian of the Park -
birakubari(ビラ配り, lit. "handing out leaflets") - Pigeon Man -
kanri(管理, lit. "management") - Chicken Kitchen Cook -
cock - Typical Cop -
keikan(警官, lit. "policeman") - Officer Bailey -
keibia(警備, lit. "guard a") - Rock Jailbird -
rock - Curry-loving Jailbird -
shujinb - Detective Jowd -
jodo - SIU Chief -
bucho(部長, lit. "department head") - Memry -
waitress - Dandy -
yukaib - Beauty -
yukaia - Chicken Kitchen Bartender -
barten("barten[der]") - Alma -
mama - Minor Crew Hand -
zako(雑魚, lit. "small fry")
- Fluffy Mod Manager - mod manager for RE Engine games (for modifying assets)
- REFramework - scripting and mod framework (for modifying game logic)




Thanks for the clarification, struct, and the updated script. Only did some shoddy guesses that didn't pay off with unk0 and others.
What's best practice now? Due to these unknown values that cannot be calculated, does one still have to copy these bytes from the original file when re-encoding a modified file? That's a bit cumbersome with batch operations. But that would be the way to go, right? So that nothing breaks, since there is no telling what they do.
It would be great if the script could also take an additional (optional) input (parameter) for the original .asrc audio file (path) with the encoding function (to fetch all unknown data it cannot generate: id, unk0, urate, markers [if any], unk1). That would make it easier for batch operations (rather than manually hex editing every file one by one). Is it possible to pull that off somehow? I will look into it myself eventually, though I'm bad with Python.
Also, did you test the new script? There's a new error that broke it when trying to handle any file now (not only with the problematic files).
Now I get the following error (line 199, in info):
Edit: Removed my temporary unclean fix for this after the script update (to make sure it's not getting used in case someone else's reading this).
I tested it with all the aforementioned problematic files, and now it's all OK. Hopefully no other errors now! Yay.