The rules have been updated, read them now: Rules!

Warframe Online .png textures

Get your graphics formats figures out here! Got details for others? Post here!
User avatar
Pesmontis
beginner
Posts: 33
Joined: Sun Jun 20, 2010 5:10 pm
Location: The Netherlands
Been thanked: 8 times
Contact:

Re: Warframe Online .png textures

Post by Pesmontis » Tue Feb 28, 2017 2:34 pm

This is what I use:

Code: Select all

int convertWarframe(char* pngFileWF)
{	
	FILE* fIn = NULL;
	FILE* fOut = NULL;
	char* pixels0;
	char* pixels1;
	char* pixOut;

	fIn = fopen( pngFileWF, "rb" );

	strcat( pngFileWF, "_reversed.png" );
	fOut = fopen( pngFileWF, "wb+" );

	fseek( fIn, 0, SEEK_END );
	int fSz = ftell( fIn );
	fseek( fIn, 0, SEEK_SET );

	pixels0 = (char*)malloc( WFBLOCKSZ );
	pixels1 = (char*)malloc( WFBLOCKSZ );
	pixOut = (char*)malloc( fSz );

	for( int i = 0; i < fSz / (2 * WFBLOCKSZ); i++ )
	{
		fread( pixels0, WFBLOCKSZ, 1, fIn );
		fread( pixels1, WFBLOCKSZ, 1, fIn );

		for( int j = 0; j < WFBLOCKSZ / WriteBlockSz; j++ )
		{
			memcpy( pixOut + 2 * i * WFBLOCKSZ + ( 2 * j + 0) * WriteBlockSz, &pixels0[ j * WriteBlockSz ], WriteBlockSz );
			memcpy( pixOut + 2 * i * WFBLOCKSZ + ( 2 * j + 1) * WriteBlockSz, &pixels1[ j * WriteBlockSz ], WriteBlockSz );
		}
	}

	fwrite( pixOut, fSz, 1, fOut );

	fclose( fIn );
	fclose( fOut );

	free(pixels0);
	free(pixels1);
	free(pixOut);

	return 0;
}
It's quite some time ago that I've used this, but I think this is only for the body of the DDS file.
Depending on the size of the output I think I manually added an appropriate DDS header.

dedok179
ultra-n00b
Posts: 1
Joined: Sat Feb 20, 2016 6:41 am

Re: Warframe Online .png textures

Post by dedok179 » Fri Jan 05, 2018 7:34 am

Pesmontis wrote:This is what I use:

Code: Select all

int convertWarframe(char* pngFileWF)
{	
	FILE* fIn = NULL;
	FILE* fOut = NULL;
	char* pixels0;
	char* pixels1;
	char* pixOut;

	fIn = fopen( pngFileWF, "rb" );

	strcat( pngFileWF, "_reversed.png" );
	fOut = fopen( pngFileWF, "wb+" );

	fseek( fIn, 0, SEEK_END );
	int fSz = ftell( fIn );
	fseek( fIn, 0, SEEK_SET );

	pixels0 = (char*)malloc( WFBLOCKSZ );
	pixels1 = (char*)malloc( WFBLOCKSZ );
	pixOut = (char*)malloc( fSz );

	for( int i = 0; i < fSz / (2 * WFBLOCKSZ); i++ )
	{
		fread( pixels0, WFBLOCKSZ, 1, fIn );
		fread( pixels1, WFBLOCKSZ, 1, fIn );

		for( int j = 0; j < WFBLOCKSZ / WriteBlockSz; j++ )
		{
			memcpy( pixOut + 2 * i * WFBLOCKSZ + ( 2 * j + 0) * WriteBlockSz, &pixels0[ j * WriteBlockSz ], WriteBlockSz );
			memcpy( pixOut + 2 * i * WFBLOCKSZ + ( 2 * j + 1) * WriteBlockSz, &pixels1[ j * WriteBlockSz ], WriteBlockSz );
		}
	}

	fwrite( pixOut, fSz, 1, fOut );

	fclose( fIn );
	fclose( fOut );

	free(pixels0);
	free(pixels1);
	free(pixOut);

	return 0;
}
It's quite some time ago that I've used this, but I think this is only for the body of the DDS file.
Depending on the size of the output I think I manually added an appropriate DDS header.
Is there no progress on?

xtiger
advanced
Posts: 48
Joined: Tue Nov 13, 2018 6:56 am
Has thanked: 4 times
Been thanked: 1 time

Re: Warframe Online .png textures

Post by xtiger » Fri Mar 22, 2019 6:22 pm

Who can provide a correct conversion tool for PNG and FBX?

xtiger
advanced
Posts: 48
Joined: Tue Nov 13, 2018 6:56 am
Has thanked: 4 times
Been thanked: 1 time

Re: Warframe Online .png textures

Post by xtiger » Sun Mar 24, 2019 3:54 pm

Can you provide a tool?

Hidaomari
ultra-n00b
Posts: 1
Joined: Thu Aug 20, 2015 9:47 pm

Re: Warframe Online .png textures

Post by Hidaomari » Fri Jun 07, 2019 10:44 pm

Can we up this theme again?
I saw tons of posts and informations and at laest now I understand why PNG don't want to open.
But still, what I must do to make it work?

I beg you for help!

CosmicDreams
beginner
Posts: 38
Joined: Thu Oct 12, 2017 6:04 pm
Been thanked: 2 times

Re: Warframe Online .png textures

Post by CosmicDreams » Sun Jun 30, 2019 12:51 pm

Well that sucks. Coming in here only to find theres no tools that have actually been released.
Welp.

Puxtril
ultra-n00b
Posts: 1
Joined: Thu Aug 23, 2018 10:13 pm
Contact:

Re: Warframe Online .png textures

Post by Puxtril » Tue Mar 23, 2021 3:13 am

Resurrecting a dead thread, but just wanted to add more info since this seems to be the only place talking about extracting textures.

I wanted to extract the PS4/Xbox/Switch exclusive skins from the archive (Warframe devs are lazy and leave those in the PC version) so I took a close look at the .png formats. I used Pesmontis's code as a base and went from there. His code allows you to extract BC1 compressed textures, but each BC has a different swizzle (not sure if swizzle is the right term). It's not obvious which texture is which BC, I take a best-guess from the metadata.

I'll look into dumping all textures from the game, but right now I'm working on extracting models from an older version of WF. A recent update dubbed "The Great Ensmallening" changed their archive format. GMman's cache extractor doesn't work anymore, and Ninjaripper yields squished models.

But anyway, Excalibur's BC5-compressed PS4 Emission map:
Image
Ripping Warframe stuff: https://discord.gg/Jk3xA2T
Discord: Puxtril#1990

Post Reply