Jump to content

Wolfenstein The New Order (* .pages virtualtextures files)


Go to solution Solved by terminid,

Recommended Posts

Posted (edited)

.pages file2.png.19fa4db89af99ceed2e894191adc7171.png

two images:
.pages and another is the location of all structures .pages files

but I am beginner BMS Scripting complex mode to extract to grab textures. help me please.

Edited by erickkingofarmy14
  • erickkingofarmy14 changed the title to Wolfenstein The New Order (* .pages virtualtextures files)
  • 6 months later...
Posted

Hello there! I can have a look and extract any model or texture you want from the game, just let me know which model or texture you want and I will get it for you.

Posted
12 hours ago, user3678 said:

Hello there! I can have a look and extract any model or texture you want from the game, just let me know which model or texture you want and I will get it for you.

the two pls!

  • 3 weeks later...
Posted (edited)

And by the way, while textures require serious reverse engineering like extracting separate pageblocks from chainblocks through quickbms .bms script and then decoding it compressed  JPeg XR to actual readable images (pure pain) the 3D models are very easy to obtain through graphical debugging, the best 2 softwares for graphical debbuging are #1 Nvdia Nsight Graphics and #2 RenderDoc those apps work by hooking/injecting into game and making I'll call it "3D screenshotsof the game" and than looking into API's drawcall functions and exporting it to excel's .csv format, the .csv format will become like any other format when you use Puxtrils python addon for blender! And by the way did you know that you can use the games .exe itself to extract .bimage files, I was mind blow at first you just need to use writeImage command in console (Ctrl+Shift+~) but it's very owerhelming cause it's not the actual main textures those are just roughness maps, ambient occlusion maps, images and decals.

Screenshot(1180).thumb.png.08653b8823cdbb7e3fb0bc4c7632b2e4.png

Edited by user3678
Posted
6 minutes ago, user3678 said:

And by the way, while textures require serious reverse engineering like extracting separate pageblocks from chainblocks through quickbms .bms script and then decoding it compressed  JPeg XR to actual readable images (pure pain) the 3D models are very easy to obtain through graphical debugging, the best 2 softwares for graphical debbuging are #1 Nvdia Nsight Graphics and #2 RenderDoc those apps work by hooking/injecting into game and making I'll call it "3D screenshotsof the game" and than looking into API's drawcall functions and exporting it to excel's .csv format, the .csv format will become like any other format when you use Puxtrils python addon for blender! And by the way did you know that you can use the games .exe itself to extract .bimage files, I was mind blow at first you just need to use writeImage command in console (Ctrl+Shift+~) but it's very owerhelming cause it's not the actual main textures those are just roughness maps, ambient occlusion maps, images and decals.

Screenshot(1180).thumb.png.08653b8823cdbb7e3fb0bc4c7632b2e4.png

but how you do this pageblocks?

Posted (edited)

Ok, you really wanna hear this... Right?

I used 010 binary tamplate file (You can download it here https://www.mediafire.com/file/f1gpaem4wz87hl0/virtualtextures.bt/file) to navigate the it should break down a single branch of the quadtree in most any *.pages files.

But it only goes 8 levels deep, though most of these quadtrees have 12 levels
At any rate, it breaks the file down to the page level.
The Page_Block data is the data in the arrays named compdata1 thru compdata8:

Screenshot(1183).thumb.png.57547abc9719669e8f81d1aa7956043c.png

 

If I remember it correctly a Page_Block should be a 128x128 pixel block with 10 layers (3 layers; RGB diffuse, 3 layers; RGB Specular, 2 Layers; RG Normal (Just Nagative-Color normal map), 1 Layer; Alpha, 1 Layer; Power).

So this is where I am now, figuring out how this block of data decodes to a 10 layer 128 by 128 pixel block. The endcoing is supposed to be JPEG XR type DCT, but that leaves things very open ended. There's also a lot of talk about Huffman encoding, so I'm unclear if the disk image is Huffman compressed on top of DCT compressed or not.

But there is another Quickbms script here (https://www.mediafire.com/file/iu4y3is8de9clmb/virtualtextures.bms/file) to cut out the first 3 page_blocks it encounters as 3 discrete files "Page_Block0.dat", "Page_Block1.dat", and "Page_block2.dat". It also prints the header info for those blocks:Screenshot(1003).thumb.png.166c56c12e827bc4d6b2fc65f968abb7.png

The "Quality" parameters probably indicate the amount of DCT compression peformed on each layer. And the "Flags" may be in reference to the "HDPFlags_t" type but if so, some values are missing.

If we just know how decode a single Page_Block to crack this open. Knowing where the layers begin/end is a small but important step toward that.

Images are compressed with HDphoto, data blocks represents HDPhoto bitstream without IMAGE_HEADER (see "HDPhoto_Bitstream_Spec_1.0.doc"). It's very complex format. I tried to adapt HD photo decoding library, but without results.

And than suddenly out of nowhere you know, m0xf on xentax posted a "vtex.exe" tool and it worked for some time but fcked up later, a lot of users have been later complaining about it this and you can't just download it anymore, and that's where it probably ends.

But you can actually write a exploit that loads the game's EXE and hooks into the game's code for decoding. Not a simple process by far.

 

 

-----------------------------------------------------------------------------------Now to make it a bit shorter----------------------------------------------------------------------------------------

Wolfenstein: The New Order/Old Blood is a ID Tech 5 game with really awesome graphics with utilizes virtualtexture technique to manage massive datasets up to 128,000x128,000 pixels
allowing for large, unique textures to be streamed dynamically also reducing texture repetition enabling Diverse enviroments, but that makes it almost impossible to extract textures from the game! Unlike 3D models. [Virtualtextures are stored in .pages files]

The .pages files use JPEG XR with DCT-based compression, which is transcoded to DXT during gameplay. This compression, combined with custom YCoCg colorspace (e.g., 5:4:0) or additional LZW compression, makes decoding textures extremely difficult. Attempts to adapt HD Photo decoding libraries have been unsuccessful 😞

The structure of .pages files includes headers with metadata (e.g., tile size, file size in bytes) and data blocks representing HD Photo bitstreams without standard IMAGE_HEADER, complicating extraction efforts.

I'm still afraid I don't know how to do it...

Edited by user3678

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...