#Xbox 360: The Gunstringer

162 messages ยท Page 1 of 1 (latest)

flat crypt
#

Been trying to figure out how to rip models from The Gunstringer. From what I can see, levels and everything in them are .xpr files. However, I have no Idea how to open them up and look inside them at all. Any help here?

flat crypt
#

Actually, @ruby ember do you think you can figure this out?

flat crypt
#

Tried messing with the xbox sdk and found an unbundler. Doesn't seem to do anything though

ruby ember
#

ive found two programs now that extract this "XPR2" file from what you posted earlier. however i get stuck here, nothing ive found can extract from this thing

flat crypt
#

I tried XPR Express already, got nothing from it.

#

Yeah if you're wondering, this is what I was trying to figure out before the .pod files

#

I would say try the xbox 360 SDK software, you may get a lead there.

ruby ember
#

i posted it without clicking the extract button thinking it would work ๐Ÿคฆโ€โ™‚๏ธ

#

if i had a nickel for every time file extraction was solved by trimming fat in a hex editor, i'd have two nickels. which isnt a lot but it's weird it happened twice, right

#

step 2: enter a hex editor and cut so that there is a 12 bit "main" header and a bunch of 16 bit "file" headers. for this xpr2 there was a bunch of 0 data between both so i couldn't extract the files

#

^ is the file i cut, i cut everything between highlighted and non-highlighted (edit: highlighted 3 more 0s at the end than i was supposed to)

flat crypt
#

Ok I'm currently out right now so I have to wait till I get back to test this out.

#

Ok but since you managed to extract the files, can you tell me what's in there? Need to make sure I'm actually looking at the right files lol.

ruby ember
#

right now im just peering at the lua scripting they left in there (the comments are intact)

#

looks like there is also some textures

#

a bunch of .ib "ibuf" files. very small

#

sound archive in .xwb format

#

a bunch of corresponding .vb "vbuf" files which im assuming is vertex buffer

#

terrain in a .gr2 but doesnt have header magic so idk what it really is

#

and then lightmaps + level data in a database

flat crypt
#

Interesting, guessing the models will probably be in the bigger files or something else.

#

Once I get back I'll look some of the others and see if I can find any bigger files that might contain the models.

#

After I'm done with this, this would've been the second game that I have ripped models from that literally no one else has. With that other game being Harmoknight on 3DS

ruby ember
#

there's no tcrf article on this game but there's a bunch of unused commands in these files. probably some interesting unused stuff as well

flat crypt
ruby ember
flat crypt
#

Ok I'm kinda stupid I never hex edited anything before so you'll have to guide me on this

#

Ok got this open, what do I do exactly?

ruby ember
#

that's a compressed xpr

#

you need to use the quickbms script above to convert it to xpr2

flat crypt
#

ok lemme do that real quick

#

ok done it

ruby ember
#

ok so from here you want to select all the 00 from 0C on the first row all the way until the ...@TX2D

#

and then delete that data

flat crypt
#

So like this?

ruby ember
#

select only 4 zeroes on the first row

#

and unselect the 00 00 02

flat crypt
#

This good?

ruby ember
#

yep, that looks right

#

now it should work with the XPR2 exe

#

you'll have to use the command prompt to run the executable

flat crypt
#

Trying to figure this out

#

Ok so do I go into the folder it's in, right click and then open in terminal?

ruby ember
#

if you can open the folder in terminal directly then sure

#

ive never seen an option for that >.>

#

what i normally do is open a new command prompt

#

then type "cd "

#

and drag from this part of the explorer into the terminal so i can get to the folder i need to be in

flat crypt
#

Ok it this meant to be the command?

ruby ember
#

yep

flat crypt
#

ok got it

#

looking through it they are all 1kb files

ruby ember
#

now you mention it it is strange that the archive from earlier is much larger than the output from the program

flat crypt
#

yeah that don't seem right

ruby ember
#

but when i look at the strings referring to files in the hex editor it looks like everything was extracted?

#

strange

flat crypt
#

yeah this is definitely wrong, guess our job ain't done yet lol

ruby ember
#

how did you get the .pod of the main character before?

#

was that in a separate archive?

flat crypt
#

that comes from another game entirely

ruby ember
#

o

flat crypt
#

Like I said in that chat it was a spinoff of the Gunstringer that was on the windows 8 store

#

so yeah this is another beast entirely

#

I would have used Ninja Ripper and emulated it to get the models I wanted, but I cannot get past the first screen due to no kinect.

#

I feel like it has to do with the XPR2 program getting something wrong during the process

ruby ember
#

yea there's definetly model data in there the program isn't getting

flat crypt
#

Ok At least we're on the right track that the models are hiding in these

#

Ok I think I found something. In resident.xpr Is the gunstringer's model (But textures are still the 1kb)

#

Ok I sound this software but seems it doesn't wanna open.

ruby ember
#

according to this post on xentax granny engine models can have custom variations on the base format

#

hopefully thats not the reason its not loading but

flat crypt
#

even then we still need the textures

flat crypt
flat crypt
#

ok, anything new you found?

ruby ember
#

no, im pretty much stuck

#

im leaning towards the fact that the xbr2 exe works properly since the lua scripting wasn't cut off/corrupted

#

this is reinforced by the fact that the bone name strings i found earlier were in a gr2 found in a models folder

#

however, im thinking that the gr2's are compressed in some way and i have no idea how

#

and similar thinking for the textures

#

it doesn't help that the cto of twisted pixel said this ahead of this game's release, making the compression issue more confusing

flat crypt
#

oh damn

ruby ember
#

on the other hand failing a crc check should mean that something is wrong with the file itself? i dont see why a file made by granny engine can't be read by granny engine

flat crypt
#

this gonna be a doozy lol

flat crypt
#

Tried an XPR2 Noesis plugin, couldn't preview but it tried to export stuff, got this error trying it:
Output extension has set output file type to:
.png - PNG Image
Detected file type: XPR2 Textures
global.DBase
Traceback (most recent call last):
File "C:\Users\noesisv4466\plugins\python\fmt_XBOX_360_XPR.py", line 84, in XPRLoadRGBA
print("WARNING: Unhandled image format " + repr(imgFmt) + " - " + repr(imgWidth) + "x" + repr(imgHeight) + " - " + repr(len(data)))
NameError: global name 'imgFmt' is not defined

ruby ember
#

yeah im thinking that's because the images are probably also compressed by granny engine

flat crypt
#

I also have a feeling they also might be in the .gr2 files themselves

ruby ember
#

possibly

flat crypt
#

so I think it's best we figure out the .gr2 file problems first

#

I think the best thing you can do is go into different modding discord servers for games that use the engine and ask about it. That's what I did for Harmoknight and it worked for me.

#

currently asking in a battlefield modding discord (Specificallly for Bad Company 2) cus it uses Granny 3D

#

Ok I think I might actually be right with that the textures are in the .gr2s themselves. As I looked in the TX2D folder and saw no files that have to do with the Gunstringer model. I think the files in this folder are for UI Sprite textures.

ruby ember
#

that makes sense. that would explain why all the filesizes are so small

flat crypt
#

so yeah defo prioritise the .gr2s

#

Maybe get a .gr2 file from another game and compare them in a hex editor?

ruby ember
#

i got some civ6 gr2s and at least they load in granny viewer. textures are separate in that game

#

but i didn't see any major similarities

flat crypt
#

hm...

#

Idk then, Not really a programmer so I can't really figure out anything alone lol

ruby ember
#

i think the last thing i'd be willing to try is to try to see what the game does to load these models

#

maybe there's like a folder in the game files related to granny engine or compression?

flat crypt
#

lemme check hold on

#

looked through, nothing comes up

ruby ember
#

welp

#

that was my last idea, im just as stuck as you are ๐Ÿ˜ญ

flat crypt
#

damn

#

this close to the finish line too

ruby ember
#

on the bright side im pretty sure the sound can be extracted easily... its just the models and textures that are stuck

flat crypt
#

yeah I managed sounds easily

#

I would say try Model Researcher?

#

(God I wish I could just use Ninja Ripper or something)

ruby ember
#

i dont have much experience with 3d models represented with binary thoug

flat crypt
#

but yeah update me if you anything of note

flat crypt
#

I got a bit more info I think

ruby ember
#

the noesis plugin i did find had a list of hex magic that it used to id the gr2 (and subsequently extract it) but it didn't match the files from the game. i didn't think of version mismatch though. it might be, but the game released in 2011 and the granny viewer i have has the last year in the copyright as 2010 which would probably be the version they used

#

also the xentax forums are dead; i think its read only now ๐Ÿ˜”

flat crypt
ruby ember
#

wait really

#

i thought they were taking down the forums and everything

#

ah i see you already made a post

flat crypt
#

Yeah nothing with a version in 2010 sadly

flat crypt
#

Got a reply

#

Learn't that granny2.dll is something used by pc games that use the engine. Obviously with this being an Xbox 360 game, I have no way to know that.

flat crypt
#

Ok looked at a tool for BG3 modding stuff that uses granny files. got this error when trying to import

#

So maybe it has to do with it missing it's signatures?

#

so I have an idea that could possibly exist.
Maybe the signature got lost during the extraction, so what if:
You look through the XPR2 file and maybe you can find that model's signature, then we can insert it into the model file?

#

Here's the unpacked file

#

and here's the packed one just in case

flat crypt
#

Just PMd a guy on xentax who made a .gr2 plugin for Noesis for assistance (Plugin doesn't work with the files btw).

#

Waiting for a response back

flat crypt
#

Quickly just typing something here so the thread don't get auto deleted.

flat crypt
#

got another chance at this

flat crypt
flat crypt
#

Yeah coming back to this yeah. The file header seems to be missing from all the model files

#

so is there a way just to salvage the mesh and textures of the files?

#

@ruby ember

#

Some extra hex info I found

#

Just tried taking the header info of another working example .gr2 file and putting it into where it's meant to go. Didn't work sadly.

ruby ember
#

im thinking they either prepend the header when the game loads the file or something similar. but im not sure where that info would be stored. preferably not in the game code, so hopefully its lying around somewhere in the files

flat crypt
#

It COULD be in the .xpr file they came in. It might have got lost in the extraction.

flat crypt
ruby ember
#

ok so this is the extent of what i have found. im posting mostly so if you can find someone more experienced they have an idea of what we found so far

  • while there is no magic the headers of the files contain offsets to different sections of the file. but im not sure what the sections represent. i thought that they might be a bunch of the gr2 assets concatenated but nothing loads in the viewer
  • found a bunch of magic strings in this python script; but none of them work when pasted at the beginning of the file
  • as for the "lost in extraction" idea the xpr2 cutter seems to do the job right afaict, reinforced by the fact that the lua files in the USER folder are completely fine.

at this point it would unironically be easier to remake the game's assets by hand rather than try to rip it from the engine. else one would probably have to write a custom parser for these files (most granny engine games seem to require this based on what ive been seeing) and not only are they weirdly complex but im mostly blindly pasting stuff in the hex editor ๐Ÿ˜”

flat crypt
#

Wanna try reviving this

flat crypt
#

@raven yew saw you wanted to attempt to solve this.

raven yew
#

I had a look but...man, I can't really make much sense of the mesh format

flat crypt
flat crypt
flat crypt
#

So. We may have SOME form of way of doing it:
There was a Sonic Unleashed PC recompilation port released extremely recently. But the main thing relevant to this is that the recompilation tools they've made for it are open source. Meaning other 360 games could be given the same treatment. https://x.com/HoonGoons/status/1895997054994038953?t=psiSRJ7UplKCEswWvH26zA&s=19

that sonic unleashed recompiled shit is fucking crazy, and the tools they made for it are all open source meaning other x360 games can have the same treatment. actual game changer and i hope to god the games i care about also get the same treatment in the end ๐Ÿ™๐Ÿคž